C++ 實現多語言程序開發研究與Xtreme ToolkitPro的使用(二)

       在上一篇”C++ 實現多語言程序開發研究與Xtreme ToolkitPro的使用(一)”博文中提到了使用VS2008創建多語言資源DLL文件,本文將繼續講解MultiLanguageDemo程序的開發。

       參考Xtreme ToolkitPro源碼中的MultiLanguage例子,可以發現其中定義了30多種語言,也看到了有一個漂亮的工具條BMP,當然要添加到工程中使用,至於怎麼添加,總結一下傻瓜式,快速完事:

  • 在“Resource.h”頭文件中添加定義:
  • #define IDR_LANGBAR 150
  • 在資源文件中添加包含文件:
  • /////////////////////////////////////////////////////////////////////////////
    //
    // Bitmap
    //
    
    IDR_LANGBAR             BITMAP                  "res\\langbar.bmp"
  • 在“Resource.h”頭文件中添加多國語言定義:(這裏必須收藏)
  • #define XTP_IDC_LANG_ARABIC             35200
    #define XTP_IDC_LANG_BULGARIAN          35201
    #define XTP_IDC_LANG_CHINESE_PRC        35202
    #define XTP_IDC_LANG_CHINESE_TAIWAN     35203
    #define XTP_IDC_LANG_CROATIAN           35204
    #define XTP_IDC_LANG_CZECH              35205
    #define XTP_IDC_LANG_DANISH             35206
    #define XTP_IDC_LANG_DUTCH              35207
    #define XTP_IDC_LANG_ENGLISH            35208
    #define XTP_IDC_LANG_ESTONIAN           35209
    #define XTP_IDC_LANG_FINNISH            35210
    #define XTP_IDC_LANG_FRENCH             35211
    #define XTP_IDC_LANG_GERMAN             35212
    #define XTP_IDC_LANG_GREEK              35213
    #define XTP_IDC_LANG_HEBREW             35214
    #define XTP_IDC_LANG_HUNGARIAN          35215
    #define XTP_IDC_LANG_ITALIAN            35216
    #define XTP_IDC_LANG_JAPANESE           35217
    #define XTP_IDC_LANG_KOREAN             35218
    #define XTP_IDC_LANG_LATVIAN            35219
    #define XTP_IDC_LANG_LITHUANIAN         35220
    #define XTP_IDC_LANG_NORWEGIAN          35221
    #define XTP_IDC_LANG_POLISH             35222
    #define XTP_IDC_LANG_PORTUGUESE         35223
    #define XTP_IDC_LANG_PORTUGUESE_BR      35224
    #define XTP_IDC_LANG_ROMANIAN           35225
    #define XTP_IDC_LANG_RUSSIAN            35226
    #define XTP_IDC_LANG_SERBIAN            35227
    #define XTP_IDC_LANG_SLOVAK             35228
    #define XTP_IDC_LANG_SLOVENIAN          35229
    #define XTP_IDC_LANG_SPANISH            35230
    #define XTP_IDC_LANG_SWEDISH            35231
    #define XTP_IDC_LANG_THAI               35232
    #define XTP_IDC_LANG_TURKISH            35233
    #define XTP_IDC_LANG_UKRAINIAN          35234
    
    然後可以開始創建工具欄:
  • /////////////////////////////////////////////////////////////////////////////
    //
    // Toolbar
    //
    
    IDR_LANGBAR TOOLBAR  16, 15
    BEGIN
        BUTTON      XTP_IDC_LANG_ARABIC
        BUTTON      XTP_IDC_LANG_BULGARIAN
        BUTTON      XTP_IDC_LANG_CHINESE_PRC
        BUTTON      XTP_IDC_LANG_CHINESE_TAIWAN
        BUTTON      XTP_IDC_LANG_CROATIAN
        BUTTON      XTP_IDC_LANG_CZECH
        BUTTON      XTP_IDC_LANG_DANISH
        BUTTON      XTP_IDC_LANG_DUTCH
        BUTTON      XTP_IDC_LANG_ENGLISH
        BUTTON      XTP_IDC_LANG_ESTONIAN
        BUTTON      XTP_IDC_LANG_FINNISH
        BUTTON      XTP_IDC_LANG_FRENCH
        BUTTON      XTP_IDC_LANG_GERMAN
        BUTTON      XTP_IDC_LANG_GREEK
        BUTTON      XTP_IDC_LANG_HEBREW
        BUTTON      XTP_IDC_LANG_HUNGARIAN
        BUTTON      XTP_IDC_LANG_ITALIAN
        BUTTON      XTP_IDC_LANG_JAPANESE
        BUTTON      XTP_IDC_LANG_KOREAN
        BUTTON      XTP_IDC_LANG_LATVIAN
        BUTTON      XTP_IDC_LANG_LITHUANIAN
        BUTTON      XTP_IDC_LANG_NORWEGIAN
        BUTTON      XTP_IDC_LANG_POLISH
        BUTTON      XTP_IDC_LANG_PORTUGUESE_BR
        BUTTON      XTP_IDC_LANG_PORTUGUESE
        BUTTON      XTP_IDC_LANG_ROMANIAN
        BUTTON      XTP_IDC_LANG_RUSSIAN
        BUTTON      XTP_IDC_LANG_SLOVAK
        BUTTON      XTP_IDC_LANG_SLOVENIAN
        BUTTON      XTP_IDC_LANG_SPANISH
        BUTTON      XTP_IDC_LANG_SWEDISH
        BUTTON      XTP_IDC_LANG_THAI
        BUTTON      XTP_IDC_LANG_UKRAINIAN
        BUTTON      XTP_IDC_LANG_SERBIAN
        BUTTON      XTP_IDC_LANG_TURKISH
    END
    
    並加入提示文本:
  • /////////////////////////////////////////////////////////////////////////////
    //
    // String Table
    //
    STRINGTABLE DISCARDABLE 
    BEGIN
        XTP_IDC_LANG_ARABIC         "Arabic (Saudi Arabia)"
        XTP_IDC_LANG_BULGARIAN      "Bulgarian"
        XTP_IDC_LANG_CHINESE_PRC    "Chinese (PRC)"
        XTP_IDC_LANG_CHINESE_TAIWAN "Chinese (Taiwan)"
        XTP_IDC_LANG_CROATIAN       "Croatian"
        XTP_IDC_LANG_CZECH          "Czech"
        XTP_IDC_LANG_DANISH         "Danish"
        XTP_IDC_LANG_DUTCH          "Dutch"
        XTP_IDC_LANG_ENGLISH        "English (United States)"
        XTP_IDC_LANG_ESTONIAN       "Estonian"
        XTP_IDC_LANG_FINNISH        "Finnish"
        XTP_IDC_LANG_FRENCH         "French (France)"
        XTP_IDC_LANG_GERMAN         "German (Germany)"
        XTP_IDC_LANG_GREEK          "Greek"
        XTP_IDC_LANG_HEBREW         "Hebrew"
        XTP_IDC_LANG_HUNGARIAN      "Hungarian"
        XTP_IDC_LANG_ITALIAN        "Italian (Italy)"
        XTP_IDC_LANG_JAPANESE       "Japanese"
        XTP_IDC_LANG_KOREAN         "Korean"
        XTP_IDC_LANG_LATVIAN        "Latvian"
        XTP_IDC_LANG_LITHUANIAN     "Lithuanian"
        XTP_IDC_LANG_NORWEGIAN      "Norwegian (Bokmal)"
        XTP_IDC_LANG_POLISH         "Polish"
        XTP_IDC_LANG_PORTUGUESE     "Portuguese (Portugal)"
        XTP_IDC_LANG_PORTUGUESE_BR  "Portuguese (Brazil)"
        XTP_IDC_LANG_ROMANIAN       "Romanian"
        XTP_IDC_LANG_RUSSIAN        "Russian"
        XTP_IDC_LANG_SERBIAN        "Serbian"
        XTP_IDC_LANG_SLOVAK         "Slovak"
        XTP_IDC_LANG_SLOVENIAN      "Slovenian"
        XTP_IDC_LANG_SPANISH        "Spanish (Spain - Modern Sort)"
        XTP_IDC_LANG_SWEDISH        "Swedish"
        XTP_IDC_LANG_THAI           "Thai"
        XTP_IDC_LANG_TURKISH        "Turkish"
        XTP_IDC_LANG_UKRAINIAN      "Ukrainian"
    END
    
    這裏繼續收藏下“簡體中文”的提示文本:
  • /////////////////////////////////////////////////////////////////////////////
    //
    // String Table
    //
    
    STRINGTABLE DISCARDABLE 
    BEGIN
        XTP_IDC_LANG_ARABIC         "阿拉伯語(沙特阿拉伯)"
        XTP_IDC_LANG_BULGARIAN      "保加利亞語"
        XTP_IDC_LANG_CHINESE_PRC    "中文(中國)"
        XTP_IDC_LANG_CHINESE_TAIWAN "中文(臺灣)"
        XTP_IDC_LANG_CROATIAN       "克羅地亞語"
        XTP_IDC_LANG_CZECH          "捷克語"
        XTP_IDC_LANG_DANISH         "丹麥語"
        XTP_IDC_LANG_DUTCH          "荷蘭語"
        XTP_IDC_LANG_ENGLISH        "英語(美國)"
        XTP_IDC_LANG_ESTONIAN       "愛沙尼亞語"
        XTP_IDC_LANG_FINNISH        "芬蘭語"
        XTP_IDC_LANG_FRENCH         "法語"
        XTP_IDC_LANG_GERMAN         "德語(德國)"
        XTP_IDC_LANG_GREEK          "希臘語"
        XTP_IDC_LANG_HEBREW         "希伯來語"
        XTP_IDC_LANG_HUNGARIAN      "匈牙利語"
        XTP_IDC_LANG_ITALIAN        "意大利語(意大利)"
        XTP_IDC_LANG_JAPANESE       "日語"
        XTP_IDC_LANG_KOREAN         "朝鮮語"
        XTP_IDC_LANG_LATVIAN        "拉脫維亞語"
        XTP_IDC_LANG_LITHUANIAN     "立陶宛語"
        XTP_IDC_LANG_NORWEGIAN      "挪威語(博克馬爾語)"
        XTP_IDC_LANG_POLISH         "波蘭語"
        XTP_IDC_LANG_PORTUGUESE     "葡萄牙語(葡萄牙)"
        XTP_IDC_LANG_PORTUGUESE_BR  "葡萄牙語(巴西)"
        XTP_IDC_LANG_ROMANIAN       "羅馬尼亞語"
        XTP_IDC_LANG_RUSSIAN        "俄語"
        XTP_IDC_LANG_SERBIAN        "塞爾維亞語"
        XTP_IDC_LANG_SLOVAK         "斯洛伐克語"
        XTP_IDC_LANG_SLOVENIAN      "斯洛文尼亞語"
        XTP_IDC_LANG_SPANISH        "西班牙語(西班牙 - 現代風格)"
        XTP_IDC_LANG_SWEDISH        "瑞典語"
        XTP_IDC_LANG_THAI           "泰語"
        XTP_IDC_LANG_TURKISH        "土耳其語"
        XTP_IDC_LANG_UKRAINIAN      "烏克蘭語"
    END
           爲了清楚地看到生成不同的資源文件是否相同,可以查看XML文件或者DLL是否除了語言不同之外,其他的都相同,特別是ID。對於DLL和XML的互換,Xtreme ToolkitPro提供了一個很好的工具,ResourceEditor.exe,可以在源碼目錄中Xtreme ToolkitPro v15.2.1\Utils看到,當然,本人還是比較喜歡用Beyond Compare這個工具比較兩個文件的不同之處:

  • 可以看出,除了語言的提示文本不一樣之外,其他的都一致,這樣就可以很方便地根據自己需要的語言進行修改。

     關於MultiLanguageDemo程序的語言定義就講解到此,將在下一篇繼續介紹在程序中動態添加語言資源DLL文件。





發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章