跳转到主要内容

质量门禁

每次翻译在写入磁盘之前,都会通过一个确定性的验证门禁。质量门禁会捕获常见的机器翻译失败模式——没有静默降级,也不会有垃圾数据写入你的本地化文件。

验证检查

检查项捕获内容门禁标签
空值/空白模型返回空字符串或空白字符[GATE] empty
源文回显模型返回了原始的英文输入[GATE] source-echo
幻觉循环重复的三元组模式(例如,"Qo' Qo' Qo'"[GATE] hallucination
长度膨胀输出比源文长得多[GATE] length
书写系统合规性目标语言环境的书写系统错误[GATE] script
ICU 复数类别缺少该语言环境所需的复数形式[GATE] icu-plural

空值/空白

拒绝空字符串、仅包含空白字符或 null 的翻译。这能捕获模型在处理困难的键时返回空内容的情况。

源文回显

检测模型是否返回了英文源文本而没有进行翻译。这在短字符串和提示词不够明确时很常见。

幻觉循环

分析输出中的三元组(3 个字符)模式。如果任何三元组的重复次数相对于输出长度超过了阈值,该翻译将被拒绝。这能捕获类似 "Qo' Qo' Qo' Qo' Qo'" 的退化输出。

长度膨胀

拒绝输出长度超过 maxLengthRatio × source length(默认:4 倍)的翻译。这能捕获模型产生幻觉,为简短输入生成大段文本的情况。

可以通过配置中的 maxLengthRatio 进行配置。

书写系统合规性

对于配置了 script 字段的语言环境(例如,平原克里语音节的 "script": "cans"),验证输出是否包含适合目标书写系统的非 ASCII 字符。如果阿拉伯语、中日韩语或音节文字的语言环境仅输出拉丁字符,则会被拒绝。

失败时的处理

  1. 失败的翻译会记录到 stderr,带有 [GATE] 前缀、键名、原因以及值的预览
  2. 该键不会写入本地化文件
  3. 触发重试级联(见下文)
[GATE] hero.title: source-echo — "Welcome to our platform"
[GATE] nav.about: hallucination — "À À À À À À À À"

重试级联

当一个批次失败(JSON 解析错误或被质量门禁拒绝)时,rosetta 会使用逐渐减小的批次进行重试:

Full batch (80 keys) → parse error
└→ Half batch (40 keys) → 2 failures
└→ Individual keys (1 each) → isolates the 2 problem keys

重试预算上限由 maxRetries 决定(默认:3,可按语言配置)。这能防止在持续失败的键上失控地消耗 token。

耗尽重试次数后,有问题的键会被记录并跳过。它们将在下一次运行 sync 时重试。

提示词缓存

系统消息(语气、语法规则、样式说明)与用户消息(要翻译的键)是分离的。这种分离是有意为之的:

  • 对于给定的语言环境,系统消息在所有批次中都是相同的
  • Anthropic 和 Google 等提供商会缓存重复的系统消息
  • 结果:第一个批次支付全额 token 成本,后续批次仅需为用户消息付费

对于包含大量批次的项目,这可以显著降低 token 成本。

ICU MessageFormat 验证

integrity 命令会根据 CLDR 复数规则验证 ICU MessageFormat 复数模式。如果你的源文件使用了如下 ICU 语法:

"items": "{count, plural, one {# item} other {# items}}"

Rosetta 会验证翻译版本是否包含目标语言环境所需的所有复数类别。例如,阿拉伯语需要六个类别(zeroonetwofewmanyother)——而不仅仅是 oneother

运行 i18n-rosetta integrity 可以检查所有语言环境的复数完整性。

术语强制执行

对于带有词典的辅导语言对,rosetta 会在翻译后运行术语检查。在通过质量门禁后,它会验证 LLM 是否实际使用了所需的词典术语。

[TERM] en→fr: 2 term violation(s)
• hero.title: "dashboard" → expected "tableau de bord" but got "panneau de contrôle"

术语违规是警告,而不是阻塞性错误。翻译仍然会写入磁盘。这是有意为之的——LLM 可能有充分的理由(上下文、语法)选择替代词,如果因术语不匹配而阻塞,反而弊大于利。

要修复违规问题,请更新辅导词典或手动编辑本地化文件。


另请参阅