WordPress Sprachdatei Plugin - Machbarkeitsstudie
codestyling | 10. August 2008 | 15:15
Die Verwendung von Sprachdateien in WordPress zur Lokalisierung der Admin Oberfläche, der Themes und Plugins ist ein universelles Konzept und recht einfach zu handhaben. Allerdings benötigt man dafür externe Editoren und muss die fertigen Sprachdateien (*.mo) wieder hochladen und mühsam prüfen.
Ziel dieser Studie ist es, ein WordPress Plugin bereitzustellen, mit dem es online möglich ist, sämtliche Sprachdateien zu erstellen, zu konvertieren und zu bearbeiten oder zu synchronisieren.
Übersetzbare WordPress Bestandteile
WordPress besteht aus verschiedenen Modulen, die gesonderte Übersetzungen bedürfen. Konzeptionell kann man deshalb Sprachdateien hier vorfinden:
- WordPress selbst
- Plugins mit Oberflächen
- lokalisierbare Themes
Um WordPress in die Lage zu versetzen, in einer vom Benutzer definierten Sprache zu erscheinen, ist es somit nötig, die entsprechenden Sprachdateien in maschinenlesbarem Format (*.mo) im dafür vorgesehen Ordner bereitzuhalten. Die Auswahl der Sprache richtet sich nach der Einstellung in der wp-config.php:
define ('WPLANG', 'de_DE');
Demzufolge wird das System nun versuchen, für jedes Modul die entsprechende Sprachdatei gemäß dieser Angabe zu laden. Schlägt dies fehl, wird der entsprechende Teil in englisch erscheinen.
Herkömmliche Sprachdatei Bereitstellung
Sprachdateien in maschinenlesbarer From können so nicht editiert werden. Deshalb benötigt man eine auf Text basierende, portable Version der Sprachdatei: das *.po Format. In diesen Dateien werden in lesbarer und editierbarer Form die entsprechenden Textphrasen und Pluralformen in der Ursprungsform (englisch) und in der Zielsprache notiert.
Um eine solche Datei zu bearbeiten, benötigt man entweder einen Texteditor oder einen PoEditor, den es als OpenSource zum download für verschiedene Platformen gibt. Dieser spezielle Editor erlaubt es, die Datei lokal zu editieren und ein maschinenlesbares Format der Sprachdatei zu erzeugen.
Einer der Nachteile dieser Form der Übersetzung ist die initiale Erstellung der *.po Datei. Dafür braucht der Editor ein komplettes WP (oder eben die Plugins/Themes) lokal auf dem Rechner, denn die Quelldateien (*.php) werden nach den Textphrasen durchsucht, um den Katalog zu erstellen. Das bedeutet, man erstellt und übersetzt lokal, muß dann das Ergebnis hochladen und sieht dann erst, wie es wirkt. Die Alternative wäre eine lokale Installation von WP mit Hilfe von XAMPP, aber nicht jeder ist in der Lage, dies korrekt zu konfigurieren oder mit einer gepatchten Originaldatenbank des Webspace zu betreiben.
Deshalb habe ich mich an diesem Editor orientiert und versucht, die Erstellung, Bearbeitung und Erzeugung der Sprachdateien komplett per PHP durchzuführen und das im Echtzeitbetrieb auf der Domain als WordPress Plugin zu ermöglichen.
Voraussetzungen für ein solches Plugin
Wenn man das online auf der Domain umsetzen will, dann benötigt man einige grundlegende Dinge, damit das auch funktionieren kann:
- Leserrechte für alle *.php Dateien der Domain durch ein vom Server ausgeführtes PHP Script
- Lese- und Schreibrechte auf die entsprechenden *.mo / *.po Dateien
- eine korrekte WP Installation (in meinem Fall WP 2.6.0)
Das Plugin sollte ausser den o.g. Voraussetzungen keine weiteren Bedingungen stellen und ganz ohne Konfiguration auskommen. Das heißt auch, das keine DB Tabellen nötig sind noch etwas in die DB geschrieben werden soll.
Die Übersicht aller Module
Das Plugin integriert sich in den Menüpunkt “Verwalten” als Unterpunkt “Lokalisierung”. Bei Aufruf dieses Menüpunktes erscheint eine komplette Übersicht aller Komponenten, die eine Sprachdatei verwenden oder unterstützen können. Die Komponenten werden in WP selbst, Plugins und Theme unterteilbar angezeigt. Aufgeliestet werden nur diejenigen, die nach Analyse mit Sprachdateien umgehen können und evtl. vorhandene Sprachdateien werden aufgelistet.
In dem Screenshot wird grob gezeigt (vergrößern möglich), wie die Hauptseite sich präsentiert. Pro Komponente des WP Systems, die eine Sprachdatei unterstützt, wird eine Sektion angezeigt, die alle nötigen Informationen zu WP, Plugin oder Theme enthält. Aus der Hauptseite heraus kann man dann die Sprachdateien bereits erstellen, konvertieren, neu aus den Quelldateien einlesen lassen oder eben übersetzen.
Derzeit aktive Plugins oder Themes werden farblich hervorgehoben, wie man es zum Beispiel aus der Pluginverwaltung kennt. Das Sprachdatei-Plugin unterstützt bereits eine Vielzahl von Sprachen, die in einer Plugin spezifischen PHP Datei konfiguriert sind. Bei Bedarf kann man das jederzeit erweitern. Sollte eine vorhandene Sprache mal nicht verfügbar sein, kann man dennoch eine Übersetzung vornehmen.
Neue Sprachdatei anlegen
Eine neue Sprache lässt sich sehr einfach einfügen. Wenn man bei der entsprechenden Komponente auf den Link klickt, wird eine Dialog geöffnet und man legt sich fest, was man haben möchte. Als Ergebnis wird auf dem Server eine leere *.po Datei mit entsprechendem Header erzeugt und gespeichert.
Diese Datei ist dann die Bearbeitungsgrundlage für die anschliessenden Vorgänge. Man kann auch eine nicht existierende *.po Datei aus einer existierenden *.mo Datei erstellen lassen. Um den Inhalt auf den neuesten Stand zu bringen, kann man die Quelldateien ebenfalls (neu) einlesen lassen.
Der Editor selbst
Der Inhalt der Sprachdatei kann ebenfalls komfortabel bearbeitet werden. Ein wenig orientiert sich die Bearbeitung an PoEdit aber unterstützt den Übersetzer besser bei der Suche, Navigation und Darstellung sprachtypischer Eigenheiten wie Pluralformen. Eine fertig übersetzte Sprachdatei kann im Abschluss direkt als maschinenlesbare Form (*.mo) gespeichert werden und steht WordPress dann umgehend zur Verfügung.
Alle eingebenenen Texte werden als UTF-8 verarbeitet und somit ist das Plugin auch für sämliche Sprachen tauglich. Es sind keine Einschränkungen vorhanden, die in irgend einer Weise die Übersetzungstätigkeit behindert würden.
Zusammenfassung
Die Studie zeigt deutlich, das es sehr wohl möglich ist, Sprachdateien per PHP Dateien zu bearbeiten und das Übersetzen online durchzuführen. Der einige Punkt, den ein Desktop Editor besser kann, ist die Geschwindigkeit. Aber mit einer Plugin-Lösung kann man von jedem Punkt der Erde, der Internet Zugang besitzt, einfach per Browser die Dateien bearbeiten, wie man es braucht.
Die abschliessenden Arbeiten sind noch zu vollenden, jedoch rechne ich in meiner Roadmap damit, dieses Plugin ab dem 17.08.2008 als Beta Version bereitzustellen. Es wird dann auch eine spezifische Seite (neben diesem Artikel hier) dazu geben.
Update: Nach einigen Tests mit den vielfach vorkommenden Escape Sequenzen in den Texten und den daraus resultierenden Problemen bei der Erstellung korrekter *.mo Dateien verschiebt sich der Release auf Sonntag 24.08.2008. WP2.6.1 ist allerdings schon getestet und funktioniert genauso wie WP2.6.
Update #2: Das angekündigte Plugin steht nun seit heute (31.08.2008) samt einer ausführlichen Beschreibung zum Download bereit unter Codestyling Localization









