PHP Probleme mit Gettext

Joe-B

Cadet 4th Year
Dabei seit
Aug. 2006
Beiträge
75
#1
Hi,
ich bin dabei eine Intranet-Seite zu übersetzen und dachte dafür den "regulären" Weg über die PHP Funktion gettext zu nutzen. Die Seite wird später auf mehreren Servern in verschiedenen Netzen laufen. Deshalb teste ich es auf verschiedenen Plattformen.

Das Script funktioniert in meiner xampp Installation auf meinem ersten Rechner Win7.
Das Script funktioniert nicht in meiner xampp Installation auf meinem anderen Rechner Win7 (libintl fehlt).
Das Script funktioniert nicht auf meinem Webspace unter Linux mit Apache.


ich benutze diese .mo/.po files und directories:
Code:
\Locale\en_GB\LC_MESSAGES\messages.mo
\Locale\en_GB\LC_MESSAGES\messages.po

die Website soll immer auf Deutsch angezeigt werden, außer man setzt den Parameter lang=en_GB.

Vermutlich liegt das Problem an Einstellungen in PHP.
Gettext ist in der php.ini aktiviert.
Code:
extension=php_gettext.dll

Wo befindet sich die dll "libintl" und wie kann man prüfen, ob Php damit kompiliert wurde?

Habt ihr irgendwelche Tipps, um rauszufinden woran es liegt? Ich müsste das Script allgemein zu laufen kriegen und mir eine Art Checkliste zusammenstellen, um die verschiedenen Server zu überprüfen.


PHP:
<?php

// get language preference
if (isset($_GET["lang"])) 
{
    $language = $_GET["lang"];
}
else 
{
    $_GET["lang"] = "de_DE";
    $language = "de_DE";
}

$folder = "Locale";
$domain = "messages";
$encoding = "UTF-8";

putenv("LANG=" . $language); 
setlocale(LC_ALL , $language);

bindtextdomain($domain, $folder); 
bind_textdomain_codeset($domain, $encoding);

textdomain($domain);
?>
Danke für eure Hilfe!
 
Dabei seit
Jan. 2005
Beiträge
832
#2
Sollte sowas nicht auch in der phpinfo() kommen, wenn es eingebunden sein sollte?
 

Joe-B

Cadet 4th Year
Ersteller dieses Themas
Dabei seit
Aug. 2006
Beiträge
75
#3
ja in der phpinfo wird angezeigt, ob die gettext extension aktiviert ist.

habe nun rausgefunden, dass das "setlocale(LC_ALL , $language);" nur bei de_DE funktioniert. Es sind wohl nicht alle locals installiert.
 
Top