champollion
一个完全可定制的国际化框架。一条命令翻译你的语言文件。一个配置控制每个方法、模型和语言对。如果内置方法还不够——构建你自己的,证明它有效,然后部署它。
npx champollion sync
champollion 自动检测你的语言文件、格式和目标语言。它翻译缺失的内容,跳过已完成的部分,验证每个结果,并输出干净的文件。这只是起点。
为什么不自己写脚本呢?
你可以写一个快速循环,对每个键调用 Google Translate。大多数开发者都这样做——大约需要 30 行代码。问题出现在这里:
- 没有变更检测。 更新一个英文字符串——翻译永远保持陈旧。champollion 用 SHA-256 哈希跟踪每个源值,只重新翻译改变的部分。
- 没有批处理。 每个键一次 API 调用意味着 200 个键 = 200 次往返。champollion 智能批处理(可配置,LLM 默认 80 个键/批,Google 默认 128 个)。
- 没有缓存。 每次同步都重新翻译所有内容。champollion 的翻译记忆库按源文本 + 语言 + 方法缓存翻译——在一个键改变后重新运行同步只翻译那一个键,而不是整个文件。
- 没有质量门槛。 机器翻译会产生幻觉、回显源文本或输出错误的文字。champollion 在写入前验证每个翻译——错误的文字、长度膨胀和源文本回显都会被捕获并拒绝。
- 没有格式感知。 硬编码为 JSON?champollion 处理 JSON、TOML、YAML 和 Hugo Markdown(frontmatter + body),具有自动检测功能。
- 没有方法控制。 每个语言对都使用相同的方法。champollion 让你在同一个配置文件中对法语使用 Google Translate,对日语使用 LLM,对 Cree 语使用自定义社区托管管道。
champollion 是那个脚本的生产版本。
它的与众不同之处
每个方法都是一个插件
翻译方法可按语言对配置。在同一个项目中混合 Google Translate、LLM、精心设计的提示和自定义 API:
{
"version": 3,
"pairs": {
"en:fr": { "method": "google-translate" },
"en:ja": { "method": "llm", "model": "google/gemini-2.5-pro" },
"en:crk": { "methodPlugin": "crk-coached-v1" }
}
}
法语使用 Google Translate(快速、便宜)。日语使用高级 LLM(细致入微)。Plains Cree 使用带有语法规则、词典和形态验证的精心设计的插件。同一个 sync 命令。同样的质量门槛。同样的 CLI。
证明它
认为你的方法可以翻译英语到西班牙语?土耳其语到阿塞拜疆语?英语到 Cree 语?
证明它。 配套的 eval harness 用可重现的、指纹识别的评分对任何翻译方法进行基准测试。排行榜 跟踪每个提交。
eval harness 和生产 CLI 共享相同的插件接口。在 harness 中评分良好的方法可以在生产中使用——如果该语言所属社区同意的话。对于土著语言和低资源语言,这种同意很重要。参见 Data Sovereignty。
# Benchmark your method (in the eval harness repo)
cd arena
python eval/baseline_experiment.py --dataset data/edtekla-dev-v1.json --submit
# Use it locally
npx champollion sync
同一个插件。插入并测试。
完整的工具包
champollion 不仅仅是 sync。它是一个完整的 i18n 管道:
| 命令 | 功能 |
|---|---|
sync | 翻译缺失和陈旧的键(带同步后验证) |
watch | 源文件改变时自动同步 |
lint | 扫描源代码中的硬编码字符串 |
wrap | 自动将硬编码字符串包装在 t() 调用中 |
audit | 列出之前运行中的所有 [EN] 回退标记 |
verify | 验证翻译存在且正确(CI 门槛) |
integrity | 检测占位符损坏、编码问题和 ICU 复数完整性 |
seo | 生成 hreflang 标签、站点地图和 JSON-LD 架构 |
status | 显示语言对配置、插件和基准评分 |
provenance | 审计翻译资源许可 |
plugin | 安装、删除和列出方法插件 |
fonts | 下载 PUA 文字转换器的网络字体 |
tm | 管理翻译记忆库缓存(统计、清除、按语言) |
xliff | 导出/导入 XLIFF 1.2 供专业翻译人员审查 |
其中四个——lint、sync、verify、audit——形成一个 CI 管道,捕获硬编码字符串、翻译它们、验证正确性,如果任何语言不完整则使构建失败。
竞技场
方法排行榜 是记分板。每个提交都指纹识别到一个 Git 提交,版本化到特定数据集,并由相同的 harness 评分。任何人都可以提交。
你能证明什么? harness 接受 JSON。插件接受 JSON。任何生成 JSON 的方法都可以被测试:
| 方法 | 示例 |
|---|---|
| 精心设计的 LLM | 将语法规则和词典注入前沿模型的提示中 |
| 微调模型 | 在平行文本上训练开源模型——只是不在评估数据上 |
| FST 门控管道 | LLM 生成 → 有限状态转换器验证形态 → 重试 |
| 链式模型 | 模型 A 草稿 → 模型 B 后期编辑 → 模型 C 评分 |
| 词典 + LLM | 强制使用词典中的已知术语,让 LLM 处理其余部分 |
| 进化型 | 生成候选、评分、变异最佳、重复 |
| 部分翻译 | 手工翻译样本、证明你的 LLM 匹配、自动翻译其余部分 |
微调模型。部署进化算法。测试学生在语言考试中的答案。构建查找表。将三个模型链接在一起。只要你的方法生成 JSON,harness 就会评分,框架就会运行它。
:::danger 唯一的规则 不要在评估数据上训练。 暴露于基准数据集的方法将被取消资格。在任何你想要的东西上微调。只是不要在测试集上。 :::
这是一个公开邀请。如果你使用低资源语言——作为研究人员、社区成员、学生或只是关心的人——构建一个方法、运行 harness 并声称最高分。问题尚未解决。基础设施已在这里。
后续步骤
入门:
自定义你的设置:
- 翻译方法 — 为每个语言对选择正确的方法
- 翻译记忆库 — 缓存如何为你节省成本
- 配置 — 完整配置参考
- Hugo 多语言网站 — Markdown 内容翻译
深入了解:
- 与专业翻译人员合作 — XLIFF 导出/导入工作流
- Data Sovereignty — OCAP、CARE 和毛利数据主权原则
- 支持低资源语言 — 启动这一切的挑战
- Cookbook:FST 门控管道 — 构建分解管道
- MT 评估 — harness 和排行榜如何工作
- 方法排行榜 — 实时评分和提交