1、本地化介紹
1、本地化分類
使用本地化功能,可以輕松地將應用程序翻譯成多種語言,甚至可以翻譯成同一語言的多種方言。原理是當本地化的應用程序需要載入某一資源時,如圖像、屬性列表、nib文件,應用程序會檢查用戶的語言和地區,并查找相匹配的本地化文件夾。如果找到了相應的文件夾,就會載入這個文件夾中的資源
Xcode 8 iOS 10
- 1、xib和storyBoard本地化
- 2、App應用名稱本地化
- 3、圖片本地化
- 4、字符串本地化
2、Demo
Snip20160921_27.png
2、stroyBoard本地化
一、創建好中文、英文和日本語的本地化文件夾
D49E55C6-27AC-4186-998E-B01075E29913.png
Snip20160921_6.png
Snip20160921_7.png
Snip20160921_8.png
二、配置lable的文字
Snip20160921_9.png
Snip20160921_11.png
三、顯示效果
Snip20160921_12.png
2、App應用名字本地化
一、Info.plist中有個叫CFBundleDisplayName的key決定了應用程序的名稱
讓應用程序支持名稱本地化,Info.plist就會去InfoPlist.strings加載CFBundleDisplayName對應的字符串,(這里需要注意不能直接本地化Info.plist,因為這樣做之后Info.plist文件會存在各自的本地化文件夾中(像en.lproj)中,這樣系統會報Info.plist文件不存在的問題,雖然可以去指定Info.plist文件的位置,但是這樣就不能實現本地化的目的了,所以需要用到InfoPlist.strings文件)
Snip20160921_13.png
Snip20160921_14.png
Snip20160921_15.png
Snip20160921_17.png
Snip20160921_18.png
二、配置App名稱
Snip20160921_19.png
Snip20160921_20.png
三、App名稱顯示效果(日語)
Snip20160921_21.png
3、圖片本地化
一、Xcode配置需要本地化的素材
Snip20160921_23.png
Snip20160921_24.png
Snip20160921_27.png
二、Clean然后重新跑起來
Snip20160921_25.png
Snip20160921_26.png
不要問我怎么clean, command + option + shift +K
三、顯示效果(美國)
Snip20160921_28.png
注意: 使用Assets.xcassets或者Images.xcassets管理圖片本地化
因為iOS暫不支持.xcassets的本地化,所以這里需要結合字符串的本地化來處理(這里也放在后面介紹)
4、字符串的本地化
一、字符串資源文件名Localizable.strings
也可以使用其他名字,但是需要終端生成Xcode可識的字符串資源文件文件,具體可參考本文末尾鏈接,這里只使用Localizable.strings
Snip20160921_29.png
在代碼中使用NSLocalizedString(key, comment)來讀取本地化字符串,key是Localizable.strings文件中等號左邊的字符串,comment純粹是注釋。
Snip20160921_30.png
二、讀取Localizable.strings中的key
Snip20160921_31.png
Snip20160921_33.png
Snip20160921_34.png
注意:Xcode只能讀取字符串和單個單詞的key,所以通一用" "來表示key,這樣不容易錯,畢竟資源文件是沒有查錯功能的
Snip20160921_35.png
如果沒有對字符串進行本地化 或者 找不到key對應的值,NSLocalizedString將直接返回key這個字符串
Snip20160921_36.png
三、通過Localizable.strings中的key,讀取.xcassets的圖片(日本)
Snip20160921_37.png
Snip20160921_44.png
Snip20160921_38.png
Snip20160921_41.png