Главная :: Форум :: Web ClipArt :: Поиск :: Статистика :: Топ 10 :: Публикация :: Рекомендовать
netadmin.ws
Панель управления Регистрция свободна! Календарь Список пользователей Часто задаваемые вопросы Поиск по форуму Архив скриптов Главная   
Форум сетевых администраторов
Форум сетевых администраторов Форум сетевых администраторов » Веб Форумы » VBulletin 2.x.x » Хаки от Netadmin или "Сделай сам" » Учим VBulletin правильно говорить по русски!
Предыдущая тема     Следующая тема
Автор
Тема    Новая тема     Ответить на эту тему
polo
Администратор
Средний рейтинг: 4.77 | Оценок: 106
/нажмите чтобы посмотреть кто оценивал/

Зарегистрирован: May 2001
Место проживания:
Публикаций: 4642
Статус: polo в оф-лайне
Учим VBulletin правильно говорить по русски! [сообщение #6352]

Наверное многие из вас заметили неправильное отображение оканчания слова пользователь/гость при отображение их колличества на форумах переведенных на русский язык. Ð_то касаеться в частности следующих отрывкаов:
На данный момент на форуме прсудствуют 3 пользователей.
или
На форуме присудствуют 4 пользователей и 2 гостей
Я при переводе форума часто задумывался над этой проблемой, но всегда решал оставить все как есть и не забивать себе голову пустяками и везде где это возможно старался предварять количество двоиточием (Пользователей: 2).
На днях Total спросил у меня решения этой проблемы. Вот какое решения я предлагаю:

В файле admin/functions.php в самом конце перед ?> нужно добавить функцию:

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;
}


Ð_та функция принимает число и в зависимости от числа возвращяет окончание. Также учитываються числа 11, 12, 13, 14.

Пример использования:
Присвоение правильных окочаний на главной странице форума в блоке Кто в онлайне.
В файле index.php перед

PHP:

eval("\$loggedinusers = \"".gettemplate('forumhome_loggedinusers')."\";");


добавить:

PHP:

$userterm 
= termination($numberregistered);
  
$guestterm = termination($numberguest);


В шаблоне forumhome_loggedinusers нужно изменить пользователей на пользовател$userterm и гостей на гост$guestterm.

В общем эту функцию можно применить везде где окончания ь, я, ей в зависимости от количества.

__________________
Всегда есть решение.

Сообщить модератору об этом сообщении | Предупреждение | IP: определен

Old Post 12-04-2002 17:18
Нажмите сюда для просмотра профайла polo Отправить Персональное сообщение polo Посетить домашнию страничку polo! Найти сообщения от polo Добавить polo в свой список друзей Редактировать/Удалить сообщение Ответить Цитируя
Total
Потерявшийся
Средний рейтинг: 4.11 | Оценок: 9
/нажмите чтобы посмотреть кто оценивал/

Зарегистрирован: Oct 2001
Место проживания: Tallinn, Estonia
Публикаций: 609
Статус: Total в оф-лайне
[сообщение #6353]

Было бы не плохо, если бы ты написал то же самое про приватные сообщения

__________________
**censored** Ты тут еще не был? ...
**censored** Админы форумов - сюда!!!

Сообщить модератору об этом сообщении | Предупреждение | IP: определен

Old Post 12-04-2002 17:27
Нажмите сюда для просмотра профайла Total Отправить Персональное сообщение Total Найти сообщения от Total Добавить Total в свой список друзей Редактировать/Удалить сообщение Ответить Цитируя
polo
Администратор
Средний рейтинг: 4.77 | Оценок: 106
/нажмите чтобы посмотреть кто оценивал/

Зарегистрирован: May 2001
Место проживания:
Публикаций: 4642
Статус: polo в оф-лайне
[сообщение #6354]

Для приватных сообщений все аналогично только нужно оканчания поменять.

__________________
Всегда есть решение.

Сообщить модератору об этом сообщении | Предупреждение | IP: определен

Old Post 12-04-2002 17:34
Нажмите сюда для просмотра профайла polo Отправить Персональное сообщение polo Посетить домашнию страничку polo! Найти сообщения от polo Добавить polo в свой список друзей Редактировать/Удалить сообщение Ответить Цитируя
Vanish
-= n0b0dy =-
Средний рейтинг: 4.29 | Оценок: 24
/нажмите чтобы посмотреть кто оценивал/

Зарегистрирован: Oct 2001
Место проживания: rus|53
Публикаций: 624
Статус: Vanish в оф-лайне
Оптимизация вроде [сообщение #6759]

Предлагаю следующую модификацию функции:


PHP:


// -------------------------------------------------------------------------------------------------------------------
 // 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;
}



Алгоритм немного изменен, правда не знаю в лучшую ли сторону. Если что то не работает... Пофиксите сами ))

