此代码适用于英语,西班牙语和德语的ordninal号码,但俄语或意大利语版本号不起作用。
'ru-RU'
,'it-IT'
也无效
我以俄语为例2 - > два(这是基数),但我想要序号,这将是2 - > второй。
我在意大利语中得到2 - >到期(这是基数),但我想要序数,这将是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");
答案 0 :(得分:11)
NumberFormatter正在使用ICU格式。
... 俄语(ru)有以下格式:
... 意大利语(it):
这就是为什么你将无法为(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。 您可以使用shell命令:
$ php -i | grep ICU
检查您的ICU版本。
对于最新的ICU版本,您应该可以安装/更新php-intl包:http://php.net/manual/en/intl.installation.php
编辑2:
我已经为NumberFormatter创建了扩展(到目前为止已经使用了抛光序列)。请随意提供其他语言:https://github.com/arius86/number-formatter
答案 1 :(得分:2)
仅仅是一个推荐标准,我不确定这是否有效或者在我上大学的时候打开了Apache服务,但是你是否试图将ru-RU用于俄罗斯。在PHP中,我个人将我的语言代码作为" en-GB"
以下是我在互联网上找到的一些帮助您的列表。