2009-10-01 7 views
15

Czy ktoś wie w ASP.Net, jak uzyskać język currentculture bez jego nazwy kraju? Wiem, że te niezmienne kultury nie mają tego problemu, ale nie wiem, jak je utworzyć bez określenia jawnego języka. Chcę wyświetlić aktywny język, aw języku nl-nl jest to język holenderski (Holandia).Jak uzyskać język bez kraju z CultureInfo

ten sposób ustawić 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); 
    } 
} 

W moim przypadku, kultura jest "nl-nl". Problem polega na tym, że to, co jest wyświetlane na stronie podczas korzystania z CurrentCulture.EnglishName, to "Dutch (Netherlands)". Chcę tylko zobaczyć holenderski!

Dzięki!

Odpowiedz

36

prosty:

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

Dzięki! nie wiedziałem, że to było takie oczywiste! MSDN nie powiedział mi nic ... – Peter

+0

Awesome ..... :) –

+0

Niestety, dla Wielkiej Brytanii (gb), wynik "Unknown Language (gb)' :( –

6

CultureInfo obiekt zawiera właściwość o nazwie dominującej - jeśli jest ustawiony to wtedy nie ma CultureInfo z żądanym EnglishName = Dutch

0

Można użyć obiektu HTTP_ACCEPT_LANGUAGE.