如何从CultureInfo获得没有国家的语言

时间:2009-10-01 12:12:49

标签: c# asp.net cultureinfo

有没有人知道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时网站上显示的是“荷兰语(荷兰)”。 我只想看荷兰人!

谢谢!

3 个答案:

答案 0 :(得分:39)

简单:

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

答案 1 :(得分:6)

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

答案 2 :(得分:-1)

您可以使用HTTP_ACCEPT_LANGUAGE对象。