ngx-translate 与 i18n 的区别
Differences ngx-translate vs i18n
翻译一个 (Angular) 应用程序有多种方法,主要的方法是:
和
据我所知,i18n 对于 SEO 来说更容易,因为使用
浏览 url 很干净
例如
app.com/de
app.com/en
另一方面,使用 ngx-translate 可以更轻松地在语言之间切换。
我知道 ngx-translate 的创建者被 Angular 聘用用于他们的 i18n。
谁能告诉我主要区别是什么 (pro/cons)?
我相信这个问题可以回答您的问题:https://github.com/ngx-translate/core/issues/495
根据@ocombe,
ngx-translate 库背后的想法一直是为 i18n 提供支持,直到 Angular 赶上,之后这个库可能会被弃用。目前,Angular i18n 和这个库之间仍然存在一些差异:
Angular 一次只能使用一种语言,您必须完全重新加载应用程序才能更改语言。 JIT 支持仅意味着它与 JIT 一起工作,但您仍然必须在 bootstrap 处提供翻译,因为它会在编译期间替换模板中的文本,而此库使用绑定,这意味着您可以更改随时翻译。缺点是绑定会占用内存,因此 Angular 方式的性能更高。但是如果你对你的组件使用 OnPush
你可能永远不会注意到差异
Angular 目前仅支持在您的模板中使用 i18n,我正在开发允许您在代码中使用它的功能,但它仍在进行中.这个库在代码和模板中都有效
Angular 支持 XLIFF 或 XMB(均为 XML 格式),而此库默认支持 JSON 但您可以编写自己的加载程序以支持你想要的任何格式(例如,有一个 PO 文件的加载器)
Angular 支持 ICU 表达式(复数和 select),但 ngx-translate 库不支持
Angular 支持 html 占位符,包括 angular 代码,而这个库只支持常规 html (因为它是在运行时执行的,而不是在编译期间,Angular 中没有 $compile,就像 AngularJS)
中那样
ngx-translate 库的 API 更完整,因为它是在运行时执行的,它可以提供更多的东西(可观察值、事件等),Angular 没有(但实际上不需要,因为您无法更改翻译)
Transloco、Angular-I18n和Ngx-translate之间有比较完整的比较 在 Transloco 文档中:
此时这个问题很旧,但我认为答案需要更新。
ngx-translate 已基本废弃。 ngx-translate 的作者 ocombe 正在 Google 努力改进内置的 Angular 方法。 He transitioned ngx-translate to maintenance only。截至该日期(2021 年 5 月),他已经 11 个月没有对 ngx-translate 进行任何维护,包括没有更新 Angular 11.
ngx-translate 对于新近国际化的项目来说不再可行 Angular。
翻译一个 (Angular) 应用程序有多种方法,主要的方法是:
和
据我所知,i18n 对于 SEO 来说更容易,因为使用
浏览 url 很干净例如
app.com/de
app.com/en
另一方面,使用 ngx-translate 可以更轻松地在语言之间切换。
我知道 ngx-translate 的创建者被 Angular 聘用用于他们的 i18n。 谁能告诉我主要区别是什么 (pro/cons)?
我相信这个问题可以回答您的问题:https://github.com/ngx-translate/core/issues/495
根据@ocombe, ngx-translate 库背后的想法一直是为 i18n 提供支持,直到 Angular 赶上,之后这个库可能会被弃用。目前,Angular i18n 和这个库之间仍然存在一些差异:
Angular 一次只能使用一种语言,您必须完全重新加载应用程序才能更改语言。 JIT 支持仅意味着它与 JIT 一起工作,但您仍然必须在 bootstrap 处提供翻译,因为它会在编译期间替换模板中的文本,而此库使用绑定,这意味着您可以更改随时翻译。缺点是绑定会占用内存,因此 Angular 方式的性能更高。但是如果你对你的组件使用
OnPush
你可能永远不会注意到差异Angular 目前仅支持在您的模板中使用 i18n,我正在开发允许您在代码中使用它的功能,但它仍在进行中.这个库在代码和模板中都有效
Angular 支持 XLIFF 或 XMB(均为 XML 格式),而此库默认支持 JSON 但您可以编写自己的加载程序以支持你想要的任何格式(例如,有一个 PO 文件的加载器)
Angular 支持 ICU 表达式(复数和 select),但 ngx-translate 库不支持
Angular 支持 html 占位符,包括 angular 代码,而这个库只支持常规 html (因为它是在运行时执行的,而不是在编译期间,Angular 中没有 $compile,就像 AngularJS)
中那样
ngx-translate 库的 API 更完整,因为它是在运行时执行的,它可以提供更多的东西(可观察值、事件等),Angular 没有(但实际上不需要,因为您无法更改翻译)
Transloco、Angular-I18n和Ngx-translate之间有比较完整的比较 在 Transloco 文档中:
此时这个问题很旧,但我认为答案需要更新。
ngx-translate 已基本废弃。 ngx-translate 的作者 ocombe 正在 Google 努力改进内置的 Angular 方法。 He transitioned ngx-translate to maintenance only。截至该日期(2021 年 5 月),他已经 11 个月没有对 ngx-translate 进行任何维护,包括没有更新 Angular 11.
ngx-translate 对于新近国际化的项目来说不再可行 Angular。