我需要在iOS中收到一个类似en_US或es_ES的字符串.
明显的方法是使用[NSLocale currentLocale]并从中获取语言信息.但是,这可以让您获得“区域格式”,而不是实际的设备语言,这意味着如果您将设备语言设置为英文,但区域格式为“西班牙”,则会错误地报告es_ES.
如果您需要设备语言,您必须这样做:
[[NSLocale preferredLanguages] objectAtIndex:0]
然而,这只会给你语言,所以你得到像en或es这样的东西,没有最后的国家代码.
解决方法
尝试使用此代码:
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);