在上一篇”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文件。