2

好的,所以我们正在编写我们的 MFC 应用程序,以利用自 MFC 7 以来对卫星 DLL 的内置本地化支持。一切似乎都工作正常,除了我的 Windows 7 Enterprise Edition 安装了 MUI 支持并使用瑞典语 UI在我们的应用程序中仍然显示英文 UI,而不是英文 UI。

该应用程序使用瑞典语作为其默认语言,具有 AppNameENU.dll 形式的英语本地化 DLL,因此 MFC 在这些情况下实际上是有意切换到英语语言,就好像它不关心用户在启用 MUI 的 Windows 操作系统中的选择一样,并且只有 Windows 安装的默认发布语言?

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

4

1 回答 1

4

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

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

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

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

解决方案:使用我的ClanguageSupport类。即使在您的用例中也能正常工作。

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

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

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

高温下,

于 2009-10-13T11:44:27.940 回答