我使用Qt在iOS中制作多语言应用程序。
我使用" .ts"和" .qm"文件翻译文本。
ios中的QComboBox有2个按钮无法翻译。
ts文件需要一个类名,但是我无法在qt源的任何类中找到这两个单词。
答案 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目录中。
例如,要切换到德语,您需要切换两个翻译器:
请参阅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));
}
}