• User

    Sito multilingue

    Ciao a tutti,
    sto preparando un piccolo sito (appena 6 pagine) che vorrei proporre in diverse lingue.
    Proprio perchè i contenuti sono pochi ho creato una cartella language nella quale ho preparato un file php per ogni lingua (italian.php, french.php, english.php) nel quale ho inserito le definizioni delle variabili che ho usato per "riempire" le varie pagine.

    Sto cercando un modo per modificare la stringa:

    [php]<?
    require_once('language/italian.php');?>[/php]

    che ho messo in header.php che viene incluso in ogni pagina.

    Qualcuno ha qualche idea?
    Ho provato a fare come suggerito qui per cambiare CSS (http://atomsurfer.altervista.org/xhtml_e_css/cambiare_css_php.php) ma non funziona (forse perchè il quel caso si tratta di una stringa html e io devo modificare una stringa php?).

    Grazie 😄


  • Super User

    Ciao tarantallegra,
    potresti fare così:
    [php]
    <?
    if(file_exists("'./language/'.$_GET[lang].'.php'")){
    require_once("'./language/'.$_GET[lang].'.php'");
    }else{
    die ("la lingua scelta non esiste");
    }
    ?>[/php]

    Poi puoi richiamare le varie lingue aggiungendo ?lang=lingua all'indirizzo...
    per esempio:

    www.sito.it/pagina.php?lang=french

    va a richiamare ./language/french.php

    Ciao!


  • Bannato User Attivo

    Ciao,
    oppure così

    $lang_user = (substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2));
    if ($lang_user == "it") {
    include("$sito/lingua/it/lingua.sito");
    } else {
    include("$sito/lingua/en/lingua.en.php");
    }


  • User

    Grazie ragazzi per l'aiuto! Alla fine ci sono riuscita usando un cookie e facendo qualcosa di simile a quello che mi ha suggerito probid. Metto qui il codice in caso qualcuno ne avesse bisogno:

    Ho fatto una pagina (setlanguage.php) per impostare un cookie:

    [PHP]
    <?
    $lang = $_GET['set'];
    $referer = $_SERVER['HTTP_REFERER'];
    header("Location: $referer");
    setcookie("language", $lang, time()+43200, '/');
    header("Location: $referer");
    ?>
    [/PHP]

    e nell'header (che viene inclusa in ogni pagina) ho messo questo codice:

    [PHP]
    <?
    $LANG=$_COOKIE['language'];
    $lingua= "language/$LANG.php";
    $default= "language/english.php";
    if(!$LANG){
    require_once "$default";
    }else{
    require_once "$lingua";
    }
    ?>
    [/PHP]

    Ho messo poi delle bandierine con link a http://miosito.it/setlanguage.php?set=italian ecc...
    Così funziona perfettamente!

    Grazie a tutti e buon lavoro!

    Chiara


  • Super User

    Bene tarantallegra,
    grazie per aver postato la tua soluzione 🙂
    Ciao!