我是一名 .NET 人员,必须在 MFC 应用程序上做一些工作。该应用程序是一个 VS2008 MFC 可执行文件,我已将其转换为 VS2010。最初的开发人员通过在应用程序命令行上指定包含键值对的 .txt 文件的名称来进行本地化。已安装的可执行文件快捷方式会根据安装应用程序的国家/地区指定不同的 .txt 文件。如果您直接运行 .exe,这当然不起作用。对我来说,这似乎是一种奇怪的做事方式。
我想以正确的 MFC 方式执行此操作,但我很难在 Google 上找到明确的答案。我的理解是 .rc 文件中的字符串表应该用于此本地化?这是 MFC 当前的最佳实践吗?
关于字符串表,我读到实践是为不同的语言创建多个字符串表。 MFC应用程序如何选择使用哪种语言?它是基于机器当前的语言设置还是我可以控制它(我们可能希望由我们也在构建的 Wix .msi 安装程序指定语言)?
我还读到,在 MFC 应用程序中嵌入所有资源已经不再受欢迎,现在您应该编译单独的资源 .dll?这是真的吗,我调查一下如何做到这一点......
最后,我是否需要做一些特殊的事情才能让 MFC 支持 Unicode,或者 MFC 默认情况下是 Unicode 吗?
Thanks
这个想法是所有可本地化的项目都应该存储在资源中。标准 UI 对象(例如菜单和对话框)会自动存储在其中(资源),但字符串文字(例如:错误消息、消息框提示等)等项目应从源代码提取到字符串表。这个短代码项目文章我的演示了如何轻松地从代码中的字符串表中提取字符串。
注意:您的资源脚本 (.rc) 中应该只有一个字符串表。
从那时起,您可以转换资源并创建资源 DLL(又名卫星 DLL)。这个想法是为每种语言保留 .rc 文件的不同副本。每个翻译都被编译成一个codelessDLL 充当资源的容器。
另一篇代码项目文章我的代码可以让您根据系统设置或用户首选项轻松加载资源 DLL:代码会在您的资源 DLL 中查找可用语言与用户设置最匹配的语言(基于用户的 UI 语言和区域设置)。该代码还可以让您轻松构建包含所有可用语言的菜单。这样,您的用户就可以覆盖默认选择。
免责声明:我的广告如下。随意跳过:-)
关于资源的翻译、翻译的管理和资源DLL的创建,你可能想看看应用翻译器.
广告结束:-)
关于 Unicode,MFC 附带了 ANSI 和 Unicode 版本的代码。您可以选择构建 ANSI 还是 Unicode 应用程序:只需在项目设置的第一页中进行选择即可。当然,如果您是从头开始,那么您绝对应该使用 Unicode。但是,如果遗留原因迫使您保留 ANSI/MBCS,请不要太担心:它不会阻止您本地化您的应用程序。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)