Visualizzazione risultati 1 fino 8 di 8

Discussione: Creare sito multilingua con variabile GET e memorizzazione valore

  1. #1
    Guest

    Predefinito Creare sito multilingua con variabile GET e memorizzazione valore

    Come da titolo, ragazzi ho cercato ma non ho minimamente idea di come poter fare un sito multilingua.

    Allora, ho il sito strutturato in questo modo:

    Ho delle cartelle da cui pescare i file di lingua in modo da stampare e questi vengono inclusi nella index.

    Il codice che uso è questo:
    Codice PHP:
    $user_lang = $_SERVER['HTTP_ACCEPT_LANGUAGE'];

    if (
    substr($user_lang, 0, 2) == 'it')
    {
    $language = 'it-IT';
    }
    if (
    substr($user_lang, 0, 2) == 'en')
    {
    $language = 'en-US';
    }

    $lng_file = $lng_path . 'lang.php';
    Nella index richiamo:
    Codice PHP:
    include($lng_file);
    Fino ad ora funziona ma se uno per eempio vuole cambiare lingua come faccio? Una volta cliccato dovrei includere il valore passato via get (che poi diventerà un cartella virtuale) SEMPRE, quindi dovrei usare le sessioni giusto? Ma non so come fare, sarebbe da integrare a quelle righe postate poco fa con un OR ( || ) o AND ( && ) ma non saprei

  2. #2
    Guest

    Predefinito

    puoi mettere nel tuo sito un select ad esempio che ti faccia cambiare lingua, una volta cambiata la lingua salvi il valore nella sessione -> lingua, poi includi il file $lng_path/$_SESSION['lingua'].php
    ogni lingua ha un suo file:
    en.php
    it.php
    ecc...

    i file che includi hanno le costanti di tutte le cose che devi tradurre, esempio (it.php):
    Codice PHP:
    define("site_title", "Titolo del Mio sito");
    define("Hello_World", "Ciao Mondo!");
    una volta fatto questi file (inclusi a inizio pagina) all'interno dei tuoi tag html metterai ad esempio:
    Codice PHP:
    <title><?=(site_title);?></title>
    per stampare il titolo del sito...

    spero di esserti stato chiaro...ciao!

  3. #3
    Guest

    Predefinito

    Non ci siamo capiti

    Allora, io gestisco già titolo delle pagine e contenuto in base alla lingua del browser.

    Il problema è che vorrei aggiungere uno Switch Globale in modo che anche se ho la lingua italiana se selezioni lang=en-US mi venga preso il file nella cartella inglese

  4. #4
    Guest

    Predefinito

    nn mi sembra di aver ancora capito quello che vuoi fare, ma proverò a risponderti, poi vediamo se é giusta:
    quando cambi lingua la immagazini nella sessione, poi all'inizio dellla pagina includi:
    include($lng_path.$language.''php");
    o
    include($lng_path.$_SESSION['language'].''php");

    se vuoi fare per ogni lingua una sua cartella (mi sembra un po'inutile) basta che includi così:
    include($_SESSION['language'].'/lang.'php");

    cmq il metodo più facile epr fare il sito multilingua te l'ho spiegato sopra...ciao!

    Se vuoi che l'utente cambi la lingua anche se é gia preimpostata dal browser salvi la lingua sempre nella sessione, poi fai così:

    Codice PHP:
    if (isset($_SESSION['language']))
    $user_lang = $_SESSION['language']
    else
    $user_lang = $_SERVER['HTTP_ACCEPT_LANGUAGE'];
    Ultima modifica di bluster : 09-02-2009 alle ore 19.05.15

  5. #5
    Guest

    Predefinito

    Ma non è il metodo di inclusione che mi è difficile, ma mantenere la lingua che si vuole/sceglie nelle pagine senza stare a cambiare ogni volta

    $_SESSION['language'] poi dove la definisco e come?

  6. #6
    Guest

    Predefinito

    all'inizio di ogni pagina scrivi:
    Codice PHP:
    session_start();
    e poi puoi inserire qualsiasi cosa nelle sessioni:
    Codice PHP:
    $_SESSION['language'] = 'it';
    più sopra poi tii ho dato una possibile soluzione:
    Codice PHP:
    if (isset($_SESSION['language']))
    $user_lang = $_SESSION['language']
    else
    $user_lang = $_SERVER['HTTP_ACCEPT_LANGUAGE'];
    ciao!

  7. #7
    L'avatar di dreadnaut
    dreadnaut non è connesso Super Moderatore
    Data registrazione
    22-02-2004
    Messaggi
    6,306

    Predefinito

    non è troppo saggio usare un select per le lingue, ne' salvare la lingua selezionata nelle sessioni, perché questo vuol dire che i motori di ricerca troveranno solo una delle due.

    Perché entrambe le versioni siano raggiungibili, devono corrispondere a due insiemi diversi di url. Una cosa che puoi fare è avere 3 "versioni" del sito:
    • sito.altervista.org/ - lingua di default, mettiamo sia l'italiano
    • sito.altervista.org/ita/ - default, redireziona alla home
    • sito.altervista.org/eng/ - versione inglese


    copiare le pagine ovviamente non ha senso, ma puoi usare un misto di php e mod_rewrite: se modifichi il tuo codice in modo che usi Accepted-Language solo se non è definito un parametro GET ?lingua=..., puoi usare mod_rewrite per redirezionare le pagine /eng/pagina.php verso /pagina.php?lingua=eng

    gli utenti che arrivano vedono la pagina in italiano, ma un link li avvisa che esiste la versione /eng/. Volendo, puoi salvare la loro lingua scelta in un cookie, e se visitano di nuovo il sito mandarli direttamente a /eng/, o addirittura fare questo in automatico a seconda del loro Accepted-Language.

    Occhio però, con Accepted-Language, a scegliere il primo di quelli disponibili. Uno potrebbe avere il browser settato come en-gb;en;it, quindi voler vedere prima la versione inglese, e solo se questa non esiste, l'italiano. Ti basta fare un [url=php.net/explode]explode(';' , ...)[/i] sulla stringa, e poi guardare i vari valori in ordine, finché non ne trovi uno per cui hai una versione del sito.
    Ultima modifica di dreadnaut : 09-02-2009 alle ore 19.13.02

  8. #8
    Guest

    Predefinito

    Citazione Originalmente inviato da biccheddu Visualizza messaggio
    [...] Una volta cliccato dovrei includere il valore passato via get (che poi diventerà un cartella virtuale) SEMPRE [...]
    Infatti è quello che ho scritto, il valore poi diventerà una cartella, diciamo come fa il sito di Mozilla.

    Quindi dici di mettere un link che se la apgina è /en-US/Page mostra il testo in Inglese quindi include i file di lingua inglese, mentre se è /it-IT/Pagina include i file in ita, facendo scegliere all'utente solo, in poche parole, la cartella fittizia giusto?

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •