我希望能够根据用户位置更改应用。我使用下面的代码:
NSLocale *locale = [NSLocale autoupdatingCurrentLocale];
NSString *countryCode = [locale objectForKey: NSLocaleCountryCode];
NSString *countryName = [locale displayNameForKey: NSLocaleCountryCode value: countryCode];
NSLog(@"countryName %@", countryName);
效果很好,但我想知道countryName
将如何显示,所以我可以设置开关案例,如果你不知道每个国家的拼写方式,这很难:美国,美国美国,美国等等。有Apple的countryCode列表,我找不到。
还有办法确保结果是英文的吗?
答案 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)
NSLocale
从CFLocale
获取数据,然后从
ICU - International Components for Unicode获取数据(Apple保留副本here)。文件/icuSources/common/uloc.cpp
几乎包含了我们通常看到的所有信息。
但是,/cldrFiles/supplementalData.xml
可能是主要来源。此文件来自CLDR - Unicode Common Locale Data Repository。