Bug #54538 [Com]: setlocale() interferes with NumberFormatter class
| From: | hariombalhara at gmail dot com | Date: | Thu, 16 May 2013 19:29:57 +0000 |
| Subject: | Bug #54538 [Com]: setlocale() interferes with NumberFormatter class | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-178976@lists.php.net to get a copy of this message | ||
Edit report at https://bugs.php.net/bug.php?id=54538&edit=1
ID: 54538
Comment by: hariombalhara at gmail dot com
Reported by: davidkarlin at gmail dot com
Summary: setlocale() interferes with NumberFormatter class
Status: Open
Type: Bug
Package: Unknown/Other Function
Operating System: OS X
PHP Version: 5.3.6
Block user comment: N
Private report: N
New Comment:
thanks for the workaround. It worked well for me :) Here is the exact problem I
was facing
http://stackoverflow.com/questions/16334752/numberformatterformatcurrency-return-
nan-with-fr-fr-utf-8
Previous Comments:
------------------------------------------------------------------------
[2011-07-26 13:01:36] radek dot dvorak at gmail dot com
I have observed a workaround. Setting LC_MESSAGES does not affect NumberFormatter
and is sufficient for gettext translations at the same time.
------------------------------------------------------------------------
[2011-04-16 16:52:30] cataphract@php.net
PHP passes the correct value to ICU, namely it passes the expected double to unum_formatDouble. This
is likely an ICU defect. See:
http://bugs.icu-project.org/trac/ticket/8214
------------------------------------------------------------------------
[2011-04-15 13:34:02] davidkarlin at gmail dot com
Sorry - I typed the wrong lines in the expected and actual results. Should be
"123.456,789" in both cases. But you get the idea...
------------------------------------------------------------------------
[2011-04-15 13:32:41] davidkarlin at gmail dot com
Description:
------------
---
From manual page: http://www.php.net/class.numberformatter
---
When I have my locale set to 'en' with setlocale(), the NumberFormatter class
works just fine.
If I set the locale to, for example, 'fr_FR', the NumberFormatter class fails,
giving a 'NaN' result. This is irrespective of the fact that the setlocale()
function has clearly worked, as evidenced by gettext() working just fine.
I can't see any reason why the setlocale function should have anything to do with
the operation of NumberFormatter: this isn't documented, and I'm explicitly
passing the locale I want to use in the parameter.
Using 5.3.5 (the most recent available through MacPorts)
Test script:
---------------
setlocale(LC_ALL, 'en');
$nf = new NumberFormatter('de_DE',NumberFormatter::DECIMAL);
print $nf->format(123456.789); // Outputs the correct answer 123.456,789
print "<br/>\n";
setlocale(LC_ALL, 'fr_FR');
$nf = new NumberFormatter('de_DE',NumberFormatter::DECIMAL);
print $nf->format(123456.789); // Outputs NaN
Expected result:
----------------
123456.789<br/>
123456.789
Actual result:
--------------
123456.789<br/>
NaN
------------------------------------------------------------------------
--
Edit this bug report at https://bugs.php.net/bug.php?id=54538&edit=1