Frage

Ich habe eine Frage zu mehrsprachigem Datenbank-Design hier gepostet,
[] Was ist best Practices für die mehrsprachige Datenbank-Design?
I Martin Vorschlag mag, aber ich habe jetzt eine Frage, was die beste Art und Weise Geschäft sein wird, Objekte zu erstellen? Wenn ich Produkt zu schaffen, das wird enthält ProductTranslation Objekt, wird die Bindung und arbeitet in UI komplex sein, wenn nur das lokalisierte Objekt Ich werde ein anderen Objekte für CMS
Dank viel schaffen müssen!

War es hilfreich?

Lösung

Schwer zu beantworten, da dies auf Ihren genauen Bedürfnissen abhängt. Was wir an einem Ort haben, ist dies (basierend auf dem DB-Modell in der anderen Frage beschrieben):

  • die Business-Objekte werden nach der Datenbank modelliert, dh wir eine Klasse Produkt haben, die eine Sammlung von ProductTranslation Objekte hat
  • in Produktklasse haben wir Eigenschaften für die mehrsprachige-Daten, z.B. Beschreibung
  • die Getter dieser Eigenschaften das richtige Übersetzung Objekt nachschlagen (basierend auf der aktuellen Sprache) und geben den entsprechenden Wert

ein sehr einfaches Beispiel (nur die relevanten Teile angezeigt):

class ProductTranslation
{
    public string Description;
}
public class Product
{
    private List<ProductTranslation> _translations;

    private ProductTranslation GetTranslation(string language)
    {
        // return translation for specified language
        // or return translation for default language           
    }

    public string Description
    {
        get
        {
            return GetTranslation(GetCurrentLanguage()).Description;
        }
    }       
}

Wir haben uns für diesen Ansatz für eine ASP.NET Web-Anwendung. Die Current kann für jeden Benutzer unterschiedlich sein (Benutzer ihre bevorzugte Sprache für die Benutzeroberfläche und die Daten auswählen kann). Dieser Ansatz ermöglicht es uns, Daten für alle Nutzer weltweit cachen.

Je nach Bedarf kann dieser Ansatz nicht das Beste sein. Z.B. es könnte besser sein, um die Produkt- und ProductTranslation Tabellen als ein Business-Objekt (Produkt), die für eine bestimmte Sprache (zB wenn die Daten schreibgeschützt sind und es ist nicht erforderlich, es applikationsweit zwischenzuspeichern) geladen wird dann zu modellieren.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top