Форум dkLab и Denwer
Здесь общаются Web-разработчики.
Генеральный спонсор:
Хостинг «Джино»

Склонение русских слов после порядковых числительных (Юрий Насретдинов)
Author Message
Юрий Насретдинов
Модератор



Joined: 13 Mar 2003
Posts: 8643
Карма: 210
   поощрить/наказать

Location: 007 495

PostPosted: Tue Mar 18, 2003 10:58 pm (написано за 1 минуту 55 секунд)
   Post subject: Склонение русских слов после порядковых числительных
Reply with quote

Code (php): скопировать код в буфер обмена
// Функция предназначена для вывода численных результатов с учетом
// склонения слов, например: "1 ответ", "2 ответа", "13 ответов" и т.д.
//
// $digit — целое число
// можно вместе с форматированием, например "<b>6</b>"
//
// $expr — массив, например: array("ответ", "ответа", "ответов").
// можно указывать только первые 2 элемента, например для склонения английских слов
// (в таком случае первый элемент - единственное число, второй - множественное)
//
// $expr может быть задан также в виде строки: "ответ ответа ответов", причем слова разделены
// символом "пробел"
//
// $onlyword - если true, то выводит только слово, без числа;
// необязательный параметр

function declension($digit,$expr,$onlyword=false)
{
        if(!is_array($expr)) $expr = array_filter(explode(' ', $expr));
        if(empty($expr[2])) $expr[2]=$expr[1];
        $i=preg_replace('/[^0-9]+/s','',$digit)%100; //intval не всегда корректно работает
        if($onlyword) $digit='';
        if($i>=5 && $i<=20) $res=$digit.' '.$expr[2];
        else
        {
                $i%=10;
                if($i==1) $res=$digit.' '.$expr[0];
                elseif($i>=2 && $i<=4) $res=$digit.' '.$expr[1];
                else $res=$digit.' '.$expr[2];
        }
        return trim($res);
}
Пример использования:
Code (php): скопировать код в буфер обмена
echo 'Мне уже '.declension('<b>20</b>','год года лет').'!';
// выведет «Мне уже <b>20</b> лет!»
 


Last edited by Юрий Насретдинов on Tue Apr 14, 2009 8:55 am; edited 7 times in total
Back to top
View user's profile Send private message Send e-mail Visit poster's website ICQ Number
Юрий Насретдинов
Модератор



Joined: 13 Mar 2003
Posts: 8643
Карма: 210
   поощрить/наказать

Location: 007 495

PostPosted: Thu Dec 25, 2003 5:58 pm (спустя 9 месяцев 6 дней 19 часов 7 секунд)
   Post subject:
Reply with quote

Кстати говоря, эта функция нашла применения на этом форуме. Не думаю, что прошел целый год с тех пор, как я добавил сюда эту функцию, но она тем не менее была одной из первых :)
Back to top
View user's profile Send private message Send e-mail Visit poster's website ICQ Number
Дмитрий Кóтеров
Администратор



Joined: 10 Mar 2003
Posts: 13665
Карма: 407
   поощрить/наказать


PostPosted: Thu Dec 25, 2003 6:24 pm (спустя 25 минут)
   Post subject:
Reply with quote

Вот сколько прошло:
yUAC wrote:
спустя 8 месяцев 7 дней 20 часов 41 минуту
Back to top
View user's profile Send private message Send e-mail Visit poster's website
Дмитрий Кóтеров
Администратор



Joined: 10 Mar 2003
Posts: 13665
Карма: 407
   поощрить/наказать


PostPosted: Fri Mar 03, 2006 10:37 am (спустя 2 года 2 месяца 8 дней 16 часов 12 минут; написано за 2 минуты 12 секунд)
   Post subject:
Reply with quote

Чуть обновленная версия функции.
- Не пихает число перед словом. Возвращает ТОЛЬКО само слово, это удобнее (вдруг число надо будет жирным обрамить, или еще как).
- Умеет работать со словами, у которых только 2 формы склонения.
Code (php): скопировать код в буфер обмена
    /**
     * Choost russion word declension based on numeric.
     * Example for $expressions: array("ответ", "ответа", "ответов")
     */

    function declension($int, $expressions)
    {
        if (count($expressions) < 3) $expressions[2] = $expressions[1];
        settype($int, "integer");
        $count = $int % 100;
        if ($count >= 5 && $count <= 20) {
            $result = $expressions['2'];
        } else {
            $count = $count % 10;
            if ($count == 1) {
                $result = $expressions['0'];
            } elseif ($count >= 2 && $count <= 4) {
                $result = $expressions['1'];
            } else {
                $result = $expressions['2'];
            }
        }
        return $result;
    }