Замеченные преимущетва и недостатки:
+ по требованию трудящихся введены случаи работы с ПС;
+ еще комментарии по мере сил накарябал, на тот случай если кто захочет разобраться/модифицировать;
- заточено под определенную русификацию;
- при словосочетанях вроде 'n новых сообщений' функцию приходится использовать неоднократно: отдельно для слова 'новых' и отдельно для - 'сообщений'.

Еще всем кто хочет проверить правильность работы скрипта - использовать следующий код:


PHP:

### Тестирование функции ###

for ($something=100; $something<=130; $something++) { 
    
$tmp1=termination($something, 3);
    
$tmp2=termination($something, 4);
    echo 
"$something нов<i>$tmp1</i> сообщен<i>$tmp2</i> <br>";
}



По использованию все остается так же как у polo. Однако рекомендую ознакомится с правильностью выбора параметра $mask (см. комментарии)

За сим позвольте откланятся.
--- Всем GL from Vanish aka Jesus

Сообщить модератору об этом сообщении | Предупреждение | IP: определен

Old Post 20-04-2002 15:31
Нажмите сюда для просмотра профайла Vanish Отправить Персональное сообщение Vanish Найти сообщения от Vanish Добавить Vanish в свой список друзей Редактировать/Удалить сообщение Ответить Цитируя
Denisak
Участник+

