что-то типа:
/**
* @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 ставок»?