Пишем по-русски правильно, даже в скриптах!
Меня лично редкая вещь в Рунете раздражает в той же степени, как сообщения вроде "Сейчас в системе 21 пользователей" или "У Вас 3 заказов". Причина распространённости такого корявого несоблюдения падежей очевидна - на большинстве ресурсов стоят "импортные" движки, а переделать их, пусть не для правильного построения русских фраз, так хотя бы для печати вида
Your visits: {VISITS}вместо
You have {VISITS} visit(s)(пример взят из первого попавшегося шаблона) всем лень или некогда.
Поскольку я предпочитаю скрипты "самописные", я традиционно включаю в них такую вот незамысловатую функцию для решения проблемы:
function get_word_form ($n,$word,$o1,$o2,$o5) { //Получить нормальное окончание для слова $word и числа объектов $n. //Параметры: //$o1 - окончание для числа *1, //$o2 - окончание для *2-*4, //$o5 - окончание для чисел *5-*9,*0,*11-*19 if ($n%100>10 and $n%100<20 or $n%10==0 or $n%10>4) $word.=$o5; else if ($n%10>1 and $n%10<5) $word.=$o2; else $word.=$o1; return $word; }
Примеры вызова метода с печатью результатов:
echo $n.' '.get_word_form ($n,'минут','у','ы',''); echo $kol.' '.get_word_form ($kol,'вопрос','','а','ов'); echo $count.' '.get_word_form($count,'визит','','а','ов'); echo $groups.' '.get_word_form ($groups,'групп','а','ы',''); echo $users.' '.get_word_form ($users,'пользовател','ь','я','ей'); echo $news.' '.get_word_form ($news,'стат','ья','ьи','ей');
То есть, после числа объектов и постоянной части слова, третьим, четвёртым и пятым параметрами передаются окончания слова для вариантов написания "один объект", "два объекта", "пять объектов". Исключения для количеств объектов от
*11 до *19 (двадцать один стул, но одиннадцать стульев) учитываются.
Можете попробовать сами, задавая разные значения $n
, $kol
и т.д.
05.02.2011, 17:17 [9529 просмотров]