2011-12-05 13 views
11

Ho bisogno di tradurre il mio sito in più lingue. stavo pensando di utilizzare un database chiamato lingua e inserire la traduzione lì.traduzione di un sito web in php o mysql?

database : translation 
tables: language 
column: id, english, french, german, italian, spanish 

o Stavo pensando a una soluzione PHP come:

english.php 
french.php 
german.php 
italian.php 
spanish.php 

: è sufficiente includere il file che vi serve.

ora, posso vedere pro e contro per entrambi, quello che voglio sapere è ciò che è considerato lo standard nel settore per fare qualcosa di simile?

+0

è molto più semplice ed elegante creare ogni pagina: en.php, fr.php ... meglio che interrogando il DB ogni volta – amrfaissal

+0

puoi dirmi perché? – Adam

+0

ho appena trovato il sito mantenibile in quel modo !! se hai bisogno di cambiare una traduzione di una parola devi andare al DB e cambiarla! Diciamo che alle persone cinesi piace il tuo sito web e che hanno bisogno di una traduzione per un'esperienza migliore, devi andare al DB e cambiarlo di nuovo che non è appropriato. – amrfaissal

risposta

12

è possibile utilizzare gettext, questa funzione è proposto per questo caratteristica, non uno "standard" ma abbastanza veloce.

Le seconde opzioni nell'uso di un file PHP con un grande array (davvero grande, per ogni stringa), questa è la soluzione più comune.

Per il contenuto del database (il grosso problema qui, non dimenticare), se tutti i contenuti devono avere la traduzione, una colonna per ogni lingua, altrimenti utilizzare una bandiera della lingua per ogni riga sul database.

+2

+1 Una delle cose migliori di gettext è lì MOLTI strumenti di traduzione eccellenti per la creazione di file nel formato appropriato ed è anche facile presentarsi a diversi servizi online se in futuro hai bisogno di traduzioni professionali. –

2

Non esiste uno standard di settore. Ho visto (e implementato) soluzioni utilizzando file flat, XML, codice PHP, un database e file gettext per archiviare le stringhe localizzate. È una questione di ciò che è più adatto per .

mio go-to metodo per PHP è semplicemente file che contengono array di stringhe, per esempio

en.php

return array (
    'How are you?' => 'How are you?', 
    'Goodbye' => 'Goodbye', 
); 

de.php

return array (
    'How are you?' => 'Wie gehts?', 
    'Goodbye' => 'Auf wiedersehen', 
); 

Questo può essere integrato in un'applicazione con una granularità ragionevole (ci possono essere molti di questi file, ad esempio uno per ogni componente) e controllo (è possibile ricorrere facilmente a qualsiasi altra lingua se non si trova una stringa) ed è anche molto conveniente modificare senza la necessità di strumenti speciali.

Il mio framework PHP preferito (Yii) e un progetto open source gigante su cui ho lavorato (Moodle) utilizzano questo approccio.

+0

Ho usato con successo diversi array di lingue e ho trovato che fosse il più semplice da implementare nel mio progetto esistente (piuttosto grande). Ricorda inoltre di caricare solo l'array necessario all'inizio invece di caricarli tutti e quindi selezionarne uno, ho trovato che è molto più veloce in quel modo. – Luke

2

Nessuna delle due soluzioni mi sembra ottima. Dovresti pensare a lungo termine quando pensi a una soluzione.

E se scegli di tradurre il tuo sito web in altre lingue diverse da quelle che hai pensato come russo o cinese? Nel primo caso devi aggiungere sempre più colonne, nel secondo devi creare sempre più file. Un altro inconveniente è cosa se traducete una pagina in italiano e spagnolo ma non ancora in francese?

Penso che una cosa buona sia avere una soluzione basata su database e una lingua principale. Ora puoi fare qualcosa del genere:

  • Creare una tabella 'pagina' (id, titolo, ...) in cui archiverai la pagina nella lingua principale e dove avrai le informazioni del pagina tradotta troppo
  • Crea una tabella di 'traduzione' (idsource, idtranslation, lingua)
  • Everytime controllare le traduzioni disponibili e dare quelle agli utenti
+0

Una buona soluzione, anche se la tua spiegazione potrebbe essere stata un po 'oscura per qualcuno che non ha fatto abbastanza lavoro con i database. – RonLugge

0

Nella localizzazione del database si hanno quattro strategie principali. Ognuno ha particolari vantaggi e svantaggi. Per il lungo termine raccomanderei senz'altro la clonazione. Potete vedere i quattro metodi al link qui sotto:

http://www.sisulizer.com/localization/software/server-desktop-database.shtml

Ci sono due idee principali che si desidera essere sicuri di essere di attuazione. Il primo, assicurati di integrare una qualche forma di memoria di traduzione. Il tuo rivenditore di lingue dovrebbe istruirti su come farlo e probabilmente farlo per te.

Il secondo, per ogni lingua aggiuntiva scelta come target, i dati avranno almeno 2 volte più complessi. Tienilo a mente mentre vai avanti. Non solo i tuoi dati, ma il tuo set di file, la gestione, ecc.

Spero che questo aiuti. Fammi sapere se hai altre domande. Russell

Problemi correlati