Angular localize: дублированное приложение для всех языков?

Несколько лет назад я использовал @ngx-translate для замены строк в моем приложении Angular.

Теперь мне нужно интернационализировать мое приложение, и хотя @ngx-translate по-прежнему кажется лучшим выбором, я бы дал шанс * встроенным возможностям Angular i18n.

Я прочитал документацию по Angular i18n, и мне кажется, довольно просто получить переведенную версию приложения (несмотря на использование XML вместо JSON!).

Как указано в документации:

из-за сложности развертывания i18n и необходимости минимизировать время восстановления сервер разработки поддерживает локализацию только одной локали за раз

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

      ng build --configuration=production,fr
ng build --configuration=production,es
ng build --configuration=production,it
ng build --configuration=production,de

Я прав? Разве у нас не должно быть только одно приложение и столько файлов «message.xlf» (или чего-то подобного), сколько языков загружается во время выполнения?

* Я где-то читал, что разработчик ngx-translate считает, что, как только Angular «догонит», его решение станет устаревшим. Фактически, он был нанят командой Angular для работы над модулем I18n; он утверждает, что встроенное решение намного сложнее и не содержит ошибок. Итак, хотя ngx-translate все еще широко используется, возможно, нам стоит подумать о переходе на встроенный модуль рано или поздно .

1 ответ

Вы абсолютно правы, да ...

Использование механизма i18n в Angular требует, чтобы вы создавали отдельную сборку для каждой локали.

В качестве дополнения я хотел бы добавить, что Netanel Basal (и несколько других разработчиков) сделали (более современную?) Замену ngx-translate (называемую transloco) - ее можно найти здесь: https: // github.com / ngneat / transloco

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