在 Angular 中更新/合并 i18n 翻译文件

jer*_*rry 13 internationalization angular-cli angular

我们最近决定为我们的应用程序支持多种语言(Angular 13.x)。经过研究,我们决定使用看起来angular/localize非常适合我们需求的包。

一切似乎都在解决唯一的问题,即在后续的构建和更改中保持翻译文件最新。

因此,按照 Angular 网站https://angular.io/guide/i18n-common-translation-files上的指南,我们使用ng extract-i18ncli 工具生成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 是否已经支持这个问题。

当前版本 Angular 13.x

感谢您的帮助。

dan*_*-sc 12

替代/新的解决方案(针对未维护的 ngx-i18nsupport)是https://github.com/daniel-sc/ng-extract-i18n-merge

安装后通过

ng add ng-extract-i18n-merge
Run Code Online (Sandbox Code Playgroud)

翻译将被提取与命令合并:

ng extract-i18n
Run Code Online (Sandbox Code Playgroud)