获取iOS当前语言(包括国家/地区代码)

has*_*svn 11 country-codes ios

我需要得到一个字符串像en_USes_ESiOS中.

显而易见的方法是使用[NSLocale currentLocale]并从那里获取语言信息.但是,这会为您提供"区域格式"而不是实际的设备语言,这意味着如果您使用英语设备语言但区域格式为"西班牙",则会错误地报告es_ES.

如果您需要设备语言,则必须执行以下操作: [[NSLocale preferredLanguages] objectAtIndex:0]

但是,这只会为您提供语言,因此您可以获得类似enes最终没有国家/地区代码的内容.

我如何正确获取国家代码,就像Safari一样?

Man*_*rig 3

尝试使用以下代码:

NSString *locale = [[NSLocale currentLocale] localeIdentifier];
NSRange startRange = [locale rangeOfString:@"_"];
NSString *result = [locale stringByReplacingCharactersInRange:NSMakeRange(0, startRange.length+1) withString:[[NSLocale preferredLanguages] objectAtIndex:0]];
DebugLog(@"current locale: %@", result);
Run Code Online (Sandbox Code Playgroud)