更新Angular中的i18n翻译文件

问题描述 投票:6回答:2

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

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

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

angular xliff angular-i18n
2个回答
6
投票

编辑回答

您可以使用xliffmerge工具。在您的html中添加新翻译后,它可以合并翻译文件

这是一个有角度的tutorial

基本上在运行常规提取命令后,调用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>

下次运行extract命令时,它只会添加新块但不会触及现有块

顺便说一下,我认为使用原生选项是一个不错的选择,因为主要替代方案(ngx-translate)的维护者实际上正在与原生方法的角度团队合作


0
投票

我以前的解决方案有一些问题:ERROR: language [...] node_modules\@ngx-i18nsupport\ngx-i18nsupport\xliffmerge\xliffmerge" is not valid

我使用xliffmerge和angular-cli:https://github.com/martinroob/ngx-i18nsupport来提取/合并i18n。它为你生成package.json中的命令和angular.json中新任务的配置。它在合并时保留上下文组和注释。

我只需要为我选择的输出路径package.json更改angular.json"src/locale"中的默认设置。

© www.soinside.com 2019 - 2024. All rights reserved.