標籤:
原文網址:http://www.jianshu.com/p/2b7743ae9c90
討論的iOS應用中的多語言設定,Ok 一般是兩種情況:
1.根據當前裝置語言自動切換顯示
2.在應用中可進行語言設定
至今,我個人做過的項目中有6個是涉及到多語言的,其中全部都是需要在應用中可進行設定。 其實也沒多大關係,我們這裡會首先說說根據當前裝置語言進行切換介面的顯示(這些都是網上能搜到的,我整理下給自己清晰點的步驟以便後續查看罷了)。而關於在應用在進行語言設定,其實就是擷取當前的語言環境並通過代碼變更,其他的操作是一致的。
先來說說幾個涉及到多語言本地化設定的:
1.本地化應用程式名稱
2.本地化字串(文字)
3.本地化圖片、素材
4.本地化StoryBoard(Xib)
!!重點重點,以上都是廢話:
這裡才是配置根據當前裝置語言自動切換顯示的步驟,不貼圖,不說明原因:
1.配置工程支援多語言
選中項目—>PROJECT(預設是選中TARGETS,切換下)—>Info—>Localizations—>設定多語言環境
2.國際化應用程式名稱
(1)建立InfoPlist.string,並進行Localization配置:
在項目中點擊New File-->Resource-->Strings File -->更名為InfoPlist-->點擊建立。
選中InfoPlist.strings —>在Xcode右側邊欄找到Localization—>在Localization中點“+”進行配置。(如沒有則點擊 XCode—>View—>Utilities—>File Inspector)
(2)添加屬性:
在對應InfoPlist.string檔案中輸入以下代碼:
CFBundleDisplayName ="多語言測試";
注意:CFBundleDisplayName加不加雙引號都行,"多語言測試"便是對應的應用程式名稱。
(3)編輯Info.plist:
開啟Info.plist,添加一個新的屬性Application has localized display name, 設定其類型為boolean,並將其value設定為YES即可
3.國際化文字
(1)建立Localizable.strings檔案(一定是這個名字,是否使用的方法不一樣)並進行進行Localization配置。
(2)在對應語言的Localizable.strings中添加key=value;字串(各個語言檔案中key要相同)
(3)在代碼中使用NSLocalizedString(<#key#>, <#comment#>)來讀取本地化字串。
注意:如果你的strings檔案名稱字不是Localizable而是自訂的話,如wang.strings,那麼你就得使用NSLocalizedStringFromTable(key, @"wang", nil)來讀取本地化字串,中間那個是@"wang"檔案名稱。
*多語言文本中也可包含可變內容:通過以下代碼擷取:
NSString *string = [NSString localizedStringWithFormat:NSLocalizedString(@"密碼錯誤%ld次,還可以輸入%ld次",nil), 2, 1];
4.國際化圖片
有兩種方式:
(1)在不同語言的Localizable.strings中指定不同的圖片名稱,通過NSLocalizedString()擷取不同的圖片名稱後進行顯示不同的圖片(這個就是通過國際化文字那個)
(2)參照國際化應用程式名稱和文字的方式給圖片標記兩種不同的語言顯示 (但將圖片放Images.xcassets中時時似乎沒有地方可以選擇國際化語言的)
5.國際化StoryBoard:(不建議)
在第1步配置工程多語言的時候就會提示包含的更改的檔案,其中就有StoryBoard,選中即可。這樣便會出現一個Base檔案和語言檔案。
但有一個問題是更改了SB中的控制項之後,語言套件中的內容不會對應改變,所以我們的操作是暫時不支援國際化SB。
以上部分參考:http://blog.csdn.net/wangqiuyun/article/details/7875442
文/cocoawmm(簡書作者)
原文連結:http://www.jianshu.com/p/2b7743ae9c90
著作權歸作者所有,轉載請聯絡作者獲得授權,並標註“簡書作者”。
【轉】iOS多語言本地化(國際化)設定