CnPack Forum » CnVCL 组件包 » 发现一些多语言的问题


2008-11-20 21:58 Efeis
发现一些多语言的问题

:L 今天又试了一下多语言,又发现一些问题。
我创建了三个语言条目:英文、简体中文、繁体中文,当然字符集分别为DEFAULT_CHARTSET,BG2312_CHARSET,CHINESEBIG5_CHARTSET,Form上放三个Button用于切换语言,用翻译输入相应语言的文字后运行,却发现繁体中文显示乱码,应该是字符集没切换!!
我查了几次,确认设置和输入无误,又放一个Label到Form上,设置相应的字符集后可以正常显示。
重新追加到翻译文件中,发现Label多语可正常显示。
后经测试,暂时发现不能正常转换字符集的有:Form.Caption,Button.Caption,??.Hint
能正常显示的有:Label.Caption,Edit.Text,Memo.Text
看来这个问题比较麻烦啊,有些东西是不是到系统级了,不好控制了
        ----我用的是WindowsXP简体中文版

另外,当TCnLangManager.TranslationMode = tmByStrings时,运行出错,是我不会用吗?

2008-11-21 09:28 Passion
您这儿提到的乱码不是多语包能解决的。多语包本身没提供Unicode功能,而是直接根据相应的字符集设置VCL组件的字符串属性,而D2009以下的VCL不支持Unicode,因此在出现字符集和当前系统语言不符合时便会出现乱码。而Label等的Caption由于封装了Windows控件,在NT以上版本中这些windows控件是支持unicode的,因此会根据字符集和字符串内容转换成unicode来显示。

多语包提供的是语言动态切换的能力,而切换后的语言能否正常显示,取决于系统当前语言和字符集是否符合、Unicode是否支持等。如果在简体中切换到繁体的BIG5码,并且这个big5码在显示的时候又未做Unicode转换(VCL目前就是,而Windows控件做了),那么GB2312编码空间内显示BIG5码的字符,确实会是乱码。

页: [1]
查看完整版本: 发现一些多语言的问题


Powered by Discuz! Archiver 5.0.0  © 2001-2006 Comsenz Inc.