Angular i18 интернационализация, изменение языка программно - PullRequest
0 голосов
/ 26 ноября 2018

по этой ссылке я попытался реализовать интернационализацию i18 в своем приложении Angular 6, чтобы перевести на английский и итальянский текст и дату / время в моем HTML-шаблоне.

https://next.angular.io/guide/i18n

Я понял, что эта функция состоит из 3 этапов:

1) Определить текст перевода.Нет проблем, я создал папку src / locale с двумя файлами messages.en.xlf (и message.it.xlf);Вот пример для en версии.

<trans-unit id="introductionHeader" datatype="html">
  <source>Hello i18n! (en-EN)</source>
  <note priority="1" from="description">An introduction header for this sample</note>
  <note priority="1" from="meaning">User welcome</note>
</trans-unit>

2) свяжите этот текст с html-страницами с соответствующим тегом, а также здесь нет проблем, в моем app.translations.html есть мой пример тега.

<h1 i18n="User welcome|An introduction header for this sample">
    Hello i18n!
</h1>

Теперь я прочитал способ (3. фаза) локализации приложения во время запуска (некоторое редактирование в файле Angular.json и запуск ng serve с опцией конфигурации);но вместо этого я бы программно изменил язык приложения.Другими словами, мне нужна команда, такая как, например,

SwitchAppLanguage('en')

, чтобы пользователь мог изменить ее самостоятельно с помощью кнопки или приложение могло сделать это, читая язык браузера по умолчанию.Как я могу это сделать?

Большое спасибо!

Редактировать: я пытался редактировать свой файл angular.json таким образом

"configurations": {
  "production": {
     "i18nFile": "src/locale/messages.it.xlf",
     "i18nFormat": "xlf",
     "i18nLocale": "it",
(...)

И после ngbuild and ng serve, я ожидаю увидеть текст на итальянском, но этого не происходит (и приложение запускается и работает правильно).Что я не прав?Спасибо!

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