Ответ на мой вопрос об использовании NumberFormatter с PHP на русские порядковые номера у меня был ответ, если бы ICU не поддерживал орфографические числа.
Но я нашел на тестере числового формата из Веб-сайт Unicode.jsp, что их много выражений для орфографических порядковых чисел.
Вместо того, чтобы добавлять пол, мы должны добавить пол и (грамматический) падеж, например: spellout-ordinal-masculine-accusative
,
Как и на других языках, они также являются правилом spellout-ordinal-masculine
,
Мой размещенный веб-сайт использует старую версию ICU 4.4.1, поэтому каждый раз я получаю кардинальный результат: «один», но я хочу получить «первый».
Я попробовал это на 3v4l.org и в Output для 7.1@2015-11 я получил правильные результаты.
Мы уже создали аддон для русских и польских порядковых чисел для NumberFormatter @Github, но я хочу знать, почему с PHP 7.1 он показывает правильное значение.
результаты с 3v4l.org
результат для spellout-порядковый-мужской
результат для spellout-порядковый-мужской-винительный
код
$formatter = new NumberFormatter('ru', NumberFormatter::SPELLOUT);
$formatter->setTextAttribute(NumberFormatter::DEFAULT_RULESET, "%spellout-ordinal-masculine");
echo $formatter->format(1);
РЕДАКТИРОВАТЬ: я пробовал много чисел, и 21000-е является последним, который прописан.
Задача ещё не решена.
Других решений пока нет …