翻译

从 Make 或 npm 脚本检查翻译

如果您的项目已经有一个 make test 或 npm test,请在那里添加翻译检查。kaeris check 在占位符或密钥损坏时退出代码为 1,因此整个目标都会失败。它是离线的、免费的:无需 API 密钥,无需账户。

KAERIS 翻译了此页面,并通过回译检查了每一行。尚未经过母语人士审阅。 英文原文

配置

Makefile

安装一次检查器 pip install kaeris。配置行以制表符开头。将 test 依赖于 i18n-check 会在测试之前运行检查。

配置Makefile
.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 之前运行,并在检查失败时停止它。

配置package.json
{
  "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
$ 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
$ 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 目标运行的命令相同,以及它的退出代码。

正常的文件recipe line
$ 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
损坏的翻译recipe line
$ 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

分三步设置

  1. 安装检查器

    在运行您测试的机器或 CI 镜像中运行 pip install kaeris。

  2. 添加目标或脚本

    将 i18n-check 目标添加到 Makefile,或将 i18n:check 和 pretest 脚本添加到 package.json,并设置您自己的 --source 和 --langs。

  3. 运行您的常规命令

    make test 或 npm test 现在会先运行检查,并在翻译损坏时以非零退出代码停止。

我们是如何检查的

页面上的每个命令在编写之前都已运行。未运行的命令也列出了。

值得了解的选项

问题

是否需要 API 密钥或账户?

否。kaeris check 在其帮助文档中被描述为静态、本地且无 API 的,因此该作业不需要密钥。翻译是一个单独的命令,需要密钥。

检查会捕获什么?

丢失或多余的占位符({name}、%s、{{x}}、ICU 复数形式),缺少密钥以及不存在的区域设置文件。比较是本地的、静态的。 它检查什么,以及所有标志

它在没有 Python 的情况下工作吗?

检查器是一个 Python 包,因此运行检查的机器需要 Python 3.8 或更高版本。该包不声明任何依赖项。

继续

其他配置示例:GitHub Actions · GitLab CI · pre-commit

CLI 参考 · 检查参考 · GitHub Action 参考 · 浏览器中的免费检查 · 浏览器中的翻译