有 1,082 筆翻譯混入了錯誤字母表的文字。我們的檢查卻全部通過。

語言

10 月 31 日,我們發現其中一個網站上有一句匈牙利語句子,中間夾雜著中文詞彙。我們搜尋了所有營運網站的已儲存翻譯,找出那些不屬於該語言的字元,結果發現了 1,082 筆類似情況,其中 581 筆出現在已發布的頁面上。每一筆都通過了我們的檢查。

我們發現了什麼

這些問題全部出自負責翻譯我們網站的本地模型,而且都是同一種失誤:夾雜了一兩個其他語言的詞彙。以下內容來自已儲存的翻譯,以及自那之後被拒絕的翻譯:

我們的商店本身也有七行這樣的內容。其中一行,「planted values」在羅馬尼亞語中輸出為 "valori植入"。

為什麼檢查會通過

腳本檢查詢問翻譯中至少 45% 的字元是否屬於該語言的文字系統。這能抓到保留英文的情況,也正是它設計的初衷。在一百個字元的匈牙利語句子中夾雜兩個中文字元,並不會改變這個比例,而單一一個西里爾字母的影響更小。

短文字有不同的規則。若英文少於 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 也包含了這些檢查。關於我們的檢查首次成為問題所在,請見先前的筆記。

已更新: