Newsgroup: it.comp.www.html
Titolo: Pagine web in piu' lingue

ciao,
oggi stavo valutando come potevo localizzare
le pagine web, ho trovato un metodo piuttosto carino
per sistemare *definitivamente* 'sta faccenda.
supponete di dover sviluppare il sito in due lingue,
italiano ed inglese. preparare due file, chiamati
"strings-en.txt" e strings-it.txt", che conterranno
le traduzioni nelle due lingue:
[strings-en.txt]
# english translation
page_index: Page %d of %d
prev_page: Previuos page
next_page: Next page
delivering_method:
   - Air mail
   - Fedex
   - DHL
[strings-it.txt]
# italian translation
page_index: Pagina %d di %d
prev_page: Pagina precedente
next_page: Pagina successiva
delivering_method:
   - Posta aerea
   - Fedex
   - DHL
le solite cose, le solite diciture che chi sviluppa pagine
web ha imparato ad odiare. "delivering_method" verra' utilizzato
in una <select> quindi indicheremo i valori possibili
per i singoli campi <option>.
i due file sono formattati in maniera particolare, e seguono
i dettami di YAML ("yaml ain't markup language", 
http://www.yaml.org
).
utilizzando YAML riesco a definire tipi di dati come
liste, dictionary (chiave-->valore) e "scalar"
supponiamo che nella variabile "lang" sia memorizzato
il codice della lingua di chi sta visitando le pagine,
come ve la procurate dipende un po' da voi, via "session"?
via HTTP header "accept-language"? non importa
come, sara' una cosa simile a "it-IT", "en", "fr" ecc.
#ora in python carico quel file di testo:
 >>>import yaml
 >>>parser = yaml.loadFile('i18n/stringz-%s.txt' % lang)
#recupero la prima (e unica) entry del file
 >>>entry = parser.next()
#bene, ora ho tutto in memoria, voglio recuperare
# i metodi di spedizione?
 >>>print entry['delivering_method']
['Air mail', 'Fedex', 'DHL']
#magari li voglio formattare?
 >>>for index, item in enumerate(entry['delivering_method']):
 >>>  print '<option value="%d">%s</option>\n' % (index, item)
<option value="1">Air mail</option>
<option value="2">Fedex</option>
<option value="3">DHL</option>
(enumerate lo posso utilizzare solo con python 2.3+)
# ...e quel page %d of %d?
 >>>print entry['page_index'] % (5, 12)
Page 5 of 12
non provate a fare la stessa cosa con ASP, potreste
rimanere offesi, e nemmeno con .NET.
ciao.
-- 
email: goldicus1970 AT 
yahoo.it
web: 
http://www.deelan.com

rimanere offesi, e nemmeno con .NET.
Eh eh metodo carino anche se forse un pò laborioso...anche se meno di
altre soluzioni server side che ho visto
-- 
Lawrence "Rhymes" Oluyede
http://loluyede.blogspot.com
rhy...@NOSPAMmyself.com

 altre soluzioni server side che ho visto
mmm, conosci qualche soluzione meno laboriosa? ^__^
-- 
goldicus1970 AT 
yahoo.it
http://www.deelan.com

mmm, conosci qualche soluzione meno laboriosa? ^__^
Database e dizionari Python
ma forse č piů laboriosa :)
ps. č uscita la versione 2.3 ;-)


 rimanere offesi, e nemmeno con .NET.
... il php ?
io ho avuto lo stesso problema e l'ho risolto banalmente con il php...
unica cosa che non mi è chiara... con il sistema da te pensato, hai un solo
set di pagine e la lingua viene scelta in funzione della località da cui ti
colleghi o hai un sito con un solo set di pagine ma due direzioni da
prendere all'inizio... versione Italiana o versione Sgrammatinglese? :-)
venendo a me, ho creato un unico set di pagine, dove le scritte sono
visualizzate con un <? echo $testo_xxx)?> e tutte le variabili testo sono
salvate in un file linguaggio_it/_en/_fr/_de.php incluso in testata del
codice della pagina così:
<? include ("linguaggio.php"); ?>
in questo modo ho le stesse pagine in tutte le lingue che desidero..
il metodo mi sembra semplicissimo e molto efficace!
buone vacanze a tutti!
Lore
---
www.interisti.org
---

 <? include ("linguaggio.php"); ?>
