【问题标题】:get cultureinfo with country code获取带有国家代码的文化信息
【发布时间】:2009-10-11 14:19:45
【问题描述】:

我尝试使用国家/地区代码获取 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 有什么建议吗?

【问题讨论】:

    标签: ip-address culture cultureinfo


    【解决方案1】:

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

    例如,

    接受语言:en-us,en

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

      • 是的,你是对的,如果我能从 IP 地址中获取 CultureName 会更好吗?有什么方法或什么是使用 IP 地址进行本地化的最佳方法?
      【解决方案3】:

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

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

      【讨论】:

      【解决方案4】:

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

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

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-04-09
        • 2017-04-09
        • 1970-01-01
        • 1970-01-01
        • 2016-06-11
        • 1970-01-01
        • 2016-11-27
        • 1970-01-01
        相关资源
        最近更新 更多