检测谷歌网站翻译语言的变化

我在我的网站上使用Google网站翻译器让用户即时翻译网站。 使用此代码:

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'); } 

这很有效,现在唯一的事情是我需要知道用户实际选择的语言。 我想检测用户手动选择语言的时间以及翻译者进行自动翻译时,因为它可以根据浏览器设置进行自动翻译。

我想要做的是在语言更改时添加事件监听器。 即,当用户手动设置语言但每次翻译者实际进行翻译时。 例如,当翻译开始或结束时或页面“刷新”以显示新语言时。

我需要收集这些信息并将其发送到服务器,以了解用于稍后发送给用户的电子邮件的语言。 由于这些信息是从多个地方收集的,我不想在每次需要信息时手动检查所选语言,而是添加一个检测语言变化的事件监听器并触发一个AJAX方法来保存会话中的信息。服务器。

谢谢!

当用户手动选择语言(更改选择框的值)时,您可能会选择使用的语言

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

小提琴

如果您的页面刷新并且翻译器翻译您的页面,您可以使用setTimeout获取当前使用的语言。 这不是完美的,但它肯定有助于交配.. 🙂

您可以使用setInterval定期检查语言是否更改:

 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); 

工作JS Bin: http : //jsbin.com/neteqihage/1/