EN | CS | Přihlásit | Registrovat

Helper timeAgoInWords

Převede čas na slovní vyjádření v češtině.

Verze 1
Autor David Grudl
Licence New BSD License

Instalace

Následující třídu si zkopírujte do své aplikace:

class Helpers
{

public static function timeAgoInWords($time)
{
if (!$time) {
return FALSE;
} elseif (is_numeric($time)) {
$time = (int) $time;
} elseif ($time instanceof DateTime) {
$time = $time->format('U');
} else {
$time = strtotime($time);
}

$delta = time() - $time;

if ($delta < 0) {
$delta = round(abs($delta) / 60);
if ($delta == 0) return 'za okamžik';
if ($delta == 1) return 'za minutu';
if ($delta < 45) return 'za ' . $delta . ' ' . self::plural($delta, 'minuta', 'minuty', 'minut');
if ($delta < 90) return 'za hodinu';
if ($delta < 1440) return 'za ' . round($delta / 60) . ' ' . self::plural(round($delta / 60), 'hodina', 'hodiny', 'hodin');
if ($delta < 2880) return 'zítra';
if ($delta < 43200) return 'za ' . round($delta / 1440) . ' ' . self::plural(round($delta / 1440), 'den', 'dny', 'dní');
if ($delta < 86400) return 'za měsíc';
if ($delta < 525960) return 'za ' . round($delta / 43200) . ' ' . self::plural(round($delta / 43200), 'měsíc', 'měsíce', 'měsíců');
if ($delta < 1051920) return 'za rok';
return 'za ' . round($delta / 525960) . ' ' . self::plural(round($delta / 525960), 'rok', 'roky', 'let');
}

$delta = round($delta / 60);
if ($delta == 0) return 'před okamžikem';
if ($delta == 1) return 'před minutou';
if ($delta < 45) return "před $delta minutami";
if ($delta < 90) return 'před hodinou';
if ($delta < 1440) return 'před ' . round($delta / 60) . ' hodinami';
if ($delta < 2880) return 'včera';
if ($delta < 43200) return 'před ' . round($delta / 1440) . ' dny';
if ($delta < 86400) return 'před měsícem';
if ($delta < 525960) return 'před ' . round($delta / 43200) . ' měsíci';
if ($delta < 1051920) return 'před rokem';
return 'před ' . round($delta / 525960) . ' lety';
}



/**
* Plural: three forms, special cases for 1 and 2, 3, 4.
* (Slavic family: Slovak, Czech)
* @param int
* @return mixed
*/

private static function plural($n)
{
$args = func_get_args();
return $args[($n == 1) ? 1 : (($n >= 2 && $n <= 4) ? 2 : 3)];
}

}

Příklad použití

Funkci zaregistrujete do šablony příkazem:

$template->registerHelper('timeAgoInWords', 'Helpers::timeAgoInWords');

Poté stačí v šabloně použít:

Odesláno {$time|timeAgoInWords}

Připojené soubory


Login to submit a comment