關(guān)于iOS 的國(guó)際化適配,主要有以下幾點(diǎn):
一、語(yǔ)言適配 ?Localizable.strings文件
該文件主要用于字符串的多語(yǔ)言版本,包括Localizable.strings(English), Localizable.strings(Chinese(Simplified)), Localizable.strings(Chinese(Traditional))等多個(gè)版本,使用不同的文件名稱,內(nèi)容取相同的key名稱,對(duì)應(yīng)不同的值。文件中具體內(nèi)容格式如下:
//Localizable.string(English)
"TEXT_CANCEL"="Cancel";//取消
"TEXT_BACK"="Back";//返回
"TEXT_SEND"="Send";//發(fā)送
// Localizable.strings(Chinese(Simplified))
"TEXT_CANCEL"="取消";//取消
"TEXT_BACK"="返回";//返回
"TEXT_SEND"="發(fā)送";//發(fā)送
// Localizable.strings(Chinese(Traditional))
"TEXT_CANCEL"="取消";//取消
"TEXT_BACK"="返回";//返回
"TEXT_SEND"="發(fā)送";//發(fā)送
二、圖片適配
有兩種方式:
(1)在不同語(yǔ)言的Localizable.strings中指定不同的圖片名稱,通過(guò)NSLocalizedString()獲取不同的圖片名稱后進(jìn)行顯示不同的圖片
(2)參照國(guó)際化應(yīng)用名和文字的方式給圖片標(biāo)記兩種不同的語(yǔ)言顯示 ,要注意命名帶上各國(guó)家的對(duì)應(yīng)的編碼表示
一般涉及到多語(yǔ)言適配問(wèn)題,我們會(huì)先判斷當(dāng)前使用的語(yǔ)言類型。
獲取iOS系統(tǒng)的語(yǔ)言類型可使用:
NSArray*languages = [NSLocale preferredLanguages];// 獲取語(yǔ)言字段NSString*curLanguage = [languages firstObject];// 獲取當(dāng)前使用語(yǔ)言
對(duì)于curLanguage的值,iOS9在其中增加了地區(qū)代碼。如簡(jiǎn)體中文,在iOS9之前為@”zh-Hans”,而在iOS9中為@”zh-Hans-CN”。所以iOS9之前的一些判斷如
[curLanguage isEqualToString:@"zh-Hans"]
在iOS9之后就會(huì)有問(wèn)題,可使用
[curLanguage hasPrefix:@"zh-Hans"]
來(lái)代替。如下:
//? 當(dāng)前語(yǔ)言是否中文簡(jiǎn)體
-#defineisZhHans [[[NSLocale preferredLanguages] firstObject] isEqualToString:@"zh-Hans"]
+#defineisZhHans [[[NSLocale preferredLanguages] firstObject] hasPrefix:@"zh-Hans"]
// 當(dāng)前語(yǔ)言是否為中文繁體
-#defineisZhHant [[[NSLocale preferredLanguages] firstObject] isEqualToString:@"zh-Hant"]
+#defineisZhHant [[[NSLocale preferredLanguages] firstObject] hasPrefix:@"zh-Hant"]
// 當(dāng)前語(yǔ)言是否為中文繁體香港
-#defineisZhHK [[[NSLocale preferredLanguages] firstObject] isEqualToString:@"zh-HK"]
+#defineisZhHK [[[NSLocale preferredLanguages] firstObject] hasPrefix:@"zh-HK"]
獲取地區(qū)代碼
NSLocale *locale=[NSLocale currentLocale];
[locale localeIdentifier];