Visualizzazione dei risultati da 1 a 10 su 10
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2005
    Messaggi
    169

    Sito multilingua:impostazione!

    Dovrei fare un sito multilingua, ma non ho idea di come impostarlo!
    Premesso che nel progetto del database ho pensato questo: un oggetto viene descritto in + lingue.
    Ora devo copiare il sito più volte in delle cartelle IT/ EN/... oppure esiste qualche metodo alternativo? Voi come lo impostereste?
    D'inverno lo snowboard,
    A primavera lo skateboard,
    D'estete il kite-surf
    ..e in autunno???

  2. #2

  3. #3
    copiare il sito in piu cartelle mi sembra difficile da manutenere...
    dovresti anzitutto prevedere la traduzione per i testi che vanno nel db, ad esempio le desc dei prodotti di un ecommerce, o il testo di un articolo, in campi chiamati desc lang_ita, lang_eng, oppure lang_1, lang_2 in modo da espanderlo piu facilmente...

    poi dovresti fare dei file dizionario, uno per lingua, che contengono i testi statici tradotti, a seconda della lingua in uso caricherai un dizionario piutosto che un altro... esempio banale:

    se nella home page devi scrivere "benvenuto", nel dizionario inglese ci sarà

    Codice PHP:
    $dictionary['welcome'] = "Welcome"
    in quello italiano

    Codice PHP:
    $dictionary['welcome'] = "Benvenuto"
    la pagina php avra un codice di questo genere:

    Codice PHP:
    include('/lang/langfile_'.$lang.'.php');  //$lang puo valere 'ita' o 'eng' o quello che vuoi
    print $dictionary['welcome']; 
    per finire potresti impostare una regola di rewrite per valorizzare $lang con /ita o /eng come dicevi prima, anxche se le dir fisicamente non esistono...

    Manuel

    View my profile on LinkedIn
    Ubertini: amo solo te!

  4. #4
    Utente di HTML.it
    Registrato dal
    Sep 2005
    Messaggi
    169
    Grazie per l'idea, ci proverò!!
    D'inverno lo snowboard,
    A primavera lo skateboard,
    D'estete il kite-surf
    ..e in autunno???

  5. #5
    Io ho realizzato il mio sito così:
    ogni volta che devo inserire un testo faccio questo:

    $msg["it"]="Testo in italiano";
    $msg["en"]="Text in English";
    echo $msg[$lang];

    il parametro $lang viene passato con l'url (nomepagina.php?lang=it)

    Puoi vedere il mio sito in azione qui: http://pikkioweb.altervista.org
    Ciao!

  6. #6
    Utente di HTML.it
    Registrato dal
    Sep 2005
    Messaggi
    169
    Ho visto il sito e mi son fatto un'idea..
    così facendo però non appesantisco il sito?
    Se invece dovessi fare una struttura molto grossa con + lingue?
    Comunque in assenza dialtri metodi, sfrutterò i vostri consigli, grazie!
    D'inverno lo snowboard,
    A primavera lo skateboard,
    D'estete il kite-surf
    ..e in autunno???

  7. #7
    Originariamente inviato da Manuel.s
    copiare il sito in piu cartelle mi sembra difficile da manutenere...
    dovresti anzitutto prevedere la traduzione per i testi che vanno nel db, ad esempio le desc dei prodotti di un ecommerce, o il testo di un articolo, in campi chiamati desc lang_ita, lang_eng, oppure lang_1, lang_2 in modo da espanderlo piu facilmente...

    poi dovresti fare dei file dizionario, uno per lingua, che contengono i testi statici tradotti, a seconda della lingua in uso caricherai un dizionario piutosto che un altro... esempio banale:

    se nella home page devi scrivere "benvenuto", nel dizionario inglese ci sarà

    Codice PHP:
    $dictionary['welcome'] = "Welcome"
    in quello italiano

    Codice PHP:
    $dictionary['welcome'] = "Benvenuto"
    la pagina php avra un codice di questo genere:

    Codice PHP:
    include('/lang/langfile_'.$lang.'.php');  //$lang puo valere 'ita' o 'eng' o quello che vuoi
    print $dictionary['welcome']; 
    per finire potresti impostare una regola di rewrite per valorizzare $lang con /ita o /eng come dicevi prima, anxche se le dir fisicamente non esistono...

    Una volta l'ho fatto proprio cosi e mi sono trovato ottimamente.......ciao

  8. #8
    Utente di HTML.it L'avatar di semolino
    Registrato dal
    Nov 2004
    Messaggi
    1,499
    Io utilizzo file diversi chiamati italian.php - english.php - ecc.
    dove definisc tutte le variabili che saranno in lingua diversa.

    Imposto con una sessione la lingua da utilizzare e, recuperando il valore della sessione, faccio in modo che venga incluso il file della lingua corretto utilizzando il metodo switch.

    Inoltre io ho anche il problema di stampare delle stringhe da database; nel database ho le colonne
    descrizione
    eng_descrizione
    ger_descrizione

    quando vado a stampare il campo faccio cosi

    echo LANG.$nome campo

    dove LANG è sempre impostata dallo switch che riconosce la lingua.

    Forse cosi è un po complesso ma una volta fatto è tutto molto più comodo.

  9. #9
    secondo me il metodo migliore è gettext.
    Esiste sia come estensione — http://it.php.net/gettext — che come classe.
    È il metodo che utilizza, tra gli altri, wordpress.
    A volte è meglio non scrivere niente e sembrare degli idioti, che postare e finire su uTonter

  10. #10
    Originariamente inviato da Manuel.s
    copiare il sito in piu cartelle mi sembra difficile da manutenere...
    dovresti anzitutto prevedere la traduzione per i testi che vanno nel db, ad esempio le desc dei prodotti di un ecommerce, o il testo di un articolo, in campi chiamati desc lang_ita, lang_eng, oppure lang_1, lang_2 in modo da espanderlo piu facilmente...

    poi dovresti fare dei file dizionario, uno per lingua, che contengono i testi statici tradotti, a seconda della lingua in uso caricherai un dizionario piutosto che un altro... esempio banale:

    se nella home page devi scrivere "benvenuto", nel dizionario inglese ci sarà

    Codice PHP:
    $dictionary['welcome'] = "Welcome"
    in quello italiano

    Codice PHP:
    $dictionary['welcome'] = "Benvenuto"
    la pagina php avra un codice di questo genere:

    Codice PHP:
    include('/lang/langfile_'.$lang.'.php');  //$lang puo valere 'ita' o 'eng' o quello che vuoi
    print $dictionary['welcome']; 
    per finire potresti impostare una regola di rewrite per valorizzare $lang con /ita o /eng come dicevi prima, anxche se le dir fisicamente non esistono...


    sono molto interessato a questo script solo che nn capisco una cosa

    Per esempio io devo tradurre delle cose in un form
    codice:
    <?
    include ('lingue/'.$lang.'.php');
    
    //fine 
    ?>
    <form method='post' action='mail_proc.php'>
      <table width='500' border='0' align='center' cellpadding='0' cellspacing='0' bgcolor='#FFFFFF'>
        <tr>
          <td width='100%'>
            <table width='100%' cellspacing='0' border='1' bordercolor='#CCCCCC' cellpadding='0'>
              <tr bordercolor='#CCCCCC'>
                <td valign='top' width='30%' height='50'>
                  <div align='center'><font color='#006699' face='Verdana, Arial, Helvetica, sans-serif' size='1'>
    
                      
    <? print $lang['goto'] ; ?>  
    
                        :</font></div>
                </td>
                <td valign='top' width='70%' height='50'>
                  <div align='center'><font face='Verdana, Arial, Helvetica, sans-serif' size='1'>
                   
    <?      // Creazione della lista dei destinatari in base alla configurazione
          // di config.inc
    
          // Creazione dell'indice
          $i = 0;
    
          while(isset($destinatario[$i]) and isset($descrizione[$i]))
          {
            // Echo del destinatario corrispondente all'indice di questo giro del ciclo
            echo "<input name=\"dest[]\" type=\"checkbox\" value=\"".$destinatario[$i].",".$descrizione[$i]."\">".nbsp($descrizione[$i])."  \n";
    
            // Incremento dell'indice
            $i = $i+1;
          }
          // Creazione della casella "Altro" nel caso sia impostato nel file di
          // configurazione
          if($destinatario_pers=="si")
          {
            echo "
    Altro (separare con virgola se gli indirizzi sono pi di uno): <input type=\"text\" name=\"altro\" style=\"background-color: #F2F2F2; border-style: solid; border-color: #cccccc\">";
          } ?>
        
    
    </font></div>
                </td>
              </tr>
              <tr bordercolor='#CCCCCC'>
                <td valign='top' width='30%' height='50'>
                  <div align='center'><font color='#006699' face='Verdana, Arial, Helvetica, sans-serif' size='1'>
    
                   
    <? print $lang['email'] ; ?>
    :</font></div>
                </td>
                <td valign='top' width='70%' height='50'>
                  <div align='center'><font face='Verdana, Arial, Helvetica, sans-serif' size='1'>
                    
    
                    <input type='text' name='mittente' size='32' style='background-color: #F2F2F2; border-style: solid; border-color: #cccccc'>
                    </font></div>
              </tr>
              <tr bordercolor='#CCCCCC'>
                <td valign='top' width='30%' height='50'>
                  <div align='center'><font color='#006699' face='Verdana, Arial, Helvetica, sans-serif' size='1'>
    
                    
     <? print $lang['obj'] ;?>
    : </font></div>
                </td>
                <td valign='top' width='70%' height='50'>
                  <div align='center'><font face='Verdana, Arial, Helvetica, sans-serif' size='1'>
                    
    
                    <input type='text' name='oggetto' size='32' style='background-color: #F2F2F2; border-style: solid; border-color: #cccccc'>
                    </font></div>
              </tr>
              <tr bordercolor='#CCCCCC'>
                <td valign='top' width='30%'>
                  <div align='center'><font color='#006699' face='Verdana, Arial, Helvetica, sans-serif' size='1'>
    
                   
    <? print $lang['mes'] ; ?>
    :</font></div>
                </td>
                <td valign='top' width='70%'>
                  <div align='center'><font face='Verdana, Arial, Helvetica, sans-serif' size='1'>
    
                    <textarea cols='32' style='background-color: #F2F2F2; border-style: solid; border-color: #cccccc' rows='16' name='messaggio'></textarea>
                    
    
                    
    
                    </font></div>
                </td>
              </tr>
              <tr bordercolor='#CCCCCC'>
                <td valign='top' width='30%'>
                  <div align='center'><font color='#006699' face='Verdana, Arial, Helvetica, sans-serif' size='1'>
    
                   
     <? print $lang['sig'] ; ?>
    : </font></div>
                </td>
                <td valign='top' width='70%'>
                  <div align='center'><font face='Verdana, Arial, Helvetica, sans-serif' size='1'>
    
                    <input type='text' name='firma' size='32' style='background-color: #F2F2F2; border-style: solid; border-color: #cccccc'>
                    
    
                    
    
                    </font></div>
                </td>
              </tr>
             <?
                if($invia_ip=="si")
                {
                  echo "<input type=\"hidden\" name=\"ip\" value=\"".$_SERVER['REMOTE_ADDR']."\">\n";
                }
                
                if($testo_ip=="si")
                {
                  echo "<tr>";
                    echo "<td colspan=\'2\' valign=\'top\' bordercolor=\'#CCCCCC\' height=\'50\'>\n";
                        echo '<font face=\'Verdana, Arial, Helvetica, sans-serif\' size=\'1\'>
    \n';
                        echo '<center><font color=\"red\">Nota: </font> Il tuo Indirizzo IP &egrave; '.$_SERVER['REMOTE_ADDR'].'. Sar&agrave; registrato per sicurezza e sar&agrave; segnalato alle autorit&agrave; competenti in caso di necessit&agrave.</center>\n';
                        echo '</font></div>\n';
                    echo '</td>\n';
                  echo '</tr>';
                }?>
             
              <tr>
                <td colspan='2' valign='top' bordercolor='#CCCCCC' height='50'>
                  <div align='center'>
                    <font face='Verdana, Arial, Helvetica, sans-serif' size='1'>
    
                    <input type='submit' name='invia' value='
     <? print $lang['inv'] ; ?>'>
                    
                    <input type='reset' value='
    
    <? print $lang['canc'] ;?>
    ' name='reset'>
                    </font></div>
                </td>
              </tr>
            </table>
      </table>
      </form>

    io ho solo quelle variabili da modificare

    Come faccio ad utilizzare il rewrite?

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.