【问题标题】:.NET CultureInfo difference between ru and ru-RU.NET CultureInfo ru 和 ru-RU 之间的区别
【发布时间】:2013-10-15 10:02:16
【问题描述】:

我在 CultureInfo 课程中发现了一件有趣的事情。我正在用 ASP.NET 编写一个应用程序,我使用 Thread.CurrentThread.CurrentCulture 来获取当前选择的语言,并且:

Thread.CurrentThread.CurrentCulture = CultureInfo.GetCultureInfo(alias);

有两个地方我可以在一个地方设置当前线程的文化,就像这样:

  1. Thread.CurrentThread.CurrentCulture = CultureInfo.GetCultureInfo("ru");

  2. Thread.CurrentThread.CurrentCulture = CultureInfo.GetCultureInfo("ru-RU");

然后我突然发现文化(1)与文化(2)不同,但都是俄罗斯人。

是我做错了什么还是微软喝醉了?

编辑

@蒂姆·施梅尔特

        var culture = CultureInfo.GetCultureInfo("ru");
        var culture2 = CultureInfo.GetCultureInfo("ru-RU");
        if (Equals(culture, culture2))
        {
            Console.Write(true);
            return;
        }
        Console.Write(false);

问题是——“为什么微软将“ru”和“ru-RU”分开?

【问题讨论】:

  • Ru & ru-Ru 不是俄罗斯文化名称吗???
  • “不同”在什么方面? @Maris:不要喊!此外,无需冒犯 Sriram。
  • @SriramSakthivel:我知道。但Microsoft 喝醉了 只是一个非个人机构的单行字。称某些人喝醉是一种犯罪行为。
  • 同意蒂姆和@Maris 对不起,如果我冒犯了你。我们是来帮忙的。刚刚忘记。让我们看看问题:)
  • 请记住,不止一个地区或国家使用多种语言。例如,在许多国家(如哈萨克斯坦或拉脱维亚)使用俄语(少数族裔),因此未来 .NET 可能包括ru-KZru-LV 以及ru-RU 之外的文化。像西班牙语这样的语言已经有很多 CultureInfo(大约 20 个),包括 es-ES(西班牙语(西班牙))、es-AR(西班牙语(阿根廷))、es-US(西班牙语(美国))。

标签: c# .net cultureinfo


【解决方案1】:

这是因为CultureInfo.GetCultureInfo("ru") 返回NeutralCulture,而CultureInfo.GetCultureInfo("ru-RU") 返回SpecificCulture。 实际上,SpecificCulture 派生自 NeutralCulture。所以答案是否定的,它们不一样,并且具有不同的 LCID。

一般情况下,您应该始终使用 SpecificCulture。

关于CultureInfo建议阅读this MSDN article

【讨论】:

    【解决方案2】:

    ru 文化是中性的,这意味着它不能用于格式化和解析。另一方面,ru-RU 文化是特定的 (demo #1),因此您可以使用它来格式化和解析您的数据。

    比较两种文化的页面表明ru 具有ru-RU 提供的设置子集。

    除其他外,尝试将中性文化设置为线程的当前文化会导致异常 (demo #2 on Mono, does not crash on .NET 4.5)。

    【讨论】:

    • 您对演示 #2 的看法是错误的。我已经运行了这个:var culture = CultureInfo.GetCultureInfo("ru"); Thread.CurrentThread.CurrentCulture = culture; 没有任何运行时异常。(.NET 4.5)
    • @Maris 一个演示就是一个演示:它展示了一个事实,即当你做某件事时,有一个 C# 的实现(恰好是 Mono)会崩溃。它不会在其他系统上崩溃的事实令人鼓舞,但我认为很高兴知道它并不是普遍安全的。我编辑了答案以反映您的评论。
    猜你喜欢
    • 1970-01-01
    • 2019-01-16
    • 2022-11-12
    • 2021-08-25
    • 1970-01-01
    • 1970-01-01
    • 2017-09-26
    • 2018-04-27
    • 1970-01-01
    相关资源
    最近更新 更多