避免 MFC LOC DLL
Posted
技术标签:
【中文标题】避免 MFC LOC DLL【英文标题】:Avoid MFC LOC DLL 【发布时间】:2011-11-07 16:46:15 【问题描述】:我正在开发一个已本地化为多种语言的 MFC 应用程序。它动态链接到 MFC,如果目标系统安装了 MFC LOC DLL,它会按预期自动使用这些 DLL。但是,在其中一些操作系统上,我们有更喜欢英文的用户,我有没有办法强制它使用英文 DLL 而不是翻译的 MFC LOC DLL?
【问题讨论】:
我不确定您指的是哪种系统(Windows 除外,这很明显),但也许喜欢英语的用户(我怀疑给定国家/地区的每个人......)可以设置他们喜欢的 UI 语言在区域设置到英语?除此之外,您需要编写自定义加载程序来以首选语言而不是操作系统默认加载 DLL。你能发布这段代码来加载你的本地化库吗?特别是关于区域设置检测(我想知道您使用什么代码来了解 LCID)? 【参考方案1】:恕我直言,MFC LOC 机制很糟糕。应该尽量避免,因为它弊大于利
正如您所经历的那样,MFC LOC 无法使用多个翻译,因此在我们行业的耻辱殿堂中应该占有一席之地。想想所有这些导致其他不相关的基于 MFC 的应用程序出现部分翻译的应用程序。
这就是为什么我认为最好在您自己的资源 DLL 中提供 MFC 资源的翻译。
免责声明:我的广告如下 ;-)
appTranslator 是您翻译 MFC 应用程序的朋友。它会自动将您资源的 MFC 部分翻译成多达 27 种语言。它会自动构建您的资源 DLL。还有更多...
/广告结束
我的这个CodeProject article 提供了现成的代码来支持资源DLL 的加载和语言菜单的支持。好的,这不是你的问题,但我认为它可能会有所帮助。哦,因为它是免费的,所以不在免责声明中;-)
【讨论】:
如果我动态链接到 MFC,如何防止它加载系统上已经存在的 LOC DLL?静态链接到 MFC 是唯一合理的解决方案吗? 如果您将 MFC dll 与您的应用并排安装,它不会寻找共享的 MFC loc dll。 我尝试并排使用 MFC,在本地目录中使用合并模块和私有程序集,并且都仍然设法找到由之前安装的完整可再发行安装安装的 LOC DLL . 你用的VS和MFC哪个版本?以上是关于避免 MFC LOC DLL的主要内容,如果未能解决你的问题,请参考以下文章