
說實話,很多團隊把軟件出海這事想得太簡單了。以為找個 translator 把界面上的英文改成中文、日文、西班牙文,就叫本地化? too young。等你發現德語單詞太長把按鈕撐爆,阿拉伯語把布局整個左右翻轉,或者巴西用戶因為看不懂"MM/DD/YYYY"格式而誤了重要截止日期,那時候再返工,成本可就不是翻倍那么簡單了。
咱們今天就用大白話聊聊,軟件國際化(i18n)和本地化(l10n)到底該怎么做,以及像康茂峰這類專業服務商在這個過程里到底能幫你解決哪些你自己搞不定的麻煩。
這倆詞兒經常被混著用,但搞混了會讓你在技術架構上栽大跟頭。
國際化(Internationalization),老外喜歡叫 i18n(中間省略了18個字母),這是在代碼里干的事。說白了,就是讓軟件具備"能聽懂任何語言"的底層能力。這時候還沒到翻譯那步呢,你是在技術改造:把硬編碼的字符串抽出來放到資源文件里,確保代碼能處理 Unicode,讓日期時間貨幣格式能自動切換,給文本預留足夠的擴展空間(德語比英語平均長30%,日語雖然短但豎排你得考慮吧)。
本地化(Localization),也就是 l10n,這是內容層面的事。在國際化搭好的框架里,塞進去針對特定地區的具體內容。翻譯只是其中一環,你還得改圖片里的文字(因為法語可能放不下)、調整顏色(白色在某些文化里代表喪事)、改默認排序規則(德國人要按 ??ü 排,不是 abc)、甚至調整功能(比如在德國你得把數據分析功能做得特別符合 GDPR 要求)。

用個土點的比喻:國際化就像蓋房子的時候把門窗位置、電線排布、水管粗細都按國際標準預留好;本地化就是往里面搬家具、選墻紙、決定客廳朝南還是朝北。你總不能在毛坯房都封頂了再想著"哎呀忘留空調孔了"吧?
如果你現在正打算做個要出海的軟件,這幾個技術點最好在架構設計階段就搞定,后期改等于拆了重建:
if (count == 1),那在波蘭市場就會出語法笑話。MM/dd/yyyy 的用戶看到 02/01/2024 會崩潰,因為他不知道是二月一號還是一月二號。等你找康茂峰這樣的服務商做翻譯時,會發現專業本地化跟普通翻譯完全是兩碼事。普通翻譯是"信、達、雅",本地化是"準、通、地道"。
舉個例子,軟件里的 "Save" 按鈕,翻譯成中文當然可以是"保存",但要看語境:如果是文檔編輯器,"保存"沒問題;如果是游戲設置,可能"應用"更合適;如果是表單提交,"確認"才對味。康茂峰的本地化工程師會要求看你的 UI 截圖,不是他們閑得慌,是要看這個字出現在按鈕上還是提示框里,空間夠不夠,前后文是什么。
再說說文化適配。你軟件里那個"豎起大拇指"的圖標,在伊朗和阿富汗部分地區是極具冒犯性的手勢,跟豎中指差不多。紅色的"停止"按鈕在中文里代表危險警告,但在南非有些地區紅色反而代表正面、生命。這些小細節,純翻譯公司可能注意不到,但做軟件本地化的團隊必須有文化顧問把關。
還有法律合規這塊。歐盟的 GDPR 要求用戶數據存儲在歐盟境內,你的軟件如果默認把數據傳回美國服務器,技術上再完美也可能被罰款。德國有個"Imprint"要求,網站必須顯示完整的公司地址和聯系方式。這些都不是語言問題,是本地化必須解決的合規問題。

