Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11

Discussione: Sito Multilingua

  1. #1

    Sito Multilingua

    Salve ho la necessità di creare un sito multilingua , ho un paio di domande da farvi.
    La prima , vorrei creare una variabile di sessione che contiene la lingua cioè premo su un pulsante e mi si imposta la variabile $_SESSION['language'] ad esempio in inglese , poi ad ogni pezzo di codice metto degli if e inserisco la parte nella lingua necessaria , E' corretto ? Ci sono metodi migliori ?

    Seconda domanda , posso farlo solo in php o devo utilizzare ad esempio jquery ed ajax con la funzione onclick mi setta la variabile $_SESSION?

    terza domanda , + inerente all'html come posso creare un button in cui si veda solo l'immagine senza la parte grigia inerente al button.

    Grazie

  2. #2
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,503
    Quote Originariamente inviata da pippuccio76 Visualizza il messaggio
    Salve ho la necessità di creare un sito multilingua , ho un paio di domande da farvi.
    La prima , vorrei creare una variabile di sessione che contiene la lingua cioè premo su un pulsante e mi si imposta la variabile $_SESSION['language'] ad esempio in inglese , poi ad ogni pezzo di codice metto degli if e inserisco la parte nella lingua necessaria , E' corretto ? Ci sono metodi migliori ?
    portandoti dietro l'array in sessione consumi un sacco di memoria, io farei così:
    - un file per ogni lingua chiamati lang_it.php, lang_en.php, lang_xx.php dove xx è il codice della lingua contenuta nel file
    - in sessione metti una variabile chiamata $_SESSION['lang'] da valorizzare con it, en... a seconda della lingua scelta
    - in ogni file metti all'inizio include('lang_'.$_SESSION['lang'].'.php'); così ti viene incluso il file corretto

    i file della lingua saranno fatti così
    (quello in italiano)
    $lang['saluto'] = 'Ciao';
    ...

    (quello inglese)
    $lang['saluto'] = 'Hello';
    ...

    Come vedi le chiavi sono uguali per tutti, a cambiare sarà solo il valore, così nei file puoi usare $lang['saluto'] e verrà visualizzato nella lingua di cui è stato caricato il file.

    Seconda domanda , posso farlo solo in php o devo utilizzare ad esempio jquery ed ajax con la funzione onclick mi setta la variabile $_SESSION?
    In questo modo dovrai farlo solo in PHP perché è necessario ricaricare la pagina quando cambi lingua.

    terza domanda , + inerente all'html come posso creare un button in cui si veda solo l'immagine senza la parte grigia inerente al button.
    Grazie
    Penso si possa fare con un <input type="image" ... /> ma per ulteriori informazioni su questa cosa chiedi nella sezione HTML.

  3. #3
    Ho creato le bandierine per il linguaggio e per poter utilizzare la pagina cliccando su i due pulsanti ho fatto così :

    ho incluso

    codice:
    <script src="js/linguaggio.js"></script>

    che è questo :

    codice:
    <script type="text/javascript">
    $(document).ready(function() {
      $("#ita").click(function(){
       var linguaggio='italiano';
       
        $.ajax({
          type: "POST",
          url: "linguaggio.php",
          data: "linguaggio="+linguaggio ,
          dataType: "html",
          success: function(msg)
          {
            $("#result").html(msg);
          },
          error: function()
          {
            alert("Chiamata fallita, si prega di riprovare...");
          }
        });
      });
      
    
      $("#en").click(function(){
       var linguaggio='inglese';
       
        $.ajax({
          type: "POST",
          url: "linguaggio.php",
          data: "linguaggio="+linguaggio ,
          dataType: "html",
          success: function(msg)
          {
            $("#result").html(msg);
          },
          error: function()
          {
            alert("Chiamata fallita, si prega di riprovare...");
          }
        });
      });
    
     
    });
     
       
     
    
     
    </script>
    Che dovrebbe settare il $_SESSION :

    ecco linguaggio.php :

    codice:
    <?php
    session_start();
    ob_start();
    
    $_SESSION['linguaggio']=$_POST['linguaggio'];
    
    echo  $_SESSION['linguaggio'];
    ?>

    HO inserito un div con id result per vedere come veniva settata la variabile , ma non esce niente....
    Ultima modifica di pippuccio76; 25-05-2014 a 23:19

  4. #4
    Inserendo il codice javascript all'interno della pagina , nonostante la chiamata fallita mi setta il $_SESSION , anche se cliccando sul sorgente e il link js/linguaggio.php mi appare il codice regolare ...
    Cosa può essere ?

  5. #5
    Parto dalla terza domanda: devi utilizzare i css, trovi un sacco di esempi su internet.
    Seconda domanda: no, non ti serve ne ajax ne altro, basta php.
    Prima domanda: dipende moltissimo da come è strutturato il sito. Il sistema degli if funziona, ma alla lunga è tedioso. Ad esempio nel mio sito www.ebooksopen.org ho fatto così: nel database (se usi un database) per ogni riga ho raddoppiato i campi che andavano tradotti. Ad esempio: autore-it e autore-en in base alla lingua. Poi ho fatto un unico if dove così strutturato:
    if (italiano)
    define(AUTORE, "autore-it");
    else
    define(AUTORE, "autore-en");
    In questo modo in tutto il codice (fosse anche di un milione di righe) non sarà più necessario nemmeno un if.
    Ad esempio se sulla variabile $row[] ho il risultato di una query e volessi visualizzare l'autore, scriverei
    echo $row[AUTORE];
    senza utilizzare nessun if.
    Scarica manuali e libri open source in formato epub, pdf, mpeg: www.ebooksopen.org

  6. #6
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,503
    Questo può andare bene se hai solo una stringa da mostrare in lingue diverse, se devi mostrare tutti i nomi dei pulsanti, tutti i nomi dei campi di vari form, tutti i messaggi di servizio ecc ecc... che fai? Ti ritrovi con tabelle da centinaia di campi e un casino immane nel db.

  7. #7
    Io pensavo di mettere le varie parti della pagina (menu,contenuti, footer) in un file php distinto per ogni lingua ad esempio per l'inglese e l'italiano pertien.php e partiit.php l'if lo faccio solo all'inizio della pagina

    codice:
    if ($_SESSION['linguaggio']=italiano){
       include 'partiit.php';
    }
    else{
       include 'partien.php';
    }
    così nella pagina metto ad esempio

    echo $menu

    poi a seconda del file incluso sarà il menu sarà inglese o italiano e così per tutte le parti della pagina, inoltre se voglio inserire altre lingue basterà inserire altre pagine per l'inclusione

  8. #8
    Moderatore di Javascript L'avatar di ciro78
    Registrato dal
    Sep 2000
    residenza
    Napoli
    Messaggi
    8,514
    Quote Originariamente inviata da pippuccio76 Visualizza il messaggio
    Io pensavo di mettere le varie parti della pagina (menu,contenuti, footer) in un file php distinto per ogni lingua ad esempio per l'inglese e l'italiano pertien.php e partiit.php l'if lo faccio solo all'inizio della pagina

    codice:
    if ($_SESSION['linguaggio']=italiano){
       include 'partiit.php';
    }
    else{
       include 'partien.php';
    }
    così nella pagina metto ad esempio

    echo $menu

    poi a seconda del file incluso sarà il menu sarà inglese o italiano e così per tutte le parti della pagina, inoltre se voglio inserire altre lingue basterà inserire altre pagine per l'inclusione
    fai attenzione che nel if usi il simbolo di assegnazione non di comparazione. inoltre, per rendere la cosa migliore, puoi utilizzare il costrutto switch che, in caso di multi opzione, è migliore del'if.

    Con lo switch hai anche la possibilità di definire un valore di default.
    Ciro Marotta - Programmatore JAVA - PHP
    Preferisco un fallimento alle mie condizioni che un successo alle condizioni altrui.


  9. #9
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,503
    Quote Originariamente inviata da pippuccio76 Visualizza il messaggio
    Io pensavo di mettere le varie parti della pagina (menu,contenuti, footer) in un file php distinto per ogni lingua ad esempio per l'inglese e l'italiano pertien.php e partiit.php l'if lo faccio solo all'inizio della pagina

    codice:
    if ($_SESSION['linguaggio']=italiano){
       include 'partiit.php';
    }
    else{
       include 'partien.php';
    }
    così nella pagina metto ad esempio

    echo $menu

    poi a seconda del file incluso sarà il menu sarà inglese o italiano e così per tutte le parti della pagina, inoltre se voglio inserire altre lingue basterà inserire altre pagine per l'inclusione
    E' praticamente ciò che ti ho consigliato io, con la differenza che con il mio sistema ti risparmi il controllo if/else rendendo il tutto più performante.

  10. #10
    Quote Originariamente inviata da Alhazred Visualizza il messaggio
    E' praticamente ciò che ti ho consigliato io, con la differenza che con il mio sistema ti risparmi il controllo if/else rendendo il tutto più performante.
    Resta il fatto che se includo javascript da un file esterno non funziona mentre nella pagina funziona....

    Per farlo con php devo mettere un form e un submit ho bastano le bandierine?
    Ultima modifica di pippuccio76; 26-05-2014 a 23:14

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.