iOS获取系统语言有三种方法、话不多说、直接贴代码、如有错误 请留言指正。
方法一:
读取本机设置的语言列表,获取第一个语言,该方法读取的语言为:国际通用语言Code+国际通用国家地区代码,
所以实际上想获取语言还需将国家地区代码剔除
代码:
NSString *languageList = [[NSUserDefaults standardUserDefaults] objectForKey:@"AppleLanguages"] ;// 本机设置的语言列表
NSLog(@"languageList : %@", languageList);
NSStrting *languageCode = [languageList firstObject];// 当前设置的首选语言
NSString *countryCode = [NSString stringWithFormat:@"-%@", [[NSLocale currentLocale] objectForKey:NSLocaleCountryCode]];
if (languageCode) {
languageCode = [languageCode stringByReplacingOccurrencesOfString:countryCode withString:@""];
}
NSLog(@"languageCode : %@", languageCode);
日志:
2018-02-09 10:45:01.959412+0800 Demo[9528:2408422] languageList : (
"zh-Hans-GB",
"zh-Hant-GB",
"en-GB",
"zh-Hant-HK",
"ja-GB",
"de-GB",
"es-GB",
"fr-GB",
"ru-GB",
"ko-GB"
)
2018-02-09 10:45:01.959781+0800 Demo[9528:2408422] languageCode : zh-Hans
方法二:和方法一大同小异
代码:
NSString *languageCode = [NSLocale preferredLanguages][0];// 返回的也是国际通用语言Code+国际通用国家地区代码
NSString *countryCode = [NSString stringWithFormat:@"-%@", [[NSLocale currentLocale] objectForKey:NSLocaleCountryCode]];
if (languageCode) {
languageCode = [languageCode stringByReplacingOccurrencesOfString:countryCode withString:@""];
}
NSLog(@"languageCode : %@", languageCode);
日志:
2018-02-09 10:45:01.959781+0800 Demo[9528:2408422] languageCode : zh-Hans
方法三:
直接也最简单,但是在iOS11上有个Bug,即在iPhone->通用->语言与地区 添加了简体中文、English,并将中文设置默认语言的情况下,该函数返回的必定是英文。
NSString *languageCode = [NSLocale currentLocale].languageCode;// 当前设置的首选语言