快速开发平台支持多语言,只需要定义好相应的语言资源数据,即可让用户在各语言之间自由切换。默认内置英语、简体中文、繁体中文 3 种语言,可任意扩展添加其它语言,理论上最多可支持 252 种语言!
这真是酷毙了!你开发出来的软件,不但可以在有多国员工的企业中解决实际问题,还可以用来装酷耍帅!所以,还等什么?还不快到碗里来!^_^
效果预览图
界面语言切换选择窗口
切换至 英文/简体中文/繁体中文 的界面效果
开发多语言应用的基本要点
因为 Windows、Office 等都是基于英文环境开发的,因此只用英文开发则不存在任何语言兼容问题,所以我们要开发在多语言环境下应用的软件时,必须在开发时全部采用英文,然后将其它非英文的语言保存为资源文件或数据,在软件启动运行的时候自动加载并应用。否则像开发时用了中文,开发的软件在其它不支持中文的环境下将无法使用。
规格说明
快速开发平台是基于 Access 实现的,而 Access 与生俱来的和数据库深度结合的特点,甚至可以说数据库就是 Access 本身不可缺少的重要核心部分,因此在快速开发平台中,多语言资源采用客户端本地数据表进行存储,充分利用 Access 对数据处理的方便易用和数据库引擎强大的性能优势。而不是像用其它编程语言或开发工具开发的软件那样,将多语言资源文件保存在相应的文本文件中。因此由于 Access 存在单个表中字段不能超过 255 个的限制,所以这里再减去被开发平台多语言功能本身占用的 3 个字段,最多可以支持 252 种语言。
快速开发平台中的多语言资源存储结构定义和调用方式
以快速开发平台本身的多语言切换实现为例,多语言资源信息主要保存在 SysLocalResInterface 和 SysLocalResStrings 这两个客户端本地表中。
-
SysLocalResInterface 表
SysLocalResInterface 表中保存的是界面语言资源,即那些能够直接对应窗体、报表或控件的某个属性的内容,如窗体标题、标签标题等,一般这些内容在打开窗体或报表后不会再变化。其中【对象名称】可以是窗体名称,也可以是报表名称,【控件名称】则是指窗体或报表中的控件的名称,如果定义的是窗体名报表的属性,则需要在【控件名称】输入空字符串""(即两个英文半角的双引号),不能直接为空。
通过在窗体、报表的“打开”事件过程或者“加载”事件过程中,调用 LoadLocalLanguage 函数完成指定语言资源的加载和应用:
Private Sub Form_Load() LoadLocalLanguage Me End Sub
-
SysLocalResStrings 表
SysLocalResStrings 表中保存的是字符串语言资源,如消息框中显示的信息内容等,一般不能和窗体、报表或控件的属性对应。其中【索引键值】即在 VBA 代码中写的内容,必须要是英文。注意这个一旦决定就不能轻易更改,否则必须要修改的相应 VBA 代码才行。另外【分组】字段只是为了便于维护数据,对平台的多语言应用功能不产生任何影响。
字符串语言资源一般通过调用 LoadString 函数来获取并使用。例如下面这句通过消息框显示一个提示消息的 VBA 代码:
MsgBox "请输入您的登录密码。", vbInformation
在进行多语言开发时,必需使用英文来写代码,并调用 LoadString 函数使其能在使用时自动显示为其它语言,这句 VBA 代码就需要改成下面这样:
MsgBox LoadString("Please enter your login password."), vbInformation
然后还需要在 SysLocalResStrings 表中添加一条记录,要注意的是【索引键值】字段的值必须和这里代码中的消息内容一样,如下图所示:
添加其它的语言
从前面的存储结构定义中我们可以看出,每种语言对应这两个表中的一个字段。因此当我们需要增加一种语言时,只需要在这两个表中添加一个字段。添加完字段后,再填写相应的数据内容即可。
注意 由于 SysLocalResInterface 和 SysLocalResStrings 这两个表中存储了快速开发平台本身的多语言资源信息,而快速开发平台也会不断更新升级,期间有可能会变更这两个表中的数据。因此如果直接在这两个表中修改,会在升级开发平台时,平台对多语言资源的更新和我们自定义的多语言信息造成冲突,自定义的内容无法被自动升级。所以我们实际上需要在 SysLocalResInterface_Customize 和 SysLocalResStrings_Customize 这两个表中来完成多语言的自定义开发配置。如果需要对开发平台本身的一些内容进行自定义修改,可以将 SysLocalResInterface 和 SysLocalResStrings 表中的相应数据复制到 SysLocalResInterface_Customize 和 SysLocalResStrings_Customize 表中再修改,这样升级平台时就不会出现冲突,自定义的配置信息不能被自动升级。
注意 这里自定义添加的语言对应的字段名必须使用英文,因此这里字段名我们采用英文的缩写代码,如简体中文的字段名实际上是“CHS”,而前面截图中显示出来是“简体中文”,实际上是因为设置了字段的标题属性,即字段名是“CHS”,字段标题是“简体中文”。
至此,我们已经完成了对相应语言的定义,接下来只需要再配置一个参数,让添加的语言能够在平台的“切换界面语言”显示出来,否则无法使用。打开客户端中的存储本地参数配置的 SysLocalParameters 表,找到参数名(ParameterName)为“Language List”的记录, 在参数值字段(Value)加入新添加的语言信息,如下图所示:
该参数值实际上是一个列表性质的字符串,包括了每种语言对应的关键字(资源表中的字段名)和显示给用户的语言名称(对应资源表中的字段标题),并用英文分号分隔(便于直接加载到列表框或组合框进行选择)。如默认情况下该参数值为:
EN;English;CHS;简体中文;CHT;繁體中文当我们要添加其它语言如日文时,则将其修改为:
EN;English;CHS;简体中文;CHT;繁體中文;JPN;日本語
最后更新:2013-12-21(基于 V1.7.2版)