C# 如何获取c语言国家的主要文化信息?
我正在开发一个asp.NETMVC应用程序,需要对货币格式进行本地化。 因此,我决定让用户选择可以使用RegionInfo查找货币符号的国家,并在CultureInfo上运行查询,并将第一个结果设置为用户的区域性。 这是我的密码: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
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来说更为生态。我认为猜测不是个好主意。