翻译 Angular $localize 文件,然后检查每一行
ng extract-i18n 默认会写入 XLIFF,其中插值作为 <x> 标签,复数形式在内部。删除标签会导致 ng build --localize 失败。KAERIS 会为每个单元写入一个 <target> 并保留每个标签和 id。
KAERIS 翻译了此页面,并通过回译检查了每一行。尚未经过母语人士审阅。 英文原文
插值保留为 <x> 标签
每个标签的 equiv-text 都被保留,因此构建过程仍然知道 {{ name }} 是什么。
<trans-unit id="welcome" datatype="html">
<source>Welcome back, <x id="INTERPOLATION" equiv-text="{{ name }}"/>!</source>
</trans-unit>
<trans-unit id="save" datatype="html">
<source>Save changes</source>
</trans-unit>
<trans-unit id="welcome" datatype="html"> <source>Welcome back, <x id="INTERPOLATION" equiv-text="{{ name }}"/>!</source> <target>Willkommen zurück, <x id="INTERPOLATION" equiv-text="{{ name }}"/>!</target> </trans-unit> <trans-unit id="save" datatype="html"> <source>Save changes</source> <target>Änderungen speichern</target> </trans-unit>
KAERIS 的处理方式
您的 id 保持不变
自定义的
@@ids和生成的 id 保持不变,因此翻译会与消息保持关联。变量在无 AI 的情况下进行检查
翻译后,简单的计数检查会将每个变量和标记与原始内容进行比较。丢失了任何变量的行将被标记并显示在顶部。
每一行都翻译回来
另一个模型 GPT-4o mini 会将每一行翻译回您的语言,然后 DeepSeek V3.2 在美国主机(DeepInfra、DigitalOcean、Google)上判断含义是否发生变化。您可以阅读每一行现在的含义。
问题
它也读取 --format json 吗?
是的。ng extract-i18n --format json 写入的 JSON 会逐个键进行翻译,包括 ICU 块。
支持 XLIFF 2.0 吗?
暂不支持。Angular 的默认 xlf 是 XLIFF 1.2,它是可以工作的。
免费吗?
是的,无需账户:每个文件 10,000 个字符,每次运行最多 8 种语言。免费的 API 密钥可将文件限制提高到 50,000 个字符。一次性付费 79 美元,使用您自己的 OpenRouter 密钥;月度套餐起价为 19 美元。价格
我可以在终端或 CI 中运行它吗?
可以。pip install kaeris,然后使用您的文件和 --langs de,ja 运行 kaeris translate。当有新密钥时,GitHub Action 会打开一个 pull request。文档