2009-10-01 82 views
15

有没有人知道ASP.Net如何获得当前文化的语言没有它的国名? 我知道这种不变的文化没有这个问题,但我不知道如何在没有指定显式语言的情况下创建它们。我想显示活跃的语言,并且在NL-NL这是荷兰语(荷兰)。如何从没有国家的语言获取语言CultureInfo

我这是怎么设置的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时,网站上显示的内容是“荷兰语(荷兰)”。 我只想看荷兰!

谢谢!

回答

36

简单:

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

谢谢!不知道这是明显的! MSDN没有告诉我什么... – Peter 2009-10-01 13:05:26

+0

真棒..... :) – 2015-05-05 13:55:22

+0

不幸的是,对于英国(GB),它的结果'未知的语言(GB)':( – 2017-07-19 08:54:32

6

CultureInfo对象包含属性调用父 - 如果它的设置,那么再有就是CultureInfo的与期望的中文名=荷兰

0

可以使用HTTP_ACCEPT_LANGUAGE对象。