19

有谁知道 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)”。我只想看荷兰语!

谢谢!

4

3 回答 3

41

简单的:

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);
}
于 2009-10-01T12:22:19.467 回答
6

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

于 2009-10-01T12:18:45.063 回答
-3

您可以使用 HTTP_ACCEPT_LANGUAGE 对象。

于 2009-10-01T13:27:15.113 回答