soberga
soberga

Reputation: 389

Build C# dll from SQL table

I have a SQL-table with three columns: Id, English and Norwegian. Id is the primary key. In my application I have a flag (EN/NO) to decide which language to use for labels, buttons ++ in the GUI. The application is now doing a select * everytime the application loads, and the application is looking up all required values at runtime. But instead of loading the whole dataset for every instance, i want to export these values and create a dll so i can store these values locally.

Is there any possibility of creating this in-code so the dll will renew itself with every build? Or do I have to run some external program to dynamically create ex. a .cs code to copy/paste into my class? (I need to be able to re-run the process because rows will be added every time there is a need for a new label/text)

I have so far thought out three solutions on how to structure my export, but no clue on how to export the data:

  1. Preserve the state of the DataTable in a static context and provide help-methods to standardize the way of getting the values out.

  2. Create a class containing each unique ID as method-name, and a parameter to decide which value to return:

    public static class Names
    {
      public static string 12345(string language)
      {
        switch (language)
        {
            case "EN":
                return "Hello";
            case "NO":
                return "Hei";
            default:
                return "Hello";
        }
      }
    }
    
  3. Create a class containing a searchable list for each language with ID as key and the value (as value)

Upvotes: 1

Views: 546

Answers (2)

aleroot
aleroot

Reputation: 72676

No, i don't like the idea to put internationalization strings into a class library, Why you don't just use the .NET internationalization feature already built in in the framework ?

Resource files are the best solution, not class library for this kind of work ...

Upvotes: 1

ABH
ABH

Reputation: 3439

Why don't you create different resource files for different languages and load the appropriate one depending you the settings. You can do this by using System.Resources.ResourceManager. This article here explains this in detail.

EDIT: Following SO post also discuss this in detail Best practice to make a multi language application in C#/WinForms?

Upvotes: 10

Related Questions