分类: C/C++
2017-03-17 14:34:55
用白话说,QT国际化这个功能就是依据一个文件来实现动态的切换语言,这个文件相当于一本英汉词汇对照表,加载它之后,便可以到想要使用的语言。 1.要使用QT国际化,首先在工程文件(*.pro)中添加下面这行: TRANSLATIONS+=name.ts(name随你自己定) 2.然后使用lupdate命令生成name.ts文件,name.ts文件就是给我们看的那个英汉对照表,把需要翻译的内容列出来等你翻译。
在LINUX下用命令 lupdate*.pro 生成name.ts文件
在windows下打开QT安装目录下的控制台,我的QT安装在D:/QtSDK/下,点开始菜单,单击所有程序》QtSDK》Desktop》Qt 4.8.1 for Desktop(MinGW),选择好你们自己对应的版本,打开终端后,进入工程目录,就是*.pro所在目录,输入命令: lupdate–pro *.pro –ts name.ts 生成name.ts文件,在这里不得不说一下,很多文章讲在windows下直接使用命令lupdate *.pro生成name.ts文件,是错的,至少在我的电脑上不行,lupdate –help没显示用这个命令行,在此对那些不经自己验证乱发博文的人表示强烈谴责。
说明: name.ts文件中列出翻译内容包括程序中所有使用tr()包括起来的和QT设计师中所有text。
3.我在加载翻译文件前设置了编码方式,然后在windows下用记事本打开编辑后直接保存。
QTextCodec::setCodecForTr(QTextCodec::codecForName("UTF-8"));
QTranslator_translater(0);
_translater.load(":/name.qm");
Linux和windows下使用命令 lrelease *.pro生成name.qm文件 提示错误,意思是说遇到了不能识别的编码错误。后来发现windows下记事本默认的编码格式是ANSI,我却在前面设置了使用UTF-8编码(不知道没有设置会不会也出错),结果我把name.ts文件传到虚拟机中用vim编辑才解决问题,我想在记事本中点击另存为,然后选择UTF-8编码,应该也可以。 生成name.qm文件后……直接贴我的代码吧——
QApplicationa(argc,argv); QTextCodec::setCodecForTr(QTextCodec::codecForName("UTF-8")); QTranslator_translater(0);
_translater.load(":/name.qm");//加载name.qm文件
a.installTranslator(&_translater); return a.exec(); name.qm文件就是给QT程序看的英汉对照表,name.ts是给我们看的,当然不仅可以在中文和英文之间翻译,大多数语言都可以实现翻译。