检测 Google 网站翻译语言更改

Detect Google Website Translator change of language

我在我的网站上使用 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');
    }

效果很好,现在唯一的问题是我需要知道用户实际选择了哪种语言。 我想检测用户何时手动选择语言以及翻译人员何时进行自动翻译,因为它可以根据浏览器设置进行自动翻译。

我想做的是在更改语言时添加一个事件监听器。 IE。不仅在用户手动设置语言时,而且在每次翻译人员实际进行翻译时。 例如。翻译开始或完成时或页面 "refreshes" 显示新语言时。

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

谢谢!

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

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

Fiddle

如果您的页面刷新并且翻译人员翻译您的页面,您可以使用 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/