7

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

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

效果很好,但我想知道countryName's 将如何显示,所以我可以设置 switch case's,如果您不知道每个国家/地区的拼写方式,这很难:USA、United States、United States of America 等. 有没有来自 Apple 的 countryCode 列表,我找不到。

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

4

3 回答 3

10

Apple 使用ISO-3166 标准

于 2011-08-24T02:21:21.547 回答
7

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

于 2014-08-21T07:05:58.660 回答
2

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

但是,/cldrFiles/supplementalData.xml可能是主要来源。该文件来自CLDR-Unicode 通用语言环境数据存储库

于 2016-02-03T15:58:12.040 回答