Зарегистрирован: Sep 2001
Место проживания: Таллинн, Эстония
Публикаций: 48
Статус: Denisak в оф-лайне
[сообщение #6782]

класс!

__________________
С уважением, Денис
-----------------------
Ð_ХЛ - модификация для ЕА НХЛ 2004.
**censored**

Сообщить модератору об этом сообщении | Предупреждение | IP: определен

Old Post 21-04-2002 05:40
Нажмите сюда для просмотра профайла Denisak Отправить Персональное сообщение Denisak Посетить домашнию страничку Denisak! Найти сообщения от Denisak Добавить Denisak в свой список друзей Редактировать/Удалить сообщение Ответить Цитируя
Tagore
Сибиряк
Средний рейтинг: 3.58 | Оценок: 31
/нажмите чтобы посмотреть кто оценивал/

Зарегистрирован: Sep 2002
Место проживания: Новосибирск
Публикаций: 1255
Статус: Tagore в оф-лайне
[сообщение #45398]

Vanish
Astalavista baby!

__________________
Международное брачное агенство в Сибири.

Сообщить модератору об этом сообщении | Предупреждение | IP: определен

Old Post 01-06-2003 00:02
Нажмите сюда для просмотра профайла Tagore Отправить Персональное сообщение Tagore Посетить домашнию страничку Tagore! Найти сообщения от Tagore Добавить Tagore в свой список друзей Редактировать/Удалить сообщение Ответить Цитируя
MCTarakan
MuZzClub.ru
Средний рейтинг: 4.33 | Оценок: 64
/нажмите чтобы посмотреть кто оценивал/

Зарегистрирован: Jul 2002
Место проживания: Ireland
Публикаций: 2710
Статус: MCTarakan в оф-лайне
[сообщение #45425]

дык, финал релиз давайте!

__________________
yMC.ru - хомяк музыканта

Сообщить модератору об этом сообщении | Предупреждение | IP: определен

Old Post 01-06-2003 01:52
Нажмите сюда для просмотра профайла MCTarakan Отправить Персональное сообщение MCTarakan Посетить домашнию страничку MCTarakan! Найти сообщения от MCTarakan Добавить MCTarakan в свой список друзей Редактировать/Удалить сообщение Ответить Цитируя
Tagore
Сибиряк
Средний рейтинг: 3.58 | Оценок: 31
/нажмите чтобы посмотреть кто оценивал/

Зарегистрирован: Sep 2002
Место проживания: Новосибирск
Публикаций: 1255
Статус: Tagore в оф-лайне
Wink Моя версия хака "Транслитерации" [сообщение #45654]

Добавил твердый знак и щ.
Ð_азбил на три колонки. Пока все.

Файл: транслитерация.zip
Был скачан 29 раз(а).

__________________
Международное брачное агенство в Сибири.

Сообщить модератору об этом сообщении | Предупреждение | IP: определен

Old Post 04-06-2003 20:41
Нажмите сюда для просмотра профайла Tagore Отправить Персональное сообщение Tagore Посетить домашнию страничку Tagore! Найти сообщения от Tagore Добавить Tagore в свой список друзей Редактировать/Удалить сообщение Ответить Цитируя
MCTarakan
MuZzClub.ru
Средний рейтинг: 4.33 | Оценок: 64
/нажмите чтобы посмотреть кто оценивал/

Зарегистрирован: Jul 2002
Место проживания: Ireland
Публикаций: 2710
Статус: MCTarakan в оф-лайне
[сообщение #45665]

Tagore, это ты к чему?

__________________
yMC.ru - хомяк музыканта

Сообщить модератору об этом сообщении | Предупреждение | IP: определен

Old Post 04-06-2003 23:41
Нажмите сюда для просмотра профайла MCTarakan Отправить Персональное сообщение MCTarakan Посетить домашнию страничку MCTarakan! Найти сообщения от MCTarakan Добавить MCTarakan в свой список друзей Редактировать/Удалить сообщение Ответить Цитируя
Tagore
Сибиряк
Средний рейтинг: 3.58 | Оценок: 31
/нажмите чтобы посмотреть кто оценивал/

Зарегистрирован: Sep 2002
Место проживания: Новосибирск
Публикаций: 1255
Статус: Tagore в оф-лайне
[сообщение #45749]

MCTarakan
К теме русский язык.
Не буде же специально тему создавать?
Вот и прицепил свои три килобайта.

__________________
Международное брачное агенство в Сибири.

Сообщить модератору об этом сообщении | Предупреждение | IP: определен

Old Post 05-06-2003 17:12
Нажмите сюда для просмотра профайла Tagore Отправить Персональное сообщение Tagore Посетить домашнию страничку Tagore! Найти сообщения от Tagore Добавить Tagore в свой список друзей Редактировать/Удалить сообщение Ответить Цитируя
MCTarakan
MuZzClub.ru
Средний рейтинг: 4.33 | Оценок: 64
/нажмите чтобы посмотреть кто оценивал/

Зарегистрирован: Jul 2002
Место проживания: Ireland
Публикаций: 2710
Статус: MCTarakan в оф-лайне
[сообщение #45769]

Tagore дык, описание можно поточнее сделать, а то это же совсем НЕ то, что все ТУТ делают?! Или я неправ?

__________________
yMC.ru - хомяк музыканта

Сообщить модератору об этом сообщении | Предупреждение | IP: определен

Old Post 06-06-2003 00:51
Нажмите сюда для просмотра профайла MCTarakan Отправить Персональное сообщение MCTarakan Посетить домашнию страничку MCTarakan! Найти сообщения от MCTarakan Добавить MCTarakan в свой список друзей Редактировать/Удалить сообщение Ответить Цитируя
Igor
Модератор
Средний рейтинг: 4.29 | Оценок: 14
/нажмите чтобы посмотреть кто оценивал/

Зарегистрирован: Jul 2001
Место проживания: USA
Публикаций: 745
Статус: Igor в оф-лайне
[сообщение #45801]

MCTarakan
Про то как установить транслит тут есть тема, и хак в дампе. Я сам описание установки делал больше года назад. Ð_то тагор доделал джава скрипт, чтоб лучше работал.

__________________
C уважением, Игорь
cblog.ru

Сообщить модератору об этом сообщении | Предупреждение | IP: определен

Old Post 06-06-2003 08:56
Нажмите сюда для просмотра профайла Igor Отправить Персональное сообщение Igor Посетить домашнию страничку Igor! Найти сообщения от Igor Добавить Igor в свой список друзей Редактировать/Удалить сообщение Ответить Цитируя
MCTarakan
MuZzClub.ru
Средний рейтинг: 4.33 | Оценок: 64
/нажмите чтобы посмотреть кто оценивал/

Зарегистрирован: Jul 2002
Место проживания: Ireland
Публикаций: 2710
Статус: MCTarakan в оф-лайне
[сообщение #45884]

Igor да нет... я и имел ввиду, что именно это за хак?! Теперь понятно, что это улучшенный транслит... просто сразу не врубился - тема про одно, а хак про другое...

__________________
yMC.ru - хомяк музыканта

Сообщить модератору об этом сообщении | Предупреждение | IP: определен

Old Post 06-06-2003 23:31
Нажмите сюда для просмотра профайла MCTarakan Отправить Персональное сообщение MCTarakan Посетить домашнию страничку MCTarakan! Найти сообщения от MCTarakan Добавить MCTarakan в свой список друзей Редактировать/Удалить сообщение Ответить Цитируя
qwerty000
Member minus
Средний рейтинг: 4.45 | Оценок: 11
/нажмите чтобы посмотреть кто оценивал/

Зарегистрирован: Dec 2002
Место проживания:
Публикаций: 83
Статус: qwerty000 в оф-лайне
[сообщение #46250]

Как сделать, чтобы можно было использовать $userterm в showthread.php, то есть на страницах, когда смотришь тему.

__________________
Было бы о чем промолчать, а уж что сказать - всегда найдется.

Сообщить модератору об этом сообщении | Предупреждение | IP: определен

Old Post 10-06-2003 22:59
Нажмите сюда для просмотра профайла qwerty000 Отправить Персональное сообщение qwerty000 Найти сообщения от qwerty000 Добавить qwerty000 в свой список друзей Редактировать/Удалить сообщение Ответить Цитируя
Tagore
Сибиряк
Средний рейтинг: 3.58 | Оценок: 31
/нажмите чтобы посмотреть кто оценивал/

Зарегистрирован: Sep 2002
Место проживания: Новосибирск
Публикаций: 1255
Статус: Tagore в оф-лайне
[сообщение #60216]

polo
А для вБ3 это выглядело бы немножко иначе?

__________________
Международное брачное агенство в Сибири.

Сообщить модератору об этом сообщении | Предупреждение | IP: определен

Old Post 03-02-2004 21:13
Нажмите сюда для просмотра профайла Tagore Отправить Персональное сообщение Tagore Посетить домашнию страничку Tagore! Найти сообщения от Tagore Добавить Tagore в свой список друзей Редактировать/Удалить сообщение Ответить Цитируя



Формат времени GMT. Текущее время 09:11.
Новая тема   Ответить на эту тему [ Версия для печати Печать | Отправить эту страницу другу/знакомому! Отправить | Получать уведомления об обновлении этой темы Подписка ] Предыдущая тема     Следующая тема
Навигация по форуму:
Оценка темы:

Правила форума:
Вы не можете создавать новые темы.
Вы не можете отвечать на существующие темы.
Вы не можете прикреплять файлы.
Вы не можете редактировать свои сообщения.
HTML теги выкл.
Спец. код вкл.
Смайлики вкл.
[IMG] тег выкл.
 

Page generated in 1.17567492 seconds (99.19% PHP - 0.81% MySQL) with 27 queries.


  Главная :: Форум :: Web ClipArt :: Поиск :: Статистика :: Топ 10 :: Публикация :: Рекомендовать
©NetAdmin.ws, 2001-2026.
Powered by: vBulletin
Copyright ©2000, 2001, Jelsoft Enterprises Limited.