gettext translates ALWAYS?

Posted on 16th Feb 2014 by admin

I'm using gettext with the new version of XAMPP (5.3.0) on Windows Seven RTM (build 7600)
gettext-support is enabled.
It used to work perfectly a few weeks ago.
I'm not quite sure what changed this. Be it source changes or the new PHP version.
Now it's translating all the time to Germany although the default-language is English.

To test this, I got 2 files:

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");
?>
The output is always:

en_US
Welche Daten sendet die Client-Software ?

setlocale return false for en_US. If I use the Windows-typical notation "eng_USA" then it returns
English_United States.1252 but the text will be translated to German anyways :/

I have really no clue what's going wrong.

I've put together these test-file and the local files if you want to see yourself what is going wrong. You can download it via www.ali.dj/gettext.zip

Other forums