2010-06-28 22 views
5

Sto cercando consigli sulle migliori pratiche per localizzare i dati memorizzati nel database. Sto lavorando a un'applicazione web in cui tutto il testo statico è localizzato utilizzando i file. Abbiamo diverse opzioni che l'amministratore può configurare usando l'interfaccia utente che sono memorizzate nel database e hanno bisogno di localizzare questi valori.localizzazione di dati dinamici

Abbiamo escogitato un paio di idee possibili. Quali sono le tue opinioni su queste soluzioni? Esiste un'opzione migliore o addirittura una best practice standard?

per campo Specialized Localizzazione

Questa è la soluzione proposta per best practices for multilanguage database design. Creeremo una tabella separata per ogni campo localizzato. Per esempio, supponiamo che abbiamo avuto al tavolo colors con color_id, color_name e color_description colonne, potremmo rompere fuori in una tabella con i dati color non localizzato e un tavolo color_translationscolor_id, locale, color_name e color_description campi.

Tuttavia, i nostri clienti inviano spesso i file di localizzazione a terzi per eseguire la traduzione che diventa complicato.

Tabella singolo Localizzazione

Un'altra opzione sarebbe quella di creare un unico tavolo per rappresentare tutta la localizzazione database:

CREATE TABLE localized_text 
(
    key   VARCHAR(256) NOT NULL, 
    locale  CHAR(5) NOT NULL, 
    value  VARCHAR(256), 
    PRIMARY KEY (key, locale) 
); 

Questo sarebbe più facile da esportare per la localizzazione off-site, ma aggiunge un livello di riferimento indiretto.

+0

C'è un motivo per cui queste "numerose opzioni" non vengono semplicemente memorizzate come codici nel DB e tradotte a livello di presentazione dell'app? Comunque penso che l'opzione 1 sia molto più pulita, perché un tavolo gigante con molte traduzioni diverse per molte differenze. i modelli possono diventare rapidamente infernali –

+1

Penso che l'obiezione principale alla semplice memorizzazione dei codici nel database sia che l'utente deve andare in due posti diversi per configurarlo. Questo va bene per i nostri clienti più grandi che inviano i file di localizzazione per la traduzione ma non sono ideali per i clienti più piccoli. Anche le aziende più grandi dovrebbero copiare le chiavi dall'interfaccia utente nel file per la traduzione. Una possibile soluzione potrebbe essere quella di aggiornare l'interfaccia utente per modificare i file di localizzazione, se necessario. Qualcuno ha qualche idea al riguardo? – Ross

+1

Esegui l'opzione n. 1 e implementa un semplice strumento di importazione/esportazione che i tuoi clienti possono utilizzare per tradurre i contenuti personalizzati all'esterno dell'app. –

risposta

1

Creiamo una tabella separata per ogni campo localizzato. Per esempio, supponiamo che abbiamo avuto con i colori della tabella color_id, color_name e color_description colonne ....

Assumendo che il tavolo è colorssolo testo statico, la scelta più ovvia è quella di aggiungere una colonna ad esso, forse il nome locale e aggiungi righe per ogni locale che ti interessa. Quindi unisciti alle impostazioni locali del cliente per produrre la singola descrizione che desideri.

Perché funzioni, è necessario separare le descrizioni statiche dai dati indipendenti dalle impostazioni locali, poiché le descrizioni localizzate introducono una relazione molti-a-uno. Come stopgap potresti lasciare le descrizioni in inglese nella tabella principale e rilasciarle una volta che tutti i riferimenti a loro sono spariti.

Problemi correlati