web-dev-qa-db-fra.com

Comment obtenir les préférences locales actuelles du navigateur en utilisant javascript?

Est-ce que quelqu'un sait comment obtenir la culture de navigateur de Firefox et Google Chrome en utilisant javascript? Remarque: Ceci est une application Web asp.net 3.5.

L'exigence est d'essayer de définir la culture d'affichage de l'application en fonction de la culture du navigateur. J'ai trouvé très peu d'éléments d'information pour les autres navigateurs, mais ils ne semblent pas fonctionner.

Je suis capable de l'obtenir dans IE avec l'extrait de code suivant:

var browserCulture = this.clientInformation.browserLanguage;

Toute info serait formidable!

35
The Sheek Geek

Les propriétés suivantes existent sur l'objet navigator (qui peut également être appelé clientInformation sur IE mais il n'y a aucune raison d'utiliser ce nom):

  • language (non-IE, langue d'installation du navigateur)
  • browserLanguage (IE, langue d'installation du navigateur)
  • userLanguage (IE, paramètre de langue au niveau du système d'exploitation utilisateur)
  • systemLanguage (IE, langue d'installation du système d'exploitation)

Mais! Vous ne devriez jamais utiliser ces propriétés! Ils seront la mauvaise langue dans de nombreux cas.

Aucun d’entre eux ne reflète les paramètres de langue que l’utilisateur peut réellement configurer dans l’interface utilisateur «langues préférées» du navigateur, et il est difficile, voire impossible, pour les utilisateurs de les modifier. Vous allez créer une grande frustration en utilisant l’une de ces valeurs sans passer par un moyen manuel simple supplémentaire pour changer de langue.

L'emplacement correct que vous devez rechercher pour choisir la langue à utiliser par défaut, tel que configuré par l'interface utilisateur normale du navigateur, est l'en-tête Accept-Language transmis à votre serveur dans la requête HTTP. Il s'agit d'une liste classée des langues préférées dans lesquelles vous pouvez choisir, et c'est ce que ASP.NET utilise pour deviner une culture client automatique, si vous l'utilisez.

Malheureusement, cette propriété n'est pas disponible à partir de JavaScript!

En général, vous utilisez votre côté serveur pour analyser l'en-tête Accept-Language et choisir une seule langue appropriée à utiliser. Dans ASP.NET, vous pouvez obtenir une liste pré-triée à partir de HttpRequest.UserLanguages ​​ et choisir la première qui vous convient.

Vous crivez ensuite ce nom de langue dans un élément <script> pour transmettre les informations de langue au côté client.

68
bobince

Essaye ça:

var l_lang;
  if (navigator.userLanguage) // Explorer
    l_lang = navigator.userLanguage;
  else if (navigator.language) // FF
    l_lang = navigator.language;
  else
    l_lang = "en";

Source: http://forums.digitalpoint.com/showthread.php?t=631706

12
Sologoub

navigator.languages est un tableau et contient toutes les langues sélectionnées dans l'ordre. Et ne fonctionne que pour Chrome et Firefox.

Ce n'est pas la même chose que navigator.language et par là je veux dire que navigator.language ne correspond pas nécessairement à navigator.languages[0].

Juste pour être clair.

6
Mats

Pour obtenir les paramètres régionaux dans IE, vous devez écrire le code côté serveur. J'ai essayé avec servlet et ai obtenu la langue d'acceptation de l'IE. Il affiche les langues sélectionnées par l'utilisateur. Appelez le servlet de votre côté client et obtenez les paramètres régionaux.

String name=request.getHeader("accept-language");
        AcceptClass ac=new AcceptClass();
        ac.setAccLang(name);
        Gson gs=new Gson();
          String json = gs.toJson(ac);
          response.setContentType("application/json");
          response.getWriter().write(json);
0
Prithivi Thiyagu