Détecter le traducteur Google Google Change language

J'utilise Google Translator du site Web sur mon site pour permettre à l'utilisateur de traduire le site à la volée. Utilisation de ce code:

function googleTranslateElementInit() { new google.translate.TranslateElement({pageLanguage: 'en', includedLanguages: 'ar,de,el,en,es,fr,it,ja,ko,nl,ru,zh-CN', layout: google.translate.TranslateElement.FloatPosition.BOTTOM_RIGHT}, 'google_translate_element'); } 

Cela fonctionne très bien, la seule chose maintenant, c'est que je dois savoir quelle langue l'utilisateur a effectivement sélectionné. Je souhaite détecter les deux lorsque l'utilisateur sélectionne manuellement une langue et aussi lorsque le traducteur effectue une traduction automatisée, il permet de faire des traductions automatiques en fonction des paramètres du navigateur.

Ce que je veux faire, c'est d'ajouter un auditeur d'événement lorsque la langue est modifiée. C'est-à-dire non seulement lorsque l'utilisateur définit manuellement la langue, mais chaque fois que le traducteur fait une traduction. Par exemple, lorsque la traduction commence ou finit ou lorsque la page "actualise" pour afficher la nouvelle langue.

J'ai besoin de recueillir ces informations et de l'envoyer au serveur pour connaître la langue à utiliser pour les e-mails envoyés à l'utilisateur ultérieurement. Comme cette information est recueillie à partir de plusieurs endroits, je ne veux pas vérifier manuellement la langue sélectionnée chaque fois que j'ai besoin de l'information, mais pour ajouter un auditeur d'événements qui détecte la modification de la langue et déclenche une méthode AJAX pour enregistrer les informations en session sur le serveur.

Merci!

Lorsque l'utilisateur sélectionne manuellement une langue (modifie la valeur de la boîte de sélection), vous pouvez obtenir la langue choisie avec

 $('.goog-te-combo').on('change',function(){ language = $("select.goog-te-combo option:selected").text(); alert(language); }); 

Violon

Dans le cas où votre page est actualisée et que le traducteur traduit votre page, vous pouvez obtenir la langue actuelle qui est utilisée en utilisant un setTimeout . Ce n'est pas parfait, mais cela aide certainement … 🙂

Vous pouvez utiliser setInterval pour vérifier périodiquement si la langue a changé:

 var translatedText=''; var interval=setInterval(function(){ var el=document.getElementsByClassName('goog-te-menu-value')[0]; if(el && el.innerText!==translatedText){ translatedText=el.innerText; console.log('changed'); } },200); 

Working JS Bin: http://jsbin.com/neteqihage/1/