【问题标题】:Localizing multiple .rc files in Visual Studio for Win32 Project在 Visual Studio for Win32 项目中本地化多个 .rc 文件
【发布时间】:2013-06-28 10:26:20
【问题描述】:

如何在 Visual Studio for Win32 项目中本地化多个 .rc 文件?我已经按照http://multilingualui.blogspot.co.uk/ 此处的教程进行了操作,该教程描述了如何将 win32 解决方案本地化为 2 种语言:英语(美国)和法语(法国),它们分别应用于 en-US 和 fr-FR 项目。但是,每个项目只有一个资源文件:en-US.rc 和 fr-FR.rc。但我不清楚,如果每种语言有 2 个或更多资源文件,例如 en-US.rc、en-US2.rc、fr-FR.rc 和 fr-FR2.rc,我应该更改什么。当我尝试创建这些额外的 .rc 文件并在其中放置一个 STRINGTABLE 资源,然后构建项目时,我收到错误:

1>CVTRES:致命错误 CVT1100:重复资源。类型:MUI,名称:1,语言:0x0409 1>LINK : 致命错误 LNK1123: 转换为 COFF 时失败: 文件无效或损坏

我尝试将 TLBID:id 值更改为 1 以外的值,因为这是针对此问题的建议解决方案,但它不能解决问题。

任何帮助将不胜感激。

【问题讨论】:

  • 避免对资源文件过于花哨,工具可以追溯到石器时代。 25 年是软件开发的狗年。您希望它会为您合并字符串表,它不知道该怎么做。只需将它们保存在一个 .rc 文件中即可。如有必要,您可以使用#include 指令将文件分开。
  • 我会试试的,谢谢你的回答。我只是在寻找将我们的旧项目平稳过渡,该项目有 >50 个 .rc 文件(它们未本地化,仅适用于一种(英语)语言)到一个多语言项目(在我的情况下也需要支持日语) )。

标签: visual-studio winapi visual-c++ localization resource-files


【解决方案1】:

我们的解决方案中有多个 DLL 项目,每个项目只包含一组资源。在运行时InitInstance(),我们选择合适的语言DLL,代码如下:

hInst_aRes = LoadLibrary(sResourceDllName);
if (hInst_aRes == NULL)
{    // handle <resoure-DLL not available>
     return FALSE;
}
AfxSetResourceHandle(hInst_aRes);

并使用hInst_aRes 加载字符串、对话框……

【讨论】:

    【解决方案2】:

    好的,我按照这里的教程http://msdn.microsoft.com/en-us/library/windows/desktop/ee845043(v=vs.85).aspx 操作,它也适用于多个 .rc 文件。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-08-26
      • 2023-04-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多