iOS9获取系统语言改变

升了iOS9之后发现语言显示方面有问题,于是发现以下结论


iOS7之前是

zh-Hans: 简体
zh-Hant: 繁体


iOS8之前是
zh-Hans: 简体
zh-Hant: 繁体
zh-HK: 香港繁体(增加)


iOS9是
zh-Hans-CN: 简体(改变)
zh-Hant-CN: 繁体(改变)
zh-HK: 香港繁体

zh-TW:  台湾繁体(增加)

另外模拟器出现的是zh-Hans-US,因此推测,后缀和当前设备的购买地区有关

没错,iOS9中改变了原有简繁体的判断依据,因此如果之前项目支持多国语言,且使用了zh-Hans或者zh-Hant的,恭喜你,你中招了,更新应用吧。。


获取当前语言

ios系统中,本地语言是存在NSUserDefaults中的一个Key-Value;其中Value是一个数组;数组的第一个元素就是当前语言;所以我们只需要取出数组的第一个元素即可;
具体代码如下:

//获取当前设备语言
1.NSArray *appLanguages = [[NSUserDefaults standardUserDefaults] objectForKey:@"AppleLanguages"];
2.NSString *languageName = [appLanguages objectAtIndex:0];

获取当前设备支持的所有语言

调用NSLocale::availableLocaleIdentifiers 以及 NSLocale::componentsFromLocaleIdentifier: 这些接口

// 获取当前设备支持语言数组
1.NSArray *arr = [NSLocale availableLocaleIdentifiers];

显示返回数组一部分内容:

    (
    eu,
    "hr_BA",
    "en_CM",
    "rw_RW",
    "en_SZ",
    "tk_Latn",
    "he_IL",
    ar,
    "uz_Arab",
    "en_PN",
    as,
    "en_NF",
    "rwk_TZ",
    "zh_Hant_TW",
    "gsw_LI",
    "th_TH",
    "ta_IN",
    "es_EA",
    "fr_GF",
    "ar_001",
    "en_RW",
    "tr_TR",
    "de_CH",
    "ee_TG",
    "en_NG",
    "fr_TG"
0 条评论
发表一条评论