在语言选择上选择适当的 .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 文件的主要内容,如果未能解决你的问题,请参考以下文章

R-Shiny:在文件输入上选择输入反应

在 vuejs 中的两个选择标签上选择不同的值

jQuery UI选项卡 - 如何在悬停上选择选项卡

在 iPad 上选择照片并从相机拍摄

无法在奥利奥上选择文件

无法在 IOS 和 Android 移动设备上选择文件