我尝试向应用程序添加动态本地化支持,但是在retranslateUi()
上调用MainWindow
时,没有任何内容被翻译。
我在首选项对话框中使用以下代码来设置要使用的本地化:
if(translator.load(QDir::toNativeSeparators("localisation/") + m_localisations.at(ui->languageOptionsBox->currentIndex()).name() + "_v1"))
qDebug() << "Loaded translation";
else
qDebug() << "Translation not loaded";
qApp->installTranslator(&translator);
然后在我的MainWindow
课程中处理更改事件:
void MainWindow::changeEvent(QEvent *event)
{
qDebug() << "Change event";
if(event->type() == QEvent::LanguageChange)
{
qDebug() << "Language Change event";
ui->retranslateUi(this);
}
QMainWindow::changeEvent(event);
}
从retranslateUi()
调用ui_mainwindow.h
函数,但UI未使用正确的语言进行更新,根据调试语句明确加载本地化。翻译绝对有效,因为我将所选值存储为QSettings
值,并在应用程序加载时检查它,重新启动应用程序确实正确翻译它,所以我假设我错过了一些东西。