【问题标题】:Angular Internationalization ( ngx-translate/ i18n OR i18next )角度国际化(ngx-translate/ i18n OR i18next)
【发布时间】:2019-11-09 17:38:00
【问题描述】:

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

【问题讨论】:

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


    【解决方案1】:

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

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

    【讨论】:

    • 我认为我的问题不够清楚。我理解同时使用 i18n 和 ngx-translate 的这些注意事项。我更感兴趣的问题是,“i18-angular”是否提供了超过 i18n 或 ngx-translate 的任何内容。
    【解决方案2】:

    经过更多研究,我得出一个结论,i18-next 没有提供任何超过官方 Angular 的 i18n 的功能。此外,要使用 i18-next,您必须依赖外部依赖项 angular-i18next,我不相信要为大型应用程序这样做。

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

    我的观点是:基本上没有 I18next 支持的功能,内置的 I18n Angular 模块不支持。那么,如果有一个相对小的差异,你为什么要让你的生活变得更复杂,并包含一些第三方 I18n 框架呢?尤其是当它依赖一个单独的插件(由另一个人维​​护)来使一切正常工作时?

    考虑到这些,以及 i18next 库的重量和学习时间,我立即放弃了继续使用 i18next 的想法。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-04-01
      • 1970-01-01
      • 1970-01-01
      • 2017-09-13
      • 1970-01-01
      • 1970-01-01
      • 2017-12-08
      相关资源
      最近更新 更多