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.

So let's log in, make sure the user has the "translate-manage" right configured properly, and go to Special:ManageMessageGroups.

You may see this:

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

In this case, reading the documentation carefully, you could have identified the need to add the following line to  to register the new namespace with MediaWiki:

In this example 1246 is used, but you can pick any free namespace number you need. For the Translate extension, we recommend you to use the even namespace numbers 1200-1298.

If you now reload the ManageMessageGroups special page, you should see a line which says:

MyBB This message group has not been imported previously.

Click on the MyBB link. After that, you will see the list of messages that are in that file. If you are happy with the results, click "Execute".

After you click "Execute", the file is processed and you will see an output similar to this:

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!

If the file is very large, you need to run  first, because the web interface can only import a limited number of messages at once because of the PHP timeout limit; if you encounter this limit, you can click a button at the bottom of the page to import the remaining messages.

Schritt 3: Eine weitere Datei hinzufügen
Now let's add a second file for MyBB for translation. There are two ways to do this:

Ansatz 1: Eine neue YAML-Datei hinzufügen
Simply add a new YAML file and save it with a new name. Then call it from inside  and follow all the above steps. The file will look something like this:

As obvious in the above example, you have to use a different ID for this new group.

While easy, this approach does not scale to hundreds of different translation units (i.e. files mapped to their message group). At some point you need to update some value, and doing it for all those files is no fun. Fortunately there is another way, shown below.

Ansatz 2: Vorlagen-Syntax
The idea is that we pull common values into a template. Then each group will take missing values from the template and there is no need to repeat them for every group.

Let's get back to MyBB example. Let's say you want to include,   and   in the translatable messages. The YAML file needs to be updated like this:

As obvious in the above example,  is defined only once; addition and removal of files is as easy as adding or removing a section in the above file.

Now if you go to the ManageMessageGroups special page, you will see three items like this:

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.

If there are a lot of files to be included in your project, it may be a good idea to write a script that generated your YAML file for you. An example can be found in trunk/translatewiki/StatusNet/genStatusNet-plugins.php.

Schritt 4: Gesamtgruppe
Adding an aggregate group and defining the message files as its subgroups has two benefits:


 * 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.