我正在将英文本地化添加到我们公司使用的Angular应用程序中。经过一番思考,我们决定使用Angular 5+本地的i18n支持。据我所知,每次生成翻译文件时,都会创建一个新文件。这意味着每次添加新的i18n标记时,已包含旧翻译的先前XLF文件需要与新翻译合并。这似乎非常麻烦,因此我的问题是:是否有一种方法可以将新的trans-units仅附加到已有的XLF文件?或者已经有一个工具可以合并这两个文件吗?
编辑答案
您可以使用xliffmerge工具。它可以在您的html中添加新翻译后合并翻译文件。
这里有一个关于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-i18nsupport)是https://github.com/daniel-sc/ng-extract-i18n-merge
安装后,通过以下方式使用:
ng add ng-extract-i18n-merge
使用以下命令,将提取的翻译内容 合并 :
ng extract-i18n
(透明度:这个库是我创建的。)
我之前遇到了一些问题:ERROR: language [...] node_modules\@ngx-i18nsupport\ngx-i18nsupport\xliffmerge\xliffmerge" is not valid
我使用了angular-cli和xliffmerge:https://github.com/martinroob/ngx-i18nsupport来提取/合并i18n。它会为您在package.json
中生成命令,并在angular.json
中为新任务生成配置。当合并时,它会保留上下文组和注释。
我只需要更改package.json
和angular.json
中的默认设置,以适应我选择的输出路径"src/locale"
。
i18nFile
、i18nFormat
和i18nLocale
)。它仍然可以在Angular 11下工作,但将来可能会成为问题。我还没有找到更好的选择。 - nclskfm