Private Declare Function LCMapString Lib "kernel32" Alias "LCMapStringA" (ByVal Locale As Long, ByVal dwMapFlags As Long, ByVal lpSrcStr As String, ByVal cchSrc As Long, ByVal lpDestStr As String, ByVal cchDest As Long) As Long Private Declare Function lstrlen Lib "kernel32" Alias "lstrlenA" (ByVal lpString As String) As Long'简转繁 Public Function JToF(ByVal Str As String) As String Dim STlen As Long Dim STf As String STlen = lstrlen(Str) STf = Space(STlen) LCMapString &H804, &H4000000, Str, STlen, STf, STlen JToF = STf End Function'繁转简 Public Function FToJ(ByVal Str As String) As String Dim STlen As Long Dim STj As String STlen = lstrlen(Str) STj = Space(STlen) LCMapString &H804, &H2000000, Str, STlen, STj, STlen FToJ = STj End Function
或者可以做成dll资源库的方式。
Private Declare Function lstrlen Lib "kernel32" Alias "lstrlenA" (ByVal lpString As String) As Long'简转繁
Public Function JToF(ByVal Str As String) As String
Dim STlen As Long
Dim STf As String
STlen = lstrlen(Str)
STf = Space(STlen)
LCMapString &H804, &H4000000, Str, STlen, STf, STlen
JToF = STf
End Function'繁转简
Public Function FToJ(ByVal Str As String) As String
Dim STlen As Long
Dim STj As String
STlen = lstrlen(Str)
STj = Space(STlen)
LCMapString &H804, &H2000000, Str, STlen, STj, STlen
FToJ = STj
End Function
到这里查看
安全:无论在内部或利用外部公司本地化应用程序,都不用修改源代码。这样做还可以减少花在国际版测试上的精力。
更好的本地化:由于所有的字符串资源都在一个文件中,因此可以提高本地化工作的效率并防止遗漏。
下表列出了在设计 Visual Basic 应用程序时要考虑的一些因素。因素 项目
语言 用户界面(菜单、对话框及错误信息)中的字符串
打印的文档和联机的文档
与区域有关的设置 日期/时间格式(分隔符、年月日的顺序)
数字格式(小数点和千分位符)货币格式(符号和格式)排序顺序和字符串比较
在大多数方式下,发布本地化的 ActiveX 控件与发布原始版本的控件没有什么不同。不过,如果该控件发行了新版本,并随另一个应用程序在Web 上发布,就可能会产生问题。随 Visual Basic 一起提供的 ActiveX 控件已自动被翻译、或本地化为与您的 Visual Basic的语言版相对应的语言。例如,Visual Basic 的日语版中的控件用的是日语,并可用于以该语言发布。当发布这些控件时,打包和展开向导必须确定需要随这些文件一起包装的文件。注意 本主题只适用于随 Visual Basic 一起发布的 ActiveX 控件。它不适用于使用 Visual Basic 创建的用户控件,除非这些控件包含了 Visual Basic ActiveX 控件。Visual Basic 的本地化 ActiveX 控件包括两部分: .控件的 .ocx 文件,该文件是控件的代码块。Visual Basic 的各种语言版本使用的是同一个 .ocx 文件。
附属的 DLL 文件,该文件包含了该控件的本地化字符串,是控件的数据块。不同版本的附属 DLL 根据您所购买的Visual Basic 语言版本而有所不同。
当包装一个包含本地化的Visual Basic ActiveX 控件的应用程序时,打包和展开向导将自动包括正确的附属 DLL。当最终用户下载该应用程序时,这个正确的附属 DLL 就被安装到用户的计算机上。将 Visual Basic 创建的部件本地化,首先把部件中用到的所有文本字符串收集到一个 Windows 资源编译器使用的资源文件(.rc 文件)中。然后翻译这些字符串就可创建该源文件的本地化版本了。在编译部件的每个本地化版本之前,使用资源编译器从适当的源文件创建 Windows 的资源(.res 文件),并把资源文件包含进工程。没有可视界面的部件用这种办法本地化非常容易,因为需要本地化的只有出错消息。“生成和处理错误”的代码部分演示了这种技术。对于显示窗体的部件,本地化过程要复杂一些。需要把窗体和控件的标题放到资源文件里,然后在每个窗体的 Form_Load 事件过程中获取它们。附属 DLL
在使用多种语言的地区,使用资源文件会有一些问题。不仅要为每一种语言单独编译出部件的一个版本,而且由于它们使用同一个工程名,在任何时候用户的计算机上就只能安装一种语言版本。“建立 ActiveX 控件”中的“控件的本地化”介绍了使用附属 DLL 把字符串翻译成各种语言的技术。附属 DLL 和部件一起使用,不需要重新编译部件就可换入和换出。如果使用基于 LocaleID 的名称转换机制,多个附属 DLLs 可以同时存在于一台计算机上,用户可通过修改系统的 LocaleID 在不同语言之间切换。限制
不幸的是,代码部件会限制这种方法的使用。和控件部件不同,代码部件不会从客户应用程序接收 LocaleID。代码部件能够做的只是通过 API 调用来获得系统的 LocaleID。进程外代码部件最多也只能做到这样,因为它们必须为多个客户应用程序服务。但对于进程内部件,如果一个对象含有可以被客户应用程序设置的 LocaleID 属性,那么提供这样的对象会给开发人员比较好的选项。属性设置后,部件就可以从适当的附属 DLL 中加载文本字符串。
编写代码时,可以调用 LoadResString、LoadResPicture 和 LoadResData 函数代替对文字、图象和数据的引用。把这些元素存储在资源文件中有两大好处: 提高性能和增加空间,这是因为字符串、位图、图标和数据可以不必在调用窗体或模块时就全部加载,而可以按需要从资源文件中加载。
把需要翻译的资源单独放在一个资源文件中,因此没有必要访问源代码或重新编译应用程序。
要创建资源文件,请按照以下步骤执行: 从“工程”菜单中选择“新资源文件”。
注意 该命令只有在资源编辑器外接程序加载的情况下才能使用。要加载资源管理器外接程序,请选择“外接程序”菜单中的“外接程序管理器”。在“外接程序管理器”对话框中,选择“VB6 资源编辑器”并复选“加载/卸载”。在“打开一个资源文件”对话框中,为资源文件输入一个名称。资源文件名称将被添加到“工程资源管理器”的“相关文档”节点。
Visual Basic 把具有 .res 扩展名的文件识别为资源文件。如果资源文件不具有正确的扩展名,Visual Basic 将不会加载它。相反地,任何具有 .res 扩展名的文件被加入到工程时都会被 Visual Basic 当作资源文件处理,如果该文件不具有标准的资源文件格式,Visual Basic 将在第一次使用资源文件支持函数(LoadResString、LoadResPicture 和 LoadResData)或试图编译成 .exe 文件时产生错误信息。试图添加 16 位的资源文件到工程中也会产生同样的错误信息。资源文件被添加到工程后,.res 文件将出现在“工程”窗口中。与窗体或模块不同,在 Visual Basic 中不能查看 .res 文件。该文件是标准的资源文件,可由 Microsoft Visual C++ 和其它大部分的 Windows 开发工具创建或使用。一旦在“文件”菜单中选中“生成 projectname.exe”一项,Visual Basic 将把该文件中的所有资源编译到 .exe 文件中作为 Windows 的资源。在编译 .exe 文件之前和之后,.res 文件都是标准的 Windows 资源文件,这意味着任何标准的 Windows 资源编辑器都可以加载该文件。要编辑资源文件,请按照以下步骤执行: 从“工具”菜单中选择“资源编辑器”。
注意 该命令仅在资源编辑器外接程序加载的情况下才能使用。要加载资源编辑器外接程序,请从“外接程序”菜单中选择“外接程序管理器”。在“外接程序管理器”对话框中,选择“VB6 资源编辑器”并复选“加载/卸载”框。从“资源编辑器工具栏”中选择一个按钮来编辑一个现存资源文件或添加一个新的。
lstrlen 返回字符串中字符数
每个dll对应不同的语言版本,这样灵活性比较大。
dll就相当与语言包了,方便迁移。
我把他的資料整理後做成了一個簡體工程轉換為繁體工程的工具
只要選擇某一文件夾就能把其下的(包括子文件夾)的諸如XLS、TXT、FRM、CTL、CLS等文件中的簡體轉為繁體
我是沒那麼牛的,早就說明了那是整理了一下zyl910(910:分儿,我又来了!)的資料
留份EMAIL給你寄來