Nucleus CMS plugin: правильная форма множественного числа слова «комментарий»

Русский язык отличается бОльшим разнообразием грамматических форм, чем английский. Из-за этого предлагаемая Nucleus модель использования слова «комментарий» — единственное \ множественное число — плохо подходит для русскоязычных сайтов. Выход — хак, но хаки лично я не люблю, потому что о них нужно все время помнить. Поэтому для себя я написал маленький плагичик, который выбирант правильную грамматическую форму в зависимости от количества комментариев.

Плагин создает TemplateCommentVar <%WordCommentsRU%>, которая выдает слово "комментарий" в правильной грамматической форме с учетом их (комментариев) количества для текущей записи.

<?php
  class NP_WordCommentsRU extends NucleusPlugin
  {
     function getName()
     {
       return 'WordCommentsRU';
     }

     function getAuthor()
     {
       return 'maxirmx';
     }

     function getURL()
     {
       return 'http://www.samsonov.net/item/67';
     }

     function getVersion() 
     {     
       return '0.1';   
     } 

     function getDescription() 
     {     
       return 'This plugin provides correct Russian grammar form for COMMENT_ONE/COMMENTS_MANY word';
     }

     function doTemplateCommentsVar(&$item, &$comment) 
     {
       $query = 'SELECT count(*) FROM '.sql_tablе('comment').' WHERE '.'citem='.$item->itemid;
       $numComments = mysql_result(sql_query($query), 0);    
       $numComments = $numComments % 100;

       if ($numComments > 10 and $numComments < 20) $numKey = 5;
       else $numKey = $numComments % 10;

       if ($numKey == 1) echo 'комментарий';
       else
       {
         if ($numKey == 0 or $numKey > 4) еcho 'комментариев';
         else echo 'комментария';
       }
     }

     function supportsFeature ($what)  
     {     
       switch ($what)
       {
         case 'SqlTablePrefix': return 1;  
         default: return 0;
       }
     }
  }
?>

Оставьте комментарий