使用NSLocaleCountryCode的国家/地区列表

时间:2011-08-24 00:28:55

标签: iphone objective-c nslocale

我希望能够根据用户位置更改应用。我使用下面的代码:

NSLocale *locale = [NSLocale autoupdatingCurrentLocale];
    NSString *countryCode = [locale objectForKey: NSLocaleCountryCode];
    NSString *countryName = [locale displayNameForKey: NSLocaleCountryCode value: countryCode];
    NSLog(@"countryName %@", countryName);

效果很好,但我想知道countryName将如何显示,所以我可以设置开关案例,如果你不知道每个国家的拼写方式,这很难:美国,美国美国,美国等等。有Apple的countryCode列表,我找不到。

还有办法确保结果是英文的吗?

3 个答案:

答案 0 :(得分:8)

Apple使用ISO standard ISO-3166

答案 1 :(得分:6)

“ISO标准ISO-3166”在大多数情况下都是准确的,但请尝试在iOS设置中选择“Europe”作为区域。您将获得“150”的返回值。为什么“150”?看起来像是这里的地区代码:http://en.wikipedia.org/wiki/UN_M.49。或者从这里:http://site.icu-project.org/design/t/territory-region-apis

答案 2 :(得分:2)

NSLocaleCFLocale获取数据,然后从 ICU - International Components for Unicode获取数据(Apple保留副本here)。文件/icuSources/common/uloc.cpp几乎包含了我们通常看到的所有信息。

但是,/cldrFiles/supplementalData.xml可能是主要来源。此文件来自CLDR - Unicode Common Locale Data Repository