class Language

Classe Pubblica senza dipendenze.

I Metodi:

  1. sel_language()
  2. view_language()
  3. lang()
  4. translate()

Prima di partire con le spiegazioni è bene ricordare che questa classe può essere utilizzata se durante la fase di installazione di RGL si è scelto di installare anche la tabella language. In caso contrario la classe potrebbe essere inutilizzabile.

Un'altra cosa da sapere e che RGL inizializza una sessione Lang che sarà possibile recuperare semplicemente con la variabile:

$_SESSION['Lang']

Fatta questa breve premessa potremmo iniziare le spiegazioni sui metodi.


sel_language():

Questo metodo restituisce la lingua selezionata, sia questa di default (all'interno del file di configurazione), sia selezionata successivamente tramite la variabile GET.

Un passo alla volta. Iniziamo con l'analizzare il metodo di default:

echo Language::sel_language();

Questo codice dovrebbe restituire una stringa "it".

Ora proviamo a fare questo. Nella barra degli indirizzi inseriamo una chiamata GET come segue:

http://localhost/test/?lang=en

Perfetto, abbiamo memorizzato la nuova lingua. Riproponendo il codice di prima:

echo Language::sel_language();

ora il sistema ritornerà "en".

Quindi il metodo permette di mostrare e memorizzare una determitata lingua. Se abbiamo deciso di installare la tabella language, sbirciando nel DB troveremo le colonne code, active, flag.

Il Code, conterrà il codice per la selezione delle lingue.

Active, identifica se una lingua è attiva o meno (1: attiva; 0: non attiva);

Flag, permette di visualizzare la bandierina presente all'interno della directory: ./img/flags/


sel_language():

Questo metodo permette di prelevare dal DB i dati relativi alle lingue, quella di default ed altre lingue disponibili.

La richiesta è molto semplice:

$lingue = Language::view_language();
print_r($lingue);

 Dovremmo visualizzare qualcosa di simile:

Array ([lingua_default] => Array ([0] => Array ([id] => 43 [code] => it [active] => 0 [flag] => it.png ) ) [lingue] => Array ()) 

Ci troveremo un array con due chiavi, la prima ci permette di identificare la lingua di default; la seconda dovrebbe mostrarci l'elenco delle lingue disponibili (cioè attive).

In questo caso, non sono presenti lingue attive.

A questo punto proviamo ad attivare tre lingue e vediamo cosa accade.

Per prima cosa dovremmo attivare le tre lingue:

DB::query("UPDATE "._CONFIG_['_DB_']['_PREFIX_']."language SET active='1' WHERE code = 'it'");
DB::query("UPDATE "._CONFIG_['_DB_']['_PREFIX_']."language SET active='1' WHERE code = 'en'");
DB::query("UPDATE "._CONFIG_['_DB_']['_PREFIX_']."language SET active='1' WHERE code = 'de'");

Quindi lanciamo nuovamente il comando  visto in precedenza.
Dovremmo ora visualizzare qualcosa di simile a questo:

Array
(
    [lingua_default] => Array
        (
            [0] => Array
                (
                    [id] => 43
                    [code] => it
                    [active] => 1
                    [flag] => it.png
                )

        )

    [lingue] => Array
        (
            [0] => Array
                (
                    [id] => 15
                    [code] => de
                    [active] => 1
                    [flag] => de.png
                )

            [1] => Array
                (
                    [id] => 163
                    [code] => en
                    [active] => 1
                    [flag] => en.png
                )

            [2] => Array
                (
                    [id] => 43
                    [code] => it
                    [active] => 1
                    [flag] => it.png
                )

        )

)

Ora potremmo gestire il nostro selettore lingua del nostro progetto.


lang():

Questo metodo semplicemente raccoglie i due metodi precedenti e restituisce un array contenente i valori visti in precedenza:

$lingue = Language::lang();
print_r($lingue);

Avremmo un risultato simile al seguente:

Array
(
    [Lang] => it
    [View_language] => Array
        (
            [lingua_default] => Array
                (
                    [0] => Array
                        (
                            [id] => 43
                            [code] => it
                            [active] => 1
                            [flag] => it.png
                        )

                )

            [lingue] => Array
                (
                    [0] => Array
                        (
                            [id] => 15
                            [code] => de
                            [active] => 1
                            [flag] => de.png
                        )

                    ...

        )

)

 


translate():

Questo metodo ci permette di "prelevare" le traduzioni presenti all'interno della directory ./Config/lang/.

Di default troveremo il file it.json ma potremmo creare tutti i file che desideriamo, l'importante è seguire lo schema proposto dal file di default.

Aprendo il file it.json troveremo:

{
    "logout": "Logout effettuato con successo.",
    "err_1": "Username e/o Password errati.",
    "welcome_rgl": "Benvenuto su Regolo mini-framework PHP in MTV.",
    "generate_page": "Per creare nuove pagine utilizza l'applicativo al seguente url",

    "ok_email": "Email Spedita Correttamente!",
    "problem_mail": "Attenzione: Problemi tecnici ci impediscono di inviare l'email. Provare più tardi. Grazie.",
    "invalid_email": "Attenzione: Inserire un indirizzo email valido!",
    "invalid_file_email": "Attenzione: L'estensione del file inviato non è corretta. Email non inviata!",

    "SuperaPeso": "Attenzione: il file è troppo grande, risulta essere di ",
    "FileExtDiverso": "Estensione non consentita!",

    "QueryError1": "Attenzione, la query ha generato un errore.",
    "QueryError2": "Attenzione, la connessione ha generato un errore."
}

 Perfetto, ora proviamo a simulare una traduzione reale in Italiano ed in Inglese.

All'interno del file it.json come prima riga (dopo la parentesi graffa "{") inseriamo:

"HELLO_WORLD": "Ciao Mondo!",

Importante: seguire strettamente le regole per generare un JSON.

Perfetto ora creiamo un nuovo file all'interno della directory ./Config/lang/ nominandolo en.json e scriviamoci:

{
    "HELLO_WORLD": "Hello World!"
}

Spostiamoci ora all'interno della nostra View e nel metodo view_page() scriviamo questo breve codice:

function view_page(){
        // inizializiamo le lingue
        Language::lang();
        // traduco la frase
        $hello = Language::translate()['HELLO_WORLD'];
        ### stampo la pagina dei contenuti
        KuiperBelt::get_template(
            'test.php',
            $GLOBALS["Rgl"],
            array(
                // invio la variabile al template
                'hello'=>$hello,
            )
        );
    }

Ora, modifichiamo il template con questo codice:

<h1><?php echo $_['hello']; ?></h1>

Ora come ultima cosa, nella barra degli indirizzi del nostro browser digitiamo alternativamente:

http://localhost/mio_progetto/test/?lang=en
http://localhost/mio_progetto/test/?lang=it

Come spiegavo in precedenza inviata la variabile GET della lingua, questa verrà registrata in una variabile di sessione e quindi impostata come lingua predefinita.

Potrebbe capitare qualche volta (a me capita spesso, perchè sono ditratto :-/) di impostare una lingua e non trovare più alcune diciture stampate a video... questo capita perchè il JSON di traduzione non è completo e non contiene le chiavi tradotte richieste!


Lista dei Blocchi