專為VB製做的多語言軟體開發工具,可以輕鬆完成對視覺化介面的多語言化.

來源:互聯網
上載者:User

專為VB製做的多語言軟體開發工具,可以輕鬆完成對視覺化介面的多語言化,您只需要製做語言套件母板後翻譯複製該母板即可.點這裡下載樣本工程.

介面介紹如下:

啟動表徵圖:
點這裡將啟動該程式.

程式將向您的代碼中添加以下代碼,以便您訪問語言套件:

API:
  Private Declare Function GetPrivateProfileString Lib "kernel32" Alias "GetPrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName As Any, ByVal lpDefault As String, ByVal lpReturnedString As String, ByVal nSize As Long, ByVal lpFileName As String) As Long 
   由於語言套件是使用INI格式儲存的,程式添加了該API函數,如果該API已經存在,將不添加.

在表單的 Load 事件中添加調用介面語言載入子程式的代碼.
Private Sub Form_Load()
Call frmMain.CoderHelper_VBMltLug_InitfrmMain(App.Path + IIf(Len(App.Path) = 3, "", "\") + App.EXEName + ".exe.lag") 'CoderHelper專用程式碼請不要刪除!
  '括弧內的過程是計算語言套件檔案的檔案路徑和檔案名稱,檔案名稱是以可執行檔的路徑為準,其檔案名稱後加".lag"為副檔名的檔案.要翻譯該檔案,請複製後開啟使用文本工具翻譯.在後續版本中,將提供部分翻譯和轉換方面的工具.

添加介面初始化程式.該程式的參數為一個有效語言套件檔案的完整路徑.
Public Sub CoderHelper_VBMltLug_InitfrmMain(lngFileName As String)
'MysticBoy 提醒您:由於一些控制項的屬性可能是唯讀或在運行時是停用,建議調試以下代碼.
Me.CmdDown.Caption = ch_GetKeyVal(lngFileName, "frmMain.CmdDown", "Caption", "V")
{......}
End Sub
 由於部分控制項的部分屬性在運行時是唯讀或是停用,建議在你編譯工程之前,請調試該段代碼,

該函數將用於訪問語言套件檔案,讀取指定欄位中指定鍵的值,如果語言套件無效或沒有該值將使用預設值,即 DefValue參數指定值.
Public Function ch_GetKeyVal(ByVal FileName As String, ByVal Section As String, ByVal Key As String, Optional DefValue As String)
Dim RetVal As String, Worked As Integer
If Dir(FileName) <> "" And FileName <> "" Then
RetVal = String$(255, 0)
Worked = GetPrivateProfileString(Section, Key, DefValue, RetVal, Len(RetVal), FileName) If Worked = 0 Then
ch_GetKeyVal = DefValue
Else
ch_GetKeyVal = Left(RetVal, InStr(RetVal, Chr(0)) - 1)
End If
Else
ch_GetKeyVal = DefValue
End If
End Function

 該函數用於讀取指定語言套件內的字串.字串可能包括代碼中的提示內容或著表單的標題等文本.
Public Function ch_GetStr(Key As String, Optional DefValue As String) '
'請使用此函數讀取字串資訊'如 i = MsgBox(Prompt:=ch_GetStr("SaveFile", "檔案是否儲存?"), Title:=ch_GetStr("SaveFile1", "檔案未儲存"), Buttons:=vbYesNo) '
ch_GetStr = ch_GetKeyVal(App.Path + IIf(Len(App.Path) = 3, "", "\") + App.EXEName + ".exe.lag", "Strings", Key, DefValue)
End Function
  '如果語言套件你另有安排,請改寫這段代碼.

建議添加代碼:
樣本工程中,我們使用了這樣的代碼載入語言,首先把翻譯好的語言套件檔案放置在資源檔中.然後使用以下直徑讀取資源儲存到CoderHelper預設的語言套件檔案完整路徑名稱的檔案.然後調用載入程式來載入語言.
Private Sub mEng_Click()
On Error GoTo errh
Dim lagfn As String, fn As Long
Dim ary() As Byte
fn = FreeFile
lagfn = App.Path + IIf(Len(App.Path) = 3, "", "\") + App.EXEName + ".exe.lag"
Open lagfn For Binary As #fn
ary = LoadResData(103, "lag") 'lag 為資源類型,103為當前語言套件的資原始碼.
Put #fn, , ary
Close #fn
Call frmMain.CoderHelper_VBMltLug_InitfrmMain(App.Path + IIf(Len(App.Path) = 3, "", "\") + App.EXEName + ".exe.lag")'載入語言.
errh:
If Err.Number <> 0 Then
MsgBox Err.Description, vbInformation
End If
End Sub
'多種語言放置在資源中.將方便您的訪問.而載入不同語言,使用此建議代碼,僅僅需要改動的是 ary = LoadResData(103, "lag"),您只需要改動資源ID號即可,多語言,建議最好使用控制項數組.
Private Sub munLag(Index as Integer )
[...]
ary=LoadResData(100+Index,"lag")
[...]
End Sub
這是MysticBoy所建議的方式..

注意:在您所寫的程式碼中不要帶"'CoderHelper專用程式碼請不要刪除!"這樣的內容.否則.在重建代碼時CoderHelper 將認為是CoderHelper 上次工作時添加的代碼.在插入新代碼前將刪除.

此工具為CoderHelper正式發布的組件,因此產品是需要註冊的.不註冊的情況下.將和其它CoderHelper進階組件使用頻率共同計數,限制在50次內.

最後祝願您的軟體開發成功.



相關文章

E-Commerce Solutions

Leverage the same tools powering the Alibaba Ecosystem

Learn more >

Apsara Conference 2019

The Rise of Data Intelligence, September 25th - 27th, Hangzhou, China

Learn more >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。