Gri*_*cha 9 php icu numberformatter intl
此代码适用于英语,西班牙语和德语的ordninal数字,但俄语或意大利语版本号码不起作用.
'ru-RU','it-IT'也不行
我在俄语中得到2 - >два(这是基数),但我想要序数,这将是2 - >второй.
我在意大利语中得到2 - > due(这是基数),但我想要序数,这将是2 - > secondo.
更新:
我找到了一个法语,西班牙语,德语和其他语言的解决方案:
Maskuline序数: %spellout-ordinal-maskuline
女性序数: %spellout-ordinal-feminine
俄语和意大利语版本不起作用,我已经尝试使用-maskuline/-feminine
$ru_ordinal = new NumberFormatter('ru', NumberFormatter::SPELLOUT);
$ru_ordinal->setTextAttribute(NumberFormatter::DEFAULT_RULESET, "%spellout-ordinal");
Run Code Online (Sandbox Code Playgroud)
Ari*_*ius 11
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));
Run Code Online (Sandbox Code Playgroud)
将打印:
string 'quarantaduesima' (length=17)
Run Code Online (Sandbox Code Playgroud)
像你(可能)想要的.
编辑:
有关二手格式的信息,参考ICU:http://php.net/manual/en/numberformatter.create.php
测试PHP 5.4.x和ICU版本=> 51.2; ICU数据版本=> 51.2.您可以使用shell命令:
$ php -i | grep ICU
Run Code Online (Sandbox Code Playgroud)
检查您的ICU版本.
对于最新的ICU版本,您应该可以安装/更新php-intl包:http://php.net/manual/en/intl.installation.php
编辑2:
我已经为NumberFormatter创建了扩展(到目前为止还有抛光序列).随意提供其他语言:https://github.com/arius86/number-formatter