Ho sviluppato alcuni software che consentono ai miei utenti di allegare una descrizione ad alcune informazioni specifiche non linguistiche:
Modello pseudocodice:
item():
ID
creationdate
byline //Only one byline for the object
description //Only one description for the object
faq:
faqID
question
answer
itemID //ForeignKey
Quindi questo è fondamentalmente un modello semplice in cui un elemento informativo ha una descrizione e un numero qualsiasi di domande faq ad esso correlate.
Se il mio utente ora desidera avere traduzioni per la sua descrizione e domande faq, qual è il modo canonico per estendere il modello?
Alcuni candidati a cui ho pensato:
- Aggiungi un campo alias (FK a sé) nelle informazioni e un campo di lingua. Quindi disporre della logica aziendale che trova la lingua desiderata.
- Upside: i campi obbligatori sono obbligatori per qualsiasi inserimento linguistico. Crei traduzioni parziali. Ti verrà ricordato quando lo schema aggiunge un altro campo di testo.
- Lato negativo: ora ci sono due tipi di oggetti nella tabella: oggetti lingua principale e oggetti alias.
- Aggiungi una tabella con tutti i campi specifici della lingua (descrizione) e accedi alla stringa tramite la chiave esterna
- Upside: clean, tutto è di tipo proprio
- Lato negativo: più tabelle. Anche la tabella delle FAQ deve in qualche modo assicurarsi che ci sia una traduzione completa per ogni lingua.
Quindi come lo faresti?