【问题标题】:How to localize a win32 (Non-MFC) DLL如何本地化 win32(非 MFC)DLL
【发布时间】:2013-06-21 14:45:57
【问题描述】:

我有几个 win32 DLL(非 MFC)以及用于不同语言的单独 .rc 文件,目前我们替换 rc 文件并为每个语言环境再次构建完整的 DLL。 我试图找到一种更好的方法,并发现 MFC DLL 有一个叫做卫星 dll 的东西,其中我们可以有一个用于代码的 DLL 和用于单个 rc 文件的其他资源 DLL。 但是这个资源/卫星 DLL 的解决方案似乎不适用于非 MFC dll。

谁能告诉我本地化此类非 MFC dll 的最佳方法是什么,这样我们就不需要为每个单独的语言环境重新生成完整的 Dll。

提前致谢 拉胡尔

【问题讨论】:

  • 您需要记录您的 Windows 版本要求,如果还需要支持 XP,这不是详细信息。对 Vista 及更高版本的 MUI 支持是 documented here

标签: visual-c++ dll localization mfc


【解决方案1】:

你没有理由不能对非 MFC dll 做同样的事情 - 我已经做过很多次了。

您只需要创建一组纯资源 DLL,为每种支持的语言创建一个 DLL,并且(从您的主 DLL)在运行时动态加载,或者为它们提供所有相同的名称并在安装期间部署正确的版本.

This MSDN page 描述了如何创建仅资源 DLL。虽然它提到它对 MFC 很有帮助,但根本没有必要使用 MFC - 您可以应用 MFC 用来决定加载哪个卫星的相同逻辑。

部分截图

【讨论】:

  • 嗨 Roger,我已经尝试过并创建了一个 dllNameKOR.dll,但是当我将此 dll 放在同一个文件夹中并尝试启动我的产品的韩文版本时,我仍然看到英文资源字符串,这意味着运行时无法加载资源 dll *KOR.dll。我当然可以做 LoadLibrary,但我的 DLL 中有很多对话框,如果我做 LoadLibrary 解决方案,那么我将不得不以编程方式更改所有对话框/UI 按钮的标题和大小(我想通过自动加载来避免)
  • @Rahul 你必须使用LoadLibrary并且你必须为每种语言设计资源(包括对话框模板) - 你不能跳过那一步,即使你使用MFC。 MFC 所做的只是代表您处理LoadLibrary
  • 嗨,Roger,我将所有资源和对话框模板分别放在不同的 rc 文件中。那么您的意思是我必须通过代码将特定于语言环境的设置(x、y、宽度、高度和标题字符串)应用于 UI 元素,而 MFC 不会自动执行此操作?
猜你喜欢
  • 1970-01-01
  • 2013-07-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-06-21
  • 2023-03-14
  • 1970-01-01
相关资源
最近更新 更多