配置需要國際化的語言(國際化的準備工作)
App名稱本地化
代碼中字符串本地化
多人開發情況下的字符串本地化
圖片本地化(兩種方式兩種方式)
查看/切換本地語言
storyboard/xib本地化
配置需要國際化的語言 必要的一步
(一)應用名稱本地化/國際化
文件名字命名為InfoPlist,且必須是這個名字(因每個人電腦設置差異,此處本人電腦沒有顯示strings后綴名):
(1)在InfoPlist.strings(english)中加入如下代碼:
// Localizable App Name是App在英語環境環境下顯示的名稱
CFBundleDisplayName = "Localizable App Name";
(二)代碼中字符串的本地化
文件名必須命名為Localizable
define NSLocalizedString(key, comment) [[NSBundle mainBundle] localizedStringForKey:(key) value:@"" table:nil]
(三)多人開發情況下的字符串本地化
項目開發中,獨立開發的還是少數。經常會有多人開發的情況,這種情況,如果多人同時操作本地化文件,極有可能會存在沖突。另一方面,我們又不希望自己的本地化文件受到對方的污染,也就是說,我們不希望對方操作我們的本地化文件。但是上面介紹的代碼中字符串的本地化是使用的是默認的文件名"Localizable",因為啟動程序時,系統將根據語言加載相應的文件得到其對應的字符串文件,這個字符串可以通過系統將NSLocalizedString中的宏生成名為“Localizable.strings”的文件。那么如何讓系統加載我們自己命名的本地化文件而非系統默認的Localizable.strings呢?這就是 NSLocalizedStringFromTable(<#key#>, <#tbl#>, <#comment#>)的用處。
也就是說,如果你的strings文件名字不是Localizable而是自定義的話,如VVS.strings,那么你就得使用NSLocalizedStringFromTable這個宏來讀取本地化字符串。
// key:系統根據key取字符串
// tbl:自定義strings文件的名字
// comment:可以不傳
NSLocalizedStringFromTable(<#key#>, <#tbl#>, <#comment#>)
(四)圖片本地化
本地化圖片,有兩種方式,第一種方式和本地化代碼中的字符串一樣,通過NSLocalizedString(key,comment)來獲取相應的字符串,然后根據這個字符串再獲取圖片。
(五)查看/切換本地語言
NSArray *languages = [[NSUserDefaults standardUserDefaults] valueForKey:@"AppleLanguages"];
NSString *currentLanguage = languages.firstObject;
NSLog(@"模擬器當前語言:%@",currentLanguage);
}