首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> VC >> VC 教學

C++ 多國語言支援實戰:以 eMule 為例的資源 DLL 動態切換架構

     編輯:VC 教學

為何選 eMule 做範例?

開源、支援動態切換語言無需重啟、實作完善,極適合研究多語言架構。

核心架構:主程式 + 語言資源 DLL

  • 每種語言一個獨立 DLL(約 40 個),僅包含字串表。
  • 主程式內建英文字串表作為回退。
  • 所有 UI 字串分配固定 ID(約 1400+),各語言 DLL 同 ID 對應翻譯。
  • 執行時動態載入對應 DLL,透過 LoadString 取得當前語言文字。

關鍵流程(I18n.cpp)

  1. InitLanguages():掃描語言目錄,建立靜態語言表 _aLanguages,標記可用語言。
  2. LoadLangLib(lid):依語言 ID 載入 DLL,句柄存入靜態 _hLangDLL;英文直接用主模組資源(_hLangDLL = NULL)。
  3. 載入失敗 → 嘗試系統語言 → 仍失敗則回退英文。
  4. 驗證:嘗試讀取一字串,失敗視為 DLL 損壞,強制回退英文。
  5. 取字串介面:GetResString(uStringID) 從 _hLangDLL 或主模組載入。

動態切換 UI 文字

每個對話框實作 Localize(),內部呼叫 GetResString 更新所有控件文字。切換語言後,依序呼叫各視窗 Localize() 即時刷新。

重要設定

資源視圖中將對話框 Language 屬性設為「非特定語言」,否則會出現亂碼。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved