Падежи с числами без gettext
Материал из Wiki - thelogin.ru
function rusprintf($numeric, $one, $two, $many) { $numeric = abs($numeric); $a = $numeric % 10; $b = $numeric % 100; if ($a == 1 && $b != 11) return $one; else if ($a >= 2 && $a <= 4 && ($b < 10 || $b > 20)) return $two; return $many; } for ($i = 1; $i < 150; $i++) echo $i . ' ' . rusprintf($i, 'сайт', 'сайта', 'сайтов') . "\n";
function rusprintf($params) { extract($params); // $numeric, $one, $two, $many $numeric = abs($numeric); $a = $numeric % 10; $b = $numeric % 100; if ($a == 1 && $b != 11) return $one; else if ($a >= 2 && $a <= 4 && ($b < 10 || $b > 20)) return $two; return $many; } $smarty->register_function("rusprintf", "rusprintf");
Этим тэгом {rusprintf numeric=$tag.used one='отмечена' two='отмечены' many='отмечены'} {$tag.used} {rusprintf numeric=$tag.used one='запись' two='записи' many='записей'}