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

    Sito multilingua: come strutturarlo?

    Ciao,

    sono riuscito mettere su una parvenza di sito web in html e css.
    L'ho fatto in modo tale che supporti due lingue, inglese e italiano.
    Si selezionano nella pagina principale.
    Le pagine web in inglese sono all'interno di una cartella 'en', idem quelle in italiano (it).

    Poi, sono riuscito a mettere su apache, php, e mysql con xampp.
    Ho messo le due cartelle 'en' e 'it' nella cartella htdocs di apache.

    A questo punto sorge la domanda principale:
    come si fa a fargli caricare la pagina di default, ammesso che essa sia quella in inglese.
    O meglio quali sono gli approcci in questo caso?

    Io non conosco il javascript. Immagino che in questi casi si usi un qualche meccanismo, in javascript?, attraverso il quale verificare quale settings di lingua abbia il browser e da qui
    dirottare la navigazione sulla pagina di default del mio sito situata nella sottocartella corrispondente.

    Come avete fatto voi?
    Ci sono delle risorse online o libri che ne parlano?

    grazie.

  2. #2
    Amministratore L'avatar di Vincent.Zeno
    Registrato dal
    May 2003
    residenza
    Emilia-Romagna (tortellini und cappelletti land!)
    Messaggi
    20,660
    visto che lavori in php sfruttalo:
    https://www.google.it/search?hl=it&a...pe=&as_rights=

  3. #3
    @Vincent.Zeno

    no, in realtà non lo conosco.

    la mia domanda era più generica come casistica.

    Questo è quello che ho fatto.
    ho lanciato il browser ed ho digitato localhost/index.html. La pagina esempio veniva correttamente visualizzata.
    Poi ho cancellato il contenuto della pagina esempio ed ho scritto soltanto <?php include("en/home.html"); ?>. Ho provato a caricare la pagina index.html dal browser senza ottenere nessun risultato.
    Poi, ho cambiato l'estensione del file index.html in index.php e a caricare questa volta quest'ultimo, cio' localhost/index.php e a questo punto la pagina visualizzata è stata quella corretta, cioè quella in inglese, ma visualizzata in modo errato e nella barra c'era rimasto localhost/index.php.
    Cliccando sui link della pagina del mio sito tutto è tornato alla normalità, le pagine web vengono visualizzate correttamente e nella barra si vede localhost/en/home.html ad esempio.

    Dopo aver digitato dal browser www.miosito.it, come faccio a far partire il meccanismo e dirottare il tutto su di una pagina in particolare. Intendo, sia livello autmatico (javascript? php?) basandosi sui settings di lingua del browser sia in modo diretto, cio mettento che di default vada sempre sulla paing in italiano e poi sarà l'utente da menu a passare ad un'altra lingua?

    Apprezzati anche esempi online e libri.

    grazie.

  4. #4
    Amministratore L'avatar di Vincent.Zeno
    Registrato dal
    May 2003
    residenza
    Emilia-Romagna (tortellini und cappelletti land!)
    Messaggi
    20,660
    includendo un file mica cambi l'indirizzo del file che chiami dal browser!

    ovvio che vedi localhost/index.php


    a parte che la trovo sempre un'operazione a rischio imporre al lingua (potrei essere italiano, avere il browser in giapponese e voler leggere in inglese)

    nella sostanza: leggi la lingua del browser e di conseguenza fai un redirect
    se poi vuoi lasciare l'opzione di scelta: o te lo scrivi in una sessione o in un cookie

    se vuoi approfondire sposto in php

  5. #5
    Per chi fosse interessato, e neofita come me, scrivo qui la soluzione che ho trovato in uno dei link che ha specificato Vincent.Zeno prima.

    Soluzione:
    sotto htdocs, in apache, ci sono due file di default: index.html e index.php.
    Rinominateli come volete.
    Create un nuovo vile index.php.
    Al suo interno scrivete il seguende php codice:

    codice:
    <?php
    $default = 'en/index.html';
    $redirect = array( 'it' => 'it/index.html',
                                 'fr' => 'fr/index.html'
                                 'de' => 'de/index.html' );
     
    ## / config ##
    // get the language string proposed by the browser if there is one
    function lang_from_browser()
    {
        // it;q=1.0,fr;q=0.9,en;q=0.8 OR fr-ch
        $lang_list = $_SERVER['HTTP_ACCEPT_LANGUAGE'];
        //echo $lang_list ;exit(); 
        $lang_block = explode( ',', $lang_list );
        $lang_ar = array();
        foreach( $lang_block as $t )
        {
            array_push( $lang_ar, strtolower( substr( trim( $t ), 0,2 ) ) );
        }
        return $lang_ar;
    }
    
    // redirect to the browser language if there is one
    function redirect( $lang )
    {
        global $redirect;
        if( count( $lang ) > 0 )
        {
          foreach( $lang as $l )
          {
            if( array_key_exists( $l, $redirect ) )
            {
                header( 'Location: '.$redirect[$l] );
                die();
            }
          }
        }
        return true;
    }
    
    ## redirect ##
    if( redirect( lang_from_browser() ) )
    {
        header( 'Location: '.$default );
        die();
    }
    ?>
    Non sono un esperto di php, ma è abbastanza ìovvio ciò che fa.

    A questo punto se si digita www.miosito.it sul proprio browser il redirecting funziona alla perfezione: la pagina web della lingua in questione viene visualizzata bene e l'url è corretto.
    Il tutto avviene in modo automatico senza che l'utente veda nulla.

    -------------------------------

    includendo un file mica cambi l'indirizzo del file che chiami dal browser!
    ovvio che vedi localhost/index.php
    Si lo so. Io volevo però l'effetto che dicevo sopra. Cioè, subito dopo aver digitato il nome del sito che voglio visitare, volevo che mi apparisse in autmatico la pagina di default nella lingua in questione senza far vedere nulla tipo index.php o peggio ancora specificarlo nell'url per ottenere l'effetto di cui sopra.

    a parte che la trovo sempre un'operazione a rischio imporre al lingua (potrei essere italiano, avere il browser in giapponese e voler leggere in inglese)
    ?!?!?, non c'è nessuna imposizione di alcunché.
    1) non è importante quale sia la tua nazionalità
    2) se hai installato un browser con lingua giapponese allora c'è una forte probabilità che tu conosca questa lingua, oppure sei da ricovero.
    3) Se vuoi la pagina web in inglese, puoi sempre scegliere nel menu della pagina web le varie lingue a disposizione, sebbene non sia un obbligo da parte di chi pubblica il sito mettere a disposizione differenti traduzioni del medesimo.

    Ti sei dimenticato della lingua usata per l'installazione del sistema operativo, della lingua di sistema del sistema operativo e infine della lingua preferita da chi ha l'account su quel sistema operativo.

    se vuoi approfondire sposto in php
    No grazie, va bene così.

  6. #6
    Boiadeh!! Tutto sto casino per mettere una lingua di default??
    Lo script non mette inglese di default ... ma legge la lingua del browser (e tu non lo avevi chiesto mi pare).
    Io avrei detto a php "se $lang non è definita metti $lang=en"
    Fantasupermegafavolipermeramagicultra irresistibili
    4 10 30 100 1001 personaggi insuperabili fantaincredibili ultraimpossibili iperterribili irresistibili!!!

    "... a quell'età ... bastava un dito per fare la pace ..."
    fotine

  7. #7
    boia dè o boia dé, mi verrebbe da dire, ma dipende dalla latitudine se non erro.


    Tutto sto casino per mettere una lingua di default??
    No. Mi serviva il meccanismo di dirottamento che si basava sulla lingua del browser, esattamente come è presente nel php script code. Così com'è è buono.

    Lo script non mette inglese di default ... ma legge la lingua del browser (e tu non lo avevi chiesto mi pare).
    Era impilcito nei mie commenti a partire dal primo, in quanto parlavo di un sito multilingua e in qualche modo bisogna partire. La lingua del browser, o in mancanza quella di default hard coded, è il primo passo per poi redirigere il tutto sulle pagine relative.

    In particolare l'ho detto nel mio secondo commento, forse t'è sfuggito dè:
    Dopo aver digitato dal browser www.miosito.it, come faccio a far partire il meccanismo e dirottare il tutto su di una pagina in particolare. Intendo, sia livello autmatico (javascript? php?) basandosi sui settings di lingua del browser sia in modo diretto, cio mettento che di default vada sempre sulla paing in italiano e poi sarà l'utente da menu a passare ad un'altra lingua?
    grazie cmq.

  8. #8
    secondo me c'è un errore concettuale ancora più grande.
    Cioè tu includi la pagina html, quindi per fare una modifica (o tante tante) devi lavorare allo stesso modo su tutte le pagine index.html, per ogni lingua che hai messo in opzione.
    http://codecanyon.net/category/all?ref=Manuelandro
    And I bet she told a million people that she'd stay in touch, Well all the little promises they dont mean much,When theres
    memories to be made

  9. #9
    Utente di HTML.it
    Registrato dal
    May 2012
    Messaggi
    1,453
    Bah, io per i siti multilingua farei cosi


    -> creo 4-5 file ini con le lingue principali strutturati in modo da essere 'parsati' come array
    -> leggo l'http_accept_language, controllo se appartiene alle lingue conosciute, nel caso
    non lo sia metto di default l'inglese, per questo si potrebbe usare anche le sessioni in modo
    da non ricontrollare ogni volta
    ->con un parse_ini_file ricavo il file della lingua come un array e lo utilizzo per richiamare le variabili
    di testo interessate
    ->crei una semplicissima funzione che ogni volta controlla se la chiave esiste nel
    file, se positiva la riporta sennò nulla


    Cosi per lo più lavorando una sola volta si ha un sito multilingua almeno in parte

  10. #10
    Originariamente inviato da CodeVisio
    boia dè o boia dé, mi verrebbe da dire, ma dipende dalla latitudine se non erro.
    Da me la "e" è stretta ... a livorno è più aperta


    Originariamente inviato da CodeVisio
    Era impilcito nei mie commenti a partire dal primo, in quanto parlavo di un sito multilingua e in qualche modo bisogna partire. La lingua del browser, o in mancanza quella di default hard coded, è il primo passo per poi redirigere il tutto sulle pagine relative.
    Forse l'ho interpretata male io: "come si fa a fargli caricare la pagina di default, ammesso che essa sia quella in inglese." ... non capisco "l'implicità"

    Cmq ho i miei dubbi... Dipende se fai il sito alla Nike o al pasticcere sotto casa.
    Il pasticcere, italiano e con una buona tradizione, fa più colpo col sito italiano (e poi il tedesco pigia sulla bandierina se gli interessa), così come molti altri casi...
    Fantasupermegafavolipermeramagicultra irresistibili
    4 10 30 100 1001 personaggi insuperabili fantaincredibili ultraimpossibili iperterribili irresistibili!!!

    "... a quell'età ... bastava un dito per fare la pace ..."
    fotine

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 © 2024 vBulletin Solutions, Inc. All rights reserved.