Help:Extension:Translate/Group configuration example/de

Diese Anleitung wendet sich an Entwickler und erfahrene Übersetzungsadministratoren. Diese Anleitung erklärt, wie man neue Konfigurationsdateien für die Übersetzung der Benutzeroberfläche erstellt und erläutert dabei die praktischen Aspekte. Sie soll zusammen mit der Gruppenkonfigurationsanleitung genutzt werden. Die Entwickler der werden dir gerne helfen, wenn du nach dem Abarbeiten dieser Anleitung noch Fragen hast.

Voraussetzungen

 * die Übersetzungserweiterung und
 * sie.
 * sie.

Diese Anleitung wurde basierend auf der Version r97948 (2011-09-23) der erstellt.

Diese Anleitung beschreibt, wie man die Übersetzung für einige Teile des MyBB-Projektes aktiviert. Du kannst die entsprechenden Schritte auch befolgen, um die Übersetzung anderer Projekte/Dateien zu aktivieren. Einige Dinge werden auf translatewiki.net genauer erläutert, außerdem solltest du natürlich darauf achten, was für deinen Fall relevant ist und diese Anleitung nicht blind befolgen.

Schritt 1: Prüfe den Quelltext
Schauen wir uns mit  als Arbeitsverzeichnis den MyBB-Quellcode an, in diesem Beispiel.

cd /home/betawiki/projects svn co http://svn.mybboard.net/mybb/branches/1.6-stable mybb

sudo -u betawiki svn co http://svn.mybboard.net/mybb/branches/1.6-stable mybb

Wir müssen nun die Dateien finden, die die Nachrichten enthalten. Sie befinden sich im Unterverzeichnis, die englischen Ausgangsnachrichten befinden sich im Unterverzeichnis.

Lass uns mit, der ersten Lokalisierungsdatei unseres Projektes, anfangen.

Schritt 2: Dateiformatunterstützung
In unserem MediaWiki-Installationsverzeichnis können wir unter  und    die Klassen für die Dateiformatunterstützung sehen, die genutzt werden, um Nachrichtengruppen den Lokalisierungsdateien jedes Projektes zuzuordnen. Du musst etwas suchen, um herauszufinden, welche Arten von Formaten unterstützt werden. Wir entscheiden uns, zunächst die FlatPhpFFS-Klasse auszuprobieren und herauszufinden, wie gut sie mit unserer PHP-Datei arbeitet.

Nun haben wir eine Datei für die Zuordnung und wir haben dafür die FFS-Klasse ausgewählt. Jetzt müssen wir eine Gruppenkonfiguration schreiben. Dies ist eine YAML-Datei.

Im kannst du einen Link auf die  finden. Lass uns als Beispiel mit der kleinen Datei aus dem BASIC-Abschnitt beginnen.

Wir können einfach den Beispieltext durch unsere eigenen Werte ersetzen.

Die Beschreibung akzeptiert jede Form von Wikitext. Ein schöner Trick aus dem originalen Beispiel ist, dass du sie mit übersetzbar machen kannst. Dann musst du jedoch den Standardtext auf der Seite MediaWiki:Message-key definieren. Beachte, dass die Namensraum-ID über eine Konstante hinzugefügt wird, siehe wie man benutzerdefinierte Namensräume nutzt.

Wir brauchen noch eine Sache: den Abschnitt. Auch hier gehen wir vom Beispiel aus der Dokumentation aus:

Hmm,  ist der Sprachcode, wie standardmäßig. Zunächst wollen wir die von MyBB genutzte Struktur des Verzeichnisses nicht ändern. Stattdessen können wir für diesen Zweck eine spezielle Funktion nutzen: Code Map, das uns erlaubt, den von unserem Projekt genutzten Identifikatoren Sprachcodes jeder Sprache zuzuordnen.

So enden wir mit:

Im Wesentlichen sagt dies aus, dass für den Code  der     ist, was das Verzeichnis der englischen Nachrichtendateien ist. Der Schlüssel  ist normalerweise der gleiche wie , jedoch ohne das Präfix.

Gut. Lass uns nun diese Datei irgendwo speichern, zum Beispiel im Ordner, dem gleichen Ordner, in dem auch  gespeichert wird. Die ganze Datei ist:

Dann müssen wir unserer Erweiterung den Befehl geben, die Datei zu lesen. Füge die folgende Zeile in  ein:

Befolge anschließend die Anweisungen auf und führe das Skript   aus.

Nun können wir uns anmelden, stelle sicher, dass für den Benutzer das Recht "translate-manage" konfiguriert ist und gehe auf Special:ManageMessageGroups.

Möglicherweise siehst du dies:

No valid namespace defined, got NS_MYBB. Backtrace: <...>

Lies dir in diesem Fall gründlich die Dokumentation durch, möglicherweise musst du die folgende Zeile in  einfügen, um den neuen Namensraum in MediaWiki zu registrieren:

In diesem Beispiel wird 1246 genutzt, du kannst dir jedoch jede freie Namensraum-Nummer nehmen. Für die Übersetzungserweiterung empfehlen wir die Nutzung der Namensraum-Nummern 1200-1298.

