Russian Qt Forum
Сентябрь 21, 2024, 16:54 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1] 2 3 ... 6   Вниз
  Печать  
Автор Тема: Проблема с переключением языка  (Прочитано 41750 раз)
Den2009
Гость
« : Декабрь 11, 2009, 00:08 »

в общем, сделал Luguist файлы перевода, используя литературу Шлее попытался реализовать динамическую смену языка, вот код:
proga1.h
Код:
#ifndef PROGA1_H
#define PROGA1_H
#include <QMainWindow>
#include <QObject>
#include "ui_proga1.h"

class MainWindow : public QMainWindow, Ui::MainWindow // <--------Наследуемся
{
    Q_OBJECT
public:
    int m_rus; // объявляем глобальную переменную...
    MainWindow(QMainWindow* p = 0) : QMainWindow(p)
    {
        setupUi(this);
        connect(pushButton, SIGNAL(clicked()), this, SLOT(rasschet())); //подключаем кнопку рассчет
        connect(kn_about, SIGNAL(triggered()), this, SLOT(about())); // подключаем кнопку о программе
        connect(kn_help, SIGNAL(triggered()), this, SLOT(help())); //подключаем кнопку помощь
        connect(kn_author, SIGNAL(triggered()), this, SLOT(author())); //подключаем кнопку об авторе
        connect(kn_rus, SIGNAL(triggered()), this, SLOT(switchlang()));
        connect(kn_eng, SIGNAL(triggered()), this, SLOT(switchlang()));
    }
public slots:
    void rasschet(); // создаем слот рассчет
    void about(); // создаем слот о программе
    void help(); // создаем слот помощь
    void author(); // создаем слот об авторе
    void swlang(); // создаем слот смены языка
    void switchlang();

};

#endif

proga1.cpp
Код:
#include <QtCore>
#include <QTextCodec>
#include <QtGui>
#include <QTranslator>
#include "proga1.h"
............
void MainWindow::switchlang()
{
    if (kn_rus -> isChecked())
    {
        (m_rus << 1);
        kn_eng -> setCheckable(true);
        kn_eng -> setChecked(false);
    }
    if (kn_eng -> isChecked())
    {
        (m_rus << 2);
        kn_rus -> setCheckable(true);
        kn_rus -> setChecked(false);
    }
}

