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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Опциональное изменение перевода  (Прочитано 3670 раз)
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; //Сбросить указатель на текущий перевод.
}


Подскажите, пожалуйста, все ли правильно я понял? Ничего не упустил?
Записан
VPS
Гость
« Ответ #1 : Ноябрь 02, 2014, 00:46 »

Думаю, что в этой книге неплохо написано про создание переводимого интерфейса, в том числе про динамическое переключение языков (глава 18)...
Записан
Yegor
Гость
« Ответ #2 : Ноябрь 03, 2014, 21:24 »

Спасибо! Там хорошо все описано. На деле все сложнее, чем думал.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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