![]() |
Показаны 15 сообщений на этой странице |
Форум сетевых администраторов (http://netadmin.ws/forum/index.php)
- Хаки от Netadmin или "Сделай сам" (http://netadmin.ws/forum/forumdisplay.php?forumid=65)
-- Учим VBulletin правильно говорить по русски! (http://netadmin.ws/forum/showthread.php?threadid=1067)
Учим VBulletin правильно говорить по русски!
Наверное многие из вас заметили неправильное отображение оканчания слова пользователь/гость при отображение их колличества на форумах переведенных на русский язык. Ð_то касаеться в частности следующих отрывкаов:
На данный момент на форуме прсудствуют 3 пользователей.
или
На форуме присудствуют 4 пользователей и 2 гостей
Я при переводе форума часто задумывался над этой проблемой, но всегда решал оставить все как есть и не забивать себе голову пустяками и везде где это возможно старался предварять количество двоиточием (Пользователей: 2).
На днях Total спросил у меня решения этой проблемы. Вот какое решения я предлагаю:
В файле admin/functions.php в самом конце перед ?> нужно добавить функцию:
function termination ($number){
$s=$number;
if (strlen($number)>1){ $s=substr($number, strlen($number)-2); }
if ($s < 11 and $s > 14) { $s=substr($number, strlen($number)-1); }
if($s=="1"){ $term = "ь";}
elseif($s>"1" and $s < 5) { $term = "я"; }
else { $term = "ей"; }
return $term;
}
eval("\$loggedinusers = \"".gettemplate('forumhome_loggedinusers')."\";");
$userterm = termination($numberregistered);
$guestterm = termination($numberguest);
__________________
Всегда есть решение.
Было бы не плохо, если бы ты написал то же самое про приватные сообщения
__________________
Интернет форум для всех Ты тут еще не был? ...
рейтинг форумов Админы форумов - сюда!!!
Для приватных сообщений все аналогично только нужно оканчания поменять.
__________________
Всегда есть решение.
Оптимизация вроде
Предлагаю следующую модификацию функции:
// -------------------------------------------------------------------------------------------------------------------
// First version of termination function by Polo
// Modification & Comments by Vanish
// Now it's work with the numbers more then 100
// Was added different terms for different cases.
// -------------------------------------------------------------------------------------------------------------------
// You may contact with me by email: vanish@novgorod.net
// -------------------------------------------------------------------------------------------------------------------
// Первая версия функции разработанна Polo
// Модифицированна Vanish'ем. Комментарии тоже мои.
// Добавлено: возможность работы с числами за 100;
// различные варианты окончаний для разных случаев
// таких как "Ð_екорд посещаемости"; "Новые ПМ сообщения"; "Непрочитанные ПМ сообщения"; "Всего ПМ сообщений"
// -------------------------------------------------------------------------------------------------------------------
// Вы можете связаться со мной по email: vanish@novgorod.net
// -------------------------------------------------------------------------------------------------------------------
/* Выбор маски - $mask
$mask == 1 отвечает за склонение слова "пользователь или гость"
$mask == 2 ---||--- за склонение слова "человек"
$mask == 3 ---||--- за склонение слова "новое"
$mask == 4 ---||--- за склонение слова "сообщение"
*/
function termination ($number, $mask=1){
$s=$number;
### Посмотрим а не многозначно ли число? ###
if (strlen($number)>1) {
### Если два последние цифры попали в интервал [10,20), оставляем от числа эти 2-е последние цифиры ###
if (substr($number, strlen($number)-2, 1) == 1) { $s=substr($number, strlen($number)-2);}
### Иначе нам от числа больше последней цифры и ненадо ###
else {$s=substr($number, strlen($number)-1);}
}
### Выбираем окончания ###
switch($mask) {
case 1: ### Для активных пользователей - слово "пользователь/гость" ###
if($s=="1") { $term = "ь";}
elseif ($s>"1" and $s < 5) { $term = "я"; }
### А здесь корректно будут обработаны, помимо обыкновенных чисел, и 11,12,13,14 ###
else { $term = "ей"; }
break;
case 2: ### Для рекорда посещаемости - слово "человек" ###
if ($s>"1" and $s < 5) { $term = "ка"; }
else { $term = "к"; }
break;
case 3: ### Для ПМ сообщений - слово "новое" ###
if($s=="1") { $term = "ое";}
else { $term = "ых";}
break;
case 4: ### Для ПМ сообщений - слово "сообщение" ###
if($s=="1") { $term = "ие";}
elseif ($s>"1" and $s < 5) { $term = "ия"; }
else { $term = "ий"; }
break;
default: ### Если ничего не вышло ###
echo "<b>Ошибка:</b> неправильно задан параметр <i>mask</i> функции <i>termination</i>.";
exit;
}
return $term;
}
))
### Тестирование функции ###
for ($something=100; $something<=130; $something++) {
$tmp1=termination($something, 3);
$tmp2=termination($something, 4);
echo "$something нов<i>$tmp1</i> сообщен<i>$tmp2</i> <br>";
}
класс!
__________________
С уважением, Денис
-----------------------
Ð_ХЛ - модификация для ЕА НХЛ 2004.
http://www.rhl-mod.ru
Vanish
Astalavista baby!
__________________
Международное брачное агенство в Сибири.
дык, финал релиз давайте! 
__________________
yMC.ru - хомяк музыканта
Моя версия хака "Транслитерации"
Добавил твердый знак и щ.
Ð_азбил на три колонки. Пока все.
__________________
Международное брачное агенство в Сибири.
Tagore, это ты к чему?
__________________
yMC.ru - хомяк музыканта
MCTarakan
К теме русский язык.
Не буде же специально тему создавать?
Вот и прицепил свои три килобайта.
__________________
Международное брачное агенство в Сибири.
Tagore дык, описание можно поточнее сделать, а то это же совсем НЕ то, что все ТУТ делают?! Или я неправ?
__________________
yMC.ru - хомяк музыканта
MCTarakan
Про то как установить транслит тут есть тема, и хак в дампе. Я сам описание установки делал больше года назад. Ð_то тагор доделал джава скрипт, чтоб лучше работал.
__________________
C уважением, Игорь
cblog.ru
Igor да нет... я и имел ввиду, что именно это за хак?!
Теперь понятно, что это улучшенный транслит... просто сразу не врубился - тема про одно, а хак про другое... 
__________________
yMC.ru - хомяк музыканта
Как сделать, чтобы можно было использовать $userterm в showthread.php, то есть на страницах, когда смотришь тему.
__________________
Было бы о чем промолчать, а уж что сказать - всегда найдется.
polo
А для вБ3 это выглядело бы немножко иначе?
__________________
Международное брачное агенство в Сибири.
| Формат времени GMT. Текущее время 08:53. | Показаны 15 сообщений на этой странице |
Powered by: vBulletin Version 2.2.4
Copyright © Jelsoft Enterprises Limited 2000, 2001.