【原创】VS2010+QT4.8.1多语言翻译例子程序

前言

本文使用的环境如下:操作系统:WIN7,QT library :4.8.1,IDE :VS2010。

基本原理

为了在使用多语言,必须做两件事情:

1,把想要翻译的字符串放入tr()中,如 QString str=tr("Legal");

2, 在开始的时候载入预先制作好的翻译文件(.qm)。

以下利用Qt提供的工具,把翻译文件制作出来,并在程序中加载。

步骤

1、生成TS文件

   QT的国际化需要TS文件,我们可以通过以下方法创建TS文件

clip_image001

clip_image002

2、编辑TS文件

用QT自带的linguist工具,对代码里需要翻译的内容进行翻译,完成后进行发布,一般会在TS当前目录下生成QM文件

clip_image003

3、在QRC文件加入QM文件:

双击QRC文件,按照以下配置进行配置,主要用于load()函数

clip_image004

附上修改前代码:

#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();

}

 

posted @ 2016-04-12 20:57  xiaoleisme  阅读(611)  评论(0编辑  收藏  举报