ngx-translate与i18n的区别

时间:2017-07-05 10:07:09

标签: angular translation ngx-translate

有多种方法来翻译(Angular)应用程序,主要的主要方法是:

ngx-translate

Angular 2 native i18n

据我所知,i18n对搜索引擎优化更容易,因为用

浏览网页

e.g

  

app.com/de

     

app.com/en

另一方面,使用ngx-translate可以更容易地在语言之间切换。

我知道ngx-translate的创建者是由Angular聘用的i18n。 有人能说我主要的区别是什么(赞成/赞成)?

4 个答案:

答案 0 :(得分:13)

我相信此问题可以回答您的问题:https://github.com/ngx-translate/core/issues/495

答案 1 :(得分:9)

这个问题在这一点上已经很老了,但我认为答案需要更新。

ngx-translate 在很大程度上已被放弃。 ngx-translate 的作者 ocombe 正在 Google 努力改进内置的 Angular 方法。 He transitioned ngx-translate to maintenance only。截至目前(2021 年 5 月),他已经 11 个月没有对 ngx-translate 进行任何维护,包括没有对 Angular 11 进行更新。

ngx-translate 似乎不再适用于新近将 Angular 国际化的项目。

答案 2 :(得分:4)

根据@ocombengx-translate库背后的想法一直是为i18n提供支持,直到Angular赶上来,此库可能会被弃用。目前,Angular i18n与该库之间仍然存在一些差异:

  • Angular一次只能使用一种语言,您必须完全重新加载应用程序才能更改lang。对JIT的支持仅意味着它可以与JIT一起使用,但是您仍必须在引导程序中提供翻译,因为它将在编译期间替换模板中的文本,而此lib使用绑定,这意味着您可以随时更改翻译。 。缺点是绑定占用内存,因此Angular方式更具性能。但是,如果将OnPush用于组件,则可能永远不会注意到差异

  • Angular目前仅支持在模板中使用i18n,我正在开发一项功能,该功能将允许您在代码中使用它,但它仍在进行中。此库在代码和模板中均可使用

  • Angular支持XLIFF或XMB(均为XML格式),而此lib默认情况下支持JSON,但是您可以编写自己的加载器以支持所需的任何格式(例如,有一个PO文件加载器)

  • Angular支持ICU表达式(复数和选择),但是ngx-translate库不支持

  • Angular支持html占位符,包括角度代码,而该库仅支持常规html(因为它是在运行时执行的,而不是在编译过程中执行的,并且在Angular中没有像AngularJS中那样的$ compile)

  • ngx-translate库的API更完整,因为它在运行时执行,它可以提供Angular所没有的(但实际上不是)更多的东西(可观察的事件,事件……)。鉴于您无法更改翻译,因此需要)

答案 3 :(得分:1)

在Transloco文档中, Transloco Angular-I18n Ngx-translate 之间有相当完整的比较:

https://app.gitbook.com/@netbasal/s/transloco/comparison-to-other-libraries