C# 在运行时添加语言

C# 在运行时添加语言,c#,winforms,multilingual,C#,Winforms,Multilingual,我有一个多语言的windows应用程序,在resx文件中使用标准的.net本地化 现在,我请求添加一个可能性,用户可以创建自己的语言文件,这些文件最初不受支持,并将它们添加到应用程序中,而无需重新编译 实现这一目标的最佳方法是什么 我正在考虑将语言转移到数据库中,然后使用第二个工具将翻译添加到数据库中,但更愿意保持当前的方法,如果可以动态添加resx文件。您可以将翻译写入.resx文件,只需将该文件的位置添加到数据库中,然后在需要翻译某些标签时,只需转到数据库查看该文件的位置,然后从中读取。我不

我有一个多语言的windows应用程序,在resx文件中使用标准的.net本地化

现在,我请求添加一个可能性,用户可以创建自己的语言文件,这些文件最初不受支持,并将它们添加到应用程序中,而无需重新编译

实现这一目标的最佳方法是什么


我正在考虑将语言转移到数据库中,然后使用第二个工具将翻译添加到数据库中,但更愿意保持当前的方法,如果可以动态添加resx文件。

您可以将翻译写入.resx文件,只需将该文件的位置添加到数据库中,然后在需要翻译某些标签时,只需转到数据库查看该文件的位置,然后从中读取。我不确定它是否适合本地化库…

您可以使用的一个选项是将翻译保存在XML文件中。这样,用户就可以将自己的XML文件放入翻译所在的文件夹中。

这正是我不使用.NET本地化而编写自己的XML文件的原因

我将翻译存储在独立于EXE的文件中,有一个基于Windows窗体的GUI用于翻译,我可以将其嵌入任何应用程序(并使用WPF克隆),并且允许用户在不重新启动应用程序的情况下切换语言

我不明白为什么有人想要它有什么不同,为什么微软创造了一个如此糟糕和有限的系统


不幸的是,我现在无法发布我的系统,但我希望我能很快发布。

这就是为什么我不使用.NET本地化,而是自己编写的。我将翻译存储在独立于EXE的文件中,有一个基于Windows窗体的GUI用于翻译,我可以将其嵌入任何应用程序(并使用WPF克隆),并且允许用户在不重新启动应用程序的情况下切换语言。我不明白为什么有人想要它有什么不同,为什么微软创建了一个如此糟糕和有限的系统。有各种各样的选项可以用更简单的东西来取代.Net定位器。每个windows控件都有一个名称,您可以在窗体加载/语言开关上实现一个简单的基于名称的查找。@Timwi感谢您的评论。我决定采用你的方法。你能为这个问题写一个答案让我接受吗?@FedorHajdu:我可以,但我很惊讶你发现它很有用。如果我可以发布我的系统并将您链接到它,那么我会觉得更有帮助,这样您就不必重新实现它:)