【问题标题】:How to get the main CultureInfo for a country in c#?如何在 C# 中获取一个国家的主要 CultureInfo?
【发布时间】:2014-09-04 14:45:21
【问题描述】:

我正在开发一个需要本地化货币格式的 asp.net mvc 应用程序。 所以我决定让用户选择我可以使用 RegionInfo 查找货币符号并在 CultureInfo 上运行查询并将第一个结果设置为用户的文化的国家/地区。 这是我的代码:

        public string GetPrimaryUICulture(string CountryCd) {
        CultureInfo Info;
        var _CultureInfox = new System.Globalization.RegionInfo(CountryCd);
        var _CultureInfo = CultureInfo.GetCultures(CultureTypes.SpecificCultures).Where(c => c.Name.EndsWith(CountryCd)).ToList();
        if (_CultureInfo.Count == 0)
        {
            Info = new CultureInfo("en-US");
        }
        else
        {

            Info = _CultureInfo.Where(p => p.NumberFormat.CurrencySymbol == _CultureInfox.CurrencySymbol).FirstOrDefault();
           // Info = _CultureInfo.Where(p => p.TwoLetterISOLanguageName.Equals("en")).FirstOrDefault();
            if (Info == null)
            {
                Info = _CultureInfo.Where(p => p.TwoLetterISOLanguageName.Equals("en")).FirstOrDefault();
                if (Info == null)
                {
                    Info = _CultureInfo.FirstOrDefault();
                }
            }
        }
        return Info.Name;
    }

现在的问题是,如果我将 CountryCd 设置为“IN”,我从上述函数得到的结果是 as-IN,我没有 angularjs i18n 文件;我有的是hi-IN。

另一种解决方案是检索与 en-{{CountryName}} 匹配的 CultureInfo,但存在货币问题。对于印度,这行得通,但对于马来西亚(en-MY),它给出的是 $ 而不是 RM。

如果情况变得更糟,我必须硬编码为:如果 IN 则 hi-IN,如果 MY,则 ms-MY。如果是 CH,然后是 ZH-CN 等等……我真的不想这样做。

希望您能理解我所面临的问题,抱歉我的英语不好,如果您需要进一步说明,请告诉我。

【问题讨论】:

    标签: c# asp.net .net asp.net-mvc


    【解决方案1】:

    虽然它是 Web 应用程序,但您可以简单地分析 HTTP 语言/区域设置标头,而不是尝试从自定义字段中猜测它。

    大多数浏览器在设置中首先设置了有效的语言环境。

    在此详述:

    http://matthewwittering.com/blog/internationalization-localization/http-headers.html

    【讨论】:

    • 你是对的,但在我的情况下,我的主要浏览器语言设置为 en-MY,货币格式是 $ 而不是 RM,我期望的是主要语言环境 ms-MY。
    • 但我认为对于大多数人来说,将语言环境绑定到标准功能并为高级用户提供自定义手动选择更加“生态”。我认为猜测不是好主意。
    猜你喜欢
    • 1970-01-01
    • 2013-11-10
    • 1970-01-01
    • 1970-01-01
    • 2010-12-02
    • 2011-07-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多