2012-11-20 67 views
5

找到的東西零幫我在網上之後....谷歌翻譯得到當前的語言

我使用的是當前功能的多語言網站:

function googleTranslateElementInit() { 
    new google.translate.TranslateElement({pageLanguage: 'en', includedLanguages: 'en,es',  layout: google.translate.TranslateElement.InlineLayout.SIMPLE}, 'google_translate_element'); 
} 

但是我不知道怎麼樣一旦用戶改變它就可以獲得當前的語言。 我不確定這是否可能。基本上我想更新到西班牙圖像,如果 西班牙語被選擇超過英語。任何幫助,將不勝感激!

回答

2

你不會相信它:

window.setInterval(function(){ 
    var lang = $(".goog-te-menu-value span:first").text(); 
    alert(lang); 
},5000); 

我不得不挖找螢火蟲的容器,並從第一 span元素搶值。希望這可以幫助某人。

+1

這不起作用,因爲lang將取決於瀏覽器的語言設置。 –

+0

那個元素'.goog-te-menu-value span:first'似乎不再存在 – Crimbo

0

您可能可以從網址獲取語言。

function getUrlVars() { 
    var vars = {}; 
    var parts = window.location.href.replace(/[?&]+([^=&]+)=([^&]*)/gi, function(m,key,value) { 
     vars[key] = value; 
    }); 
    return vars; 
} 

然後

var selected_lang = getUrlVars()['lang']; 
+0

我收到'的變量undefined'。我不認爲翻譯會在URL中添加任何內容,對嗎? – Naterade

0

我在我的joomla網站中使用谷歌翻譯模塊。我的要求是我們頂部有一個語言按鈕。該網站默認使用英文。所以在頂部顯示的按鈕將是西班牙語。當用戶點擊按鈕時,頁面轉換爲西班牙語,按鈕變爲英語,反之亦然。只要你不刷新頁面,這工作正常。 現在說翻譯的頁面是用西班牙語,頂部的按鈕是英語。現在當你刷新頁面時,按鈕變回西班牙語(javascript hide show function,默認爲西班牙語)。由於我可以跟蹤當前的語言,因此頂部的語言按鈕不符合所選的語言。經過深入挖掘,我發現這個腳本幫助我解決了我的問題。我希望它也能幫助別人。

<script> 
//to get currently selected language 
window.setInterval(function(){ 
    lang = $("select.goog-te-combo option:selected").text(); 
    alert(lang); 
},5000); 
</script> 
1

調用google.translate.TranslateElement().c給出了當前語言的代碼。例如,法語爲「fr」,英語爲「en」,德語爲「de」。

檢查google.translate全局對象通常是信息性的。這是一個有點困難的谷歌谷歌顯然編譯的代碼,像TranslateElement.c這樣的東西沒有人類可讀的名稱,但只需一點努力,你可以理解一些參數。

+1

谷歌已經更新了參數,所以'google.translate.TranslateElement()。c'不再適用 – Crimbo

+0

'google.translate。 TranslateElement()。e'現在對我有用 –

+0

'google.translate.TranslateElement()。e'只會告訴我初始語言,而不是當前語言,一旦選擇 – Crimbo

3

調用google.translate.TranslateElement().a.sd給出了當前語言的標識符。

例子: 「FR」法語,「EN」英語,「德」德國,「它」意大利


呼叫google.translate.TranslateElement().a是其他當前參數的對象,如Google Analytics(分析)跟蹤代碼。

在控制檯中查看它,看看有什麼。How do I access the console?

檢查google.translate全局對象通常是信息性的。這有點困難,因爲Google不斷更新代碼,對參數分配進行更改,並且明顯編譯了代碼,使得像google.translate.TranslateElement()這樣的東西沒有人類可讀的名稱;儘管有點努力,但你可以理解一些參數。

+0

'google.translate.TranslateElement()。e'現在適用於我 –

+0

@timpeterson'google.translate.TranslateElement()。e'只會告訴我初始語言,而不是當前語言,一旦選擇 – Crimbo

+0

足夠公平。 '.e'是我所需要的,但是將'.a.sd'結合起來似乎可以幫助大多數人。 –

2

當前選擇的語言存儲在名爲googtrans的Cookie中。

這裏是抓住從cookie值的一個簡單的例子(基於cookie的代碼從這裏:What is the shortest function for reading a cookie by name in JavaScript?):

function readCookie(name) { 
    var c = document.cookie.split('; '), 
    cookies = {}, i, C; 

    for (i = c.length - 1; i >= 0; i--) { 
     C = c[i].split('='); 
     cookies[C[0]] = C[1]; 
    } 

    return cookies[name]; 
} 
console.log(readCookie('googtrans')); //eg. 'en/no' for Norwegian, '/en/hr' for Croatian, etc.