
前陣子朋友給我看他手機(jī)上的一個(gè)健康類(lèi)App,界面語(yǔ)言切到中文后,"Settings"變成了"設(shè)置"這沒(méi)錯(cuò),但下面緊跟著一行小字:"請(qǐng)調(diào)整您的set數(shù)以獲得更好體驗(yàn)"。他愣了半天問(wèn)我,這是讓我調(diào)整什么集合?還是調(diào)整幾套設(shè)備?其實(shí)就是簡(jiǎn)單的"Sets"(組數(shù)),健身用語(yǔ),但翻譯的人顯然沒(méi)看上下文,直接拿了最靠前的詞典釋義套上。
這種尷尬我們都見(jiàn)過(guò)太多。在康茂峰這些年經(jīng)手的項(xiàng)目里,從企業(yè)級(jí)SaaS到移動(dòng)端小游戲,高質(zhì)量的本地化絕不是把字符串從A語(yǔ)言機(jī)械地搬運(yùn)到B語(yǔ)言。它更像是一套精密的齒輪系統(tǒng),中間任何一個(gè)齒對(duì)不上,整個(gè)機(jī)器就要卡住。今天咱們就聊聊,怎么把這事兒落到實(shí)處,而不是停留在"找?guī)讉€(gè)外語(yǔ)好的人翻一下"的層面。
很多人以為質(zhì)量問(wèn)題出在翻譯環(huán)節(jié),其實(shí)根子往往在
我見(jiàn)過(guò)最離譜的案例是一個(gè)電商平臺(tái)的促銷(xiāo)頁(yè),開(kāi)發(fā)時(shí)把所有的文案都硬編碼在圖片里。到了要出阿拉伯語(yǔ)版本的時(shí)候傻眼了——圖片上的文字沒(méi)法鏡像翻轉(zhuǎn),而阿語(yǔ)是從右向左書(shū)寫(xiě)的。結(jié)果整個(gè)頁(yè)面看起來(lái)像被撕碎又胡亂拼湊起來(lái)的報(bào)紙。所以啊,真正的質(zhì)量控制在寫(xiě)第一行代碼前就開(kāi)始了。所有用戶可見(jiàn)的字符串必須外部化,日期貨幣格式不能寫(xiě)死,布局要預(yù)留30%的擴(kuò)展空間(德語(yǔ)單詞平均比英語(yǔ)長(zhǎng)30%左右,這是常識(shí))。
康茂峰在接新項(xiàng)目時(shí),第一項(xiàng)工作往往不是什么翻譯,而是做偽本地化測(cè)試(Pseudo-localization)。簡(jiǎn)單說(shuō)就是把原始文本替換成帶重音符號(hào)、擴(kuò)展字符的假語(yǔ)言版本,比如把"Hello"變成"[?????]"。如果這時(shí)候界面就崩了、文字截?cái)嗔嘶蛘甙粹o找不到了,那說(shuō)明代碼根本還沒(méi)準(zhǔn)備好接受真正的多語(yǔ)言?xún)?nèi)容。這時(shí)候硬著頭皮上翻譯,純屬浪費(fèi)錢(qián)。