Frank
11.08.2008 | 20:28sehr schöne Idee, freue mich auf die Beta!
Antworten »
Daishi
13.08.2008 | 10:07Ey, hört sich super an!
Aber schon schade müssen wir noch ein Jahr darauf warten …
Antworten »
codestyling
13.08.2008 | 10:45Sorry, eine böser Tipfehler
Gemeint ist natürlich dieses Jahr, hab es mal korrigiert.
Antworten »
Puh
09.09.2008 | 19:24Mal ne blöde Fragem warum werden überhaupt diese *.mo oder *.po-Dateien statt normaler *.txt-Dateien genommen. Hat das einen besondern grund, ausßer daß es einem unnötig schwer gemacht wird daran Änderungen vorzunehmen?
PS. Deine Schrift ist auf 1600×1200 sehr klein und schlecht lesbar, was bei weißer Schrift auf schwarzem Grund eh schon schlecht ist. Gehts evtl nen Tick gößer? Ich kann kaum lesen was ich schreibe!
Antworten »
codestyling
09.09.2008 | 20:53Das *.mo Format enthält spezielle binäre Informationen und Tabellen, die es ggf. sogar ohne Laden der Datei direkt erlauben, einen bestimmten Text aus der Datei mit nur 3 Dateizugriffen separat zu lesen. Es ist platzsparender und um ein Vielfaches schneller zu laden als pure Textdateien. Denn diese können alles enthalten und müssen Absturz-sicher geprüft werden, bevor man was daraus verwenden kann. Eine *.mo Datei ist per Definition korrekt, weil eine Programm sie erstellt hat (wie ein Compiler aus C++ eine *.exe erstellt) und kann somit ohne erweiterte Prüfungen verwendet werden.
Das *.po Format ist ja purer Text, kann man auch mit einem Texteditor bearbeiten, nur braucht es dann ein Programm, das die *.mo herstellt.
Zur Schriftgröße: Ich verwende ebenfalls einen 1680 x 1050 Widescreen und kann das gut lesen. Das Admin Interface von WP ist auch nicht größer beschriftet. Und da ich weis, dass du Firefox Benutzer bist, kannst du jederzeit die STRG Taste festhalten und mit dem Mausrad die Größe anpassen. Die Font’s sind alle prozentual definiert. Und jeder Browser hat im Menü eine Funktion (meist unter Ansicht), um die Schriftgrößen zu modifizieren.
Antworten »
Dietrich
26.08.2009 | 11:37Nun hat sich schon fast alles erledigt mit Hilfe der vielen schönen Artikel, die man auf dieser Website finden kann. Das Addressbook-plugin wahr leider fehlerhaft bzw. unvollständig. Die Sprachdateien wurden nicht geladen. Nachdem ich das mit meinen rudimentären PHP-Kenntnisse drin hatte, sprach zwar das Lokalisisierungs-Plugin hervorragend an, aber immer noch nicht die Übersetzung. Grund: den _e bzw. __ Aufrufen fehlte das 2. Argument. Nun klappt alles.
Allerdings habe ich noch Schwierigkeiten mit dem Editor des Lokalisierungs-plugins. Das mo-File wird nicht erzeugt. Auch nicht wenn ich den button anklicke. Also doch wieder lokal mit poEdit und hochladen????
Antworten »
Arno Nyhm
26.08.2009 | 17:47schön wäre es noch, wenn man die einmal übersetzten sprachdateien irgendwo hochladen kann und mit anderen teilen kann…
Antworten »