Come costruire una applicazione PHP con il supporto di più lingue (inglese, francese, Cinese, ecc..)
-
22-08-2019 - |
Domanda
Sto costruendo un'applicazione web che utilizza la LAMPADA e il Smarty template framework.Il sito web avrà un sacco di contenuti statici (pagina su di noi, gli avvisi di errore, e-mail di conferma, ecc...).
L'applicazione web deve supportare più lingue.È il seguente approccio appropriato?
1) Tutti copia statica su Smarty template di pagine html (pagine) sarà sostituito da chiamate a smarty plugins {lang file= "about.xml' getTerm='titolo'} che restituisce una stringa per il tag del titolo nella lingua appropriata
2) Il file about.xml è un documento xml sul server web che agisce come un multiplo dizionario di lingua.Così avrà nodi xml, ad esempio
<term value="title">
<en><a href="http://stackoverflow.com"&rt;Stackoverflow</a&rt; is a great site</en>
<fr><a href="http://stackoverflow.com"&rt;Stackoverflow</a&rt; c'est website magnifique</fr>
<ch><a href="http://stackoverflow.com"&rt;Stackoverflow</a&rt; complex looking chinese characters I don't udnerstand</ch>
</term>
<term value="signupmessage">
<en><a href="http://stackoverflow.com"&rt;Stackoverflow</a&rt; great deals!</en>
<fr><a href="http://stackoverflow.com"&rt;Stackoverflow</a&rt; magnifique deals!</fr>
<ch><a href="http://stackoverflow.com"&rt;Stackoverflow</a&rt; complex looking chinese characters I don't udnerstand</ch>
</term>
3) La struttura degli url per il sito sarà http://mywebsite.com/language/index.php
.Per fare questo, il mio webserver avrà collegamenti simbolici come
ln -s ./en ./
in modo che http://mywebsite.com/en/index.php
punti alla stessa pagina php come http://mywebsite.com/fr/index.php
, ma io controllo la url per le impostazioni della lingua.La mia speranza è che google indice di entrambe le versioni del sito.
Questo è un buon approccio?Xml è un formato per la memorizzazione del contenuto di lingue diverse, anche se ha htmlentity codificato tag html?Mi ha fatto trascurare nulla di ciò?
Soluzione
Non sono sicuro circa i dettagli della tua domanda, ma si potrebbe desiderare di dare un'occhiata a Zend_Translate
.
Altri suggerimenti
XML è un formato contenitore e questo uso non è troppo male.Ha il vantaggio di essere relativamente leggibili, fatta eccezione per le entità HTML.Si potrebbe provare a utilizzare le sezioni CDATA per che.Un vantaggio dell'utilizzo di XML per questo è che si potrebbe usare una DTD per verificare che tutte le lingue sono traduzioni presente per tutti i tasti.Assicurarsi che si codifica il file utilizzando la codifica UTF-8 o UTF-16 e probabilmente aiuta se si mette la codifica all'inizio del file.Mi raccomando UTF-8.
Per quanto riguarda come si carica il file XML di dati e di incorporarlo in una pagina, non so "smarty" ma l'approccio globale sembra ragionevole.L'unico aspetto negativo che posso vedere è che è necessario il rilascio di tutte le traduzioni in simultanea (difficile evitare questo problema).
Una cosa che ho notato è che si utilizza ch come il codice della lingua Cinese. Si dovrebbe usare zh.Che è il codice ISO per esso.ch qualcosa d'altro.