在任何人惹我生气之前,请先阅读此内容,然后再尝试以下链接,以实现与MFC的国际化。
创建资源DLL: MFC组件的本地化 http://msdn.microsoft.com/en-us/library/x6h91d9w.aspx
旧版MFC的本地化 HTP://support.microsoft.com/kb/198846/en-us
我是MFC的新手,所以请善意回答你的问题。因此,为了使用MFC 7及更高版本进行本地化,我遵循了以下步骤。 (目前在Visual Studio11中使用MFC)
所有这些完成后,我没有看到我的应用程序有任何不同。它加载了我创建了App的英文资源文件。我的电脑有德语Windows 8操作系统。据我所知,MFC通过Satellite Dlls内置了多语言支持。我有正确的命名格式ApplicationNameXXX.dll。 dll与exe在同一目录中。
我希望有人能看到我在这里做错了什么或错过了什么。我对MFC很新,并感谢任何帮助。
答案 0 :(得分:0)
[答案来自this SO answer]
我成功地使用了一种稍微不同的方法,使用Satellite DLL跳过了MFC内置的多语言支持。
我们的解决方案中有多个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
加载字符串,对话框,......
答案 1 :(得分:0)
看看这个软件:http://www.apptranslator.com/。它有助于使用卫星dll进行本地化;文档可能描述了如何做到这一点。一旦你想出:: AfxGetResourceHandle()和hInstanceHandle以及所有爵士乐之间的关系,这很简单 - 了解它的最简单方法是阅读MFC源。然后你写了几个帮助类,然后你去了:))