2013-05-02 2 views
1

Следующая проблема возникает с апача на Ubuntu 13.04 (не уверен, о других ОС) я попытался с fr_LU тоже, но безрезультатноNumberFormatter :: FormatCurrency вернуть NaN с «fr_FR.UTF-8»

Безразлично» т работа -returns 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 

ответ

4

Последовал комментарий на https://bugs.php.net/bug.php?id=54538, который идет следующим образом:. «Я наблюдал обходной путь Установка LC_MESSAGES не влияет NumberFormatter и достаточный для трансляции gettext одновременно ».

Я прокомментировал Это обходной путь, и это сработало для меня. Так выглядит мой код после изменения

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); 
+1

Спасибо! Просто слепо следуя некоторому старому учебнику, я устанавливаю LC_ALL в свой язык при использовании gettext. Плохо испортил мой NumberFormatter и просто получил строку '¤¤¤' в качестве моего вывода. – Oskar

Смежные вопросы