Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    Sito multilingua in PHP. Dove sbaglio?

    Ciao a tutti

    Sto realizzando un sito in PHP con più lingue.
    Nell'index voglio mettere una parte di codice che mi riconosca automaticamente la lingua del browser utilizzato dall'utente che naviga sul sito e poi caricare il relativo file con le variabili tradotte.

    Eccovi il codice:
    codice:
    <?php
    # Recupero il valore della lingua usata
    $language = $_SERVER['HTTP_ACCEPT_LANGUAGE'];
    $lang = substr($language,0,2);
    $lang = $_GET['lang'];
    
    # Includo il file di linguaggio interessato
    require("{$lang}.php");
    
    # Stampo a video il testo nella lingua selezionata
    echo $output[0] . " " . $output[1] . "
    ";
    echo $output[3] . "
    
    ";
    
    # Aggiungo dei link per cambiare la lingua
    echo $output[6] . "
    ";
    echo "IT - ";
    echo "EN - ";
    echo "DE - ";
    echo "FR";
    ?>
    Il file {$lang}.php contiene le variabili $output[xxx] tradotte nella lingua definita.

    Il problema sta nel fatto che quando faccio girare per la prima volta questo piccolo script mi viene generato un errore:
    codice:
    Notice: Undefined index: lang in C:\Programmi\EasyPHP5.2.10\www\Script di prova\Multilingua\Lingua.php on line 5
    Se invece scelgo una lingua dal menu per cambiare lingua allora il messaggio di errore scompare...

    Significa che c'è un problema quì: $lang = $_GET['lang'];

    Di preciso dove sbaglio?
    Qualcuno sa aiutarmi?

    Grazie a tutti

    Ciao ciao!

  2. #2
    intanto nel codice fai una cosa che non mi torna:
    prima leggi la lingua del browser (prime 2 righe), e lo assegni alla variabile $lang.
    Poi (riga 3) annulli quello che hai appena fatto e assegni alla variabile $lang il valore del parametro lang, passato tramite query string (che al primo accesso alla pagina non è specificato, per quello ti dà errore).

    Codice PHP:
    $language $_SERVER['HTTP_ACCEPT_LANGUAGE'];
    $lang substr($language,0,2);
    $lang $_GET['lang'];

    require(
    "{$lang}.php"); 
    quindi io farei così:

    Codice PHP:
    if(isset($_GET['lang'])) {
       
    $lang $_GET['lang'];
    } else {
       
    $language $_SERVER['HTTP_ACCEPT_LANGUAGE'];
       
    $lang substr($language,0,2);   
    }

    require(
    "{$lang}.php"); 
    se è presente il valore in query string (?lang=en) leggi quello, altrimenti la lingua del browser.

  3. #3
    Originariamente inviato da carlogh
    intanto nel codice fai una cosa che non mi torna:
    prima leggi la lingua del browser (prime 2 righe), e lo assegni alla variabile $lang.
    Poi (riga 3) annulli quello che hai appena fatto e assegni alla variabile $lang il valore del parametro lang, passato tramite query string (che al primo accesso alla pagina non è specificato, per quello ti dà errore).

    Codice PHP:
    $language $_SERVER['HTTP_ACCEPT_LANGUAGE'];
    $lang substr($language,0,2);
    $lang $_GET['lang'];

    require(
    "{$lang}.php"); 
    quindi io farei così:

    Codice PHP:
    if(isset($_GET['lang'])) {
       
    $lang $_GET['lang'];
    } else {
       
    $language $_SERVER['HTTP_ACCEPT_LANGUAGE'];
       
    $lang substr($language,0,2);   
    }

    require(
    "{$lang}.php"); 
    se è presente il valore in query string (?lang=en) leggi quello, altrimenti la lingua del browser.
    Il tuo ragionamento non fa una piega
    Effettivamente il codice originale non era così, sono stato io a fare qualche modifica perchè come dici tu stesso la variabile letta da GET è vuota inizialmente.

    Ti ringrazio, mi sei stato di aiuto!

    Ciao ciao!

  4. #4

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.