Угловая интернационализация (ngx-translate / i18n OR i18next)

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

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

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

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

  • Имея единую сборку с компиляцией AOT.

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


person Akshay Rana    schedule 27.06.2019    source источник


Ответы (2)


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

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

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

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

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

person Akshay Rana    schedule 17.07.2019

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

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

person David    schedule 27.06.2019
comment
Думаю, мой вопрос был недостаточно ясным. Я понимаю эти предостережения относительно использования i18n и ngx-translate. Меня больше интересует вопрос, предлагает ли i18-angular что-нибудь по сравнению с i18n или ngx-translate. - person Akshay Rana; 28.06.2019