Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 15

Discussione: Array Associativo

  1. #1

    Array Associativo

    Qualcuno di voi mi sa dire qualcosa a proposito del limite massimo di una key di tipo stringa in un array associativo. Mi spiego:

    $lan = array('testo in italiano.......' => 'testo in inglese.....')

    Ovviamente avete inteso che sto implementando un sito multilanguage e
    al posto di "testo in italiano......." e di "testo in inglese....." dovrei effettuare una traduzione anche di una pagina web molto lunga.

    In Attesa
    Buon Lavoro a Tutti

  2. #2
    no ma che sei matto? al più l'array fallo:

    Codice PHP:

    $refs 
    = array(

    'reference_id' => array(
      
    'it' => 'testo_italiano',
      
    'en' => 'testo_inglese'
    )

    );

    $lang 'it';

    ....

    echo 
    $refs['reference_id'][$lang]; 
    anche perchè, anche per logica, se un giorno ci metti una terza lingua come faresti?
    IP-PBX management: http://www.easypbx.it

    Old account: 2126 messages
    Oldest account: 3559 messages

  3. #3
    Utente di HTML.it L'avatar di Razorblade
    Registrato dal
    Feb 2002
    Messaggi
    1,308
    Originariamente inviato da Santino83_02
    no ma che sei matto?
    In realtà è uno dei sistemi di localizzazione utilizzato da Zend Framework, però la chiave è meglio metterla in inglese ed il valore tradotto, così facendo, in caso di selezione di una lingua la cui traduzione non è esistente, hai di default il testo in inglese.

    Non sarebbe nemmeno necessario mettere chiavi lunghissime ma usare degli identificatori,

    es 'privacy_text' => 'Informativa sulla privacy bla bla..'

    e nel tuo codice chiamare una funzione, es. translate( 'privacy_text' ) che da una chiave va a prendersi il corrispondente valore nella lingua attualmente in uso.

    Come ZF i file di traduzione potresti salvarli in directories chiamate come l'abbreviazione lingua ( it, en, fr, de ecc ), ed al loro interno i file php da caricare ( es. it.php, en.php, de.php ).

    Ciao

  4. #4
    guarda, non so come faccia zend, ma non penso che faccia una cosa del tipo:

    Codice PHP:

    array('clicca qui per scaricare' => 'click here to download'
    come domandato in richiesta... invece, come normalmente si fa:

    Codice PHP:

    array('download_text' => 'clicca qui per scaricare')
    ...
    array(
    'download_text' => 'click here to download'
    o messo tutto assieme, o come suggerito diviso in diversi file per la lingua
    IP-PBX management: http://www.easypbx.it

    Old account: 2126 messages
    Oldest account: 3559 messages

  5. #5
    In realtà la mia soluzione è questa:

    1) file php con tutte le traduzioni
    <?php $lan = array('Utente..'=>'User....','Entra'=>'Login',) ?>

    2) classe php
    class language
    { function traduci($stringa) {
    if ($_SESSION['language']=="it")
    {
    $traduzione=$stringa;
    return $traduzione;
    }
    if ($_SESSION['language']=="en")
    { require("lang_en.php");
    }
    $traduzione=$lan[$stringa];
    if (!isset($traduzione)) $traduzione=$stringa;
    return $traduzione;
    }
    }
    $l=new language();
    ?>


    nel codice scrivo : $l->traduci('utente');

    CHE NE PENSATE?

  6. #6
    Utente di HTML.it L'avatar di Razorblade
    Registrato dal
    Feb 2002
    Messaggi
    1,308
    Scusa Santino83_02,
    non è una domanda provocatoria, ma qual è la differenza tra le gli array che hai scritto?

    @masaniello
    Inserisci il codice formattato o non si capisce nulla

  7. #7
    Originariamente inviato da Razorblade
    Scusa Santino83_02,
    non è una domanda provocatoria, ma qual è la differenza tra le gli array che hai scritto?

    @masaniello
    Inserisci il codice formattato o non si capisce nulla
    Ok. Scusa

    Quindi ... faccio un file per ogni lingua (questo è lang_en.php):
    $lan = array( 'Utente'=>'User', ecc. ecc. ecc. ecc.)
    Poi creo la seguente classe in un file da includere in tutte le pagine:
    class language
    {
    function traduci($stringa)
    {
    if ($_SESSION['language']=="it")
    { $traduzione=$stringa; return $traduzione; }
    if ($_SESSION['language']=="en")
    {
    require("lang_en.php"); // Qui includo il file con le traduzioni
    }
    $traduzione=$lan[$stringa];
    if (!isset($traduzione)) $traduzione=$stringa; return $traduzione;
    }
    }
    $l=new language();
    Nel codice basta fare : $l->traduci('stringa'); // se non c'e' mi restituisce la stringa passata

  8. #8
    Utente di HTML.it L'avatar di Razorblade
    Registrato dal
    Feb 2002
    Messaggi
    1,308
    Originariamente inviato da masaniello
    Ok. Scusa
    Usa il bottone "PHP" e metti il codice tra i tag

  9. #9
    Suggerirei una visita a google con "php gettext" come stringa di ricerca

  10. #10
    Originariamente inviato da Razorblade
    Scusa Santino83_02,
    non è una domanda provocatoria, ma qual è la differenza tra le gli array che hai scritto?
    beh, immaginati di dover usare il primo array per stampare i testi, come faresti, ad esempio, a stampare l'italiano? e se ci fossero più lingue di inglese e italiano? impossibile da usare e pensare... mentre il secondo esempio è completamente differente e usabile e scalabile per il numero di lingue richiesto

    @Masaniello

    ti ripeto la domanda: se devi aggiungere una terza lingua come fai? l'array delle lingue è organizzato male... oppure non ho capito io come lo utilizzi....
    IP-PBX management: http://www.easypbx.it

    Old account: 2126 messages
    Oldest account: 3559 messages

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.