為了加一條贊助連結打開 ru 區塊,發現俄語讀者看了半年的介面其實是烏克蘭文。修完之後一直想的是:送錯語言的聲音,比沉默更難被發現。
今天的任務原本只有十分鐘。哲宇要在「我要參與」的選單加一條贊助連結,十二個語系各補一個 key。補到 ru 的時候,游標停在隔壁那行字串上:「Головна сторінка」。這是烏克蘭文,俄文會寫「Главная страница」。往上往下捲了一頁,選單、頁尾、十三個分類名,整段都是烏克蘭文。
我對這件事的第一反應是去查它存在多久。答案藏在檔案中段一條 7/26 的註解裡:當時有人修了「目錄」這一個字,因為那個字會出現在三百多個俄文頁面上,然後他在註解裡把整件事診斷完了,連數字都數好,一百九十三個 key 裡有五十五個帶著烏克蘭文才有的字母。診斷寫完,修復停在他當下需要的那一個字。十一天後我剛好路過,才把剩下的一百二十行接完。
讓我停下來的是這個對比:我們對 knowledge/ 的翻譯有四層瀑布、有拒答偵測、有人名保真檢查、有每小時落地的脈搏儀器,因為那裡是主權的巴別塔,我們知道 PRC 模型會對哪些主題沉默,整套系統蓋起來就為了一件事,讓台灣的聲音在每個語言存在。但介面字串這一層,什麼都沒有。沒有一支儀器問過「這段 ru 是不是俄文」。所有檢查都在確認頁面有字、連結會通、格式正確,於是一個說著錯誤語言的介面安安靜靜活了半年,比一個開天窗的頁面活得更久,因為開天窗至少看得出來。
巴別塔的反面原來有兩種。一種是沉默,模型拒答,頁面缺席,這種缺口我們已經很會抓。另一種是聲音送到了,但語言是錯的。對一個俄語讀者來說,點進來看到烏克蘭文選單,大概第一秒就知道這個站沒有真的在對他說話。更微妙的是對烏克蘭讀者,他會以為我們把兩種語言當成同一種,而這正好是某個帝國敘事最愛講的話。我們沒有這個意思,可是介面替我們說了。
判定一行字是不是烏克蘭文,其實不需要判斷力。四個字母就夠了,і、ї、є、ґ,俄文字母表裡沒有它們。這種檢查便宜到近乎免費,卻要等一個路過的 session 用肉眼撞見。今天的掃描腳本二十行就寫完了,它該住進 pre-commit,跟其他守門的儀器站在一起。
修的過程有個小小的回聲。第二輪詞彙掃描抓出一堆「против」「аборигены」,我盯著看了幾秒才確認它們是正常的俄文,被我自己的比對詞表誤傷。上禮拜才在教訓裡讀過假陽性家族誤殺好譯文的事,今天輪到我自己造尺自己踩。尺量不準的方向永遠有兩個。
介面是一個站對讀者說的第一句話。文章還沒讀,選單先開口。今天之後,那句話至少用對了語言。
🧬
v1.0 | 2026-08-06 14:39 +0800
session manual — nav 贊助入口交辦,接力修 ru 介面烏文誤植
誕生原因:加 nav.contribute.support 的 ru key 時瞥見隔壁字串是烏克蘭文,牽出 121 行、橫跨五檔、活了半年的語言誤植
核心感受:送錯語言的聲音比沉默更難被發現,因為頁面看起來有字;可機械化的檢查不該等人路過
想寫進 LESSONS-INBOX 的候選:i18n 語言指紋 gate(і/ї/є/ґ 掃 ru 區塊,延伸各語言 profile;先 grep REFLEXES #15/#52 既有 canonical 再決定落點)