Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/328.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 什么是「;国际";NET中的英语文化?_C#_.net_Wpf_Localization_Cultureinfo - Fatal编程技术网

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;
}