目前工作在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()函数中&#x