Newsgroup: it.comp.www.php
Titolo: Sito multilingua

Stavo pensando a quale soluzione fosse migliore per realizzare un sito
multilingua. Per ora il mio caso è semplice perchè ho solo due lingue
ma vorrei una soluzione valida per 2 come per 5...
Avevo pensato una cosa del genere
/--- index.php
 |--- SITO
 |   |--- azienda.php
 |   |--- prodotti.php|
 |   |--- TESTI
 |       |--- ITA
 |       |    |--- azienda.txt (con dentro anche l'html)
 |       |    |--- prodotti.txt (con dentro anche l'html)
 |       |--- ENG
 |       |    |--- azienda.txt (con dentro anche l'html)
 |       |    |--- prodotti.txt (con dentro anche l'html)
 |--- IMG
 |--- INCLUDE
 |--- DOWNLOAD
I file .txt contengono dell'html e vengono richiamati dentro qualche
TD in giro per il sito...
Ci sono controindicazioni?
Mi vado a complicare la vita?
..oppure sarebbe meglio utilizzare un Db? (come?)
-- 
La rovina del mondo sarà l'indifferenza...
...ma chi se ne fregaaa!


Io userei tanti db quante sono le lingue. Crei tutti i db uguali (stessi
nome tabelle, campi ecc... ) cambiando solo il contenuto. Poi quando una
persona seleziona una lingua cambi solo il collegamento al db lasciando
invariato il resto del codice e tutte le varie query...
Sinceramente non l'ho mai sperimentato... ma io farei così.

 ma vorrei una soluzione valida per 2 come per 5...
Io utilizzo lo stesso metodo usato da software quali phpmyadmin & co.
Mi creo un file per ogni lingua, ad esempio  lang/italian.inc.php
contenente tutte le stringhe che uso:
italian.inc.php
<?
    $tx_user = "Nome utente";
    $tx_addr = "Indirizzo";
    $tx_welc = "Benvenuto";
    ecc ecc...
?>
Poi nella home page del sito crei uno script che imposta un cookie con la
sigla della lingua scelta (IT, EN, DE, ...).
Ossia: home page con le bandierine. Clicchi sulla bandierina e parte lo
script che setta la lingua. Alla fine lo script ridirige sulla pagina
iniziale del sito.
Dopodichè all'inizio di ogni pagina del sito, fai un include ad uno
scriptino che legge il valore del cookie ed inserisce il corretto file delle
traduzioni.
A questo punto nelle tue pagine, scrivi semplicemente (ad esempio):
    echo "<b>" . $tx_user . "</b>: ";
Ed automaticamente verrà inserita la stringa nella lingua giusta.
E più facile a dirsi che a farsi.
Ciao
Marco

Marco Napolitano wrote:
[cut]
| italian.inc.php
| <?
|     $tx_user = "Nome utente";
|     $tx_addr = "Indirizzo";
|     $tx_welc = "Benvenuto";
[cut]
io l'ho implementato in questo modo:
nel file index richiamo (include_once) il file
    /lang/_it_/pagina_1.php
che contiene le stringhe di linguaggio della pagina_1 in questa forma:
    i18n['titolo_della_stringa'] = 'Titolo della stringa';
poi nella pagina richiamo semplicemente la variabile
    i18n['titolo_della_stringa']
ovviamente mettendo come globale la variabile i18n (aka
internationalizzation)
poi per il resto è come ti diceva Marco N., cioè fai l'include giusta
per il linguaggio scelto
Ciao!
-- 
..::[ Panz ]::..
-----------------------
per rispondere riscrivi in numeri la mia eMail!

?>
Ho provato... ed effetivamente il metodo è molto semplice e funziona.
Il problema è che magari ho dei testi un po' complessi (con html
dentro)... Cercherò magari di evitare di infilarci le tabelle (a
favore della pulizia e dei css) però avrò sicuramente un sacco di
Bold, BR, UL, LI, Links ecc...
Ci sono controindicazioni ad infilarci questa roba?
Ci sono delle dimensioni massime, in Kb,  oltre le quali non andare
con il file "delle variabili"?
grazie ancora
ciao


 con il file "delle variabili"?
In linea di massima no.
Le operazioni vengono svolte sul server e sono molto veloci.
Tuttavia se ti ritrovi con un file delle traduzioni da 50Mb, magari pensa ad
un'altra soluzione...
Ciao
Marco

un'altra soluzione...
 :DD



io salvo le traduzioni in una tabella di un database:
ID|TESTO|LINGUA|TRADUZIONE
1|ciao|it|ciao
2|ciao|en|hallo
( puoi anche normalizzare in due tabelle distinte: testi e traduzioni)
in questa maniera puoi sviluppare la tua applicazione tranquillamente 
senza preoccuparti del testo e delle lingue del sito.
lo sto utilizzando ed è comodissimo.
se utilizzi il metodo dell'include va a finire che se hai molti testi 
tradotti ti carica sempre un esagerazione di testi inutili in memoria.
ciao


:Provate a guardare gli ingredienti del famoso Labello che si usa per
:le labbra screpolate: Butirrospermum Parkii (sperma di maiale).