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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Русские названия стандартных кнопок  (Прочитано 15769 раз)
alex12
Гость
« : Января 29, 2007, 16:28 »

Всем привет!

Никак не могу найти, как сделать чтобы в названии стандартных кнопок были русские названия (Да, Нет, Отмена и.т.д)?

[Qt 4.2.2 MinGW]

Код:

int ret = QMessageBox::question(this, "Название",
                   "Вопрос ?",
                   QMessageBox::Yes | QMessageBox::No,
                   QMessageBox::No);
Записан
Dendy
Гость
« Ответ #1 : Января 29, 2007, 16:33 »

Добавь в проект транслятор из: qtdir/translations/qt_ru.qm
Записан
alex12
Гость
« Ответ #2 : Января 29, 2007, 18:36 »

Вроде я выкрутился так:
Код:

QMessageBox mb(   app_header, tr("Утвердить?"),
                     QMessageBox::Warning,
                     QMessageBox::Yes,
                     QMessageBox::No | QMessageBox::Default | QMessageBox::Escape ,
                     QMessageBox::NoButton  );
    mb.setButtonText(QMessageBox::Yes, tr("Да"));
    mb.setButtonText(QMessageBox::No, tr("Отмена"));
    if( mb.exec() == QMessageBox::Yes )



Цитировать

Добавь в проект транслятор из: qtdir/translations/qt_ru.qm


Странно, но не работает. Подозреваю, что нужно  перекомпелировать qt4gui.dll. Ведь сами русские слова явно лежат не в моем проекте а в там.
Записан
Dendy
Гость
« Ответ #3 : Января 29, 2007, 19:37 »

Ничего не нужно перекомпилировать. ВьІ просто не до конца разобрались как работает система трансляций Qt. Все переводьІ подгружаются на лету. Можно хоть через год перевести свою программу на китайский при етом ничего не перекомпилируя.

Русские слова лежат не "там" (кстати, где "там"?), а в файле qt_ru.qm. Добавить перевод самой Qt на русский и динамически его менять на любой другой не перезапуская программу - через QTranslator.

Код:
QTranslator * qt_translator = new QTranslator;
if ( !qt_translator->load( "qt_ru.qm" ) )
{
  delete qt_translator;
  return false;
}

qApp->installTranslator( qt_translator );

..
// install additional translators for your application
..
return true;
Записан
alex12
Гость
« Ответ #4 : Января 30, 2007, 12:35 »

Да. Наверно я не прав. Завтра поразбираюсь.

добавлено спустя 12 часов 59 минут:

 У меня получилось так:

В файле ресурсов добавил qt_ru.qm:
Код:

<RCC>
    <qresource prefix="/icons" >
        <file>icons/preferences.png</file>
        <file>icons/printer.png</file>
    </qresource>
    <qresource prefix="/tr" >
        <file>qt_ru.qm</file>
    </qresource>
</RCC>


А в main():
Код:

    QTranslator *qt_translator = new QTranslator;
    if ( qt_translator->load( ":tr/qt_ru.qm" ) )
    { application->installTranslator( qt_translator );
    }


Остался только вопрос: можно ли qt_ru.qm подцеплять из QTDIR, а не из каталога проекта?
Записан
Dendy
Гость
« Ответ #5 : Января 30, 2007, 18:13 »

В дебаге подцепляй откуда хош. Только вот на результирующей машине QTDIR может и не бьІть.
Записан
alex12
Гость
« Ответ #6 : Января 31, 2007, 11:28 »

Цитировать
В дебаге подцепляй откуда хош. Только вот на результирующей машине QTDIR может и не бьІть.

Я немного не про это.

В релизе qt_ru.qm загружается из ресурса. Я имел в виду при компиляции как прописать брать файл из QTDIR чтобы запихнуть его в ресурсы. Кстати может он как ресурс уже есть в qt-шных dll-ках?
Записан
Dendy
Гость
« Ответ #7 : Января 31, 2007, 13:31 »

Как ресурс в DLL его нет. Потому что количество переводов неограничено, прибивать гвоздями в DLL гибкое решение никто не будет. Если надо - берите трансляцию на нужньІе язьІки, пихайте в исполняемьІй файл, файловую систему, архив, хоть по сети подгружайте нужньІй язьІк - никто не ограничивает в вариантах.

Мой совет - просто скопируйте файл себе в проект как ресурс. Под линуксом - поставьте символическую ссьІлку.
Записан
alex12
Гость
« Ответ #8 : Января 31, 2007, 13:34 »

Ок. Спасибо.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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