Qt国际化QString
sf2gis@163.com
2014年11月28日
1 目标:使用统一的编码,并能够转换为各种编码的正常显示
2 实现
2.1 原理:使用Unicode统一编码,其它编码与Unicode进行转换
2.2 方法:QT linguist(语言家)
Qt内部使用Unicode。任何编码,只要能够与Unicode进行互转,就能够在Qt中正确显示。所以在Qt中进行转码,必须使用Unicode中间层QString。
在使用与用户交互的UI中,都使用QString,遇到char时,将强制转换为QString。QString具有转换为std::string的功能。应尽量使用QString避免转换。
QObject::tr()将二进制字符标记,然后由QTranslator加载相应的转换文件,将标记字符转换为相应的转换字符完成转换。
在使用designer进行界面设计时,每个界面元素都标记为tr()。
参考:http://hi.baidu.com/dreammerge/item/3db98955d5db4fc09e2667bc
2.2.1 步骤
1) 创建tr()标记:在需要进行翻译的地方设置标记。
2) 创建.qm转换文件
a) 在.pro中添加输出标记文件名称
xml格式,用于导出所有的标记项,由lupdate生成,这里需要添加输出文件名称
b) 调用lupdate(命令行)生成标记文件
i. 标记文件:xml格式,每个翻译条目都由一个message节处理。包含源文件定位(location),源字符串(source),翻译注释(translatorcomment),翻译字符串(translate)。
<message>
<locationfilename="mainwindow.cpp" line="356"/>
<source>Translate</source>