2011-10-01 7 views
5

Ho salvato un vecchio progetto che è stato originariamente scritto solo per il pubblico spagnolo e ora devo internazionalizzarlo.Come implementare la traduzione su un progetto web esistente?

Questo progetto ha 3 tipi di stringhe di testo:

  • stringhe scritte da PHP: Ad esempio: echo "Hello World"
  • brevi stringhe in campi del database: campi di database che contengono testo , ad esempio, elenchi di nomi di paesi.
  • HTML incorporato stringhe (file statici): Per esempio un file statico contenente un file HTML: è inserita come sopra, ma il file HTML su una: <html>...<body>...<p>Hello world</p> ...
  • HTML incorporato stringhe (database) campo di testo nel database.

Prima non è un problema, perché ci sono davvero poche stringhe e molto localizzate. Anche il secondo caso è molto localizzato quindi non è davvero un grosso problema. Ma gli ultimi 2 casi non sono gestibili: centinaia di file HTML (statici + database) con centinaia di stringhe all'interno.

Quindi, sto cercando un metodo automatizzato per estrarre tutte le stringhe in un formato riconoscibile, darlo ai traduttori e quindi avere le mie pagine in altre lingue.

Esiste qualcosa di simile o dovrei creare una soluzione personalizzata? In questo caso, qualche idea?

risposta

8

Ok. La I18n (Internazionalizzazione) è una cosa abbastanza strana. Devi fare molte molte modifiche al tuo codice per renderlo multilingue.

Per me, la soluzione migliore è spostarlo su CakePHP che già supporta I18n in molti livelli. Ma questa soluzione ti farà trascorrere molto tempo. Quindi ....

Un metodo veloce per la traduzione di testi interni come

echo "Hello World" 

o

<p>Hello World</p> 

è quello di creare un file di linguaggio appropriato con l'estensione PHP per ogni lingua (es: es. php, el.php, en.php, un così via) che conterrà un array con chiavi e valori che assomiglia che:

$l = array(
    'WEB_TITLE' => 'My web site title', 
    'GEN_HELLO' => 'Hello World', 
    'MENU_HOME' => 'Home', 
    'MENU_PRODUCTS' => 'Products', 
    ... 
); 

Poi nel vostro sito web è necessario caricare il file della lingua appropriato, proprio all'inizio di ogni pagina e nella pagina devi fare una cosa del genere:

echo $l['GEN_HELLO']; 

e

<p><?php echo $l['GEN_HELLO']; ?></p> 

Cioè il lato frontale della tua applicazione. Ora per rendere i vostri dati multilingue dovete cambiare la struttura del database in qualche modo.

Diciamo che avere quel tavolo

ARTICLES 
id Title Content Date Active 

Nella struttura di cui sopra si deve fare Titolo e I18n contenuti compatibili. Per tradurre che le colonne si deve creare un'altra tabella denominata nell'esempio ARTICLES_L che sembra piacerà che

ARTICLES_L 
ID POST_ID COLUMN LANGUAGE CONTENT 

nella tabella sopra riportata si deve memorizzare l'articolo id, la colonna che la traduzione appartiene (es: titolo) la lingua e il contenuto tradotto.

Quindi, se avete che i record in articoli

ARTICLES 
id Title Content   Date     Active 
1  Title 1 This is content 1 2011-10-01 13:28:45 1 
2  Title 2 This is content 2 2011-10-01 13:28:45 1 
3  Title 3 This is content 3 2011-10-01 13:28:45 1 

L'ARTICLES_L tabella contiene che i record

ARTICLES_L 
ID POST_ID COLUMN LANGUAGE CONTENT 
1  1   title  es_ES  Título 1 
2  1   content es_ES  Este es el contenido 1 
3  1   title  el_GR  Τίτλος 1 
4  1   content el_GR  Αυτό είναι το περιεχόμενο 1 
5  2   title  es_ES  Título 2 
6  2   content es_ES  Este es el contenido 1 
.... 

in realtà ci sono molti molti altri compiti che devi fare, ma questa è la idea dietro la soluzione che ti sto dando :)

Good Luck

PN: Ancora meglio per il front-end della tua applicazione è quello di usare quello http://php.net/manual/en/book.gettext.php In questo modo viene utilizzato da WordPress e CakePHP, ma in un livello molto basso:? Dai un'occhiata. Questo sarà migliore della creazione di file per ogni lingua.

+0

Era utile? –

+1

Davvero, grazie !! – Ivan

+0

Siete i benvenuti :) –