Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2001
    Messaggi
    2,043

    come gestire le lingue del sito in modo dinamico?

    Ciao,
    avrei bisogno di un parere sulla logica della gestione delle lingue.
    Faccio in modo che php capisca da che paese è collegato l'utente e gli imposto di default la sua lingua con HTTP_ACCEPT_LANGUAGE, ma poi l'utente cliccando sulla bandierina volesse cambiare lingua, come faccio a fargli rimanere quella lingua (questo lo faccio con le sessioni) se poi c'è il codice HTTP_ACCEPT_LANGUAGE che lo forza a tornare sulla lingua impostata di default?

    <?php


    if (!isset($Language))
    {
    // verifica che la variabile Language non sia vuota

    $Language = explode(',',$_SERVER['HTTP_ACCEPT_LANGUAGE']);
    //recupera la stringa con le lingue supportate dal browser

    $Language = strtolower(substr(chop($Language[0]),0,2));
    //seleziona il codice relativo alla lingua di default
    }
    if ($Language == it)
    {
    $_SESSION['lingua'] = "it";
    // se lingua di default è italiana
    }
    if ($Language == en)
    {
    $_SESSION['lingua'] = "en";
    // se lingua di default è inglese
    }
    else
    {
    $_SESSION['lingua'] = "en";
    // se la lingua è un'altra rimette l'inglese
    }





    if ($_SESSION['lingua'] == "it"){
    include('lingua_it.php');
    }
    if ($_SESSION['lingua'] == "en"){
    include('lingua_en.php');
    }


    ?>


    <------------------in questo modo viene caricato un file esterno della lingua impostata, ad esempio:------------------>

    lingua_it.php

    <------------------in cui dentro ci scrivo:------------------>

    <?php
    $titolo = "ciao a tutti, benvenuti nel mio sito";
    $testo = "questo è il mio sito personale dove presento i miei hobby, il mio lavoro, ecc…………………….";
    ?>

    <------------------per visualizzare il testo nella pagina metto:------------------>

    <?=$titolo?>

    <?=$testo?>

  2. #2
    Utente di HTML.it
    Registrato dal
    Mar 2001
    Messaggi
    2,043
    niente, ci sono arrivato da solo, faccio un redirect.

  3. #3
    devi fare tutto con $_SESSION['lingua'];

    Codice PHP:
    <?php


    if (!isset( $_SESSION['lingua'])) //<---- $_SESSION
    {


    $_SESSION['lingua'] = explode(',',$_SERVER['HTTP_ACCEPT_LANGUAGE']);
    //recupera la stringa con le lingue supportate dal browser

    $_SESSION['lingua'] = strtolower(substr(chop($Language[0]),0,2));
    //seleziona il codice relativo alla lingua di default
    }


    if (
    $_SESSION['lingua'] == "it"){
    include(
    'lingua_it.php');
    }
    if (
    $_SESSION['lingua'] == "en"){
    include(
    'lingua_en.php');
    }


    ?>

    poi quando l'utente vuole cambiarla e clicca ad esempio sulla bandierina spagnola fa solo
    $_SESSION['lingua'] = "es";

    qualora rientrassi di novo nella pagina non leggerà più 'HTTP_ACCEPT_LANGUAGE' perché troverà $_SESSION['lingua'] già settata...

  4. #4
    Utente di HTML.it
    Registrato dal
    Mar 2001
    Messaggi
    2,043
    ah, il tuo codice è molto meglio, uso il tuo, grazie

  5. #5
    Utente di HTML.it
    Registrato dal
    Mar 2001
    Messaggi
    2,043
    Ciao ho provato ma ci sono 2 cose che non vanno.

    di default mi visualizza l'immagine in inglese, ma io sono in italia

    e poi ho provato a stampare la variabile della lingua e non mi stampa niente


    Codice PHP:
    <?php


    if (!isset( $_SESSION['lingua']))
    {
    // verifica che la variabile $_SESSION non sia vuota

    $_SESSION['lingua'] = explode(',',$_SERVER['HTTP_ACCEPT_LANGUAGE']);
    //recupera la stringa con le lingue supportate dal browser

    $_SESSION['lingua'] = strtolower(substr(chop($Language[0]),0,2));
    //seleziona il codice relativo alla lingua di default



    if (
    $_SESSION['lingua'] == "it")
    {
    include(
    'include_lingua_it.php');
    }
    if (
    $_SESSION['lingua'] == "en")
    {
    include(
    'include_lingua_en.php');

    else
    {
    include(
    'include_lingua_en.php');


    $lingua2 $_SESSION['lingua'];

    echo 
    $lingua2;


    ?>

  6. #6
    Utente di HTML.it
    Registrato dal
    Mar 2001
    Messaggi
    2,043
    Ho fatto così, pare che ora funzioni:


    Codice PHP:
    <?php


    if (!isset( $_SESSION['lingua']))
    {
    // verifica che la variabile $_SESSION non sia vuota

    $_SESSION['lingua'] = substr($_SERVER["HTTP_ACCEPT_LANGUAGE"],0,2);
    //$_SESSION['lingua'] = explode(',',$_SERVER['HTTP_ACCEPT_LANGUAGE']);
    //recupera la stringa con le lingue supportate dal browser

    //$_SESSION['lingua'] = strtolower(substr(chop($Language[0]),0,2));
    //seleziona il codice relativo alla lingua di default



    if (
    $_SESSION['lingua'] == "it")
    {
    include(
    'include_lingua_it.php');
    }
    if (
    $_SESSION['lingua'] == "en")
    {
    include(
    'include_lingua_en.php');

    if (
    $_SESSION['lingua'] != "it" && $_SESSION['lingua'] != "en")
    {
    include(
    'include_lingua_en.php');




    ?>

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.