我有一个现有的MFC产品,并计划通过使用仅限资源的DLL来支持其他几种国家语言。我已经阅读了很多关于如何做到这一点的文章和教程,但我承认我对Windows资源没有太多深入的了解(主要是使用VS2008的图形界面)。
我试图理解的主要方面是,这些DLL的所有资源源文件(即resource.rc) --以及主程序--应该共享相同的resource.h副本。毕竟,所有这些resource.h的值都必须保持一致,而且如果必须保持多个IDD_xxx文件同步,对资源进行更新似乎会更加复杂!
那么,我说的对吗?有没有人有什么建议来最好地实现它呢?我是否应该修改DLL项目中的resource.rc,使其指向主程序目录中的“主”资源.h?
发布于 2012-03-30 07:11:32
是的,一定要使用相同的resource.h文件。
一种方法是只将需要翻译的资源复制到新的资源项目中--比如菜单、字符串、对话框。位图和图标可能不需要翻译,除非您在它们上面放置一些特定于语言的文本。如果您知道自己的本地环境,那么在程序启动时,您可以使用手动加载的资源DLL调用AfxSetResourceHandle()。
如果您有大量的DLL和EXE,解决此问题的另一种方法是使用二进制资源编辑工具。它们所做的是从您的资源创建令牌文件。您的翻译人员使用二进制编辑工具编辑令牌文件。完成所有操作后,您可以运行一个工具将翻译应用于二进制文件。基本上,您不分发资源DLL,而是为每种语言分发不同版本的DLL。这些工具足够智能,所以如果你做了像添加字符串或对话框这样的更改,它会被提取出来,你的翻译人员可以看到他需要翻译一些新的东西。先前翻译的作品将保存在令牌文件中。我的店里就是这么做的。我们过去常常使用微软的本地化资源工具包。我不知道我们是否还在使用它,因为它现在是别人的责任了。
发布于 2012-04-24 17:16:35
我发现MSDN文章ID 198846是通过dll共享资源的一个很好的起点,尽管它确实需要更新以更新较新版本的visual studio,但它很容易理解和理解。
http://support.microsoft.com/kb/198846
https://stackoverflow.com/questions/9928449
复制相似问题