Mailinglisten-Archive |
Hallo
So, also ich hab nun alles für mich Interessante erfolgreich
durchgetestet. Es hat mich ein wenig aufgehalten, dass ich nach dem
Ändern der .mo Datei keinen Effekt im Browser gesehen habe, aber
schließlich erinnerte ich mich wieder daran, dass unter Windows der
Apache neu gestartet werden muss, um ein verändertes .mo zu berücksichtigen.
Mein Script ist nun als UTF-8 gespeichert. Wenn ich es mit einem
normalen Texteditor anzeigen lasse, dann war die von Lutz erwähnte
Byte-Sequenz am Dateianfang sichtbar. Zumindest hab ich die heut schon
gesehen, im Moment ist sie aber nicht mehr sichtbar... Fragt mich bitte
nicht warum.
Sowohl .po als auch .mo sind ebenfalls als UTF-8 gespeichert.
Zusätzlich zum Code-Beispiel unter [1] habe ich noch ein Codeset-Bind
siehe [2] mittels bind_textdomain_codeset('mytest', 'UTF-8'); angegeben.
Nun kann ich im Script und im PO-Katalog mit deutschen Umlauten arbeiten
und sehe diese auch ordentlich im Browser. Ohne das Codeset-Bind
erschienen nur die bekannten schwarzen Vierecke mit Fragezeichen.
Die Sache mit den doppelten Anführungszeichen habe ich ebenfalls positiv
getestet. Es ist so wie von Niels beschrieben: Der Parser escaped ein "
in der msgid zu \". Editiert man die Übersetzung im PoEdit mit
unmaskierten ", dann fügt PoEdit die Backslashes selbstständig sofort
hinzu. Die Übersetzung, die im Browser ankommt, enthält dann wieder die
reinen doppelten Anführungszeichen. So wie es sein soll.
Das Beispiel siehe [1] weist im Kommentar darauf hin, dass das
betreffende .mo File unter dem Pfad
./locale/de_DE/LC_MESSAGES/myPHPApp.mo abgelegt sein muss.
Dieser Zusammenhang ist mir leider noch nicht klar. Es funktioniert mit
dieser Ordnerstruktur, aber welchen Spielraum gibt es hier noch?
Kann ich mein .mo File nicht auch einfach unter ./languages/german.mo
ablegen und dem gettext das über die Textdomäne irgendwie beibringen?
Warum muss da de_DE und LC_MESSAGES enthalten sein?
Ich habe auch in den per Google gefundenen WordPress Beispielen [3]
Pfade gefunden wie zum Beispiel wp-includes/languages/de_DE.mo.
Genauso simpel kann es wohl auch funktionieren. Aber wie?
[1] http://www.php.net/manual/en/function.gettext.php
[2] http://www.php.net/manual/en/function.bind-textdomain-codeset.php
[3]
http://49suns.de/2007-08-27/localization-von-themes-und-plugins-eine-einfuehrung
regards, Ringo
php::bar PHP Wiki - Listenarchive