Visualizzazione risultati 1 fino 26 di 26

Discussione: Per realizzare un sito multilingua in php?

  1. #1
    Guest

    Predefinito Per realizzare un sito multilingua in php?

    Come da titolo :)

  2. #2
    L'avatar di Evcz
    Evcz non è connesso Utente storico
    Data registrazione
    31-05-2002
    Residenza
    Vicenza
    Messaggi
    5,670

    Predefinito

    cosa ti interessa di preciso?

    io il metodo più semplice che uso è questo:

    1) riconosco la lingua dell'utente tramite questo codice:
    Codice:
    //lingue supportate
    $lang_supported[] = "it";
    $lang_supported[] = "en";
    $lang_supported[] = "us";
    $lang_supported[] = "de";
    
    //lingua di default
    $lang_default = "it";
    
    //controllo lingua solo se l'utente non ha già settata una prima
    if(!isset($lang)){
    	$lang = $_SERVER['HTTP_ACCEPT_LANGUAGE'];
    	$lang = explode(",",$lang);
    	$lang1 = explode("-",$lang['0']);
    	$lang1 = strtolower("".$lang1['0']);
    	$lang2 = explode("-",$lang['1']);
    	$lang2 = strtolower("".$lang2['0']);
    	if(in_array($lang1, $lang_supported))
    		$lang = $lang1;
    	elseif(in_array($lang2, $lang_supported))
    		$lang = $lang2;
    	else
    		$lang = $lang_default;
    }
    //fine controllo lingua
    2) carico il file di linguaggio per quella lingua:
    Codice:
    //includo file di linguaggio
    if(!in_array($lang, $lang_supported))
    	$lang = $lang_default;
    include("lang/".$lang.".php");
    il file che includo contiene costanti tipo
    Codice:
    define("_benvenuto_", "benvenuto");
    che poi quando stampo a schermo ;)
    Ultima modifica di Evcz : 05-03-2005 alle ore 22.16.42
    There are three kinds of people in this world: people who watch things happen ... people who complain about things that happen ... and people who make things happen...

  3. #3
    Guest

    Predefinito

    mi fai un esempio in pagine e crei un zip? :) perfavore

  4. #4
    L'avatar di Evcz
    Evcz non è connesso Utente storico
    Data registrazione
    31-05-2002
    Residenza
    Vicenza
    Messaggi
    5,670

    Predefinito

    basta che copi-incolli il codice li sopra in una pagina .php :P

    poi quando fai

    echo _bevenuto_." ".$username;

    ti stamperà benvenuto scritto nella lingua selezionata/rilevata ;)
    There are three kinds of people in this world: people who watch things happen ... people who complain about things that happen ... and people who make things happen...

  5. #5
    Guest

    Predefinito

    perfavore :) in quel modo riesco a capirlo meglio ^_^

    per esempio devo mettere tutto dentro a un unico file ma se vorrei mettere delle icone di bandiere per scegliere? cioè se mi fa il zippino lo riesco a comprendere meglio per favore :winkOLD:
    Ultima modifica di ErEiSeR : 05-03-2005 alle ore 22.58.24

  6. #6
    L'avatar di Evcz
    Evcz non è connesso Utente storico
    Data registrazione
    31-05-2002
    Residenza
    Vicenza
    Messaggi
    5,670

    Predefinito

    file index.php

    Codice PHP:
    <?PHP
    //lingue supportate
    $lang_supported = array("it","en","de");

    //lingua di default
    $lang_default = "it";

    //controllo lingua solo se l'utente non ha già settata una prima
    if(!isset($lang)){
    $lang = $_SERVER['HTTP_ACCEPT_LANGUAGE'];
    $lang = explode(",",$lang);
    $lang1 = explode("-",$lang['0']);
    $lang1 = strtolower("".$lang1['0']);
    $lang2 = explode("-",$lang['1']);
    $lang2 = strtolower("".$lang2['0']);
    if(
    in_array($lang1, $lang_supported))
    $lang = $lang1;
    elseif(
    in_array($lang2, $lang_supported))
    $lang = $lang2;
    else
    $lang = $lang_default;
    }
    //fine controllo lingua

    //includo file di linguaggio
    if(!in_array($lang, $lang_supported))
    $lang = $lang_default;
    include(
    "lang/".$lang.".php");

    //stampo un messaggio che sarà tradotto da solo
    echo _benvenuto_." pippo";
    ?>
    file lang/it.php
    Codice PHP:
    <?PHP
    define
    ('_benvenuto_', 'benvenuto');
    ?>
    file lang/en.php
    Codice PHP:
    <?PHP
    define
    ('_benvenuto_', 'welcome');
    ?>
    file lang/de.php
    Codice PHP:
    <?PHP
    define
    ('_benvenuto_', 'willkommen');
    ?>
    poi se vuoi mettere le bandierine basta che crei un collegamento testuale che si avvii cliccando su tali bandierine che punti a :

    lingua italiana:
    index.php?lang=it

    lingua inglese:
    index.php?lang=en

    lingua tedesca:
    index.php?lang=de

    etc... ;)
    Ultima modifica di Evcz : 06-03-2005 alle ore 00.16.53
    There are three kinds of people in this world: people who watch things happen ... people who complain about things that happen ... and people who make things happen...

  7. #7
    Guest

    Predefinito

    grazie mille :) cosi com'è si potrebbe spostare su how to :)

  8. #8
    L'avatar di Evcz
    Evcz non è connesso Utente storico
    Data registrazione
    31-05-2002
    Residenza
    Vicenza
    Messaggi
    5,670

    Predefinito

    l'avevo pensato anch'io...

    provalo e dimmi se va...

    se funzia correttamente lo faccio postare anche di la ;)
    There are three kinds of people in this world: people who watch things happen ... people who complain about things that happen ... and people who make things happen...

  9. #9
    Guest

    Predefinito

    allora io ho fatto cosi ho creato una cartella language dove ho messo questa index e una cartella lang con i file it en .php poi ho messo un include nella mia home tutto va bene ma se provo a richiamare il file inglese con index.php?lang=en non va... rimane sempre in ita anche se imposto en $lang_default = "en";

  10. #10
    L'avatar di Evcz
    Evcz non è connesso Utente storico
    Data registrazione
    31-05-2002
    Residenza
    Vicenza
    Messaggi
    5,670

    Predefinito

    edit..

    ci sarà un errore.. ora riguardo..

    strana come cosa... ora lo provo in locale ;)

    risolto...

    era un typo :D

    nell'ultima riga di index.php

    al posto di _bevenuto_ ci va _benvenuto_

    ora modifico il post sopra ;)
    Ultima modifica di Evcz : 06-03-2005 alle ore 00.15.16
    There are three kinds of people in this world: people who watch things happen ... people who complain about things that happen ... and people who make things happen...

  11. #11
    Guest

    Predefinito

    no quello lo avevo gia modificato ma non me lo cambia lo stesso

  12. #12
    L'avatar di Evcz
    Evcz non è connesso Utente storico
    Data registrazione
    31-05-2002
    Residenza
    Vicenza
    Messaggi
    5,670

    Predefinito

    questo è quello che ho appena provato in locale e sembra funzionare...

    http://evcz.altervista.org/files/lang.zip

    provalo e fammi sapere ;)
    There are three kinds of people in this world: people who watch things happen ... people who complain about things that happen ... and people who make things happen...

  13. #13
    Guest

    Predefinito

    alur ecco era un mio problema lo caricato su altervista è va tutto bene qui in locale su easyphp niente da fare :(

  14. #14
    L'avatar di Evcz
    Evcz non è connesso Utente storico
    Data registrazione
    31-05-2002
    Residenza
    Vicenza
    Messaggi
    5,670

    Predefinito

    mmm... strano che non vada... ti è sempre funzionato tutto bene in locale???...

    hai attivato le register_globals?
    There are three kinds of people in this world: people who watch things happen ... people who complain about things that happen ... and people who make things happen...

  15. #15
    Guest

    Predefinito

    nn so ho installato l'easy apposta per non rompermi con ste cose :D
    cmq adesso ho uppato tutto qui http://amd.altervista.org/ereiser


    Adesso il problema sta nel fatto che se clicco sulla bandierina english mentre sto nella pagina http://amd.altervista.org/ereiser/in...agina=contatti mi rimanda all'index e traduce solo la main
    Ultima modifica di ErEiSeR : 06-03-2005 alle ore 01.38.18

  16. #16
    Guest

    Predefinito

    help me :)

  17. #17
    L'avatar di Evcz
    Evcz non è connesso Utente storico
    Data registrazione
    31-05-2002
    Residenza
    Vicenza
    Messaggi
    5,670

    Predefinito

    Citazione Originalmente inviato da ErEiSeR
    help me :)
    in ogni link adesso oltre a passare pagina=blablabbla

    devi passare anche &lang=en

    o quello che vuoi!

    altrimenti ogni volta si dimentica la lingua! :P
    There are three kinds of people in this world: people who watch things happen ... people who complain about things that happen ... and people who make things happen...

  18. #18
    Guest

    Predefinito

    uahaua ma tu sei un genio :D ( io meno asd)

    ma se voglio fare il discorsso della bandierina che link devo mettere? O_o

    cio all'inizio è IT ma per fare in modo che da ogni pagina posso tradurla?

    (quel sito l'ho assemblato con l'aiuto di 6000 persone aauauh)
    Ultima modifica di ErEiSeR : 06-03-2005 alle ore 13.23.08

  19. #19
    L'avatar di Evcz
    Evcz non è connesso Utente storico
    Data registrazione
    31-05-2002
    Residenza
    Vicenza
    Messaggi
    5,670

    Predefinito

    i link li fai tipo

    Codice PHP:
    echo "index.php?pagina=contatti&lang=".$lang;
    ;)
    There are three kinds of people in this world: people who watch things happen ... people who complain about things that happen ... and people who make things happen...

  20. #20
    Guest

    Predefinito

    scusate se mi intrometto, ma nei file della lingua, poi bisogna tradurre tutte le parole...giusto?

  21. #21
    L'avatar di Evcz
    Evcz non è connesso Utente storico
    Data registrazione
    31-05-2002
    Residenza
    Vicenza
    Messaggi
    5,670

    Predefinito

    si....

    parole o anche frasi complete ;)
    There are three kinds of people in this world: people who watch things happen ... people who complain about things that happen ... and people who make things happen...

  22. #22
    Guest

    Predefinito

    perfetto ma cosi sarebbe meglio farla scegliere all'inizio la lingua tipo faccio una intro con la selezione :) cmq grazie per avermi aiutato in queto mio problema sei stato un grande se hai msn o icq mi piacerebbe aggiungerti alla mia contact list (magari me li mandi per pm) :)

  23. #23
    Guest

    Predefinito

    ops ho sbagliato
    Ultima modifica di ErEiSeR : 06-03-2005 alle ore 20.11.55

  24. #24
    Guest

    Predefinito

    scusate,
    sono totalmente nuovo di php.
    Ho seguito il tutorial e sono riuscito a creare una
    base per un sito multilingua, ma non sono
    capace a linkare le pagine.
    Potete spiegarmi dettagliatamente come si fa il link?
    grazie e scusate l'ignoranza... :sadOLD:

  25. #25
    express non è connesso AlterVistiano
    Data registrazione
    08-08-2003
    Residenza
    Cagliari/Pisa
    Messaggi
    799

    Predefinito

    ragazzi... piccolo addendum: la variabile HTTP_ACCEPT_LANGUAGE non mi viene rilevata con mozilla firefox v.1.0.6. Ora non sono così esperto da poter dire "succede in ogni mozilla" però intanto io riscriverei così la funzione così in attesa di conferme da qualcuno più esperto.

    Codice:
    <?
      if (!isset($lang)) {
        $usr_info = $_SERVER[HTTP_ACCEPT_LANGUAGE];
        if (strpos($usr_info, "MSIE")) {
          /* codice di evcz */
          $lang = $_SERVER['HTTP_ACCEPT_LANGUAGE'];
          $lang = explode(",",$lang);
          $lang1 = explode("-",$lang['0']);
          $lang1 = trim(strtolower("".$lang1['0']));
          $lang2 = explode("-",$lang['1']);
          $lang2 = trim(strtolower("".$lang2['0']));
          if(in_array($lang1, $lang_supported) && ($lang1 != ""))
              $lang = $lang1;
          elseif(in_array($lang2, $lang_supported) && ($lang1 != ""))
              $lang = $lang2;
          else
              $lang = $lang_default;
        } else if (strpos($usr_info, "Gecko")) {
          $lang = explode(";", $usr_info);
          $lang = explode("-", $lang[3]); // sarà sempre 3 su ogni Gecko-based browser?
          $lang = trim(strtolower($lang[0]));
          if (!in_array($lang, $lang_supported) || ($lang == "")) {
            $lang = $default_lang;
          }
        }
      }
    ?>
    Ultima modifica di express : 13-09-2005 alle ore 03.17.27
    http://express.altervista.org
    Dato un lavoro, si possono scegliere due sole delle seguenti caratteristiche: veloce, economico, di qualità.
    Così capita che se un lavoro è veloce ed economico non sarà di qualità; se è veloce e di qualità non sarà economico; se è economico e di qualità non sarà veloce.

  26. #26
    express non è connesso AlterVistiano
    Data registrazione
    08-08-2003
    Residenza
    Cagliari/Pisa
    Messaggi
    799

    Predefinito

    ho anche pensato alla possibilità dell'uso di javascript ma (apparte il fatto che funzionerebbe con browser javascript enabled) non ho la minima idea di come far utilizzare un risultato di javascript su php. Qualcuno mi da una mano?

    btw la variabile che ci interessa è:
    navigator.language;

    un altra interessante alternativa sarebbe potuta essere di fare il probing in base all'impostazione del valore sulla moneta corrente, ma... MANNAGGIA ALL'EURO
    http://express.altervista.org
    Dato un lavoro, si possono scegliere due sole delle seguenti caratteristiche: veloce, economico, di qualità.
    Così capita che se un lavoro è veloce ed economico non sarà di qualità; se è veloce e di qualità non sarà economico; se è economico e di qualità non sarà veloce.

Regole di scrittura

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