Détecter le langage préféré de l'utilisateur et Google Translate automatiquement

J'utilise ce script dans mon site pour la traduction

<div id="google_translate_element" align="center"></div> <script type="text/javascript"> function googleTranslateElementInit() { new google.translate.TranslateElement({ pageLanguage: 'auto', autoDisplay: false, layout: google.translate.TranslateElement.InlineLayout.SIMPLE }, 'google_translate_element'); } </script> <script src="//translate.google.com/translate_a/element.js?cb=googleTranslateElementInit"></script> 

Il fonctionne très bien 🙂 Mais y a-t-il un moyen de détecter l'utilisateur ip et de traduire automatiquement quand un utilisateur entre dans mon site?

    Bien que vous puissiez utiliser la détection de localisation basée sur IP (voir cette réponse ), mais il n'est ni fiable ni plus pertinent sur les langues préférées de l'utilisateur (par exemple, les utilisateurs voyageant à l'étranger, etc.).

    Les sites Web avec un trafic international lourd utilisent divers paramètres pour décider dans quelle langue le contenu doit être présenté. Certains de ces paramètres:

    • Accept-Language tête HTTP du Accept-Language qui est discuté en détail ici .
    • Valeurs des propriétés window.navigator.language ou window.navigator.userLanguage (pour IE)
    • Les données de détection de localisation basées sur IP ont été vérifiées contre CLDR pour vous fournir des langues communes sur ce territoire.

    L'extension MediaWiki, UniversalLanguageSelector , utilise ces facteurs ainsi que les préférences des utilisateurs stockés pour fournir une liste de langues communes pour chaque utilisateur. Voir getFrequentLanguageList() .

    Le W3C a également des recommandations .

    Ce script montre la liste déroulante de traduction uniquement pour les personnes ayant un anglais qui ne sont pas définies comme leur langue principale ou unique, et les cache lorsque les utilisateurs d'anglais regardent la page – il est codé pour les pages en anglais à l'aide de l' en dans le code google.

    Il utilise les 2 premiers caractères de la langue uniquement pour éviter de vérifier les nombreuses variantes de l'anglais comme en-US , en-tt etc. – ils commencent tous avec en .

    Cela pourrait être facilement adapté pour détecter la pageLanguage et la comparer avec les langages préférés de l'utilisateur. L'utilisation de navigator.languages est importante parce que cela est utilisé sur les versions plus récentes du navigateur, voir la compatibilité entre les navigateurs expliqué

     <div id="google_translate_element"></div> <script type="text/javascript"> var userLang = navigator.language || navigator.userLanguage || navigator.languages; if (userLang.substr(0,2) != "en"){ function googleTranslateElementInit() { new google.translate.TranslateElement({pageLanguage: 'en', layout: google.translate.TranslateElement.FloatPosition.TOP_LEFT}, 'google_translate_element'); } } else { document.getElementById("google_translate_element").style.display="none"; } </script> <script type="text/javascript" src="//translate.google.com/translate_a/element.js?cb=googleTranslateElementInit"></script>