本地化 ActiveX 部件

将 Visual Basic 创建的部件本地化,首先把部件中用到的所有文本字符串收集到一个 Windows 资源编译器使用的资源文件(.rc 文件)中。然后翻译这些字符串就可创建该源文件的本地化版本了。

在编译部件的每个本地化版本之前,使用资源编译器从适当的源文件创建 Windows 的资源(.res 文件),并把资源文件包含进工程。

没有可视界面的部件用这种办法本地化非常容易,因为需要本地化的只有出错消息。“生成和处理错误”的代码部分演示了这种技术。

对于显示窗体的部件,本地化过程要复杂一些。需要把窗体和控件的标题放到资源文件里,然后在每个窗体的 Form_Load 事件过程中获取它们。

附属 DLL

在使用多种语言的地区,使用资源文件会有一些问题。不仅要为每一种语言单独编译出部件的一个版本,而且由于它们使用同一个工程名,在任何时候用户的计算机上就只能安装一种语言版本。

“建立 ActiveX 控件”中的“控件的本地化”介绍了使用附属 DLL 把字符串翻译成各种语言的技术。附属 DLL 和部件一起使用,不需要重新编译部件就可换入和换出。

如果使用基于 LocaleID 的名称转换机制,多个附属 DLLs 可以同时存在于一台计算机上,用户可通过修改系统的 LocaleID 在不同语言之间切换。

限制

不幸的是,代码部件会限制这种方法的使用。和控件部件不同,代码部件不会从客户应用程序接收 LocaleID。代码部件能够做的只是通过 API 调用来获得系统的 LocaleID。

进程外代码部件最多也只能做到这样,因为它们必须为多个客户应用程序服务。但对于进程内部件,如果一个对象含有可以被客户应用程序设置的 LocaleID 属性,那么提供这样的对象会给开发人员比较好的选项。属性设置后,部件就可以从适当的附属 DLL 中加载文本字符串。

详细信息 对于要在世界范围内发布的应用程序,如何编写其代码可以参阅《Visual Basic 程序员指南》的“国际化”。要了解检索文本字符串和其它资源的函数,请参阅《语言参考》中“函数”下的LoadResString。