Angular i18n替换源代码中的默认语言



我有一个angular 14 i18n项目,默认语言是法语,我有英文翻译。

所以我有一个区域设置文件夹,里面有两个文件:messages.xlfmessages.en.xlf。配置:

"i18n": {
"sourceLocale": "fr",
"locales": {
"en": {
"translation": "src/locale/messages.en.xlf"
}
}

代码看起来像:

.html:

<p i18n>Bonjour</p>

和.ts:

$localize`Bonjour`

我想做的是完全删除法语,只提供英语,我想删除i18n配置,并在.html或.ts.中用英语写所有内容

有没有办法用英文翻译完全替换源文件?

我检查了angular CLI,但没有找到实现这一点的方法,并考虑用脚本替换所有内容,但它看起来很乏味。。。

我最终使用xmllintfindsed编写了它的脚本,类似于以下内容:

#!/bin/bash
# Count source nodes
nodeCount=$(xmllint --xpath "count(//trans-unit)" ./src/locale/messages.en.xlf)
#Iterate the nodeset by index
for i in $(seq 1 $nodeCount); do
source=$(xmllint --xpath "string((//trans-unit)[$i]/source)" ./src/locale/messages.en.xlf)
target=$(xmllint --xpath "string((//trans-unit)[$i]/target)" ./src/locale/messages.en.xlf)
filePath=$(xmllint --xpath "string((//trans-unit)[$i]/context-group/context[@context-type='sourcefile'])" ./src/locale/messages.en.xlf)
gsed -i "s/${source}/${target}/" $filePath >/dev/null 2>&1

advance=$(($i * 100 / $nodeCount))
echo -ne ">>>                       [${advance}%]r"
done

这个脚本正在翻译文件中查找标记,并找到匹配的目标和文件路径。

警告:它不适用于复数,但除此之外,它还很好!

相关内容

  • 没有找到相关文章

最新更新