Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 30
  1. #1

    Crezione di un sito bilingue

    Dvo creare un sito bilingue (italiano e inglese) e non so bene come fare...
    Non voglio fare due versioni differenti, ma la stessa pagina può essere in due lingue (magari grazie a ?lingua=ita).
    Dopo di questo...Qual'è il metodo che rallenta meno la pagina? Inserire in un database, file di testo, o tutto in una variabile?

    Io pensavo al file di testo che permette un veloce cambio delle pagine...Esiste qualche altro metodo?

    Grazie

  2. #2
    Utente di HTML.it L'avatar di carlo2002
    Registrato dal
    Jun 2002
    Messaggi
    2,746
    mi trovo quasi nella stessa situazione, solo che di lingue ne devo mettere 4.

    pensavo di fare un file con dentro un mini vocabolario, per
    tutte le voci comuni tipo i nomi dei pulsanti i titoli ecc.

    per ogni parola un array suddiviso per lingue con le
    relative traduzioni

    il file lo includerei nelle altre pagine passando
    una variabile che identifica la lingua scelta

    una verifica sull'impostazione della lingua nel browser
    in modo da far comparire di default quella giusta e poi uno
    può anche cambiarla.

    e dal pannello di controllo chi si gestisce il sito
    può inserire i vari contenuti in più lingue.

    solo che tutto questo me lo sono immaginato da solo e
    non so se è la via migliore.

    Qualcuno sa se esttamente c'è qualche metodo collaudato
    per risolvere la questione?
    Errare humanum est, perseverare ovest

  3. #3
    Utente di HTML.it L'avatar di carlo2002
    Registrato dal
    Jun 2002
    Messaggi
    2,746
    up^
    Errare humanum est, perseverare ovest

  4. #4
    Provate a guardare in pear.php.net ci sono librerie apposta per il vostro bisogno!

    http://pear.php.net/packages.php?cat...ationalization

  5. #5
    Utente di HTML.it L'avatar di miki.
    Registrato dal
    Oct 2004
    Messaggi
    1,918
    potete creare per ogni "frase" una variabile, poi richiamate un file ita.lng o eng.lng a seconda della variabile nel url.

    esempio

    ita.lng
    $ciao ="ciao, benvenuto su..., qui puoi etc etc"

    eng.lng
    $ciao = "Hi, welcome on..., here you can etc etc"


    nel file metti
    if(isset($_GET['lingua'])) $i = $_GET['lingua'];
    else $i = "ita";
    switch ($i) {
    case "ita":
    require_once('ita.lng');
    break;
    case "eng":
    require_once('eng.lng');
    break;
    }

    <?=$ciao ?>
    You cannot discover new oceans unless you have the courage to lose sight of the shore

    Caro Dio, quando nelle preghiere ti chiedevo di far morire quel pedofilo truccato, liftato,mentalmente disturbato e di colore indefinibile, non intendevo Michael Jackson.

  6. #6
    Ciao, vi posso dire che soluzione ho adottato io non so' se fa' al caso vostro. E' un misto tra db e file di vocabolario.

    Nelle tabelle ad es che costruiscono i pull down menù ho inserito un campo descrittivo per ogni lingua tipo desc_it, desc_en, desc_de.

    Per ciò che non richiede strettamente una query al db ho usato tanti files di vocabolario quante sono le lingue language_it.php, language_en.php, language_de.php ...... dove allo stesso nome di variabile o costante corrisponde la parola nella lingua di riferimento.

    Poi usando una variabile che si riferisce alla lingua selezionata $lang ho fatto includere il file
    language_$lang.php
    e nelle query ad es.
    "SELECT desc_$lang FROM tabella WHERE..."

    Ritengo che il file di vocabolario, se non è immenso, possa preferirsi ad una soluzione tutta in db che potrebbe richiedere tante query. Oviamente bisogna ragionare sul problema contingente.

    Un ultima cosa attenzione ai problemi di ordinamento delle voci di pulldown menù nelle diverse lingue, ad es. con MySQL mi sono ritrovato le lettere con la umlaut in fondo quindi un order by desc_$lang non sempre andava bene.

    ciao

  7. #7
    ragazzi il sito che dovrei fare io è impostato così:

    delle pagine sono classiche con testo e fotografie, li potrei magari collegarle a dei file di testo vocablario (la prima volta che lo facco per le lingue spero mi venga bene...).

    il vero problema si pone nella pagina prodotti dove la pagina si crea di già tramite query al database, mi prende per ogni categoria di prodotto tutti i relativi record presenti... come potrei fare per implementare la seconda lingua li?
    Dovrei fare un nuovo campo in cui in ogni record inserisco la seconda descrizione? poi magari chiamo il campo descrizione_eng... solo che come vado a richiamarlo? Cioè come faccio a dire al browser o meglio al db che l'utente che sta navigando il sito vuole l'eng?

    scusate la confusione.

    Grazie,
    Luca

  8. #8
    Ciao,
    io suggerirei di fare un menu (come proponeva Ermanno Ancona) cn tutte le lingue da scegliere, poi quando clicko su una lingua vengo reindirizzato a una pagina ricevente che setta $_SESSION['lingua']=$_GET['lingua'];
    e successivamente prende le variabili o dal file che ha lo stesso nome della $_SESSION['lingua'](es: italian.lang) oppure da un unico file facendo $config['cartitaliano'] = "carrello" e quindi echo $config['cart'.$_SESSION['lingua']].
    PEr quanto riguarda il database basterebbe fare più campi ad esempio italian_description|english_description e facendo poi:
    Codice PHP:
    mysql_query("Select * from ".$_SESSION['lingua']."_products"); 
    Oppure un campo solo interpretandolo con qualche explode.
    Ciao

    P.S: nel primo modo, cioè facendo + campi nella tabella nn penso si perdi velocità dato che prende direttamente la lingua dalla $_SESSION['lingua'].
    Sistemi di allarme, telecamere, autoradio, video proiettori e altri prodotti tecnologici: fedom.it

  9. #9
    Per fare questo hai diverse possibilità.

    1. Scegli la lingua con un parametro GET['lingua'] (o GET['lang'] che fa più fico!!)
    2. Una volta che sai la lingua da presentare al tuo utente, la assegni ad una SESSIONE per evitare noie e richiami una variabile che definisce cosa far vedere all'utente.

    ad esempio se prendi i dati della lingua dal database allora fai in questo modo:
    SELECT * FROM tabella WHERE lingua = '$_SESSION[lingua]'
    se prandi i dati da un file, supponiamo che tu abbia salvato i file in diverse cartelle (ita, eng, esp, ecc...)

    richiami il file che definisce le variabili o le costanti in questo modo

    include('lingua/'.$SESSION['lingua']);

    all'interno avrai un file che definisce le costanti della lingua scelta

    $var = "Ciao";
    oppure
    define("CIAO","Ciao");

    che richiamerai nel tuo script opportunamente valorizzata.

    per la scelta della lingua io in passato ho fatto così:

    Codice PHP:
    $lingue = array('ita''eng''esp''fra'); # lingue consentite
    if (!isset($_SESSION['lingua'])) {
         
         
    # primo caso, non hai scelto la lingua ma non esiste ancora la sessione
         # se NON scegli una lingua inposti la lingua di default
         
    if(empty($_GET['lingua'])) {
            
    $lingua 'ita' # lingua di default
            
    $_SESSION['lingua'] = $lingua
        
    } else {
             
             
    # se scegli una lingua, devi controllare che sia corretta con in_array
             # e poi imposti le variabili
            
    $lingua = (in_array($lingue,$_GET['lingua']))) ? $_GET['lingua'] : 'ita';
            
    $_SESSION['lingua'] = $lingua;
        }
    } else {
     
         
    # secondo caso, se hai già una scelta, 
        # devi sono controllare che la scelta non venga modificata
        
    if(!empty($_GET['lingua'])) {

            
    $lingua = (in_array($lingue,$_GET['lingua']))) ? $_GET['lingua'] : 'ita';
            
    $_SESSION['lingua'] = $lingua;
        }

    Ti ho commentato bene il codice, spero di essere stato chiaro.

    Se hai altri dubbi... chiedi pure!

    Ciao!

  10. #10
    Utente di HTML.it L'avatar di dottwatson
    Registrato dal
    Feb 2007
    Messaggi
    3,012
    se vogliamo la strada breve breve breve ho letto che con javascrip puoi avere in output diretto una pagina internet gia bella e tradotta.... ovviamente però è la treaduzione di google.. che non si sa mai
    Non sempre essere l'ultimo è un male... almeno non devi guardarti le spalle

    il mio profilo su PHPClasses e il mio blog laboweb

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.