Newsgroup: it.comp.www.php
Titolo: Supporto multilingue

Saluti al NG! 
Ho bisogno di un consiglio per migliorare le prestazioni di alcune pagine
php che gestiscono un forum. 
Vorrei che si possa scegliere la lingua da utilizzare nelle pagine (es. i
comandi saranno: Principale, nuovo post, entra... oppure Home, new post,
 login... questo riguarda anche i messaggi di errore e le faq, le
 istruzioni...) e per fare ciò ho alcune alternative: 
- passare un parametro (index.php?lang=it) ad ogni pagina in modo che
 questa "scelga", tramite una funzione, che parole usare. 
- settare durante l'installazione la lingua predefinita, ma come? 
 
La mia idea era una pagina chiamata lang.inc.php: 
$lang="it";  //questo si imposta nel setup 
if ($lang=="it") { $str_welcome="Benvenuto"; $str_login="Entra"; ecc. ecc. } 
elseif ($lang=="en") { $str_welcome="Welcome"; $str_login="Login"; } 
Questa viene inclusa con include() in ogni pagina del forum e poi le
stringhe vengono richiamate con un semplice print ("$str_welcome $username"); 
 
Mi servono opinioni e consigli: è una buona idea? si può migliorare in qualche modo? 
Grazie 
Attilio

 
Io preferisco fare cosě:
//file lang.inc.php:
$msg['it'][link1]='Pagina 1';
...
$msg['en'][link1]='Page 1';
...
$msg['fr'][link1]=...
In questo modo, hai un semplice file in cui si definisce un vettore
associativo. Questo sistema č indipendente dal modo in cui identifichi
la lingua dell'utente (tramite le impostazioni del browser oppure
tramite un link attraverso il quale l'utente cambia lingua).
Per richiamare le variabili nei tuoi file:
include 'lang.inc.php';
...
$lang=...//recupera la lingua dell'utente in qualche modo
...
print $msg[$lang][link1];
niente if né ma:))
--
..perché avevamo un cannone nel cortile.
De Andrade

 print $msg[$lang][link1];
Anche una possibile variazione a questo sistema che semplifica la scrittura
del codice per l'output:
_______________________
$msg['it'][link1]='Pagina 1';
...
$msg['en'][link1]='Page 1';
...
$msg['jp'][link1]='Chinchaui 1';
...
switch ($lang) {
    case "it":
    case "en":
    case "jp":
        break;
    default: $lang = "it";
}
$msg = $msg[$lang];
_______________________
Lo switch serve a controllare che venga passata una tra le lingue
disponibili: non fa nulla, ma se la lingua non è riconosciuta (o non è stata
passata) imposta quella di default..
La riga dopo serve per accorciare la scrittura dell'output, che sarà:
echo $msg[link1];
senza dover ripetere anche "[$lang]" ogni volta... Sarà la pigrizia?
Ludovico Grossi

senza dover ripetere anche "[$lang]" ogni volta... Sarà la pigrizia?
Il tempo è denaro...e zio paperone la sapeva lunga:D
--
Non è il concetto di intelligenza extraterrestre a essere difficile da afferrare. 
E' il concetto opposto che incontra resistenze.
I. Asimov .

 stringhe vengono richiamate con un semplice print ("$str_welcome
$username");
Spiacente per il mio italiano difettoso, questo è tradotto da Bablefish,
originale inglese è alla parte inferiore.
Con TemplateTamer, voi possono segnarle tutti i parole o le frasi che abbia
bisogno della traduzione con:
{ # TRANSKEY }
Dovete definire:
function translate($transKey)
quello traduce se danno la traduzione corretta per ogni chiave. Potete
effettuare questa funzione abbastanza tanto come voi avete descritto. Dopo
il quel, TemplateTamer farà automaticamente tutti i rimontaggi necessari e
traduzioni.
rush
http://www.templatetamer.com/
--------------------
Sorry for my bad Italian, this is translated by Bablefish, here is english
original.
With TemplateTamer, you can mark all words or phrases that need translation
with:
{#TRANSKEY}
You need to define:
function translate($transKey)
that translates should give correct translation for each key. You can
implement this function pretty much like you have described.
After that, TemplateTamer will automatically make all necessary replacements
and translations.
rush
--
http://www.templatetamer.com/