【问题标题】:How to handle angular 11 extract-i18n overriding existing translations?如何处理覆盖现有翻译的 Angular 11 extract-i18n?
【发布时间】:2021-07-18 00:05:38
【问题描述】:

所以我有一个 angular 11 应用程序,我刚刚使用 angulars 默认 i18n 中间件实现了本地化。

创建一个我刚刚运行的初始文件:

ng extract-i18n myprojectName --format xlf --output-path src/i18n  --out-file messages.da.xlf --progress

一切都很好,我得到了一个带有默认语言翻译的 messages.da.xlf 文件。

现在我想将应用程序翻译成英文。

我复制了 messages.da.xlf 文件并将其命名为 messages.en.xlf 并翻译了所有内容。

现在一切都很好。

但是现在我有一个问题,下次我添加要翻译的附加文本时英文翻译没有更新。

所以我的问题是,当我因为应用程序中的新功能而需要扩展翻译时,我如何知道我必须将哪些附加“字段”添加到所有翻译文件中,以及是否有办法自动完成?

【问题讨论】:

    标签: angular angular-i18n angular-localize


    【解决方案1】:

    在 Angular 中没有内置的方法可以做到这一点,所以你需要一个 3rd 方工具。我发现的唯一免费工具是现在无人维护的Xliffmerge。 该文档针对的是旧版本的 Angular,但经过一些实验,我发现安装 @ngx-i18nsupport/tooling 包就足够了:

    npm install -D @ngx-i18nsupport/tooling --legacy-peer-deps
    

    然后我们可以在projects -> projectName -> architect -> xliffmerge下的angular.json中的配置中添加新的语言。

    "xliffmerge": {
      "builder": "@ngx-i18nsupport/tooling:xliffmerge",
      "options": {
        "xliffmergeOptions": {
          "defaultLanguage": "en-US",
          "languages": ["nb"]
        }
      }
    }
    

    添加新翻译后,我们可以通过运行以下脚本将它们提取并迁移到我们的翻译文件中:

    ng extract-i18n && ng run projectName:xliffmerge
    

    我们在运行脚本时收到一些警告,告诉我们它的工作原理!

    WARNING: merged 1 trans-units from master to "nb"
    WARNING: please translate file "messages.nb.xlf" to target-language="nb"
    

    我在my blog 上写了更多关于此的内容。

    【讨论】:

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