【问题标题】:NumberFormatter with singular / plural wordNumberFormatter 带单数/复数词
【发布时间】:2018-10-15 22:27:15
【问题描述】:

是否可以使用 PHP NumberFormatter 类根据使用 setPattern 方法的数字值以单数或复数形式显示单词?

这个方法使用的是ICU DecimalFormat库,但是我不熟悉。

当值大于 1 时,我想在 page 单词上使用复数:

$sizeFormatter = new NumberFormatter('fr_FR', NumberFormatter::DECIMAL);
$sizeFormatter->setPattern('#0.# page(s)');

【问题讨论】:

    标签: php number-formatting icu


    【解决方案1】:

    DecinalFormat 的模式支持通过数字符号选择子模式。 所以你可以使用像$number > 1 ? $number : -$number 这样的小技巧来设置单数/复数单词。输出数将为正数。

    $sizeFormatter = new NumberFormatter('fr_FR', NumberFormatter::DECIMAL);
    $sizeFormatter->setPattern('0 pages; 0 page');
    
    $number = 3;
    echo $sizeFormatter->format($number > 1  ? $number : -$number);
    

    【讨论】:

    • 没有破解就不可能吗?我不想改变原来的值。
    • С NumberFormatter::DECIMAL,可能不是。您可以通过MessageFormatter 类来完成。 PHP manual, Example with plural using
    • @Seb33300 没有改变原始值。它只是添加条件> 1。你能提供你想要的细节吗?
    猜你喜欢
    • 1970-01-01
    • 2013-10-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-04
    • 2016-07-25
    • 1970-01-01
    相关资源
    最近更新 更多