Угловая интернационализация (ngx-translate / i18n ИЛИ i18next) - PullRequest
2 голосов
/ 27 июня 2019

Мне нужно реализовать интернационализацию в крупномасштабном проекте на Angular.Из того, что я нашел, есть два основных выбора: официальный Angular i18n ИЛИ ngx-translate .

Чтобы понять преимущества и недостатки обоих, я прошел черезмного дискуссий:

https://github.com/angular/angular/issues/16477

https://github.com/ngx-translate/core/issues/495

https://github.com/ngx-translate/core/issues/783

Отличия ngx-translate от i18n

Теперь 3-й вариант - " angular-i18next ".Там не так много документации по этому вопросу.Я понимаю, что это обертка над i18next.Но преодолевает ли он какие-либо недостатки, такие как:

  • Перевод не шаблонного текста.

  • Динамические переводы без перезагрузки страницы.

  • Наличие одной сборки с компиляцией AOT.

Или, лучше всего выбрать между i18n и ngx-translate ?Кроме того, кто-нибудь использует " angular-i18next "?

Ответы [ 2 ]

0 голосов
/ 17 июля 2019

После дальнейших исследований я пришел к выводу, что i18-next ничего не предлагает по сравнению с i18n официального Angular. Кроме того, чтобы использовать i18-next, вам придется полагаться на внешнюю зависимость angular-i18next , и я не убежден, что делать это для крупномасштабного приложения.

Как ни странно, статья , опубликованная на странице angular-i18next , гласит следующее:

Моя точка зрения такова: в основном нет функций, которые поддерживает I18next, а встроенный модуль I18n Angular не поддерживает. Так что, если есть относительно небольшая разница, почему вы бы сделали свою жизнь более сложной и включили какую-то стороннюю платформу I18n? Особенно, когда он использует отдельный плагин (поддерживаемый другим человеком), чтобы все работало?

Учитывая эти вещи, а также тот факт, насколько тяжелой является библиотека i18next, и время обучения, я сразу же отбросил идею перейти к i18next.

Вместо этого, на мой взгляд, лучший вариант - использовать официальный i18n от Angular, с ifn-polyfill для шаблонов за пределами переводов. И как только i18n получит эту функцию, я полностью перейду на i18n.

0 голосов
/ 27 июня 2019

Будущие версии Angular (8.1?) Должны поддерживать перевод рассматриваемого текста и динамический перевод без перезагрузки страницы. До этого существует i18-polyfill (https://github.com/ngx-translate/i18n-polyfill), написанный Оливье Комбом, который присоединился к команде angular core для работы над i18n

Эта библиотека является спекулятивным полифиллом, это означает, что она должна заменить API, который появится в будущем. Как только переводы кода будут доступны в Angular, эта библиотека будет устаревшей. Но так как это полифил, мы ожидаем, что API будет довольно похожим. Если API другой, будет предоставлен инструмент миграции, если это возможно и необходимо.

...