Andreas Görtz: /GNU-gettext Übersetzung funktioniert nicht

Beitrag lesen

Hi Jojo,

switch ($_GET['lang']) {
case "de":
case "en":
case "fr": $lang = $_GET['lang']; break;
default :  $lang = "de";          break;
}

setlocale(LC_ALL, $lang);
//putenv("LANG=$lang");
bindtextdomain("sfogame", "../gettext/");
textdomain("sfogame");

echo gettext("Das ist ein Test !");
[/code]

Wenn ich das ganz bei mir auf dem Rechner ausführe, dann funktioniert die Übersetzung... also muss es ja am Server liegen

ja, die locales und deren Bezeichnung hängen von der Server-Konfiguration ab. Wie die locales heißen und welche überhaupt installiert/definiert sind, kannst Du unter Linux mit dem Befehl "locale -a" herausfinden. Versuch mal mit der PHP-Funktion system() oder shell_exec() o.ä., diesen Befehl abzusetzen und die locales herauszubekommen.

Um generell mit unterschiedlichen Systemen kompatibel zu sein, solltest Du außerdem der setlocale() mehrere Argumente mitgeben. Diese versucht dann nacheinander, die locale zu setzen, bis es klappt. Also z.B.:

  
setlocale(LC_ALL, 'fr_FR', 'fr_FR.utf8', 'fr_FR.iso-8859-1', 'und wie die sonst noch heißen kann');  

Außerdem solltest Du den Rückgabewert der Funktion setlocale() auswerten, diese gibt nämlich boolean FALSE zurück, wenn sie die locale nicht setzen konnte.

Gruß,
Andreas.