如何编辑此HumanTiming函数以显示正确的复数形式和非复数形式?

时间:2014-09-22 16:44:47

标签: php

我需要在我的网站中实现这个功能,但是我的语言需要更多的修改,因为它不是英语,只为复数添加/ s。所以,这是:

    Plural form:

    години
    месеци
    седмици
    дни
    часа
    минути
    секунди

Non plural form:

година
месец
седмица
ден
час
минута
секунда

那么,我如何在下面的humanTiming函数中进行更改?

$time = strtotime('2014-09-22 00:00:00');

echo 'Сървъра стартира преди '.humanTiming($time).'';

function humanTiming ($time)
{

    $time = time() - $time; // to get the time since that moment

// Non plural forms
    $tokens = array (
        31536000 => 'година',
        2592000 => 'месец',
        604800 => 'седмица',
        86400 => 'ден',
        3600 => 'час',
        60 => 'минута',
        1 => 'секунда'
    );

    foreach ($tokens as $unit => $text) {
        if ($time < $unit) continue;
        $numberOfUnits = floor($time / $unit);
        return $numberOfUnits.' '.$text.(($numberOfUnits>1)?'s':'');
    }

}

1 个答案:

答案 0 :(得分:0)

输入令牌变量值的数组,如下所示:

...
31536000 => array('година', 'години'),   // singular, plural1, plural2?...
...

在for循环中,根据您的数字选择适当的值:

$text = $numberOfUnits > 1 ? $text[1] : $text[0];
return $numberOfUnits . ' ' . $text;

如果你正在使用某种gettext实现,它很可能带有一个处理这类事情的函数。例如,gettext PHP扩展具有ngettext()