MFC/C#.NET混合模式本地化(多语言/多语言应用)

Posted

技术标签:

【中文标题】MFC/C#.NET混合模式本地化(多语言/多语言应用)【英文标题】:MFC / C#.NET mixed mode localization (multi language / multilingual application) 【发布时间】:2014-02-12 13:47:03 【问题描述】:

我们这里有一个复杂的应用程序,它是用 MFC 和 C# 编写并以混合模式运行的。我们现在正在尝试设置此应用程序的多语言版本。因此,我为每个现有资源文件创建了英文资源文件(在 .NET 部分)并翻译了所有必要的字符串。例如:MyResource.resxMyResource.en.resx。原始语言是德语。 现在,如果我启动仅包含 .NET-Projects 且将 Thread.CurrentThread.CurrentUICulture 设置为“en-US”的解决方案,所有对话框和文本都会按预期以英文显示。 MFC 部分(.exe 文件中的编译代码)使用名为 Lingobit 的工具进行翻译,该工具替换了该 .exe 文件中的字符串,并且工作正常。到目前为止,一切都很好。 但是在启动完整的混合模式应用程序时,所有 .NET 部分的英文资源文件都将被忽略,它会退回到德文资源文件。 我还尝试使用 Lingobit 来翻译 .NET-DLL。 Lingobit 为我原来的 mylib.dll 创建了一个单独的 mylib.resource.dll,这似乎也被忽略了。 我在这里没有想法如何创建此应用程序的英文版本。有什么建议可以让我的混合模式应用程序使用英文资源文件吗? 提前致谢。

【问题讨论】:

【参考方案1】:

解决方案本身很简单,但我花了一段时间才找到它。如果您编译 .Net 项目,Visual Studio 会在您的输出文件夹中创建一个“en”文件夹(例如:bin/Debug/)。此文件夹不是在编译混合模式版本时创建的,因此只需将其从 .Net 输出文件夹复制到混合模式输出文件夹即可。 此外,我将创建一个小脚本,以便在构建后将其复制到所需的位置。

祝大家好运。

【讨论】:

以上是关于MFC/C#.NET混合模式本地化(多语言/多语言应用)的主要内容,如果未能解决你的问题,请参考以下文章

.NET CORE 多语言实现方案

使用 GraphQL 查询从多语言模式中获取本地化数据

.Net之多语言配置

如何在多语言 asp.net MVC 网站的 URL 中支持有语言和无语言的路由

节:字节码与多语言混合编程

节:字节码与多语言混合编程