Question

Je construis une application Web ASP.NET et toutes mes chaînes sont stockées dans un fichier de ressources. J'aimerais ajouter une deuxième langue à mon application et, idéalement, j'aimerais détecter automatiquement la langue du navigateur de l'utilisateur (ou la langue de Windows), par défaut, au lieu de leur demander de choisir autre chose que l'anglais. Actuellement, je gère manuellement toute la population de ressources. Il est donc trivial d'ajouter un deuxième fichier de ressources et une langue si je disposais d'un moyen facile de déterminer automatiquement la langue à afficher.

Quelqu'un a-t-il agi de la sorte ou avez-vous une idée de la manière dont je pourrais récupérer cette valeur? Comme ASP.NET est basé sur un serveur, je ne semble pas avoir accès à des paramètres de navigateur spécifiques.

RÉSOLUTION : Voici ce que j'ai fini par faire. J'ai utilisé un " Pour chaque " pour passer par "HttpContext.Current.Request.UserLanguages" et rechercher celui que je soutiens. En fait, je vérifie simplement les deux caractères de gauche, car nous ne prenons pas encore en charge de dialectes - juste l'anglais et l'espagnol Merci pour toute l'aide!

Était-ce utile?

La solution

This article (lié à archive.org car le lien d'origine est maintenant mort) pourrait être utile pour détecter automatiquement les paramètres de langue du navigateur.

[EDIT] Oui. L'article cité n'utilise pas ASP.NET. Cet article le fait.

Autres conseils

Essayez ceci dans le fichier web.config:

<globalization culture="auto" uiCulture="auto" />

Ainsi, ASP.NET détectera automatiquement la culture du client à partir de l'en-tête de la demande. Vous pouvez également définir ceci page par page via l'attribut Page.

Request.UserLanguages ??dans ASP.NET 4 analyse cela sous forme de tableau de chaînes.

Bonne information: http://www.w3.org/Protocols/rfc2616 /rfc2616-sec14.html

C’est une excellente question, car la localisation dans ASP.NET est ignorée par de nombreux développeurs.

ASP.NET devrait saisir automatiquement les paramètres du navigateur de l'utilisateur et forcer le CultureInfo.CurrentCulture dans la langue du navigateur de l'utilisateur. Vous pouvez forcer le problème avec une ligne dans Page_OnInit () comme suit:

Thread.CurrentThread.CurrentCulture = new CultureInfo(HttpContext.Current.Request.UserLanguages[0]);

Comment pouvez-vous tester cela? Entrez le panneau de langues sur notre navigateur et modifiez les paramètres.

Le client définit généralement le langage Accept-Language dans l'en-tête de la requête HTTP avec une valeur quantitative. liste notée de la langue préférée, classiquement (mais pas nécessairement) par ordre de préférence pour moins favorisé. Vous pouvez analyser cela, mais comme l'a noté Maxam, ASP.NET dispose d'un mécanisme. pour le faire en votre nom.

    /// <summary>
    /// Sets a user's Locale based on the browser's Locale setting. If no setting
    /// is provided the default Locale is used.
    /// </summary>

public static void SetUserLocale(string CurrencySymbol, bool SetUiCulture)
{
    HttpRequest Request = HttpContext.Current.Request;
    if (Request.UserLanguages == null)
        return;

    string Lang = Request.UserLanguages[0];
    if (Lang != null)
    {
        // *** Problems with Turkish Locale and upper/lower case
        // *** DataRow/DataTable indexes
        if (Lang.StartsWith("tr"))
            return;

        if (Lang.Length < 3)
            Lang = Lang + "-" + Lang.ToUpper();
        try
        {
            System.Globalization.CultureInfo Culture = new System.Globalization.CultureInfo(Lang);
            if (CurrencySymbol != null && CurrencySymbol != "")
                Culture.NumberFormat.CurrencySymbol = CurrencySymbol;

            System.Threading.Thread.CurrentThread.CurrentCulture = Culture;

            if (SetUiCulture)
                System.Threading.Thread.CurrentThread.CurrentUICulture = Culture;
        }
        catch
        { ;}
    }
}

La source de cet article est ici: Comment détecter la langue du navigateur

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