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

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

Страниц: 1 [2] 3   Вниз
  Печать  
Автор Тема: Динамическая смена языка прораммы  (Прочитано 28536 раз)
Delphin
Гость
« Ответ #15 : Октябрь 21, 2008, 10:25 »

Так сказано в книге Жасмин Бланшет, Марк Саммерфилд "Qt4 программирование GUI на С++"
Qt генерирует собитие LanguageChage при изменении содержимого объекта QTranslator
так там сказано.
а оно видемо нифига не генирирует.
Вот в том то и вопрос, как сделать динамическое переключение языков не только в главном окне, но и в других классах.
Записан
lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


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

а если просто удалить переводчик? Перевод к исходному состоянию не возвращается?
Записан

Юра.
ритт
Гость
« Ответ #17 : Октябрь 21, 2008, 10:44 »

вроде бы LocaleChange/LanguageChange раздаётся только виджетам...помню, я ещё удивлялся этому, когда код листал, но специально я не проверял...
Записан
Delphin
Гость
« Ответ #18 : Октябрь 21, 2008, 10:46 »

У меня в главном окне сделана менюшка с языками, так вот все если выбираешь язык (неважно какой), то все менюшки заголовки переводятся. кроме этого класса. в этом классе свои менюшки как были на английском так они и остаются на английском. Хотя если тупо менять в методе перевода, на русский язык, менюшки пишутся на русском.
один вывод либо не генрируется событие LanguageChange или обработчик событий RecentsManager::changeEvent(QEvent *event) не работает как положено
Записан
Delphin
Гость
« Ответ #19 : Октябрь 21, 2008, 10:48 »

ага а этот класс у меня собственно от QObject
Записан
Delphin
Гость
« Ответ #20 : Октябрь 21, 2008, 10:51 »

Вот блин,сделал класс предком от QWidget и все заработало. Огромный пасиб. Вег живи век учись Улыбающийся
Записан
ритт
Гость
« Ответ #21 : Октябрь 21, 2008, 12:19 »

я считаю, что это - недочёт, т.к. в консольном приложении вообще не будет виджетов, но installTranslator задекларирован как раз в QCoreApplication...и получается, что нет возможности динамически менять языки, не изобретая велосипеда...
ещё кто-нибудь так считает?

скорее всего, позже создам таску по поводу в трекере троллей...
« Последнее редактирование: Октябрь 21, 2008, 12:20 от Константин » Записан
Delphin
Гость
« Ответ #22 : Октябрь 21, 2008, 12:27 »

в консоли может быть другая политика Улыбающийся Зачем там динамически переключать языки.
Даже не могу представить задачи в которая была бы реализована с помощью консольного приложения и в нем бы нужно было менять динамически языки. Хотя как знать как знать.
Записан
ритт
Гость
« Ответ #23 : Октябрь 21, 2008, 12:43 »

навскидку мне сразу приходит на ум sgd (super grub disk) - там очень удобно, что можно выбрать любой из поддерживаемых языков и не угадывать потом что за кнопочку ты нажал и почему бут-сектор сдох Улыбающийся
Записан
bebe
Гость
« Ответ #24 : Октябрь 24, 2008, 15:49 »

есть у меня похожая заморочка -
создал командой:Lupdate xx.pro файл перевода с переводами сразу для нескольких классов.
подключаю к приложению - перевод срабатывает только для класса, котороый является дочерним от QMainWindow,
в остальных классах нет, хотя они предки от других классов QT - где промахнулся?

Записан
ритт
Гость
« Ответ #25 : Октябрь 24, 2008, 15:58 »

покажи как подключаешь и что за классы...
Записан
bebe
Гость
« Ответ #26 : Октябрь 24, 2008, 17:03 »


QApplication *pSApp; - указатель на объект приложения

pTranslator->load("trans_en.qm",".") - файл грузится, что проверил на работающих переводах
pSApp->installTranslator(pTranslator);
больше ничего не делаю,
я почитал книжку и вразумел, что все команды интерфейса после этого еще надо перевызвать чтобы они обновили перевод..
Записан
ритт
Гость
« Ответ #27 : Октябрь 24, 2008, 17:23 »

создавай объекты после установки транслятора
Записан
ритт
Гость
« Ответ #28 : Октябрь 27, 2008, 11:10 »

я считаю, что это - недочёт, т.к. в консольном приложении вообще не будет виджетов, но installTranslator задекларирован как раз в QCoreApplication...и получается, что нет возможности динамически менять языки, не изобретая велосипеда...
ещё кто-нибудь так считает?

скорее всего, позже создам таску по поводу в трекере троллей...

Цитировать
Also, I don't see the need to update translations
(QEvent::LanguageChange) in a console application. There are no strings
that are persistently visible to the user, everything the user sees is
printed again to the screen when it becomes relevant next time, in
which case tr() is called again with a newly installed or changed
QTranslator.
т.е., попросту говоря, всегда делайте cout << tr(...) и не канифольте моск.
между тем, это не решает задачу, где в гуёвом приложении имеется группа QObject'ов, желающих перевести что-то на опр.событие (например, плагины).
ну, режект - есть режект.
Записан
bebe
Гость
« Ответ #29 : Октябрь 27, 2008, 12:07 »

спасибо ! подумаю - наверно в show() буду перевызывать все сообщения, что требуется переводить  или создам аналогичный свой метод
Записан
Страниц: 1 [2] 3   Вверх
  Печать  
 
Перейти в:  


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