Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Смена языка интерфейса

5.7K
07 октября 2011 года
Lindemann66
193 / / 21.07.2011
Ещё раз привет всем!

Вопрос следующий

Необходимо сменить язык интерфейса во время работы с программой без её перезапуска
Слоты смены языка выглядят следующим образом:
Код:
void SettingsForm::ChangeToRus() {
    //меняем язык на русский
    QTranslator translator;
    translator.load("main_ru.qm", ".");
    qApp->installTranslator(&translator);
}

void SettingsForm::ChangeToEng() {
    //меняем язык на английский
    QTranslator translator;
    translator.load("main_ru.qm", ".");
    qApp->removeTranslator(&translator);
}


Но, на интерфейсе это никаким образом не сказывается

Вопрос - динамическая смена языка интерфейса возможна и выполняется так, как я написал, и ошибка где-то у меня, либо нужны какие-то дополнительные действия?

буду благодарен за любые ответы!
14
08 октября 2011 года
Phodopus
3.3K / / 19.06.2008
ну как минимум код методов должен быть неодинаковым
278
08 октября 2011 года
Alexander92
1.1K / / 04.08.2008
Поменяйте в SettingsForm::ChangeToEng() "main_ru.qm" на "main_en.qm" для начала. :)
277
08 октября 2011 года
arrjj
1.7K / / 26.01.2011
На qt - wiki сказано:
Loading and installing a new translator is rather straigthforward, but already existent widgets will not react anyhow unless they have been made aware of possible dynamic language changes.

У дизайнер-форм есть св-во ui.retranslateUi(this);

Для виджетов, кнопок, менюшек и пр., добавленного ручками надо самому вызывать setText(tr("blah-blah-blah"));
Можно конечно какую-нибудь ф-ю написать для быстрого перевода типа
 
Код:
void retranslate(QObject * parent)
{
QList<QPushButton *> buttons = parent.findChildren<QPushButton *>();
for(int x=0;x<buttons.size;x+=1)
{
buttons[x]->setText(tr(buttons[x]->text());
retranslate(buttons[x]);
}
//И так для всех классов что у тебя в gui используются
}

с англицкого на русский она переведет, а вот назад - хз :)
5.7K
08 октября 2011 года
Lindemann66
193 / / 21.07.2011
Спасибо, буду пробовать! :)
5.7K
10 октября 2011 года
Lindemann66
193 / / 21.07.2011
Цитата: Alexander92
Поменяйте в SettingsForm::ChangeToEng() "main_ru.qm" на "main_en.qm" для начала. :)



ну main_en.qm у меня нет, ибо английский - это язык по умолчанию

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог