gpt4 book ai didi

php - NumberFormatter::SPELLOUT 俄语和意大利语拼写顺序

转载 作者:可可西里 更新时间:2023-10-31 23:09:17 24 4
gpt4 key购买 nike

此代码适用于英语、西类牙语和德语序数,但不适用于俄语或意大利语序数。

'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");

最佳答案

NumberFormatter 使用 ICU 格式。

您可以在此处查看:http://saxonica.com/html/documentation/extensibility/config-extend/localizing/ICU-numbering-dates/ICU-numbering.html

... 俄语 (ru) 具有以下可用格式:

  • spellout-cardinal-feminine (scf)
  • 拼写-基数-阳性 (scm)
  • 拼写基数中性(场景)
  • 拼写编号 (sn)
  • spellout-numbering-year (sny)

...和意大利语 (it):

  • 拼写-基数-女性 (scf)
  • 拼写-基数-阳性 (scm)
  • 拼写编号 (sn)
  • spellout-numbering-year (sny)
  • spellout-ordinal-feminine (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。您可以使用 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

关于php - NumberFormatter::SPELLOUT 俄语和意大利语拼写顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24282324/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com