我正在使用 Qt 语言学家翻译ui
文件。我ts
使用 获得了它的文件lupdate
,并翻译了这些单词和短语。现在我想将它添加到我的代码中,但我从它的教程中发现似乎我必须添加tr()
到我的代码中的每一个单词和短语中。我理解正确吗?我可以只加载翻译qm
文件一次进行翻译吗?如果是这样,我该如何在这个ui
文件中做到这一点?
提前致谢。
更新
在更改 Jens 提到的属性后,在我的 ui 头文件中,我可以看到如下语句:
buttonSetupData->setText(QApplication::translate("MainWindow", "Set Data", 0, QApplication::UnicodeUTF8));
在 Ajith 的回答之后,我更改了代码,现在我retranslateUi
在ui_main.h
文件中的函数如下所示:
void retranslateUi ( QMainWindow *MainWindow )
{
QTranslator translator;
translator.load ( " ...\Test.ts " );
QApplication::installTranslator ( &translator );
MainWindow->setWindowTitle ( QApplication::translate ("MainWindow", "The Sentioscope - Beta v2.0 for Soccer", 0, QApplication::UnicodeUTF8));
...
}
但它仍然没有工作。
最近更新
我当前读取“.qm”文件的功能是这样的:
void MainWindow::translate()
{
QTranslator translator;
translator.load ( "Test.qm", "D:\\" );
qApp->installTranslator ( &translator );
retranslateUi ( this );
}
然后我这样调用这个函数:
MainWindow::MainWindow ( QWidget *parent ) : QMainWindow ( parent )
{
setupUi(this);
translate();
}
在 Ajith 的最新回答之后,我以这种形式更改了警告/消息框的每个字符串(例如):
QMessageBox::warning( this, QMessageBox::tr("ERROR"), QMessageBox::tr("Invalid IP adress") );
通过lupdate
我可以读取所有这些字符串,翻译并将它们保存在一个 qm 文件中。现在的问题是,它可以将这些字符串转换为 ui,但不能在执行后转换为警告/消息框。