我正在使用NumberFormatter :: formatCurrency为我的网站进行货币显示。
我做了一个肮脏的测试,看看是否一切都很好,就像这样:
$nf = new \NumberFormatter('es_ES', \NumberFormatter::CURRENCY);
var_dump($nf->formatCurrency(3000.05, 'EUR'));
$nf = new \NumberFormatter('de_DE', \NumberFormatter::CURRENCY);
var_dump($nf->formatCurrency(3000.05, 'EUR'));
$nf = new \NumberFormatter('en_US', \NumberFormatter::CURRENCY);
var_dump($nf->formatCurrency(3000.05, 'EUR'));
$nf = new \NumberFormatter('en_GB', \NumberFormatter::CURRENCY);
var_dump($nf->formatCurrency(3000.05, 'EUR'));
$nf = new \NumberFormatter('fr_FR', \NumberFormatter::CURRENCY);
var_dump($nf->formatCurrency(3000.05, 'EUR'));
结果是
string(14) "3 000,05 €"
string(13) "3.000,05 €"
string(11) "€3,000.05"
string(11) "€3,000.05"
string(14) "3 000,05 €"
所以一切看起来都很好,除了es_ES语言环境,因为在西班牙我们使用的格式与德国相同:X.XXX,XX€
如果我在我的机器上运行命令locale -a
,我会得到
C
C.UTF-8
en_GB.utf8
en_US.utf8
es_ES.utf8
POSIX
那么,问题出在哪里? es_ES案例中的语言环境定义是否有误?