Frage

Ich muss Produkte für eine E-Commerce-Lösung in einer Datenbank speichern.Jedes Produkt sollte beschreibende Informationen wie Name, Beschreibung usw. enthalten.

Ich benötige, dass jedes Produkt in x Sprachen lokalisiert werden muss.

Bisher habe ich jede Spalte erstellt, die lokalisiert werden soll nvarchar(MAX) und dann speichere ich einen XML-String wie diesen:

<cultures>
    <culture code="en-us">Super fast laptop</culture>
    <culture code="da-dk">Super hurtig bærbar</culture>
</cultures>

Und wenn ich es aus der Datenbank in meine Geschäftslogikobjekte lade, analysiere ich die XML-Zeichenfolge in a Dictionary<string, string> wobei der Schlüssel der Kultur-/Sprachcode ist.

Wenn ich also den Namen eines Produkts anzeigen möchte, mache ich Folgendes:

lblName.Text = product.Name["en-us"];

Hat jemand eine bessere Lösung?

War es hilfreich?

Lösung

Sie sollten die aktuelle Sprache irgendwo speichern (in einem Singleton, zum Beispiel) und verwenden Sie in der Eigenschaft „product.Name“ die Spracheinstellung, um die richtige Zeichenfolge zu erhalten.Auf diese Weise müssen Sie den sprachspezifischen Code nur einmal für jedes Feld schreiben, anstatt überall dort, wo das Feld verwendet wird, über Sprachen nachzudenken.

Angenommen, Ihr Singleton ist in der Localizer-Klasse definiert, die eine Enumeration speichert, die der aktuellen Sprache entspricht:

public class Product
{
  private idType id;
  public string Name
  {
    get
    {
      return Localizer.Instance.GetLocalString(id, "Name");
    }
  }
}

Wobei GetLocalString etwa so aussieht:

  public string GetLocalString(idType objectId, string fieldName)
  {
    switch (_currentLanguage)
    {
      case Language.English:
        // db access code to retrieve your string, may need to include the table
        // the object is in (e.g. "Products" "Orders" etc.)
        db.GetValue(objectId, fieldName, "en-us");
        break;
    }
  }

Andere Tipps

Rob Conerys MVC Storefront-Webcast-Serie hat ein Video zu diesem Thema (er erreicht die Datenbank gegen 17:30 Uhr).Er speichert eine Liste von Kulturen und verfügt dann über eine Product-Tabelle für nicht lokalisierte Daten und eine ProductCultureDetail-Tabelle für lokalisierten Text.

Ressourcendateien

Dies ist im Grunde der Ansatz, den wir mit Microsoft Commerce Server 2002 gewählt haben.Ja, indizierte Ansichten werden Ihre Leistung verbessern.

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