Angular 6 - i18n vs. ngx-translate

Joe*_*ugh 23 angular-i18n angular

我正在使用角度6进行大型项目.该项目需要大量的i18n集成.我正在努力做出正确的决定如何继续.

我看到它的方式是我可以选择:

  1. ngx-translate(https://github.com/ngx-translate/core)
  2. Angular i18n(https://angular.io/guide/i18n)

我倾向于选择选项2; Angular的i18n.这是因为它是Angular自己的内置包,而且对我来说更好.显然它对SEO也更好,并且在没有任何解决方法的情况下性能稍微好一些.此外,现在它发布我认为ngx-translate可能已被弃用.很多信息在这里:Angular 5国际化.

不过这是我的保留:

有没有办法用角度i18n进行实时语言切换?即在不重新加载/从服务器获取数据的情况下切换页面上的语言?这就是他们所说的JIT吗?

有没有人试过https://github.com/robisim74/angular-l10n?看起来也很好.

非常感谢.最好的祝福.

JB *_*zet 18

是不是太新了?

这是基于意见的,因此是偏离主题的

显然我必须有一个单独的网站

您需要一个单独的应用程序(即index.html + bundle).但是,您可以从单个URL提供所有这些应用程序,从而决定在服务器上提供哪个应用程序.当希望建立在Ivy之上的新动态i18n可用时,它将(希望)改变Angular 7.

是每次动态插入模板文件的情况吗?

不明白你的意思.您构建的语言环境的翻译在编译时由Angular AOT编译器存储在生成的模板类中.

有没有办法用角度i18n进行实时语言切换?

不,对于下一版本的i18n,这是不可能的.同样的,独特的应用程序将能够以多种语言运行,但仍然必须在启动时选择语言,并且您必须重新启动应用程序才能选择其他语言.

有没有办法用角度i18n进行实时语言切换?

不,至少没有效率.

这就是他们所说的JIT吗?

不.JIT编译器是在启动时在浏览器中将HTML模板编译成JavaScript的.在生产中,您使用AOT编译器(它也用于将翻译集成到生成的JS类中),它对模板进行类似的编译,但是在构建时而不是运行时.

  • @Curse 不幸的是还没有。Ivy 将在 Angular 8 中出现,但 i18n 更改仍然不会存在。我现在希望它会在 8 点或 9 点出现。 (2认同)

sga*_*abb 9

讨论仍在继续,在这里你可以找到一些答案和意见,甚至直接来自 Angular 开发人员:https : //github.com/ngx-translate/core/issues/495

就个人而言,我会使用官方 i18n 构建应用程序,并最终使用 ngx-translate 库在代码中添加一些专用翻译。

有没有办法用 angular i18n 进行实时语言切换?

事实上,有。您需要为您的应用构建不同的 dist,但是您可以在完全部署后实时切换:

官方 Angluar 文档建议教程