討論的iOS應(yīng)用中的多語言設(shè)置,Ok 一般是兩種情況:
1.根據(jù)當(dāng)前設(shè)備語言自動切換顯示
2.在應(yīng)用中可進(jìn)行語言設(shè)定
至今,我個人做過的項目中有6個是涉及到多語言的,其中全部都是需要在應(yīng)用中可進(jìn)行設(shè)置。 其實也沒多大關(guān)系,我們這里會首先說說根據(jù)當(dāng)前設(shè)備語言進(jìn)行切換界面的顯示(這些都是網(wǎng)上能搜到的,我整理下給自己清晰點的步驟以便后續(xù)查看罷了)。而關(guān)于在應(yīng)用在進(jìn)行語言設(shè)定,其實就是獲取當(dāng)前的語言環(huán)境并通過代碼進(jìn)行更改,其他的操作是一致的。
先來說說幾個涉及到多語言本地化設(shè)置的:
1.本地化應(yīng)用名稱
2.本地化字符串(文字)
3.本地化圖片、素材
4.本地化StoryBoard(Xib)
!!重點重點,以上都是廢話:
這里才是配置根據(jù)當(dāng)前設(shè)備語言自動切換顯示的步驟,不貼圖,不說明原因:
1.配置工程支持多語言
選中項目—>PROJECT(默認(rèn)是選中TARGETS,切換下)—>Info—>Localizations—>設(shè)置多語言環(huán)境
2.國際化應(yīng)用名稱
(1)創(chuàng)建InfoPlist.string,并進(jìn)行Localization配置:
在項目中點擊New File-->Resource-->Strings File -->更名為InfoPlist-->點擊創(chuàng)建。
選中InfoPlist.strings —>在Xcode右邊欄找到Localization—>在Localization中點“+”進(jìn)行配置。(如沒有則點擊 XCode—>View—>Utilities—>File Inspector)
(2)添加屬性:
在對應(yīng)InfoPlist.string文件中輸入以下代碼:
CFBundleDisplayName ="多語言測試";
注意:CFBundleDisplayName加不加雙引號都行,"多語言測試"便是對應(yīng)的應(yīng)用名。
(3)編輯Info.plist:
打開Info.plist,添加一個新的屬性Application has localized display name, 設(shè)置其類型為boolean,并將其value設(shè)置為YES即可
3.國際化文字
(1)創(chuàng)建Localizable.strings文件(一定是這個名字,是否使用的方法不一樣)并進(jìn)行進(jìn)行Localization配置。
(2)在對應(yīng)語言的Localizable.strings中添加key=value;字串(各個語言文件中key要相同)
(3)在代碼中使用NSLocalizedString(<#key#>, <#comment#>)來讀取本地化字符串。
注意:如果你的strings文件名字不是Localizable而是自定義的話,如wang.strings,那么你就得使用NSLocalizedStringFromTable(key, @"wang", nil)來讀取本地化字符串,中間那個是@"wang"文件名。
*多語言文本中也可包含可變內(nèi)容:通過以下代碼獲取:
NSString *string = [NSString localizedStringWithFormat:NSLocalizedString(@"密碼錯誤%ld次,還可以輸入%ld次",nil), 2, 1];
4.國際化圖片
有兩種方式:
(1)在不同語言的Localizable.strings中指定不同的圖片名稱,通過NSLocalizedString()獲取不同的圖片名稱后進(jìn)行顯示不同的圖片(這個就是通過國際化文字那個)
(2)參照國際化應(yīng)用名和文字的方式給圖片標(biāo)記兩種不同的語言顯示 (但將圖片放Images.xcassets中時時似乎沒有地方可以選擇國際化語言的)
5.國際化StoryBoard:(不建議)
在第1步配置工程多語言的時候就會提示包含的更改的文件,其中就有StoryBoard,選中即可。這樣便會出現(xiàn)一個Base文件和語言文件。
但有一個問題是更改了SB中的控件之后,語言包中的內(nèi)容不會對應(yīng)改變,所以我們的操作是暫時不支持國際化SB。
以上部分參考:http://blog.csdn.net/wangqiuyun/article/details/7875442