angular - Angular 中 i18n 翻译文件的更新

标签 angular xliff angular-i18n

我目前正在为我公司使用的 Angular 应用程序添加语言环境。经过一番思考,我们决定采用 Angular 5+ 原生 i18n 支持。

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

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

编辑: xliffmerge 似乎没有维护并且与最新的 Angular 版本(> 12)不兼容。 有关最新 Angular 版本的选项,请参阅@daniel-sc 的回答。

最佳答案

编辑后的答案

您可以使用 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>

下次您运行提取命令时,它只会添加新 block ,但不会触及现有 block

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

关于angular - Angular 中 i18n 翻译文件的更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49675802/

相关文章:

android - PrimeNG 下拉菜单在移动设备上被键盘隐藏

c# - 正则表达式仅替换给定 xml 节点中的子字符串

localization - XLIFF使用XLIFF对复数和性别进行Xcode 6本地化

angular - 刷新 Angular 应用程序的浏览器时,i18n 文件夹问题

angular - 如何使用 $localize 传递变量

angular - 如何以 Angular 使用来自另一个语言环境的 Assets ?

angular - 有没有办法以百分比指定 ag-grid 列宽?

javascript - 服务器上刷新时 Angular 2 路由 404

angular - 在 Angular2 *ngFor 迭代中,如何只输出数组中的唯一值?

java - 国际化java软件