我有一个多语言 C# WinForms 应用程序,它使用资源文件作为多语言文本。是否有可能在不重新编译应用程序的情况下添加包含其他语言的新资源文件。
最终目标是让客户能够将他的应用程序翻译成各种语言并部署新的语言/资源文件,而无需我们重新编译整个应用程序。
您正在寻找“卫星组件”。MSDN网站上有一个很好的解释+教程:Creating Satellite Assemblies
当然,只需创建您的 resx 文件并使用 resgen 独立编译即可。
“资源文件生成器 (Resgen.exe) 将文本(.txt 或 .restext)文件和基于 XML 的资源格式 (.resx) 文件转换为可以嵌入到运行时二进制可执行文件中的公共语言运行时二进制 (.resources) 文件或附属程序集。(请参阅为桌面应用程序创建资源文件。)“
资源文件是嵌入式资源;因此,不编译就不可能添加和使用新的资源文件。一种选择可能是使用卫星组件。
另一方面,您可能只是使用 xml 文件来存储必要的数据,然后使用基于文化的命名约定,应用程序可以从相关的 xml 文件中读取资源。
为每个 GUI 组件创建一个 XML 文档,因此如果您修复语言,您的应用程序将反序列化 xml 文档并填充新值,我不知道更容易的事情