Saturday, 27 July 2024
 
 
Zeichenketten in einer .js Datei übersetzen Print
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 )
 
 
Top! Top!
'; ?>