void MainWindow::swlang()
{
    QTranslator translator;
    {
        switch(m_rus)
    case 1:  //<===========
        translator.load("rus.qm",".");
        break;
    case 2:  //<===========
        translator.load("eng.qm",".");
        break;
    }

    qApp->installTranslator(&translator);
}
при компиляции следующие ошибки:
Код:
break statement not within loop or switch
case label '2' not within a switch statement
break statement not within loop or switch
за 2 вечера перерыл кучу всякой литературы и интернета, но так и не нашел решение... ((
Записан
Den2009
Гость
« Ответ #1 : Декабрь 11, 2009, 00:40 »

и еще... прочитал, что надо генерировать из файлов перевода статический константный массив данных, но почему-то у меня в папке с QT (и во всех ее подпапках) нет утилиты QEmbed, хотя она должна быть в папке /tools не мог бы кто-нибудь выложить ее и сопутствующие файлы, с указанием директорий?
Записан
denka
Гость
« Ответ #2 : Декабрь 11, 2009, 00:47 »

Думаю для начала надо бы подправить знания  в С++ Улыбающийся

мне вот(как и компилятору) не понятна следующая конструкция
Код:
   QTranslator translator;
    {
        switch(m_rus)
    case 1:  //<===========
        translator.load("rus.qm",".");
        break;
    case 2:  //<===========
        translator.load("eng.qm",".");
        break;
    }
Скобки не смущают?

Дальше. Что значит
Код:
(m_rus << 2);
Куда мы че сдвигаем?
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #3 : Декабрь 11, 2009, 07:32 »

1. m_rus << 2 замени на m_rus = 2
2.
Код
C++ (Qt)
  QTranslator translator;
 
       switch(m_rus) {
   case 1:  //<===========
       translator.load("rus.qm",".");
       break;
   case 2:  //<===========
       translator.load("eng.qm",".");
       break;
   }
 
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
Den2009
Гость
« Ответ #4 : Декабрь 11, 2009, 08:59 »

спс, помогло, теперь еще вопрос:
Код:
void MainWindow::switchlang()
{
    if (kn_rus -> isChecked())
    {
        (m_rus = 1);
        kn_eng -> setCheckable(true);
        kn_eng -> setChecked(false);
    }
    if (kn_eng -> isChecked())
    {
        (m_rus = 2);
        kn_rus -> setCheckable(true);
        kn_rus -> setChecked(false);
    }
}
что тут не так? проблема такая: если выбран русский, то для того, чтоб выбрать английский, надо сначала кликнуть по русскому, чтобы снять галочку, а потом уже по английскому... если же английский, то нормально переключает
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #5 : Декабрь 11, 2009, 12:41 »

Почитай в ассистенте про QActionGroup.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
Den2009
Гость
« Ответ #6 : Декабрь 11, 2009, 13:38 »

сделал так:
proga1.h
Код:
#ifndef PROGA1_H
#define PROGA1_H
#include <QMainWindow>
#include <QObject>
#include "ui_proga1.h"

class MainWindow : public QMainWindow, Ui::MainWindow // <--------Наследуемся
{
    Q_OBJECT
public:
    bool m_rus;
    MainWindow(QMainWindow* p = 0) : QMainWindow(p)
    {
        m_rus = true; // по умолчанию русский
        setupUi(this);
        ..........
        connect(kn_rus, SIGNAL(triggered()), this, SLOT(triggeredRussian())); // выбираем русский
        connect(kn_eng, SIGNAL(triggered()), this, SLOT(triggeredEnglish())); // выбираем английский
     }
public slots:
    ........
    void triggeredRussian();
    void triggeredEnglish();

};

#endif

proga1.cpp
Код:
#include <QtCore>
#include <QTextCodec>
#include <QtGui>
#include <QTranslator>
#include "proga1.h"
#include "proga1_about.h"
#include "proga1_author.h"
#include "proga1_help.h"
#include "qm_files.h"
#define tr QObject::tr
.........
void MainWindow::triggeredRussian()
{
    QTranslator translator;
    qDebug() << "Грузим русский перевод" ;
    m_rus = true;
    kn_eng->setChecked(false);
    translator.load("rus.qm",".");
    qApp->installTranslator(&translator);
}
void MainWindow::triggeredEnglish()
{
    QTranslator translator;
    qDebug() << "Грузим английский перевод" ;
    m_rus = false;
    kn_rus->setChecked(false);
    translator.load("eng.qm",".");
    qApp->installTranslator(&translator);
}
все переключается, но почему-то не меняется язык...
rus.ts, eng.ts, rus.qm, eng.qm создавал с помощью linguist

rus.ts
Код:
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.0" language="en_US" sourcelanguage="ru_RU">
<context>
    <name>About</name>
    <message utf8="true">
        <location filename="proga1_about.ui" line="26"/>
        <source>О программе</source>
        <translation>About program</translation>
    </message>
    <message utf8="true">
        <location filename="proga1_about.ui" line="41"/>
        <source>Закрыть</source>
        <translation>Close</translation>
    </message>
    <message utf8="true">
        <location filename="proga1_about.ui" line="54"/>
        <source>Программа переводит заданные с клавиатуры</source>
        <translation>The program translates the specified keyboard</translation>
    </message>
    <message utf8="true">
        <location filename="proga1_about.ui" line="67"/>
        <source>секунды в вид ЧЧ:ММ:СС</source>
        <translation>seconds in the form HH:MM:SS</translation>
    </message>
</context>
<context>
    <name>Author</name>
    <message utf8="true">
        <location filename="proga1_author.ui" line="35"/>
        <source>Об авторе</source>
        <translation>About author</translation>
    </message>
    <message utf8="true">
        <location filename="proga1_author.ui" line="50"/>
        <source>Закрыть</source>
        <translation>Close</translation>
    </message>
    <message utf8="true">
        <location filename="proga1_author.ui" line="63"/>
        <source>Автор программы: </source>
        <translation>Author program:</translation>
    </message>
    <message utf8="true">
        <location filename="proga1_author.ui" line="76"/>
        <source>Мухин Денис Михайлович</source>
        <translation>Mukhin Denis Mikhailovich</translation>
    </message>
    <message utf8="true">
        <location filename="proga1_author.ui" line="89"/>
        <source>студент группы ВМ-21</source>
        <translation>student group VM-21</translation>
    </message>
    <message utf8="true">
        <location filename="proga1_author.ui" line="102"/>
        <source>2009 год</source>
        <translation>2009</translation>
    </message>
</context>
<context>
    <name>Help</name>
    <message utf8="true">
        <location filename="proga1_help.ui" line="14"/>
        <source>Помощь</source>
        <translation>Help</translation>
    </message>
    <message utf8="true">
        <location filename="proga1_help.ui" line="26"/>
        <source>Закрыть</source>
        <translation>Close</translation>
    </message>
</context>
<context>
    <name>MainWindow</name>
    <message utf8="true">
        <location filename="proga1.ui" line="32"/>
        <source>Программа №1 :)</source>
        <translation>Programm #1</translation>
    </message>
    <message utf8="true">
        <location filename="proga1.ui" line="86"/>
        <source>Рассчитать</source>
        <translation>Calculate</translation>
    </message>
    <message utf8="true">
        <location filename="proga1.ui" line="99"/>
        <location filename="proga1.ui" line="196"/>
        <source>Выход</source>
        <translation>Quit</translation>
    </message>
    <message utf8="true">
        <location filename="proga1.ui" line="112"/>
        <source>Введите количество секунд</source>
        <translation>Enter the number of seconds</translation>
    </message>
    <message utf8="true">
        <location filename="proga1.ui" line="125"/>
        <source>Результат работы программы</source>
        <translation>The result of the program</translation>
    </message>
    <message utf8="true">
        <location filename="proga1.ui" line="141"/>
        <source>Файл</source>
        <translation>File</translation>
    </message>
    <message utf8="true">
        <location filename="proga1.ui" line="149"/>
        <source>Язык</source>
        <translation>Language</translation>
    </message>
    <message utf8="true">
        <location filename="proga1.ui" line="156"/>
        <source>Справка</source>
        <translation>Help</translation>
    </message>
    <message utf8="true">
        <location filename="proga1.ui" line="173"/>
        <source>Русский</source>
        <translation>Russian</translation>
    </message>
    <message utf8="true">
        <location filename="proga1.ui" line="181"/>
        <source>Английский</source>
        <translation>English</translation>
    </message>
    <message utf8="true">
        <location filename="proga1.ui" line="186"/>
        <source>О программе</source>
        <translation>About programm</translation>
    </message>
    <message utf8="true">
        <location filename="proga1.ui" line="191"/>
        <source>Об авторе</source>
        <translation>About author</translation>
    </message>
    <message>
        <location filename="proga1.ui" line="199"/>
        <source>Ctrl+Q</source>
        <translation>Ctrl+Q</translation>
    </message>
    <message utf8="true">
        <location filename="proga1.ui" line="204"/>
        <source>Помощь</source>
        <translation>Help</translation>
    </message>
    <message utf8="true">
        <location filename="proga1.ui" line="209"/>
        <source>Открыть log-файл</source>
        <translation>Open log-file</translation>
    </message>
    <message>
        <location filename="proga1.cpp" line="28"/>
        <source>Введенное количество секунд </source>
        <translation>The entered number of seconds</translation>
    </message>
    <message>
        <location filename="proga1.cpp" line="28"/>
        <source> соответствует </source>
        <translation>matches</translation>
    </message>
    <message>
        <location filename="proga1.cpp" line="28"/>
        <source> часам, </source>
        <translation>hours</translation>
    </message>
    <message>
        <location filename="proga1.cpp" line="28"/>
        <source> минутам, </source>
        <translation>minutes</translation>
    </message>
    <message>
        <location filename="proga1.cpp" line="28"/>
        <source> секундам</source>
        <translation>seconds</translation>
    </message>
</context>
</TS>

eng.ts
Код:
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS>
<TS version="2.0" language="ru_RU" sourcelanguage="en_US">
<context>
    <name>About</name>
    <message utf8="true">
        <location filename="proga1_about.ui" line="26"/>
        <source>О программе</source>
        <translation></translation>
    </message>
    <message utf8="true">
        <location filename="proga1_about.ui" line="41"/>
        <source>Закрыть</source>
        <translation></translation>
    </message>
    <message utf8="true">
        <location filename="proga1_about.ui" line="54"/>
        <source>Программа переводит заданные с клавиатуры</source>
        <translation></translation>
    </message>
    <message utf8="true">
        <location filename="proga1_about.ui" line="67"/>
        <source>секунды в вид ЧЧ:ММ:СС</source>
        <translation></translation>
    </message>
</context>
<context>
    <name>Author</name>
    <message utf8="true">
        <location filename="proga1_author.ui" line="35"/>
        <source>Об авторе</source>
        <translation></translation>
    </message>
    <message utf8="true">
        <location filename="proga1_author.ui" line="50"/>
        <source>Закрыть</source>
        <translation></translation>
    </message>
    <message utf8="true">
        <location filename="proga1_author.ui" line="63"/>
        <source>Автор программы: </source>
        <translation></translation>
    </message>
    <message utf8="true">
        <location filename="proga1_author.ui" line="76"/>
        <source>Мухин Денис Михайлович</source>
        <translation></translation>
    </message>
    <message utf8="true">
        <location filename="proga1_author.ui" line="89"/>
        <source>студент группы ВМ-21</source>
        <translation></translation>
    </message>
    <message utf8="true">
        <location filename="proga1_author.ui" line="102"/>
        <source>2009 год</source>
        <translation></translation>
    </message>
</context>
<context>
    <name>Help</name>
    <message utf8="true">
        <location filename="proga1_help.ui" line="14"/>
        <source>Помощь</source>
        <translation></translation>
    </message>
    <message utf8="true">
        <location filename="proga1_help.ui" line="26"/>
        <source>Закрыть</source>
        <translation></translation>
    </message>
</context>
<context>
    <name>MainWindow</name>
    <message utf8="true">
        <location filename="proga1.ui" line="32"/>
        <source>Программа №1 :)</source>
        <translation></translation>
    </message>
    <message utf8="true">
        <location filename="proga1.ui" line="86"/>
        <source>Рассчитать</source>
        <translation></translation>
    </message>
    <message utf8="true">
        <location filename="proga1.ui" line="99"/>
        <location filename="proga1.ui" line="196"/>
        <source>Выход</source>
        <translation></translation>
    </message>
    <message utf8="true">
        <location filename="proga1.ui" line="112"/>
        <source>Введите количество секунд</source>
        <translation></translation>
    </message>
    <message utf8="true">
        <location filename="proga1.ui" line="125"/>
        <source>Результат работы программы</source>
        <translation></translation>
    </message>
    <message utf8="true">
        <location filename="proga1.ui" line="141"/>
        <source>Файл</source>
        <translation></translation>
    </message>
    <message utf8="true">
        <location filename="proga1.ui" line="149"/>
        <source>Язык</source>
        <translation></translation>
    </message>
    <message utf8="true">
        <location filename="proga1.ui" line="156"/>
        <source>Справка</source>
        <translation></translation>
    </message>
    <message utf8="true">
        <location filename="proga1.ui" line="173"/>
        <source>Русский</source>
        <translation></translation>
    </message>
    <message utf8="true">
        <location filename="proga1.ui" line="181"/>
        <source>Английский</source>
        <translation></translation>
    </message>
    <message utf8="true">
        <location filename="proga1.ui" line="186"/>
        <source>О программе</source>
        <translation></translation>
    </message>
    <message utf8="true">
        <location filename="proga1.ui" line="191"/>
        <source>Об авторе</source>
        <translation></translation>
    </message>
    <message>
        <location filename="proga1.ui" line="199"/>
        <source>Ctrl+Q</source>
        <translation></translation>
    </message>
    <message utf8="true">
        <location filename="proga1.ui" line="204"/>
        <source>Помощь</source>
        <translation></translation>
    </message>
    <message utf8="true">
        <location filename="proga1.ui" line="209"/>
        <source>Открыть log-файл</source>
        <translation></translation>
    </message>
    <message>
        <location filename="proga1.cpp" line="28"/>
        <source>Введенное количество секунд </source>
        <translation></translation>
    </message>
    <message>
        <location filename="proga1.cpp" line="28"/>
        <source> соответствует </source>
        <translation></translation>
    </message>
    <message>
        <location filename="proga1.cpp" line="28"/>
        <source> часам, </source>
        <translation></translation>
    </message>
    <message>
        <location filename="proga1.cpp" line="28"/>
        <source> минутам, </source>
        <translation></translation>
    </message>
    <message>
        <location filename="proga1.cpp" line="28"/>
        <source> секундам</source>
        <translation></translation>
    </message>
