| 

.NET C# Java Javascript Exception

11
Welcher Ansatz zur Lokalisation einer Anwendung ist bei Verwendung des Entity Frameworks (Code First) sinnvoll?

Ich möchte beispielsweise SignalName und SignalCategoryName folgender Tabellen lokalisieren.
public class Signal1
{
public int SignalId { get; set; }
public string SignalName { get; set; }
public SignalCatagory1 SignalCatagory { get; set; }
}

public class SignalCatagory1
{
public int SignalCategoryId { get; set; }
public string SignalCategoryName { get; set; }
}


Wenn die Sprachen z.B. auf Englisch und Deutsch beschränkt wären, könnte folgender - nicht gerade schöner - Ansatz verwendet werden:
public class Signal2
{
public int SignalId { get; set; }
public string SignalNameDE { get; set; }
public string SignalNameEN { get; set; }
public SignalCatagory2 SignalCatagory { get; set; }
}

public class SignalCatagory2
{
public int SignalCategoryId { get; set; }
public string SignalCategoryNameDE { get; set; }
public string SignalCategoryNameEN { get; set; }
}


Ein schönerer Weg geht über eine zusätzliche Lokalisation-Tabelle. Aber ich frage mich, ob dies der beste (einfachste und performanteste) Ansatz ist.

public class Signal3
{
public int SignalId { get; set; }
public string SignalName { get; set; } // default Sprache Beispiel deutsch
public Localisation3 SignalNameLocalisation { get; set; }
public SignalCatagory3 SignalCatagory { get; set; }
}

public class SignalCatagory3
{
public int SignalCategoryId { get; set; }
public string SignalCategoryName { get; set; } // default Sprache Beispiel deutsch
public Localisation3 SignalCategoryNameLocalisation { get; set; }
}

public class Localisation3
{
public int LocalisationId { get; set; }
public string LocalisationText { get; set; }
public string LocalisationCulture { get; set; } // DE, EN, BE ..
}


Wie geht Ihr vor?
News:
26.04.2012
judgy 3,0k 1 1 8
Soll die Sprache denn zur Laufzeit gewechselt werden können bzw. ist immer nur eine Sprache aktiv oder potentiell mehrere?
ffordermaier 26.04.2012
1 Antwort
2
Also ich würde auch eigene Localisierungstabllen dafür aufbauen die wahlweise global oder nur für einen bestimmten Bereich zuständig sind; ich persönlich bevorzug die Globalen.
public class LocalisationRessouce
{
public string RessouceId { get; set; }
public Languages Language { get; set; }
public string LocalValue { get; set; }
}

var loc = new List<LocalisationRessouce>();
loc.Add(
new LocalisationRessouce(){
RessouceId = "City_1"
, Language = Languages.EN_US | Languages.EN_GB
, LocalValue = "City"
});
loc.Add(
new LocalisationRessouce(){
RessouceId = "City_1"
, Language = Languages.DE_DE | Languages.DE_AT
, LocalValue = "Stadt"
});
//...


Wobei ich das ganze in ner Datenbank zur einfacheren Verwaltung handeln würde.
26.04.2012
Floyd 14,6k 3 9
Floyd 14,6k 3 9
In diesem Fall, was ja auch oben mein dritter Vorschlag ist, hat man natürlich bei allen LINQ Anfragen SELECT(m => m.Language == Languages.DE_DE) hinzuzufügen.
So ganz ideal sehe ich es nicht, aber einfacher scheint es wohl nicht zu gehen.
judgy 26.04.2012
Naja du kannst dir ne Funktion dafür machen.
z.B. als Lambda-Funktion
...Where(...).Localize();
Floyd 26.04.2012
Oder du ersetzt die String's durch eine eigene LocalizedString und überschreibst die ToString() Methode.
Floyd 26.04.2012

Stelle deine .net-Frage jetzt!
TOP TECHNOLOGIES CONSULTING GmbH