Blog. Just Blog

Сейчас на сайте 2 гостей и 3 новостей

Версия для печати Добавить в Избранное Отправить на E-Mail | Категория: Web-мастеру и не только | Автор: ManHunter
Смешно звучит, правда? А ведь такие уродливые сочетания встречаются на очень многих сайтах. И если в английском языке достаточно написать что-то типа day(s), byte(s) и это будет смотреться вполне нормально, то в русском языке в конструкциях "число + слово" обязательно придется учитывать склонения. Безумные извраты типа "гостя(ей)" и "новость(ей)" я даже не рассматриваю, за такое надо лишать доступа к компьютеру навсегда.

Чтобы писать по-русски на своих сайтах я использую такую универсальную функцию:
  1. function num2word($num,$words) {
  2.   $num=$num%100;
  3.   if ($num>19) { $num=$num%10; }
  4.   switch ($num) {
  5.     case 1:  { return($words[0]); }
  6.     case 2:
  7.     case 3:
  8.     case 4:  { return($words[1]); }
  9.     default: { return($words[2]); }
  10.   }
  11. }
Параметры вызова: $num - число, $words - массив склонений нужного слова. Как формируется массив вы можете посмотреть на примерах.
  1. // Гостей
  2. $num1=2;
  3. $words1=Array("гость""гостя""гостей");
  4.  
  5. // Новостей 
  6. $num2=3;
  7. $words2=Array("новость""новости""новостей");
  8.  
  9. // Написать по-русски
  10. echo "Сейчас на сайте ";
  11. echo $num1." ".num2word($num1,$words1); // сколько гостей
  12. echo " и ";
  13. echo $num2." ".num2word($num2,$words2); // сколько новостей
Результат работы скрипта:

Сейчас на сайте 2 гостя и 3 новости

Чтобы было уд