C# 什么是「;国际";NET中的英语文化?
我有一个本地化的应用程序,我想将英语设置为默认语言,但使用“国际”格式:C# 什么是「;国际";NET中的英语文化?,c#,.net,wpf,localization,cultureinfo,C#,.net,Wpf,Localization,Cultureinfo,我有一个本地化的应用程序,我想将英语设置为默认语言,但使用“国际”格式: 日期格式(年月日-2014年12月31日) 逗号“,”作为十进制分隔符(0,5=1/2) 点“.”作为千位分隔符(1.000.000=一百万) 我想将此设置为全局应用程序设置,我无法使用此设置的注释(如其他帖子所示),并且解决方案不应是特定于视图的 换言之,我正在寻找一个“英语国际”文化信息。我不是100%了解这一点,所以如果我错了,请有人随时纠正我,但这可能有用: Global.asax.cs protect
- 日期格式(年月日-2014年12月31日)
- 逗号“,”作为十进制分隔符(0,5=1/2)
- 点“.”作为千位分隔符(1.000.000=一百万)
换言之,我正在寻找一个“英语国际”文化信息。我不是100%了解这一点,所以如果我错了,请有人随时纠正我,但这可能有用: Global.asax.cs
protected void Application_BeginRequest()
{
var cultureInfo = CultureInfo.GetCultureInfo("en-GB");
Thread.CurrentThread.CurrentCulture = cultureInfo;
Thread.CurrentThread.CurrentUICulture = cultureInfo;
var numberFormat = new NumberFormatInfo();
numberFormat.PercentDecimalSeparator = ",";
numberFormat.CurrencyDecimalSeparator = ",";
numberFormat.NumberDecimalSeparator = ",";
numberFormat.NumberGroupSeparator = ".";
Thread.CurrentThread.CurrentCulture.NumberFormat = numberFormat;
}
改编自blackn1ght对WPF的回答(如最初要求)
日期格式dd/MM/yyyy在英国使用,因此en GB应满足该要求。我认为它被称为中性区域性,而不是也指定区域的特定区域性。您可以这样创建一个:var culture=new CultureInfo(“en”);这能解决逗号作为小数点和点作为千位分隔符的问题吗?我不知道有哪个英语国家使用这种格式。它不仅仅针对英语国家。在大多数国家,日期是dd/MM/yy,逗号是小数点分隔符,英语是大多数人都能理解的语言。@flo_badea改为“en”时,日期和数字格式仍然是en-US。WPF在某些UI方面默认为en US。谢谢你的建议。这是因为中立文化与特定的美国文化非常接近。谢谢@blackn1ight,但是日期呢?我们在英国使用dd/MM/yyyy,因此英国国家应该满足该要求。那么你的问题是错的?你不想要国际格式,你想要一种特定的格式?@Herdo你对国际格式的理解到底是什么?我想要英文的dd/MM/yy日期格式,点作为千位分隔符,逗号作为十进制分隔符。这是日期和时间格式的国际标准。不能对货币使用标准格式,因为这取决于货币。例如,对于欧元来说,存在着许多问题。您可以查看以了解更多信息。在本地化应用程序时,不应该对所有内容都使用一种格式。你应该根据规则调整你的应用程序。谢谢@Herdo的链接。我知道不是每个国家都有一个标准,这就是我本地化我的应用程序的原因。问题是,我想要的是最中立的东西,以避免本地化到世界上每一个国家。我需要在某个地方做出妥协。没有必要在每个国家都进行本地化。微软已经为你做了这件事。如果您使用操作系统提供的区域性,您会很好。如果对数据进行反序列化,它将以.NET格式存储。以loca样式显示数据更令人愉快,因为您可能无法正确理解其他格式。
private void Application_Startup(object sender, StartupEventArgs e)
{
var cultureInfo = CultureInfo.GetCultureInfo("en-GB");
var numberFormat = new NumberFormatInfo();
numberFormat.PercentDecimalSeparator = ",";
numberFormat.PercentGroupSeparator = ".";
numberFormat.CurrencyDecimalSeparator = ",";
numberFormat.CurrencyGroupSeparator = ".";
numberFormat.NumberDecimalSeparator = ",";
numberFormat.NumberGroupSeparator = ".";
culture.NumberFormat = numberFormat;
Dispatcher.Thread.CurrentCulture = cultureInfo;
Dispatcher.Thread.CurrentUICulture = cultureInfo;
}