Qt中多语言及字体的分析 .

发布时间:2016-12-11 16:03:48 编辑:www.fx114.net 分享查询网我要评论
本篇文章主要介绍了"Qt中多语言及字体的分析 .",主要涉及到Qt中多语言及字体的分析 .方面的内容,对于Qt中多语言及字体的分析 .感兴趣的同学可以参考一下。

目前工作在Qtopia2.2.0中,项目要求实现多语言,目前的需求是要实现波斯文。而因为我对波斯文一点都不了解,所以花了不少时间在这上面,现在算是云开雾散了。写点心得,即记录我的所得也想和大家分享一下。      字体      字体是同一个unicode(或是其他编码,也需要将其转换为unicode)值,在不同的字体中显示给用户的形态不一样,比如abc这些字母,在Times字体或是相关字体中,表现出来的形态都是abc。而对于波斯文中,abc这些字符在波斯文对于的字体中,abc三个字母的形态为蝌蚪形状了。所以如果要将某个Qtopia的平台使用的语言改变为波斯文,那么字体也必须相应的修改。(因为对unicode及其他编码格式及他们的关系理解不够,所以造成我之前的一些困扰)      编码方式      国际通用的unicode包括了所有的字符的编码,然后在不同的国家或是地区或是组织,有自己的编码,比如中国大陆有GB2312、台湾有Big5、日本有EUC-JP等等,表示阿拉伯文的是ISO 8895-6等等。而因为unicode是国际通用的编码,几乎包括所有的字符,Qt使用unicode编码,所以在qt中需要将unicode编码和其他编码之前的转换。     Qt中的国际化tr()     Qt中的tr是将指定的字符串翻译成本地语言。它是怎么实现的呢?经过阅读代码,其过程如下(下面是Qt2的过程,Qt4大致相同):     1)tr函数会直接调用到QApplication::translate()函数     2)在QApplication::translate()函数中,会找到根据所有的QTranslater对象来翻译指定的源字符串。在QT中,使用lupdate和lrealse工具生成的翻译文件*.qm,每一个qm文件对于一个QTranslater对象。所以这一步是在所有的*.qm文件中查找。如果找到,则直接返回翻译的文本     3)当在*.qm中找不到该字符串的时候,再根据当前的文本编码模式将文本转换为unicode编码返回(当前的文本编码模式是QTextCodec的子类的对象)      4)如果在第3步中不能转换为有效的unicode值,那么直接返回在原来的字符串。   说明:在Qt2中,每一个Application只有一个默认的文本编码方式,而在Qt4中,有本地的编码方式,有翻译的编码方式。他们的作用是不同的。

上一篇:oracle10g 监听服务无法启动
下一篇:Marklogic 一个递归方法的实现

相关文章

相关评论