程式實現多國語言的動態切換解決方案

2021-06-10 05:44:58 字數 1411 閱讀 6768

實現思想:

傳統的做法是把所有的資源都放到動態庫中,一種語言乙個動態庫,程式執行的時候通重載入不同的動態庫來實現多語言功能。這樣做的缺點是不能動態切換語言,如果更換語言後必須重新啟動軟體。當然,沒有人會需要經常的切換語言玩兒,但是採用動態庫的方法,如果程式需要修改資源的話,就要更新所有的動態庫,這是乙個非常枯燥而且容易出現疏漏的工作。

我的方法是把所有用到的字串都放到檔案中,一種語言乙個檔案,根據選擇的語言到對應的檔案中去載入字串。這樣不但可以動態切換語言,而且使用者可以根據需要自己新增新的語言。

具體實現:

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....