Back to top
View user's profile Send private message Send e-mail Visit poster's website
Дмитрий Кóтеров
Администратор



Joined: 10 Mar 2003
Posts: 13665
Карма: 407
   поощрить/наказать


PostPosted: Fri Mar 03, 2006 10:38 am (спустя 1 минуту 51 секунду)
   Post subject:
Reply with quote


М

Ветка выделена в отдельную тему «Какие-то две функции»,
расположенную в форуме Мусоропровод (03 Марта 2006, 10:38).
Back to top
View user's profile Send private message Send e-mail Visit poster's website
~Cache~
Заглянувший



Joined: 11 Mar 2006
Posts: 11
Карма: -5
   поощрить/наказать


PostPosted: Sat Mar 11, 2006 4:53 am (спустя 7 дней 18 часов 14 минут; написано за 2 минуты 15 секунд)
   Post subject:
Reply with quote

Более совершенный вариант функции:
Дает возможность либо добавлять цифру перед словом, либо нет в зависимости от значения переменной $withnumber:
================
Code (php): скопировать код в буфер обмена
FUNCTION declension ($int, $expressions, $withnumber = FALSE)
{
   IF (COUNT ($expressions) < 3)
   {$expressions[2] = $expressions[1];};

   SETTYPE ($int, 'integer');

   IF ($withnumber == TRUE)
   {$result = $int .' ';}
   ELSE
   {$result = '';};

   $count = $int % 100;

   IF ($count >= 5 && $count <= 20)
   {$result .= $expressions[2];}
   ELSE
   {
      $count = $count % 10;

      IF ($count == 1)
      {$result .= $expressions[0];}
      ELSEIF ($count >= 2 && $count <= 4)
      {$result .= $expressions[1];}
      ELSE
      {$result .= $expressions[2];};
   };
   RETURN $result;
};
Back to top
View user's profile Send private message ICQ Number
Юрий Насретдинов
Модератор



Joined: 13 Mar 2003
Posts: 8643
Карма: 210
   поощрить/наказать

Location: 007 495

PostPosted: Sat Mar 11, 2006 8:55 pm (спустя 16 часов 2 минуты; написано за 1 минуту 2 секунды)
   Post subject:
Reply with quote

~Cache~
Ужасный стиль
Дмитрий Кóтеров wrote:
Возвращает ТОЛЬКО само слово, это удобнее
Сделал теперь, чтобы можно было втыкать в функцию прямо число вместе с форматированием - как раз для того случая, когда тебе нужно жирным обрамить, или ещё как :). Это ещё удобнее, ИМХО. Ну и + на всякий случай, если нужно, третий параметр, если обрамление уж очень «грязное» :).
Back to top
View user's profile Send private message Send e-mail Visit poster's website ICQ Number
~Cache~
Заглянувший



Joined: 11 Mar 2006
Posts: 11
Карма: -5
   поощрить/наказать


PostPosted: Sun Mar 12, 2006 1:54 pm (спустя 16 часов 58 минут; написано за 4 минуты)
   Post subject:
Reply with quote

Юpий Насрeтдинов wrote:
~Cache~
Ужасный стиль
Мну устраивает...
Юpий Насрeтдинов wrote:
Code (php): скопировать код в буфер обмена
        $i=preg_replace('/[^0-9]+/s','',$digit)%100;
Я малость не догоняю, а для чего нужно '%100'
Back to top
View user's profile Send private message ICQ Number
Юрий Насретдинов
Модератор



Joined: 13 Mar 2003
Posts: 8643
Карма: 210
   поощрить/наказать

Location: 007 495

PostPosted: Sun Mar 12, 2006 6:23 pm (спустя 4 часа 29 минут; написано за 42 секунды)
   Post subject:
Reply with quote

~Cache~ wrote:
Мну устраивает...
Я лишь высказал своё мнение. Вы ещё вспомните, что я говорил.
~Cache~ wrote:
Я малость не догоняю, а для чего нужно '%100'
А для чего у Вас вот это:
~Cache~ wrote:
$count = $int % 100;
:)?
Back to top
View user's profile Send private message Send e-mail Visit poster's website ICQ Number
~Cache~
Заглянувший



