348 votes

Meilleur moyen de déterminer les paramètres régionaux de l'utilisateur dans le navigateur

J'ai un site web (Flash), localisées dans une douzaine de langues et je veux auto-définir une valeur par défaut en fonction de l'utilisateur et les paramètres du navigateur afin de réduire au minimum les étapes pour accéder au contenu.

Pour info, je ne peux pas utiliser le serveur de scripts en raison de proxy restrictions, donc je suppose que JavaScript ou ActionScript serait approprié pour résoudre le problème.

Questions:

  1. Quelle serait la meilleure méthode pour "deviner" la locale de l'utilisateur ?

  2. Existe-t-il de simples classes/fonctions qui pourraient m'aider (pas de complexes de faisceaux) ? Spécialement pour briser toutes les langues possibles dans un plus petit nombre (les traductions que j'ai) sur une façon intelligente .

  3. À quel point puis-je confiance à une telle solution ?

  4. Toutes les autres solutions de contournement ou des suggestions ?

Merci à l'avance!

272voto

bobince Points 270740

La bonne façon est de regarder les HTTP Accept-Language - tête envoyé au serveur. Il contient la commande, pondérée de la liste des langues que l'utilisateur a configuré son navigateur à préférer.

Malheureusement, cet en-tête n'est pas disponible pour la lecture à l'intérieur de JavaScript; tout ce que vous obtenez est navigateur.la langue, qui vous indique quels sont localisées version du navigateur web a été installé. Ce n'est pas nécessairement la même chose que la langue du visiteur(s). Sur IE vous obtenez plutôt systemLanguage (OS installé langue), browserLanguage (même en tant que "langue") et userLanguage (configuré par l'utilisateur de l'OS de la région), qui sont tous de la même façon inutile.

Si j'avais à choisir entre ces propriétés, j'avais sniff pour ‘userLanguage "d'abord, la chute de retour à la "langue" et seulement après cela, (si ceux-ci ne correspond pas à toutes les langues disponibles) en regardant ‘browserLanguage "et enfin "systemLanguage'.

Si vous pouvez mettre un script côté serveur quelque part sur le net qui lit simplement l'-tête Accept-Language et le reproduit comme un fichier JavaScript avec la valeur d'en-tête dans la chaîne, par exemple.:

var acceptLanguage= 'en-gb,en;q=0.7,de;q=0.3';

ensuite, vous pouvez inclure un <script src> pointant sur ce service externe dans le HTML, et JavaScript pour analyser la langue de l'en-tête. Je ne sais pas du tout existant de la bibliothèque de code pour ce faire, cependant, puisque Accepter d'analyse de Langage est presque toujours fait sur le côté serveur.

Tout ce que vous finissez par faire, vous avez certainement besoin d'un remplacement utilisateur car il sera toujours deviner mal pour certaines personnes. Souvent, il est plus facile de mettre le réglage de la langue dans l'URL (par exemple. http://www.example.com/en/site vs http://www.example.com/de/site), et de permettre à l'utilisateur de cliquer sur les liens entre les deux. Parfois, vous ne voulez qu'une seule URL pour les deux versions linguistiques, dans ce cas, vous devez enregistrer le réglage dans les cookies, mais cela peut confondre les agents utilisateurs avec pas de support pour les cookies et les moteurs de recherche.

58voto

Phil H Points 10133

Cet article suggère que les propriétés suivantes du navigateur navigator objet:

  • navigator.langue (Netscape Navigateur Localisation)
  • navigator.browserLanguage (c'est à dire Spécifique au Navigateur Langue Localisée)
  • navigator.systemLanguage (IE Spécifiques - système d'exploitation Windows - Langue Localisée)
  • navigator.userLanguage

Rouler dans une fonction javascript, et vous devriez être en mesure de deviner le droit de la langue, dans la plupart des circonstances. Assurez-vous de dégrader gracieusement, afin d'avoir un div contenant de votre choix de la langue des liens, de sorte que si il n'y a pas de javascript ou de la méthode ne fonctionne pas, l'utilisateur peut toujours décider. Si cela fonctionne, juste cacher la div.

Le seul problème avec ce côté client, c'est que soit vous servir de toutes les langues pour le client, ou vous devez attendre jusqu'à ce que le script a détecté la langue avant de demander la bonne version. Peut-être de servir le plus populaire de la version en langue en tant que par défaut les irritent le plus petit nombre de personnes.

Edit: j'avais deuxième Ivan le cookie de suggestion, mais assurez-vous que l'utilisateur peut toujours modifier la langue ultérieurement; pas tout le monde préfère la langue de leur navigateur par défaut.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X