Angular

时间:2018-04-05 15:10:03

标签: angular xliff angular-i18n

我目前正在将en locale添加到我们公司正在使用的Angular App中。经过一番思考后,我们决定采用Angular 5+原生i18n支持。

但是,从我的理解来看,每次使​​用ng xi18n --outputPath src/locale/ --locale en生成翻译文件时,都会创建一个新文件。这意味着,每次添加新的i18n标签时,之前包含旧翻译的XLF文件都需要与新翻译合并。

这看起来非常麻烦,因此我的问题是:有没有一种方法可以将新的转换单元附加到已经存在的XLF文件中?或者是否已有可以将这两者合并在一起的工具?

3 个答案:

答案 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

tutorial

<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.jsonangular.json的默认设置。

答案 2 :(得分:0)

由于 ngx-i18nsupport-package 将不再被开发,我们现在使用 rvanbekkum.xliff-sync 解决这个问题,这很有用。