我有一个现有的MFC产品,并计划通过使用仅限资源的DLL来支持其他几种国家语言。我已经阅读了很多关于如何解决这个问题的文章和教程,但承认我对Windows资源没有太多深入的了解(大多只是使用VS 2008的图形界面)。
我想要了解的主要领域是,似乎这些DLL的所有资源源文件(即resource.rc) - 以及主程序 - 应该共享相同的资源副本。 H。毕竟,所有这些IDD_xxx值必须保持一致,并且似乎必须保持多个resource.h文件同步,使资源更新变得更加复杂!
所以我对此是正确的,有没有人有任何关于如何最好地实现这一点的提示?我应该修改DLL项目中的resource.rc以指向主程序目录中的“master”resource.h吗?
答案 0 :(得分:0)
是的,请确保使用相同的resource.h文件。
一种方法是将需要翻译的资源复制到新资源项目中 - 例如菜单,字符串,对话框等内容。除非您在其上放置一些特定于语言的文本,否则可能不需要翻译位图和图标。如果你知道你的localse,在程序启动时你可以用你手动加载的资源DLL调用AfxSetResourceHandle()。
如果您拥有大量的DLL和EXE,另一种解决问题的方法是使用二进制资源编辑工具。他们所做的是从您的资源创建令牌文件。您的翻译人员使用二进制编辑工具编辑令牌文件。完成所有操作后,您将运行一个工具将翻译应用于二进制文件。基本上,您不分发资源DLL,而是为每种语言分发不同版本的DLL。这些工具足够聪明,因此如果您进行更改,例如添加字符串或对话框,它将被拾取并且您的翻译人员可以看到他需要翻译新内容。之前翻译的作品将保存在令牌文件中。这就是我们在商店里做的事情。我们曾经使用过Microsoft的Localization Resource工具包。我不知道我们是否还在使用它,因为现在是其他人的责任。
答案 1 :(得分:0)
我发现MSDN文章ID 198846是通过dll共享资源的良好起点,虽然它确实需要更新Visual Studio的新版本,但它很容易理解。