2009-10-01 11 views
15

Est-ce que quelqu'un sait dans ASP.Net comment obtenir la langue de la culture actuelle sans son nom de pays? Je sais que cette culture invariante n'a pas ce problème, mais je ne sais pas comment les créer sans spécifier un langage explicite. Je veux afficher la langue active et en nl-nl c'est le néerlandais (Pays-Bas).Comment obtenir la langue sans le pays de CultureInfo

Voilà comment je mis le 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); 
    } 
} 

Dans mon cas, la culture est "nl-nl". Le problème est que ce qui est montré sur le site en utilisant CurrentCulture.EnglishName est "Dutch (Netherlands)". Je veux seulement voir le néerlandais!

Merci!

Répondre

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

Merci! Je ne savais pas que c'était si évident! MSDN ne m'a rien dit ... – Peter

+0

Génial ..... :) –

+0

Malheureusement, pour la Grande-Bretagne (gb), il en résulte 'Unknown Language (gb)' :( –

6

objet CultureInfo contient propriété appelée Parent - si elle est réglée alors alors il est CultureInfo avec Simple désiré EnglishName = Néerlandais

0

Vous pouvez utiliser l'objet HTTP_ACCEPT_LANGUAGE.

Questions connexes