Private Declare Function GetPrivateProfileString& Lib "kernel32" Alias "GetPrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName As String, ByVal lpDefault As String, ByVal lpReturnedString As String, ByVal nSize As Long, ByVal lpFileName As String)
Private LanguageFileName As String
'选择语言
Public Sub SelectLanguage(LanName As String)
On Error Resume Next
Select Case LanName '根据用户选择的语言的名称,分别读取不同的语言文件
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"
Case Else:
LanguageFileName = ""
End Select
End Sub
'翻译文字
Public Function TranslateStr(sSection As String, sKey As String, sDefVal As String) As String
Dim sValue As String * 128
Dim N As Long
On Error Resume Next
TranslateStr = sDefVal
If Not FileExists(LanguageFileName) Then
Exit Function
End If
N = GetPrivateProfileString(sSection, sKey, sDefVal, sValue, 127, LanguageFileName)
If N > 0 Then
TranslateStr = Left(sValue, N)
End If
End Function
Public Sub TranslateForm(Frm As Form)
Dim I As Long
On Error Resume Next
Frm.Caption = TranslateStr(Frm.Name, "Caption", Frm.Caption)
For I = 0 To Frm.Controls.Count - 1
If (TypeOf Frm.Controls(I) Is CommandButton) Or (TypeOf Frm.Controls(I) Is Label) _
Or (TypeOf Frm.Controls(I) Is OptionButton) Or (TypeOf Frm.Controls(I) Is CheckBox) Then
Frm.Controls(I).Caption = TranslateStr(Frm.Name, Frm.Controls(I).Name, Frm.Controls(I).Caption)
End If
Next I
End Sub
调用很简单,在作为程序主窗口的Form中这么写:
Private Sub Form_Load()
On Error GoTo ErrFun
Language = "English"
If FileExists(AddSplash(App.Path) & "Sys.Ini") Then '从程序的配置文件中读取上次设置的语言文件名称
Open AddSplash(App.Path) & "Sys.Ini" For Input As #1
Input #1, Language
Close #1
End If
SelectLanguage (Language) '设置全局变量,指定使用的语言
TranslateForm Me '自动转换界面文字
[FormMain]
Caption=PCTV Player
LabelCmd1=Start Play
LabelCmd2=Edit Play List
LabelCmd3=Options...
LabelCmd4=Help
LabelCmd5=Exit
LabelCmd6=Exit && Shut down computer
[FormEdit]
Caption=Edit PlayList...
Cmd1=Add Program
Cmd2=Edit Program
Cmd3=Del Program
Cmd4=Move Up
Cmd5=Move Down
Cmd6=Quit Edit
ListView.Title1=ID
ListView.Title2=Time
ListView.Title3=Type
ListView.Title4=Title