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 'quaranta­duesima' (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"

http://download1.parallels.com/SiteBuilder/Windows/docs/3.2/en_US/sitebulder-3.2-win-sdk-localization-pack-creation-guide/30801.htm

вот список, который я нашел в интернете с некоторыми, чтобы помочь вам.