Доброго времени суток всем.
Есть вопрос. Как организовать динамическую смену языков в приложении. Т.е. имеем приложение с несколькими формами, в главном окне имеем меню, в нем есть пункт "Настройка", при выборе которого открывается окно настроек, в нем при помощи комбобокса выбираем "рус." или "англ." жмен баттон "ок" и происходит смена языка. Если у кого есть что-то наподобие или более-менее добротные наброски поделитесь плиз с новичком в этом вопросе.
Единственное есть просьба к Шлее и Бланшет не отправлять...
Можно сделать так. В файле написать нужные названия на английском и русском языках. Распарсить файл, поместить в список, а затем, с помощью setText для каждого элемента поставить нужное название.
А этот метод не устроит http://doc.trolltech.com/latest/tools-i18n.html ?
А еще почитать про этот метод
void QCoreApplication::installTranslator ( QTranslator * translationFile ) [static]
вообще, прочитка ассистанса дала следующий результат: если виджет уже создан, то язык в нем можно менять только ловля ChangeEvent, а в нем уже задавать все tr(). Тогда установка транслятора будет менять язык "на лету".
Может быть, есть еще какие варианты, но я нашел только такой. Его же и реализовал. Главное, не забывать, что два одинаковых tr() косо обрабатываются лингвистом.
Т.е.:
//--------------------------------------------------------------------------------------
void cUPicsConfigPageUI::changeEvent(QEvent *event)
{
if (event->type() == QEvent::LanguageChange) {
setName(tr("User Interface"));
pLFileSizeToThumbName->setText(tr("Maximum size of files to be thumbnailed to show preview"));
pLFileSizeToThumb->setText(tr("File size"));
...
}
else
QWidget::changeEvent(event);
}
Форум Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)