Поддержка Проблемы и решения Как сделать правильные окончания для числительных

  • Всем привет, подскажите, как прописать код для числительных, к примеру
    чтобы когда :
    0 — Ставок нет
    1 — одна ставка
    2 — две ставки
    5 — пять ставок
    и т.д?
    спасибо

Просмотр 2 ответов — с 1 по 2 (всего 2)
  • что-то типа:

    /**
    * @param $number int число чего-либо
    * @param $titles array варинаты написания для количества 1, 2 и 5
    * @return string
    */
    function human_plural_form($number, $titles=array('ставка','ставки','ставок')){
    $cases = array (2, 0, 1, 1, 1, 2);
    return $number." ".$titles[ ($number%100>4 && $number%100<20)? 2: $cases[min($number%10, 5)] ];
    }

    http://habrahabr.ru/post/105428/

    А чем обычные функции перевода не подходят? Как я понимаю, как раз подойдет _n(). Просто при создании .po файла указываем русский язык и следующую формулу построения окончаний и у нас будет три формы окончаний (а в английском мы две как обычно указываем в самой функции):

    nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);

    http://docs.translatehouse.org/projects/localization-guide/en/latest/l10n/pluralforms.html?id=l10n/pluralforms

    Единственное что останется, просто написать иф и елсе для случая, если у нас ноль или что-то больше нуля.

    Добавлено.
    Насколько я понял тут речь не про падежные окончания у одного слова, а про запись числительного с помощью слов? Например, «1 ставка» или «106 ставок»?

Просмотр 2 ответов — с 1 по 2 (всего 2)
  • Тема «Как сделать правильные окончания для числительных» закрыта для новых ответов.