Enum lokalisieren
Frank Dzaebel, erstellt am: 25.10.2008, zuletzt geändert: 25.10.2008
Kategorie:Lokalisierung, .NET-Version:3.5, [Download]

Es gibt viele Szenarien, für die eine Lokalisierung von Enum-Namen sinnvoll und möglich sind. In diesem Beispiel werden die typsicheren Ressourcen des Visual Studio Designers benutzt, um dann später mit dem ResourceManager (GetString) darauf zuzugreifen.

 
Weiterführende und alternative Lösungen:

Resource-Einbindung in C#.NET 2.0 - Visual Studio .NET 2005
CodeProject: Localizing .NET Enums
CodeProject: Binding and using Friendly enums in WPF

using System;
using System.Windows.Forms;
using System.Threading;
using System.Globalization;
using Res = EnumLocalize.Properties.Resources;

namespace EnumLocalize
{
  public partial class Form1 : Form
  {
    public Form1()
    {
      InitializeComponent();
    }

    public enum ValidationCode
    {
      Valid = 1,
      Error = 2,
      Unchanged = 3
    }

    class TestKlasse
    {
      public ValidationCode vc = ValidationCode.Error;

      public override string ToString()
      {
        string name = Enum.GetName(typeof(ValidationCode), vc);
        return Res.ResourceManager.GetString(
          "ValidationCode_" + name) + Res.Infotext;
      }
    }

    TestKlasse testKlasse = new TestKlasse();

    private void btnDeutsch_Click(object sender, EventArgs e)
    {
      Ausgabe("de-DE");
    }

    private void btnEnglisch_Click(object sender, EventArgs e)
    {
      Ausgabe("en-US");
    }

    private void Ausgabe(string culture)
    {
      Thread.CurrentThread.CurrentUICulture = new CultureInfo(culture);
      Thread.CurrentThread.CurrentCulture = new CultureInfo(culture);
      txtLokalisiert.Text = testKlasse.ToString();
    }

    Array values = Enum.GetValues(typeof(ValidationCode));
    
    private void btnNächster_Click(object sender, EventArgs e)
    {
      int wert = (int)testKlasse.vc;
      testKlasse.vc = (ValidationCode)values.
        GetValue((++wert) % values.Length);
      Ausgabe(CultureInfo.CurrentUICulture.Name);
    }
  }
}