QT5:RetranslateUi不重新翻译视图



我正试图为应用程序添加动态本地化支持,但在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值,并在应用程序加载时对其进行检查,并且重新启动应用程序确实正确地翻译了它,所以我认为我遗漏了一些东西。

我遇到了同样的问题。

事实证明,问题不是来自retranslateUi()方法,也不是来自MainWindow::changeEvent()方法,而是来自处理QTranslator的方式:

您需要致电:

application->removeTranslator(previousTranslator);

之前:

application->installTranslator(translator);

相关内容

  • 没有找到相关文章