Ubuntu 13.04上的apache出现以下问题(不确定其他操作系统) 我也尝试了fr_LU,但无济于事
不起作用 - 返回NaN
setlocale(LC_MONETARY, 'fr_FR.UTF-8');
$currency_formatter = NumberFormatter::create(setlocale(LC_MONETARY, "0"), NumberFormatter::CURRENCY);
$currency_formatter->formatCurrency(100, 'USD');
我在这里缺少什么?
我的机器上的区域设置-a的结果如下:
C
C.UTF-8
de_AT.utf8
de_BE.utf8
de_CH.utf8
de_DE.utf8
de_LI.utf8
de_LU.utf8
en_AG
en_AG.utf8
en_AU.utf8
en_BW.utf8
en_CA.utf8
en_DK.utf8
en_GB.utf8
en_HK.utf8
en_IE.utf8
en_IN
en_IN.utf8
en_NG
en_NG.utf8
en_NZ.utf8
en_PH.utf8
en_SG.utf8
en_US
en_US.iso88591
en_US.utf8
en_ZA.utf8
en_ZM
en_ZM.utf8
en_ZW.utf8
fr_BE.utf8
fr_CA.utf8
fr_CH.utf8
fr_FR
fr_FR.iso88591
fr_FR.utf8
fr_LU.utf8
ja_JP.utf8
POSIX
zh_CN.utf8
zh_SG.utf8
答案 0 :(得分:4)
在https://bugs.php.net/bug.php?id=54538发表评论,内容如下: “我观察到了一种解决方法。设置LC_MESSAGES不会影响NumberFormatter 并且足以同时进行文本翻译。“
我评论道 这是一种解决方法,它对我有用。这就是我的代码在更改后的样子
putenv('LC_MESSAGES='.$locale);
setlocale(LC_MESSAGES, $locale);
setlocale(LC_TIME, $locale);
//Don't set LC_NUMERIC and LC_MONETARY as these may interfere with number formatter and cause to return NaN(https://bugs.php.net/bug.php?id=54538)
//setlocale(LC_NUMERIC, $locale);
//setlocale(LC_MONETARY, $locale);
$currency_formatter = NumberFormatter::create(setlocale(LC_MESSAGES, "0"), NumberFormatter::CURRENCY);