Domanda

Ho inviato una domanda su progettazione di database multilingua qui,
[] Quali sono le best practice per la progettazione di database multi-lingua?
mi piace il suggerimento di Martin, ma ora ho una domanda quale sarà il modo migliore per creare oggetti di business? Se Creerò prodotto che sarà oggetto contiene ProductTranslation, il legame e lavorare in UI sarà complesso, se solo l'oggetto localizzato che dovrà creare un diversi oggetti per CMS
Grazie mille!

È stato utile?

Soluzione

Difficile rispondere, dal momento che questo dipende dalle vostre esigenze. Quello che abbiamo in un unico luogo è questo (basata sul modello DB descritto in altra domanda):

  • gli oggetti di business sono modellati dopo che il database, il che significa che abbiamo una classe di prodotto che ha una collezione di oggetti ProductTranslation
  • in Classe prodotto abbiamo proprietà per l'multilingue-dati, per esempio Descrizione
  • il getter di queste proprietà cercare l'oggetto traduzione corretta (in base alla lingua corrente) e restituire il corrispondente valore

un esempio molto semplice (che mostra solo le parti rilevanti):

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

Abbiamo scelto questo approccio per un'applicazione web ASP.NET. La CurrentLanguage può essere diverso per ogni utente (gli utenti possono selezionare la lingua preferita per l'interfaccia utente ei dati). Questo approccio ci consente di cache di dati a livello globale per tutti gli utenti.

A seconda delle esigenze, questo approccio potrebbe non essere il migliore. Per esempio. potrebbe essere meglio per modellare le tabelle del prodotto e ProductTranslation come un oggetto di business (Prodotto) che viene poi caricato per una lingua specifica (ad esempio, se i dati sono di sola lettura e non è necessario per memorizzare nella cache che l'applicazione a livello).

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top