</context>
</TS>

и еще... при запуске приложения в кутэкреаторе, при переключении языков, в окне "консоль приложения" появляется такое сообщение:
Код:
A?ocei ?onneee ia?aaia
хотелось бы бы понять, о чем речь, т.е. как сделать, чтоб было на русском, ну или хотя бы на английском
« Последнее редактирование: Декабрь 11, 2009, 14:47 от Den2009 » Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #7 : Декабрь 11, 2009, 17:39 »

1. Дай сюда вывод qDebug() << translator.load("rus.qm",".");
2. Пропиши полный путь, т.е. translator.load("c:\path_to_file\rus.qm");

A?ocei ?onneee ia?aaia как раз и есть твое "Грузим русский перевод" только в другой кодировке. Поэтому не рекомендую использовать в коде кирилических символов.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
Den2009
Гость
« Ответ #8 : Декабрь 11, 2009, 20:42 »

3. Написал на английском, теперь пишет load english или load russian
2. Прописал полный путь - результат тот же
1. Как это сделать? я до сих пор не могу понять, как реализовать отслеживание переменных в креаторе
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #9 : Декабрь 12, 2009, 08:43 »

Так и делаешь:
qDebug() << translator.load("rus.qm",".");
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
Den2009
Гость
« Ответ #10 : Декабрь 12, 2009, 09:31 »

