VC開發多語言介面支援的簡單方法

2022-03-25 00:57:52 字數 1562 閱讀 2883

vc開發多語言介面支援的簡單方法

最近在做乙個小程式,要求實現對多語言介面顯示支援功能,並且,介面顯示內容使用者能夠自己設定。

初步設計用ini檔案來配置顯示內容,換一種語言的配置檔案,就能夠更換整個系統的顯示語言。考慮到系統規模很小,週期又短,不想用太複雜的方案來解決這個問題,當參考了很多網上類似的設計和**,發現都不是很滿意。

主要問題在於:絕大多數基於ini檔案配置這種簡單應有實現的**,都是針對元件id固定載入,寫死了元件的id號,比如:

strcaption = filemanager.getstring(section,"idc_stc_liststudent","");

setdlgitemtext(idc_stc_liststudent,strcaption);

strcaption = filemanager.getstring(section,"idc_stc_allcontent","");

setdlgitemtext(idc_stc_allcontent,strcaption);

初步設想是:設計統

一、通用的視窗元件caption設定方法,對給定的frame或dialog等window容器元件內的所以元件進行遍歷,當增、減顯示元件不對語言包載入**產生影響,達到自適應介面元件語言包載入效果。

好友文國慶建議:用xml檔案來定義這種對應關係。這個想法觸動了我:反正就是乙個[key,value]的資料,就用已經實現的ini配置檔案也可以啊。於是所有問題解決!

具體設計是:語言包配置檔案就直接設定成元件id與元件顯示資訊的hash表,key = value的形式,比如:btnok元件的controlid為「1003」,中文顯示caption為「登入」,語言包配置內容就是「1003=登入」。

語言包的載入過程為2步實現:

首先,從語言包配置檔案中,讀取所有配置的id、caption條目到vector或者array中。

其次,在遍歷指定視窗中所有元件時,每發現乙個元件,就用其id在已經載入的語言包陣列中查詢,找到就用配置的值修改元件caption屬性;找不到,就認為是不需要動態配置,不做處理。

配置檔案例項:

配置項解釋:section:[login dialog]:介面視窗;等號左邊:視窗中需要設定其caption屬性的元件id;等號左邊:視窗中需要設定其caption屬性的元件caption值;

[login dialog]

1001 = 使用者帳號

1002 = 使用者密碼

1017 = 登  錄

1018 = 退  出

語言包配置資訊載入**:

bool clanguagemanager::loadfromfile()

...//當前section遍歷結束

}//沒有找到section

}//當前行遍歷結束

}return bread;

}修改指定元件caption屬性**:

bool clanguagemanager::setcontrolcaption(cwnd * pctrl, uint ctrlid)

...}

return isok;

}遍歷設定指定視窗所有元件caption屬性**:

wxwidgets的多語言支援

ifndef translation h define translation h endif translation h include translation.h include translationframe.h wxlocale addcataloglookuppathprefix d s...

程式的多語言支援

程式的多語言支援 收藏 經常會遇到這樣的問題,程式要支援多種語言的作業系統。下面就說說vc6下怎樣實現。與第一種方法比,資源dll由於都是在vc6的整合環境中編輯,優點是比較直觀,缺點是需要維護多份資源 且每次修改資源,都要重新編譯和鏈結。第一種方法則只需要修改配置檔案則可。同時,資源dll的方法也...

基於WinForm的多語言開發之介面載入

在 基於winform的多語言軟體開發 一文中,說明載入統一載入資源檔案和動態重新整理介面的方法,現在使用上篇文章中介紹的方法,怎樣來快速開發介面。對資源的的載入有兩種方法,一種是用虛擬方法直接載入資源到介面控制項中,另一種是用反射的方式來進行載入,這種方式需要一些編輯技巧。定義下面的基類 publ...