角国际化(ngx-translate / i18n或i18next)

时间:2019-06-27 16:39:18

标签: angular internationalization i18next ngx-translate angular-i18n

我需要在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

Differences ngx-translate vs i18n

现在,第三个选项是“ angular-i18next ”。没有太多的文档。我了解这是i18next的包装。但这是否可以克服任何缺点:

  • 翻译非模板文本。

  • 动态翻译,无需重新加载页面。

  • 具有AOT编译的单个版本。

或者,我最好的选择是在 i18n ngx-translate 之间进行选择? 另外,有人在使用“ angular-i18next ”吗?

2 个答案:

答案 0 :(得分:0)

Angular的未来版本(8.1?)应该支持翻译预期文本和动态翻译,而无需重新加载页面。在此之前,有由Olivier Combe编写的i18-polyfill(https://github.com/ngx-translate/i18n-polyfill),他加入了有角核心团队从事i18n的研究

  

该库是一个推测性的polyfill,这意味着它应该替换将来会出现的API。一旦在Angular中提供了代码翻译,该库将被弃用。但是由于它是一个polyfill,因此我们希望该API非常相似。如果API不同,则将在可能的情况下提供迁移工具。

答案 1 :(得分:0)

经过更多研究,我得出的结论是,i18-next不能提供比Angular的i18n更高的功能。另外,要使用i18-next,您将不得不依赖外部依赖项angular-i18next,而且我不认为要对大型应用程序执行此操作。

有趣的是,在article页上发布的angular-i18next声明如下:

  

我的意思是:I18next基本上不支持任何功能,而内置的I18n Angular模块则不支持。因此,如果差异不大,为什么要让您的生活变得更加复杂,并加入一些第三方I18n框架?特别是,当它依靠一个单独的插件(由另一个人维​​护)来使一切正常工作时?

考虑到这些问题,以及i18next库有多繁重的事实以及学习时间,我立即放弃了继续i18next的想法。

相反,就我而言,目前最好的选择是使用Angular的官方i18n,以及用于模板外部翻译的i18n-polyfill。而且,一旦i18n获得此功能,我将完全迁移到i18n。