Joined: 11 Mar 2006
Posts: 11
Карма: -5
   поощрить/наказать


PostPosted: Tue Apr 04, 2006 4:05 am (спустя 22 дня 9 часов 41 минуту; написано за 3 минуты 50 секунд)
   Post subject:
Reply with quote

Юpий Насрeтдинов wrote:
А для чего у Вас вот это:
~Cache~ wrote:
$count = $int % 100;
:)?
Я только частично отредактировал функцию, сделав ее малость удобней (на тот момент) и оставив основной код.
Дмитрий Кóтеров wrote:
Code (php): скопировать код в буфер обмена
/*...*/     
    function declension($int, $expressions)
    {
        if (count($expressions) < 3) $expressions[2] = $expressions[1];
        settype($int, "integer");
        $count = $int % 100;
/*...*/
В связи с чем и был задан вопрос по поводу $count = $int % 100;, для чего нужно это действо ?!
Back to top
View user's profile Send private message ICQ Number
Юрий Насретдинов
Модератор



Joined: 13 Mar 2003
Posts: 8643
Карма: 210
   поощрить/наказать

Location: 007 495

PostPosted: Sat Apr 08, 2006 2:10 pm (спустя 4 дня 10 часов 4 минуты; написано за 34 секунды)
   Post subject:
Reply with quote

~Cache~ wrote:
$count = $int % 100;, для чего нужно это действо ?!
Я Вам рекомендую попытаться понять самому, как это работает (ибо там ничего сложного нету) и ответить самостоятельно на этот вопрос
Back to top
View user's profile Send private message Send e-mail Visit poster's website ICQ Number
Aleks
Guest





Карма: 384
   поощрить/наказать


PostPosted: Mon Jun 12, 2006 9:19 pm (спустя 2 месяца 4 дня 7 часов 8 минут; написано за 3 минуты 40 секунд)
   Post subject:
Reply with quote

Строго не судите, Php учю самостоятельно(6 месяцев), до этого ничего не имел с програмированием
Code (php): скопировать код в буфер обмена
/*********
Функция возвращает существительное
которое стоит после числительного,
в правильном формате.
$REZahl - числительное
$REVar1 - Вариант1 слово при "1"           (пример:  "Игра")(Одна игра)
$REVar2 - Вариант2 слово при "2,3,4"       (пример:  "Игры")(Две игры)
$REVar3 - Вариант3 слово при "5,6,7,8,9"   (пример:  "Игр") (Пять игр)

пример вызова
$slovo =  RusEndung($chislo, "Игра", "Игры", "Игр");
***/


function RusEndung($REZahl=0, $REVar1, $REVar2, $REVar3){
   $RElast = substr ($REZahl, -1);
   switch ($RElast){
       case 1:
         $REnd=$REVar1;
       break;
 
       case 2:
       case 3:
       case 4:
         $REnd=$REVar2;
       break;
 
       default:
         $REnd=$REVar3;
       break;
   }
   if( $REZahl > 9 && substr ($REZahl, -2, 1)=="1")$REnd=$REVar3;
   return $REnd;
}
Back to top
Юрий Насретдинов
Модератор



Joined: 13 Mar 2003
Posts: 8643
Карма: 210
   поощрить/наказать

Location: 007 495

PostPosted: Mon Jun 12, 2006 11:00 pm (спустя 1 час 41 минуту)
   Post subject:
Reply with quote

ИМХО с числами лучше работать как с числами,а не как со строками:). А так.. Ну, 6 месяцев - уже довольно много, так что можно и посудить ;)
Back to top
View user's profile Send private message Send e-mail Visit poster's website ICQ Number
chin
Участник форума



Joined: 23 Feb 2005
Posts: 312
Карма: 26
   поощрить/наказать

Location: Украина, Киев

PostPosted: Wed Jun 14, 2006 8:58 pm (спустя 1 день 21 час 58 минут; написано за 1 минуту 4 секунды)
   Post subject:
Reply with quote

