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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Смена языка приложения на лету между исходными текстами и _ru.qm  (Прочитано 4402 раз)
__Heaven__
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2130



Просмотр профиля
« : Февраль 03, 2015, 17:53 »

Привет всем. Вычитал, что для переключения языка без перезагрузки приложения необходимо сделать:
Код
C++ (Qt)
void MainWindow::SwitchLanguage()
{
   QTranslator translator;
   translator.load("rus.qm",".");
   qApp->installTranslator(&translator);
   ui.retranslateUi(this);
}
Всё круто, но что делать, если я хочу английский?
Записан
Old
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4350



Просмотр профиля
« Ответ #1 : Февраль 03, 2015, 18:06 »

А что, так работает?
Не должно. Улыбающийся
Записан
__Heaven__
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2130



Просмотр профиля
« Ответ #2 : Февраль 03, 2015, 18:15 »

Не проверял. У меня работает мой код:
Код
C++ (Qt)
       QTranslator translator;
       translator.load("master_ru");
       qApp->installTranslator(&translator);
       ui->retranslateUi(this);
 
Записан
__Heaven__
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2130



Просмотр профиля
« Ответ #3 : Февраль 03, 2015, 18:17 »

Вообще мне не нравится вызов деструктора для translator.
Правильно ли будет вынести в глобальные переменные указатель на translator?
Записан
Old
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4350



Просмотр профиля
« Ответ #4 : Февраль 03, 2015, 18:21 »

Вообще мне не нравится вызов деструктора для translator.
Правильно ли будет вынести в глобальные переменные указатель на translator?
Почему не нравится?
Вроде все логично: удалили старый транслятор, создали и загрузили новый, обновили ui.
Записан
__Heaven__
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2130



Просмотр профиля
« Ответ #5 : Февраль 03, 2015, 18:29 »

В моём коде нет действия "удалили старый транслятор"

Я имел в виду, что после ui->retranslateUi(this); следует деструктор для QTranslator translator неявно. Это же получается, что у меня стандартные диалоги, вызванные в будущем переведены не будут.
Записан
Old
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4350



Просмотр профиля
« Ответ #6 : Февраль 03, 2015, 18:33 »

В моём коде нет действия "удалили старый транслятор"

Я имел в виду, что после ui->retranslateUi(this); следует деструктор для QTranslator translator неявно. Это же получается, что у меня стандартные диалоги, вызванные в будущем переведены не будут.
Да, поэтому я и предлагаю создавать его динамически.
Записан
__Heaven__
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2130



Просмотр профиля
« Ответ #7 : Февраль 03, 2015, 18:38 »

Думал об этом.
Получается, нет необходимости создавать транслятор в main.cpp? Почему-то меня заклинило, что он там должен быть.
Записан
Alex Custov
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2063


Просмотр профиля
« Ответ #8 : Февраль 03, 2015, 18:39 »

Всё круто, но что делать, если я хочу английский?

Удалить старый транслятор и не устанавливать новый? Текст на формах станет оригинальным, т.е. английским.
Записан
Alex Custov
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2063


Просмотр профиля
« Ответ #9 : Февраль 03, 2015, 18:40 »

Получается, нет необходимости создавать транслятор в main.cpp? Почему-то меня заклинило, что он там должен быть.

Конечно. Нужно только где-нибудь хранить указатель на него когда потребуется сделать removeTranslator().
Записан
__Heaven__
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2130



Просмотр профиля
« Ответ #10 : Февраль 03, 2015, 19:10 »

Спасибо. Что-то смутил пример из доков...

Создаю в конструкторе класса транслятор, далее только дергаю removeTranslator и installTranslator
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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