Ich benutze gettext mit der neuesten Version von Xampp (also PHP 5.3.0).
Der Support dafür ist enabled.
Bevor ich Xampp aktualisiert habe funktionierte es perfekt, aber jetzt übersetzt es IMMER alles auf Deutsch obwohl standardmäßig alles auf Englisch drinsteht.
Ich hab zum Testen 2 Dateien:
gettext.php
Code:
<?php
error_reporting(E_ALL);
include("config.inc.php");
echo $locale;
setlocale(LC_ALL, "eng_USA");
echo '
'.gettext('Which data is transferred by the client ?');
?>
localization.php
Code:
<?php
$locale = '';
$parameter=explode ( '/' , $_SERVER['REQUEST_URI']);
$locale_change = $parameter[1];
if ($locale_change!=false)
{
if ($locale_change=="de")
{
$locale = "de_DE";
setcookie("locale", $locale, time()+60*60*24*30, "/");// save a cookie
}
else if ($locale_change=="en")
{
$locale = "en_US";
setcookie("locale", $locale, time()+60*60*24*30, "/");// save a cookie
}
}
if (!$locale && isSet($_COOKIE["locale"]))
{
$locale = $_COOKIE["locale"];
}
$locale="en_US";
putenv("LC_ALL=$locale");//needed on some systems
putenv("LANG=$locale");//needed on some systems
putenv("LANGUAGE=$locale");//needed on some systems
bindtextdomain("messages", "./locale/");
bind_textdomain_codeset("messages", 'UTF-8');
textdomain("messages");
?>
Die Ausgabe ist immer:
en_US
Welche Daten sendet die Client-Software ?
setlocale liefert übrigens false zurück. Wenn ich dagegen die Windows-typischere Notation ("eng_USA") verwende, dann liefert es English_United States.1252 zurück, aber der Text wird trotzdem auf Deutsch übersetzt.