windows - MFC 本地化不适用于 Windows 7 的 MUI 安装

标签 windows localization mfc internationalization windows-mui

好的,我们正在编写 MFC 应用程序来使用 built-in localization support with satellite DLL's从 MFC 7 开始。一切似乎都工作正常,除了我的 Windows 7 企业版安装了 MUI 支持,并且使用瑞典语 UI 而不是英语 UI 时,我们的应用程序中仍然显示英语 UI。

应用程序使用瑞典语作为默认语言,并以 AppNameENU.dll 的形式提供英语本地化 DLL,因此 MFC 在这种情况下实际上有意切换到英语,就好像它不关心一样用户在支持 MUI 的 Windows 操作系统中选择,并且仅使用 Windows 安装的默认交付语言?

从 MSDN 页面(上面的链接)中,我读到它,因为 MFC 实际上应该考虑这些设置,但我不是 100% 确定。有人可以澄清一下吗?

最佳答案

这是因为MFC对语言选择的支持有一个设计错误:只有当没有DLL与用户或系统语言匹配时,它才会决定从exe加载资源。

在您的情况下:它设置其(有序)语言列表,如下所示:

  1. 瑞典语(用户语言)
  2. 英语(系统语言)

然后它会查找您的 DLL(错误:只有 dll,而不是 exe!):与瑞典语不匹配。但有一个英语匹配!

解决方案:使用我的 CLanguageSupport类(class)。即使在您的用例中它也能正常工作。

请随意使用它。您只需几分钟即可将其合并到您的应用程序中,并且它使用与您已经实现的完全相同的 DLL 方案。 (提示:不要忘记必须删除 CWinApp::InitInstance() 调用的步骤!)

此外,如果您有兴趣(这是可选的),您可以获得一个自动语言菜单,让用户选择自己的偏好,以防默认设置不是他想要的。

如果您正在寻找一个出色的工具来帮助您管理翻译,请考虑 appTranslator ;-)

HTH,

关于windows - MFC 本地化不适用于 Windows 7 的 MUI 安装,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1553656/

相关文章:

c++ - Qt 如何知道何时连接了新的 USB 存储设备?

c - 如何使用 Windows MessageBox() C 函数?

c - 通过随机重命名覆盖 Windows 中的文件失败

c# - Thread.CurrentCulture 未保存到实例变量?

c++ - 如何使用 CWinThread::OnIdle?

c++ - MFC 全局键盘 Hook

windows - 为什么 malloc 会覆盖 RSP 和 RSP+8?

android - 如何检测android设备的绝对旋转

c++ - 从主框架窗口标题中删除 "Untitled - "

ios - 如何将 UILabel 文本的英语更改为西类牙语