亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

怎樣在程序中利用C++支持多國語言

2019-11-17 05:02:50
字體:
來源:轉載
供稿:網友
  本文以eMule為例,探討一下多國語言支持的實現。選擇emule,因為它的多國語言支持實現的相當好,可以支持動態切換。而且最要害,它是開源的,可以直接通過源碼來研究它的實現技術。
  emule是利用動態加載資源DLL來實現多語言切換的,每一個資源DLL中包含了一份對應某一語言的字符串表。在源碼的srchybrid/lang 路徑上可以發現一個lang解決方案,其中包含了差不多40個項目,每個項目編譯出來都是一個單獨的DLL。這些DLL在程序安裝時拷貝到指定的目錄中。每個DLL里面都是一個大的string table。emule為每一個用到的字符串(大約為1400多個)都指定了一個固定ID,在不同的DLL中這個ID對應了這個字符串的不同語言的翻譯版本。這樣每當需要這個字串時就通過ID去獲取,在當時程序加載的某一特定語言的DLL,就可以取到相應語言的字串?! ∮⑽陌姹镜膕tring table編譯在主EXE文件中,這樣當某一語言不支持,或DLL文件加載失敗時還可以使用英語版本。  下面我們就看看具體的實現?! ≈饕獙崿F代碼在I18n.cpp文件中。入口函數是 void CPReferences::SetLanguage() ,這個函數在在 void CPreferences::LoadPreferences() 函數中被調用,即載入了程序的各種選項后。當程序第一次運行時,在選項文件(即 preferences.ini)中沒有內容,SetLanguage函數會根據系統的本地語言設置來加載對應的語言DLL資源,所以我們第一次安裝后就是中文,無需設置。這一點我們后面會說到?! ×硗庠凇OOL CPPgGeneral::OnApply() 中也調用了該函數,即用戶在“選項”窗口中改變了語言選擇后?! ≡凇oid CPreferences::SetLanguage() 函數中,首先調用了 static void InitLanguages(const CString& rstrLangDir, bool bReInit = false) 函數。這個函數主要是通過遍歷“語言”目錄(即我們前面說地的,專門用于存放各種語言版本DLL的目錄),來初始化靜態“語言表” (_aLanguages),這是個靜態數組,其中的每一項對應一種支持的語言。凡能找到相應DLL文件的,就在表中標記該語言為支持?! ∪缓笳{用 static bool LoadLangLib(const CString& rstrLangDir, LANGID lid) 來載入相應的語言DLL。這個函數比較簡單,通過查“語言表”(_aLanguages),假如要載入的語言是支持的,就加載相應的DLL文件,并將DLL模塊句柄存到_hLangDLL中,這也是一個靜態變量。我們可以看到假如是英語,是不需要加載的,直接用EXE模塊中的資源字符串表?! 〖偃缯{用LoadLangLib文件加載指定的語言失敗,程序會嘗試判定本地系統的語言集,并加載對應的語言,假如加載也失敗就使用英語。  語言文件加載成功后,程序會嘗試從中加載一個字串,假如失敗,說明可能DLL文件損壞,則再重設語言為英語。英語字串是內置在EXE文件中的,所以是最可靠的?! ≈链?,加載成功,句柄保存在_hLangDLL靜態變量中。  最后在需要字符串的地方程序通過 CString GetResString(UINT uStringID, Word wLanguageID) 或 CString GetResString(UINT uStringID) 函數加載相應的字符串。這個函數的功能很簡單,就是從_hLangDLL指定的模塊中加載字符串資源。假如_hLangDLL為 NULL就是從當前模塊加載,我們前面已經看到了,假如使用英語這個變量的值就是NULL?! ≡趀mule的源碼中,幾乎每個對話框都實現了一個Localize(void)函數,這個函數就是通過調用GetResString來設置對話框上所有控件的文字。在  BOOL CPPgGeneral::OnApply() 函數中我們可以看到,在調用CPreferences::SetLanguage函數切換了語言后,會依次調用對話框和窗口的Localize(void)函數,重新設置UI的文字內容。  最后注重一點,假如你想讓應用支持多語言,在設計對話框時要把對話框的Language屬性設為“非特定語言”。在“資源”視圖中選中相應的對話框節點,再切換到“屬性”視圖就可以看到這個選項了。假如不設置會出現亂碼。 更多文章 更多內容請看C/C++進階技術文檔專題,或

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
日韩黄色高清视频| 亚洲自拍偷拍色图| 最近中文字幕mv在线一区二区三区四区| 欧美激情精品久久久| 亚洲午夜未删减在线观看| 欧美日韩精品在线| 国内精品美女av在线播放| 国产欧美精品xxxx另类| 日韩女在线观看| 久久久久久久久国产精品| 国产精品一区久久久| 欧美成人免费在线视频| 亚洲欧美制服中文字幕| 国产精品亚洲美女av网站| 亚洲第一国产精品| 日韩成人黄色av| 成人在线小视频| 精品在线小视频| 色综合色综合网色综合| 亚洲专区中文字幕| 欧美亚洲激情在线| 一本色道久久综合狠狠躁篇的优点| 精品久久久久久久久久国产| 成人精品在线视频| 成人免费在线视频网站| 国内偷自视频区视频综合| 亚洲视频在线观看网站| 91欧美视频网站| 久久亚洲精品网站| 日韩最新中文字幕电影免费看| 伊人久久综合97精品| 亚洲人成电影在线观看天堂色| 色综合伊人色综合网站| 国产亚洲视频在线观看| 亚洲精品98久久久久久中文字幕| 欧美日韩国产中文精品字幕自在自线| 亚洲色图18p| 精品一区精品二区| 热久久免费国产视频| 精品久久久久久亚洲国产300| 日韩在线视频中文字幕| 亚洲自拍偷拍色图| 色午夜这里只有精品| 国产盗摄xxxx视频xxx69| 亚洲国产中文字幕久久网| 欧美老女人bb| 亚洲精品成人av| 日韩av在线精品| 欧美激情高清视频| 国内精品久久久久伊人av| 国产性色av一区二区| 欧美日韩一区二区三区在线免费观看| 国产精品自产拍高潮在线观看| 久久亚洲精品一区| 丝袜亚洲欧美日韩综合| 日韩中文在线中文网三级| 黄色一区二区在线| 黑人精品xxx一区一二区| 成人久久久久久| 亚洲人成网站免费播放| 在线视频日本亚洲性| 精品丝袜一区二区三区| 亚洲第一页中文字幕| 欧美成在线观看| 在线视频日本亚洲性| 96精品视频在线| 久久九九有精品国产23| 国产精品美女免费视频| 国产精品免费视频xxxx| 国产精品入口日韩视频大尺度| 欧美日韩国产中文精品字幕自在自线| 国产色综合天天综合网| 亚洲欧洲一区二区三区久久| 国产精品久久在线观看| 亚洲一区中文字幕在线观看| 久久久久久国产精品三级玉女聊斋| 最近中文字幕mv在线一区二区三区四区| 揄拍成人国产精品视频| 国模精品系列视频| 亚洲激情久久久| 国产视频观看一区| 亚洲第一区第一页| 日本19禁啪啪免费观看www| 久久亚洲国产成人| xxxxx成人.com| 欧美激情影音先锋| 在线精品播放av| 欧美劲爆第一页| 成人夜晚看av| 91精品国产色综合久久不卡98| 成人久久久久久| 中文字幕免费精品一区| 国产日本欧美一区二区三区| 日韩电影中文字幕av| 热草久综合在线| 亚洲人av在线影院| 这里只有精品视频| 91极品视频在线| 色狠狠av一区二区三区香蕉蜜桃| 亚洲女人天堂av| 国产一区二区三区18| 日韩中文字幕第一页| 国产精品观看在线亚洲人成网| 国产精品一二三在线| 国产一区玩具在线观看| 欧美电影电视剧在线观看| 欧美一级电影免费在线观看| 久久精品福利视频| 久久激情五月丁香伊人| 97香蕉超级碰碰久久免费的优势| 影音先锋欧美在线资源| 国产成人精品电影| 国模视频一区二区三区| 91精品国产综合久久久久久久久| 97视频网站入口| xxxx欧美18另类的高清| 亚洲男女自偷自拍图片另类| www.精品av.com| xvideos成人免费中文版| 黄色91在线观看| 国产有码一区二区| 亚洲免费av电影| 九色成人免费视频| 精品视频在线播放色网色视频| 亚洲电影av在线| 日韩女在线观看| 色黄久久久久久| 久久精品国产69国产精品亚洲| 欧美日韩国产区| 中文字幕亚洲一区在线观看| 久久精品一偷一偷国产| 97国产在线观看| 亚洲日本欧美中文幕| 国产99久久精品一区二区永久免费| 亚洲欧美日本伦理| 国产欧美中文字幕| 国产日韩在线精品av| 亚洲欧美日韩另类| 欧美夜福利tv在线| 日韩有码在线播放| 国内精品久久久久久中文字幕| 国产亚洲欧美日韩精品| 日韩视频第一页| 中文精品99久久国产香蕉| 中文字幕一区二区三区电影| 在线一区二区日韩| 自拍偷拍亚洲欧美| 国产精品福利在线观看| 国产精品av免费在线观看| 久久夜色撩人精品| 亚洲人成电影网站色…| 国产激情视频一区| 国产中文欧美精品| 久久久成人av| 97精品欧美一区二区三区| 国产日韩欧美在线播放| 国产精品色视频| 这里只有精品在线观看| 国产精品日韩欧美大师| 欧美在线视频导航| 国产亚洲精品成人av久久ww| 久久久精品国产一区二区| 国产视频自拍一区| 色综合亚洲精品激情狠狠|