【问题标题】:How to get language without country from CultureInfo如何从 CultureInfo 获取没有国家/地区的语言
【发布时间】:2010-12-02 23:32:02
【问题描述】:

有谁知道在 ASP.Net 中如何在没有国名的情况下获取当前文化的语言? 我知道这种不变的文化没有这个问题,但我不知道如何在不指定明确语言的情况下创建它们。我想显示活动语言,在 nl-nl 中,这是荷兰语(荷兰)。

这就是我设置 currentCulture 的方式:

private void Application_BeginRequest(Object source, EventArgs e)
{
    string[] languages = HttpContext.Current.Request.UserLanguages;
    string language = languages[0].ToLowerInvariant().Trim();
    if (!string.IsNullOrEmpty(language))
    {
        System.Threading.Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo(language);
        System.Threading.Thread.CurrentThread.CurrentCulture = System.Globalization.CultureInfo.CreateSpecificCulture(language);
    }
}

就我而言,文化是“nl-nl”。问题是使用 CurrentCulture.EnglishName 时网站上显示的内容是“Dutch (Netherlands)”。 我只想看荷兰语!

谢谢!

【问题讨论】:

    标签: c# asp.net cultureinfo


    【解决方案1】:

    CultureInfo 对象包含名为 Parent 的属性 - 如果已设置,则存在具有所需 EnglishName = Dutch 的 CultureInfo

    【讨论】:

      【解决方案2】:

      简单:

      CultureInfo ci = CultureInfo.GetCultureInfo ("nl-nl");
      
      if( ci.IsNeutralCulture )
      {
          Console.WriteLine (ci.EnglishName);
          Console.WriteLine (ci.NativeName);
      }
      else
      {
          Console.WriteLine (ci.Parent.EnglishName);
          Console.WriteLine (ci.Parent.NativeName);
      }
      

      【讨论】:

      • 不幸的是,对于英国 (gb),它的结果是 Unknown Language (gb) :(
      • 有没有办法通过绑定来做到这一点?
      • “IsNeutralCulture”的意思是“……与语言相关的语言和区域参数,但与国家或地区无关。它不同于特定的语言和区域参数,它们都与语言和国家或地区。例如,fr 是中性法语的名称,fr-FR 是法语的名称和法国的地区设置。"
      【解决方案3】:

      您可以使用 HTTP_ACCEPT_LANGUAGE 对象。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-01-11
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多