Wenn du nun die Spezialseite ManageMessageGroups neu lädst, solltest du eine Zeile erhalten, die anzeigt:

MyBB This message group has not been imported previously.

Klicke auf den MyBB-Link. Anschließend wirst du eine Liste von Nachrichten sehen, die in der Datei enthalten sind. Klicke auf "Ausführen", wenn du mit den Ergebnissen zufrieden bist.

Nachdem du "Ausführen" angeklickt hast, wird die Datei verarbeitet und du wirst eine ähnliche Ausgabe wie diese erhalten:

Imported new version of page MyBB:L\x5b'boardstats'\x5d/en. Imported new version of page MyBB:L\x5b'new posts'\x5d/en. Imported new version of page MyBB:L\x5b'no new posts'\x5d/en. ... Cache rebuild. All done!

Wenn die Datei sehr groß ist, musst du zunächst  ausführen, da die Web-Oberfläche nur eine begrenzte Anzahl von Nachrichten gleichzeitig importieren kann, da sonst das PHP-Zeitlimit überschritten wird; wenn du dieses Limit erreichst, kannst du auf eine Schaltfläche unten auf der Seite klicken, um die verbleibenden Nachrichten zu importieren.

Schritt 3: Eine weitere Datei hinzufügen
Lass uns nun eine zweite Datei zur Übersetzung von MyBB hinzufügen. Hierfür gibt es zwei verschiedene Möglichkeiten:

Ansatz 1: Eine neue YAML-Datei hinzufügen
Füge einfach eine neue YAML-Datei hinzu und speichere sie unter einem neuen Namen. Rufe sie dann aus  ab und befolge die oben genannten Schritte. Die Datei wird ähnlich wie diese aussehen:

Wie aus dem obigen Beispiel deutlich wird, musst du für diese neue Gruppe eine andere ID verwenden.

Obwohl dies einfach ist, eignet es sich nicht für hunderte unterschiedliche Übersetzungseinheiten (d.h. Dateien, die Nachrichtengruppen zugeordnet sind). An einem bestimmten Punkt wirst du einzelne Werte aktualisieren müssen und dies für all diese Dateien zu tun, macht keinen Spaß. Glücklicherweise gibt es einen anderen Weg, der unten gezeigt wird.

Ansatz 2: Vorlagen-Syntax
Die Idee ist, dass wir verbreitete Werte in eine Vorlage setzen. Dann kann jede Gruppe fehlende Werte aus der Vorlage entnehmen und sie müssen nicht für jede Gruppe wiederholt werden.

Lass uns zu unserem MyBB-Beispiel zurückkehren. Wir möchten zum Beispiel, dass die übersetzbaren Nachrichten,   und   enthalten. Die YAML-Datei muss wie folgt aktualisiert werden:

Wie in dem obigen Beispiel deutlich wird, wird  nur einmal definiert; das Hinzufügen und Entfernen von Dateien ist so einfach wie das Hinzufügen oder Entfernen eines Abschnitts in der obigen Datei.

Wenn du nun auf die Spezialseite ManageMessageGroups gehst, solltest du drei Objekte sehen, die in etwa wie folgt aussehen:

MyBB global messages: This message group has not been imported previously. MyBB index page: This message group has not been imported previously. MyBB show thread: This message group has not been imported previously.

Wenn dein Projekt viele Dateien beinhalten soll, kann es sinnvoll sein, ein Skript zu schreiben, das die YAML-Datei für dich generiert. Ein Beispiel befindet sich auf trunk/translatewiki/StatusNet/genStatusNet-plugins.php.

Schritt 4: Gesamtgruppe
Das Hinzufügen einer Gesamtgruppe und die Definition der Nachrichtendateien als deren Untergruppen hat zwei Vorteile:


 * Less work for translators to select different message groups, in particular for maintenance work. Translators can simply open the aggregate group and translate or update everything that needs updating or translation for all the groups.
 * Statistics can be reported on the aggregate group level, i.e. whole project.

In order to define an aggregate group, you need to add the following section right after the TEMPLATE section and before the definition of individual subgroups:

This gets us pretty close, but there is still one step missing. At this point, if you go to Special:Translate, you will see the MyBB parent group (and it in fact works!) but also the subgroups listed as separate groups. :(

This is the way to fix it. Add the following line to your :



This takes all groups whose id match the given pattern, shows the first group, and hides everything else below that first group. A bit ugly, but it works. This construction only supports two layers, even though aggregate groups can be part of aggregate groups.

If you go to Special:Translate now, you will only see the parent group MyBB listed. Additionally, you will see a link "Show 3 subgroups"; clicking on that will show you the names of subgroups.

Check out the manual for TAGS and other sections we didn't go through in this document.

Schritt 5: Aufräumen
YAML files of projects supported by translatewiki.net are committed to the repository on Git.

In translatewiki.net, the  lines are actually in. Sandboxwiki at translatewiki.net does not have a  file, which is why we added everything in.