背景
這里的故事源自于公司的一個臨時需求.以色列公司同事需要接手目前APP的一部分開發(fā)工作.但是由于語言差異,app內部并沒有做國際化的一些工作.限時一個星期,領導叫我們完成整個app的國際化工作.說實話,壓力很大.這里略過如何具體實現(xiàn)國際化,如有需要請自行百度.
難點
這里有幾個耗時點:
1.我們工程內部都是直接采用的中文進行賦值.項目里有大量中文,需要我們去提取,很耗時.
2.常規(guī)的國際化操作是需要Localizable.strings
和InfoPlist.strings
這兩個文件來實現(xiàn)的,那么就面臨將中文字符和key逐個拷貝進入文件之中,也很耗時.
3.中文需要翻譯,翻譯過程暫且不提,但也需要逐個拷貝進入英文的對應的文件里,也很耗時.
4.如果翻譯不準確,中文寫錯了,或者key也改了,那么可能同時改幾個文件,這就很蛋疼了,麻煩且依然耗時.
解決方案
這里針對上述四個耗時,我們經(jīng)過團隊討論,得出如下的一種解決方案.
1.中文提取,我們找了一個正則,來尋找出項目內出現(xiàn)的所有中文.操作步驟如下:
(1)打開”Find Navigator”
(2)切換搜索模式到 “Find > Regular Expression”
(3)輸入@"[^"]*[\u4E00-\u9FA5]+[^"\n]*?" (swift請去掉”@” 輸入@"[^"]*[\u4E00-\u9FA5]+[^"\n]*?")
這樣就能搜索出項目里所有的中文了,這里其實沒有解決耗時的根本問題,但是至少不用去文件里一個個翻了,由于是分模塊提取的,還是省了不少力.
2.中文全部提取之后,這里就不用逐個copy進Localizable.strings
文件內了.這里我們采取了一種思路,我們先定好所有需要的key,將key,中文,英文翻譯全部放入到一個EXCEL文件內,并且一一對應,然后通過腳本語言將這個EXCEL文件直接轉換成我們需要的Localizable.strings文件.
這里給一張EXCEL文件的圖:
這里的腳本語言采用的是
python
,同時也支持shell
,其內部目錄如下:這里紅色框起來的部分,作用是可以將iOS的
Localizable.strings
轉換成上述EXCEL文件內的key-value形式,以及反轉.至于腳本具體細節(jié),這里暫不討論,涉及一些實現(xiàn)細節(jié),有興趣的朋友可以按照這個思路自己去實踐一下.就這么一個腳本就解決了
耗時2,3
的問題,那么對于耗時4
,其實就很容易解決了.
3.當我們維護國際化字符串的時候,就不再是去XCode工程里維護Localizable.strings
文件了,而是去維護我們新建的哪個EXCEL文件,當我們需要修改對應內容,只需要在EXCEL文件內Command+F找到對應內容,修改過后,再次執(zhí)行上述的腳本即可
,這樣的話,省時省力,直接運行工程即可看到修改效果.另外我們是多人合作開發(fā),所以我們專門為此建立了一個git倉庫來管理這個國際化文件,但轉換工作是由本人來控制的.
經(jīng)過上述一頓操作,我們的國際化版本順利調整完畢,本來預計的翻譯時間會較長,結果不到兩天就全部搞定.后續(xù)就是蛋疼的國際化界面適配了,就不談了.