NumberFormatter:: SPELLOUT spellout-порядковый номер на русском и итальянском языках
этот код работает для английских, испанских и немецких номеров боеприпасов, но с русскими или итальянскими номерами боеприпасов он не работает.
'ru-RU'
,'it-IT'
не работает
я получаю, например, на русском языке для 2 - > два (это кардинальное число) , но я хочу порядковый номер, и это будет здесь 2 -> второй.
я получаю, например, на итальянском языке для 2 - > из-за (это кардинальное число), но я хочу порядковый номер, и это будет здесь 2 - > Секондо.
обновление:
я нашел решение с работами на французском, испанском, немецком и некоторых других языках:
maskuline порядковые номера: %spellout-ordinal-maskuline
женский порядковые номера: %spellout-ordinal-feminine
русская и итальянская версия не работает, и я уже пробовал с-maskuline / - feminine
$ru_ordinal = new NumberFormatter('ru', NumberFormatter::SPELLOUT);
$ru_ordinal->setTextAttribute(NumberFormatter::DEFAULT_RULESET, "%spellout-ordinal");
2 ответов
NumberFormatter использует форматирование ICU.
как вы можете проверить здесь: http://saxonica.com/html/documentation/extensibility/config-extend/localizing/ICU-numbering-dates/ICU-numbering.html
... русский (ru) имеет следующее форматирование:
- spellout-кардинал-женский (scf)
- spellout-кардинал-мужской (scm)
- spellout-cardinal-neuter (scne)
- spellout-нумерация (sn)
- spellout-нумерация-год (sny)
... и итальянский (IT):
- spellout-кардинал-женский (scf)
- spellout-кардинал-мужской (scm)
- spellout-нумерация (sn)
- spellout-нумерация-год (sny)
- spellout-порядковый номер-женский (sof)
- spellout-порядковый номер-мужской (сом)
вот почему вы не сможете установить порядковый формат (ру) и следующий код:
$nFormat = new NumberFormatter('it', NumberFormatter::SPELLOUT);
$nFormat->setTextAttribute(NumberFormatter::DEFAULT_RULESET, "%spellout-ordinal-feminine");
var_dump($nFormat->format(42));
выведет:
string 'quarantaduesima' (length=17)
как вы (возможно) хотите.
EDIT:
информация об используемом форматировании со ссылками на ICU:http://php.net/manual/en/numberformatter.create.php
протестировано с PHP 5.4.X и версия ICU => 51.2; версия данных ICU => 51.2. Вы можете использовать команду shell:
$ php -i | grep ICU
чтобы проверить, какая версия ICU у вас есть.
для последней версии ICU вы должны propably установить / обновить 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"
вот список, который я нашел в интернете с некоторыми, чтобы помочь вам.