2015-01-14 75 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/