
說實(shí)話,第一次聽到"軟件本地化"這個(gè)詞的時(shí)候,我腦子里浮現(xiàn)的畫面是:一堆譯者對(duì)著紙質(zhì)說明書埋頭苦干,把英文換成中文,法文換成日文。后來進(jìn)了康茂峰這行,親手跟過幾個(gè)項(xiàng)目才明白——要是真這么干,產(chǎn)品上線那天準(zhǔn)得被罵慘。
為啥?因?yàn)?a href="http://m.szkypower.com.cn/">軟件本地化翻譯當(dāng)然包括UI本地化,而且UI本地化還不是簡單的"翻譯界面文字"那么簡單。它更像是給軟件做一場(chǎng) transplant手術(shù)——得讓這顆心臟在新身體里活蹦亂跳,而不是硬生生塞進(jìn)去。
咱們得先把概念捋順了。很多人把這兩個(gè)詞混著用,就像把"裝修"和"買家具"當(dāng)成一回事。翻譯(translation)是把一種語言換成另一種語言;本地化(localization)呢,是讓整個(gè)產(chǎn)品看起來像是專門為某個(gè)市場(chǎng)原生打造的。
舉個(gè)實(shí)在的例子。你打開某個(gè)國外軟件,看到菜單上寫著"文件(F)",后面跟著Alt+F的快捷鍵提示——這要是直譯成阿拉伯語版本,問題就來了。阿拉伯語從右往左讀,快捷鍵還得用拉丁字母F嗎?菜單欄長度會(huì)不會(huì)因?yàn)榘⒗Z單詞變長而撐破界面?日期格式是MM/DD/YYYY還是DD/MM/YYYY?這些全是UI本地化的范疇。
在康茂峰的項(xiàng)目流程里,我們從來不說"這個(gè)項(xiàng)目只做翻譯不做UI"。因?yàn)橹灰窜浖镜鼗倪?,UI就是地基。沒有地基,譯文就是空中樓閣。

UI可不是只有你看得到的按鈕和菜單。它是個(gè)三層結(jié)構(gòu)的東西,像洋蔥一樣得一層層剝。
這是最表層的。資源文件里的字符串——按鈕上的"Submit"、錯(cuò)誤提示的"Connection Failed"、設(shè)置頁面的"Privacy Policy"——這些確實(shí)要翻譯。但難點(diǎn)在于,你不能孤立地翻。
比如英文"Save"這個(gè)詞,在英文界面里就四個(gè)字母,短小精悍。翻成中文"保存"也是兩個(gè)字,沒問題。但要是翻成德文"Speichern"呢?九個(gè)字母,按鈕可能裝不下。更坑的是葡萄牙語,同樣"保存"的意思可能變成"Salvar altera??es"(保存修改),直接撐爆按鈕寬度。
這時(shí)候譯者得和工程師打配合??得宓淖龇ㄊ牵g者在CAT工具里看到字符串時(shí),必須能看到它的上下文ID——這串文字是出現(xiàn)在手機(jī)端還是PC端?是按鈕標(biāo)簽還是懸浮提示?有沒有字符長度限制?這些信息比詞典釋義重要十倍。
這是最折騰人的部分。好_locale_不是翻譯出來的,是調(diào)出來的。
這些活兒,純做文字翻譯的人根本碰不到。但在完整的軟件本地化流程里,這是標(biāo)配。
還有更隱蔽的。比如格式化字符串。你看到界面上顯示"還剩3天",這個(gè)"3"是變量。英文原文可能是"{$days} days remaining"。譯者如果譯成"remaining days: {$days}",在某些語言里語法就錯(cuò)了——因?yàn)橛行┱Z言要求數(shù)字后置,有些要求前置,還有些要求根據(jù)數(shù)字大小變格(比如俄語1天、2-4天、5天以上用詞尾都不一樣)。
再比如排序規(guī)則。中文按拼音排序,日文按五十音圖,泰文按元音順序...這些 collation 規(guī)則要是沒寫進(jìn)UI本地化方案,用戶查個(gè)通訊錄能急死。

