Zeichenketten in einer .js Datei übersetzen |
|
Written by Goofy
|
Thursday, 29 September 2005 |
Eine kurze Anleitung übersetzt von Jürgen Berg Das Problem : Manchmal haben Erweiterungen zwar einen "locale" Order mit übersetzten Zeichenketten, aber einige Wörter und Sätze sind nicht übersetzt, da diese sich nicht wie üblich übersetzen lassen, weil sie sich in einer .js Datei befinden. Es gibt eine Lösung, aber es ist etwas aufwändiger, und manchmal muß man viel Zeit investieren für ein kleines, übersetztes Wort mehr... Zuerst muß man die .properties Datei in dem "locale" Ordner finden oder erstellen. Dann einfach einen Variablennamen und den Satz oder das Wort in der eigenen Sprache einfügen. Etwa so : WrongPassMessage=Invalid password (wobei "Invalid password" die zu übersetzenden Zeichenkette ist) Hinweis : 1. Ein einfaches = reicht aus 2. Das Konvertieren der Zeichen in utf-8 und Sonderzeichen in Hexadezimal vor dem Speichern der Datei nicht vergessen.. | Dann muß man der Erweiterung "mitteilen", daß diese properties Datei die benötigten Zeichenketten beinhaltet. Also fügt man folgende Zeilen in der xxxoverlay.xul des "content" Ordners ein : <stringbundleset id="stringbundleset"> <stringbundle id="extensionname-strings" src="chrome://extensionname/locale/extensionname.properties"/> </stringbundleset> Dieses definierte stringbundle (mit diesem ID-Namen) ist so etwas wie eine Verpackung, die alle Zeichenketten, die wir in der properties Datei erstellt haben, beinhaltet. Und natürlich müssen wir die Quelle angeben, also den Pfad in der Erweiterung. | Und nun zu der .js Datei. Wir nehmen mal an, daß wir alle zu übersetzenden Zeichenketten gefunden haben. Was jetzt folgt ist ganz einfach : Die Variablen müssen ersetzt werden. Die Schlüsselzeile sieht dann z.B. so aus : var wrongpassalert=document.getElementById('extensionname-strings').getString("WrongPassMessage"); var steht für Variable wrongpassalert Nimmt den Wert von WrongPassMessage an , wie in der in der properties Datei definiert, und wird zur Anzeige verwendet document.getElementById Ist der Verweis für das Script, woher die entspechenden Elemente geholt werden, in diesem Fall aus "extensionname-strings". getString Gibt an, welche Variable aus dem stringbundle verwendet wird | Nun kann die wrongpassalert Variable in der .js verwendet werden, wo sie benötigt wird : siehe Beispiel if ( password == userPassword ) { oPrefs.setBoolPref("access.authenticated", true); } else { alert (wrongpassalert); oPrefs.setBoolPref("access.authenticated", false) |
|
Last Updated ( Saturday, 04 March 2006 )
|