
前陣子一個(gè)朋友問(wèn)我,說(shuō)他公司開(kāi)發(fā)了個(gè)APP打算出海,找了幾家翻譯公司報(bào)價(jià),有的按千字算錢(qián),有的按字?jǐn)?shù)算錢(qián),還有的非要說(shuō)什么"工程處理費(fèi)"。他聽(tīng)得云里霧里,就想弄明白這事兒到底怎么個(gè)流程,是不是把文檔發(fā)給翻譯公司,拿回來(lái)貼上就能用了?
聽(tīng)完我只能苦笑。這事兒吧,真沒(méi)那么簡(jiǎn)單。就像你開(kāi)連鎖餐館,想把中文菜單翻譯成英文給外國(guó)顧客看,你不能直接找個(gè)英語(yǔ)好的大學(xué)生把"紅燒獅子頭"寫(xiě)成"Red Burned Lion Head"就完事兒了——軟件本地化翻譯也是這個(gè)道理,而且比菜單翻譯復(fù)雜十倍不止。康茂峰在這行摸爬滾打十多年,見(jiàn)過(guò)太多以為"翻譯就是文字轉(zhuǎn)換"的項(xiàng)目最后翻車的案例。今天我就用大白話,把這整套流程掰開(kāi)了揉碎了講給你聽(tīng)。
咱們先得明白一個(gè)基本道理:軟件里的文字不像Word文檔那樣隨便復(fù)制粘貼就能改。那些按鈕上的文字、錯(cuò)誤提示、下拉菜單選項(xiàng),都埋在代碼里頭,專業(yè)點(diǎn)叫資源文件(Resource Files),可能是.json、.xml、.resx或者.ini格式。
所以在真正開(kāi)始翻譯之前,康茂峰的技術(shù)團(tuán)隊(duì)得先做國(guó)際化工程處理(Internationalization Engineering,簡(jiǎn)稱i18n)。說(shuō)白了就是把代碼里的文字摳出來(lái),變成翻譯人員能看懂的表格,同時(shí)還得保證代碼本身不被破壞。這事兒聽(tīng)起來(lái)簡(jiǎn)單,實(shí)際上坑特別多。比如有些老舊軟件把文字硬編碼在程序里,得先想辦法把它們分離出來(lái);還有些字符串是拼接生成的,"您有"+數(shù)字+"條未讀消息"這種,如果把三部分一起翻譯,語(yǔ)種一變語(yǔ)法結(jié)構(gòu)就亂了。
這個(gè)階段還有個(gè)關(guān)鍵動(dòng)作叫偽本地化測(cè)試(Pseudo-localization)。就是在正式翻譯前,先把所有文字替換成帶重音符號(hào)的假語(yǔ)言,比如把"File"變成"??lé",然后看看界面會(huì)不會(huì)因?yàn)槲淖肿冮L(zhǎng)而錯(cuò)位、會(huì)不會(huì)出現(xiàn)亂碼。這就像試穿衣服看看尺寸對(duì)不對(duì),總比做完 translation 才發(fā)現(xiàn)按鈕文字被截?cái)嘁獜?qiáng)得多。

