C# 如何获取c语言国家的主要文化信息?

C# 如何获取c语言国家的主要文化信息?,c#,asp.net,.net,asp.net-mvc,C#,Asp.net,.net,Asp.net Mvc,我正在开发一个asp.NETMVC应用程序,需要对货币格式进行本地化。 因此,我决定让用户选择可以使用RegionInfo查找货币符号的国家,并在CultureInfo上运行查询,并将第一个结果设置为用户的区域性。 这是我的密码: public string GetPrimaryUICulture(string CountryCd) { CultureInfo Info; var _CultureInfox = new System.Globali

我正在开发一个asp.NETMVC应用程序,需要对货币格式进行本地化。 因此,我决定让用户选择可以使用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,那么从上述函数得到的结果为IN,我没有angularjs i18n文件;我所拥有的是hi IN

另一种解决方案是检索CultureInfo,它匹配为en-{{{CountryName}},但存在货币问题。对印度来说,这是可行的,但对马来西亚人来说,这是美元而不是RM

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


我希望你能理解我面临的问题,很抱歉我的英语不好,如果你需要进一步的澄清,请告诉我。

当它是web应用程序时,你可以简单地分析HTTP语言/区域设置标题,而不是试图从自定义字段猜测它

安装程序中的大多数浏览器首先设置了有效的区域设置

详情如下:


你是对的,但是,在我的例子中,我的主要浏览器语言设置为en my,货币格式是$,而不是RM,我期望的是主区域设置ms-my。但我认为,对于大多数人来说,将区域设置绑定到标准功能,并为高级用户提供自定义手动选择,对web来说更为生态。我认为猜测不是个好主意。