我有一个包含三列的SQL表:Id,English和Norwegian。 Id是主键。在我的应用程序中,我有一个标志(EN / NO)来决定用于标签的哪种语言,GUI中的按钮++。 应用程序每次加载时都会执行select *,应用程序在运行时查找所有必需的值。但是我没有为每个实例加载整个数据集,而是想导出这些值并创建一个dll,这样我就可以在本地存储这些值。
是否有可能创建此in-code,因此dll会在每次构建时自行更新?或者我必须运行一些外部程序来动态创建ex。一个.cs代码复制/粘贴到我的班级? (我需要能够重新运行该过程,因为每次需要新标签/文本时都会添加行)
到目前为止,我已经考虑过如何构建导出的三个解决方案,但没有关于如何导出数据的线索:
在静态上下文中保留DataTable的状态,并提供帮助方法来标准化获取值的方式。
创建一个包含每个唯一ID作为method-name的类,以及一个用于决定返回哪个值的参数:
public static class Names
{
public static string 12345(string language)
{
switch (language)
{
case "EN":
return "Hello";
case "NO":
return "Hei";
default:
return "Hello";
}
}
}
创建一个包含每种语言的可搜索列表的类,其中ID为键,值为(作为值)
答案 0 :(得分:10)
为什么不为不同的语言创建不同的资源文件,并根据设置加载适当的文件。您可以使用System.Resources.ResourceManager
执行此操作。 This article here详细解释了这一点。
编辑:关注SO帖子后也会详细讨论Best practice to make a multi language application in C#/WinForms?
答案 1 :(得分:1)
不,我不喜欢将国际化字符串放入类库的想法,为什么你不只是使用框架中已经内置的.NET internationalization功能?
资源文件是最好的解决方案,而不是这类工作的类库...