问题描述
为了提取翻译,我将 i18n 与 xliffmerge 结合使用。
我在 extract-i18n
中添加了 package.json
命令,如下所示:
"extract-i18n": "ng extract-i18n project --i18n-format xlf --output-path src/locale --i18n-locale en-US && ng run project:xliffmerge"
xliffmergeOptions
中的 angular.json
是:
"xliffmerge": {
"builder": "@ngx-i18nsupport/tooling:xliffmerge","options": {
"xliffmergeOptions": {
"format": "xlf","srcDir": "src/locale","genDir": "src/locale","defaultLanguage": "en-US","languages": [
"en-US","nl-NL"
]
}
}
}
每当我运行 extract-i18n
命令时,messages.xlf 文件仍然会导出到根文件夹而不是 src/locale。
我不知道为什么它没有导出到 src/locale 文件夹。
更新
从 Angular 11 升级到 Angular 12 后,这个问题仍然存在。
解决方法
请使用此命令
extract-i18n --output-path src/locale
您没有定义路径,这就是您遇到问题的原因,您现在必须定义生成 xml 文件的路径,我也在 i18n 工作,如果您对 i18n 有任何疑问,请告诉我,我会帮助您。
,
我在 package.json 的脚本中配置 ng extract-i18n
时犯了一个错误。相反,我应该使用 npm run extract-i18n
。
但这只能解决部分问题,因为不再支持 --i18n-format
和 --18n-locale
(或者看起来如此)。
正确的命令应该是:
"extract-i18n": "ng extract-i18n [projectname] --format xlf --output-path src/locale && ng run [projectname]:xliffmerge"
由于 Angular 弃用了模式中的关键字“id”而支持“$id”,但我不确定 xliffmerge 会继续工作多久,因为 ngx-i18nsupport 的开发几年前就停止了。