non ho capito. che ci metti dentro linguaggio_it.php? mi scrivi
due righe del contenuto di linguaggio_it.php e di, ad esempio, 
linguaggio_en.php?
<? echo $testo_xxx)?>
e l'xxx e' il nome della variabile? mmm, se hai una stringa
del tipo "Pagina x di y" come fai a formattarla, immagino che
in PHP ci sia qualcosa di simile al vecchio sprintf() del C,
un operatore o una funzione, giusto?
grazie, ciao.


 ps. è uscita la versione 2.3 ;-)
ce lo so, l'ho installata oggi in ufficio.
ciao!


 grazie, ciao.
allora semplice... cerco di essere più chiaro possibile.
facciamo l'esempio di due lingue, Italiano e Tedesco (tedesco xé mi è caro
in amore :-O ).
preparo due file linguaggio_it.php e linguaggio_de.php.
Semplifichiamo il più possibile... in tutto il sito abbiamo solo 6 stringhe
di testo:
questo è il file linguaggio_it.php
<?
$t_01="Ciao";
$t_02="Mangiare";
$t_03="Dormire";
$t_04="Cacca";
$t_05="Pisello";
$t_06="Mi chiamo Lorenzo e vivo vicino Milano, il mio tesoro si chiama
Bianca e vive a Monaco";
?>
questo è il file linguaggio_de.php
<?
$t_01="Tschüss";
$t_02="Essen";
$t_03="Schlafen";
$t_04="Kakke";
$t_05="JaJa";         //gergale :-)))
$t_06="Ich heiße Lorenzo und Ich wohne in der Nähe von Mailand, mein Schatz
heißt Bianca und wohnt in München":
?>
Il significato delle parole è equivalente...
Dove voglio visualizzare questi testi, quindi nelle pagine utlizzo questa
dicitura:
<? echo $t_01; ?> che mi stampa il contenuto della variabile $t_01, ovvero
Ciao o Tschüss a seconda della lingua desiderata.
Sempre nella pagina dovrò includere il file di lingua, che contiene le
variabili settate, altrimenti là dove scrivo l' echo non vedrò nulla...
puoi scegliere due vie... hai una home con due diramazioni, versione
Italiana, versione Crucca...
quando vai nella Italiana includi <? inculde ("linguaggio_it.php"); ?>,
quando vai nella crucca linguaggio_de.php
oppure, hai un unico sito e decidi tu in che lingua lo vuoi...
con il php puoi rinominare il file con una chiama del genere
<? system ("cp -a linguaggio_it.php linguaggio.php"); include
(linguaggio.php"); ?>
//forse le " virgolette per la system non servono, è tardi e non me lo
ricordo al volo!
//cp -a filedacopiare filedidestinazione ==> copia mantenendo le proprietà e
permessi del file da copiare nel file di destinazione.
e includerlo...
chiariti i dubbi?
se vuoi scrivere una stringa del tipo "Pagina x di y" nella pagina puoi
utilizzare questo codice:
<? echo $t_21 . " " . $x . " " . $t_22 . " " . $y; ?>
dove $t_21="Pagina" $t_22="di"
$x e $y sarammo i valori x e y che ti servono, come li inizializzi poi lo
saprai tu...
il . (punto) serve per concatenare
echo e print sono equivalenti come comandi!
meglio?
oh... vacanza ora! :-)))
ciao - tschüss
Lore
---
www.interisti.org
---

 <? echo $t_21 . " " . $x . " " . $t_22 . " " . $y; ?>
oh jesus! faccio bene a tenermi lontano dal PHP. gia' immagino
che gioa sia scrivere query SQL spezzettate da varibili,
brrr...
ciao.
