Russian Qt Forum

Qt => Интернационализация, локализация => Тема начата: Yegor от Ноябрь 01, 2014, 21:10



Название: Опциональное изменение перевода
Отправлено: Yegor от Ноябрь 01, 2014, 21:10
Здравствуйте, уважаемые форумчане!

Хочу спросить у вас о теории, чтобы я знал на будущее, перед тем как кодить.

Например пускай есть приложение, и в нем есть меню, в котором можно переключаться между тремя языками: украинским, русским, английским. После переключения - весь интерфейс приложения сразу переводится.

Переводить нужно только формы, созданные 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; //Сбросить указатель на текущий перевод.
}


Подскажите, пожалуйста, все ли правильно я понял? Ничего не упустил?


Название: Re: Опциональное изменение перевода
Отправлено: VPS от Ноябрь 02, 2014, 00:46
Думаю, что в этой (http://www.prog.org.ru/index.php?topic=765.msg67880#msg67880) книге неплохо написано про создание переводимого интерфейса, в том числе про динамическое переключение языков (глава 18)...


Название: Re: Опциональное изменение перевода
Отправлено: Yegor от Ноябрь 03, 2014, 21:24
Спасибо! Там хорошо все описано. На деле все сложнее, чем думал.