CnPack Forum


 
Subject: 发现一些多语言的问题
Efeis
新警察
Rank: 1



UID 41252
Digest Posts 0
Credits 18
Posts 6
点点分 18
Reading Access 10
Registered 2008-11-11
Status Offline
Post at 2008-11-20 21:58  Profile | Blog | P.M. 
发现一些多语言的问题

今天又试了一下多语言,又发现一些问题。
我创建了三个语言条目:英文、简体中文、繁体中文,当然字符集分别为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时,运行出错,是我不会用吗?
Top
Passion (LiuXiao)
管理员
Rank: 9Rank: 9Rank: 9


UID 359
Digest Posts 19
Credits 6838
Posts 3591
点点分 6838
Reading Access 102
Registered 2004-3-28
Status Offline
Post at 2008-11-21 09:28  Profile | Blog | P.M. 
您这儿提到的乱码不是多语包能解决的。多语包本身没提供Unicode功能,而是直接根据相应的字符集设置VCL组件的字符串属性,而D2009以下的VCL不支持Unicode,因此在出现字符集和当前系统语言不符合时便会出现乱码。而Label等的Caption由于封装了Windows控件,在NT以上版本中这些windows控件是支持unicode的,因此会根据字符集和字符串内容转换成unicode来显示。

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




All times are GMT++8, the time now is 2024-11-26 00:21

    本论坛支付平台由支付宝提供
携手打造安全诚信的交易社区 Powered by Discuz! 5.0.0  © 2001-2006 Comsenz Inc.
Processed in 0.008257 second(s), 9 queries , Gzip enabled

Clear Cookies - Contact Us - CnPack Website - Archiver - WAP