QTranslator 仅适用于我的程序的某些部分
Posted
技术标签:
【中文标题】QTranslator 仅适用于我的程序的某些部分【英文标题】:QTranslator only works in some parts of my program 【发布时间】:2012-08-21 20:31:09 【问题描述】:我在翻译我的 qt 应用程序(Windows 上的 qt 4.7.4)时遇到了一个奇怪的问题。 会发生以下情况:
1.- 我执行 lupdate 并生成一个 .ts 文件。
2.- 我用 qt linguist 编辑生成的 .ts 文件。
3.- 我用之前的 .ts 文件执行 lrelease。
4.- 从 Netbeans,我清理并构建项目,然后运行它。
当我的应用程序运行时,大多数小部件(标签、按钮、标题、菜单操作、菜单)都会根据我之前生成的翻译文件进行翻译。问题是一些元素没有被翻译,尽管我在翻译文件中为它们提供了翻译(Qt Linguist 识别它们)。
我的问题是:为什么有些文本被翻译而另一些被忽略是有原因的吗?
我确保每个文本都在 tr() 中。 (正如我之前所说,它们都出现在 Qt Linguist 中)。
感谢大家的帮助。
【问题讨论】:
而且您还确保每次出现的 tr 都会在安装翻译器后被调用? 嗨@KamilKlimek,翻译器安装在主函数中。在调用翻译器之后,我调用了我的 mainWindow 类,并且在所有失败的地方,QMainWindow 没有被翻译:S 应用程序的其余部分是。不知道是什么问题 您必须向我们提供重现您的问题的最小代码示例。 【参考方案1】:所以它只适用于 Linux,不适用于 mingw32/mingw64
main.cpp
#include <QtGui/QApplication>
#include "test_w32.h"
#include <QTranslator>
#include <QLocale>
int main(int argc, char** argv)
QApplication app(argc, argv);
QString locale = QLocale::system().name();
QTranslator translator;
translator.load(QString("test_w32_") +locale);
app.installTranslator(&translator);
test_w32 foo;
foo.show();
return app.exec();
test_w32.h
#ifndef test_w32_H
#define test_w32_H
#include <QtGui/QMainWindow>
class test_w32 : public QMainWindow
Q_OBJECT
public:
test_w32();
virtual ~test_w32();
;
#endif // test_w32_H
test_w32.cpp
#include "test_w32.h"
#include <QtGui/QLabel>
#include <QtGui/QMenu>
#include <QtGui/QMenuBar>
#include <QtGui/QAction>
test_w32::test_w32()
QLabel* l = new QLabel( this );
l->setText(trUtf8( "Hello World!" ));
setCentralWidget( l );
QAction* a = new QAction(this);
a->setText(trUtf8( "Quit" ));
connect(a, SIGNAL(triggered()), SLOT(close()) );
menuBar()->addMenu(trUtf8( "File" ))->addAction( a );
test_w32::~test_w32()
#include "test_w32.moc"
有什么问题? 谢谢
【讨论】:
以上是关于QTranslator 仅适用于我的程序的某些部分的主要内容,如果未能解决你的问题,请参考以下文章
Cloudkit 身份验证仅适用于我的 alt 帐户,不适用于 Dev 或 Tester 帐户
onchange = "Form.submit() 仅适用于我的下拉菜单中的第一个子下拉菜单