Code (php): скопировать код в буфер обмена
function PluralForm($n, $form1, $form2, $form5)
{
    $n = abs($n) % 100;
    $n1 = $n % 10;
    if ($n > 10 && $n < 20) return $form5;
    if ($n1 > 1 && $n1 < 5) return $form2;
    if ($n1 == 1) return $form1;
    return $form5;
}
Пример использования:
Code (php): скопировать код в буфер обмена
PluralForm(1,"минута","минуты","минут"); // минута
PluralForm(2,"минута","минуты","минут"); // минуты
PluralForm(5,"минута","минуты","минут"); // минут
 
Back to top
View user's profile Send private message Send e-mail Visit poster's website ICQ Number
Юрий Насретдинов
Модератор



Joined: 13 Mar 2003
Posts: 8643
Карма: 210
   поощрить/наказать

Location: 007 495

PostPosted: Wed Jun 14, 2006 9:15 pm (спустя 16 минут)
   Post subject:
Reply with quote

Интересно, в чем смысл от того, что вы тут постите одну и ту же функцию в разных вариациях:)
Back to top
View user's profile Send private message Send e-mail Visit poster's website ICQ Number
chin
Участник форума



Joined: 23 Feb 2005
Posts: 312
Карма: 26
   поощрить/наказать

Location: Украина, Киев

PostPosted: Wed Jun 14, 2006 9:42 pm (спустя 26 минут; написано за 42 секунды)
   Post subject:
Reply with quote

Юpий Насрeтдинов wrote:
Интересно, в чем смысл от того, что вы тут постите одну и ту же функцию в разных вариациях:)
Эта короче, быстрее и без лишних наворотов... ИМХО.
Back to top
View user's profile Send private message Send e-mail Visit poster's website ICQ Number
Юрий Насретдинов
Модератор



Joined: 13 Mar 2003
Posts: 8643
Карма: 210
   поощрить/наказать

Location: 007 495

PostPosted: Wed Jun 14, 2006 9:57 pm (спустя 14 минут; написано за 33 секунды)
   Post subject:
Reply with quote

chin
Эти навороты отнюдь не лишние (а выработаны годами :)!). А вот насчёт скорости - это уж точно экономия на спичках.
Back to top
View user's profile Send private message Send e-mail Visit poster's website ICQ Number
chin
Участник форума



Joined: 23 Feb 2005
Posts: 312
Карма: 26
   поощрить/наказать

Location: Украина, Киев

PostPosted: Wed Jun 14, 2006 10:25 pm (спустя 27 минут; написано за 50 секунд)
   Post subject:
Reply with quote

Юpий Насрeтдинов wrote:
Эти навороты отнюдь не лишние (а выработаны годами :)!). А вот насчёт скорости - это уж точно экономия на спичках.
Есть такое восточное искусство, называется "Каму-шо". Так вот мне этот вариант больше подходит. Против Вашего ничего не имею (:
Back to top
View user's profile Send private message Send e-mail Visit poster's website ICQ Number
Rumata
Профессионал



Joined: 17 Aug 2003
Posts: 1850
Карма: 185
   поощрить/наказать


PostPosted: Tue Jul 11, 2006 7:10 pm (спустя 26 дней 20 часов 45 минут; написано за 2 минуты 25 секунд)
   Post subject:
Reply with quote

по просьбе Maus
повторяю ссылку - http://xpoint.ru/forums/naturelang/misc/thread/27556.xhtml

хотя я и не считаю тему раскрытой. для неспециалиста (нелингвиста) - вопросов больше чем ответов
Back to top
View user's profile Send private message Visit poster's website
ABTOP
Заглянувший



Joined: 01 Dec 2007
Posts: 14
Карма: -1
   поощрить/наказать


PostPosted: Sat Dec 01, 2007 7:34 am (спустя 1 год 4 месяца 19 дней 12 часов 23 минуты; написано за 1 минуту 37 секунд)
   Post subject:
Reply with quote

Юрий Насретдинов wrote:
Эти навороты отнюдь не лишние (а выработаны годами :)!). А вот насчёт скорости - это уж точно экономия на спичках.
Нельзя ли привести преимущества того или иного скропта перед другими?
Back to top
View user's profile Send private message
Юрий Насретдинов
Модератор



Joined: 13 Mar 2003
Posts: 8643
Карма: 210
   поощрить/наказать

Location: 007 495

PostPosted: Sun Dec 02, 2007 1:23 am (спустя 17 часов 49 минут; написано за 2 минуты 44 секунды)
   Post subject:
Reply with quote

