этот код работает для английского, испанского и немецкого порядковых номеров, но с русскими или итальянскими порядковыми номерами он не работает.
'ru-RU'
, 'it-IT'
тоже не работает
Я получаю, например, по-русски два -> два (это кардинальное число), но я хочу порядковый номер, и это будет здесь 2 -> второй.
Я получаю, например, итальянский для 2 -> due (это кардинальное число), но я хочу порядковый номер, и это будет здесь 2 -> secondo.
Обновить:
Я нашел решение с работами на французском, испанском, немецком и некоторых других языках:
Маскиновые порядковые числа: %spellout-ordinal-maskuline
женские порядковые числа: %spellout-ordinal-feminine
русская и итальянская версии не работает, и я уже пробовал с -maskuline / -feminine
$ru_ordinal = new NumberFormatter('ru', NumberFormatter::SPELLOUT); $ru_ordinal->setTextAttribute(NumberFormatter::DEFAULT_RULESET, "%spellout-ordinal");
NumberFormatter использует форматирование ICU.
Как вы можете проверить здесь: http://saxonica.com/html/documentation/extensibility/config-extend/localizing/ICU-numbering-dates/ICU-numbering.html
… Русский (ru) имеет следующее форматирование:
… и итальянский (это) :
Вот почему вы не сможете установить порядковый формат для (ru) и следующего кода:
$nFormat = new NumberFormatter('it', NumberFormatter::SPELLOUT); $nFormat->setTextAttribute(NumberFormatter::DEFAULT_RULESET, "%spellout-ordinal-feminine"); var_dump($nFormat->format(42));
Будет печать:
string 'quarantaduesima' (length=17)
Как и вы (возможно).
РЕДАКТИРОВАТЬ:
Информация об использовании форматирования со ссылками на ICU: http://php.net/manual/en/numberformatter.create.php
Протестировано с PHP 5.4.x и версией ICU => 51.2; Версия данных ICU => 51.2. Вы можете использовать команду оболочки:
$ php -i | grep ICU
Чтобы проверить, какая у вас версия ОИТ.
Для последней версии ICU вам необходимо установить / обновить пакет php-intl: http://php.net/manual/en/intl.installation.php
EDIT 2:
Я создал расширение для NumberFormatter (до сих пор с польский ординалы). Не стесняйтесь предоставлять другие языки: https://github.com/arius86/number-formatter
Просто рекомендация, я не уверен, что это работает или у вас есть услуги Apache, открытые в этот момент, когда я нахожусь в колледже, но вы пытались поставить ru-RU для России. В PHP я лично ставил свои языковые коды как «en-GB»,
Вот список, который я нашел в Интернете с некоторыми, чтобы помочь вам.