PHP 语言环境,money_format不适用于fr_CA


PHP locale with money_format not working with fr_CA

我有这个简单的代码:

<?php
    setlocale('LC_MONETARY', 'fr_CA.UTF-8');
    echo money_format('%+#10n', '-4562.75834');
    print_r(localeconv());
?>

谁通常应该给-4 562,76 $.但结果总是这样的:

(4 562,76 $)

localeconv() 的输出:

Array
(
[decimal_point] => .
[thousands_sep] => 
[int_curr_symbol] => CAD 
[currency_symbol] => $
[mon_decimal_point] => ,
[mon_thousands_sep] =>  
[positive_sign] => 
[negative_sign] => -
[int_frac_digits] => 2
[frac_digits] => 2
[p_cs_precedes] => 0
[p_sep_by_space] => 1
[n_cs_precedes] => 0
[n_sep_by_space] => 1
[p_sign_posn] => 1
[n_sign_posn] => 0
[grouping] => Array
    (
    )
[mon_grouping] => Array
    (
        [0] => 3
        [1] => 3
    )
)

我们可以看到负号应该是-,但不是()

服务器上的语言环境(即 Debian 7)已安装:

# locale-gen 
Generating locales (this might take a while)...
en_CA.UTF-8... done
fr_CA.ISO-8859-1... done
fr_CA.UTF-8... done
Generation complete.

我尝试过使用 PHP 5.4.45 和 5.6.17

您已将LC_MONETARY放在单引号之间。

它需要作为一个常量变量存在,该变量设置为不在引号中。

setlocale(LC_MONETARY, 'fr_CA.UTF-8');
相关文章: