2009-10-01 19 views
15

¿Alguien sabe en ASP.Net cómo obtener el idioma de la cultura actual sin su nombre de país? Sé que esta cultura invariable no tiene este problema, pero no sé cómo crearlos sin especificar un lenguaje explícito. Quiero mostrar el idioma activo y en nl-nl esto es holandés (Países Bajos).Cómo obtener un idioma sin país de CultureInfo

Así es como me puse el 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); 
    } 
} 

En mi caso, la cultura es "nl-NL". El problema es que lo que se muestra en el sitio cuando se usa CurrentCulture.EnglishName es "Holandés (Países Bajos)". ¡Solo quiero ver holandés!

Gracias!

Respuesta

36

simple:

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

Gracias! ¡No sabía que era tan obvio! MSDN no me dijo nada ... – Peter

+0

Impresionante ..... :) –

+0

Desafortunadamente, para Gran Bretaña (gb), resulta 'Idioma desconocido (gb)' :( –

6

objeto CultureInfo contiene propiedad llamada Padres - si se fija a continuación, entonces hay CultureInfo con EnglishName deseada = holandesa

0

Usted puede utilizar el objeto HTTP_ACCEPT_LANGUAGE.

Cuestiones relacionadas