2012-11-20 10 views
5

Nach bekommen Null von etwas zu finden, mit mir online zu helfen ....übersetzen Google aktuelle Sprache

Ich bin die aktuelle Funktion für eine mehrsprachige Website mit:

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

Jedoch habe ich keine Ahnung, wie um die aktuelle Sprache zu erhalten, sobald ein Benutzer sie ändert. Ich bin mir nicht sicher, ob das überhaupt möglich ist. Grundsätzlich möchte ich auf spanische Bilder aktualisieren, wenn Spanisch über Englisch gewählt wird. Jede Hilfe wäre willkommen!

Antwort

2

Sie nicht gonna glauben:

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

musste ich einfach graben, um die Behälter in Firebug zu finden und den Wert aus dem ersten span-Elemente greifen. Hoffe, das hilft jemandem.

+1

Dies funktioniert nicht, da lang von den Spracheinstellungen des Browsers abhängt. –

+0

Das Element '.goog-te-menu-value span: first' scheint nicht mehr zu existieren – Crimbo

0

Sie können die Sprache möglicherweise über die URL abrufen.

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

Dann

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

Ich erhalte 'undefined' auf der Variable. Ich glaube nicht, dass translate irgendetwas zur URL hinzufügt, richtig? – Naterade

0

Ich verwende Google Translate-Modul in meiner Joomla-Website. Meine Anforderung war, dass wir oben einen Sprachtasten haben. Standard wird die Seite in Englisch sein. Die oben angezeigte Schaltfläche wird also Spanisch sein. Wenn der Benutzer auf die Schaltfläche klickt, wird die Seite in Spanisch übersetzt und die Schaltfläche wechselt in Englisch und umgekehrt. Dies funktioniert, solange Sie die Seite nicht aktualisieren. Jetzt sagen, die übersetzte Seite ist in Spanisch und der Button an der Spitze ist Englisch. Jetzt, wenn Sie die Seite aktualisieren, wechselt die Schaltfläche zurück zu Spanisch (Javascript ausblenden Show-Funktion, Standard ist Spanisch). Da ich in der Lage war, die aktuelle Sprache zu verfolgen, war die Sprache oben nicht in der Sprache ausgewählt. Nach vielem Graben fand ich dieses Skript, das mir half, mein Problem zu lösen. Ich hoffe, es hilft auch anderen.

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

Der Aufruf google.translate.TranslateElement().c gibt den Code für die aktuelle Sprache an. Zum Beispiel "fr" für Französisch, "en" für Englisch, "de" für Deutsch.

Die Überprüfung des globalen Objekts google.translate ist generell informativ. Es ist ein bisschen hart b/c Google hat offensichtlich den Code so kompiliert, dass Dinge wie TranslateElement.c keine lesbaren Namen haben, aber mit ein wenig Aufwand können Sie einige der Parameter sinnvoll machen.

+1

Google hat seitdem die Parameter aktualisiert, so funktioniert' google.translate.TranslateElement() .c' nicht mehr – Crimbo

+0

'google.translate. TranslateElement(). E' funktioniert jetzt für mich –

+0

'google.translate.TranslateElement(). E' sagt mir nur die Ausgangssprache, nicht die aktuelle Sprache, einmal ausgewählt – Crimbo

3

Der Aufruf google.translate.TranslateElement().a.sd gibt die Kennung der aktuellen Sprache an.

Beispiele: "fr" für Französisch, "en" für Englisch, "de" Deutsch "it" für italienische


Berufung google.translate.TranslateElement().a ist ein Objekt anderer aktueller Parameter wie der Google Analytics-Tracking-Code.

Überprüfen Sie es in der Konsole, um zu sehen, was da ist.How do I access the console?

Die Überprüfung des globalen Objekts google.translate ist generell informativ. Es ist ein wenig schwierig, weil Google den Code ständig aktualisiert, Änderungen an den Parameterzuweisungen vornimmt und den Code offensichtlich so kompiliert hat, dass Dinge wie google.translate.TranslateElement() keine lesbaren Namen haben; Mit ein wenig Aufwand können Sie jedoch einige der Parameter verstehen.

+0

'google.translate.TranslateElement(). E' funktioniert jetzt für mich –

+0

@timpeterson' google.translate.TranslateElement(). E' sagt mir nur die Ausgangssprache, nicht die aktuelle Sprache, einmal ausgewählt – Crimbo

+0

Fair genug. '.e' war was ich brauchte, aber die Verwendung von' .a.sd' in Kombination scheint den meisten Leuten zu helfen. –

2

Die aktuell ausgewählte Sprache wird in einem Cookie namens googtrans gespeichert.

Hier ist ein einfaches Beispiel für den Wert aus dem Cookie Grabbing (basierend auf Cookie-Code von hier: 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. 
Verwandte Themen