Как обработать angular 11 extract-i18n, переопределяя существующие переводы?

Итак, у меня есть приложение angular 11, в котором я только что реализовал локализацию с промежуточным программным обеспечением i18n по умолчанию angulars.

Чтобы создать начальный файл, я просто запустил:

      ng extract-i18n myprojectName --format xlf --output-path src/i18n  --out-file messages.da.xlf --progress

все было хорошо, и я получил файл messages.da.xlf с переводом на язык по умолчанию.

Теперь я хотел перевести приложение на английский.

Я скопировал файл messages.da.xlf и назвал его messages.en.xlf и перевел все.

Сейчас все отлично работает.

Но теперь у меня проблема, в следующий раз, когда я добавлю дополнительный текст для перевода, английский перевод не обновляется.

Итак, мой вопрос: когда мне нужно расширить перевод из-за новых функций в приложении, как мне узнать, какие дополнительные «поля» мне нужно добавить во все файлы перевода, и есть ли способ сделать это автоматически?

2 ответа

Альтернативное/новое решение (для неподдерживаемой поддержки ngx-i18n) — https://github.com/daniel-sc/ng-extract-i18n-merge .

После установки через

      ng add ng-extract-i18n-merge

переводы будут извлечены и объединены командой:

      ng extract-i18n

(Прозрачность: я создал эту библиотеку.)

В Angular нет встроенного способа сделать это, поэтому вам понадобится сторонний инструмент. Единственный бесплатный инструмент, который я нашел, - это Xliffmerge, сейчас не которыйобслуживается . Документация предназначена для более старых версий Angular, но после некоторых экспериментов я обнаружил, что достаточно установить @ngx-i18nsupport/tooling упаковка:

      npm install -D @ngx-i18nsupport/tooling --legacy-peer-deps

Затем мы можем добавить новые языки к конфигурациям в angular.json в разделе projects -> projectName -> architect -> xliffmerge.

      "xliffmerge": {
  "builder": "@ngx-i18nsupport/tooling:xliffmerge",
  "options": {
    "xliffmergeOptions": {
      "defaultLanguage": "en-US",
      "languages": ["nb"]
    }
  }
}

После добавления новых переводов мы можем извлечь их и перенести в наши файлы переводов, запустив этот скрипт:

      ng extract-i18n && ng run projectName:xliffmerge

Мы получаем пару предупреждений при запуске скрипта, которые говорят нам, что он работает!

      WARNING: merged 1 trans-units from master to "nb"
WARNING: please translate file "messages.nb.xlf" to target-language="nb"

Я уже писал об этом в своем блоге .

Другие вопросы по тегам