首先,我們使用字符串,必須用NSLocalizedString(key,comment)颓鲜,這樣我們在不同的Localizable.strings對key指定不同的值,系統(tǒng)會根據(jù)當(dāng)前系統(tǒng)語言禾嫉,去不同的lproj找不同的字符串灾杰。用個圖顯示吧:
我們應(yīng)用只支持中文蚊丐,英文熙参,所以只建了zh-Hans.lproj和en.lproj,然后在Localizable.strings指定了不同的值麦备。舉例如下:
這樣程序就能根據(jù)系統(tǒng)語言孽椰,去選擇“登錄”還是“Log In”。
但是如果每次加了一個本地化字符串凛篙,就得手動去Localizable.strings添加對應(yīng)的key黍匾,那就太麻煩了,幸好蘋果提供了快捷生成本地化key的命令呛梆。下面以en.lproj的生成為例:
首先锐涯,我們進入程序工程所在的目錄,用命令建立en.lproj
mkdir en.lproj
然后我們遍歷所有的子目錄文件填物,去生成Localizable.strings纹腌,命令如下:
find ./ -name \*.m -print0 | xargs -0 genstrings -o en.lproj
(基本都說genstrings -o en.lproj *.m就可以生成Localizable.strings,但是這個命令只能生成當(dāng)前目錄的滞磺,并沒有遍歷子目錄升薯,所以基本沒用)
這樣系統(tǒng)就會把子目錄用到NSLocalizedString函數(shù)的key值都寫到文件里。
需要注意的是击困,NSLocalizedString(key,comment)涎劈,用這個函數(shù)時,key不能是宏定義或者一些動態(tài)字符串阅茶,否則用上面的命令會報錯
主要步驟:
- 在代碼里用NSLocalizedString獲取要本地化的字符串
- 用genstrings掃描代碼文件蛛枚,生成Localizable.strings,然后加到工程中