ABTOP wrote:
Нельзя ли привести преимущества того или иного скропта перед другими?
  1. поддержка склонений как на английском, так и на русском языках
  2. возможность подавать на вход «грязное» число, например, завёрнутое в теги <b> ... </b>.
  3. более трёх лет выдержки, и использование этой функции на форуме :), что доказывает её удобство и применимость к реальным задачам
  4. корректное склонение отрицательных чисел


Last edited by Юрий Насретдинов on Thu Sep 11, 2008 11:29 am; edited 1 time in total
Back to top
View user's profile Send private message Send e-mail Visit poster's website ICQ Number
ABTOP
Заглянувший



Joined: 01 Dec 2007
Posts: 14
Карма: -1
   поощрить/наказать


PostPosted: Sun Dec 02, 2007 10:16 pm (спустя 20 часов 53 минуты; написано за 2 минуты 35 секунд)
   Post subject:
Reply with quote

Спасибо за ответ. Я хочу поставить такую функцию себе на phpbb форум - вынужденная русская неграмотность англоязычных модификаций порядком приелась - и, если силёнок хватит, может быть даже выделить ето в самостоятельный MOD. Если авторы не возражают, конечно...
Back to top
View user's profile Send private message
Юрий Насретдинов
Модератор



Joined: 13 Mar 2003
Posts: 8643
Карма: 210
   поощрить/наказать

Location: 007 495

PostPosted: Mon Dec 03, 2007 12:24 am (спустя 2 часа 8 минут; написано за 5 секунд)
   Post subject:
Reply with quote

ABTOP
Да пожалуйста, я даже буду рад :).
Back to top
View user's profile Send private message Send e-mail Visit poster's website ICQ Number
Юрий Насретдинов
Модератор



Joined: 13 Mar 2003
Posts: 8643
Карма: 210
   поощрить/наказать

Location: 007 495

PostPosted: Sun Sep 07, 2008 9:43 pm (спустя 9 месяцев 4 дня 21 час 18 минут; написано за 2 минуты 3 секунды)
   Post subject:
Reply with quote

Добавил небольшое исправление в свою функцию: теперь можно в качестве вариантов склонения слова указывать не массив, а строчку, разделенную пробелами:
Code (php): скопировать код в буфер обмена
echo 'динозавр съел целых '.declension('<i>25</i>', 'бублик бублика бубликов');
// выведет динозавр съел целых <i>25</i> бубликов
 
Такой синтаксис мне кажется более удобным и менее громоздким.
Back to top
View user's profile Send private message Send e-mail Visit poster's website ICQ Number
Даниил Б.
Заглянувший



Joined: 16 Jul 2003
Posts: 3
Карма: 0
   поощрить/наказать

Location: Питер

PostPosted: Tue Feb 24, 2009 4:30 am (спустя 5 месяцев 16 дней 6 часов 47 минут; написано за 6 секунд)
   Post subject:
Reply with quote

Юрий Насретдинов

Есть предложение расширить функцию onlyword.
Допустим, работаем с количеством комментариев. В случае, если $digit равно нулю, в некоторых случаях уместно написать «комментариев нет», в некоторых — «нет комментариев», а в некоторых — «никто не оставил комментария». В общем, было бы хорошо, если б можно было ввести четвертую строку, которая (опционально) возвращалась бы функций в случае нуля в $digit.

Почему я не сделал этого сам? Потому что не программист, просто искал функию склонения для свого сайта, и набрел на эту страничку. :)
Back to top
View user's profile Send private message Send e-mail
Юрий Насретдинов
Модератор



Joined: 13 Mar 2003
Posts: 8643
Карма: 210
   поощрить/наказать

Location: 007 495

PostPosted: Tue Feb 24, 2009 1:38 pm (спустя 9 часов 7 минут; написано за 1 минуту 7 секунд)
   Post subject:
Reply with quote

Даниил Белый
У меня, кстати, был вариант с такой функциональностью. Но я от этого отказался, поскольку лично мне это не пригодилось ни разу.
Back to top
View user's profile Send private message Send e-mail Visit poster's website ICQ Number
Даниил Б.
Заглянувший



Joined: 16 Jul 2003
Posts: 3
Карма: 0
   поощрить/наказать

Location: Питер

PostPosted: Tue Feb 24, 2009 3:57 pm (спустя 2 часа 18 минут; написано за 6 минут 8 секунд)
   Post subject:
Reply with quote

