Обновление извлеченных файлов перевода с помощью ngx-extractor - PullRequest
0 голосов
/ 08 ноября 2018

Мы пишем сайт на Angular 6, используя код Visual Studio. Веб-сайт будет переведен на несколько языков, но пока мы сохраняем его на шведском и английском языках с языком по умолчанию. Мы извлекаем строки из HTML-файлов с помощью команды xi18n и используем команду ngx-extractor из i18n-polyfill для извлечения строк из файлов машинописи.

Моя проблема в том, что я хочу сделать перевод естественным шагом во время кодирования, а не добавлять его в конце проекта в качестве запоздалой мысли. Я хочу обновить файлы перевода одновременно с HTML и машинописными строками. Хотя я могу сделать это для файлов HTML с помощью xliff, команда, которую я использую, удаляет строки typescript при следующем запуске.

Мои команды, объявленные в package.json:

"scripts": {
        "i18n-extract": "ng xi18n --output-path=locale --out-file messages.xlf --i18n-locale en && xliffmerge",
        "ngx-extract": "ngx-extractor -i ./src/**/*.ts -f xlf -o ./src/locale/messages.xlf --i18n-locale en && xliffmerge"
    },
    "xliffmergeOptions": {
        "srcDir": "src/locale",
        "genDir": "src/locale",
        "i18nFile": "messages.xlf",
        "i18nBaseFile": "messages",
        "encoding": "UTF-8",
        "defaultLanguage": "en",
        "languages": [
            "sv",
            "en"
        ],
        "removeUnusedIds": true,
        "supportNgxTranslate": false,
        "ngxTranslateExtractionPattern": "@@|ngx-translate",
        "useSourceAsTarget": true,
        "targetPraefix": "",
        "targetSuffix": "",
        "beautifyOutput": false,
        "allowIdChange": false,
        "autotranslate": false,
        "apikey": "",
        "apikeyfile": "",
        "verbose": true,
        "quiet": false
    },

Если я сделаю npm run i18n-extract, я получу три файла: messages.xlf, messages.en.xlf, messages.sv.xlf. Если я затем сделаю npm run ngx-extract, три файла будут обновлены с использованием строк машинописи в конце. Когда я снова делаю npm run i18n-extract после этого, все строки машинописного текста удаляются из сообщений * .xlf, поскольку i18n и xliffmerge считают, что на самом деле строки машинописного текста - это строки HTML, которые были удалены из кода HTML. Мой обходной путь сейчас заключается в извлечении строк машинописного текста в другой файл (messages.ts.xlf), но при этом создается только общий файл. Я копирую код в messages_ts.en.xlf и messages_ts.sv.xlf и добавляю теги <target> ко всем тегам <trans-unit>, а затем копирую его в файлы messages.en.xlf и messages.sv.xlf. Это действительно утомительно.

Вопрос : Как непрерывно извлекать строки из файлов HTML и typescript для перевода? Есть ли способ сначала запустить команды xi18n и ngx-extractor, а затем объединить их с xliff? Предпочтительно в одной командной строке я могу добавить в раздел scripts в packages.json, чтобы уменьшить риск пропустить любой из шагов.

Я просто не могу найти что-либо в кулинарной книге i18n или в readme для polyfill, которое мне поможет. Вот что я нашел здесь в переполнении стека:

Обновление файлов перевода i18n в Angular не рассматривает команду xliff, но я уже знал все в этой статье.

angular-i18n Angular 6 Интернационализация: как работать с переменными дает отличную справку о ngx-extractor, но не о том, как объединять несколько языков непрерывно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...