10

このコードは、英語、スペイン語、ドイツ語の序数では機能しますが、ロシア語またはイタリア語の序数では機能しません。

'ru-RU''it-IT'また動作しません

たとえば、ロシア語で 2 -> два (これは基数です) を取得しますが、序数が必要で、これは 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");  
4

2 に答える 2

11

NumberFormatter は ICU フォーマットを使用しています。

ここで確認できるように: http://saxonica.com/html/documentation/extensibility/config-extend/localizing/ICU-numbering-dates/ICU-numbering.html

...ロシア語 (ru)には、次のフォーマットが使用可能です。

  • スペルアウト-カーディナル-フェミニン (scf)
  • スペルアウト基数-男性 (scm)
  • スペルアウト枢機卿中性 (scne)
  • スペルアウト番号 (sn)
  • スペルアウト番号付け年 (sny)

... とイタリア語 (それ) :

  • スペルアウト-カーディナル-フェミニン (scf)
  • スペルアウト基数-男性 (scm)
  • スペルアウト番号 (sn)
  • スペルアウト番号付け年 (sny)
  • スペルアウト序数女性 (sof)
  • 綴り-序数-男性 (som)

そのため、(ru)および次のコードに序数形式を設定することはできません。

$nFormat = new NumberFormatter('it', NumberFormatter::SPELLOUT);
$nFormat->setTextAttribute(NumberFormatter::DEFAULT_RULESET, "%spellout-ordinal-feminine");

var_dump($nFormat->format(42));

印刷します:

string 'quaranta­duesima' (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 のバージョンを確認するには。

最新の ICU バージョンでは、適切に php-intl パッケージをインストール/更新する必要があります: http://php.net/manual/en/intl.installation.php

編集2:

NumberFormatter の拡張機能を作成しました (これまでのところ、ポーランド語の序数を使用)。別の言語に貢献してください: https://github.com/arius86/number-formatter

于 2015-01-10T22:40:18.277 に答える
2

単なる推奨事項です。私は大学にいるので、この時点でこれが機能するか、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

これは私がインターネットで見つけたリストです。

于 2014-06-18T09:58:02.217 に答える