iOS國際化問題:當前設備語言字符串返回有變化
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSArray *allLanguage = [defaults objectForKey:@"AppleLanguages"];
NSString *currentLanguage = [allLanguage objectAtIndex:0];
NSLog(@"The current language is : %@", currentLanguage);
iOS 9 之前:以上返回結果:語言字符串代碼。例如:"zh-Hans"
iOS 9:以上返回結果:語言字符串代碼 + 地區代碼。例如:"zh-Hans-US"
所以加載語言包的時候就要注意了,要判斷在不同的環境下加載不同的語言包。
語言包格式xml、lang
備註:
1.請注意判斷當前語言類型,不要用以下形式的代碼了,不然在iOS9上就會遇到坑。
1
if ([currentLanguage isEqualToString:@"zh-Hans"])
可以使用:
1
if ([currentLanguage hasPrefix:@"zh-Hans"])
另外:對於中文,語言有:
簡體中文:zh-Hans
繁體中文:zh-Hant
香港中文:zh-HK
澳門中文:zh-MO
臺灣中文:zh-TW
新加坡中文:zh-SG
備註:以上iOS9 當前語言字符串返回結果:語言字符串代碼 + 地區代碼。在某些情況下不是這樣,iOS開發培訓者本人手機型號:大陸版電信iPhone5S/A1533/16GB測試結果:zh-HK/zh-TW,在地區爲"中國"、"中國香港"、"中國臺灣"的時候,顯示的還是zh-HK/zh-TW,一旦切換到其它地區,設備語言會自動的切換到中文繁體。請開發人員注意中文的問題!