Lokalisierung von Plugins: Tipps zum Arbeiten mit poEdit

Mein Artikel Einführung zur Lokalisierung von Themes und Plugins (wurde sogar zweimal im SW-Guide erwähnt[1] heißt nicht umsonst „Einführung“, denn es gibt noch mehr.

Heute möchte ich ein wenig näher auf die Arbeit mit poEdit eingehen. Wer mal eben Plugins „auf die Schnelle“ übersetzen bzw. lokalisieren möchte, muss einige Dinge beachten. Deshalb hier ein paar Tipps zur Vermeidung von typischen Stolperfallen. Und auch wenn es in der Überschrift „Plugins“ heißt, gelten die meisten Dinge auch für die allgemeine WordPress-Sprachdatei. Ein kurzer Überblick, was es in diesem Beitrag zu lesen gibt:

Nochmal zum Prinzip

Wer jetzt nicht den langen Einführungsartikel lesen, sondern einfach nur Dateien bearbeiten möchte, dem sei kurz das Prinzip erklärt. Wichtig sind zwei Dateien:

  • Die po-Datei (= Sprachdatei) ist eigentlich eine Textdatei in einem bestimmten Format (einfach mal mit einem Texteditor ansehen) und enthält die Original- und die übersetzten Zeichenketten. Dies ist die menschenlesbare und mit poEdit bearbeitbare Datei, aus der die von WordPress lesbare mo-Datei erstellt wird.
  • Die mo-Datei wird von WordPress verarbeitet, d.h. dort wird nachgeschaut, ob eine Übersetzung vorliegt und dann an der entsprechenden Stelle eingefügt. Nur diese Datei muss auf dem Server vorhanden sein.

Die aktuelle deutsche Sprachdatei für die Grundinstallation von WordPress kann man auf der offiziellen Seite runterladen. Bei vielen Plugins ist schon eine po-Datei (oder pot-Datei) mitgeliefert. Manche bieten auch eine ganze Reihe verschiedener Übersetzungen. Die kann man als Ausgangspunkt für seine Übersetzung verwenden.

Überblick behalten: Katalogverwaltung

poEdit-KatalogverwaltungpoEdit bietet die Möglichkeit, alle Kataloge auf einen Blick zu verwalten. Ruft man diese mit Datei > Katalogverwaltung auf, öffnet sich ein neues Fenster. Nun muss man ein neues Projekt anlegen mit dem ersten Button links (Tooltip: Erstelle neues Übersetzungsprojekt). Man vergibt einen Namen (z.B. wordpress) und erstellt einen Pfad. Ich habe den Ordner angegeben, in dem die WordPress-Installation und die Plugins zu finden sind. Nach Klick auf OK wird der Ordner (und alle Unterordner) durchsucht und alle gefundenen po-Dateien werden aufgelistet. Und auch zusätzliche Informationen wie Anzahl aller Zeichenketten, unübersetzte, unklare, ungültige Zeichenketten und Datum der letzten Änderung. Aufgrund dieser Informationen erhält jede Datei ein grünes, gelbes oder rotes Icon (grün: alles übersetzt, gelb: fast alles übersetzt, kaum unklare, rot: überwiegend unklare oder unübersetzte Zeichenketten). Siehe auch den Screenshot links (Klick für Vergrößerung).

Natürlich kann man auch eine andere Organisation vornehmen, andere Pfade angeben, mehrere Projekte anlegen – wie immer man es am liebsten mag. Ich habe diese Struktur gewählt, weil ich so alles auf einen Blick sehe und die einzelnen Sprachdateien von hier aus aufrufen kann. Es gibt die Option Öffne die Katalogverwaltung beim poEdit Start (zu finden unter Datei > Einstellungen), dann kann man die Katalogverwaltung als Ausgangspunkt für alle Bearbeitungen verwenden.

Hinweis zur Aktualisierung: Mit dem Button ganz rechts (Aktualisiere alle Kataloge des Projekts) werden alle Kataloge auf neue und veraltete zu übersetzende Zeichenketten untersucht. Bevor man dies ausführt, sollte man sicherstellen, dass alle Pfadangaben und Schlüsselwörter richtig gesetzt sind (s.u.), denn sonst gehen evtl. Übersetzungen verloren und das ist ärgerlich.

Fehlersuche wenn es doch nicht funktioniert

Du weißt eigentlich, wie das Prinzip der Lokalisierung funktioniert und du glaubst, dass alle Voraussetzungen erfüllt sind und trotzdem funktioniert es nicht? Hier ein paar Vorschläge, woran es liegen könnte (Troubleshooting):

1. Plugin-Dateien für die Lokalisierung vorbereitet?

In den php-Dateien des Plugins müssen die Stellen, die übersetzt werden sollen, markiert sein (siehe die Abschnitte Grundprinzip der Lokalisierung und Besonderheit bei Plugins im Einführungsartikel). Sollte das nicht der Fall sein, muss das nachgeholt werden.

Da dies oft mit viel Arbeit verbunden ist, kann man anschließend dem Plugin-Autor einen Kommentar hinterlassen oder eine E-Mail schicken, mit dem Hinweis, dass man sein Plugin für die Lokalisierung vorbereitet hat (und anbieten, die geänderte Datei zu schicken). Viele freuen sich darüber, denn dann müssen sie sich nicht mehr die Arbeit machen und sie können einen zusätzlichen Service anbieten.

2. poEdit richtig eingerichtet?

Damit poEdit die richtigen Dateien nach zu übersetzenden Stellen durchsucht (*.php in diesem Fall), muss das Programm dafür entsprechend eingerichtet sein. Dies gilt für die allgemeinen Einstellungen unter Datei > Einstellungen als auch für jeden einzelnen Katalog unter Katalog > Optionen.

2a. Pfadangaben richtig gesetzt?

Wenn man eine vorhandene Sprachdatei bearbeitet, ist es unwahrscheinlich, dass die gleichen Pfadangaben wie beim Original-Übersetzer gelten. Ich finde es am bequemsten und unkompliziertesten, wenn die WP-Sprachdatei im Verzeichnis über der Installation liegt und die Plugin-Sprachdatei im Verzeichnis des zugehörigen Plugins (oder in einem Unterordner languages) liegt. Auch wenn das Plugin nur aus einer einzelnen Datei besteht, sollte für die Übersetzung ein eigener Pluginordner (z.B. gleicher Name wie das Plugin) angelegt werden. Dann reicht als Basispfad ein einfacher Punkt (bzw. ../ im Falle des Unterordners) und es reicht ein Pfad aus einem Punkt (der Eintrag MUSS da sein; fehlt er, kann dies die Fehlerursache sein). Falls Unterordner existieren, gibt es für jeden einen zusätzlichen Pfad.

Nachfolgend zwei Screenshots der beiden Einstellungen, die unter Katalog > Optionen zu finden sind (Klick für Vergrößerung). Links sind die Pfade für die WP-Installation (im Verzeichnis wordpress = Basispfad; der wp-plugins-Ordner wird hier NICHT aufgeführt) und rechts die beiden „Punkt“-Pfade für ein Plugin.

poEdit-Katalogoptionen WPpoEdit-Katalogoptionen Plugin

2b. Schlüsselwörter richtig angegeben?

Zusätzlich müssen die richtigen Schlüsselwörter angegeben sein (__ und _e), damit poEdit die Stellen findet, die in den Plugin-Dateien entsprechend markiert sind. Die Einstellungen dazu findet man in obigem Dialog im nächsten Tab.

3. Plugin-Domain registriert und vorhanden?

Bei Plugins gibt es eine Besonderheit, die sog. Domäne, die sicherstellt, dass die Sprachdatei nur für das Plugin gilt[2]. Das bedeutet, dass im Plugin nicht nur die Schlüsselwörter vorhanden sind, sondern dass auch der zweite Parameter in der Schlüsselwortfunktion angegeben sein muss. Ansonsten „weiß“ WordPress ja gar nicht, dass es in einer anderen Sprachdatei suchen muss.

4. Formular- und Buttontexte

Ich habe die Erfahrung gemacht, dass manche Textstellen (speziell in Formularen oder Beschriftungen von Buttons) zwar von poEdit erkannt werden, aber nicht von WordPress übersetzt werden[3]. Woran das liegt, kann ich nicht sagen. In diesem Fall muss man die Übersetzung direkt in der Plugin-Datei vornehmen. Änderungen vermerken, damit sie bei einem Plugin-Update wieder ausgeführt werden können!

5. Besonderheit Einzahl/Mehrzahl

Der Plural im Englischen wird durch einfaches Anhängen von „s“ gebildet. Es gibt nur wenige Ausnahmen, wo auch der Wortstamm verändert wird (1 wife, 2 wives), doch im Deutschen wird erstens der Plural auf verschiedene Weisen gebildet und zweitens kommt es häufig vor, dass der Wortstamm verändert wird (1 Vater, 2 Väter).

Da es im Englischen so einfach ist, wird oft eine Abfrage gemacht, ob die Anzahl ungleich eins ist (!= 1) und in diesem Fall ein „s“ angehängt. Im Deutschen dagegen heißt es dann z.B. „4 Buchs gelesen“ und das ist ärgerlich. In diesem Fall bleibt einem nichts anderes übrig, als ein wenig die Plugin-Datei zu bearbeiten (wieder gilt: Änderungen vermerken, damit sie bei einem Plugin-Update wieder ausgeführt werden können!)

Beispiel Now-Reading-Plugin

In der Datei template-functions in den Funktionen books_read_since und total_books ändere

echo "$num book".($num != 1 ? 's' : '');

zu

echo $num . ($num != 1 ? __(' books', NRTD) : __(' book', NRTD));

und in der Funktion average_books ändere

printf(__('an average of %s book%s each %s', NRTD), $average, 
($average != 1 ? 's' : ''), $time_period);

zu

printf(__('an average of %s %s each %s', NRTD), $average, 
($average != 1 ? __('books', NRTD) : __('book', NRTD)), $time_period);
  1. Herzlichen Dank dafür []
  2. Die WordPress-weite Sprachdatei (meist de_DE.po) liegt im Ordner wp-includes\languages und hat nichts mit den Plugin-Sprachdateien zu tun []
  3. Es kann auch sein, dass das Problem mittlerweile behoben ist, denn es ist mir in letzter Zeit nicht mehr aufgefallen []

Veröffentlicht von

juliaL49

Wilde Mischung aus musikinteressiertem Konzertbesucher, fernsehbegeistertem Whovian, radfahrendem Läufer, fotografierendem Atheisten und ausgewandertem Bioinformatiker

Ein Gedanke zu „Lokalisierung von Plugins: Tipps zum Arbeiten mit poEdit“

Kommentare sind geschlossen.