【发布时间】:2013-11-24 20:08:48
【问题描述】:
我正在尝试使用 intl 包中的 NumberFormatter 类将整数数量拼写为斯洛文尼亚语单词(用于邮政声明),但结果完全错误且毫无意义。
$fmt = new NumberFormatter('sl', NumberFormatter::SPELLOUT);
$fmt->format(561);
结果为“petsto šestdeset ena”,而它应该是“petsto enainšestdeset”。看起来像婴儿说话。
在非常相似的克罗地亚语中,结果似乎还可以(“petsto šezdeset i jedan”)。
这是在 PHP 中做的不好的翻译还是基于我的系统语言环境?我在 PHP 5.3.10 / Ubuntu 12.04 上。
编辑:
intl是1.1.0版本,现在是3.0.0,可能已经修复了?
【问题讨论】:
-
翻译由 PHP
intl扩展提供。以我的经验,有些事情不时出错,并在后续版本中得到修复。我在 PHP/5.5.5 / Windows 7 中得到了相同的结果,所以这可能是一个错误。 -
Álvaro 感谢您对其进行测试。我不认为这是一个错误,而只是一些尚未完成的事情,例如在“dvjesto devetdeset šest”中,这个“dvjesto”甚至不是斯洛文尼亚语单词,而且总是在十位之前,我认为这在斯拉夫语言中是独一无二的。我将在 PHP 错误系统上报告此问题。
-
即使在 5.5.5 版本上,它看起来也像婴儿谈话:
petsto šestdeset ena。您可能必须找到替代库或编写自己的库。 -
@Glavić 你能用 phpinfo() 检查你有哪个国际版本?我无法为我的 5.3.10 提交报告,因为应该只报告 5.4 或 5.5 的错误,所以我会像使用你的系统一样报告。
-
@OmerSabic: intl 版本是 1.1.0,ICU 版本是 51.2