Newsgroup: it.comp.www.php
Titolo: Un sito due lingue, stesso layout?

Devo creare un piccolo sito in due lingue, magari utilizzando un unico
layout per entrambe.
- Non ho un Db ed quindi avevo pensato degli include o forse dei file di
txt.
* Vorrei qualche suggerimento su come procedere e qualche idea su metterla
in pratica.
- Potrei portarmi dietro la variabile $lingua...
if {
$lingua="eng"
include= fileeng.txt
   }
else.......
Che ne dite?

 
buona idea, magari per non impazzire nella stesura del codice (dovresti 
ad ogni link inserire ?lingua=eng&ect.etc.) puoi memorizzarla in una 
variabile di sessione.
ciao
Alesi_27

Be io uso questa tecnica:
passo una "variabile" al file (es. index.php?lan=en oppure index.php?lan=it eccetera - ovviamente di default metto
italiano)
A seconda della variabile passata prendo il nome del file delle traduzioni (Italiano.txt, Inglese.txt eccetera) fatto
all'incirca cosi':
#SelezioneLingua# Seleziona la lingua dell'interfaccia
#Ricerca#              Ricerca nel sito:
#Trova#                 Trova
dove la parte tra i due # è la parola chiave di ricerca e il resto è la frase da visualizzare (ps. il carattere ; è un
commento per me)
nei punti dove devo visualizzare una stringa inserisco GetWord("<chiave di ricerca>")
GetWord è definita cosi':
  function GetWord($Parola)
  {
   global $Parole, $N_Parole;
   $Rit = $Parola;
   $S   = strtoupper($Parola);
   $S   = ltrim($S);
   $S   = rtrim($S);
   $Rit = "";
   if ($S != "")
      {
       $Ok    = FALSE;
       $Conta = 0;
       while (($Conta<$N_Parole)&&($Ok==FALSE)):
              $SS = explode("#",$Parole[$Conta]);
              $Conta++;
              $S1 = $SS[0];
              $S2 = $SS[1];
              $S1 = ltrim($S1);
              $S1 = rtrim($S1);
              $S1 = strtoupper($S1);
              $S2 = ltrim($S2);
              $S2 = rtrim($S2);
              if (strcasecmp($S, $S1)==0)
                 {
                  $Ok = TRUE;
                  $S  = $S2;
                 }
             endwhile;
       if ($Ok==TRUE) {$Rit = $S;}
      }
   return $Rit;
  }
$Parole è il vettore contenente le traduzioni mentre $N_Parole è il numero di traduzioni presenti
All'inizio, dopo aver identificato la lingua carico le traduzioni nel vettore eliminando le righe vuote ed i commenti in
questa maniera:
  function Carica_Lingua()
  {
   global $File, $Parole, $N_Parole;
   $N_Parole = 0;
   if (file_exists($File))
   {
    $Parole1   = file($File);
    $N_Parole1 = count($Parole1);
    for ($I=0;$I<$N_Parole1;$I++)
        {
         $S1 = $Parole1[$I];
         $S1 = ltrim($S1);
         $S1 = rtrim($S1);
         $N  = strpos($S1, ";");
         if (is_integer($N))
            {
             if ($N==0) {$S1="";}
                else    {$S1=substr($S1,-1*($N));}
            }
          if (is_integer(strpos($S1, "#")))
             {
              $S1 = substr($S1, strpos($S1, "#")+1);
              if (is_integer(strpos($S1, "#")))
                 {
                  $Parole[$N_Parole] = $S1;
                  $N_Parole++;
                 }
             }
        }
   }
  }
$File è il nome del file contenente le traduzioni
Uso questa tecnica in maniera di togliermi dai piedi i DB (portabilità totale), in maniera di aver uno stesso layout
delle pagine, in modo da poter modificare facilmente le traduzioni (basta sostituire un file di testo di pochi k) e in
piu', posso utilizzare le stesse procedure in tutti i file che compongono il mio sito
Ciao,
David (
www.utilityweb.net
)
PS. il sito in firma usa questa tecnica
--
grazie,
David
ps. per risposte private NON eseguite un reply ma usate l'indirizzo 
microge...@email.it
 (levate NOSPAM
dall'indirizzo)

 ha scritto nel messaggio
news:pzkjb.291828$R32.9...@news2.tin.it...



Me se l'utente ha i cookie disabilitati?......lo perdo?

 piu', posso utilizzare le stesse procedure in tutti i file che compongono
il mio sito
ok, su questo punto siamo daccordo...nemmeno io voglio il db perchè in uesto
caso è una spesa in più per il cliente.
Non capisco bene il motivo perchè hai realizzato uno script del genere, mi
sembra che ti sei complicato la vita, non ti offendere, è solo per
confrontarmi con te..per impare da altri!
Io avevo pensato ad una funzione da includere in tutte le pagine che con
l'if vede la lingua selezionata e poi include un file, nel mio caso in html,
che si chiama $file. Questa variabile, che è diversa per ogni pagina, la
dichiaro prima della funzione e la concateno con $lingua.
Quindi il file che vado ad includere sarà $file.$lingua.html. -->nella home
sarà homeit.html
Che ne dite?

 confrontarmi con te..per impare da altri!
Non mi offendo assolutamente e devo dire che sono il primo che studia le tecniche degli altri per imparare.
Ciao,
David (
www.utilityweb.net
)

Ciao,
Cristian wrote:

che puoi usare una variabile di sessione che è molto più comoda e fare 
un "trucchetto" più conveniente dell'if.....
puoi adottare dei nomi del tipo nomefileITA.txt e nomefileENG.txt (o 
quello che è) e determinare l'include con
$daIncludere="nomefile".$lingua.".txt"
ovviamente questa soluzione non è elegante,perché determina una regola 
sui nomi dei files, ma sufficientemente comoda per scrivere meno codice 
possibile.
Puoi "semplicemente" estendere a n lingue senza dover modificare i vari 
if, semplicemente dando nome ai file da includere secondo lo schema scelto.
Probabilmente sarebbe meglio mettere LINGUAnomefile.ext in modo da 
semplificare ulteriormente la determinazione del file da includere (la 
semplificazione è solo per chi eventualemnte leggesse il codice)
Ciao Gianfranzo
-- 
ICQ#: 21258924 Nick Gianfranzo
Home page 
http://www.gianfranzo.it
Gianfranzo è contro la guerra
"dopo tutto, gli angeli non sono altro che dei volatili" D. Pennac

Come da mio post precedente avevo pensato ad una cosa del genere, perň hai
ragione la tua č ancora piů semplice.
Grazie!