Die Gettext+PHP-Kombination fällt hin und wieder einmal aus und ist dann nicht ganz einfach zu debuggen.

Dieses kleine Skript kann helfen:

<?php
echo 'GETTEXT Test<br />';

// Locale Verzeichnis einstellen:
$_ldir = '/var/www/mywebsite/locale';

// Gewünschte Locale einstellen:
$_locale = 'de_DE.UTF-8'; // kann beispielsweise auch 'de_DE' sein

$result = putenv("LC_ALL=".$_locale);
if (!$result) {
    die('putenv LC_ALL fehlgeschlagen.');
}

$result = setlocale(LC_ALL, $_locale);
if (!$result) {
    die('setlocale fehlgeschlagen.');
}

$result = putenv("LANG=".$_locale);
if (!$result) {
    die('putenv LANG fehlgeschlagen.');
}

$result = putenv("LANGUAGE=".$_locale);
if (!$result) {
    die('putenv LANGUAGE fehlgeschlagen.');
}


$result = bindtextdomain("messages", $ldir);
echo $result . '<br />';

$result = bind_textdomain_codeset("messages","UTF-8");
echo $result . '<br />';

$result = textdomain("messages");
echo $result . '<br />';

echo 'Übersetzter Text: ';
echo gettext("Hello World!");

Was sonst noch wichtig ist:

  • Die gewünschte Locale muss auf dem Server installiert und aktiviert sein (locale -a).