Per i18n, hai diverse soluzioni di complessità crescente.
In primo luogo, memorizzare un modello specifico della lingua in un file delle proprietà. Per esempio. messages.en
può memorizzare la proprietà. Funziona per un testo breve e semplice.
pagination.text = [X] of [Y]
Ma messages.zh
potrebbe memorizzare
pagination.text = [X of Y]
In secondo luogo, almeno nel mondo Java, la modifica di una modifica del file delle proprietà indica una nuova distribuzione. Gli attributi di stringa possono anche essere internazionalizzati nel database.
Supponi di avere un prodotto mappato direttamente su una tabella di prodotto. Diciamo che abbiamo la seguente API per supportare l'internazionalizzazione del nome di un prodotto.
class Product
def id: Long
def name(language: Language): String
class Language
// e.g. 'en' for English, 'zh' for Chinese
def isocode: String
def name: String
// ordered list of isodcode s.t. if the internationalized attribute
// does not exist for this language, it tries each language in this list in order.
def fallbackLanguage: List[String]
// default language for entire system. Use this language if all else fails
def isDefault: Boolean
L'attributo name sulla tabella del prodotto richiederebbe una tabella uno-a-molti unita alla tabella delle lingue.
Di solito aiuta a fornire un'interfaccia di amministrazione in modo che gli utenti aziendali possano apportare modifiche
a queste entità centrali per conto proprio.
Successivamente, potrebbe essere necessario aggiungere valuta, paese e regione (ad es. California, provincia di Wuhan), come oggetto di prima classe tanto quanto la lingua, in modo che il sistema possa localizzare le regole di business specifiche applicabili a una regione specifica . Per continuare con il mio esempio di prodotto, i prezzi in Cina non saranno gli stessi degli Stati Uniti, semplicemente perché la valuta è diversa. Ci si può aspettare che i clienti cinesi paghino solo in renminbi. E i clienti statunitensi pagano solo in dollari USA.
Infine, un motivo per cui la stessa funzionalità globale potrebbe dover essere un sistema separato è che le regole aziendali in diversi paesi differiscono. Le tasse negli Stati Uniti non sono le stesse delle tasse in Cina. Il catalogo dei prodotti può differire a causa di differenti aspetti di marketing. Pertanto, potrebbe avere senso che il team cinese del cliente abbia la proprietà sul proprio sito, al contrario della squadra di lingua inglese del proprio cliente in un paese di lingua inglese.