In PHP 5.2.4 (my version) the gettext bindtextdomain function is not
returning the existing directory settings when the directory argument is
NULL.
That is the expected behavior for bindtextdomain with GNU and it works
this way elsewhere such as in python.
PYTHON EXAMPLE:
bindtextdomain("messages", "./locale");
textdomain("messages");
print bindtextdomain("messages",None);
print textdomain(None);
ACTUAL: (correct)
python test.py
./locale
messages
With PHP what happens is that is just returns the current directory
rather than the existing bindtextdomain directory setting.
PHP EXAMPLE:
bindtextdomain("messages", "./locale");
textdomain("messages");
print bindtextdomain("messages",NULL)."\n";
print textdomain(NULL)."\n";
ACTUAL: (incorrect)
php test.php
/var/www/htdocs
messages
EXPECTED:
php test.php
./locale
messages
Can PHP gettext bindtextdomain be fixed to correctly return the existing
setting when called with a NULL
directory argument?
I was not sure if this was a bug so I thought I would present the issue
on the internal list first.
In PHP 5.2.4 (my version) the gettext bindtextdomain function is not
returning the existing directory settings when the directory argument is
NULL.
That is the expected behavior for bindtextdomain with GNU and it works
this way elsewhere such as in python.
With PHP what happens is that is just returns the current directory
rather than the existing bindtextdomain directory setting.PHP EXAMPLE:
bindtextdomain("messages", "./locale");
textdomain("messages");print bindtextdomain("messages",NULL)."\n";
print textdomain(NULL)."\n";ACTUAL: (incorrect)
php test.php
/var/www/htdocs
messagesEXPECTED:
php test.php
./locale
messagesCan PHP gettext bindtextdomain be fixed to correctly return the existing
setting when called with aNULL
directory argument?
PHP of course just calls GNU textdomain()
and you see the result the original function returns,
not some PHP-specific result.
And no, I cannot reproduce this with PHP 5.3.4-dev or PHP 5.2.15-dev.
You might want to update your PHP and try again.
If you're still able to reproduce it - make sure the problem doesn't appear
to be in some distro-specific patch, i.e. get the original source tarball
from php.net and check if the problem actually exists there.
After that you're welcome to fill a bug-report.
--
Wbr,
Antony Dovgal
http://pinba.org - realtime statistics for PHP
In PHP 5.2.4 (my version) the gettext bindtextdomain function is not
returning the existing directory settings when the directory argument is
NULL.
That is the expected behavior for bindtextdomain with GNU and it works
this way elsewhere such as in python.With PHP what happens is that is just returns the current directory
rather than the existing bindtextdomain directory setting.PHP EXAMPLE:
bindtextdomain("messages", "./locale");
textdomain("messages");print bindtextdomain("messages",NULL)."\n";
print textdomain(NULL)."\n";ACTUAL: (incorrect)
php test.php
/var/www/htdocs
messagesEXPECTED:
php test.php
./locale
messagesCan PHP gettext bindtextdomain be fixed to correctly return the existing
setting when called with aNULL
directory argument?PHP of course just calls GNU
textdomain()
and you see the result the original function returns,
not some PHP-specific result.
And no, I cannot reproduce this with PHP 5.3.4-dev or PHP 5.2.15-dev.
You might want to update your PHP and try again.If you're still able to reproduce it - make sure the problem doesn't appear
to be in some distro-specific patch, i.e. get the original source tarball
from php.net and check if the problem actually exists there.
After that you're welcome to fill a bug-report.
The function 'textdomain' is not the problem. It is 'bindtextdomain'
that has the problem.
I tried this on a newer PHP 5.3.2 installation and it has the exact same
problem.
root@grp-01-23-02:/tmp# php --version
PHP 5.3.2-1ubuntu4.5 with Suhosin-Patch (cli) (built: Sep 17 2010 13:49:46)
Copyright (c) 1997-2009 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2010 Zend Technologies
root@grp-01-23-02:/tmp# cat test.php
<?php
bindtextdomain("messages", "./locale");
textdomain("messages");
print bindtextdomain("messages",NULL)."\n";
print textdomain(NULL)."\n";
?>
root@grp-01-23-02:/tmp# php test.php
/tmp
messages
The correct output should have been:
./locale
messages
Le 05/11/2010 21:06, Gerry Reno a écrit :
In PHP 5.2.4 (my version) the gettext bindtextdomain function is not
returning the existing directory settings when the directory argument
is NULL.
That is the expected behavior for bindtextdomain with GNU and it works
this way elsewhere such as in python.[...]
Can PHP gettext bindtextdomain be fixed to correctly return the
existing setting when called with aNULL
directory argument?I was not sure if this was a bug so I thought I would present the
issue on the internal list first.
I filled a bug-report with a patch.
But my patch introduce a BC (see my non regression test :
ext/gettext/tests/gettext_bindtextdomain-nulldir.phpt)
http://bugs.php.net/bug.php?id=53251
--
Jean-Sébastien H.
Au-Fil-Du.Net
Le 05/11/2010 21:06, Gerry Reno a écrit :
In PHP 5.2.4 (my version) the gettext bindtextdomain function is not
returning the existing directory settings when the directory argument
is NULL.
That is the expected behavior for bindtextdomain with GNU and it works
this way elsewhere such as in python.[...]
Can PHP gettext bindtextdomain be fixed to correctly return the
existing setting when called with aNULL
directory argument?I was not sure if this was a bug so I thought I would present the
issue on the internal list first.I filled a bug-report with a patch.
But my patch introduce a BC (see my non regression test :
ext/gettext/tests/gettext_bindtextdomain-nulldir.phpt)
Thanks for filing the bug. I reviewed the patch and it does not seem to
do what is necessary. What it needs to do is to go get the current
setting from the previous bindtextdomain call. This means that
'bindtextdomain' needs to store the current setting so that it can be
retrieved later by a call with a NULL
directory argument.
Le 05/11/2010 21:06, Gerry Reno a écrit :
In PHP 5.2.4 (my version) the gettext bindtextdomain function is not
returning the existing directory settings when the directory argument
is NULL.
That is the expected behavior for bindtextdomain with GNU and it works
this way elsewhere such as in python.[...]
Can PHP gettext bindtextdomain be fixed to correctly return the
existing setting when called with aNULL
directory argument?I was not sure if this was a bug so I thought I would present the
issue on the internal list first.
I filled a bug-report with a patch.But my patch introduce a BC (see my non regression test :
ext/gettext/tests/gettext_bindtextdomain-nulldir.phpt)Thanks for filing the bug. I reviewed the patch and it does not seem
to do what is necessary. What it needs to do is to go get the current
setting from the previous bindtextdomain call. This means that
'bindtextdomain' needs to store the current setting so that it can be
retrieved later by a call with aNULL
directory argument.
I added some comments and clarifications on the bindtextdomain problem
into the bug http://bugs.php.net/bug.php?id=53251
Hi,
Any feedback on this patch ?
http://bugs.php.net/bug.php?id=53251
Regards,
Le 07/11/2010 15:57, Gerry Reno a écrit :
Le 05/11/2010 21:06, Gerry Reno a écrit :
In PHP 5.2.4 (my version) the gettext bindtextdomain function is not
returning the existing directory settings when the directory argument
is NULL.
That is the expected behavior for bindtextdomain with GNU and it works
this way elsewhere such as in python.[...]
Can PHP gettext bindtextdomain be fixed to correctly return the
existing setting when called with aNULL
directory argument?I was not sure if this was a bug so I thought I would present the
issue on the internal list first.
I filled a bug-report with a patch.But my patch introduce a BC (see my non regression test :
ext/gettext/tests/gettext_bindtextdomain-nulldir.phpt)Thanks for filing the bug. I reviewed the patch and it does not seem
to do what is necessary. What it needs to do is to go get the
current setting from the previous bindtextdomain call. This means
that 'bindtextdomain' needs to store the current setting so that it
can be retrieved later by a call with aNULL
directory argument.I added some comments and clarifications on the bindtextdomain problem
into the bug http://bugs.php.net/bug.php?id=53251
--
Jean-Sébastien H.
Au-Fil-Du.Net
I put my comments and some clarifications about the patch into the bug.
-Gerry
Hi,
Any feedback on this patch ?
http://bugs.php.net/bug.php?id=53251
Regards,
Le 07/11/2010 15:57, Gerry Reno a écrit :
Le 05/11/2010 21:06, Gerry Reno a écrit :
In PHP 5.2.4 (my version) the gettext bindtextdomain function is not
returning the existing directory settings when the directory argument
is NULL.
That is the expected behavior for bindtextdomain with GNU and it works
this way elsewhere such as in python.[...]
Can PHP gettext bindtextdomain be fixed to correctly return the
existing setting when called with aNULL
directory argument?I was not sure if this was a bug so I thought I would present the
issue on the internal list first.I filled a bug-report with a patch.
But my patch introduce a BC (see my non regression test :
ext/gettext/tests/gettext_bindtextdomain-nulldir.phpt)Thanks for filing the bug. I reviewed the patch and it does not seem
to do what is necessary. What it needs to do is to go get the
current setting from the previous bindtextdomain call. This means
that 'bindtextdomain' needs to store the current setting so that it
can be retrieved later by a call with aNULL
directory argument.I added some comments and clarifications on the bindtextdomain problem
into the bug http://bugs.php.net/bug.php?id=53251
bindtextdomain is badly broken in PHP. It is not implemented the same
as the standard GNU implementation or any of the other language
implementations such as python for example. And it has crippled the
ability to do nested access to different gettext translation stores
because you cannot query for the current setting. As far as backward
compatibility, I would not worry about it, because I doubt anyone would
be relying on retrieving the current setting especially once they found
out it was absolutely incorrect.
The patch needs updated to correctly fix the problem as I've explained
in the bug. I have not seen any activity on this bug recently and this
needs to get into 5.2.15 and 5.3.3 as soon as possible so that PHP has a
correct implementation of bindtextdomain.
-Gerry
I put my comments and some clarifications about the patch into the bug.
-Gerry
Hi,
Any feedback on this patch ?
http://bugs.php.net/bug.php?id=53251
Regards,
Le 07/11/2010 15:57, Gerry Reno a écrit :
Le 05/11/2010 21:06, Gerry Reno a écrit :
In PHP 5.2.4 (my version) the gettext bindtextdomain function is not
returning the existing directory settings when the directory
argument
is NULL.
That is the expected behavior for bindtextdomain with GNU and it
works
this way elsewhere such as in python.[...]
Can PHP gettext bindtextdomain be fixed to correctly return the
existing setting when called with aNULL
directory argument?I was not sure if this was a bug so I thought I would present the
issue on the internal list first.
I filled a bug-report with a patch.But my patch introduce a BC (see my non regression test :
ext/gettext/tests/gettext_bindtextdomain-nulldir.phpt)Thanks for filing the bug. I reviewed the patch and it does not seem
to do what is necessary. What it needs to do is to go get the
current setting from the previous bindtextdomain call. This means
that 'bindtextdomain' needs to store the current setting so that it
can be retrieved later by a call with aNULL
directory argument.I added some comments and clarifications on the bindtextdomain problem
into the bug http://bugs.php.net/bug.php?id=53251