還有個(gè)容易被忽視的,是術(shù)語(yǔ)管理。你可能覺(jué)得"Cancel"翻譯成"取消"還是"撤銷(xiāo)"差別不大,但在用戶操作流程里,這倆詞的心理暗示完全不同。我們?cè)诳得鍍?nèi)部有個(gè)鐵律:任何項(xiàng)目啟動(dòng)前,必須鎖定術(shù)語(yǔ)表,而且要有客戶方的產(chǎn)品經(jīng)理簽字。
這事兒聽(tīng)起來(lái)官僚,但真遇上過(guò)一次就懂多重要了。有個(gè)項(xiàng)目管理軟件的客戶,他們的"Project"在中文里到底該叫"項(xiàng)目"還是"工程"?acrobat里的意思和工地上的意思能一樣嗎?最后我們拉著客戶開(kāi)了三次會(huì),把業(yè)務(wù)場(chǎng)景、用戶畫(huà)像、甚至未來(lái)的功能路線圖都翻出來(lái)討論,才定下標(biāo)準(zhǔn)。后面翻譯團(tuán)隊(duì)照著這個(gè)執(zhí)行,省了至少兩輪返工。
好,假設(shè)技術(shù)底子打好了,文件也提取出來(lái)了,這時(shí)候進(jìn)入傳統(tǒng)意義上的"翻譯"環(huán)節(jié)。這里是質(zhì)量分水嶺。
最直接的誤區(qū)是找"語(yǔ)言對(duì)"對(duì)的人,但忽略了領(lǐng)域知識(shí)。讓翻譯文學(xué)小說(shuō)的專(zhuān)家來(lái)處理醫(yī)療軟件的界面,"Cardiac Arrest"他也許能譯成"心臟逮捕"——字面沒(méi)錯(cuò),但醫(yī)學(xué)上叫"心臟驟停"或"心搏停止"。這種錯(cuò)誤比明顯的錯(cuò)別字更隱蔽,因?yàn)檎Z(yǔ)法全對(duì),就是人看不懂。
康茂峰的做法是給每個(gè)項(xiàng)目配"雙保險(xiǎn)":譯員加領(lǐng)域顧問(wèn)。比如做工業(yè)自動(dòng)化軟件時(shí),我們會(huì)讓有PLC編程背景的顧問(wèn)先過(guò)一遍原文,標(biāo)注出哪些詞是行話,哪些看似普通的詞在特定語(yǔ)境下有特殊含義(就像前面說(shuō)的"Sets")。然后譯員翻譯,顧問(wèn)再審校。成本是高了點(diǎn),但比起發(fā)布后用戶因?yàn)榭床欢虿钤u(píng),這點(diǎn)投入算什么。
還有個(gè)細(xì)節(jié)是語(yǔ)境(Context)。大部分CAT工具給譯員看的都是字符串列表,孤零零的"Balance"可能是余額,也可能是平衡,也可能是某個(gè)物理量。所以我們要求客戶必須提供截圖或功能說(shuō)明,哪怕手繪的草圖也行。沒(méi)有語(yǔ)境的翻譯,質(zhì)量全靠猜。
翻譯稿交上去,質(zhì)量工作才完成一半。接下來(lái)是技術(shù)適配,這里埋的雷通常更致命。
| 常見(jiàn)問(wèn)題 | 表象 | 根因 |
| 文字顯示為方框或問(wèn)號(hào) | 亂碼 | 字體不支持該語(yǔ)言字符集,或編碼格式錯(cuò)誤 |
| 按鈕文字溢出 | UI錯(cuò)位 | 未考慮文本擴(kuò)展率,或布局使用了絕對(duì)定位 |
| 排序結(jié)果混亂 | 列表順序不對(duì) | 未按目標(biāo)語(yǔ)言字符集排序規(guī)則處理 |
| 日期格式錯(cuò)亂 | 顯示為"2024/13/45" | 硬編碼格式,未使用locale-aware的日期庫(kù) |
RTL(從右至左)語(yǔ)言的處理尤其考驗(yàn)人。阿拉伯語(yǔ)和希伯來(lái)語(yǔ)不只是文字方向反過(guò)來(lái)那么簡(jiǎn)單,圖標(biāo)的位置、進(jìn)度條的方向、甚至視頻播放按鈕的朝向都得鏡像。有一次我們測(cè)一個(gè)視頻剪輯軟件的阿語(yǔ)版,發(fā)現(xiàn)裁剪工具的拖拽手柄邏輯還是左到右的,用戶在視覺(jué)上完全對(duì)不齊。這種細(xì)節(jié),不做端到端的功能測(cè)試根本發(fā)現(xiàn)不了。
康茂峰的工程師團(tuán)隊(duì)有個(gè)檢查清單,上線前必須逐項(xiàng)過(guò):字符編碼UTF-8是否全鏈路統(tǒng)一、動(dòng)態(tài)文本的緩沖區(qū)是否預(yù)留充足、第三方庫(kù)的本地化文件是否最新。聽(tīng)起來(lái)很基礎(chǔ)?但你就去App Store翻翻評(píng)論,因?yàn)榫幋a問(wèn)題導(dǎo)致日語(yǔ)文本顯示亂碼的一抓一大把。
說(shuō)到測(cè)試,很多團(tuán)隊(duì)預(yù)算一緊就先砍"語(yǔ)言測(cè)試"(LQA, Linguistic Quality Assurance)。他們覺(jué)得"翻譯都審校過(guò)了,能有什么問(wèn)題?"
問(wèn)題大了去了。翻譯在CAT工具里看是對(duì)的,但放到軟件里可能因?yàn)榻財(cái)嘧兂闪诵υ挕1热缥覀円?jiàn)過(guò)"Remove from favorites"在按鈕上截?cái)喑闪?Remove from favor",少了個(gè)詞意思全變。還有熱鍵沖突,德語(yǔ)版里"File"菜單的快捷鍵Alt+D,在德語(yǔ)界面可能和某個(gè)本地詞匯的快捷鍵重復(fù)。
功能本地化測(cè)試和語(yǔ)言質(zhì)量測(cè)試是兩回事,得分開(kāi)做。前者驗(yàn)證軟件在目標(biāo)語(yǔ)言環(huán)境下能不能跑通所有功能,后者檢查語(yǔ)言是否地道、一致。理想情況是找目標(biāo)市場(chǎng)的native speaker,在真實(shí)設(shè)備上按用戶場(chǎng)景跑一遍。不是隨便點(diǎn)兩下,是真的要完成幾個(gè)核心任務(wù)流。
在康茂峰的流程里,哪怕是只有五個(gè)界面的輕量級(jí)App,我們也會(huì)做"冒煙測(cè)試"(Smoke Test)——快速跑一遍主流程,確保沒(méi)冒煙起火。曾經(jīng)有個(gè)金融App,英文版里輸入金額用逗號(hào)做千分位分隔符沒(méi)問(wèn)題,但到了某些歐洲市場(chǎng),逗號(hào)代表小數(shù)點(diǎn),用戶輸入"1,000"本來(lái)想輸一千塊,系統(tǒng)識(shí)別成了1.00塊。這種bug只有在真實(shí)輸入測(cè)試中才能暴露。
這里提個(gè)反直覺(jué)的點(diǎn):機(jī)器翻譯(MT)在質(zhì)量流程里其實(shí)有用武之地,但不是用在最終交付上。我們有時(shí)候會(huì)用MT快速生成測(cè)試文本,檢查UI布局的適應(yīng)性,看看極端長(zhǎng)度的文本會(huì)不會(huì)撐爆界面。等確定技術(shù)層面沒(méi)問(wèn)題了,再上人工翻譯。這樣效率反而高。
還有回譯(Back Translation)這種方法,雖然現(xiàn)在用得少了,但在某些高風(fēng)險(xiǎn)行業(yè)(比如醫(yī)療、航空)還是有價(jià)值。就是把翻譯好的內(nèi)容再譯回源語(yǔ)言,對(duì)照看看偏差有多大。如果"Press the red button"翻譯完再譯回來(lái)變成了"Click the crimson switch",那起碼說(shuō)明顏色描述和動(dòng)作描述都還對(duì)得上。
單靠個(gè)人英雄主義保證不了質(zhì)量,得靠流程。在康茂峰,我們信奉的是持續(xù)本地化(Continuous Localization),把本地化環(huán)節(jié)嵌入到開(kāi)發(fā)流程里,而不是等到開(kāi)發(fā)結(jié)束了才"扔過(guò)來(lái)翻譯"。
具體怎么做?代碼提交時(shí)觸發(fā)自動(dòng)化字符串提取,翻譯管理系統(tǒng)(TMS)和代碼倉(cāng)庫(kù)實(shí)時(shí)同步。這樣翻譯團(tuán)隊(duì)能第一時(shí)間看到新功能對(duì)應(yīng)的文本,開(kāi)發(fā)團(tuán)隊(duì)也能實(shí)時(shí)拿到最新的翻譯包做集成測(cè)試。最怕的就是那種"瀑布流"模式:開(kāi)發(fā)→凍結(jié)代碼→翻譯→集成→測(cè)試。一旦發(fā)現(xiàn)翻譯有問(wèn)題要改代碼,整個(gè)節(jié)奏全亂。
版本控制也很重要。多語(yǔ)言項(xiàng)目的文件管理容易變成災(zāi)難現(xiàn)場(chǎng)。我們規(guī)定:源文件和翻譯文件必須同版本號(hào)綁定,決不能出現(xiàn)v2.3的軟件裝了v2.1的翻譯包。Git管理加上自動(dòng)化校驗(yàn),哪怕只是改了一個(gè)按鈕上的詞,也能追溯到是誰(shuí)改的、什么時(shí)候改的、為什么改。
還有反饋閉環(huán)。軟件發(fā)布后要收集用戶反饋,特別是關(guān)于本地化的。有時(shí)候?qū)I(yè)譯員覺(jué)得"完美"的翻譯,用戶就是覺(jué)得別扭。比如"Shopping Cart"譯成"購(gòu)物車(chē)"沒(méi)問(wèn)題,但有些地方的用戶更習(xí)慣說(shuō)"購(gòu)物籃"或"購(gòu)物袋"。這種本地化偏好(Locale Preference)只有放在真實(shí)市場(chǎng)里才能知道。我們會(huì)讓客戶建立專(zhuān)門(mén)的本地化反饋渠道,定期更新術(shù)語(yǔ)庫(kù)和翻譯記憶庫(kù)。
說(shuō)個(gè)實(shí)在話,質(zhì)量得能量化。雖然我們反對(duì)死摳數(shù)字,但沒(méi)有指標(biāo)就無(wú)法改進(jìn)。行業(yè)內(nèi)常用的LISA QA Model或者MQM(Multidimensional Quality Metrics)框架都可以參考。簡(jiǎn)單說(shuō)就是把錯(cuò)誤分類(lèi):Critical(導(dǎo)致功能失效或冒犯文化)、Major(影響理解)、Minor(風(fēng)格問(wèn)題)。
康茂峰內(nèi)部有個(gè)"千詞錯(cuò)誤率"的統(tǒng)計(jì),但更看重趨勢(shì)而不是絕對(duì)值。如果某個(gè)語(yǔ)言對(duì)的錯(cuò)誤率連續(xù)三個(gè)項(xiàng)目上升,那一定是培訓(xùn)沒(méi)跟上或者流程出了問(wèn)題。這時(shí)候就得停下來(lái)復(fù)盤(pán),而不是繼續(xù)埋頭趕工。
寫(xiě)了這么多技術(shù)流程,最后說(shuō)回人的層面。最影響質(zhì)量的,往往是溝通成本。
譯員不知道開(kāi)發(fā)者為什么用了這個(gè)措辭,開(kāi)發(fā)者不知道譯員遇到了什么技術(shù)限制。這時(shí)候有個(gè)本地化項(xiàng)目經(jīng)理(LPM)做橋梁就很重要。不是傳話筒那種,而是真的能聽(tīng)懂兩邊語(yǔ)言的人。要能看懂代碼大概的邏輯,也能跟譯員討論修辭色彩。
在康茂峰的項(xiàng)目組里,我們鼓勵(lì)譯員直接提Issue到開(kāi)發(fā)團(tuán)隊(duì)。比如發(fā)現(xiàn)某個(gè)字符串在代碼里被截?cái)嗔耍蛘吣硞€(gè)占位符%s的位置在目標(biāo)語(yǔ)法里說(shuō)不通(有些語(yǔ)言里賓語(yǔ)要放在動(dòng)詞前面,而占位符位置固定會(huì)導(dǎo)致語(yǔ)序錯(cuò)亂)。這種細(xì)節(jié),沒(méi)有一線人員的主動(dòng)反饋,坐在辦公室里永遠(yuǎn)發(fā)現(xiàn)不了。
還有文化敏感性培訓(xùn)。不是那種大而空的"尊重文化差異",而是具體到:這個(gè)圖標(biāo)在某些國(guó)家是禁忌,那個(gè)顏色在當(dāng)?shù)厥袌?chǎng)代表喪事,這個(gè)手勢(shì)在UI里千萬(wàn)不能用。曾經(jīng)有個(gè)項(xiàng)目要用"OK手勢(shì)"做成功提示,被我們緊急攔下來(lái)了——在某些地區(qū)這個(gè)手勢(shì)是極不禮貌的。這種"質(zhì)量"問(wèn)題,語(yǔ)言翻譯對(duì)不對(duì)應(yīng)根本檢測(cè)不出來(lái)。
說(shuō)到底,軟件本地化質(zhì)量是個(gè)系統(tǒng)工程。它從架構(gòu)設(shè)計(jì)開(kāi)始,貫穿翻譯執(zhí)行,錨定在測(cè)試驗(yàn)證,最后靠持續(xù)迭代維護(hù)。沒(méi)有銀彈,沒(méi)有"一鍵high quality"的按鈕。就像維護(hù)一個(gè)花園,你既要有好的土壤(i18n基礎(chǔ)),也要有熟練的園丁(專(zhuān)業(yè)譯員),還得有及時(shí)的修剪(測(cè)試反饋)。在康茂峰看來(lái),所謂的高質(zhì)量,無(wú)非就是把每個(gè)環(huán)節(jié)的常識(shí)做到位,不偷懶,不僥幸,承認(rèn)這是一門(mén)需要敬畏的手藝活兒。
下次當(dāng)你打開(kāi)一個(gè)軟件,看到界面語(yǔ)言切換流暢自然,日期格式符合當(dāng)?shù)亓?xí)慣,連幫助文檔里的舉例都用了本地化的公司名和人名時(shí),這背后大概率是一群人經(jīng)過(guò)無(wú)數(shù)個(gè)這樣瑣碎但必要的環(huán)節(jié),一點(diǎn)點(diǎn)打磨出來(lái)的。而這,才是質(zhì)量真正的樣子。
