34

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

ngx-翻译

Angular 2 原生 i18n

据我了解,i18n 对 SEO 来说更容易,因为使用干净的 url 浏览

例如

app.com/de

app.com/en

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

我知道 ngx-translate 的创建者被 Angular 雇佣为他们的 i18n。 谁能告诉我主要区别是什么(赞成/反对)?

4

4 回答 4

19

我相信这个问题回答了你的问题:https ://github.com/ngx-translate/core/issues/495

于 2017-07-10T09:04:29.470 回答
17

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

ngx-translate 已基本被放弃。ngx-translate 的作者 ocombe 正在 Google 努力改进内置的 Angular 方法。 他将 ngx-translate 转换为仅维护。截至目前(2021 年 5 月),他已经 11 个月没有对 ngx-translate 进行任何维护,包括没有更新 Angular 11。

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

于 2021-05-06T16:09:59.287 回答
17

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

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

  • Angular 目前仅支持在您的模板中使用 i18n,我正在开发允许您在代码中使用它的功能,但它仍在进行中。这个库在代码和模板中都有效

  • Angular 支持 XLIFF 或 XMB(两者都是 XML 格式),而这个库默认支持 JSON,但您可以编写自己的加载器来支持您想要的任何格式(例如 PO 文件的加载器)

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

  • Angular 支持 html 占位符,包括 Angular 代码,而这个库只支持常规的 html(因为它是在运行时执行的,而不是在编译期间执行的,并且在 Angular 中没有 $compile 就像在 AngularJS 中一样)

  • ngx-translate库的 API更完整,因为它是在运行时执行的,它可以提供更多 Angular 所没有的东西(observables,events,...)(但实际上并不需要,因为你不能改变翻译)

于 2018-11-05T21:31:38.013 回答
1

Transloco 文档中对TranslocoAngular-I18nNgx-translate进行了相当完整的比较:

https://ngneat.github.io/transloco/

于 2019-08-24T21:10:54.857 回答