我正在尝试为一个应用程序添加动态本地化支持,但是在调用MainWindow
上的retranslateUi()
时,没有任何翻译。
我在首选项对话框中使用下面的代码来设置要使用的本地化:
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
值,并在应用程序加载时进行检查,重新启动应用程序可以正确翻译,因此我认为我错过了某些东西。