Comment obtenir la langue sans pays de CultureInfo
-
19-09-2019 - |
Question
Quelqu'un sait-il dans ASP.Net comment obtenir la langue du CurrentCulture sans elle est countryname? Je sais que cette culture ne invariant de 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 est ce Néerlandais (Pays-Bas).
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 affiché sur le site lors de l'utilisation CurrentCulture.EnglishName est « néerlandais (Pays-Bas) ». Je veux seulement voir néerlandais!
Merci!
La solution
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);
}
Autres conseils
objet CultureInfo contient propriété appelée Parent - si elle est réglée alors alors il y a CultureInfo avec souhaité EnglishName = néerlandais
Vous pouvez utiliser l'objet HTTP_ACCEPT_LANGUAGE.