【问题标题】:What is the "international" english culture in .NET?.NET 中的“国际”英语文化是什么?
【发布时间】:2014-08-26 10:22:02
【问题描述】:

我有一个本地化的应用程序,我想将英语设置为默认语言,但使用“国际”格式:

  • 日期格式 (dd/MM/yy - 31/12/2014)
  • 逗号“,”作为小数分隔符 (0,5 = 1/2)
  • 点“.”作为千位分隔符(1.000.000 = 一百万)

我想将此设置为全局应用设置,我无法为此使用注释(如其他帖子中所见),并且解决方案不应该是特定于视图的。

换句话说,我正在寻找“en-INTERNATIONAL”CultureInfo。

【问题讨论】:

  • 我认为它被称为中立文化,而不是特定区域的特定文化。你可以像这样创建一个: varculture=new CultureInfo("en");
  • 这会解决逗号作为小数点和点作为千位分隔符的问题吗?我不知道有任何使用这种格式的英语国家。
  • 它不仅仅适用于英语国家。在大多数国家/地区,日期为 dd/MM/yy,逗号是小数分隔符,英语是大多数人都能理解的语言。
  • @flo_badea 更改为“en”仍然具有 en-US 的日期和数字格式。对于某些 UI 内容,WPF 默认为 en-US。感谢您的建议。
  • 这是因为中立文化与特定的美国文化非常接近。

标签: c# .net wpf localization cultureinfo


【解决方案1】:

我对此不是 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,但是日期呢?
  • 我们在英国使用 dd/MM/yyyy,所以 en-GB 应该满足该要求。
【解决方案2】:

改编自 blackn1ght 对 WPF 的回答(按照最初的要求)

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

英国使用日期格式 dd/MM/yyyy,因此 en-GB 应满足该要求。

【讨论】:

  • 所以你的问题是错的?您不想要国际格式,您想要特定格式?
  • @Herdo 你对国际格式的理解是什么?我想要 dd/MM/yy 日期格式的英语语言,点作为千位分隔符,逗号作为小数分隔符。
  • ISO 8601 是日期和时间格式的国际标准。您不能使用货币的标准格式,因为这取决于货币。有official guidelines 例如为欧元。您可以查看this post 了解更多信息。在本地化应用程序时,您应该对所有内容都使用一种格式。您应该根据规则调整您的应用程序。
  • 感谢@Herdo 提供的链接。我知道不是每个国家都有一个标准,这就是我本地化我的应用程序的原因。问题是,我想要最中立的东西来避免本地化到世界上每个国家。我需要在某个地方做出妥协。
  • 无需针对每个国家/地区进行本地化。 Microsoft 已经为您做到了这一点。如果你使用操作系统提供的文化,你会没事的。如果您对数据进行反序列化/序列化,无论如何它将以 .NET 格式存储。并且以您的 loca 样式显示数据更令人愉悦,因为您可能无法正确理解其他格式。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-01-24
  • 1970-01-01
  • 2012-07-15
  • 1970-01-01
  • 1970-01-01
  • 2016-01-01
  • 1970-01-01
相关资源
最近更新 更多