UPDATE: Da meine Anleitung was in die Jahre gekommen ist (also eigendlich fast ein Jahr alt...), mal ein kleines Update mit ein paar zusätzlichen Bemerkungen
Eine Frage, die oft gestellt, aber schwer zu beantworten ist.
Ich erstelle hier ein kurzes bebildertes Beispiel, so dass sich jede(r) Willige ein Bild des Aufwands machen kann.
Der Aufwand ist natürlich abhängig vom Umfang des Extention/Erweiterung.
Um mich nicht zusehr in spezifische Problematiken zu verstricken, werde ich für das Beispiel die Copy Image-Erweiterung benutzen. Diese Ist klein und leicht zu übersetzen, zeig aber die meisten wichtigen Punkte auf, auf die man achten muss.
Zu aller erst sei gesagt, dass ich für dieses Beispiel die beiden Win-Programme Ultraedit10 (Ein Plain-Text-Editor mit Uni-Code unterstüzung) und Winrar3.0 (Packprogramm) benutzt habe.
[EDIT]Solltet Ihr Probleme haben mit der Konvertierung in UTF-8 haben, benutzt einfach «UniRed». Die gewünschte Datei öffnen, und beim "Speichern unter"-Dialog als Zeichensatz UTF-8 wählen und so speichern. Das file sollte jetzt die richtige Codierung aufweisen.[/EDIT]
[EDIT2]Alternativ kann man auch UniPad benutzen.[/EDIT2]
TIPP: Übersetzungen gehen natürlich auch mit Hilfe anderer Programme, die die gleichen Leitungen/Funktionen bieten.
Und bevor wir loslegen: Ihr solltet die Erweiterung die Ihr übersetzen wollte vorher genau kennen, damit Ihr wisst wonach Ihr zum Übersetzen Ausschau halten müsst!
Auch wichtig ist: Ihr könnt mit fehlerhaften Dateien, die durch die Übersetzungen enstehen können, euren Browser schrotten! Eine Deinstalltions-Erweiterung hilft zwar häuftig, aber nicht immer! Manchmal lässt sich Firefox nichtmehr starten und Ihr müsst alles neu installieren! Richtet Euch also auf viel Arbeit beim Testen ein!
- Schritt 1
Wir besorgen uns das Orginal der Erweiterung, die wir übersetzen möchten. Im Falle der Copy Image-Erweiterung wäre das bei Jordan Callicat (gratisdei.com/FB.htm). Gesucht wird dabei eine Datei die auf .xpi endet.[Blockierte Grafik: http://www.bugcatcher.de/files/translation/translation_01.png]
- Schritt 2
Als nächstes müssen wir die .xpi-Datei entpacken.[Blockierte Grafik: http://www.bugcatcher.de/files/translation/translation_02.png]
In der .xpi-Datei finden sich immer eine *.jar- und eine install.js-Datei. XPI-Dateien sine faktisch nur die Installationsdateien, die die Erweiterung beinhalten, die JAR-Datei.
[update] Die Struktur hat sich inzwischen verändert. Im Stammverzeichnis des Archivs findt sich in der Regel nun Ffolgendes:
- install.rdf (in dieser Datei stehen die grundsätzlichen Informationen zu einer Erweiterung. Z.B. für welche Firefox-Versionen sie geeignet ist und wie die Erweiterung heisst, usw.)
- install.js (hat die selbe funktion wie früher auch.. kann enthalten sein, muss aber nicht. Ist glaub ich für die Mozilla-Suite bzw. älteren Versionen vom Firefox gedacht)
- /chrome/ (beinhaltet jetzt die jar-datei!)
[/update]Die JAR-Datei entpacken wir auch. Darin sind meist mehrere Ordner und/oder Dateien. Die eigendliche Erweiterungsdatei.
Nach dem entpacken benötigen wir die JAR und die XPI-Datei nichtmehr. Diese können gelöscht werden. Nach der Entpack-Aktion sollte es bei Euch aussehen wie auf dem folgenden Bild (Die Verzeichnis-Struktur ist sehr wichtig! Achtet also darauf, dass Euer Packprogramm nicht noch irgendwelche dazuzaubert!):
[Blockierte Grafik: http://www.bugcatcher.de/files/translation/translation_03.png]
TIPP: XPI- und JAR-Dateien sind per Zip kompremierte Dateien. Lassen sich also mit jedem Programm entpacken, dass mit Zip-Datein umgehen kann.
HINWEIS: Manchmal gibt es Erweiterungen die eine amerikanische Kennung haben ("en-US") und dies auch in der Orderstruktur beibehalten. Solche Ordner sollte man dann auf "de-DE" ändern. Hierbei ist Klein- und Grosschreibung zu unterscheiden! Also anders als bei Windows selber!
[update] Anständig geschriebene Erweiterungen führen immer diesen Sprachunterordner mit Die Struktur ist wie folgt:
Codeextension.xpi --+--> /chrome/ --> extension.jar --+--> /content/ -----> (Programmdateien der Erweiterung) +--> install.rdf +--> /locale/ --+--> /en-US/ (Sprachdateien) +--> install.js +--> /de-DE/ --+--> extension.dtd +--> extension.properties +--> contents.rdf
[/update] - Schritt 3
Und nun auf zur eigendlichen Übersetzung!In unserem Beispiel findet Ihr im Ordner "content" einen Ordner "copyimage" in dem die beiden Dateien "copyimageOverlay.xul" und "contents.rdf" liegen.
[Blockierte Grafik: http://www.bugcatcher.de/files/translation/translation_04.png]Die "contents.rdf" ist eine Datei die immer wieder auftaucht. Sie ist quasi die Registierungs-Datei der Erweiterungen.
In userem Beispiel machen wir aus:
[Blockierte Grafik: http://www.bugcatcher.de/files/translation/translation_05.png]das hier:
[Blockierte Grafik: http://www.bugcatcher.de/files/translation/translation_06.png]Die "contents.rdf" ist im Zeichencode UTF-8 gehalten (.dtd-dateien werden manchmal zur Auslagerungen der Benamung der Schaltflächen benutz. Auch diese sind in UTF-8 gehalten). Achtet also darauf, dass Ihr sie richtig speichert! Es gibt noch mehr Dateitypen, die in UTF-8 geschrieben sind. Sollten bei der Übersetzung am schluss im Browser komische Zeichen statt Umlaute zu finden sein, dann liegt es daran, dass Ihr eine Datei in falscher Codierung gespeichert habt!
[Blockierte Grafik: http://www.bugcatcher.de/files/translation/translation_07.png][update]Für die eigendliche übersetzung sollte man nur die dtd's, properties's und die contents.rdf anpassen, die finger aber von den content-bereichen lassen. und natürlich den passenden Ordner im "locale"-Verzeichnis erstellen. Am besten einfach eine kopie des "en-US" Ordners erstellen und in "de-DE" umbenennen. Die enthaltenden dateien übersetzen wir dann. [/update]
ALLGEMEIN: Leider gibt es keine einheitliche Regelung WIE Übersetzungen gemacht werden sollen. Das fängt an bei, ob man "Tab" oder doch lieber "Registerkarte" benutzen soll und geht weiter bis zur Form der Namengebung. Ich hab bei mir zum Beispiel es so gehalten, dass ich den Orginalnamen der Erweiterung beibehalten, aber ein "- Deutsch" dahintergestellt hab ("Copy Image 0.1" -> "Copy Image 0.1 - Deutsch"). Gebt Euch Mühe, damit keine Verwechslungen auftreten können. Auch tragt euch nicht selber alleinig als Author ein und Informiert den eigendlichen Programmierer.
[update]
BITTE: Ändert nicht zwanghaft Ausdrücke oder Bezeichnungen. Schaut euch auch ähnliche Übersetzungen an und passt euch entsprechent an. Oder setzt euch mit dem anderen über zusammen um unstimmigkeiten zu vermeiden. Um mein Anliegen genauer klar zu machen, hier ein aktuelles Beispiel:Es gibt die Beiden Erweiterungen "IE-View" und "Opera-View". Faktisch müsste Opera-View auf IE-View basieren, nur das halt die Pfade für Opera geändert wurden. Soweit so gut. Aber die Übersetzer waren sich reichlich uneins... denn wärend bei IE-View im Kontextmenu "Link-Adresse im Internet Explorer öffnen" steht, bekommt man bei Opera-View "Öffne Link in Opera" zu lesen. Sowas sieht sau doof aus und sollte vermieden werden. Also schaut euch Übersetzungen von artverwante Erweiterungen an und passt euch gegebenfalls an.
[/update]Jetzt auf zur "copyimageOverlay.xul". Hier findet Ihr XML-artige Notierungen vor. Zumeist muss man nur auf label="blah"-Einträge achten. Zwischen den Anführungszeichen findet sich der Teil der übersetzt werden möchte. Wenn ein accesskey dabei steht, sollte man darauf achten, dass der orginale "Hotkey" zur Übersetzung passt und gegebenfalls anpassen. Auch sollten die jeweiligen Menus vorher geprüft werden, damit der Buchstabe nicht doppelt vergeben wird. Sowas ist unschön.
[Blockierte Grafik: http://www.bugcatcher.de/files/translation/translation_08.png]
Wie bei den Ordnern sollte man alle Länderkennungen die man in den Dateien findet (meist "en-US") auf "de-DE" ändern.
In unserem Beispiel gibt es nur 2 Dateien. Aber es gibt Erweiterungen, die haben Unmengen an Dateien. Die muss man dann alle einmal durchgehen.
TIPP: Die install.js kann bei bedarf auch übersetzt werden, muss aber nicht, da diese nur bei der Installation einmal gebraucht wird. Hierbei gelten die normalen Notations-Regel von Javascript. Wer sich nicht damit auskennt, sollte vorsichtig sein. Normalerweise sind die Texte in Anführungszeichen ("lalala") gehalten und man sollte tunlichst in diesen Bereichen bleiben. Ausserhalb fängt die Programmierung an und wer da rumfingert, sollte wissen was er tut. Auch sollte man vermeiden in den Anführungszeichen-Bereichen weitere Anführungszeichen einzubauen! In jedem Fall sollte man sicherheitshalber sich einige JS-Kenntnisse per SelfHTML erwerben. *.js-Dateien sind Plain-Text und nicht UTF-8. Man muss sie also nicht konvertieren.
[update]
- Zusatzschritt!
Vergesst nicht, dass eure neuen Sprachfiles auch in der install.rdf des Hauptverzeichnisses registriert werden müssen:
Auch könnte ihr euch dort als Mitwirkender eintragen
[/update] - Schritt 4
Nachdem wir alles übersetzt haben, müssen wir die Erweiterung wieder packen. Dazu packen wir (im Zip-Format) alle Ordner und Dateien (ausser der install.js) zusammen und nennen diese dann so wie die JAR-Datei aus der wir am Anfang alles herausgeholt haben. In unserem Beispiel also copyimage.jar :
[Blockierte Grafik: http://www.bugcatcher.de/files/translation/translation_09.png]
[Blockierte Grafik: http://www.bugcatcher.de/files/translation/translation_10.png]Danach packen wir nach dem selben System die install.js und die gerade erstellte *.jar-Datei zusammen in eine XPI-Datei.
[Blockierte Grafik: http://www.bugcatcher.de/files/translation/translation_11.png]
[Blockierte Grafik: http://www.bugcatcher.de/files/translation/translation_12.png]Fertig ist unsere übersetzte Erweiterung.
[Blockierte Grafik: http://www.bugcatcher.de/files/translation/translation_13.png][update]Immer darauf achten, dass die Stuktur sich verändert hat! Vom prinzip bleibt aber alles beim Alten.[/update]
- Schritt 5
Nun müssen wir die Erweiterung nurnoch installieren. Wenn alles geklappt hat, könnt Ihr Euch freuen... wenn nicht, müsst Ihr wieder zurück zu der Stelle, an der der Fehler aufgetreten ist.
[Blockierte Grafik: http://www.bugcatcher.de/files/translation/translation_14.png]
Ihr seht also. Eigendlich nur ganz einfach. Aber der Teufel steckt im Detail. Also macht euch vorher klar, dass Ihr manchmal auf Probleme stossen werdet.
PS: Ich wollte das zwar in das Forum "Übersetzung stecken... ist hier aber wohl besser aufgehoben. ; )
[update]
WICHTIGER HINWEIS!
Man kann übersetzte Erweiterungen natürlich auch selber anbieten. Aber es wäre sehr viel besser, wenn man die sprach-dateien (die im "de-DE"-Verzeichnis vom "locale"-ordner) dem orgnial-autor der erweiterung zur verfügung stellt, damit dieser die dateien in seine xpis übernehmen kann. so wird die übersicht gewahrt (welche version ist die die ich brauche? egal! gibt nur eine, die alle sprachen bedient! yeah!) und es kommt zu keinen zeitlichen abständen zwischen englischer und deutscher version. Man kann sich dann auch als übersetzer anbieten. natürlich kann man auch xpi-dateien anbieten, die nur für de-DE sind (und sonst keine sprachen enthalten sind), aber das sollte nur ein zusatzangebot sein. die komplette übersetzung sollte man weiterhin den extension-schreibern zukommen lassen. Danke für mehr Übersichtlichkeit!
[/update]
Wohin mit meinen übersetzten Erweiterungen?
Falls Ihr nicht wisst, wohin ihr mit den Übersetzungen sollt, wendet Euch doch einfach an die Webmaster von http://www.erweiterungen.de.