Ich arbeite zur Zeit an einem PHP-Projekt, das Möglichkeiten zur Internationalisierung bieten soll, d.h. man soll die Anwendung mit möglichst wenig Aufwand in jede beliebige Sprache übersetzen können. Da ich durch WordPress bereits die Funktionsweise von gettext
kennengelernt hatte und von dessen Einfachheit und Effektivität hellauf begeistert war, entschied ich mich, dieses System auch für mein Projekt zu nutzen. Das hat auch hervorragend funktioniert, und ich kann gettext
nur jedem empfehlen, der eine mehrsprachige Anwendung entwickeln will!
Als ich aber anschließend meine Dateien von Poedit auf Textbausteine parsen lassen wollte, erhielt ich immer nur folgende Fehlermeldung:
Befehlsausführung ‚dxgettext –so „C:\***\Temp\poe***.tmp“ „irgendein/pfad/datei.inc“‚ schlug fehl (Fehler 2: das System kann die angegebene Datei nicht finden.
Inzwischen habe ich den Fehler gefunden – da ich aber damals bei meiner Google-Suche nirgends eine Lösung auftreiben konnte, schreibe ich sie hier mal nieder für alle, die in Zukunft vielleicht danach suchen.
Im Nachhinein betrachtet erklärt die Fehlermeldung eigentlich alles: Poedit hat versucht, den Befehl dxgettext
auf eine meiner Include-Dateien (datei.inc
) anzuwenden, aber auf dem Rechner wurde kein Programm namens dxgettext
gefunden. Wie auch – bei dxgettext
handelt es sich um den gettext-Parser für die Programmiersprache Delphi, und den habe ich nicht installiert. Schließlich schreibe ich mein Skript ja in PHP und nicht in Delphi. Poedit aber hält standardmäßig alle Dateien mit der Endung .inc
für Delphi-Dateien und versucht sie deshalb mit dxgettext
zu parsen.
Lösung
Man hat zwei Möglichkeiten:
- Man benennt die problematische
datei.inc
einfach um, sodaß sie wieder eine Endung hat, die Poedit als PHP-Datei erkennt, also z. B.datei.inc.php
. - Man sagt Poedit, daß es
.inc
-Dateien nicht mehr als Delphi-Dateien behandeln soll. Dazu nimmt man einfach unter „Datei“ → „Einstellungen“ → „Parser“ → „Delphi“ die Endung*.inc
aus der Liste heraus. Nun wird Poedit alle.inc
-Dateien ignorieren.