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文件。





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