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

5
我需要在Angular的一个大型项目中实现国际化。从我所了解到的情况来看,有两个主要选择:Angular官方的或。

为了了解两者的优缺点,我阅读了很多讨论:

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 编译进行单一构建。

或者,最好选择 i18nngx-translate 之间的一个? 还有人在使用 "angular-i18next" 吗?

2个回答

3
经过进一步研究,我得出结论:i18-next在官方Angular的i18n上没有任何优势。此外,要使用i18-next,你必须依赖于一个外部依赖项angular-i18next,而我不确定在大规模应用程序中这样做是否可行。
有趣的是,angular-i18next页面上发布的文章指出:
“我的观点是:I18next支持的功能基本上与内置的I18n Angular模块相同。因此,如果差异相对较小,为什么要让生活更加复杂,并包括某些第三方I18n框架呢?特别是当它依赖于一个单独的插件(由另一个人维护)来使一切正常工作时?”
考虑到这些事情,以及i18next库的重量和学习时间,我立即放弃了继续使用i18next的想法。

目前,我认为最好的选择是使用 Angular 的官方 i18n,结合 i18n-polyfill 来进行模板之外的翻译。一旦 i18n 具备这一功能,我将完全迁移到使用 i18n。


0

Angular的未来版本(8.1?)应该支持翻译思考文本和动态翻译而无需重新加载页面。在那之前,有一个i18-polyfill(https://github.com/ngx-translate/i18n-polyfill),由Olivier Combe编写,他加入了Angular核心团队,负责i18n的工作。

这个库是一个推测性的polyfill,也就是说,它应该替换未来即将到来的API。一旦代码翻译在Angular中可用,这个库将被弃用。但由于它是一个polyfill,我们预计API会非常相似。如果API不同,将提供迁移工具,如果可能和必要的话。


我认为我的问题没有表达清楚。我理解使用i18n和ngx-translate的这些注意事项。我更感兴趣的问题是,“i18-angular”是否比i18n或ngx-translate提供了更多的功能。 - Akshay Rana

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接