从 Make 或 npm 脚本检查翻译
如果您的项目已经有一个 make test 或 npm test,请在那里添加翻译检查。kaeris check 在占位符或密钥损坏时退出代码为 1,因此整个目标都会失败。它是离线的、免费的:无需 API 密钥,无需账户。
KAERIS 翻译了此页面,并通过回译检查了每一行。尚未经过母语人士审阅。 英文原文
配置
Makefile
安装一次检查器 pip install kaeris。配置行以制表符开头。将 test 依赖于 i18n-check 会在测试之前运行检查。
.PHONY: i18n-check test i18n-check: kaeris check --source locales/en.json --langs de,fr --ci test: i18n-check ./run-tests.sh
npm 脚本
该脚本仅从您的 PATH 调用 kaeris,因此检查器是来自 pip install kaeris 的 Python 包。pretest 在 test 之前运行,并在检查失败时停止它。
{
"scripts": {
"i18n:check": "kaeris check --source locales/en.json --langs de,fr --ci",
"pretest": "npm run i18n:check",
"test": "jest"
}
}
实际运行时打印的内容
kaeris 0.2.35 的输出,捕获于 27 October 2026。每个框的最后一行是 CI 作业看到的退出代码。
npm 测试
上面脚本的 npm test 输出(在此运行中,test 脚本是 echo)。左侧:正常的文件。右侧:de.json 中有 {nam} 而不是 {name},并且 checkout 键丢失;npm 在 test 之前停止。
$ npm test > [email protected] pretest > npm run i18n:check > [email protected] i18n:check > kaeris check --source locales/en.json --langs de,fr --ci ✓ de: complete & placeholder-safe ✓ fr: complete & placeholder-safe ✓ all locales complete & placeholder-safe > [email protected] test > echo tests would run here tests would run here exit code: 0
$ npm test > [email protected] pretest > npm run i18n:check > [email protected] i18n:check > kaeris check --source locales/en.json --langs de,fr --ci ✗ de: 1 missing key(s): checkout ✗ de: 1 placeholder mismatch(es): greeting: missing ['{name}'], added ['{nam}'] ✗ de: 2 translation fault(s): greeting: lost placeholder {name} greeting: invented placeholder {nam} (not in source) ✓ fr: complete & placeholder-safe ✗ 1 missing key, 1 placeholder mismatch, 2 translation faults exit code: 1
Makefile 配置行
与 i18n-check 目标运行的命令相同,以及它的退出代码。
$ kaeris check --source locales/en.json --langs de,fr --ci ✓ de: complete & placeholder-safe ✓ fr: complete & placeholder-safe ✓ all locales complete & placeholder-safe exit code: 0
$ kaeris check --source locales/en.json --langs de,fr --ci
✗ de: 1 missing key(s): checkout
✗ de: 1 placeholder mismatch(es):
greeting: missing ['{name}'], added ['{nam}']
✗ de: 2 translation fault(s):
greeting: lost placeholder {name}
greeting: invented placeholder {nam} (not in source)
✓ fr: complete & placeholder-safe
✗ 1 missing key, 1 placeholder mismatch, 2 translation faults
exit code: 1
分三步设置
安装检查器
在运行您测试的机器或 CI 镜像中运行
pip install kaeris。添加目标或脚本
将
i18n-check目标添加到 Makefile,或将i18n:check和pretest脚本添加到package.json,并设置您自己的--source和--langs。运行您的常规命令
make test或npm test现在会先运行检查,并在翻译损坏时以非零退出代码停止。
我们是如何检查的
页面上的每个命令在编写之前都已运行。未运行的命令也列出了。
运行了什么
上面的脚本运行
npm test,但test是一个echo(npm 11.17, Node 24),并且 PATH 中的 kaeris 0.2.35 来自 PyPI。干净的文件:退出代码 0,测试运行。损坏的de.json:退出代码 1,测试未运行。未运行什么
make未安装在检查此项的机器上。该配方行通过 shell 运行,这正是 make 对其所做的,因此上面的退出代码是真实的,但 Makefile 本身并未由 make 运行。npm
npm 注册表中还没有 kaeris 包,因此此页面不会将您引导至 npm。Node 项目调用 Python 包,如上所述。
值得了解的选项
对过时的密钥也失败
当翻译包含源文件中已不再存在的密钥时,
--strict也会失败。保留品牌名称不变
--glossary 'KAERIS,GitHub'会使丢失其中一个术语的目标失败。相同的列表可以放在kaeris.json的keep下。不同的文件布局
--out是包含翻译的文件夹,--pattern '{lang}/common.json'是它们的文件名。默认:kaeris translate写入的布局。完全没有标志
在项目中有一个
kaeris.json文件(kaeris init会写入一个),kaeris check会从中获取源文件、语言和文件夹。
问题
是否需要 API 密钥或账户?
否。kaeris check 在其帮助文档中被描述为静态、本地且无 API 的,因此该作业不需要密钥。翻译是一个单独的命令,需要密钥。
检查会捕获什么?
丢失或多余的占位符({name}、%s、{{x}}、ICU 复数形式),缺少密钥以及不存在的区域设置文件。比较是本地的、静态的。 它检查什么,以及所有标志
它在没有 Python 的情况下工作吗?
检查器是一个 Python 包,因此运行检查的机器需要 Python 3.8 或更高版本。该包不声明任何依赖项。
继续
其他配置示例:GitHub Actions · GitLab CI · pre-commit
CLI 参考 · 检查参考 · GitHub Action 参考 · 浏览器中的免费检查 · 浏览器中的翻译