Unsolved QDialog content not being translated
-
Hi @Pablo-J-Rogina thanks for your reply, tried this but nothing happens.
-
@Jayant
Sorry to butt in, but: are you usingtr("...")
like @Pablo-J-Rogina shows? In which case, I would have thought dialogs/menus/whatever is irrelevant,tr()
istr()
and either works or does not regardless of where it happens to be called from? -
@JonB
Yes ofcourse here's my codevoid Dialog::changeEvent(QEvent *e){ if (e->type() == QEvent::LanguageChange) { ui->retranslateUi(this); setWindowTitle(tr("Test Modal Dialog")); ui->label->setText(tr("this is a label")); } else { QWidget::changeEvent(e); } }
-
@Jayant
Well, start by verifying (that this code is hit and) what thetr("...")
s here are actually returning, rather than setting text from them.Also, I don't know, but after your code in the
LanguageChange
case, do you need to still call the baseQWidget::changeEvent(e);
to let it process? (EDIT OK, I see the examples in the docs.) And why are you callingQWidget::changeEvent()
instead ofQDialog::changeEvent()
? -
@JonB
Change QWidget::changeEvent(e) to QDialog::changeEvent(e) but nothing happens -
@Jayant
What are thetr("...")
s returning?
And please just confirm your method is being hit, for all we know it might not be? -
@JonB
You are right this function is not being hit. -
@Jayant
Which is why I asked you that twice! Suggest always verify a function is being hit if you put code into it! :) -
@Jayant that's obvious, as the Dialogs are created on the fly during run.
But if the translations exist, and the translation is loaded correctly, then the new created widget/dialog will also show the appropriate translated text.
You should show some more of your code, and double check that the translation really exists and is the correct one (assigned to the correct source code)
-
@J-Hilk
Translation is loaded correctly because the mainwindow shows up the translated text but the dialog class doesn't. Following code translates the textQCheckBox *checkBox = qobject_cast<QCheckBox *>(sender()); MainWindow *window = mainWindowForCheckBoxMap[checkBox]; if (!window) { QTranslator translator; translator.load(qmFileForCheckBoxMap[checkBox]); qApp->installTranslator(&translator); window = new MainWindow; window->setPalette(colorForLanguage(checkBox->text())); window->installEventFilter(this); mainWindowForCheckBoxMap.insert(checkBox, window); } window->setVisible(checkBox->isChecked());
-
@Jayant
not quite what I had in mind,
Your dialogs, and how they get their textTranslation is loaded correctly because the mainwindow shows up the translated text but the dialog class doesn't. Following code translates the text
I was rather asking if you checked that the translatable strings for your dialog where in your *qm file and correctly assigned.