2

我尝试使用国家代码获取 CultureInfo。我正在使用 hostip.info 获取国家代码。

例如,“ http://api.hostip.info/?ip=207.46.197.32&position=true ”返回“美国”作为国家代码或http://api.hostip.info/?ip=82.151.131.196&position =true返回“TR”。

如果我可以有“en-US”、“tr-TR”,这很容易,但我不能有这些文化名称。我有国家代码。

那么有什么方法可以获取带有国家代码的 CultureInfo,或者您对获取带有 IP 地址的 CultureInfo 有什么建议吗?

4

4 回答 4

2

如果请求是由浏览器发出的,HTTP 请求标头中的“Accept-Language”字段将列出所需的文化。当然,它不是来自 IP,但如果您有 HTTP 请求标头,它可能是一个解决方案。

例如,

接受语言:en-us,en

于 2010-04-14T21:42:35.793 回答
1

我不确定您是否可以在实践中做到这一点。

如果您将瑞士、加拿大或印度作为国家/地区代码,您想要哪种语言?

于 2009-10-11T14:26:35.063 回答
1

官方公共标准是最好的使用来源。请参阅http://cldr.unicode.org/上的“CLDR - Unicode Common Locale Data Repository” 。

数据文件可供下载。提供了有趣的文档和建议。

于 2011-02-04T19:40:30.280 回答
0

我遇到了同样的问题,因为我从第三方 IP 本地化库中获得了国家代码。所以,这是我的解决方案。

首先,我尝试通过国家代码获取文化信息。如果失败,我检索所有文化信息,然后搜索包含国家名称的信息(也可能是国家代码(美国)包含在CultureInfo.Name字段(en-US)中)

ci = CultureInfo.GetCultures(CultureTypes.AllCultures).Where(c => c.EnglishName.Contains(loc.countryName)).FirstOrDefault();

如果这个国家有不止一种文化,那么我遵循 Doug Domeny 建议的方法

于 2011-12-20T20:32:31.540 回答