1

我有一个包含三列的 SQL 表:ID、英语和挪威语。Id 是主键。在我的应用程序中,我有一个标志 (EN/NO) 来决定标签使用哪种语言,GUI 中的按钮 ++。应用程序现在每次加载应用程序时都会执行 select *,并且应用程序正在运行时查找所有必需的值。但不是为每个实例加载整个数据集,我想导出这些值并创建一个 dll,以便我可以在本地存储这些值。

是否有可能在代码中创建此 dll,以便每次构建时 dll 都会自行更新?还是我必须运行一些外部程序来动态创建 ex. 一个.cs代码复制/粘贴到我的班级?(我需要能够重新运行该过程,因为每次需要新标签/文本时都会添加行)

到目前为止,我已经想到了三种关于如何构建导出的解决方案,但不知道如何导出数据:

  1. 在静态上下文中保留 DataTable 的状态,并提供帮助方法来标准化获取值的方式。

  2. 创建一个包含每个唯一 ID 作为方法名称的类,以及一个用于决定返回哪个值的参数:

    public static class Names
    {
      public static string 12345(string language)
      {
        switch (language)
        {
            case "EN":
                return "Hello";
            case "NO":
                return "Hei";
            default:
                return "Hello";
        }
      }
    }
    
  3. 创建一个包含每种语言的可搜索列表的类,其中 ID 作为键,值(作为值)

4

2 回答 2

10

为什么不为不同的语言创建不同的资源文件并根据您的设置加载适当的资源文件。您可以使用System.Resources.ResourceManager. 这篇文章在这里详细解释了这一点。

编辑:遵循 SO 帖子还详细讨论了在 C#/WinForms 中制作多语言应用程序的最佳实践?

于 2012-05-25T10:35:43.283 回答
1

不,我不喜欢将国际化字符串放入类库的想法,为什么不直接使用框架中已经内置的.NET 国际化功能?

资源文件是最好的解决方案,而不是此类工作的类库......

于 2012-05-25T10:36:31.197 回答