MrL*_*ane 8 mfc localization resource-file string-table visual-c++-2010
我是一个不得不在MFC应用上做一些工作的.NET人.该应用程序是VS2008 MFC可执行文件,我已转换为VS2010.原始开发人员通过在应用程序命令行中指定具有键值对的.txt文件的名称来进行本地化.安装的可执行文件快捷方式指定了一个不同的.txt文件,具体取决于安装该应用程序的国家/地区.如果您直接运行.exe,这当然不起作用.对我来说,这似乎是一种奇怪的方式.
我想用MFC方式做这个,但我很难在Google上找到明确的答案.我的理解是.rc文件中的字符串表应该用于本地化?这是目前MFC的最佳实践吗?
关于字符串表,我已经读过,实践是为不同的语言创建多个字符串表.MFC应用程序如何选择使用哪种语言?它是基于机器当前语言设置还是我可以控制它(可能是我们希望语言由我们也在构建的Wix .msi安装程序指定)?
我还读到在MFC应用程序中嵌入所有资源已经失宠了,现在你应该编译单独的资源.dll?这是真的生病调查如何做到这一点......
最后,我是否必须做一些特殊的事情来让MFC支持Unicode或默认是MFC Unicode?
谢谢
Ser*_*ier 10
这个想法是所有可本地化的项目都应该存储在资源中.标准UI对象(如菜单和对话框)会自动存储在那里(资源),但字符串文字(例如:错误消息,消息框提示等)等项目应从源代码中提取到字符串表中.我的这篇简短的代码项目文章演示了如何轻松地从代码中的字符串表中提取字符串.
注意:资源脚本(.rc)中应该只有一个字符串表.
从那以后,您可以翻译资源并创建资源DLL(也称为附属DLL).我们的想法是为每种语言保留.rc文件的不同副本.每个转换都编译成一个无代码 DLL,充当资源的容器.
我的其他代码项目文章允许您根据系统设置或用户首选项轻松加载资源DLL:代码在您的资源DLL中查找哪些可用语言最符合用户设置(基于用户的UI语言和区域设置).该代码还允许您轻松构建包含所有可用语言的菜单.这样,您的用户可以覆盖默认选项.
免责声明:我的广告如下.随意跳过:-)
关于资源的翻译,翻译管理和资源DLL的创建,您可能需要查看appTranslator.
公元结束:-)
关于Unicode,MFC附带ANSI和Unicode版本的代码.您可以选择是否要构建ANSI或Unicode应用程序:只需在项目设置的第一页中进行选择即可.当然,如果你从头开始,你肯定应该使用Unicode.但如果遗留原因迫使您保持ANSI/MBCS,请不要太担心:它不会阻止您本地化您的应用程序.
多年前,当我不得不在MFC中使用多种语言时,我们使用了单独的资源DLL.您所需要做的就是拨打一个电话来切换资源功能将使用的处理,从那一点开始,所有这些都是自动的.
您需要做的不仅仅是更改字符串.特别是对话框中会有字符串,如果这些字符串在翻译后变得太长,您可能需要更改布局.