по этой ссылке я попытался реализовать интернационализацию 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, я ожидаю увидеть текст на итальянском, но этого не происходит (и приложение запускается и работает правильно).Что я не прав?Спасибо!