Google wirft ob seiner 20%-Regelung mittlerweile fast im Wochenrhythmus neue Anwendungen und APIs ins Feld, wobei die vor Kurzem frei gegebene Google AJAX Translation API wohl nicht nur für das mehrsprachige Südtirol sehr interessant sein dürfte. Ben Lisbakken stellte die neue API am 20. März 2008 im entsprechenden Google-Entwickler-Blog vor und gibt eine einfache Schritt-für-Schritt-Anleitung, um mit der brandneuen API die erste Anwendung zu erstellen.
Die Javascript-Bibliothek gestattet es, die 2 Hauptbereiche Sprach-Übersetzung und Sprach-Erkennung abzudecken und akzeptiert aktuell 13 Sprachen sowie 29 Übersetzungs-Paare. Auf Grund der niedrigen Versionsnummer lassen sich Fehler und Ungereimtheiten nicht vollständig ausschließen, unsere kurzen Übersichtstests haben jedenfalls keine Unstimmigkeiten aufdecken können.
Zu Beginn muss die API eingebunden werden:
Als nächster Schritt werden die API-Funktionen über den AJAX API Loader geladen:
google.load( "language", "1" );
Vor der Benutzung irgendwelcher Funktionen muss die Seite vollständig geladen sein. Die AJAX-API bietet dazu eine Standardmethode, welche die übergebene Funktion aufruft, wenn die Seite vollständig geladen ist. In dieser Funktion können dann alle notwendigen Initialisierungen und Methodenaufrufe platziert werden:
google.setOnLoadCallback( OnLoadCallback );
Innerhalb der Load-Callback-Funktion lassen sich alle Funktionalitäten der API nutzen, ein Übersetzungsaufruf benötigt den zu übersetzenden Text, die Quell- und Zielsprache sowie eine Callback-Funktion, welche das Ergebnis des Aufrufs als Objekt übergeben kriegt:
google.language.translate( 'traduzione', 'it', 'de',
function( Result )
{
alert( Result.translation );
}
);
Für die verwendbare Sprache gibt es eine Liste von Kürzeln.
Die Nutzung der Spracherkennung erfolgt analog, das Ergebnis des Aufrufs wird wiederum als Objekt an die Callback-Funktion übergeben:
google.language.detect( 'traduzione',
function( Result )
{
alert( Result.language );
}
);
Einen unbekannten Text könnte man wie folgt übersetzen:
strUnknownText = 'lingua sconosciuta';
google.language.detect( strUnknownText,
function( Result )
{
if( !Result.error && Result.language ){
google.language.translate( strUnknownText, Result.language, 'de',
function( Result )
{
if( Result.translation ){
alert( Result.translation );
}
else {
alert( Result.errror.message );
}
}
);
}
else {
alert( Result.error.message );
}
}
);
Die folgende Beispiel-Anwendung zeigt einen einfachen Keyword-Parser und erlaubt es, die Keywords aus dem Meta-Bereich einer beliebigen Html-Seite auszulesen, deren Sprache zu bestimmen und in 3 verschiedenen Sprachen auszugeben:
[HTML1]
Das Beispiel bestimmt zunächst die native Sprache der Keywords und übersetzt diese dann an Hand der gültigen Übersetzungspaare in die fehlenden Sprachen. Ist die Spracherkennung unzuverlässig, wird entweder die Seitensprache verwendet oder aber ‚deutsch‘ als Default-Sprache.
Die komplette API-Referenz mit hilfreichen Zusatzinfos und Beispielen kann hier gefunden werden, das obige Beispiel basiert auf dem Mootools-Framework.
Wow, das hört sich schon sehr interessant an. Besonders Web-Applications, die man in mehrere Sprachen übersetzen will / muss, aber auch ganze Website-Inhalte könnte man so schnell und einfach in verschiedene Sprachen transferieren. Ich habe bereits gesehen, dass es ein WordPress-Modul gibt, welches dieses nutzt. Weiß nur leider derzeit nicht, wo es das gibt.
Okay, der Artikel ist schon was älter, aber vielleicht beantwortet ja trotzdem jemand meine Frage. Gibt es eine Möglichkeit, bei der language.detect Funktion die möglichen Sprachen einzugrenzen? In den romanischen Sprachen gibt es ja oft gleiche Wörter, das Skript gibt aber nur eine Möglichkeit zurück (so habe ich für ‚casa‘ galizisch zurück bekommen). In der Anwendung, an der ich arbeite, kommen nur drei verschiedene Sprachen in Frage….
Hallo,
eine derartige Möglichkeit sieht die API derzeit leider nicht vor.
Um die Sprache zu erkennen braucht man einen Google API key.
Steht hier: http://code.google.com/intl/de-DE/apis/language/translate/v1/using_rest_langdetect.html
Seit wann ist das so?
Also die Beispielanwendung im Artikel aus dem Jahre 2008 mit dem Keyword-Parser läuft ohne API-Key immer noch problemlos!?