Windows, PHP und gettext
Ein typisches Problem, wenn man mehrsprachige Anwendungen in PHP unter einer Entwicklungsumgebung auf Windows entwickeln möchte und auf gettext setzt, ist es, gettext zum Laufen zu bekommen.
Hier ganz kurz die nötigen Schritte:
- In der php.ini gettext.dll bei den extensions aktivieren (Kommentar # entfernen)
- LC_MESSAGES definieren, da es unter Windows anscheinend meistens nicht definiert ist.
- Die vom eigenen System ünterstützte Locale rausfinden.
- putenv benutzen um die Locale auch wirklich zu aktivieren.
- Darauf achten, dass die.mo Datei nicht in German_Germany.1252/ liegt sondern in German_Germany.1252/LC_MESSAGES
Zum Abschluss das komplette Beispiel:
/* windows workarounds */
if (!defined('LC_MESSAGES')) define('LC_MESSAGES', 5);
putenv ("LANGUAGE=German_Germany.1252");
putenv ("LANG=German_Germany.1252");
$textdomain = "test";
$codeset = "UTF-8";
$locale = "German_Germany.1252";
// _NUR_ Sprache auf Deutsch setzen
var_dump(setlocale(LC_MESSAGES, $locale));
var_dump(bindtextdomain($textdomain, . "./locale"));
var_dump(bind_textdomain_codeset($textdomain, $codeset));
var_dump(textdomain($textdomain));
// Zu uebersetzender Teil
echo _("Hello world");
echo "<br />";
echo gettext("Goodbye");
Der Artikel "Übersetzers Liebling" auf der Webseite des PHP Magazins war hilfreich und gibt weitere Tipps, vergisst aber das putenv und empfiehlt deshalb das Paket php-gettext. Nicht nötig!
Jun 24, 03:02 PM