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

Ciao. Sto creando un CMS, che dovrebbe presentare anche l'opportunità
di essere multilingua. Allora mi domando dove è meglio tenere i file
di lingua: in un database, in dei file di testo, in degli array in un
file PHP?
Mi sapete consigliare?
Grazie

 PHP?
Dipende da cosa intendi per multilingua.
Vuoi che i testi del motore siano multilingua ("Insert news", "Aggiungi 
news", ecc.) o che gli utenti possano inserire gli stessi contenuti in 
piu` lingue?
Bye.


Hai ragione. Nella domanda mi riferivo a dove mettere quelli del
motore (perchè i commenti degli utenti, per es., naturalmente li
metterei in un db).


Cercando ho trovato gettext. Sembra una buona soluzione. Il problema è
che non riesco a capire come usarlo! La documentazione (almeno in
italiano) è scarsa e confusa.Avete qualche dritta da darmi sul come
utilizzare questo metodo partendo da zero? oppure qualche link?
Soprattutto non capisco se prima devo creare il file PHP con i testi
(per es echo _("prova");) e poi il file .po viene creato in
automatico... e poi cosa devo fare, e che programmi si utilizzano su
win?
Grazie

 win?
Sotto Windows non saprei aiutarti.
Sotto Linux ci sono dei tool che leggono le stringhe contenute in quella 
funzione e ti generano il file .pot (il sorgente per le traduzioni) e 
altri che ti permettono di creare i file .po (i compilati), come per 
esempio POEdit.
Non serve che ti crei il file con i testi in anticipo, potresti anche 
prevederli gia` e crearti a mano il file .pot che ha un formato cosi`:
# LANGUAGE translation of SoftwareName
# Copyright YEAR NAME <EMAIL@ADDRESS>
msgid ""
msgstr ""
"Project-Id-Version: PROJECT VERSION\n"
"POT-Creation-Date: 2006-07-22 22:52+0000\n"
"PO-Revision-Date: YYYY-mm-DD HH:MM+ZZZZ\n"
"Last-Translator: NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <EMAIL@ADDRESS>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n"
#: file.php:28;38;46;173;221
msgid "Hello user"
msgstr ""
#: file.php:35
msgid "more"
msgstr ""
#: file.php:35
msgid "Read more articles."
msgstr ""
...
Poi da questo generi il file .po per la tua lingua con le stringhe 
tradotte nelle righe msgstr (le msgid restano uguali).
Bye.


Non ho ben capito la differenza tra .pot e .po
E poi, da PHP si può utilizzare direttamente il file .po? non è prima
necessario compilarlo in .mo?


In un database in cui la cui struttura può essere più o meno così:
+ id = autoincremento
+ nome = un nome da associare alla stringa di testo
+ nome_parent = il percorso della pagina
+ it = testo in italiano
+ en = testo tradotto in inglese
+ de = testo tradotto in tedesco
...
aggiungendo tutte le lingue del caso.


e fare invece dei file, sempre php, che contengono le variabili
settate con i testi?
Ad esempio avrò il file italiano.php con tutte le variabili ed i testi
in italiano.
Poi avrò inglese.php con le stesse variabili ma con i testi in
inglese.
A questo punto basta includere il file che ti serve a seconda della
lingua.
E non serve tutte le volte connettersi al database.

 settate con i testi?
E' più complicato e lento eseguire le ricerche. Il db è ottimizzato
per eseguire ricerche.
A meno di non fare un file di traduzioni per ogni pagina web, ma è
molto complicato e delicato da gestire.
Ciao,
   Fabrizio
=== 
http://www.negusweb.it
 ===

 settate con i testi?
E' più complicato e lento eseguire le ricerche. Il db è ottimizzato
