Visualizzazione risultati 1 fino 12 di 12

Discussione: Unire due variabili e mostrarne il contenuto

  1. #1
    L'avatar di miki92
    miki92 non è connesso AlterGuru 2500
    Data registrazione
    21-04-2007
    Residenza
    Procida (NA)
    Messaggi
    4,233

    Predefinito Unire due variabili e mostrarne il contenuto

    Buongiorno,
    sarò il più breve e descrittivo possibile: ho intenzione di fare un sito multilingue e per fare ciò utilizzo delle variabili che contengono i vari testi nelle varie lingue. Ora devo mostrare, a seconda della scelta dell'utente, la variabile con la giusta lingua, ho questi file:

    lingue.php
    Codice PHP:
    <?php

    if(empty($_GET['lan'])){
    $lan = "it";
    }else{
    $lan = $_GET['lan'];
    }

    $home_it = "Ciao e Benvenuto";

    $home_en = "Hello and Wellcome";

    ?>
    index.php
    Codice PHP:
    <?php

    include("lingue.php");

    echo
    $home_$lan;

    [OR]

    echo
    "$"."home"."_".$lan;

    [OR]

    echo
    "$home_".$lan;

    [OR]

    echo
    $home."_".$lan;
    ?>
    La pagina index mi mostra it, niente o solo _it
    Come devo fare per unire la variabile $lan alla variabile $home_ così da mostrare il testo di quella variabile?
    Apprezzi l'aiuto? Offrimi un caffè!

  2. #2
    Guest

    Predefinito

    Secondo me sbagli approccio.
    Troppi controlli, troppe variabili.

    Io farei così: crea un file di linguaggio contenente un array con elementi del tipo
    [identificativo_frase]=>'Frase tradotta'

    Ovviamente tutti i file di lingua dovranno contenere gli stessi indici.
    Nel template, invece, sostituisci tutte le parole e le frasi con i relativi elementi dell'array:

    echo $L['identificativo_frase'];

    Ti basterà, in questo modo, includere il file giusto nelle pagine interessate.


    Ciao!

  3. #3
    L'avatar di miki92
    miki92 non è connesso AlterGuru 2500
    Data registrazione
    21-04-2007
    Residenza
    Procida (NA)
    Messaggi
    4,233

    Predefinito

    Già non ci avevo pensato...e menomale che uso questo metodo per il captcha Grazie debug.

    EDIT:

    Mi è venuto in mente un dubbio:

    Codice PHP:
    <?php

    $a
    = array("home_it"=>"ciao","home_en"=>"Hello","other_it"=>"arrivederci","other_en"=>"bye bye");
    $l = "it"; //Per Esempio

    echo $a[$l];

    ?>
    Non può funzionare...come faccio a prendere il testo della pagina che voglio nella giusta lingua?
    Ultima modifica di miki92 : 11-12-2008 alle ore 11.55.46
    Apprezzi l'aiuto? Offrimi un caffè!

  4. #4
    L'avatar di dementialsite
    dementialsite non è connesso Super Moderatore
    Data registrazione
    19-10-2004
    Residenza
    fuori Padova
    Messaggi
    5,046

    Predefinito

    Citazione Originalmente inviato da miki92 Visualizza messaggio
    ... Come devo fare per unire la variabile $lan alla variabile $home_ così da mostrare il testo di quella variabile?
    Per la cronaca, risposta altrettanto secca e concisa:
    Codice PHP:
    <?php
    include "lingue.php";

    $select = 'home_' . $lan;

    // stampa il risultato... il doppio dollaro è voluto
    echo $$select;
    ?>
    Anche se ti consiglierei anch'io l'approccio suggerito da debug...

    Risposta all'EDIT: hai commesso due errori, hai scambiato il variabile array con quella della chiave, inoltre le chiavi devono essere "it", "en", "fr", non "home_it", "home_en", "home_fr"...

    Stammi bene...
    Ultima modifica di dementialsite : 11-12-2008 alle ore 11.46.19
    Le questioni tecniche hanno risposte migliori nel forum pubblico, non trovi?

    When you don't know your next step... improvise

    ALTERVISTA WANTS YOU!
    Vuoi diventare moderatore su AlterVista? Scopri come...

  5. #5
    L'avatar di miki92
    miki92 non è connesso AlterGuru 2500
    Data registrazione
    21-04-2007
    Residenza
    Procida (NA)
    Messaggi
    4,233

    Predefinito

    Grazie dementialsite ma comunque non funziona (ho usato le giuste variabili qui):
    Codice PHP:
    <?php include("multilingue.php"); $select = 'home_'.$lingua; echo $$select; ?>
    Comunque provando con il codice di debug mi viene quel dubbio che ho scritto nell'edit sopra.
    Citazione Originalmente inviato da dementialsite Visualizza messaggio
    Risposta all'EDIT: hai commesso due errori, hai scambiato il variabile array con quella della chiave, inoltre le chiavi devono essere "it", "en", "fr", non "home_it", "home_en", "home_fr"...
    Ma io in una pagina, nell'array, devo avere più testi...in modo tale che io modifico un solo files per tutto il sito.
    Cioè le pagine non devono fare altro che scegliere dall'array la lingua dell'utente in modo tale che se io voglio aggiungere nuove linuge basta che modifico un solo file che viene incluso in tutto il sito.
    Ultima modifica di miki92 : 11-12-2008 alle ore 11.54.42
    Apprezzi l'aiuto? Offrimi un caffè!

  6. #6
    Guest

    Predefinito

    Io intendevo un'altra cosa comunque.
    Mettiamo caso che tu abbia una cartella 'lang/' in cui hai tanti file php quante sono le lingue in cui vuoi tradurre il sito.
    Ad esempio avrai it.php, en.php, fr.php, ecc

    Ognuno di questi file conterrà il famoso array, strutturato, ad esempio, così:

    $L['ciao']=>'Ciao',
    $L['buongiorno']=>'Buongiorno a tutti',
    ecc

    Nelle pagine che verranno tradotte sostituisci le frasi con $L['ciao'] per 'Ciao', ecc.


    ciaoo!!

  7. #7
    L'avatar di miki92
    miki92 non è connesso AlterGuru 2500
    Data registrazione
    21-04-2007
    Residenza
    Procida (NA)
    Messaggi
    4,233

    Predefinito

    Intenti dire così:

    it.php
    Codice PHP:
    $a = array("$L['home']"=>"testo_home","$L['pag2']"=>"pagina 2");
    en.php
    Codice PHP:
    $a = array("$L['home']"=>"text_for_home","$L['pag2']"=>"page 2");
    Codice PHP:
    echo $L['home'];
    Avendo questi files poi nelle pagine devo richiamare la giusta lingua?
    Apprezzi l'aiuto? Offrimi un caffè!

  8. #8
    Guest

    Predefinito

    Oh my god, non pensavo che non eri capace a costruire un array!
    L'array è $L, cancella quella $a!


    Ciao!

  9. #9
    Guest

    Predefinito

    Citazione Originalmente inviato da miki92 Visualizza messaggio
    Intenti dire così:

    it.php
    Codice PHP:
    $a = array("$L['home']"=>"testo_home","$L['pag2']"=>"pagina 2");
    en.php
    Codice PHP:
    $a = array("$L['home']"=>"text_for_home","$L['pag2']"=>"page 2");
    Codice PHP:
    echo $L['home'];
    Avendo questi files poi nelle pagine devo richiamare la giusta lingua?
    proprio così, a parte l'errore di sintassi ;)
    Codice PHP:
    $L = array("home"=> ... );
    più o meno quello che uso anche io,

    Codice PHP:
    <?php
    $available
    = array( 'en', 'it' );
    $lang = ( isset( $_GET['lang'] ) && in_array( $_GET['lang'], $available ) ) ? $_GET['lang'] : 'en';

    require_once(
    '/lang/'.$lang.'.php' );
    dove /lang/en.php

    Codice PHP:
    $words = array(
    'home' => 'Welcome',
    ...
    );
    Ultima modifica di Inverno : 11-12-2008 alle ore 12.11.45

  10. #10
    L'avatar di matt93
    matt93 non è connesso Utente
    Data registrazione
    01-09-2008
    Messaggi
    241

    Predefinito

    langs.php
    Codice PHP:
    <?
    $lang
    =array(
    'it'=>array(
    'ciao'=>'Ciao',
    'arrivederci'=>'Arrivederci',
    'buonasera'=>'Buona Sera',
    'lingua'=>'Lingua'
    ),
    'en'=>array(
    'ciao'=>'Hello',
    'arrivederci'=>'See you later',
    'buonasera'=>'Good Evening',
    'lingua'=>'Language'
    ));
    ?>
    initialize.php (un file che includi in tutte le pagine, io per esempio uso include/init.php)
    Codice PHP:
    <?
    session_start
    ();
    include(
    "include/lang.php");
    // [...] altre righe...

    if(!isset($_SESSION['language'])){
    $_SESSION['language']='it'; // Lingua di default
    }

    if(isset(
    $_GET['lang'])){
    if(isset(
    $lang[$_GET['lang']])){ // Esiste la lingua?!?!?!?
    $selected_language=$_GET['lang'];
    }else{
    $selected_language="it"; // Lingua di default
    }
    }else{
    $selected_language=$_SESSION['language'];
    }
    $_SESSION['language']=$selected_language;
    $L=$lang[$selected_language];
    ?>
    pagina.php
    Codice PHP:
    include("include/initialize.php");
    echo
    '<p>'.$L['ciao'].'</p>';
    echo
    '<p>'.$L['lingua'].': ';
    foreach(
    $lang as $identifier=>$lingua){
    echo
    '<a href="?'.$_SERVER['QUERY_STRING'].'&lang='.$identifier.'">';
    if(
    $_SESSION['language']==$identifier){
    echo
    '<b>'.$identifier.'</b>';
    }else{
    echo
    $identifier;
    }
    echo
    '</a>';
    }
    echo
    '</p>';

    echo
    $L['buonasera'];
    ?>

  11. #11
    L'avatar di miki92
    miki92 non è connesso AlterGuru 2500
    Data registrazione
    21-04-2007
    Residenza
    Procida (NA)
    Messaggi
    4,233

    Predefinito

    Citazione Originalmente inviato da debug Visualizza messaggio
    Oh my god, non pensavo che non eri capace a costruire un array!
    L'array è $L, cancella quella $a!


    Ciao!
    Ops...ho copiato senza modificare la variabile...comunque minimo a questo ci giungo debug

    Citazione Originalmente inviato da Inverno Visualizza messaggio
    proprio così, a parte l'errore di sintassi ;)
    Codice PHP:
    $L = array("home"=> ... );
    più o meno quello che uso anche io,

    Codice PHP:
    <?php
    $available
    = array( 'en', 'it' );
    $lang = ( isset( $_GET['lang'] ) && in_array( $_GET['lang'], $available ) ) ? $_GET['lang'] : 'en';

    require_once(
    '/lang/'.$lang.'.php' );
    dove /lang/en.php

    Codice PHP:
    $words = array(
    'home' => 'Welcome',
    ...
    );
    Grazie ottimo spunto. Ora funziona tutto bene...vi ringrazio a tutti
    Apprezzi l'aiuto? Offrimi un caffè!

  12. #12
    Guest

    Predefinito

    Citazione Originalmente inviato da miki92 Visualizza messaggio
    Buongiorno,
    sarò il più breve e descrittivo possibile: ho intenzione di fare un sito multilingue e per fare ciò utilizzo delle variabili che contengono i vari testi nelle varie lingue. Ora devo mostrare, a seconda della scelta dell'utente, la variabile con la giusta lingua, ho questi file:

    lingue.php
    Codice PHP:
    <?php

    if(empty($_GET['lan'])){
    $lan = "it";
    }else{
    $lan = $_GET['lan'];
    }

    $home_it = "Ciao e Benvenuto";

    $home_en = "Hello and Wellcome";

    ?>
    index.php
    Codice PHP:
    <?php

    include("lingue.php");

    echo
    $home_$lan;

    [OR]

    echo
    "$"."home"."_".$lan;

    [OR]

    echo
    "$home_".$lan;

    [OR]

    echo
    $home."_".$lan;
    ?>
    La pagina index mi mostra it, niente o solo _it
    Come devo fare per unire la variabile $lan alla variabile $home_ così da mostrare il testo di quella variabile?
    Codice PHP:
    <?php
    $lan
    = "it";
    $home_it = "Ciao e Benvenuto";
    echo ${
    'home_'.$lan};
    ?>
    Comunque gli array per queste cose sono decisamente meglio.
    Non so se fai programmazione liscia liscia o utilizzi dei template engine, nel secondo caso direi che l'i18n può aiutarti.

    Ciao
    Ultima modifica di golfox : 11-12-2008 alle ore 16.43.35

Regole di scrittura

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