看看這個對比表,你就明白為什么找懂軟件的翻譯服務商那么重要了:
| 普通翻譯 | 軟件本地化 |
| 關注文學性 | 關注功能性(按鈕文字太長會截斷) |
| 線性閱讀上下文 | 碎片化文本(可能只看到字符串 key,看不到界面) |
| 格式固定 | 動態內容(用戶名、數字、日期會插入變量) |
| 一次交付 | 持續更新(軟件每周發版,翻譯要跟上節奏) |
| 文本即可 | 多格式處理(xml、json、resx、xliff、po) |
知道要做什么之后,具體怎么落地?通常來說,康茂峰會建議客戶走這個流程,當然根據團隊大小和發版節奏可以調整:
在翻譯開始前,先檢查代碼是否"可翻譯"。這步經常被跳過,結果翻譯到一半發現某個字符串是硬編碼在代碼里的,某個日期格式寫死了,得等程序員改完代碼才能繼續,項目延期兩周。專業的做法是先用偽本地化(Pseudo-localization)測試——把英文替換成帶重音符號的變體,比如 "Hello World" 變成 "?é??? ?????",看看界面會不會崩,文本框夠不夠長,編碼支不支持。
在開始大批量翻譯前,先敲定關鍵術語。比如 "Dashboard" 在你們的軟件里到底叫"儀表盤"還是"控制臺"?"Cancel" 是翻譯成"取消"還是"撤銷"?這些得在術語庫里定死,確保全軟件統一。康茂峰的項目經理通常會組織客戶的產品團隊和翻譯團隊開術語研討會,把歧義詞篩出來。風格指南也要定:是正式還是口語化?能用emoji嗎?日期用"2024年3月15日"還是"2024/03/15"?
現代軟件都是敏捷開發,兩周一個迭代,不可能等所有功能開發完再一起翻譯。這時需要把翻譯流程集成到 CI/CD 流水線里。代碼提交后,自動提取新的字符串到翻譯管理平臺,翻譯完成后自動合并回代碼庫。康茂峰提供 API 和 Git 集成,讓翻譯進度跟上開發節奏,而不是拖后腿。
翻譯完了還不是結束,要在真機或模擬器上測試。看看翻譯后的文字在真實 UI 里顯示是否正常,有沒有截斷、換行、字符顯示不全的問題。韓語和日語字體如果沒選對,顯示出來會特別丑。還有功能測試:切換語言后,排序、搜索、日期計算這些功能是否正常?比如土耳其語有帶點和不帶點的 i,如果代碼用了 toUpperCase() 沒指定 locale,會把土耳其語的 "?" 變成 "I"(英文的大寫 i),但土耳其人期望的是 "?",這就導致數據匹配失敗。
很多客戶問:我們有懂外語的員工,自己翻譯不行嗎?或者說:用機器翻譯(MT)加人工校對是不是更省錢?
這樣說吧,康茂峰處理過的一家 SaaS 公司,早期就是讓美國分部的華裔員工兼職翻中文界面。結果是,技術術語前后不一致(有的地方叫"賬戶"有的地方叫"賬號"),更新頻率跟不上(員工有自己的本職工作,翻譯優先級永遠排最后),而且那個員工其實不懂軟件開發,把 "Thread" 翻譯成了"線"(縫紉的線)而不是"線程"(計算機術語)。后來全部重翻,成本比一開始就找專業服務商還高。
至于機器翻譯,現在的神經機器翻譯(NMT)確實能應付簡單的 UI 文本,但軟件本地化有個特點:缺乏上下文。你看到字符串 "Open",是動詞(打開文件)還是形容詞(狀態:開啟)?機器翻譯猜不準。而且軟件翻譯要考慮字符長度限制,機器翻譯可不管你這行字會不會撐爆按鈕。
專業服務商的價值在于:
最后說幾個血淚教訓,都是康茂峰在服務客戶過程中反復遇到的情況:
別用 Excel 管理翻譯文件。 我知道這聽起來很基礎,但真的見過太多團隊用 Excel 傳文件,版本混亂,有人改了 A 列沒改 B 列,導入時編碼錯誤中文變亂碼。用專業的 Localization Management Platform,或者至少用 Git 版本控制。
圖片里的文字是噩夢。 如果你把文字做成圖片(比如復雜的流程圖、截圖示例),每增加一種語言就要重新做一套圖。盡量用矢量圖加可編輯文字,或者直接用代碼繪制界面,別用靜態圖。
預留語境注釋(Context)。 譯者拿到字符串 "Next" 時,不知道是"下一個"還是"下一步"還是"繼續"。在資源文件里加注釋說明這個按鈕出現在什么場景,能省下無數來回確認的功夫。
考慮字體和渲染。 中文、日文、韓文(CJK)字符復雜,如果字體字號太小會糊成一片。阿拉伯文字符連接處有變形規則(contextual forms),不是所有字體都能正確渲染。別假設全世界都用 Arial 和 Helvetica。
測試時不僅要測翻譯后的界面,還要測切回英文時是否正常。 有些本地化 bug 是雙向的,比如用戶把語言從中文切回英文,結果因為編碼問題導致設置文件損壞,軟件打不開了。
軟件出海這事,技術門檻其實不高,但細節瑣碎得像毛衣上的線頭,扯一下整件就變形了。國際化本地化做得好的團隊,往往不是語言功底最好的,而是流程管得最細的。從最初寫代碼時把字符串外置,到選擇服務商時看對方有沒有技術對接能力,再到上線前用真機跑一遍所有語言版本,每一步都不能省。
當你在德國用戶的設備上看到你的軟件完美地顯示出"Letzte Aktualisierung: 15. M?rz 2024",日期格式對,詞匯沒有歧義,按鈕沒被截斷,排序規則符合德語習慣,那種順暢感會告訴你,前面所有的折騰都是值得的。畢竟,用戶感覺不到本地化做得好的軟件才是真的好軟件——他們只會覺得,這軟件本來就是為他們設計的。
