我尝试使用国家/地区代码获取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有什么建议吗?
答案 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建议的方法进行。