没有合适的资源?快使用搜索试试~ 我知道了~
一个详细的概要设计模板
3星 · 超过75%的资源 需积分: 50 77 下载量 160 浏览量
2011-01-31
07:41:20
上传
评论 3
收藏 145KB DOC 举报
温馨提示
试读
17页
一个详细的概要设计模板,很有参考价值,一个详细的概要设计模板,很有参考价值
资源推荐
资源详情
资源评论
CnPack – 中国人自己的免费第三方开发包
http://www.cn pack .org
CnPack 多语组件包概要设计说明书
作者:刘啸(liuxiao@cnpack.org
)、Riceball
部门:CnPack 开发组 专家组/不可视工具组 设计员
类别:组件包设计
版本:V0.1.0.4
创建:2004.07.12
修改:2007.11.11
一、引 言
1、编写目的
本文档描述了 CnPack 组件包中的多语组件包的概要设计内容。预期的读者为对 CnPack 开发
组中对 Delphi 开发有一定掌握程度的成员,或意欲使用该多语组件包对自己的应用程序进行多语
化的开发人员。另外因为 CnPack IDE 专家包使用了该多语组件包,因此 CnPack 专家组相关开
发人员也应该阅读此文档以掌握专家包开发中多语组件包的使用与多语条目的管理方法。
2、背景
开发多语包的背景:
由于国际化的大势所趋,CnPack IDE 专家包的多语功能迫在眉睫,所以要求尽快完成灵活方
便的多语功能。CnPack IDE 专家包的许多功能已经基本定型。
补充此文档时的背景:
多语包已经开发完成并且顺利应用在 CnPack IDE 专家包中。专家包的多语功能除了翻译条目
有些许不准确之外基本无问题。^_^
3、定义
多语包/CnMultiLang:CnPack 组件包的一个相对独立的子部分,由几个实现多语功能的
组件组成,可单独安装,也可以随 CnPack 组件包一起安装。
多语条目/语言条目:对应着不同语种的字符串,供多语包管理检索,并能被加载并显示到软
件界面上去。
多语存储文件:保存某语言条目的文件,在我们的多语包中,一个文件保存且只保存一种语言
的所有条目。
翻译能力:能对其他对象进行属性字符串轮询并查找替换的能力,并非指人工智能中的自动将
一种语言条目翻译成另外一种语言条目。
多语化/本地化:对应用程序的代码进行处理,以使它能方便地切换到另外一种语言,或使它
具有这种切换语言的能力。
(C)Copyright 2001 - 200 7 CnPack 开发组 第 1 页 共 17 页
CnPack – 中国人自己的免费第三方开发包
http://www.cn pack .org
4、参考资料
1)编写本文件用到的参考资料:
riceball 的前期设计:《多语包前期设计文档.chm》,其中多语存储、多语管理的思想来自
此。LiuXiao 在实现的过程中对设计进行了一些改动。
2)阅读本文件时需要对照查阅的参考资料:
CnHashMap.pas 单元,作者:PanYin。
二、总体设计
1、需求规定
以下内容根据多语组件包的需要编写。
1)功能描述
该多语组件包能够替现有的 Delphi 工程加入多语翻译的能力。一个工程所具有的翻译能力应
该包括三部分:语言条目的存储能力、运行期切换语言的能力和设计期支持的能力 。本组件包基本
上能完成所提到的功能。
多语组件包允许用户在设计期遍历窗体或工程,针对它们生成所有对象所有字符串属性的条目
列表,并可将条目列表存储入多语存储文件中。同样的方法可以生成多个多语存储文件,每个文件
代表工程中的一种语言。运行期修改多语文件即可达到通过切换语言来修改界面字符串的目的,而
无需重新编译程序。
运行期切换语言的功能主要包括:遍历所有窗体,遍历每一个窗体上的每一个对象的每一个字
符串属性,并从多语文件中查找其对应的翻译条目来进行替换。同时,对一些特殊的控件和其下属
对象如 TreeView/TreeNode、ListView/ListItem 等提供翻译控制处理。
字体支持方面,多语包能自动替 ParentFont 为 False 的控件生成字体字符串,如果用户需要
在不同的语言间切换时使用不同的字体,在多语文件中对字体字符串进行编辑即可。
另外,对对象的翻译也不仅仅是出现在手工进行语言切换的时候。比如主窗体切换语言后又需
要创建新窗体时,如果新窗体需要和主窗体的语言保持一致,则需要在新窗体的创建事件里头进行
一次自我翻译。工程可以使用基类窗体的方式对多语切换进行统一处理。
再者,多语包提供对源码中的字符串变量的翻译支持,不过变量列表和其翻译值需要用户手工
加入多语存储组件中。
最后,多语包提供语言切换的通知事件,用户可在切换事件中写代码进行自己所需要的特殊处
理。
总的说来,用户需要手工做的最大部分是对多语存储文件进行翻译,其他的体力活儿,多语包
力争自动完成。
2)性能要求
多语组件包的语言切换性能主要取决于工程规模的大小和切换过程中所实现的内容,如果单纯
(C)Copyright 2001 - 200 7 CnPack 开发组 第 2 页 共 17 页
CnPack – 中国人自己的免费第三方开发包
http://www.cn pack .org
对于切换多个 Form 上的所有对象来说,一般从载入语言条目到切换的时间不会超过 1 到 2 秒钟。
切换时间由三个子部分组成:切换语言时从文件中载入语言条目到内存的时间;遍历对象进行
切换的时间和应用程序响应多语切换事件所进行的自定义操作时间。其中前二者由工程规模和窗体
规模确定,后者则由工程的架构和需求所决定。如 CnPack IDE 专家包目前的 0.6.x 版本中,多语
切换后会释放并重新创建所有菜单专家的子菜单,所以耗时比较多,导致切换语言速度有些慢,这
点已在专家框架部分升级后解决。
3)数据管理能力要求
多语组件包在设计期能实现对多语条目的保存,在运行期能实现动态载入并在内存中整理成以
备 翻 译 时 快 速 查 找 条 目 的 数 据 结 构 。 目 前 多 语 包 推 荐 使 用 的 数 据 结 构 是 HashMap ( 由
TCnHashLangFileStorage 组件实现),在载入 100kb 左右的多语文件并整理所耗费的时间在
50 毫秒以内,应该符合性能要求。
4)输入输出要求
多语组件包在运行期的输入内容是多语文件,输出内容是界面字符串,无特殊要求。
5)故障处理要求
多语组件包在遇到多语条目文件丢失的时候,将不进行翻译工作。
多语组件包在遇到某一多语条目为空的时候,也不进行此条目的翻译工作。
6)其它要求(暂无)
2、编译、运行环境
1)兼容的开发工具平台
Delphi5/6/7、C++Builder5/6/7 + Windows95/98/Me/NT/2000/XP
2)兼容性的实现方式
在单元中通过条件编译指令实现兼容。
3)本地化处理方式
目前多语包本身支持其他程序的本地化处理,但自身无自动本地化处理。因为本地化处理的内
容基本上只有设计期窗体翻译器,所以目前使用字符串资源的方式,默认的中文语言字符串存储在
本地源码的常量中,而英文版的常量文件存放于 cnpack 模块的 Source\Lang\1033 目录下。将
其复制覆盖原始常量文件后重新编译可获得设计期为英文支持的组件包。
4)与其它包或程序的接口
TCnHashLangStorage 组件使用到了 PanYin 编写的 CnHashMap 以组织字符串进行快速搜
(C)Copyright 2001 - 200 7 CnPack 开发组 第 3 页 共 17 页
CnPack – 中国人自己的免费第三方开发包
http://www.cn pack .org
索,字体处理部分使用了 CnIniStrUtils 以将字体数据和字符串间进行转换。
多语条目的组织方式:
设计期的多语条目采用“标识字符串=翻译内容”的形式,设计期的翻译器能替应用程序中的每
一个对象的每一个字符串值的属性生成一个唯一的、点分形式的标识字符串。该字符串形式类似如
“窗体类名.控件名.属性名”,如“TMainForm.Button1.Caption”。采用这种标识字符串的目的是保
持层次清楚,并且可由用户手工编辑,增强可用性。
多 语 条 目 的 存 储 由 具 体 的 多 语 存 储 组 件 决 定 , CnPack 的 多 语 开 发 包 中 提 供
TCnHashLangFileStorage 组件。它使用 TXT 文件、以行为单位来进行多语条目的存储。
多语管理器的翻译方式:
多语管理器进行翻译的时候,从顶层对象(单独的 TCustomForm)递归遍历,按照同样的规
则生成获得每个对象的每个字符串属性的标识符,然后在多语存储组件中搜索此标识符,如果存在 ,
则将对应的属性赋值为翻译后的多语字符串值。暂不完全支持对某个对象的单独翻译。——不支持
单独翻译某对象的原因是:如果提供给外部接口直接翻译一对象,那么要生成此对象的唯一的标识
字符串便还得往回回溯其 Owner,如果该对象是 Component 还好解决,倘若只是一个属性对象,
回溯其 Owner 就比较麻烦了。
3、结构
整个多语组件包和三部分需求对应,从结构上可划分为三部分:多语存储组件系列,多语管理
器系列和多语设计期翻译器系列。其中每个系列都是子类继承基类的方式。
4、功能需求与组件的关系
功能需求 类系列 基类 注册组件类名
多语条目存储功
能
多语存储组件系
列
TCnCustomLangStorage TCnHashLangFileStorage
等
多语翻译功能 多语管理器系列
TCnBaseLangManager TCnLangManager
设计期支持功能 多语设计期翻译
器系列
TCnCustomLangTranslator TCnLangTranslator
5、用户操作过程
普通工程:
1. 设计期先拖放一多语存储组件如 TCnHashLangFileStorage 到工程主窗体上,添加其语
言条目,设置保存路径。
2. 拖放一多语管理器组件 TCnLangManager 到工程主窗体上,设置其 LangStorage 等属
性为刚才拖放的多语存储组件,设置其各个属性以控制如何翻译等。
3. 拖放一多语设计期翻译器组件到工程主窗体上,双击它打开翻译条目管理器,用它来生成
多语条目并翻译保存。
4. 运 行期 设 置 TCnLangManager 的 CurrentLanguageIndex 即 可 进 行 切 换 , 语 言 的
(C)Copyright 2001 - 200 7 CnPack 开发组 第 4 页 共 17 页
剩余16页未读,继续阅读
liuxu0909
- 粉丝: 0
- 资源: 9
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
- 1
- 2
前往页