БлогNot. Пишем по-русски правильно, даже в скриптах!

Пишем по-русски правильно, даже в скриптах!

Меня лично редкая вещь в Рунете раздражает в той же степени, как сообщения вроде "Сейчас в системе 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 [9478 просмотров]


теги: язык php рунет

К этой статье пока нет комментариев, Ваш будет первым