1.首先添加需要适配的語言
選擇要添加的語言:
選擇要國際化的storyboard:
2.xib國際化
如果照上圖已勾選需要國際化的storyboard,那麼就已經出現簡體中文的國際化檔案,勾選english就會出現英文的國際化檔案,如圖
如果添加語言的時候沒有勾選storyboard,或者有新添加的storyboard或xib,則需要手動開啟國際化,如圖
圖檔、應用名稱等需要國際化的都是如此開啟;
3.圖檔
圖檔開啟國際化之後會有兩張相同的圖檔存放在不同的位置,隻需要将對應的圖檔替換掉就可以了。
Assets.xcassets還不支援國際化功能。
4.應用名稱
建立檔案,檔案名必須為 InfoPlist
然後在檔案裡添加
CFBundleDisplayName = "國際化";
然後開啟國際化,修改新生成的對應語言的檔案中的應用名稱,例如
CFBundleDisplayName = "language";
5.字元串
1.替換代碼中的字元串
接下來就該工程中的字元串了,字元串的國際化需要用到
NSLocalizedString(@"", @"")
參數為兩個字元串,第一個字元串是查找對應語言的key值,第二個字元串是注釋(可有可無), 還有幾個其他方法,可用于指定檔案
好多應用是即将完工或已經完工之後才進行國際化适配,是以需要從工程中找到自己想要的字元串。 例如中文:
[button setTitle:@"語言切換" forState:UIControlStateNormal];
需要替換為
[button setTitle:NSLocalizedString(@"語言切換", nil) forState:UIControlStateNormal];
當然如果項目一開始的時候就考慮到國際化的問題,使用了 NSLocalizedString那就不用了。 這就需要使用正規表達式查找替換了,
選擇這個, 中文的正規表達式為:(@"[^"]*[\u4E00-\u9FA5]+[^"\n]*?") 替換時使用$1代替()内正規表達式比對到的内容,如果有兩個()時第二個用$2代替。。。 如圖
選擇需要替換的内容替換即可。
2.生成字元串的國際化檔案
使用genstrings工具生成.string檔案 打開終端,進入到工程目錄下執行指令:
find ./ -name *.m | xargs genstrings -o en.lproj
*.m就是工程裡的所有.m檔案,如果.h檔案有需要也可以寫*.h en.lproj是生成檔案存放的位址,可以自己指定 生成的檔案如下:
如果工程一開始就做國際化,代碼中還沒有 NSLocalizedString,就不能生成此檔案,要自行建立此檔案名的檔案。
将此檔案加入到工程内,然後開啟國際化,找專業人士翻譯即可。
如果沒有相應語言的Localizable.string檔案,或相對key值的value值,則會顯示key值。
未完待續