2009-10-01 6 views
15

Kennt jemand in ASP.Net, wie man die Sprache der aktuellen Kultur ohne seinen Ländername bekommt? Ich weiß, dass diese invariante Kultur dieses Problem nicht hat, aber ich weiß nicht, wie man sie erstellt, ohne eine explizite Sprache anzugeben. Ich möchte die aktive Sprache anzeigen und in NL-NL ist dies Niederländisch (Niederlande). DieseWie bekomme ich Sprache ohne Land von CultureInfo

ist, wie ich die Current gesetzt:

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

In meinem Fall ist die Kultur "nl-nl". Problem ist, dass bei Verwendung von CurrentCulture.EnglishName auf der Website "Dutch (Netherlands)" angezeigt wird. Ich will nur Niederländisch sehen!

Danke!

Antwort

36

Einfach:

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

Danke! wusste nicht, dass es so offensichtlich war! MSDN hat mir nichts gesagt ... – Peter

+0

Awesome ..... :) –

+0

Leider, für Großbritannien (gb), ergibt es 'Unknown Language (gb)' :( –

6

Cultureinfo-Objekt enthält Eigenschaft namens Elternteil - wenn es dann gesetzt ist, dann gibt es mit Culture gewünschten EnglishName = Dutch

0

Sie das HTTP_ACCEPT_LANGUAGE Objekt verwenden können.

Verwandte Themen