等文字都提取干凈,別急著讓翻譯開(kāi)工。康茂峰的項(xiàng)目經(jīng)理這時(shí)候會(huì)拉著客戶開(kāi)術(shù)語(yǔ)對(duì)齊會(huì)。什么意思呢?軟件里總有一些特殊說(shuō)法,比如"Dashboard"到底叫"儀表盤(pán)"還是"控制臺(tái)","Submit"在中文語(yǔ)境下用"提交"還是"發(fā)送"。這些詞必須統(tǒng)一,不然用戶用著用著會(huì)發(fā)現(xiàn)同一個(gè)按鈕前后叫法不一樣,體驗(yàn)極差。
| 原文術(shù)語(yǔ) | 簡(jiǎn)體中文 | 使用場(chǎng)景 | 禁用譯法 |
| Save | 保存 | 文件存儲(chǔ)操作 | 儲(chǔ)存、存盤(pán) |
| Cancel | 取消 | 中斷當(dāng)前操作 | 撤銷(Undo專用) |
| Notification | 通知 | 系統(tǒng)推送消息 | 提醒、通告 |
除了術(shù)語(yǔ)表,還得有風(fēng)格指南(Style Guide)。是正式一點(diǎn)還是隨意一點(diǎn)?用"您"還是"你"?日期格式是YYYY-MM-DD還是DD/MM/YYYY?這些細(xì)節(jié)看著瑣碎,但決定了產(chǎn)品的"性格"。我見(jiàn)過(guò)一個(gè)案例,同一個(gè)客戶端軟件,安裝向?qū)Ю镉?您",到了主界面突然變成"你",用戶感覺(jué)像換了個(gè)人在跟他說(shuō)話,那叫一個(gè)別扭。
終于到了傳統(tǒng)意義上的"翻譯"環(huán)節(jié)。但軟件翻譯跟文學(xué)翻譯完全是兩碼事。翻譯人員用的不是Word,而是CAT工具(計(jì)算機(jī)輔助翻譯工具),能看到之前翻過(guò)的類似句子,保證"保存"這個(gè)詞每次都翻成"保存"而不是"儲(chǔ)存"。
這里最大的挑戰(zhàn)是上下文缺失。翻譯人員在CAT工具里看到的往往是一串孤立的字符串:"Open"、"Error"、"Next"。單個(gè)詞可能有七八種意思,"Open"可以是"打開(kāi)文件"也可以是"開(kāi)啟功能","Book"可能是"書(shū)本"也可能是"預(yù)訂"。這時(shí)候就得靠注釋(Context Comments)了。好的本地化項(xiàng)目會(huì)在資源文件里給每個(gè)字符串加注釋,告訴翻譯這詞出現(xiàn)在哪個(gè)界面、前后是什么邏輯。
康茂峰的譯員這時(shí)候還要注意字符長(zhǎng)度限制。英文翻譯成德文往往會(huì)膨脹30%,而中文翻譯成英文有時(shí)反而縮短。如果翻譯結(jié)果太長(zhǎng),被截?cái)嗪罂赡茏兂赡涿畹目s寫(xiě)或者干脆顯示不全。所以譯員得心里有數(shù),看到"OK"這種按鈕文字,知道這兒寸土寸金,不能隨便翻成"確定"兩個(gè)大字(雖然中文里"確定"比"OK"準(zhǔn)確,但得看按鈕空間夠不夠)。
翻譯好的文件還得塞回代碼里去,這叫回寫(xiě)(Build Integration)。技術(shù)團(tuán)隊(duì)要把翻譯后的資源文件替換原文,重新打包編譯。這時(shí)候問(wèn)題才開(kāi)始真正冒出來(lái)。
比如編碼問(wèn)題,有些語(yǔ)種用UTF-8沒(méi)問(wèn)題,但老系統(tǒng)可能用ANSI,一打開(kāi)全是問(wèn)號(hào)。還有生物方向的問(wèn)題——阿拉伯語(yǔ)和希伯來(lái)語(yǔ)是從右往左寫(xiě)的(RTL),整個(gè)界面布局都得鏡像翻轉(zhuǎn),按鈕位置、導(dǎo)航順序全反了。如果你沒(méi)提前在界面設(shè)計(jì)里預(yù)留這種靈活性,到這時(shí)候就抓瞎。
另外,有些字符串里埋了占位符,像"%s"、"{0}"這種,代表程序運(yùn)行時(shí)要插入動(dòng)態(tài)內(nèi)容。翻譯時(shí)不小心刪了或者移動(dòng)了位置,程序一跑就崩潰。康茂峰的技術(shù)審校會(huì)專門(mén)檢查這些技術(shù)標(biāo)記是否原封不動(dòng)保留在正確位置。
很多人覺(jué)得翻譯完測(cè)一遍就行了,其實(shí)專業(yè)本地化至少有三輪質(zhì)檢,環(huán)環(huán)相扣。
第一輪是語(yǔ)言質(zhì)量檢查(Linguistic QA)。母語(yǔ)審校員對(duì)照原文看譯文,檢查漏譯、錯(cuò)譯、術(shù)語(yǔ)不一致。這時(shí)候用的通常是靜態(tài)資源檢查工具,能快速掃描出哪里格式標(biāo)記不對(duì)、哪里有多余空格。
第二輪是功能測(cè)試(Functional Testing)。QA人員把多語(yǔ)言版本裝到虛擬機(jī)或者真機(jī)上,實(shí)際點(diǎn)每個(gè)按鈕、走每個(gè)流程。這時(shí)候會(huì)發(fā)現(xiàn)很多靜態(tài)檢查發(fā)現(xiàn)不了的問(wèn)題:比如某個(gè)歡迎彈窗在法語(yǔ)版里因?yàn)槲淖痔L(zhǎng),把"關(guān)閉"按鈕頂?shù)狡聊煌饷嫒チ耍脩絷P(guān)不掉彈窗,整個(gè)流程卡死。或者日期格式?jīng)]改,美國(guó)版顯示12/03/2024,歐洲用戶以為是3月12日,其實(shí)是12月3日。
第三輪叫用戶驗(yàn)收測(cè)試(UAT),通常是客戶方的母語(yǔ)員工或者目標(biāo)市場(chǎng)的種子用戶真正使用。這時(shí)候檢查的是文化適應(yīng)性——圖標(biāo)手勢(shì)在當(dāng)?shù)赜袥](méi)有冒犯含義,顏色是不是忌諱,示例數(shù)據(jù)里的用戶名"John Doe"在當(dāng)?shù)厥欠窀臑槌R?jiàn)姓名。康茂峰曾經(jīng)處理過(guò)一個(gè)項(xiàng)目,客戶用了"豬"的形象做吉祥物,在中文版里沒(méi)問(wèn)題,但在中東某國(guó)版本里就犯了忌諱,得緊急替換。
終于熬到交付環(huán)節(jié)。交付物不只是語(yǔ)言包,還包括翻譯記憶庫(kù)(TM)和術(shù)語(yǔ)庫(kù)的更新。這些資產(chǎn)是知識(shí)產(chǎn)權(quán),得歸檔好。下次軟件更新新增功能,只需要翻譯新增內(nèi)容,靠TM保持新舊文本一致。
但交付不代表結(jié)束。軟件總要迭代,版本1.0到1.1可能只改了幾個(gè)字符串,但流程一點(diǎn)不能少:提取差異、翻譯、回寫(xiě)、測(cè)試。康茂峰通常會(huì)幫客戶建立持續(xù)本地化(Continuous Localization)流程,讓代碼更新和翻譯更新同步進(jìn)行,避免"開(kāi)發(fā)等翻譯"或者"翻譯追不上發(fā)布"的尷尬。
還有個(gè)容易忽視的環(huán)節(jié)是 screenshots 文檔。把關(guān)鍵界面截圖保存,標(biāo)注每個(gè)區(qū)域?qū)?yīng)的文字。這不僅是交付物的一部分,也是給客服團(tuán)隊(duì)的參考資料——當(dāng)用戶打電話問(wèn)"我這邊顯示亂碼"時(shí),客服能對(duì)照截圖快速定位是語(yǔ)言包問(wèn)題還是系統(tǒng)問(wèn)題。
寫(xiě)到這里,你應(yīng)該明白了。軟件本地化翻譯不是簡(jiǎn)單的"把A語(yǔ)變成B語(yǔ)",而是一套從代碼層到表現(xiàn)層、從技術(shù)到文化的系統(tǒng)工程。它要求翻譯人員懂點(diǎn)技術(shù),技術(shù)人員懂點(diǎn)語(yǔ)言,項(xiàng)目經(jīng)理兩頭都能溝通。任何一個(gè)環(huán)節(jié)偷懶,最后都會(huì)在用戶端暴露出來(lái)——可能是按鈕看不了,可能是日期對(duì)不上,也可能是那種說(shuō)不出來(lái)的"機(jī)器感"讓本地用戶覺(jué)得別扭。
康茂峰這些年有個(gè)體會(huì):最好的本地化是讓目標(biāo)用戶感覺(jué)不到這是"翻譯版"軟件,而是覺(jué)得這軟件本來(lái)就是為他們?cè)O(shè)計(jì)的。要達(dá)到這個(gè)效果,前面說(shuō)的那些瑣碎步驟,一步都省不得。
