Angular 中的 i18n 翻译文件更新
Updates to i18n translation files in Angular
我目前正在为我公司使用的 Angular 应用程序添加 en locale。经过一番思考,我们决定使用 Angular 5+ 原生 i18n 支持。
然而,根据我的理解,每次使用 ng xi18n --outputPath src/locale/ --locale en
生成翻译文件时,都会创建一个新文件。这意味着,每次添加新的 i18n 标签时,之前已经包含旧翻译的 XLF 文件需要与新翻译合并。
这似乎很麻烦,因此我的问题是:有没有一种方法可以将新的跨单位附加到已经存在的 XLF 文件中?或者是否已经有可以将这两者合并在一起的工具?
已编辑答案
您可以使用 xliffmerge 工具。它可以在您在 html
中添加新翻译后合并翻译文件
这里是 tutorial angular
基本上,在 运行 执行正常的提取命令后,您调用 xliffmerge 并传递要为其生成翻译文件的语言
ng xi18n --outputPath src/locale/ --locale en && xliffmerge --profile xliffmerge.json en fr
您可以为工具指定 json 配置
{
"xliffmergeOptions": {
"srcDir": "src/locale",
"genDir": "src/locale"
}
}
原回答
尝试为您的翻译设置自定义 ID
https://angular.io/guide/i18n#set-a-custom-id-for-persistence-and-maintenance
<h1 i18n="@@introductionHeader">Hello i18n!</h1>
下次您 运行 提取命令时,它只会添加新块,但不会触及现有块
顺便说一句,我认为使用本机选项是一个不错的选择,因为主要替代方案 (ngx-translate) 的维护者实际上正在与 angular 团队合作开发本机方法
我以前的解决方案有一些问题:ERROR: language [...] node_modules\@ngx-i18nsupport\ngx-i18nsupport\xliffmerge\xliffmerge" is not valid
我将 xliffmerge 与 angular-cli 一起使用:https://github.com/martinroob/ngx-i18nsupport 到 extract/merge i18n。它为您生成 package.json
中的命令和 angular.json
中的新任务配置。它在合并时保留上下文组和注释。
我只需要为我选择的输出路径 "src/locale"
.
更改 package.json
和 angular.json
中的默认设置
由于 ngx-i18nsupport-package 将不再开发,我们现在使用 rvanbekkum.xliff-sync 来解决这个问题,这非常有效。
alternative/new 解决方案(对于未维护的 ngx-i18nsupport)是 https://github.com/daniel-sc/ng-extract-i18n-merge
通过
安装后
ng add ng-extract-i18n-merge
可以使用单个命令提取和合并翻译:
ng run [PROJECT_ID]:extract-i18n-merge
我目前正在为我公司使用的 Angular 应用程序添加 en locale。经过一番思考,我们决定使用 Angular 5+ 原生 i18n 支持。
然而,根据我的理解,每次使用 ng xi18n --outputPath src/locale/ --locale en
生成翻译文件时,都会创建一个新文件。这意味着,每次添加新的 i18n 标签时,之前已经包含旧翻译的 XLF 文件需要与新翻译合并。
这似乎很麻烦,因此我的问题是:有没有一种方法可以将新的跨单位附加到已经存在的 XLF 文件中?或者是否已经有可以将这两者合并在一起的工具?
已编辑答案
您可以使用 xliffmerge 工具。它可以在您在 html
中添加新翻译后合并翻译文件这里是 tutorial angular
基本上,在 运行 执行正常的提取命令后,您调用 xliffmerge 并传递要为其生成翻译文件的语言
ng xi18n --outputPath src/locale/ --locale en && xliffmerge --profile xliffmerge.json en fr
您可以为工具指定 json 配置
{
"xliffmergeOptions": {
"srcDir": "src/locale",
"genDir": "src/locale"
}
}
原回答
尝试为您的翻译设置自定义 ID
https://angular.io/guide/i18n#set-a-custom-id-for-persistence-and-maintenance
<h1 i18n="@@introductionHeader">Hello i18n!</h1>
下次您 运行 提取命令时,它只会添加新块,但不会触及现有块
顺便说一句,我认为使用本机选项是一个不错的选择,因为主要替代方案 (ngx-translate) 的维护者实际上正在与 angular 团队合作开发本机方法
我以前的解决方案有一些问题:ERROR: language [...] node_modules\@ngx-i18nsupport\ngx-i18nsupport\xliffmerge\xliffmerge" is not valid
我将 xliffmerge 与 angular-cli 一起使用:https://github.com/martinroob/ngx-i18nsupport 到 extract/merge i18n。它为您生成 package.json
中的命令和 angular.json
中的新任务配置。它在合并时保留上下文组和注释。
我只需要为我选择的输出路径 "src/locale"
.
package.json
和 angular.json
中的默认设置
由于 ngx-i18nsupport-package 将不再开发,我们现在使用 rvanbekkum.xliff-sync 来解决这个问题,这非常有效。
alternative/new 解决方案(对于未维护的 ngx-i18nsupport)是 https://github.com/daniel-sc/ng-extract-i18n-merge
通过
安装后ng add ng-extract-i18n-merge
可以使用单个命令提取和合并翻译:
ng run [PROJECT_ID]:extract-i18n-merge