4

我碰巧知道“SEK”(瑞典货币)货币应该如何用“sv”(瑞典)语言在“SE”(瑞典)语言环境中格式化。它应该使用数千个分隔符的句点。但是,下面的最小代码示例将显示 PHP 以空格而不是千位分隔符的句点输出它。它确实得到了正确的逗号(用于十进制字符)以及最后的“kr”,所以我不知道该怎么做:

// 代码示例 #1(正常工作):

$a = new \NumberFormatter('en_US', \NumberFormatter::CURRENCY);
var_dump($a->formatCurrency(123456789.987, 'USD'));

Expected output:

    $123,456,789.99

Actual output:

    $123,456,789.99

// 代码示例 #2(似乎无法正常工作):

$a = new \NumberFormatter('sv_SE', \NumberFormatter::CURRENCY);
var_dump($a->formatCurrency(123456789.987, 'SEK'));

Expected output:

    123.456.789,99 kr

Actual output:

    123 456 789,99 kr

这可能有什么原因?令人沮丧的是,它“几乎”做对了。

4

1 回答 1

0

这有效,但它是一个黑客:

$a = new \NumberFormatter('sv_SE', \NumberFormatter::CURRENCY);
$a->setSymbol(NumberFormatter::GROUPING_SEPARATOR_SYMBOL, '.'); 
$a->setPattern('#,##0.## kr');
var_dump($a->formatCurrency(123456789.987, 'SEK'));

输出:

string(17) "123.456.789,99 kr" 
于 2020-01-22T12:20:04.733 回答