操作系统:WINXP
QT library :4.8.5
IDE :VS2010。
基本原理
为了在使用多语言,必须做两件事情:
1.把想要翻译的字符串放入tr()中,如 QString str=tr("Legal");
2. 在开始的时候载入预先制作好的翻译文件(.qm)。
以下利用Qt提供的工具,把翻译文件制作出来,并在程序中加载。
1.生成TS文件
QT的国际化需要TS文件,我们可以通过以下方法创建TS文件

2.lupdate

3. 运行Qt Linguist,打开上一步生成的*.ts文件,进行翻译,翻译完毕后lrelease
4.在QRC文件加入新生成的QM文件:
双击QRC文件,按照以下配置进行配置,主要用于load()函数
附上修改前代码:
#include <Qpushbutton>
#include <QApplication>
#include <Qwidget>
#include <QTextCodec>
#include <QObject>
#include <QTranslator>
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
QWidget windows;
windows.setMinimumSize(300,200);
windows.setMaximumSize(300,200);
QPushButton QPushButton_test1(QObject::tr("test1"),&windows);
QPushButton_test1.setGeometry(20,20,100,30);
QPushButton QPushButton_test2(QObject::tr("test2"),&windows);
QPushButton_test2.setGeometry(20,60,100,30);
QPushButton QPushButton_test3(QObject::tr("test3"),&windows);
QPushButton_test3.setGeometry(20,100,100,30);
windows.show();
return app.exec();
}
修改后代码:
#include <Qpushbutton>
#include <QApplication>
#include <Qwidget>
#include <QTextCodec>
#include <QObject>
#include <QTranslator>
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
/*新建翻译对象,并加载本地QM文件*/
QTranslator *translator=new QTranslator(0);
translator->load(":/test_zh.qm");
app.installTranslator(translator);
QWidget windows;
windows.setMinimumSize(300,200);
windows.setMaximumSize(300,200);
QPushButton QPushButton_test1(QObject::tr("test1"),&windows);
QPushButton_test1.setGeometry(20,20,100,30);
QPushButton QPushButton_test2(QObject::tr("test2"),&windows);
QPushButton_test2.setGeometry(20,60,100,30);
QPushButton QPushButton_test3(QObject::tr("test3"),&windows);
QPushButton_test3.setGeometry(20,100,100,30);
windows.show();
return app.exec();
}