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);
}
}
}