專為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次內.
最后祝愿您的軟件開發成功.
新聞熱點
疑難解答