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