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>
&n

本文介绍了Qt中QString的国际化实现,通过Qt Linguist工具进行翻译,以及QString的相关操作,包括内存结构、格式化输出、格式转换和手动显示中文的方法。重点关注QString在Unicode编码下的转换和显示。
最低0.47元/天 解锁文章
4650

被折叠的 条评论
为什么被折叠?



