1,082 条译文混入了错误字母表的字符。我们的检查全部通过。
语言
10 月 31 日,我们在其中一个网站上发现一句匈牙利语中夹杂着中文词汇。我们检查了所有运营网站中存储的译文,寻找不属于其语言的字母,共发现 1,082 条类似译文,其中 581 条位于已发布页面。它们此前均通过了我们的检查。
我们发现的问题
这些问题均出自翻译我们网站的本地模型,且都是同一种失误:夹杂一两个其他语言的词汇。以下来自存储的译文,以及此后被拒绝的译文:
- 其他语言中混入中文:泰语句子中夹杂“它们是”;中文“跟踪”被加上匈牙利语词尾(“támadók跟踪ására”);波兰语和希腊语中也存在类似情况。
- 希腊语、亚美尼亚语、希伯来语和斯洛文尼亚语中混入俄语:希腊语中的“full house”被译为“φουλ хаус”,第二个词使用了西里尔字母。
- 形似字母:芬兰语或捷克语单词末尾出现西里尔字母“о”或“а”。读者难以察觉,但搜索引擎或屏幕阅读器会发现。
- 相邻文字系统:卡纳达语单词中混入孟加拉语字母,卡纳达语中混入天城文。
- 高棉语页面整行泰语:两个网站的高棉语页面中,标题、标签和表格单元格直接写成了泰语。
我们的商店也有 7 行此类译文。其中一行将“planted values”译为罗马尼亚语“valori植入”。
为何检查未能发现
文字系统检查要求译文中至少 45% 的字母属于该语言的文字系统。这能捕获未翻译的英文,也正是其设计初衷。100 个字母的匈牙利语句子中夹杂 2 个中文字符,不会改变比例;单个西里尔字母的影响更小。
短文本采用不同规则。对于少于 25 个英文字母的文本,检查仅确保译文未保留英文。用泰语书写的高棉语表格单元格不含任何英文,因此通过了检查。
捕获此类问题的规则
若某字母属于该语言未使用的文字系统,且英文原文中也不包含该字母,则视为错误。以下三项例外可避免误报:
- 始终允许拉丁字母:品牌名称、代码和单位在所有语言中均会出现。
- 中文、日语和韩语未做检查,因为日语混合了假名和汉字,而韩语可能使用汉字。
- 塞尔维亚语和旁遮普语各有两种书写系统,仅检查其中是否混入了中文、日语和韩语字符。
我们用该规则检查了网站存储的所有内容,它标记出的每一行经我们阅读确认都是错误的。自 10 月 31 日以来,它在翻译生成时拒绝了 1,652 条译文,其中 1,549 条是高棉语:模型仍会为高棉语写出泰文,但现在会被要求重新翻译,而不是直接发布。
清理工作
存储的译文仅在其语言被重新翻译时才会再次检查,因此所有受影响的语言都重新进行了翻译:共 61 种语言,覆盖十一个网站。有两行第二次返回时仍带有相同的错误:罗马尼亚语的“valori植入”和一行包含“面向”的希腊语译文。这两行由我们手动修正。11 月 2 日,我们已发布的页面中不再含有其他书写系统的字符。
规则现在的所在位置
它位于 translation-checks 1.1.0 中,在 GitHub 上免费获取,旁边还有一个新检查项,确保每个数字都能正确返回,并知道日语中的“3 million”是 300万。针对我们网站已接受的 568,574 条译文运行新检查项,未产生误报。Polyglot 1.1.0 也包含了这些检查项。我们的检查项首次成为问题所在的情况见早前的一篇笔记。