Edit report at https://bugs.php.net/bug.php?id=66265&edit=1
ID: 66265
Updated by: ab@php.net
Reported by: roeycohen at gmail dot com
Summary: gettext is not working anymore
-Status: Assigned
+Status: Feedback
Type: Bug
Package: Gettext related
Operating System: windows
-PHP Version: 5.5.7
+PHP Version: 5.5.6
Assigned To: ab
Block user comment: N
Private report: N
New Comment:
Hi,
thanks for posting the experience. However on my machine your exact snippet worked.
There's another point with gettext - the locale passed to gettext has to be present on the
system. Same on Linux, the locale has to be present (that /etc/locale.gen stuff), on Windows it has
to be installed along with the base locale. After your last discovery, is the base system locale on
your machine he_IL? Please check that en_US support is installed as well.
Is the machine where 5.4 works the same where 5.5 fails? Also, to exclude IIS, could you please try
the same on CLI?
Thanks.
Previous Comments:
------------------------------------------------------------------------
[2013-12-12 11:15:51] roeycohen at gmail dot com
hmm, apparently, trying other locales, other than he_IL doesn't fix the problem...
i've tried: es_ES, en, 'dummy', fr_FR same result as en_US.
only he_IL fixes the problem, may it has something to do with my region format being
"israel"?
------------------------------------------------------------------------
[2013-12-12 11:10:04] roeycohen at gmail dot com
ok, i found something,
if i change the folder en_US to he_IL and also use these lines instead of the original ones:
putenv("LC_ALL=he_IL");
setlocale(LC_ALL, 'he_IL');
and restart the server then everything is working fine...
i didn't had this problem in version 5.4.8 :(
------------------------------------------------------------------------
[2013-12-12 10:42:54] roeycohen at gmail dot com
Hi, this is a complete sample:
http://blossom-kc.com/download/php_gettext/gettext.zip
(php.ini is included).
this sample works for a friend of mine, but not on my machine (windows 8 + iis + 5.5.7)
also, i am using iisreset to the restart the server (and tried reboot).
------------------------------------------------------------------------
[2013-12-11 18:14:58] ab@php.net
Hi,
I can't confirm the behavior you describe, works fine here with 5.5.5 and 5.5.6
Please check and post the following
- you've restarted the webserver
- the .mo file is present and is correct
- the .mo file is under locale\en_US\LC_MESSAGES\domain.mo
There must be something else otherwise in your environment, if this doesn't help.
Thanks.
------------------------------------------------------------------------
[2013-12-11 16:42:18] roeycohen at gmail dot com
Description:
------------
as simple as that, a code that used to work perfect now doesn't.
switching back to version 5.4.8 solves the problem.
i've made sure that in the php.ini the gettext extension is on
and also tried turning off OPCache, but it didn't help.
as a matter of fact, i've compared both php.ini to make sure that most options are the same.
Test script:
---------------
$domain = 'domain';
putenv("LC_ALL=en_US");
setlocale(LC_ALL, 'en_US');
$path = realpath('./locale');
bindtextdomain($domain, $path);
bind_textdomain_codeset($domain, "UTF-8");
textdomain($domain);
echo _('hello');
Expected result:
----------------
the text hello will be replaced with the string within the mo file.
Actual result:
--------------
the original string is returned.
------------------------------------------------------------------------
--
Edit this bug report at https://bugs.php.net/bug.php?id=66265&edit=1