我们最近决定为我们的应用程序支持多种语言(Angular 13.x)。经过研究,我们决定使用
angular/localize
包,这似乎非常适合我们的需求。
一切似乎都在解决唯一的问题,即在后续构建和更改中保持翻译文件最新。
因此,按照 Angular 网站上的指南 https://angular.io/guide/i18n-common-translation-files,我们使用
ng extract-i18n
cli 工具来生成 messages.xlf
文件
ng extract-i8n --format xlf --output-path src/locale/
下一步是将生成的
messages.xlf
复制到支持的不同区域设置。为简单起见,假设我们支持法语,因此我们在同一个 messages.fr.xlf
子文件夹中创建一个 /locale
。这由第三方服务进行翻译(尚未确定如何自动执行此操作 - 欢迎提出建议)。到目前为止一切顺利..
现在的问题是围绕组件的后续更改和新翻译的添加。
ng extract-18n
将使用新的和修改后的翻译正确生成 messages.xlf
。但是如何更新/合并其他语言环境文件(如 messages.fr.xlf
)而不覆盖现有更改?如何实现自动化并将新更改合并到该文件中?我是否错过了 Angular cli 已经支持的东西?
我遇到过这个
xliffmerge
工具https://github.com/martinroob/ngx-i18nsupport/tree/master/projects/xliffmerge但这似乎是一个旧工具,似乎不支持Angular 过去 9+ 的较新版本。
我假设这对每个人来说都是一个相当普遍的问题,并且 Angular CLI 已经支持这个问题了。
当前版本 角度 13.x
谢谢您的帮助。
另一种/新的解决方案(针对未维护的 ngx-i18nsupport)是 https://github.com/daniel-sc/ng-extract-i18n-merge
安装后通过
ng add ng-extract-i18n-merge
翻译将被提取并与命令合并:
ng extract-i18n
如果您仍在寻找自动本地化服务,我建议您查看doloc.io。它重复使用已翻译的文本作为字典,并且可以通过简单的
curl
命令轻松集成到您的流程中。
这会发送您的 XLIFF 文件并直接返回翻译版本。
您也可以在这里关注相关讨论:https://github.com/daniel-sc/ng-extract-i18n-merge/discussions/115