You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Angular应用添加en本地化:原生i18n翻译文件合并疑问

解决Angular原生i18n每次生成新XLF文件需手动合并翻译的问题

我完全懂你的痛点——每次执行ng xi18n生成新的XLF文件,还要手动把旧翻译合并进去,重复劳动不说还容易出错。其实Angular原生i18n方案早就提供了解决办法,给你几个实用的方案:

1. 使用--reuse-existing参数复用已有翻译文件

Angular CLI从Angular 6+开始支持--reuse-existing参数,它能读取你已有的翻译文件,保留其中已完成的翻译,只新增本次提取到的未翻译条目,不会生成全新文件。

下次提取时直接用这个命令:

ng xi18n --outputPath src/locale/ --locale en --target-file messages.en.xlf --reuse-existing
  • --target-file指定要复用的已有翻译文件名,比如你之前生成的messages.en.xlf
  • --reuse-existing告诉CLI保留该文件中的已有翻译内容,只追加新条目

2. 升级到XLIFF 2.0格式(Angular 13+推荐)

XLIFF 2.0相比1.2结构更清晰,CLI对它的复用支持更完善,能减少合并时的潜在问题。如果你的Angular版本在13及以上,可以加上--xliff-version 2.0参数:

ng xi18n --outputPath src/locale/ --locale en --target-file messages.en.xlf --xliff-version 2.0 --reuse-existing

3. 把配置写入angular.json,一键执行

为了避免每次敲长命令,你可以把提取i18n的配置直接写入项目的angular.json文件,以后只要运行ng extract-i18n就能自动执行:

找到architect > extract-i18n节点,修改为如下配置(替换your-project-name为你的项目名称):

"extract-i18n": {
  "builder": "@angular-devkit/build-angular:extract-i18n",
  "options": {
    "browserTarget": "your-project-name:build",
    "outputPath": "src/locale/",
    "locale": "en",
    "targetFile": "messages.en.xlf",
    "reuseExisting": true,
    "xliffVersion": "2.0"
  }
}

之后每次新增i18n标签,只需运行:

ng extract-i18n

CLI就会自动更新你已有的messages.en.xlf文件,完美保留旧翻译,只添加新的待翻译条目。

内容的提问来源于stack exchange,提问作者seBaka28

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 08:08:05