Различия ngx-translate vs i18n

Существует несколько методов для перевода (angular) приложения, основными основными методами являются:

NGX-перевод

и

Angular 2 родной i18n

Насколько я понял, i18n проще для SEO из-за чистого просмотра URL с помощью

например

app.com/de

app.com/en

с другой стороны, с помощью ngx-translate легче переключаться между языками.

Я знаю, что создатель ngx-translate был нанят Angular для их i18n. Кто-нибудь может мне сказать, в чем главные отличия (за/против)?

Ответ 2

Согласно @ocombe, Идея библиотеки ngx-translate всегда заключалась в том, чтобы обеспечить поддержку i18n до тех пор, пока Angular не догонит его, после чего эта библиотека, вероятно, будет устаревшей. На данный момент есть еще несколько отличий между Angular i18n и этой библиотекой:

  • Angular работает только с одним языком за раз, вам нужно полностью перезагрузить приложение, чтобы изменить язык. Поддержка JIT означает только то, что он работает с JIT, но вам все равно придется предоставлять переводы при начальной загрузке, потому что он заменит текст в ваших шаблонах во время компиляции, тогда как эта библиотека использует привязки, что означает, что вы можете изменить переводы в любое время., Недостатком является то, что привязки забирают память, поэтому angular путь более производительный. Но если вы используете OnPush для своих компонентов, вы, вероятно, никогда не заметите разницу

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

  • Angular поддерживает либо XLIFF, либо XMB (оба формата XML), тогда как эта библиотека поддерживает JSON по умолчанию, но вы можете написать свой собственный загрузчик для поддержки любого формата, который вам нужен (например, загрузчик для PO файлов)

  • Angular поддерживает выражения ICU (множественное число и выбор), но библиотека ngx-translate не

  • Angular поддерживает html-заполнители, включая код angular, тогда как эта библиотека поддерживает только обычный html (потому что он выполняется во время выполнения, а не во время компиляции, и в Angular нет $ compile, как это было в AngularJS)

  • API библиотеки ngx-translate является более полным, поскольку он выполняется во время выполнения и может предложить больше вещей (наблюдаемых, событий,...), которых нет у Angular (но на самом деле это не нужно, учитывая, что вы не могу изменить переводы)