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

时间:2015-01-14 03:35:08

标签: javascript jquery google-translate

我在我的网站上使用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方法来保存信息。服务器上的会话。

谢谢!

2 个答案:

答案 0 :(得分:3)

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

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

Fiddle

如果您的网页刷新并且翻译人员翻译了您的网页,您可以使用setTimeout获取当前使用的语言。这并不完美,但它确实有助于交配.. :)

答案 1 :(得分:1)

您可以使用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/