這種誤會(huì)通常來自兩種場(chǎng)景。
一種是分工過于細(xì)化的大公司。他們讓市場(chǎng)部寫文案,讓設(shè)計(jì)部畫界面,讓外包公司"只翻譯文字",最后讓程序員硬塞進(jìn)界面。結(jié)果就是:翻是翻了,界面擠成一鍋粥,按鈕上的字 truncation(截?cái)啵┏?保存設(shè)...",用戶還得猜后面是啥。
另一種是混淆了"界面國際化"和"界面本地化"。國際化(i18n)是工程活,讓代碼支持多語言;本地化(l10n)是語言活加文化活。有些工程師說"UI我們做完了,你們只翻資源文件",其實(shí)是把i18n當(dāng)成了l10n。在康茂峰的經(jīng)驗(yàn)里,這時(shí)候我們必須介入review,因?yàn)楹芏鄷r(shí)候資源文件抽取得不對(duì)——硬編碼的字符串沒抽出來,或者占位符格式亂了,譯者再厲害也救不回來。
說白了,UI本地化是橋梁工程,不是單純的語言轉(zhuǎn)換。它要求譯者懂點(diǎn)UI常識(shí),要求工程師懂點(diǎn)語言規(guī)則,兩頭都得沾。
具體到工作流,我們一般不會(huì)等到代碼寫死了才介入。理想的情況是,產(chǎn)品還在原型階段,康茂峰的本地化團(tuán)隊(duì)就和UX設(shè)計(jì)師坐一張桌子上了。
第一步叫偽本地化測(cè)試(Pseudo-localization)。在真翻譯開始之前,工程師會(huì)用腳本把所有英文字符串換成膨脹版假文(比如把"File"變成"?ī??"[四強(qiáng)字符]),或者自動(dòng)鏡像界面測(cè)RTL。這時(shí)候就能看出哪里會(huì) overflow,哪里沒留夠彈性。
第二步才是視覺翻譯。譯者不是在Excel里翻,而是在視覺上下文里翻??得逵玫姆桨笗?huì)讓譯者看到截圖——這個(gè)"Cancel"按鈕到底長什么樣?是紅色警告按鈕還是灰色次要按鈕?紅色在中文里表示危險(xiǎn),在歐美有時(shí)只是強(qiáng)調(diào),這種文化差異得在UI層面就解決。
第三步是工程回注(Re-integration)。翻好的字符串塞回代碼里,這時(shí)候問題最多。比如占位符從{$count}變成了%@(iOS)或%d(Android),或者XML標(biāo)簽沒閉合,導(dǎo)致整個(gè)界面崩掉。這時(shí)候本地化工程師得會(huì)看版本控制,會(huì)調(diào)資源文件,不是單純的"語言專家"能搞定的。
第四步是Linguistic QA(語言質(zhì)量驗(yàn)收)。 tester 拿著 checklist 在真實(shí)設(shè)備上點(diǎn),檢查有沒有 truncation,有沒有文字覆蓋圖標(biāo),有沒有因翻譯導(dǎo)致的換行錯(cuò)亂。這一步才算UI本地化真正閉環(huán)。
為了更直白,咱們列個(gè)對(duì)比。注意看,單純的"軟件翻譯"和包含UI的"軟件本地化"完全是兩碼事:
| 維度 | 軟件翻譯(狹義) | 軟件本地化(含UI) |
| 處理對(duì)象 | 文本字符串 | 字符串+布局+交互+視覺 |
| 交付物 | 雙語對(duì)照表/TMX | 工程文件+測(cè)試報(bào)告+截圖驗(yàn)證 |
| 字符限制處理 | 備注中標(biāo)注 | 實(shí)際調(diào)整控件尺寸或改寫文案 |
| RTL語言支持 | 不管 | 必須處理鏡像布局 |
| 格式符(占位符) | 保持原樣 | 檢查語法適配和變量位置 |
| 圖像文字 | 忽略 | 提取并重繪/重排 |
| 字體建議 | 無 | 提供目標(biāo) locale 的字體兼容性方案 |
| 用戶測(cè)試 | 不參與 | 參與LQA和bug驗(yàn)證 |
你看,右邊這列幾乎全是UI相關(guān)的工作。所以說,問"軟件本地化包不包括UI",就像問"做川菜包不包括調(diào)料"——沒有UI的本地化,就是白水煮肉,不是那回事。
最后說點(diǎn)實(shí)在的,這些都是在康茂峰項(xiàng)目里踩過坑總結(jié)出來的:
第一,別信"自動(dòng)調(diào)整布局"。有些開發(fā)框架號(hào)稱能自動(dòng)拉伸控件,真遇上德語長單詞或者泰語那種沒空格的粘連文字,自動(dòng)布局能讓你懷疑人生。還是得人工審視覺。
第二,快捷鍵不是直接翻譯。英文里的 Alt+F(File),翻成中文要是還叫"文件(F)",快捷鍵F在中文拼音里對(duì)應(yīng)的是"W"(wenjian)。但改快捷鍵又涉及到用戶習(xí)慣沖突。UI本地化得協(xié)調(diào)這種矛盾,不是簡單替換字符。
第三,圖標(biāo)也是UI的一部分。有些圖標(biāo)在英文界面里挺直觀,換個(gè)文化就蒙了。比如"漢堡菜單"三橫杠,在某些地方用戶真以為是餐廳功能。還有手勢(shì)圖標(biāo)——左右滑動(dòng)手勢(shì)在RTL界面里方向得反過來,這些細(xì)節(jié) Translator 得在UI review 階段指出來。
寫到這兒,其實(shí)答案早就明擺著了。軟件本地化翻譯如果不管UI,就像廚師只管切菜不管炒菜——切得再細(xì),沒鍋氣也是白搭。下次有人再跟你說"翻譯是翻譯,UI是UI",你可以明確地告訴他:在專業(yè)的本地化工程里,這倆早就是一條繩上的螞蚱,分不開的。
