实战指南 › 翻译自检实战:让机器替你抓语言串味

翻译自检实战:让机器替你抓语言串味

更新:2026-10建站实战

写五语翻译时,我反复犯同一类错误:印尼语里冒出德语动词,中文槽位里塞进英文,槽位数少一个。这些错误肉眼极难发现,但会直接出现在生产页面上。

先看清槽位结构

五语不是统一 5 元组。真实项目里至少并存四种布局,脚本若按「index 1 起都是外语」判断,会把合法内容判成错误:

# 5  = (zh, en, id, sl, it)
# 10 = 问答按语交替 (zh_q, zh_a, en_q, en_a, ...)
# 6  = (name, zh, en, id, sl, it)   前两位是名称与中文
# 4  = (zh_q, zh_a, en_q, en_a)
# 3  = (id, sl, it)               根本没有中文槽位

3 元组那一行是关键:判断「index 0 必须是中文」就会把纯印尼语数据全判成错。

三类要抓的错误

第三类最阴险:空槽在折叠时会被回退成相邻语言,页面看着「有内容」,实际语言是错的。

按结构推断,而不是按位置

def latin_indices(n):
    """给定槽位总数,返回「应该是拉丁语」的下标集合。"""
    return {1: {1, 2, 3, 4},
            2: {1},
            3: {1, 2},
            4: {2, 3},
            5: {1, 2, 3, 4},
            6: {2, 3, 4, 5},
            9: {2, 3, 4, 5, 6, 7, 8},
           10: {2, 3, 4, 5, 6, 7, 8, 9}}.get(n, set())

有了这张表,检查逻辑就与具体项目无关,可以直接复用到下一篇文章、下一套文案。

配套做法:校验数据时把断言跑在脚本里,不要跑在脑子里。我写完 181 条译文后靠脚本抓出了「如此Jdahit」「menjadikannya一套完整」这类错误——全是我肉眼读不出来的。Companion practice: run assertions in a script, not in your head. After writing 181 translations the script caught things like 「如此Jdahit」 that I could not see by reading.

别手改 JSON,用脚本改

手写大段五语文本时,我用 shell 脚本追加内容,结果产生了重复的 User-agent 段;改 JSON 时又出现嵌套列表与重复列。

结论:数据文件只由脚本生成或修改,一次性脚本也要先校验再落盘,校验不过就中止。

if bad:
    print("发现 %d 处问题,未写入" % bad)
    return 1          # 中止,不碰文件
write_file(path, data)
Advertisement
广告位(AdSense 接入后显示)

相关工具