給 App 或者網站做多語言,說簡單也簡單,但也很枯燥。如果大公司的話,可能有專門的團隊來做這件事,但如果你恰好在一個做出海業務的創業團隊,這個枯燥的活,你逃不脫。
幸好,經過一段時間的摸索,結合 Google sheets,我探索出了一套還算高效的流程,記錄一下。
1、先用一種語言做設計並開發完全部功能
在給一個應用做國際化的時候,可能有兩種思路。一種思路是,一開始在設計階段,就給出不同語言的設計稿,在頁面開發過程中就實現多語言化。這樣的好處是,因為文案而導致的視覺問題,在設計階段就會被考慮到並解決,但壞處也很明顯,就是維護文案麻煩,設計起來工作量也太大。如果有些文案,是開發階段才想到的錯誤提示等,常會遺漏翻譯。為了避免這些問題,我們的方案是,先用一種語言做設計和開發, 等開發全部完成之後,將涉及到界面文案的部分,全部抽出到語言包文件中。然後開發將語言包文件給產品進行多語言化。
2、 分離文案
當我們拿到開發給出的語言包,往往是代碼和文案的混合。以 Android App 為例,類似這樣:
<string name="binding">綁定</string>
第一步,將文件中的內容全部拷貝到一個新建的 Google Sheets 文件。這些內容在 Google Sheets 中會是一個多行一列的形式。
第二步,使用分列 功能,將內容分為不同列。分列之後,長成這樣:
<string name="binding" 綁定 /string
一列多行的文件會變成多行多列,每一行是一個文案。這時候,文案部分就成了單獨的一列。
3、 使用 Google Sheets 自帶的 GoogleTralate() 函數進行翻譯
當源語言單獨成列之後,新建幾列,用來放置目標語言。這時候,使用 GoogleSheets 而不是 Excel 的優勢就體現出來了。他默認自帶的函數GOOLETRANSLATE() 會很容易將內容翻譯並放到目標單元格中,省去了你通過網頁翻譯需要重複複製粘貼的麻煩。該函數使用很簡單,只要要輸入 =GoogleTranslate(文本,[源語言],[目標語言])並回車即可。比如,你想將 E 列的中文翻譯成法語,只要輸入 =GoogleTranslate(F2,"en","fr") 即可,回車後還可以下拉到整列,以便將整列都翻譯。而翻譯不同的目標語言,只需要調整剛才輸入公式的第三個參數即可,比如你要一列荷蘭語的翻譯,只需要將剛才的公式輸入改為 =GoogleTranslate(F2,"en","nl") 即可.
這樣,你可以在幾分鐘內得到一個 App 的十幾種語言翻譯。
4、邀請 Native Speaker 加入 Google Sheets 進行校對
如果你有相關的預算找專門的翻譯人員或者你的用戶中有熱心人士願意幫忙,你可以邀請他加入這個 Sheet 中,授予其編輯權限對機器翻譯的內容進行校對。
5、拼接為符合開發要求的文件
因為我們在第一步的時候,改變了開發所給的文件格式。等我們得到了每一列的翻譯並沒有問題的時候,就可以將翻譯好的內容輸出為開發項目中要求的格式。
這個時候,我們還是使用公式來快速完成。輸入類似這樣的公式=A2&B2&">"&E2&"<"&D2&">" ,他會將文案左右兩邊的<string name="binding">和</string> 重新拼接在一起,和一開始開發給你的內容格式一樣。這樣每一列複製出來,存放在一個語言包文件中即可。
6、UI 走查
開發將語言包文案放入到項目中並編輯打包後。需要你切換到每一種語言進行 UI 走查,主要檢查兩點。一是檢查是否有語言漏翻譯的(雖然基於這個流程來做,很少出現,但 DoubleCheck 總是沒錯的),二是檢查是否有些文案的長度破壞了界面。尤其注意法語、日語會很長,而阿拉伯語是從右往左排列的。這些都容易是 UI 出問題。發現問題之後,有些可以通過精簡文案解決,有些則需要優化 UI 設計。如果是通過精簡文案結局問題的,需要將文案的變化同步到 Sheet 中。
7、增量更新
一個應用發布之後,會繼續發布很多新版本。在每個新版本中,有新增的文案,就必須重複上述步驟,確保增量內容遺漏。