【发布时间】:2013-01-03 08:36:21
【问题描述】:
我正在使用 Qt 语言学家翻译 ui 文件。我使用lupdate 获得了它的ts 文件,并翻译了这些单词和短语。现在我想将它添加到我的代码中,但我从它的教程中发现,我似乎必须将tr() 添加到我的代码中的每个单词和短语中。我理解正确吗?我可以只加载翻译后的qm 文件进行翻译吗?如果是这样,我该如何在这个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,但不能转换为执行后的警告/消息框。
【问题讨论】:
标签: qt user-interface translation linguistics