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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: [solved] Динамическое изменение языка  (Прочитано 6463 раз)
L.Marvell
Гость
« : Ноябрь 02, 2005, 14:54 »

Qt 4.0.1 + MinGW

Нужно из диалогового окна изменить язык прилаги. Подскажите как? Добился того, что нужно выбрать язык, нажать на ОК, потом открыть снова диалог и лишь тогда диалог отображается уже на нововыбранном языке. А в главном окне язык каким был, таким и остался...
Делал так из диалогового окна:
Код:

QTranslator *translator;
translator->load("lang_file", "lang_dir");
qApp->installTranslator(translator);


P.S. Когда писал здесь этот код, то поймал себя на мысли, что пытаюсь использовать автозавершение Улыбающийся
Записан
Admin
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 1988



Просмотр профиля
« Ответ #1 : Ноябрь 02, 2005, 15:34 »

был такой мой топик
но к 3 , модет и там пойдет

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

Сообщений: 1988



Просмотр профиля
« Ответ #2 : Ноябрь 02, 2005, 16:07 »

вот ссылка

http://prog.org.ru/forum/htopic_1621_%D1%DA%D9%CB%2A.html
Записан
L.Marvell
Гость
« Ответ #3 : Ноябрь 02, 2005, 16:08 »

гм... таки да, раньше я искал только по QTranslator, потому и не нашел.
вот http://prog.org.ru/forum/htopic_1621_%D1%DA%D9%CB.html здесь вродь написано, но я чего-то недопонял.
Код:

qApp->removeTranslator( m_pTranslator );
fOK = m_pTranslator->load( apppath + QString("ipes_de.qm"));
qApp->installTranslator( m_pTranslator );

remove мне для начала не нужен, т.к. еще ни один translator не загружен.
Судя по коду m_pTranslator создан как QTranslator *m_pTranslator (у меня так же)
И в приложение он у меня инсталится так же.
Где грабли?.... Грустный
Записан
Admin
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 1988



Просмотр профиля
« Ответ #4 : Ноябрь 02, 2005, 18:22 »

поиск перестроил я сегодня, были проблеммы после переездов по хостингам
Записан
L.Marvell
Гость
« Ответ #5 : Ноябрь 03, 2005, 14:49 »

Так все-таки, люди, помогите разобраться. Не хочет у меня таким способом менять язык сразу, а только после закрытия и открытия заново диалога, притом в главном окне контекстное меню так и остается непереведенным.
Согласно книге  Jasmin Blanchette и Mark Summerfield нужна собственная функция retranslateStrings(), где сконцентрированы все строки подлежащие переводу. Но это для Qt3.x. Или в 4-ке также?
Опишу более детально как у меня.
Есть главное окно, у которого есть контекстное меню с пунктами Settings и Quit. Settings, понятно, открывает диалоговое окно с настройками, где между всего прочего есть QComboBox со списком возможных языков (подгружается, как в экзампле i18n, т.е. смотрить какие есть файлы перевода, исчет строку с названием языка и вставляет в QComboBox). Сигнал activated(int) связан со слотом changeLanguage(int) в котором должна происходить смена языка.
Код:
...::changeLanguage(int item)
{
Qtranslator *translator = new Qtranslator;
translator->load(qmFiles[item]); // qmFiles содержит список файлов перевода
qApp->installTranslator(translator);

Явно что-то делаю не так, но не могу понять что... Помогите разобраться.
Записан
L.Marvell
Гость
« Ответ #6 : Ноябрь 07, 2005, 15:22 »

Мдя... Еще забыл сказать, что диалог сделан в дизайнере. Вобщем оказалось, что есть еще такая полезная функция retranslateUi()
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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