склонение существительных с цифрами Как создать свой сайт > Вебмастеру > Создание своего сайта > Склонение существительных с числами

Склонение существительных с цифрами

Гораздо безопаснее воровать огромные суммы
с помощью шариковой ручки, чем небольшие
посредством пистолета.
Уоррен Баффет.

    Великий и Могучий настолько велик и могуч, что для руссификации любого забугрового скрипта нужно проштудировать кучу сайтов, чтобы достичь цели и найти нужный кусок кода или плагин в случае с WordPress. Предложенный ниже способ универсален и подойдёт для любого скрипта.

    Речь идёт о склонении существительных и прилагательных в зависимости от числа, с которым они связаны. Например: 1 комментарий, 2 комментария, 5 комментариев и т. д. Как это сделать?

    Если вам лень делать лишние телодвижения, можно просто использовать двоеточие и забыть про склонения с цифрами. Выглядит это так:


Комментарии: 4
или
Комментариев: 12

    Но мы не ищем лёгких путей. Мы ищем правильные пути. Предлагаю вам функцию, которая раз и навсегда решит проблему склонения существительных с цифрами. В двух вариантах: PHP и Javascript-версиях.

PHP

function incline($words,$n){
   if($n%100>4 && $n%100<20){
      return $words[2];
   }
   $a = array(2,0,1,1,1,2);
   return $words[$a[min($n%10,5)]];
}

Javascript

function incline(words,n){
   return words[(n%100>4 && n%100<20)?2:[2,0,1,1,1,2][Math.min(n%10,5)]];
}

    В обоих вариантах функция имеет два параметра:

  • words — массив с 3-мя элементами — вариантами написания слов
  • n — само число

    Чтобы знать, какие именно слова писать в массиве «words», нужно просто просклонять слова, используя правило «1-2-5»:

  • первое слово — словоформа цифры 1 (пример: 1 комментарий)
  • второе слово — словоформа цифры 2 (пример: 2 комментария)
  • третье слово — словоформа цифры 5 (пример: 5 комментариев)

    Итак, примеры.

    Допустим, мы хотим написать предложение «Всего на сайте у нас 123 комментария».

    В PHP мы напишем так:

echo 'Всего на сайте у нас '.$comment_count.' '.incline(array('комментарий','комментария','комментариев'), $comment_count);

    В Javascript — так:

alert('Всего на сайте у нас ' + comment_count + ' ' + incline(['комментарий','комментария','комментариев'], comment_count));

    И, конечно же, в переменных «$comment_count» и «comment_count» хранится число (количество комментариев в данном случае).

    Другие примеры.

    Допустим,

$number = 5;

    Тогда имеем

echo $number.' '.incline(array('яблоко','яблока','яблок'), $number); // 5 яблок
echo $number.' '.incline(array('попугай','попугая','попугаев'), $number); // 5 попугаев
echo $number.' '.incline(array('слон','слона','слонов'), $number); // 5 слонов

    Теперь конкретный пример для WordPress.

  • 1. Добавляем функцию «incline» в файл «functions.php» в вашем шаблоне.
  • 2. В этот же файл «functions.php» добавляем такой код:
    function russian_comments_number(){
       global $post;
       echo $post->comment_count.' '.incline(array('комментарий','комментария','комментариев'), $post->comment_count);
    }
    add_filter('comments_number', 'russian_comments_number');
    

В заключение

    Данной функцией я пользуюсь уже очень давно и она делает сайт намного дружелюбнее. При склонении существительных с цифрами контент делается более читабельным и сайт в целом выглядет «человечнее».

Автор текста: Pepper

 

Комментировать...

 

⇓ 

Поделись ссылкой на Seoded.ru с друзьями, знакомыми и собеседниками в соцсетях и на форумах! А сам сайт добавь в закладки! Так победим.

Поделиться ссылкой на эту страницу в:

Полезные ссылки:

Зарабатываем на свежесозданном сайте Склоняем цифры, пишем тексты, зарабатываем копирайтингом

Ещё материалы по этой теме:

семантическая вёрстка в HTML какой хостинг нужен сайту какой домен подойдёт сайту как вставить код PHP в HTML как сделать favicon.ico
основан в 2008 г. © Все права на материалы сайта Seoded.ru принадлежат Алексею Вострову.
Копирование (полное или частичное) любых материалов сайта возможно только с разрешения автора и при указании ссылки на источник.
Ослушавшихся находит и забирает Бабайка!