【问题标题】:MFC: Steps localizing MFC APP with seperate resource dllsMFC:使用单独的资源 dll 本地化 MFC APP 的步骤
【发布时间】:2013-07-02 08:13:55
【问题描述】:

在有人抨击我之前,请先阅读此内容,然后阅读此内容,我已尝试通过以下链接实现 MFC 的国际化。

创建资源 DLL: MFC 组件的本地化 http://msdn.microsoft.com/en-us/library/x6h91d9w.aspx

旧版 MFC 的本地化 htp://support.microsoft.com/kb/198846/en-us

我是 MFC 的新手,所以请善待您的回答。因此,为了使用 MFC 7 及更高版本进行本地化,我遵循了这些步骤。 (目前使用 MFC 和 Visual Studio11)

  1. 在共享 DLL 中使用 MFC 创建了一个 MFC 项目 (MyApp)
  2. 为了向应用程序添加另一种语言(德语),我创建了一个 win32 Dll 项目 (MyAppDEU)
  3. 将资源文件 (MyApp.rc) 复制到同一个文件夹中并重命名为 MyAppDEU.rc
  4. 将 MyAppDEU.rc 文件添加到 dll 项目中
  5. 在 MyAppDEU.rc 的资源视图中,将 VS_VERSION_INFO -> 块头更改为“Deutsch (000704b0)”
  6. 更改了字符串表中的一些字符串以查看主应用加载时的差异
  7. 将 MyAppDEU 项目的输出更改为在 MyApp 输出文件夹中构建
  8. 编译 MyAppDEU 以获取 Dll
  9. 编译 MyApp 是否遵循第 9 点的说明 http://support.microsoft.com/kb/198846/en-us

所有这些都完成后,我没有看到我的应用程序有任何不同。它加载了我创建应用程序的英文资源文件。我的电脑有一个德语 Windows 8 操作系统。据我所知,MFC 内置了 Satellite Dlls 的多语言支持。我有正确的命名格式 ApplicationNameXXX.dll。 dll与exe在同一目录中。

我希望有人能在这里看到我做错了什么或遗漏了什么。我是 MFC 的新手,非常感谢有关此方面的任何帮助。

【问题讨论】:

    标签: dll localization mfc internationalization satellite


    【解决方案1】:

    [答案改编自this SO answer]

    我成功地使用了一种稍微不同的方法,跳过了 MFC 内置的卫星 DLL 多语言支持。

    我们的解决方案中有多个 DLL 项目,每个项目仅包含一组用于单一语言的资源(例如:AppRes_ENU.DLL)。在运行时InitInstance(),我们选择合适的语言 DLL,代码如下:

    CString sResourceDllName;
    // format sResourceDllName according to the language ("%s\AppRes_%s.DLL")
    hInst_aRes = LoadLibrary(sResourceDllName);
    if (hInst_aRes == NULL)
    {    // handle <resoure-DLL not available>
         return FALSE;
    }
    AfxSetResourceHandle(hInst_aRes);
    

    并使用hInst_aRes 加载字符串、对话框……

    【讨论】:

    • 谢谢,我知道在 InitInstance() 加载 dll。我正在寻找一种使用卫星 dll 和当前语言环境自动加载它的方法(MFC 现在支持)。到目前为止,我使用插入副本在同一个 .rc 文件中创建了多个语言项。它在我的系统中加载了正确的语言。需要将其导出为资源 dll,因此在以不同语言发布时不必打包整个应用程序。该链接似乎很有帮助。我去看看。
    【解决方案2】:

    看看这个软件:http://www.apptranslator.com/。它有助于使用卫星 dll 进行本地化;该文档可能描述了如何做到这一点。一旦你弄清楚我们之间的关系 ::AfxGetResourceHandle() 和 hInstanceHandle 以及所有那些爵士乐,这很简单——了解它的最简单方法是阅读 MFC 源代码。然后你写了一些帮助类然后你就走了:)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-07-16
      • 1970-01-01
      • 2010-09-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多