我正在使用Qt Linguist翻译一个ui文件。我使用lupdate获取了它的ts文件,并翻译了其中的单词和短语。现在我想将其添加到我的代码中,但是从教程中发现似乎我必须在我的代码中每个单词和短语都加上tr()。我理解得对吗?我能否只加载一次已翻译的qm文件进行翻译?如果可以,那么我该如何在这个ui文件中实现呢?
提前致谢。
更新
根据Jens的建议更改属性后,在我的ui头文件中,我可以看到像这样的句子:
提前致谢。
更新
根据Jens的建议更改属性后,在我的ui头文件中,我可以看到像这样的句子:
buttonSetupData->setText(QApplication::translate("MainWindow", "Set Data", 0, QApplication::UnicodeUTF8));
在Ajith的回答之后,我修改了我的代码,现在我的ui_main.h
文件中的retranslateUi
函数如下:
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 中的字符串,而不能翻译执行后出现的警告/消息框中的字符串。