Board logo

Subject: BCB 中使用 CnMultiLang 的一些问题和解决方法 [Print This Page]

Author: CCED136    Time: 2010-4-2 10:24     Subject: BCB 中使用 CnMultiLang 的一些问题和解决方法

前天下载了 CnWizards_0.9.5.562_Unstable 源码, 对于其中包含的 CnVCL 源码也进行了编译。

在测试其中的 CnMultiLang 时, 发现了几个问题:

1、CnMultiLang 中的 TCnLangTranslator 在生成语言翻译文件时,选择保存按钮,出现列表溢出BUG,无法保存语言文件。
     这个问题,可能需要开发组解决了(呵呵,我用 C++Builder 6.0,不是很熟悉 DELPHI)。
2、CnLangMgr.pas 中的函数 RegisterTranslateString ,在BCB中转换相应的 HPP 时有缺陷(应该是BCB的转换问题),被
     转换为下面的形式:
     extern PACKAGE void __fastcall RegisterTranslateString(const System:AnsiString StringAddr, const AnsiString IDStr);

      这样的导出描述,导致BCB创建的工程,无法正确连接 RegisterTranslateString 函数。 使用BCB 的兄弟,请修改为下面的形式即可:

      extern PACKAGE void __fastcall RegisterTranslateString(const AnsiString *StringAddr, const AnsiString IDStr);


其他:

1、建议在 GetLanguageFileExt 的基础上,增加一个 SetLanguageFileExt 函数,配对产生一个 LanguageFileExt  属性,允许用户自己
    指定语言翻译文件的扩展名称,这样就不用固定为 TXT 或者 INI 了,例如我就想用 CHS.lang 这样的名字,呵呵。

2、最新版本的独立多语言控件包。这个主要发挥折腾精神,先从网站上下载独立版本的 CnPack_MultiLang.zip 文件,然后下载 CnVCL20100101 版本(暂时推荐这个版本,像上面说的第一个问题就不存在), 然后复制CnVCL20100101中的相关文件去覆盖 CnPack_MultiLang.zip 独立控件包中的文件,然后编译即可,这样就获得了最新版本的多语种控件包,呵呵。
Author: Passion    Time: 2010-4-3 14:14

感谢细致的报告。经过检查,第一个问题是我们的多语包进行Unicode化过程中引入的bug,不仅是BCB有,Delphi也有。目前已修正并提交至SVN,下一发布版本将集成进去。
其余问题我们也在研究。
Author: zjy    Time: 2010-4-3 18:55     Subject: 补充一下

现在SVN中的多语包是全面支持Unicode的版本,支持读取 ansi, utf-8 和 unicode 的多语言文件(utf-8和unicode文件必须带标志头),并且在组件内部使用WideString来保存和处理字符串,所以最近的unstable版本是可以在XP下正确显示繁体中文、俄文等文字的。另外,新的版本不再支持 Win98。

CnVCL20100101 这个版本的代码还是基于Ansi字符串的。

新的Unicode版组件可以完全兼容旧版本的用户代码和语言文件,当然最好是用记事本将语言文件存成utf-8格式再使用。
Author: CCED136    Time: 2010-4-24 19:14

感谢开发组的辛勤工作,为广大的程序员服务。 DELPHI 和 BCB 的发展现状,可能也给开发组带来了很多的困扰,不过,不管以后到底结果如何,至少现在,所有知道或者使用了 CNPACK 的人,都应该为你们感恩,这绝对是中国人的一个里程碑。




Welcome to CnPack Forum (http://bbs.cnpack.org/) Powered by Discuz! 5.0.0