【问题标题】:Updates to i18n translation files in Angular更新 Angular 中的 i18n 翻译文件
【发布时间】:2018-09-15 11:29:58
【问题描述】:

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

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

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

【问题讨论】:

    标签: angular xliff angular-i18n


    【解决方案1】:

    由于 ngx-i18nsupport-package 将不再开发,我们现在使用 rvanbekkum.xliff-sync 来解决这个问题,这就像一个魅力。

    【讨论】:

      【解决方案2】:

      修改后的答案

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

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

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

      【讨论】:

      • 您能详细说明一下吗?我用我正在使用的完整命令更新了我的问题。我也已经使用了唯一 ID,但是当我重新运行命令时,有一个名为 messages.xlf 的新文件不包含任何现有翻译。
      • @seBaka28 你的“真实”翻译文件在哪里?名称/位置?
      • messages.en.xlf 位于 src/locale/ - 新的messages.xlf 生成后的位置相同
      • 我编辑了我的答案。实际上,我非常确定原生工具可以默认合并,我什至没有尝试过(我就在我的项目中!)
      • @Ray 问题是工具ngx-i18n-support好像不再更新了(最近一次更新是两年前)。因此它使用了 i18n 中已弃用的东西(例如i18nFilei18nFormati18nLocale)。它仍然可以在 Angular 11 下工作,但在未来这可能会成为一个问题。我还没有找到更好的选择。
      【解决方案3】:

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

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

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

      【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多