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!

Était-ce utile?

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.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top