retranslate not updating dynamically in Qt6.2, but ok in Qt5.15
-
Hello,
Translator and retranslate works fine in Qt5.15, but not updating display dynamically when upgrade to Qt6.2; Need to reload qml manually to display translated language.
qml file as follow:
import QtQuick import QtQuick.Controls ApplicationWindow { width: 640 height: 480 visible: true title: qsTr("Hello World") property bool eng: true Column { spacing: 10 Text { text: Tr.ssetWeighCycle } Button { width: 100 height: 44 text: eng ? "English" : "Japanese" onClicked: { eng = !eng if (eng) { translate.selectLanguage(0) } else { translate.selectLanguage(1) } //reload loader2 then translate works loader2.source = "" loader2.source = "panel.qml" } } } Row { spacing: 10 anchors.centerIn: parent Loader { id:loader width: 200 height: 200 source: "panel.qml" } Loader { id:loader2 width: 200 height: 200 source: "panel.qml" } } } -
I always do the translation switch from C++ like this:
Translator::Translator(QQmlEngine *engine) { _translator = new QTranslator(this); _engine = engine; } void Translator::selectLanguage(QString language) { QString path = ":/i18n"; if (!_translator->load(language, "AppName", "_", path, ".qm")) { qDebug() << "Failed to load translation file, falling back to English"; } qApp->installTranslator(_translator); // change default e.g. for dates | decimals QLocale::setDefault(language); // no QML reload required, handled automatically by engine _engine->retranslate(); // if you want to do anything else onLanguageChanged emit languageChanged(); }