![]() |
Здравствуйте, Гость ( Вход | Регистрация )
![]() ![]() |
![]() |
![]()
Сообщение
#1
|
|
Advanced Member ![]() ![]() ![]() Группа: User Сообщений: 38 Регистрация: 26-September 06 Пользователь №: 954 ![]() |
Хак, для комментариев.
Т.к. в русском языке числительные делятся условно не на две, как в английском, категории (один или много), а на три (один, от 2 до 4, и 5 и более). Я решил модифицировать Нуклеус этим хаком в области комменатриев, чтобы писалось по-русски: 1 комментарий 2, 3, 4 комментария 5 и более комментариев Вот собственно хак: Открываем /nucleus/libs/ADMIN.PHP (строка ~ 3550): Код $this->_templateEditRow($template, _TEMPLATE_CMANY, 'COMMENTS_MANY', 'commentwords', 80); После нее добавляем: Код //russian comments' start $this->_templateEditRow($template, _TEMPLATE_CMANYMORE, 'COMMENTS_MANYMORE', 'commentwords', 300); //russian comments' end (строка ~ 3667): Код $this->addToTemplate($templateid, 'COMMENTS_MANY', postVar('COMMENTS_MANY')); После нее добавляем: Код //russian comments' start $this->addToTemplate($templateid, 'COMMENTS_MANYMORE', postVar('COMMENTS_MANYMORE')); //russian comments' end Открываем /nucleus/libs/COMMENTS.PHP (строка ~ 361): Код function parse_commentword() { if ($this->commentsObj->commentcount == 1) echo $this->template['COMMENTS_ONE']; else echo $this->template['COMMENTS_MANY']; } Заменяем на: Код //russian comments' start function parse_commentword() { if(strlen($this->commentsObj->commentcount)==1){ if ($this->commentsObj->commentcount == 1) echo $this->template['COMMENTS_ONE'];//1 комментарий if ($this->commentsObj->commentcount == 2 OR $this->commentsObj->commentcount == 3 OR $this->commentsObj->commentcount == 4) echo $this->template['COMMENTS_MANY'];//2,3,4 комметария if ($this->commentsObj->commentcount >= 5 AND $this->commentsObj->commentcount <= 20) echo $this->template['COMMENTS_MANYMORE'];// 5 - 9 комментариев }//end if 1 digit if(strlen($this->commentsObj->commentcount)==2 AND $this->commentsObj->commentcount <= 20){ echo $this->template['COMMENTS_MANYMORE'];// 10 - 20 комментариев } if(strlen($this->commentsObj->commentcount)>=2 AND $this->commentsObj->commentcount >= 21){ if (substr($this->commentsObj->commentcount,-1,1) == 1) echo $this->template['COMMENTS_ONE'];//1 комментарий if (substr($this->commentsObj->commentcount,-1,1) == 2 OR substr($this->commentsObj->commentcount,-1,1) == 3 OR substr($this->commentsObj->commentcount,-1,1) == 4) echo $this->template['COMMENTS_MANY'];//2,3,4 комметария if (substr($this->commentsObj->commentcount,-1,1) >= 5 OR substr($this->commentsObj->commentcount,-1,1) == 0) echo $this->template['COMMENTS_MANYMORE'];// 5 - 20 комментариев }//end if 2 or more digits } //russian comments' end Открываем /nucleus/language/russian.php (строка ~697): Код define('_TEMPLATE_CMANY', '2 или более комментариев') Заменяем на: Код //russian comments' start define('_TEMPLATE_CMANY', '2, 3 или 4 комментария'); define('_TEMPLATE_CMANYMORE', '5 или больше комментариев'); //russian comments' end Наслаждаемся русским языком ![]() |
|
|
![]()
Сообщение
#2
|
|
Advanced Member ![]() ![]() ![]() Группа: User Сообщений: 126 Регистрация: 20-December 05 Пользователь №: 38 ![]() |
Классно. Но
Цитата 1 комментарий2, 3, 4 комментария5 и более комментариев И так до 20, а потом 21 комментарИЙ, 22 комментарИЯ и т.д. О грейтовый, труфульный, пауэрфульный, фревый рашенский ленгвич! -------------------- |
|
|
![]()
Сообщение
#3
|
|
Advanced Member ![]() ![]() ![]() Группа: User Сообщений: 38 Регистрация: 26-September 06 Пользователь №: 954 ![]() |
Цитата(saj @ Dec 13 2006, 03:26 PM) [snapback]1846[/snapback] Классно. Но И так до 20, а потом 21 комментарИЙ, 22 комментарИЯ и т.д. О грейтовый, труфульный, пауэрфульный, фревый рашенский ленгвич! Точно, это как раз у меня из головы вылетело...Но это не проблема...нужно просто будет добавить проверку на последнюю цифру в числе... |
|
|
![]()
Сообщение
#4
|
|
Advanced Member ![]() ![]() ![]() Группа: User Сообщений: 38 Регистрация: 26-September 06 Пользователь №: 954 ![]() |
В первом посту внес изменения. Теперь все работает правильно!
|
|
|
![]()
Сообщение
#5
|
|
Newbie ![]() Группа: User Сообщений: 3 Регистрация: 29-July 07 Из: StPe Пользователь №: 1,547 ![]() |
А почему не так ?
[codebox]<?php class NP_WordCommentsRU extends NucleusPlugin { // name of plugin function getName() { return 'WordCommentsRU'; } // author of plugin function getAuthor() { return 'maxirmx'; } // an URL to the plugin website // can also be of the form mailto:[email protected] function getURL() { return '[email protected]'; } // version of the plugin function getVersion() { return '0.1'; } // a description to be shown on the installed plugins listing 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_table('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) echo 'комментариев'; else echo 'комментария'; } } function supportsFeature ($what) { switch ($what) { case 'SqlTablePrefix': return 1; default: return 0; } } } ?> [/codebox] Свинство, конечно, что к COMMENTS доступа нет ... |
|
|
![]() ![]() |
Текстовая версия | Сейчас: 17th January 2021 - 08:25 AM |