项目需要根据用户的首选语言来选择切换繁体或者简体
那么如何获取首选语言?
NSArray *languages = [NSLocale preferredLanguages];
NSString *currentLanguage = [languages objectAtIndex:0];
NSLog( @"%@" , currentLanguage);
或者
NSUserDefaults * defaults = [NSUserDefaults standardUserDefaults];
NSArray * allLanguages = [defaults objectForKey:@"AppleLanguages"];
NSString * preferredLang = [allLanguages objectAtIndex:0];
但是返回的值在不同的系统版本略有些不同,以下是详细的列表
iOS7
zh-Hans: 简体
zh-Hant: 繁体
iOS8
zh-Hans: 简体
zh-Hant: 繁体
zh-HK: 香港繁体(增加)
iOS9
zh-Hans-CN: 简体(改变)
zh-Hant-CN: 繁体(改变)
zh-HK: 香港繁体
zh-TW: 台湾繁体(增加)
iOS 10
zh-Hans-CN 简体
yue-Hans-CN 粤语 简体 (增加)
yue-Hant-CN 粤语 繁体 (增加)
zh-Hant-CN 繁体
zh-Hant-MO 澳门繁体 (改变)
zh-Hant-TW 台湾繁体 (改变)
zh-Hant-HK 香港繁体 (改变)
参考的判断代码
BOOL isZhHans()
{
NSString *pfLanguageCode = [NSLocale preferredLanguages][0];
if ([pfLanguageCode isEqualToString:@"zh-Hans"] ||
[pfLanguageCode hasPrefix:@"yue-Hans"] ||
[pfLanguageCode hasPrefix:@"zh-Hans"])
{
return YES;
}
else
{
return NO;
}
}
BOOL isZhHant()
{
NSString *pfLanguageCode = [NSLocale preferredLanguages][0];
if ([pfLanguageCode isEqualToString:@"zh-Hant"] ||
[pfLanguageCode hasPrefix:@"zh-Hant"] ||
[pfLanguageCode hasPrefix:@"yue-Hant"] ||
[pfLanguageCode isEqualToString:@"zh-HK"] ||
[pfLanguageCode isEqualToString:@"zh-TW"]
)
{
return YES;
}
else
{
return NO;
}
}
网友评论