Здравствуйте, уважаемые форумчане!
Хочу спросить у вас о теории, чтобы я знал на будущее, перед тем как кодить.
Например пускай есть приложение, и в нем есть меню, в котором можно переключаться между тремя языками: украинским, русским, английским. После переключения - весь интерфейс приложения сразу переводится.
Переводить нужно
только формы, созданные Qt Designer,
и некоторые строки, которые видно в всплывающих QMessageBox (
я их все по обрамлял tr() ). Изначально все в исходниках написано на английском.
У меня есть 2 файла перевода:
russian.qm,
ukrainian.qmДелаю 2 объекта перевода. И указатель на текущий объект перевода.QTranslator *m_pTranslatorRu = new QTranslator("russian.qm");
QTranslator *m_pTranslatorUkr = new QTranslator("ukrainian.qm");
QTranslator *m_pCurTranslator = NULL
Код для перевода на русский язык://Если уже установлен перевод - то демонтировать его
if(m_pCurTranslator)
QCoreApplication::removeTranslator(m_pCurTranslator);
//Перевести на русский язык.
QCoreApplication::installTranslator(m_pTranslatorRu);
//Запомнить текущий перевод.
m_pCurTranslator = m_pTranslatorRu;
Код перевода на украинский язык://Если уже установлен перевод, то демонтировать его.
if(m_pCurTranslator)
QCoreApplication::removeTranslator(m_pCurTranslator);
//Перевести на украинский язык.
QCoreApplication::installTranslator(m_pTranslatorUkr);
//Запомнить текущий перевод.
m_pCurTranslator = m_pTranslatorUkr;
Код для возврата в исходный язык (непереведенный).if(m_pCurTranslator)
{
QCoreApplication::removeTranslator(m_pCurTranslator); //Деинсталировать текущий перевод.
m_pCurTranslator = NULL; //Сбросить указатель на текущий перевод.
}
Подскажите, пожалуйста, все ли правильно я понял? Ничего не упустил?