龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > 软件开发 > VB开发 >

让你的VB程序支持多国语言的切换

时间:2009-12-30 15:42来源:未知 作者:admin 点击:
分享到:
以前做过一个vb的小项目,客户需要软件同时能够支持中文和英文,为此写了一个自动语言切换的模块来用,不敢独享,拿来给大家参考一下,如果你有什么改进也可以写信给我。。ma
以前做过一个vb的小项目,客户需要软件同时能够支持中文和英文,为此写了一个自动语言切换的模块来用,不敢独享,拿来给大家参考一下,如果你有什么改进也可以写信给我。。mailto:tonyki@citiz.net

  模块MdlLanMgr.bas:

  AttributeVB_Name="ModuleLanMgr"

  OptionExplicit

  PrivateDeclareFunctionGetPrivateProfileString&Lib"kernel32"Alias"GetPrivateProfileStringA"(ByVallpApplicationNameAsString,ByVallpKeyNameAsString,ByVallpDefaultAsString,ByVallpReturnedStringAsString,ByValnSizeAsLong,ByVallpFileNameAsString)

  PrivateLanguageFileNameAsString

  '选择语言

  PublicSubSelectLanguage(LanNameAsString)

  OnErrorResumeNext

  

  SelectCaseLanName'根据用户选择的语言的名称,分别读取不同的语言文件

  Case"English":

  LanguageFileName=AddSplash(App.Path)&"English.Lan"

  Case"Chinese(Simplify)":

  LanguageFileName=AddSplash(App.Path)&"ChineseS.Lan"

  Case"Chinese(Traditional)":

  LanguageFileName=AddSplash(App.Path)&"ChineseT.Lan"

  CaseElse:

  LanguageFileName=""

  EndSelect

  EndSub

  '翻译文字

  PublicFunctionTranslateStr(sSectionAsString,sKeyAsString,sDefValAsString)AsString

  DimsValueAsString*128

  DimNAsLong

  

  OnErrorResumeNext

  

  TranslateStr=sDefVal

  IfNotFileExists(LanguageFileName)Then

  ExitFunction

  EndIf

  N=GetPrivateProfileString(sSection,sKey,sDefVal,sValue,127,LanguageFileName)

  IfN>0Then

  TranslateStr=Left(sValue,N)

  EndIf

  EndFunction

  '自动转换Form上的一些基本控件(也可自行扩展,目前支持CommandButton,Label,OptionButton,CheckButton)

  PublicSubTranslateForm(FrmAsForm)

  DimIAsLong

  

  OnErrorResumeNext

  

  Frm.Caption=TranslateStr(Frm.Name,"Caption",Frm.Caption)

  ForI=0ToFrm.Controls.Count-1

  If(TypeOfFrm.Controls(I)IsCommandButton)Or(TypeOfFrm.Controls(I)IsLabel)_

  Or(TypeOfFrm.Controls(I)IsOptionButton)Or(TypeOfFrm.Controls(I)IsCheckBox)Then

  Frm.Controls(I).Caption=TranslateStr(Frm.Name,Frm.Controls(I).Name,Frm.Controls(I).Caption)

  EndIf

  NextI

  EndSub

->

精彩图集

赞助商链接