我目前正在将en locale添加到我们公司正在使用的Angular App中。经过一番思考后,我们决定采用Angular 5+原生i18n支持。
但是,从我的理解来看,每次使用ng xi18n --outputPath src/locale/ --locale en
生成翻译文件时,都会创建一个新文件。这意味着,每次添加新的i18n标签时,之前包含旧翻译的XLF文件都需要与新翻译合并。
这看起来非常麻烦,因此我的问题是:有没有一种方法可以将新的转换单元附加到已经存在的XLF文件中?或者是否已有可以将这两者合并在一起的工具?
答案 0 :(得分:5)
编辑回答
您可以使用xliffmerge工具。在您的html
中添加新翻译后,它可以合并翻译文件这是角度<{3}} {/ 3}
基本上在运行普通提取命令后,您调用xliffmerge并传递要为其生成翻译文件的语言
ng xi18n --outputPath src/locale/ --locale en && xliffmerge --profile xliffmerge.json en fr
您可以为工具指定json配置
{
"xliffmergeOptions": {
"srcDir": "src/locale",
"genDir": "src/locale"
}
}
原始回答
尝试为翻译设置自定义ID
<h1 i18n="@@introductionHeader">Hello i18n!</h1>
当你运行提取命令时,它只会添加新块但不会触及现有块
顺便说一下,我认为使用原生选项是一个不错的选择,因为维护者是主要的选择(ngx-translate)实际上是与原生方法的角度团队合作
答案 1 :(得分:0)
我以前的解决方案有问题:ErrorMessages.es-US.resx
我使用 xliffmerge 和 angular-cli :https://github.com/martinroob/ngx-i18nsupport提取/合并i18n。它为您生成ERROR: language [...] node_modules\@ngx-i18nsupport\ngx-i18nsupport\xliffmerge\xliffmerge" is not valid
中的命令和package.json
中新任务的配置。合并时保留上下文组和注释。
我只需要为所选的输出路径angular.json
更改package.json
和angular.json
的默认设置。
答案 2 :(得分:0)
由于 ngx-i18nsupport-package 将不再被开发,我们现在使用 rvanbekkum.xliff-sync 解决这个问题,这很有用。