【发布时间】:2020-11-27 20:14:05
【问题描述】:
我遇到了 Symfony/Form 的问题,它在后台使用 NumberFormatter 来格式化 NumberType 字段。我们的项目是多语言的,对于每个国家,我们使用不同的语言环境。
$formatter->format() 为负数返回不同的减号。例如:
$formatter = new \NumberFormatter('en', \NumberFormatter::DECIMAL);
$value = $formatter->format('-150');
var_dump($value); // string(4) "-150"
$formatter = new \NumberFormatter('lt', \NumberFormatter::DECIMAL);
$value = $formatter->format('-150');
var_dump($value); // string(6) "−150" <-- here is the problem
如您所见,NumberFormatter 将减号更改为其他内容。
为什么它对我很重要?因为页面上有些元素是用javascript生成的,js无法解析−150数字并返回NaN。
有人可以解释这种行为的原因以及如何从NumberFormatter 获得lt 语言环境的正确减号吗?
【问题讨论】:
-
哇,所以它吐出了标准破折号/减号的
\u2212版本?太恶心了您可以在输出时将清洁器装配到str_replace它,但我相信更熟悉 NumberFormatter 的人有更好的解决方案。
标签: javascript php locale number-formatting