使用国家/地区代码获取cultureinfo

时间:2009-10-11 14:19:45

标签: ip-address culture cultureinfo

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

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

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

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

4 个答案:

答案 0 :(得分:2)

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

如,

接受语言:en-us,en

答案 1 :(得分:1)

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

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

答案 2 :(得分:1)

官方公共标准是最好的使用来源。 请参阅http://cldr.unicode.org/上的“CLDR - Unicode公共区域设置数据存储库”。

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

答案 3 :(得分:0)

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

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

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

如果这个国家有不止一种文化,那么我就按照Doug Domeny建议的方法进行。