1、用QT Creator自动生成 QT GUI Application。例如项目名为:sale.pro
2、修改sale.pro文件,在其中加入TRANSLATIONS += sale.ls。
3、运行lupdate sale.pro命令,这一步生成sale.ls文件。
4、运行linguist sale.ls命令,对字符串进行翻译。
5、翻译完成后,点"File-release(文件-发布)"命令生成sale.qm文件。
6、如果有多种语言,例如有英语及汉语,则可以将sale.ls改名为sale_en.ls及sale_zh.ls。按4、5两步分别生成sale_en.qm及sale_zh.qm文件;这一步其实也可以在第2步中这样加入:TRANSLATIONS += sale_en.ls sale_zh.ls,这样可以直接生成多个ls文件。
7、在程序代码中按语言的不同调用文件,如下示例:
#include <QtGui> ...... QApplication app(argc, argv); QTranslator tran; int country = 1; switch(country){ case 0: tran.load("salenbuy_en"); break; case 1: tran.load("salenbuy_zh"); break; default: tran.load("salenbuy_en"); break; } app.installTranslator(&tran);
8、因为QT的通用对话框在QT的原始代码中,按上面的步骤不能改变一些通用对话框的英语提示。解决办法是到QT的安装目录中的“/Qt/2010.02.1/qt/translations”目录下,用文本编辑软件打开qvfb_zh_CN.ts文件,然后将文件中所有<content>...</content>的内容拷贝到你自己的ts文件中的</content>与<TS>之间。然后用linguist打开再重新发布即可。
9、项目可以先以英语作为开发语言,在完成后再按此步骤增加多语种支持。
10、对于直接在源代码中使用中文的方法,如下:
1)在程序中直接使用中文,需要在程序中加入以下代码:
#include <QTextCodec> int main(int argc, char **argv){ QApplication app(argc, argv); QTextCodec *codec = QTextCodec::codecForName("GB2312"); QTextCodec::setCodecForLocale(codec); QTextCodec::setCodecForCStrings(codec); QTextCodec::setCodecForTr(codec); ...... return app.exec(); }
这样在程序中使用tr(“中文”)或者直接使用“中文”了;
2)解决读取ini文件中中文乱码
QSettings settings("xxxx.ini",QSettings::IniFormat); settings.setIniCodec(QTextCodec::codecForName("GB2312")); settings.beginGroup("company");
3)解决读取中文文件中文的乱码
QFile file("xxxx.txt"); QTextStream stream(file,QIODevice::ReadOnly); stream.setCodeC( QTextCodec::codecForName("GB2312") ); stream.readAll();