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
相关产品推荐
相关产品推荐

