суббота, 19 декабря 2009 г.

Товар, товара, товаров

Не смущает надпись
Товаров в каталоге: 2.
?

Если смущает, то напишем простой хелпер, который будет выводить русские существительные в согласии с числительными, к которым они относятся.
В каталоге 2 товара.

lib/helper/DeclensionHelper.php
<?php

/*
  В зависимости от $c возвращает: 
  $str1 - 1 "товар"
  $str2 - 2 "товара"
  $str5 - 5 "товаров"
  
  example: declension($count,"год","года","лет");
*/
function declension($c, $str1, $str2, $str5) 
{
    $c = abs($c) % 100;
    if ( $c > 10 && $c < 20 ) return $str5;
    $c %= 10;
    if ( $c > 1 && $c < 5 ) return $str2;
    if ( $c == 1 ) return $str1;
    return $str5;
}  
Как использовать (в шаблоне):
<?php use_helper('Declension') ?>

...

В каталоге $count <?php declension($count,'товар','товара','товаров') ?>.

P.S. Я знаю, что родной симфониевский i18n поддерживает эту фичу. Но надо сильно постараться, чтобы ее использовать (включить i18n, сделать языковой файл, прописать там хитрющее условие).

Комментариев нет:

Отправить комментарий