Qt中的国际化的方法有很多,常用的有使用QTextCodec类和使用tr()函数。前者将编码名称写到代码里面,除非你使用Unicode编码,否则国际化依然是一个问题;后者就不会有这个问题,并且这也是Qt推荐的做法。因此,我们主要来说使用tr()函数的方法进行应用程序的国际化。
首先,我们需要在pro文件中增加一行: TRANSLATIONS += myapp.ts
myapp.ts是我们需要创建的翻译文件。这个文件的名字是任意的,不过后缀名需要是ts。然后我们打开命令提示符,进入到工程所在目录,比如我的是E:\My Documents\Workspace\Qt\MyApp,也就是pro文件所在的文件夹,然后输入命令
lupdate -verbose MyApp.pro
如果出现的是命令不存在,请注意将Qt的bin目录添加到环境变量中(PATH第一个位置)。此时,如果更新的数目,说明ts文件创建成功。Qt提供了一个工具,Qt Linguist,你可以在开始菜单的Qt项下面的Tools中找到。用它可以打开我们的ts文件,然后进行我们的翻译工作,翻译工作完毕后使用
lrelease -verbose MyApp.pro
之后会生成MyApp.qm文件,该文件是二进制的形式,可以被Qt直接使用。下面我们要修改main()函数,使之加载这个qm文件:
int main(int argc,char *argv[]){ QApplication a(argc, argv); QTranslator qtTranslator; qtTranslator.load("myapp.qm"); a.installTranslator(&qtTranslator); MainWindow w; w.resize(800, 600); w.show(); return a.exec(); }
这个界面已经加载该qm文件,qm文件其实是动态加载到exe文件中的,而不是直接编译进去的。
参考:
http://www.cnblogs.com/oloroso/p/4596740.html