最近公司的一個項目要發布多語言版本,但是因為以前主要是 English 和 Chinese ,其他語言翻譯了一部分,未能完全跟上翻譯的步伐。如果全部重新翻譯,工作量大且浪費了以前的翻譯成果,如果手動對比或者用 git diff 這樣的命令去增量翻譯,又無形中增加了開發人員和翻譯人員的協作成本。
具體的過程就不多復述了,簡單的介紹一下我們目前在 Localization 方面的規范。
Localizable.strings
iOS 項目中的 Localizable.strings 文件務必要規范化,避免重復的無意義翻譯,同時在項目模塊變動的時候可以及時去除無需使用的字段。
key 值統一為駝峰規則+下劃線 (歷史包袱),首單詞為所屬模塊名,例如相冊部分叫做 Album ,通用按鈕命名為Button 這種。
對於不同模塊的翻譯內容不僅要通過命名區分也要通過備注區分,便於後期維護和跟進。
不用翻譯的一律放在文件末尾,並且通過注釋表明。
良好的示例:
// 照片 "Album_GroupName_Camera" = "相機"; "Album_GroupName_Stream" = "我的照片流"; // 按鈕 "Button_Add" = "添加"; "Button_Album" = "相冊"; // DO NOT TRANSLATE "Help_Image_Name_Photos" = "help_photos_chs";
Localization Suite
Localization Suite 是一組 Localization 的工具集合。有利於幫助我們更好更快的完成翻譯和校對工作。
下面簡單的介紹一下基本的使用方法。
Localization Manager
打開 Manager 之後,在菜單欄選擇 New -> From Xcode ,這樣可以從 Xcode 的項目文件中直接讀取需要進行翻譯的文件。
導入之後應該是這個樣子的:
基本的操作按鈕在鼠標懸停的時候都有提示。下面演示一下用這個工具的基本用處之一:查找漏翻譯的內容。
以 Korean 為例。選中 Korean 然後在右側的按鈕點擊 Edit 按鈕。
這時會打開我們的第二個工具: Localizer:
Localizer
Localizer 是用來進行翻譯的,我們可以在左側設定好篩選條件然後在右側面板就能看到未翻譯的內容:
由於這個工具把 value 相同認為未翻譯,而實際上可能確實存在一些待翻譯的內容,比如目前圖片資源沒跟上,還是先顯示 ChatGame 這樣的。可以統一把這些放在末尾,並且備注寫明不需翻譯,這樣在對照的時候會更清晰一些:
先寫這麼多。
(本文作者:@請叫我汪二)