在上一篇”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
爲了清楚地看到生成不同的資源文件是否相同,可以查看XML文件或者DLL是否除了語言不同之外,其他的都相同,特別是ID。對於DLL和XML的互換,Xtreme ToolkitPro提供了一個很好的工具,ResourceEditor.exe,可以在源碼目錄中Xtreme ToolkitPro v15.2.1\Utils看到,當然,本人還是比較喜歡用Beyond Compare這個工具比較兩個文件的不同之處:///////////////////////////////////////////////////////////////////////////// // // 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
- 可以看出,除了語言的提示文本不一樣之外,其他的都一致,這樣就可以很方便地根據自己需要的語言進行修改。
關於MultiLanguageDemo程序的語言定義就講解到此,將在下一篇繼續介紹在程序中動態添加語言資源DLL文件。