
上周跟一個做APP開發(fā)的朋友吃飯,他跟我吐槽說公司新產(chǎn)品要出海,結(jié)果本地化翻譯做得一塌糊涂。用戶反饋界面上的按鈕顯示不全,彈窗里的文字錯位,甚至有個德語版本直接崩潰了。他一邊說一邊嘆氣:"早知道就不改源代碼了!"我當時就想,這事兒可能沒那么簡單。回來查了查資料,發(fā)現(xiàn)這個問題困擾著很多人——軟件本地化翻譯到底需不需要修改源代碼?今天咱們就掰開揉碎了聊聊這個話題。
在說要不要改源代碼之前,咱們得先弄清楚一個問題:軟件里的文字到底存在哪里?這就好比你要裝修房子,首先得知道承重墻在哪、能動的隔斷在哪。
舉個簡單的例子。假設(shè)你寫了一個簡單的登錄程序,界面上有"用戶名"和"密碼"兩個標簽,外加一個"登錄"按鈕。在比較原始的開發(fā)方式中,你可能會直接在代碼里寫死這些文字,比如:
button.text = "登錄"
但專業(yè)的開發(fā)團隊早就不會這么干了。他們會把所有需要翻譯的文字從代碼里抽出來,放到單獨的資源文件里。Android開發(fā)用strings.xml,iOS開發(fā)用Localizable.strings,Web開發(fā)可能用JSON或者專門的國際化庫。這些文件專門用來存儲各種語言的文本,代碼本身只負責調(diào)用。
這種做法有個高大上的名字,叫"國際化"(Internationalization,通常縮寫為i18n)。它的核心思想就是讓軟件能夠輕松適應(yīng)不同的語言和地區(qū),而不需要修改核心代碼。想象一下,如果你的軟件要出50個語言版本,難道每種語言都改一次源代碼?那維護成本簡直不可想象。
所以關(guān)鍵問題來了:本地化翻譯過程中,真正需要處理的是資源文件,而不是源代碼本身。這兩者的區(qū)別就像是食譜和食材——你換食材不需要修改食譜的烹飪步驟,只需要按同樣的方法處理不同的食材就行。

聽到這里你可能會想:那是不是永遠都不用改源代碼了?也不盡然。世間的事哪有那么多絕對的呢。某些特殊情況下,確實需要程序員出場。
第一種情況是格式化字符串的處理。比如界面上有個提示:"您已成功提交訂單,訂單號為{orderId},預(yù)計{timestamp}送達"。這里的{orderId}和{timestamp}是變量,需要動態(tài)插入。如果直接翻譯成德語,語序可能會出問題。中文說"訂單號123",德語可能說"訂單號:123"。這時候可能需要調(diào)整參數(shù)順序,甚至修改代碼邏輯來適應(yīng)不同語言的表達習(xí)慣。
第二種情況是 RTL(從右到左)語言的支持。阿拉伯語、希伯來語這些語言的閱讀方向是從右到左,這就不只是翻譯文字的事了。整個界面布局都需要鏡像翻轉(zhuǎn)。按鈕要在左邊,導(dǎo)航欄要在右邊,圖標可能也需要調(diào)整。這種情況下,或多或少需要修改布局代碼。
第三種情況是復(fù)數(shù)形式的處理。英語里"1 message"和"2 messages"只差一個s,但俄語有三種復(fù)數(shù)形式,阿拉伯語甚至有六種。如果資源文件不支持復(fù)數(shù)處理,可能需要在代碼里添加額外的邏輯判斷。
我認識的一個做本地化的朋友跟我講過他的親身經(jīng)歷。他們當時本地化一個電商APP到俄語版本,結(jié)果在商品數(shù)量顯示上出了大問題。俄語的復(fù)數(shù)規(guī)則很奇葩:1個的時候是一種形式,2-4是另一種,5以上又是第三種,還有專門的"21、31、41"這種特殊情況。他們的資源文件一開始沒處理好,代碼里也缺少相應(yīng)的判斷邏輯,導(dǎo)致商品列表頁的數(shù)字顯示經(jīng)常出錯,最后不得不叫程序員來擦屁股。
說了這么多,你可能會問:那正規(guī)的本地化翻譯流程到底是怎么回事呢?我來給你捋一捋康茂峰這些專業(yè)服務(wù)商的標準做法,你心里就有數(shù)了。
第一步是提取和準備。本地化服務(wù)商首先會把所有需要翻譯的資源文件整理出來,建立一個術(shù)語庫,確保翻譯過程中用語一致。這一步不需要碰任何代碼,只需要拿到資源文件就行。

