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

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

Страниц: [1] 2 3   Вниз
  Печать  
Автор Тема: Динамическая смена языка прораммы  (Прочитано 28535 раз)
Admin
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 1988



Просмотр профиля
« : Июль 27, 2005, 10:40 »

Кто нибуть делал следущее:

В меню программы можно менять язык менюшек, диалогов

но все это не перезапуская программу?
Записан
lepsai
Гость
« Ответ #1 : Июль 27, 2005, 11:23 »

делал - я Улыбающийся

смена языка происxодит за счёт смены транслятора:

qApp->removeTranslator( m_pTranslator );
fOK = m_pTranslator->load( apppath + QString("ipes_de.qm"));
qApp->installTranslator( m_pTranslator );
Записан
Sergeich
Гость
« Ответ #2 : Июль 27, 2005, 11:45 »

Цитата: "lepsai"
делал - я Улыбающийся

смена языка происxодит за счёт смены транслятора:

А потом ничего апдейтить не надо?
Записан
lepsai
Гость
« Ответ #3 : Июль 27, 2005, 11:46 »

не, не надо
Записан
Admin
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 1988



Просмотр профиля
« Ответ #4 : Июль 27, 2005, 12:57 »

спасибо Улыбающийся
Записан
Admin
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 1988



Просмотр профиля
« Ответ #5 : Июль 27, 2005, 22:46 »

сделал как ты написал

был english
сделал russian
а вот как вернуть обратно в english не понятно
ведь файла то нет

english как бы в формах сидит
Записан
lepsai
Гость
« Ответ #6 : Июль 27, 2005, 22:48 »

:

if(pAction->text() == "English")
{
   qApp->removeTranslator( m_pTranslator );
   qApp->removeTranslator( &defru );
   qApp->removeTranslator( &defde );
   m_pTranslator->clear();
}
Записан
Admin
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 1988



Просмотр профиля
« Ответ #7 : Июль 28, 2005, 07:54 »

m_pTranslator->clear();

во наверно то что нужно
Записан
DenKa
Гость
« Ответ #8 : Апрель 09, 2007, 20:49 »

Цитата: "Admin"
m_pTranslator->clear();

во наверно то что нужно

А как быть в QT4?
Записан
noosooth
Гость
« Ответ #9 : Апрель 09, 2007, 21:33 »

Судя по исходникам, метод clear() теперь живет в классе QTranslatorPrivate, и вызывается внутри QTranslator::load(...).
Для перехода обратно на английский можно попробовать тупо загрузить заведомо несуществующий файл перевода.
SLiDER уже писал об этом "кривом" способе вот здесь. (Последнее сообщение в ветке)
Записан
DenKa
Гость
« Ответ #10 : Апрель 09, 2007, 22:09 »

Код:

if (rus)
{
translator.load("spreadsheet_ru");
     qApp->installTranslator(&translator);
}
else
{
translator.load("spreadsheet_error"); // файла нет
qApp->installTranslator(&translator);
}

Также не помогает
Записан
QCasper
Гость
« Ответ #11 : Апрель 09, 2007, 23:59 »

Книга Бланшета, глава 17, Dynamic Language switching.
Записан
victor.yacovlev
Гость
« Ответ #12 : Март 07, 2008, 17:12 »

После этого нужно заново пересоздать формы и пр.
Вариант решения: вынести установку текстов в отдельные методы типа updateLanguage() для всех классов и вызывать эти методы при смене языка.
Записан
Delphin
Гость
« Ответ #13 : Октябрь 21, 2008, 09:38 »

В главном окне все ок работает, но например есть класс от Qbject в нем я пытаюсь поймать событие и сделать смену языка.
void RecentsManager::changeEvent(QEvent *event) {
   if (event->type() == QEvent::LanguageChange)
      retranslateUi();
}

не тут то было. такое чувство что событие LanguageChange, не генерируется при вызове метода load QTranslator.
В чем может быть загвоздка???
Записан
lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #14 : Октябрь 21, 2008, 10:12 »

2 Delphin, а почему ты решил, что при вызове метода load QTranslator должно генерироватся событие?
Записан

Юра.
Страниц: [1] 2 3   Вверх
  Печать  
 
Перейти в:  


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