Vor einiger Zeit stand ich vor dem Problem das ich XML-Dateien hatte die zu übersetzende Zeichenketten enthielten. Mein erster, wahrscheinlich auch naheliegendster, Gedanke war, die zu übersetzenden Zeichenketten einfach in ein __()
zu packen und zu hoffen das poEdit dies erkennt. Das Problem daran war aber, dass __()
eine PHP-Funktion ist und die XML-Dateien mit simplexml
verarbeitet wurden. Die PHP-Funktion würde also erst gar nicht ausgeführt werden, selbst wenn poEdit die Zeichenketten erkennen würde. Unter Zuhilfenahme von Suchmaschinen lies sich aber recht schnell eine Lösung für das Problem finden.
In poEdit muss man einen neuen Parser anlegen (Datei -> Einstellungen -> Parser):
- Sprache:
XML
- Durch Semikola getrennte Liste der Dateiendungen (z.B. .cpp;.h):
*.xml
- Parser Befehl:
xgettext --force-po -o %o %C %K %F -L glade
- Ein Eintrag in der Schlüsselwortliste:
-k%k
- Ein Eintrag in der Eingabedatei-Liste:
%f
- Zeichensatz des Quellcodes:
--from-code=%c
Erzeugt man nun einen neuen Katalog, so fügt man in den Katalogoptionen unter Schlüsselwörter noch ein zusätzliches Schlüsselwort ein. Diesen kann man relativ frei wählen, ich habe mich hier für translate
entschieden.
In der XML-Datei muss man nun noch die zu übersetzenden Zeichenketten mit seinen gewählten Schlüsselwort umschließen:
<root> <title><translate>My headline</translate></title> <text><translate>This is the text</translate></text> <options> <font>strong</font> <color>black</color> </options> </root>
poEdit ist nun in der Lage die in der XML-Datei mit translate
gekennzeichneten Zeichenketten zu übersetzen.
Unter Windows kann es vorkommen das man noch eine Fehlermeldung erhält das
glade
und/oder expat
nicht unterstützt werden. Das liegt an der mit poEdit ausgelieferten Version von gettext
. In diesen Fall sollte man sich das vom gnuwin32 Projekt bereit gestellte gettext-Paket runterladen.
Die in dem Paket enthaltenen Dateien kopiert man sich dann in poedit/bin/
(vorher das Verzeichnis sichern). In einigen Quellen wird angegeben das man lediglich die gettext.exe
kopieren muss, andere sagen man kopiert sich die gettext.exe
, startet sie und schaut welche Abhängigkeiten/Bibliotheken (.dll Dateien) noch fehlen. Ich habe einfach das komplette Paket kopiert (WinXP / Win7) und es funktioniert einwandfrei.
Keine Trackbacks
Ein Kommentar
Sie konnen XML auch mit diesem benutzerfreundliche, webbasierte Lokalisierungstool http://poeditor.com/ sehr leicht ubersetzen.