Qt4 QTranslator只在我程序的某些部分起作用
我在翻译我的qt应用程序(Windows上的Qt4.7.4)时遇到了一个奇怪的问题。 发生的情况如下: 1.-我执行lupdate并生成一个.ts文件 2.-我使用qt语言专家编辑生成的.ts文件 3.-我使用上一个.ts文件执行lrelease 4.-从Netbeans,我清理并构建项目,然后运行它 当我的应用程序运行时,大多数小部件(标签、按钮、标题、菜单操作、菜单)都会根据我之前生成的翻译文件进行翻译。问题是有些元素没有被翻译,尽管我在翻译文件中为它们提供了翻译(Qt语言学家识别了它们) 我的问题是:为什么有些文本被翻译,而另一些文本被忽视,这有什么原因吗 我已确保每个文本都在tr()中。(正如我之前所说,它们都出现在《Qt语言学家》中)Qt4 QTranslator只在我程序的某些部分起作用,qt4,translation,netbeans-7,qmainwindow,qtranslate,Qt4,Translation,Netbeans 7,Qmainwindow,Qtranslate,我在翻译我的qt应用程序(Windows上的Qt4.7.4)时遇到了一个奇怪的问题。 发生的情况如下: 1.-我执行lupdate并生成一个.ts文件 2.-我使用qt语言专家编辑生成的.ts文件 3.-我使用上一个.ts文件执行lrelease 4.-从Netbeans,我清理并构建项目,然后运行它 当我的应用程序运行时,大多数小部件(标签、按钮、标题、菜单操作、菜单)都会根据我之前生成的翻译文件进行翻译。问题是有些元素没有被翻译,尽管我在翻译文件中为它们提供了翻译(Qt语言学家识别了它们)
感谢所有的帮助。因此它只适用于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”
#包括
#包括
int main(int argc,字符**argv)
{
QApplication应用程序(argc、argv);
QString locale=QLocale::system().name();
翻译;
load(QString(“test_w32”)+locale);
app.installTranslator(&translator);
测试uw32-foo;
foo.show();
返回app.exec();
}
测试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
\ifndef测试
#定义测试\u w32\u H
#包括
类测试\u w32:公共QMainWindow
{
Q_对象
公众:
测试_w32();
虚拟~testw32();
};
#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"
#包括“test_w32.h”
#包括
#包括
#包括
#包括
test_w32::test_w32()
{
QLabel*l=新的QLabel(此);
l->setText(trUtf8(“你好,世界!”);
setCentralWidget(l);
QAction*a=新QAction(本);
a->setText(trUtf8(“退出”);
连接(a,信号(已触发()),插槽(关闭());
菜单栏()->addMenu(trUtf8(“文件”)->addAction(a);
}
test_w32::~test_w32()
{}
#包括“测试w32.moc”
有什么问题吗?
谢谢,而且您已经确保在安装translator之后调用每次出现的tr?Hi@KamilKlimek translator安装在main函数中。在调用转换器之后,我调用我的mainWindow类,如果所有操作都失败,那么QMainWindow将不会被翻译:S应用程序的其余部分将被翻译。我不知道问题是什么,你必须给我们提供再现你问题的最小代码示例。