Qt在设计开始就考虑了对多语言的支持.因此对中文的支持还是比较容易.很容易编写出多语言的程序来.关于Qtopia /QT的中文支持.主要有如下情况
1.在自己的QT程序中加入中文支持.
2.将Qtopia 的桌面显示中文
QT应用程序多语言支持的思路是,跟WINDOWS非常象。就是非英语的字符串不编译在程序当中。而是保存在一个字典文件里。在程序中使用是这个字典的索引。这样在不修改的程序的情况,只要换成不同的字典文件就会支持不同语言的显示。
在WINDOWS程序中,这个字符串是资源文件(*.res),这个文件最后被链接到可执行文件当中。在程序中使用整数类型的资源ID,来从资源文件中,通过API函数LoadString()来从资源文件取出字符串。
在QT也采用类似的流程。字符串保存在翻译文件(*.ts)当中,发布时它将会转换成二进制的 .qm文件。这个文件不需要链接可执行文件当中。程序中使用英文字符串作为字典的索引。使用tr()函数从翻译文件检索相应的字符串。
这里我只总结第一种方法。(我项目的名称为mutilDialog)
一,首先需要手工修改pro文件.增加ts文件的选项,在pro要增加一项 TRANSLATIONS = mutilDialog.ts
二,用QT提供的工具lupdate生成一个ts文件。在命令行输入
lupdate mutilDialog.pro
会自动生成一个mutilDialog.ts文件。ts文件其实就是简单的xml语言写的一个文件。
三,用QT自带的工具linguist翻译mutilDialog.ts对应的词。你也可以直接打开mutilDialog.ts文件自己手动修改。
四,用QT提供的工具将mutilDialog.ts编译成二进制的mutilDialog.qm文件。在命令行输入 lrelease mutilDialog.ts就会生成相应的文件了。
五,在主程序中加入对Qtranslator类的支持。并且装入相应的qm文件
#include <qapplication.h>
#include <qtranslator.h>
int main( int argc, char ** argv )
{
QApplication a( argc, argv );
.......
QTranslator translator(0);
translator.load(QString("mutilDialog.qm"));
a.installTranslator(&translator);
................
return a.exec();
}