實現思想:
傳統的做法是把所有的資源都放到動態庫中,一種語言乙個動態庫,程式執行的時候通重載入不同的動態庫來實現多語言功能。這樣做的缺點是不能動態切換語言,如果更換語言後必須重新啟動軟體。當然,沒有人會需要經常的切換語言玩兒,但是採用動態庫的方法,如果程式需要修改資源的話,就要更新所有的動態庫,這是乙個非常枯燥而且容易出現疏漏的工作。
我的方法是把所有用到的字串都放到檔案中,一種語言乙個檔案,根據選擇的語言到對應的檔案中去載入字串。這樣不但可以動態切換語言,而且使用者可以根據需要自己新增新的語言。
具體實現:
1、程式啟動時檢查所選擇的語言,確定該語言檔案,儲存該檔案路徑
軟體開發網
www.mscto.com
2、提供乙個全域性函式,如 g_loadstring(cstring szid),根據提供的字串id返回
其內容,具體是哪個語言的在函式中判斷,這樣在程式中只要提供乙個字串id就可以自動
載入不同語言的文字了。
3、如何在程式中使用:
原來**:
cstring str;
str = "語言"; 改動後:
cstring str;
str = g_loadstring("ids_language"); 4、對話方塊中如何實現
如果像在程式中使用一樣,每乙個字串都要去載入一次的話,如果對話方塊比較多,工作量可就太大了。
所以我提供了乙個函式g_setdialogstrings(cdialog *pdlg,uint udlgid),每個對話方塊在初始化的時候調 用該函式,傳遞對話方塊的指標,我在函式中迴圈列舉所有的子控制項,逐個設定文字。這樣就可以省去很多任務作
注意:由於靜態文字(cstatic)預設的id是idc_static,值都是65535,無法區分,所以在需要改變其文字的cstatic的id要改一改,不能用預設的
5、語言檔案樣例:
中文版:
[setting]
language=chinese
[string]
ids_menu_file=檔案
ids_menu_file_new=新建(&n)
ids_menu_file_open=開啟(&o)
ids_menu_file_close=關閉(&c)
ids_menu_file_exit=退出(&e)
英文版:
[setting]
language=english
[string]
ids_menu_file=file
ids_menu_file_new=&new
ids_menu_file_open=&open
ids_menu_file_close=&close
ids_menu_file_exit=&exit 軟體開發網
www.mscto.com
c 實現動態多國語言的動態切換
動態多國語言的切換目前大多採用的是動態載入資源 dll,每乙個資源 dll中包含了乙份對應某一語言的字串表,但這種方法的缺點就是需要為每一種語言都要做乙個 dll,程式安裝時資源 dll過於繁多。下面我們將所有的多國語言資源都封裝在乙個動態庫中,然後通過 setthreadlocale api來實現...
c 實現動態多國語言的動態切換
動態多國語言的切換目前大多採用的是動態載入資源 dll,每乙個資源 dll中包含了乙份對應某一語言的字串表,但這種方法的缺點就是需要為每一種語言都要做乙個 dll,程式安裝時資源 dll過於繁多。下面我們將所有的多國語言資源都封裝在乙個動態庫中,然後通過 setthreadlocale api 來實...
Struts實現多國語言切換
摘要 通過下拉框裡各個語言 中文,日本語,english 的選擇,切換jsp頁面文字。tyrone1979 發表於 2005 08 26 13 27 19 1 準備資源檔案。資源檔案命名格式 filename language country.properties.中文檔名為index zh cn....