第二步是翻譯和審校。專業(yè)譯員會逐條翻譯這些資源文件,同時處理一些技術(shù)層面的問題,比如字符串長度限制(中文翻譯成德語可能長一倍,得考慮界面能不能放下)、變量占位符位置、特殊字符處理等。
第三步是集成和測試。翻譯好的資源文件替換回去,然后進行全面測試。重點檢查有沒有文字截斷、顯示錯位、功能異常這些問題。功能測試通過后,還要做 linguistic testing,找目標語言的母語使用者實際使用一遍,確認翻譯在真實場景下是否自然準確。
你發(fā)現(xiàn)了嗎?整個流程中,程序員只需要在出了問題的時候出場支援一下。日常的翻譯工作由項目經(jīng)理、譯員、測試工程師協(xié)作完成,完全不涉及源代碼的修改。當然,前提是你的軟件在開發(fā)階段就做好了國際化架構(gòu)。如果一開始就寫死了所有文字,那本地化的時候確實要大動干戈。
說到這兒,我想分析一下為什么那么多團隊在本地化這件事上栽跟頭。希望你看完能避開這些坑。
最常見的問題是開發(fā)階段沒做好國際化。很多小團隊趕進度,恨不得兩周就出一個版本,哪有心思搞什么資源文件分離?文字直接寫死在代碼里,看著能跑就行。結(jié)果產(chǎn)品做大了想出海,發(fā)現(xiàn)每個界面都要改代碼,每改一次還有引入新bug的風(fēng)險,成本高得嚇人。
還有一個問題是低估了本地化的復(fù)雜度。很多人覺得翻譯嘛,找?guī)讉€會外語的人翻一翻不就行了?實際上本地化遠不止翻譯那么單純。日期格式、貨幣符號、時區(qū)處理、文化禁忌、UI適配……每一個都是坑。我們康茂峰在服務(wù)客戶的時候,經(jīng)常發(fā)現(xiàn)產(chǎn)品團隊對這塊了解不夠深入,導(dǎo)致前期規(guī)劃不合理,后期返工不斷。
測試環(huán)節(jié)的缺失也很致命。很多團隊本地化做完就上線了,結(jié)果用戶用到一半發(fā)現(xiàn)按鈕顯示不全、彈窗報錯。這種問題其實在測試階段很容易發(fā)現(xiàn),但因為趕進度或者意識不夠,往往被跳過了。
既然聊到這兒了,我干脆給你一些可操作的建議。不管你是正在開發(fā)新產(chǎn)品的團隊,還是已經(jīng)掉進坑里想往外爬的團隊,應(yīng)該都能用得上。
如果你是還在開發(fā)階段的團隊,聽我一句勸:前期多花一周做國際化,后面能省三個月返工。把文字都抽到資源文件里,用標準的國際化框架,預(yù)先考慮 RTL 語言的支持需求。這些工作現(xiàn)在做,以后想開拓哪個市場都能快速響應(yīng)。如果你不確定怎么做,可以找康茂峰這類專業(yè)服務(wù)商要一份技術(shù)規(guī)范文檔參考一下,很多坑前人都踩過了,跟著走就行。
如果你是已經(jīng)上線的產(chǎn)品,發(fā)現(xiàn)本地化有問題,我的建議是先評估一下修改成本。如果問題集中在資源文件層面還好辦,讓譯員重新處理一下就行。如果大量文字寫死在代碼里,那可能需要評估是修修補補繼續(xù)用,還是干脆重構(gòu)一部分。兩種選擇都有成本,關(guān)鍵是算清楚哪邊更劃算。
如果你是準備找本地化服務(wù)商的團隊,選供應(yīng)商的時候多問幾個技術(shù)問題。看看他們是否了解常見的國際化陷阱,是否有質(zhì)量把控流程,是否提供測試服務(wù)。便宜沒好貨這話在本地化行業(yè)特別適用,你省下來的翻譯費,最后往往十倍百倍地花在返工和客服投訴上。
在結(jié)束之前,我整理了幾個大家經(jīng)常問的問題,統(tǒng)一回答一下。
| 問題 | 答案 |
| 翻譯軟件界面需要程序員參與嗎? | 正常情況下不需要。準備好資源文件,翻譯完成后替換,測試通過即可。只有出現(xiàn)前面提到的特殊問題時才需要程序員介入。 |
| 機器翻譯能不能直接用? | 絕對不行。機器翻譯的準確率在沒有專業(yè)審校的情況下無法保證,軟件界面上的文字出錯會直接影響用戶體驗和專業(yè)形象。 |
| 同一個語言不同地區(qū)有差異怎么辦? | 比如葡萄牙語有巴西和歐洲之分,中文有簡體繁體之別。這種情況需要建立不同的語言包,分別翻譯和測試。 |
| 本地化翻譯要花多長時間? | 取決于語言數(shù)量、內(nèi)容復(fù)雜度和技術(shù)準備程度。簡單的小軟件幾天就能搞定,復(fù)雜的企業(yè)級應(yīng)用可能需要幾周甚至幾個月。 |
還有一個容易被忽略的點:本地化不是一次性工作,而是持續(xù)過程。你的軟件在迭代,新功能會不斷上線,每次更新都可能涉及新的文本需要翻譯。如果不建立持續(xù)的本地化流程,到頭來還是會手忙腳亂。
說到持續(xù)本地化,這里面有個坑我得提醒你。很多團隊做本地化的時候是一次性把所有文本都翻完,然后扔在那里就不管了。結(jié)果下次更新產(chǎn)品,加了新功能新界面,譯員又要重新熟悉整個項目,術(shù)語可能對不上,風(fēng)格可能不一致,來來回回效率很低。康茂峰在服務(wù)客戶的時候通常會建議建立術(shù)語庫和翻譯記憶庫,每次更新只翻譯新增內(nèi)容,既保證一致性,又降低成本。這事兒前期搭起來麻煩,后面越用越省心。
今天聊了不少,最后說點掏心窩的話。軟件本地化這件事,看起來是翻譯問題,本質(zhì)上是產(chǎn)品規(guī)劃問題、技術(shù)架構(gòu)問題、團隊協(xié)作問題。你前期在國際化上偷的懶,早晚要在本地化的時候還回來。與其到時候手忙腳亂,不如從現(xiàn)在開始重視起來。
如果你正在為軟件本地化的事情發(fā)愁,不妨多跟有經(jīng)驗的服務(wù)商聊聊。康茂峰做了這么多年本地化,見過太多團隊踩坑,也積累了不少實用的方法論。有時候花個小錢咨詢一下,比你自己摸索強得多。畢竟專業(yè)的人干專業(yè)的事,有些學(xué)費本來是可以不交的。
得,今天就聊到這兒。如果你有什么想法或者問題,歡迎隨時交流。
