2015-01-14 37 views
2

我在我的网站上使用Google网站翻译器让用户即时翻译网站。使用此代码:检测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方法将信息保存在会话中服务器。

谢谢!

回答

3

当用户手动选择语言(改变选择框的值),你可能会在语言选择了与

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

Fiddle

如果当你的页面刷新和译者翻译的页面,您可以通过使用setTimeout来获得当前使用的语言。这不是完美的,但它有一定的帮助队友.. :)

+1

感谢答案。 ('change','#google_translate_element select',updateLanguage);'并在updateLanguage方法内部通过'$('#google_translate_element select')检索值。 .VAL()'。这工作正常,但是我想找到一种方法来收听翻译者使用新的语言内容更新页面时引发的事件。 – Blizwire

+3

$('body')。on('change','#google_translate_element select',updateLanguage); @Blizwire提到的效果很好。当页面刷新以获取当前语言时,我选择阅读由google translate插件存储的cookie“googtrans”。 – chris

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斌:http://jsbin.com/neteqihage/1/