无法翻译QComboBox"取消"和"完成" iOs中的按钮

时间:2018-03-05 08:16:23

标签: ios iphone qt qcombobox

我使用Qt在iOS中制作多语言应用程序。

我使用" .ts"和" .qm"文件翻译文本。

ios中的QComboBox有2个按钮无法翻译。

ts文件需要一个类名,但是我无法在qt源的任何类中找到这两个单词。

enter image description here

2 个答案:

答案 0 :(得分:0)

使用测试源代码:

int main(int argc, char *argv[])
int main(int argc, char *argv[])
{
  QApplication a(argc, argv);

  QWidget w;

  QLabel lb("你的年龄:", &w);

  QComboBox cmb(&w);
  QStringList sl;
  sl << "10-19岁" << "20-29岁" << "30-39岁";
  cmb.addItems(sl);

  QHBoxLayout *hl = new QHBoxLayout(&w);
  hl->addWidget(&lb);
  hl->addWidget(&cmb);

  w.show();

  return a.exec();
}

在iPhone中运行应用: running UI 单击QComboBox,它将显示为“完成”和“取消”按钮的iPhone样式。 when QComboBox expanded

我想翻译这2个按钮,我该怎么做?

答案 1 :(得分:0)

认为取消和完成翻译都在Qt翻译中。我认为你的app字符串需要一个QTranslator,Qt库字符串需要一个QTranslator。

qt _ * .qm文件位于您的Qt目录中。

例如,要切换到德语,您需要切换两个翻译器:

  • myapp_de.qm
  • qt_de.qm

enter image description here

请参阅loadLanguage()设置两个QTranslator,一个用于app,一个用于Qt。

    // Called every time, when a menu entry of the language menu is called
void MainWindow::slotLanguageChanged(QAction* action)
{
 if(0 != action) {
  // load the language dependant on the action content
  loadLanguage(action->data().toString());
  setWindowIcon(action->icon());
 }
}

void switchTranslator(QTranslator& translator, const QString& filename)
{
 // remove the old translator
 qApp->removeTranslator(&translator);

 // load the new translator
 if(translator.load(filename))
  qApp->installTranslator(&translator);
}

void MainWindow::loadLanguage(const QString& rLanguage)
{
 if(m_currLang != rLanguage) {
  m_currLang = rLanguage;
  QLocale locale = QLocale(m_currLang);
  QLocale::setDefault(locale);
  QString languageName = QLocale::languageToString(locale.language());
  switchTranslator(m_translator, QString("TranslationExample_%1.qm").arg(rLanguage));
  switchTranslator(m_translatorQt, QString("qt_%1.qm").arg(rLanguage));
  ui.statusBar->showMessage(tr("Current Language changed to %1").arg(languageName));
 }
}