翻译(Angular)应用程序有多种方法,主要的方法是:
和
据我了解,i18n 对 SEO 来说更容易,因为使用干净的 url 浏览
例如
app.com/de
app.com/en
另一方面,使用 ngx-translate 可以更轻松地在语言之间切换。
我知道 ngx-translate 的创建者被 Angular 雇佣为他们的 i18n。 谁能告诉我主要区别是什么(赞成/反对)?
翻译(Angular)应用程序有多种方法,主要的方法是:
和
据我了解,i18n 对 SEO 来说更容易,因为使用干净的 url 浏览
例如
app.com/de
app.com/en
另一方面,使用 ngx-translate 可以更轻松地在语言之间切换。
我知道 ngx-translate 的创建者被 Angular 雇佣为他们的 i18n。 谁能告诉我主要区别是什么(赞成/反对)?
我相信这个问题回答了你的问题:https ://github.com/ngx-translate/core/issues/495
这个问题在这一点上很老,但我认为答案需要更新。
ngx-translate 已基本被放弃。ngx-translate 的作者 ocombe 正在 Google 努力改进内置的 Angular 方法。 他将 ngx-translate 转换为仅维护。截至目前(2021 年 5 月),他已经 11 个月没有对 ngx-translate 进行任何维护,包括没有更新 Angular 11。
ngx-translate 似乎不再适用于新国际化 Angular 的项目。
根据@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,...)(但实际上并不需要,因为你不能改变翻译)
Transloco 文档中对Transloco、Angular-I18n和Ngx-translate进行了相当完整的比较: