在语言选择上选择适当的 .rc 文件
Posted
技术标签:
【中文标题】在语言选择上选择适当的 .rc 文件【英文标题】:Pick appropriate .rc file on language selection 【发布时间】:2016-06-01 07:47:35 【问题描述】:在我的 MFC 应用程序中,有三种不同语言(日语、英语、俄语)的三个资源文件(.rc)和一个包含其他三个资源文件的 main.rc 文件。所有资源文件包含不同的相同资源字符串语言,它们都包含相同的资源头resource.h。 当用户运行应用程序时,会出现弹出窗口,要求用户选择一种语言。基于用户选择应用程序必须选择适当的 rc 从中加载资源。
当用户选择一种语言时,有什么方法可以选择合适的资源文件。
【问题讨论】:
操作系统已经知道用户喜欢什么语言。如果他喜欢切换,他通常会更喜欢使用语言栏。如果您出于某种原因想要强制选择而不是将其留给用户,请使用 SetThreadPreferredUILanguages()。在 XP 上使用 SetThreadUILanguage()。 【参考方案1】:在 MFC 中,这是通过附属 DLL 完成的。
将每种语言的 RC 放在一个单独的 DLL 中。比在加载应用程序时加载特定语言 DLL 并使用 AfxSetResourceHandle 与此句柄。
在这种情况下,在此 DLL 中搜索资源。
【讨论】:
我在 .rc 文件中只有 10-15 个资源字符串,没有别的。为每个 .rc 文件创建 DLL 没有任何意义。 @VishalChavan 您可以将字符串放在同一个 .rc 文件中的不同范围内(例如 jap:1000-1999,eng:2000-2999,rus:3000-3999),具体取决于应用的语言您传递给 LoadString 的 id 的偏移量。 我支持 Michael Walz 的想法。如果没有不同的 ID,我无法在一个 exe 中执行此操作。 @MichaelWalz 这可能是更简单的解决方案。非常感谢【参考方案2】:另一种方法是考虑在您的项目中添加额外的stringtables
。
此处提供了更多详细信息:
http://www.dev102.com/2008/10/20/how-to-localize-your-application-using-string-tables/
基本上,您添加一个额外的表格并在资源编辑器中设置文化信息。然后,您可以在获取值之前指定该文化。
提供的示例是针对 C# 的,但原理是一样的。
如果需要,可能的前进方式。
【讨论】:
以上是关于在语言选择上选择适当的 .rc 文件的主要内容,如果未能解决你的问题,请参考以下文章