VC++6对话框应用基于CString实现多语言字符串加载方案咨询
单一字符串表实现VS6 VC++多语言支持方案
针对你用VS6开发的VC++对话框应用,用单一字符串表存所有语言文本的思路非常合适——毕竟文本量少,这种方式反而更轻便好管理。先给你整理好规范的字符串表示例:
STRINGTABLE BEGIN IDS_STRING_OK_BUTTON_ENG "OK" // 英文确认按钮文本 IDS_STRING_EXIT_BUTTON_ENG "Exit" // 英文退出按钮文本 IDS_STRING_OK_BUTTON_FRA "D'accord" // 法文确认按钮文本 IDS_STRING_EXIT_BUTTON_FRA "Quitter" // 法文退出按钮文本 IDS_STRING_OK_BUTTON_CHS "确定" // 简体中文确认按钮文本 IDS_STRING_EXIT_BUTTON_CHS "退出" // 简体中文退出按钮文本 END
这里给你几个实操小建议,帮你把这个方案落地:
- 统一命名规则:坚持用
IDS_STRING_[文本用途]_[语言缩写]的格式,比如ENG(英文)、FRA(法文)、CHS(简体中文),这样不管是找ID还是批量修改都很方便,不会乱。 - 封装语言加载函数:写一个全局函数来根据当前语言加载对应字符串,避免重复代码。比如:
CString GetLocalizedText(UINT nStringID) { CString strText; strText.LoadString(nStringID); return strText; } // 切换到法文时,就用GetLocalizedText(IDS_STRING_OK_BUTTON_FRA)来设置按钮文本 - 杜绝硬编码文本:所有界面上的显示文本都从字符串表取,别在代码里直接写
SetWindowText("OK")这种,不然切换语言时还要改代码,完全失去多语言的意义。 - VS6编辑器小技巧:打开字符串表编辑器后,可以点击「ID」列标题排序,把同语言的文本归到一起,或者给每组语言加个注释分隔,维护起来更顺手。
内容的提问来源于stack exchange,提问作者donguy76
相关产品推荐
相关产品推荐

