关于将 NumberFormatter 和 PHP用于俄语序数的问题的答案是,ICU 不支持序数的拼写。
但我在Unicode.jsp 网站的数字格式测试器上发现,它们有许多用于序数拼写的表达式。
我们必须添加一个性别和一个(语法)案例,而不是添加一个性别,例如:spellout-ordinal-masculine-accusative
.
就像在其他语言中一样,它们也是规则spellout-ordinal-masculine
。
我的托管网站使用旧的 ICU 版本 4.4.1,所以我每次都会得到基本结果:'один',但我想得到'первый'。
我在 3v4l.org 和 Output for 7.1@2015-11 上进行了尝试,得到了正确的结果。
我们已经为 NumberFormatter @Github创建了俄语和波兰语序数的插件,但我想知道,为什么 PHP 7.1 会显示正确的值。
来自 3v4l.org 的结果
拼写序数阳性结果
代码
$formatter = new NumberFormatter('ru', NumberFormatter::SPELLOUT);
$formatter->setTextAttribute(NumberFormatter::DEFAULT_RULESET, "%spellout-ordinal-masculine");
echo $formatter->format(1);
编辑:我尝试了很多数字,第 21000 个是最后一个,它被拼写出来。