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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Русские названия стандартных кнопок  (Прочитано 15433 раз)
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]   Вверх
  Печать  
 
Перейти в:  


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