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

    sito in 2 lingue, file lang_it.php e lang_en.php aiutino

    Sto facendo la programmazione per un sito in doppia lingua.
    In pratica dovrei creare i 2 file contenenti i percorsi alle immagini in lingua tipo i vari
    chi siamo, dove siamo, pacchetti, ecc.
    I testi che contengono la pagina sono in un database.

    Quello che volevo capire era come creare poi la pagina che mostrero' al cliente.
    dovro' includere i 2 file appena creati, giusto?
    ma poi come devo far capire al sito che se digito
    www.sito.it/pagina.php?id=1&lang=it vede la pagina in italiano mentre in www.sito.it/pagina.php?id=1&lang=en vede quella in inglese?
    Mai dire Mai

  2. #2
    Ciao!

    E' semplicissimo...come prima cosa devi recuperarti la lingua che l'utente ha scelto via GET. Poi con uno switch ti recuperi il file.
    Realizzazione script php/mysql, per info:
    delrossofabio@gmail.com

    http://forum.html.it/forum/showthread.php?s=&threadid=1478962

  3. #3
    Originariamente inviato da gta3!
    Ciao!

    E' semplicissimo...come prima cosa devi recuperarti la lingua che l'utente ha scelto via GET. Poi con uno switch ti recuperi il file.
    si infatti credo che va bene questo articolo
    http://www.mrwebmaster.it/php/artico...ingua_283.html
    Mai dire Mai

  4. #4
    ho affrontato lo stesso problema e per agevolarmi il tutto ho utilizzato un "doppio binario" GET e SESSIONI

    Infatti gestire tutto tramite get (tutti i link interni del sito dovranno avere la variabile GET della lingua, anche quelli dei form!!!) alle volte crea complicazioni o cmq cose brutte...

    ad esempio un form con method post ma che nell'action contient ela variabile get... un casino insomma!!

    Allora ho fatto una cosa di questo genere

    Codice PHP:
    <?php
    session_start
    ();
    session_regenerate_id(TRUE);

    /*se mi arriva la variabile get utilizzo quella per impostare $lang*/
    /*contestualmente creo una variabile di sessione*/

    if( (isset($_GET['lang'])) && (!empty($_GET['lang'])) )
        {
        
    $lang=$_GET['lang'];
        
    $_SESSION['lang']=$lang;
        }

    /*se la viariabile get non mi è arrivata 
    cerco se è stata in precedenza valorizzata la sessione con la lingua
    e con quella imposto $lang*/

    else if( (isset($_SESSION['lang'])) && (!empty($_SESSION['lang'])) )
        {
        
    $lang=$_SESSION['lang'];
        }

    /*altrimenti si beccano $lang italiano*/
    else
        {
        
    $lang="ita";
        }


    /*in base al valore di $lang includo il file della lingua
    che contiene una serie di define*/
    switch ($lang)
        {
        case 
    'eng': include("/language/eng/define_eng.php");
        break;

        case 
    'ita': include("/language/ita/define_ita.php");
        break;

        default: include(
    "language/ita/define_ita.php");    
        }

    ?>
    in questo modo se eventualmente mi crea casini inviare la variabile GET con la lingua la posso comunque recuperare ricorrendo alla variabile di sessione...

    Spero di essermi spiegato bene..

    anzi se c'è un esperto che mi possa dare un parere (soprattutto se critico!!) lo gradierei particolarmente

  5. #5
    ma questo solo nel caso in cui sul sito dovessero esseci dei form, giusto?
    Mai dire Mai

  6. #6
    non solo...

    Non l'ho detto prima per non essere prolisso, ma ora ti spiego il secondo caso in cui mi sono trovato davanti il problema.

    Nel sito che stavo costruendo il corpo di alcune pagine erano perscate dal db che si articolava così:

    id_art INT(11) AI
    testo_ita TEXT
    testo_eng TEXT

    Quando l'amministratore del sito scriveva l'articolo (in versione italiana e in versione inglese) tramite un editor HTML (fckeditor, tiny, o qualsiasi altro...) poteva inserire dei link interni del sito... OVVIAMENTE TALI LINK ERANO SENZA LA VARIABILE GET.

    Quindi se si stava visualizzando un articolo in versione inglese (la query ovviamente si modificava in base a $lang) cliccando su quel link si andava in un altra pagina interna al sito ma si ritornava in italiano dato che ovviamente l'editor non mi inseriva le variabili GET!!!

    Invece adottando le SESSIONI io pesco $lang dalla sessione avviata in precedenza!

    Non sò se sono stato chiaro...

  7. #7
    si, ho capito perfettamente cosa dici.

    Allora ti volevo chiedere un consiglio
    anche io ho la tabella news del db che contiene
    id
    descrizione_it
    descrizione_en

    come devo far capire al sito che quando sono in
    www.sito.it/pagina.php?id=1&lang=it deve tirare fuori la descirizione italiana e quando sono in www.sito.it/pagina.php?id=1&lang=en deve tirare quella inglese?

    per il resto delle cose che ho scritto nei 2 file non ho problemi, il problema sorge su quello che c'e' nel db
    Inoltre, devo mettere anche un campo titolo_en?
    Mai dire Mai

  8. #8
    Il codice è iper-commentato quindi non serve che ti dica nulla...
    Codice PHP:
    <?php
    include("language.php");

    /*ATTENZIONE: se utilizzi il mio sistema con le sessioni
    il primo include deve essere quello del language 
    dato che al suo interno contiene session_start();
    il quale deve essere al primo rigo!!*/

    /*ricordati inoltre che tale script 
    genera in ogni caso una variabile $lang*/

    /*connessione al database*/
    include("connesione.php");

    /*ricevo l'id della news o dell'articolo o quello che è...*/
    /*trasformo tutto ciò che ricevo in un numero intero*/
    $id_newsintval($_GET['id_news']);

    /*faccio la query
    e la rivolgo al db*/
    $query="SELECT * FROM contenuti WHERE id_page=".$id_news."";
    $result mysql_query($query) or die (mysql_error());

    /*per la cronaca io faccio un select * 
    ma sarebbe più esatto fare una query dinamica
    cioè selezionare il campo che mi interessa in base a $lang
    e poi fare l'estrazione con mysql_fetch_rows*/


    while($riga=mysql_fetch_array($result))
        {
        switch(
    $lang)
            {
            case 
    'ita'$testo_page=stripslashes($riga['testo_cont_ita']);
            break;

            case 
    'eng'$testo_page=stripslashes($riga['testo_cont_eng']);
            break;
                    
            default: 
    $testo_page=stripslashes($riga['testo_cont_ita']);
            }
        }

    echo 
    $testo_page;
    ?>

  9. #9
    si ho visto

    e se invece uno non volesse fare la traduzione in inglese di quel testo ma farla tramite google in automatico?
    Mai dire Mai

  10. #10

    Ma fai sul serio?
    bhè... in tal caso tutto ciò che abbiamo detto nn serve a nulla...

    copia e incolla questo nel tuo bel sito scritto in html

    codice:
    <div id="google_translate_element"></div><script>
    function googleTranslateElementInit() {
      new google.translate.TranslateElement({
        pageLanguage: 'it'
      }, 'google_translate_element');
    }
    </script><script src="http://translate.google.com/translate_a/element.js?cb=googleTranslateElementInit"></script>

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.