выводит true при переключении и на русский и на английский
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #11 : Декабрь 12, 2009, 09:38 »

Значит перевод подгружается.
Почитай в ассистенте про void QCoreApplication::installTranslator ( QTranslator * translationFile )   [static]
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
Den2009
Гость
« Ответ #12 : Декабрь 12, 2009, 13:54 »

у меня ассистент при запуске выдает "cannot load sqlite database driver!" хз, в чем дело... интернет результатов не дал
Записан
Den2009
Гость
« Ответ #13 : Декабрь 12, 2009, 23:16 »

глянул код формы, сгенерированной дизайнером, смутило то, что вместо нормальных букв в названиях кнопок, полей и т.п., какие-то цифры:
Код:
 void retranslateUi(QMainWindow *MainWindow)
    {
        MainWindow->setWindowTitle(QApplication::translate("MainWindow", "\320\237\321\200\320\276\320\263\321\200\320\260\320\274\320\274\320\260 \342\204\2261 :)", 0, QApplication::UnicodeUTF8));
        kn_rus->setText(QApplication::translate("MainWindow", "\320\240\321\203\321\201\321\201\320\272\320\270\320\271", 0, QApplication::UnicodeUTF8));
        kn_eng->setText(QApplication::translate("MainWindow", "\320\220\320\275\320\263\320\273\320\270\320\271\321\201\320\272\320\270\320\271", 0, QApplication::UnicodeUTF8));
        kn_about->setText(QApplication::translate("MainWindow", "\320\236 \320\277\321\200\320\276\320\263\321\200\320\260\320\274\320\274\320\265", 0, QApplication::UnicodeUTF8));
        kn_author->setText(QApplication::translate("MainWindow", "\320\236\320\261 \320\260\320\262\321\202\320\276\321\200\320\265", 0, QApplication::UnicodeUTF8));
        kn_exit->setText(QApplication::translate("MainWindow", "\320\222\321\213\321\205\320\276\320\264 (Ctrl+Q)", 0, QApplication::UnicodeUTF8));
        kn_exit->setShortcut(QApplication::translate("MainWindow", "Ctrl+Q", 0, QApplication::UnicodeUTF8));
        kn_help->setText(QApplication::translate("MainWindow", "\320\237\320\276\320\274\320\276\321\211\321\214 (F1)", 0, QApplication::UnicodeUTF8));
        kn_help->setShortcut(QApplication::translate("MainWindow", "F1", 0, QApplication::UnicodeUTF8));
        kn_log->setText(QApplication::translate("MainWindow", "\320\236\321\202\320\272\321\200\321\213\321\202\321\214 log-\321\204\320\260\320\271\320\273", 0, QApplication::UnicodeUTF8));
#ifndef QT_NO_WHATSTHIS
        spinBox->setWhatsThis(QString());
#endif // QT_NO_WHATSTHIS
        pushButton->setText(QApplication::translate("MainWindow", "\320\240\320\260\321\201\321\201\321\207\320\270\321\202\320\260\321\202\321\214", 0, QApplication::UnicodeUTF8));
        pushButton_2->setText(QApplication::translate("MainWindow", "\320\222\321\213\321\205\320\276\320\264", 0, QApplication::UnicodeUTF8));
        label->setText(QApplication::translate("MainWindow", "\320\222\320\262\320\265\320\264\320\270\321\202\320\265 \320\272\320\276\320\273\320\270\321\207\320\265\321\201\321\202\320\262\320\276 \321\201\320\265\320\272\321\203\320\275\320\264", 0, QApplication::UnicodeUTF8));
        label_2->setText(QApplication::translate("MainWindow", "\320\240\320\265\320\267\321\203\320\273\321\214\321\202\320\260\321\202 \321\200\320\260\320\261\320\276\321\202\321\213 \320\277\321\200\320\276\320\263\321\200\320\260\320\274\320\274\321\213", 0, QApplication::UnicodeUTF8));
        menu->setTitle(QApplication::translate("MainWindow", "\320\244\320\260\320\271\320\273", 0, QApplication::UnicodeUTF8));
        menu_2->setTitle(QApplication::translate("MainWindow", "\320\257\320\267\321\213\320\272", 0, QApplication::UnicodeUTF8));
        menu_3->setTitle(QApplication::translate("MainWindow", "\320\241\320\277\321\200\320\260\320\262\320\272\320\260", 0, QApplication::UnicodeUTF8));
    } // retranslateUi
это нормально?
Записан
Den2009
Гость
« Ответ #14 : Декабрь 13, 2009, 00:04 »

вобщем, вот...

как я понял, файл перевода не генерируется... а почему?
Записан
Страниц: [1] 2 3 ... 6   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.073 секунд. Запросов: 23.