Юрий Насретдинов wrote:
У меня, кстати, был вариант с такой функциональностью. Но я от этого отказался, поскольку лично мне это не пригодилось ни разу.
Да? Тогда, может быть, на практике это действительно никому не нужно. В моем конкретном случае обработка нулевого значения также происходит вне функции.
Back to top
View user's profile Send private message Send e-mail
Александр Птахин
Заглянувший



Joined: 26 Jun 2006
Posts: 5
Карма: 0
   поощрить/наказать


PostPosted: Tue Feb 24, 2009 10:16 pm (спустя 6 часов 19 минут; написано за 2 минуты 21 секунду)
   Post subject:
Reply with quote

Даниил Белый, Юрий Насретдинов,
Возможно это выглядит странно, но вариант с нулём был :) :
Code (php): скопировать код в буфер обмена
<?=($QuantityNewSolves)? $QuantityNewSolves . " ": "" ?><?=PluralFormNull( $QuantityNewSolves, "Нет новых решений", "новое решение", "новых решения", "новых решений" )?>
Сейчас мне, правда, кажется, что с обычным if было бы более читаемо.
Code (php): скопировать код в буфер обмена
<? if( $QuantityNewSolves ) { ?>
        <?=$QuantityNewSolves?> <?=PluralForm( $QuantityNewSolves, "новое решение", "новых решения", "новых решений" )?>
<? } else { ?>
        "Нет новых решений"
<? } ?>
Хотя, посмотрев на "высоту" кода, я сомневаюсь :).
Back to top
View user's profile Send private message
Владимир Твердохлебов
Guest





Карма: 384
   поощрить/наказать


PostPosted: Tue Apr 14, 2009 8:21 am (спустя 1 месяц 17 дней 10 часов 4 минуты; написано за 54 секунды)
   Post subject:
Reply with quote

Вот что у меня получилось (возвращает только слово):
Code (php): скопировать код в буфер обмена
function declension($num, $str)
{
        $exp = explode(',', $str);
        $num -= ($num < 0) ? $num*2 : 0;
        $dig = ($num > 20) ? substr($num, -1) : $num;

        return trim((($dig == 1) ? $exp[1] : (($dig > 4 || $dig < 1) ? $exp[0] : $exp[2])));
}

// test
for($i=-29; $i<=29; $i++)
{
        print  $i . ' ' . declension($i, 'ответов, ответ, ответа') . '<br/>';
}
Back to top
Юрий Насретдинов
Модератор



Joined: 13 Mar 2003
Posts: 8643
Карма: 210
   поощрить/наказать

Location: 007 495

PostPosted: Tue Apr 14, 2009 8:56 am (спустя 35 минут; написано за 38 секунд)
   Post subject:
Reply with quote

Владимир Твердохлебов
А 113 должно быть «ответов» или «ответа»?

Не надо изобретать велосипед, а уж тем более с substr() баловаться :)
Back to top
View user's profile Send private message Send e-mail Visit poster's website ICQ Number
Guest






Карма: 384
   поощрить/наказать


PostPosted: Tue Apr 14, 2009 7:57 pm (спустя 11 часов 23 секунды; написано за 1 минуту 55 секунд)
   Post subject:
Reply with quote

Юрий Насретдинов
спасибо, исправил :)

В substr() не вижу ничего зазорного, ибо написано: "тип переменной определяется по контексту, в котором она используется."
Code (php): скопировать код в буфер обмена
// исправленный вариант
function declension($num, $str)
{
        $exp = explode(',', $str);
        $num = (($num < 0) ? $num-$num*2 : $num)%100;
        $dig = ($num > 20) ? $num%10 : $num;

        return trim((($dig == 1) ? $exp[1] : (($dig > 4 || $dig < 1) ? $exp[0] : $exp[2])));
}
Back to top
KIVagant
Guest





Карма: 384
   поощрить/наказать


PostPosted: Thu Oct 29, 2009 11:10 pm (спустя 6 месяцев 15 дней 3 часа 13 минут; написано за 13 секунд)
   Post subject:
Reply with quote

Спасибо.
Back to top
Display posts from previous:   
Post new topic   Reply to topic All times are GMT + 3 Hours
Page 1 of 1   
You cannot post new topics in this forum. You cannot reply to topics in this forum. You cannot edit your posts in this forum. You cannot delete your posts in this forum. You cannot vote in polls in this forum. You cannot attach files in this forum. You can download files in this forum.
  XML