qt 国际化

转:http://blog.chinaunix.net/uid-28194872-id-3518897.html
运用lupdate工具生成.ts文件,命令如下:
lupdate -verbose *.cpp -ts qt_english.ts
-verbose 解释并显示lupdate的操作过程;源文件 -ts 目标文件

在linux下用
linguist
编译qt_english.ts 生成翻译替换文档qt_zh_CN.ts。或者直接在windows下用UltraEdit编辑。编辑时注意:
把 english
替换成
english
中文

其中english是源文件中需要翻译的英文内容,中文是翻译后想要显示的中文(简体和繁体都可以)。

对编译好的qt_zh_CN.ts运用lrelease工具生成.qm文件,命令如下:

lrelease
-verbose qt_zh_CN.ts -qm translation_simpleChinese.qm
-verbose
解释并显示lupdate的操作过程;源文件 -ts 目标文件
*.qm

翻译后的文件可以用Qt程序直接调用。(一般情况下,直接在main.cpp函数直接调用就可以了。)
调用方法如下:
QTranslator *translator = new QTranslator(0);
translator->load(“__FileName.qm”,“.”);
qApp->installTranslator(translator);

在工程文件里添加一项:
TRANSLATION
+= translation_simpleChinese.qm
用qmake生成makefile,make即可。
在这里写一个经典的helloworld的例子。
zh_CN.cpp
#include
#include
#include
#include
#include
int main(int argc, char **argv)
{
QApplication app(argc, argv);

QTextCodec::setCodecForTr(QTextCodec::codecForName(“UTF-8”)) ;
app.setFont(QFont(“simsun”, 10));

QTranslator translator( 0 );
translator.load( “zh_CN”, “.” );
app.installTranslator( &translator );

QPushButton *pushbutton = new QPushButton(QObject::tr(“helloworld!”));
pushbutton->show();

return app.exec();
}

代码中红色部分为关键代码。
QTextCodec::setCodecForTr(QTextCodec::codecForName(“UTF-8”)) ;
这段代码是设置文字的编码格式,这里选择UTF-8.
app.setFont(QFont(“simsun”, 10));
设置字体为宋体,字体大小为10磅。这个设置的前提是我们有这个字库。simsun.ttc在windows的字体库中可以找到。当然也可以选择其他的字体,如wenquanyi,simfang等。我们把字库拷贝到开发板的字库目录下,修改字库目录下fontdir文件,添加如下内容:
simsun simsun.ttc TTC n 50 120 u
QTranslator translator( 0 );
translator.load( “zh_CN”, “.” );
app.installTranslator( &translator );
上面三段代码是程序运行时需要装载的翻译文件设置。
QObject::tr(“helloworld!”)
这句是告诉编译器,这个字符串是可以翻译的。
下面是翻译过程:
1、修改zh_CN.pro文件,添加如下内容:
TRASHLATIONS = zh_CN.ts
2、生产ts文件
lupdate zh_CN.ts
查看zh_CH.ts文件:
< xml version=“1.0” encoding=“utf-8” >

QObject helloworld! 3、生产 qm文件 这个可以有两种方法,一种是使用linguist,通过图形界面去生产qm文件,这里介绍另外一种方法。 修改ts文件为: < xml version="1.0" encoding="utf-8" > QObject helloworld! 你好! 然后就是生成qm文件了 lrelease zh_CN.ts –qm zh_CN.qm