Override della lingua in Joomla!

Informazioni utiliL'idea di scrivere l'articolo che state per leggere nasce dall'invito di AlexRed di tradurre in italiano un recente articolo pubblicato su OsTraining su come modificare il formato della data in un sito realizzato in Joomla!. A questo punto ho deciso di non limitarmi alla semplice traduzione dell'articolo pubblicato su OsTraining e di ampliare il discorso sull'override della lingua in Joomla!

Il termine override nella lingua inglese ha vari significati tra i quali: "ignorare qualcosa", "avere la precedenza su qualcosa", "sovrapporsi a qualcosa". Nell'informatica, e precisamente nell'ambito della programmazione ad oggetti, assume il significato specifico di "riscrittura di un qualcosa di ereditato".


Tutti noi che utilizziamo Joomla! ci siamo, prima o poi, imbattuti in qualche aspetto del CMS che non ci piace o che non soddisfa pienamente le nostre specifiche esigenze e quindi ci siamo trovati di fronte al problema di modificare quella parte del CMS che non ci soddisfa. Esistono due modalità per apportare modifiche in Joomla!: editare i file del core di Joomla! e modificarli oppure ricorrere alla tecnica dell'override.

Editare i file del core di Joomla e modificarli è senz'altro la modalità sbagliata in quanto al successivo rilascio di un aggiornamento di Joomla! ci troveremmo di fronte ad una serie di problemi perchè potremmo perdere i cambiamenti apportati facendo l'aggiornamento.
Per cui alcuni non aggiornano più Joomla! rendendo il proprio sito insicuro ed instabile visto che la maggior parte degli aggiornamenti viene rilasciata per correggere bug presenti nel codice e/o per correggere eventuali problemi di sicurezza.
Altri aggiornano ma devono sottoporsi all'ingrato lavoro di rieditare i file del core e riapportare nuovamente le modifiche qualora con l'aggiornamento le modifiche fatte in precedenza fossero andate perse.

Ritengo la tecnica dell'override la modalità corretta di apportare modifiche in Joomla! in quanto le nostre modifiche non vengono perse con i successivi aggiornamenti. E' bene sapere che mediante la tecnica dell'override è possibile modificare tutto in Joomla!: moduli, componenti, aspetto grafico e file di lingua. Mentre l'override di moduli, componenti ed aspetto grafico richiede una certo livello di competenza e conoscenza del codice e della struttura di Joomla! in quanto bisogna realizzare le modifiche in specifici file che devono essere salvati in determinate posizioni all'interno delle varie cartelle che compongono il CMS; l'override dei file di lingua è molto semplice e si realizza direttamente dal pannello di amministrazione di Joomla!.

Prima di procedere con degli esempi concreti, credo sia opportuno qualche breve cenno sulla struttura dei file di lingua in Joomla!
I file di lingua di Joomla! non sono altro che dei semplici file di testo con estensione .ini che si trovano in due cartelle: language per quanto riguarda i file di lingua del lato pubblico e administrator/language per quanto riguarda i file di lingua del pannello di amministrazione.
La struttura delle due cartelle language è identica. A seconda delle lingue installate vi si trovano una o più sottocartelle che vengono identificate con la sigla internazionale delle nazioni (ad esempio en-GB, it-IT). La cartella overrides è destinata ad accogliere i file degli override una volta inseriti mediante la Gestione lingua del pannello di amministrazione.




All'interno delle cartelle con le sigle internazionali delle nazioni sono contenuti tutti i file di lingua di una specifica traduzione di Joomla! come si può vedere nell'immagine sottostante.




Tutti i file di lingua, se editati, presentano la stessa struttura e sono costituiti da una serie di stringhe che si compongono di una costante e di un valore associato. Ad esempio COM_CONTENT_ARTICLE_INFO è la costante e Dettagli è il valore. Di seguito un esempio di come è strutturato un file di lingua prendendo ad esempio una parte delle stringhe presenti nel file language/it-IT/it-IT.com_content.ini:

COM_CONTENT_ARTICLE_INFO="Dettagli"
COM_CONTENT_ARTICLE_VOTE_SUCCESS="Grazie per aver votato questo articolo."
COM_CONTENT_ARTICLE_VOTE_FAILURE="Oggi hai già votato questo articolo!"
COM_CONTENT_AUTHOR_FILTER_LABEL="Filtro autore"
COM_CONTENT_CATEGORY="Categoria: %s"
COM_CONTENT_CHECKED_OUT_BY="Bloccato da %s"
COM_CONTENT_CREATE_ARTICLE="Invia nuovo articolo"
COM_CONTENT_CREATED_DATE="Data creazione"
COM_CONTENT_CREATED_DATE_ON="Creato %s"
COM_CONTENT_EDIT_ITEM="Modifica articolo"
COM_CONTENT_ERROR_ARTICLE_NOT_FOUND="Articolo non trovato"
COM_CONTENT_ERROR_LOGIN_TO_VIEW_ARTICLE="Effettua il login per vedere l'articolo"
COM_CONTENT_ERROR_CATEGORY_NOT_FOUND="Categoria non trovata"
COM_CONTENT_ERROR_PARENT_CATEGORY_NOT_FOUND="Categoria principale non trovata"

A questo punto dovrebbe essere più chiaro il funzionamento della Gestione Lingua del pannello di amministrazione di Joomla! che vedremo in azione con due esempi concreti. Il cambiamento del formato data e la modifica del testo contenuto nella mail di benvenuto che viene inviata ad un utente al momento della registrazione.

1.  L'override del formato data

Joomla!, come sappiamo, adotta il formato internazionale della data, ma possono esserci casi in cui abbiamo bisogno di modificare tale formato ed utilizzare un formato data diverso.

Nell'immagine sottostante è possibile vedere come viene generata la data con il formato data di default di Joomla!




Procediamo a questo punto con la modifica ed andiamo nel menu Estensioni -> Gestione Lingua




Clicchiamo su Override Lingua




Clicchiamo su Nuovo e selezioniamo dall'elenco a discesa in quale file di lingua verrà apportata la modifica. In questo caso si tratta della lingua italiana lato pubblico.




Sappiamo qual è la costante che vogliamo modificare: DATE_FORMAT_LC2 per cui non ci resta che inserirla nel campo di ricerca selezionare la check box costante ed attendere gli esiti della ricerca.




Ora non ci resta che modificare il formato della data cambiando le variabili che generano il formato data e modificandoli da l,d F Y H:i in F j, Y.



Salviamo la nuova costante e facciamo il refresh della pagina dell'articolo che abbiamo visto all'inizio e troveremo il nuovo formato data visibile come illustrato nell'immagine sottostante.




Di seguito mi sembra interessante elencare il significato delle variabili che generano il formato della data in Joomla!

l (L minuscola): visualizza il giorno della settimana in formato testo. Ad esempio: martedi, mercoledì.
d: visualizza il giorno del mese in fomato numerico a 2 cifre e con gli eventuali zeri iniziali. Ad esempio: 01, 02, 03, 10.
MA: visualizza in formato testo breve (3 lettere) il nome del mese. Ad esempio: gen, feb, mar.
m: visualizza in formato numerico a 2 cifre il mese con eventuali zeri iniziali. Ad esempio: 01, 02, 03, 11.
F: visualizza in formato testo il nome del mese. Ad esempio: gennaio, febbraio, marzo.
Y: visualizza in formato numerico a 4 cifre l'anno. Ad esempio: 2011, 2012, 2013.
H: visualizza in formato numerico a 24 ore e con gli eventuali zeri iniziali le ore. Ad esempio: 09, 10, 13.
i: visualizza in formato numerico i minuti con gli eventuali zeri iniziali. Ad esempio: 01, 02, 10.

Per un quadro completo delle possibilità di gestione del formato data è sufficiente consultare il manuale di PHP.


2. L'override della mail di registrazione di Joomla!

Ora passiamo al secondo esempio che è un po più complesso. Abbiamo la necessità di modificare il testo della classica mail di benvenuto che in automatico Joomla! invia al momento della registrazione di un nuovo utente. Facciamo una registrazione fittizia al nostro sito e dopo pochi secondi, se tutto fila liscio, riceveremo una mail con il seguente testo:

Salve Paperino,
Grazie per la tua registrazione su www.nomesito.it.
Ora puoi connetterti su www.nomesito.it utilizzando Nome utente e Password con i quali ti sei registrato.

A questo punto non sappiamo di quale costante si tratti e cosa dobbiamo andare a modificare nell'override della lingua per cui andiamo sempre in Estensioni -> Gestione lingua -> Override lingua ed inseriamo un Nuovo override come abbiamo fatto in precedenza. Dobbiamo ricordarci sempre di selezionare prima di che tipo di override si tratta: relativo al pannello di amministrazione o relativo al sito e quale lingua vogliamo modificare.

Non abbiamo idea, in questo caso, di dove possa trovarsi il valore che vogliamo modificare e quale sia la costante per cui scegliamo una porzione significativa del testo che vogliamo modificare. Ad esempio: Grazie per la tua registrazione su ed andiamo ad inserirla nel box di ricerca, impostando come tipologia da ricercare valore. Dopo pochi secondi di attesa ci viene restituito l'elenco di tutte le costanti dove è presente la porzione di testo che ci interessa.



Capiamo che la costante da modificare è: COM_USERS_EMAIL_REGISTERED_BODY ma dobbiamo usare delle accortezze nel modificare il valore della costante in quanto, come vediamo, ci sono dei caratteri apparentemente incomprensibili nel testo che vogliamo modificare: %s e \n.
Infatti il testo che troviamo nel valore è il seguente:

Salve %s,\n\nGrazie per la tua registrazione su %s.\n\nOra puoi connetterti su %s utilizzando Nome utente e Password con i quali ti sei registrato.

%s
indica una variabile che nella sua prima ricorrenza serve a recuperare in automatico il nome utente e negli altri due casi serve a recuperare in automatico il nome del sito.

\n è una sequenza di caratteri non visibile sullo schermo che serve ad inserire una nuova riga e ad andare a capo.

E' evidente, quindi,  che se modifichiamo o eliminiamo questi caratteri speciali perderemmo una parte delle informazioni e della formattazione della mail di benvenuto inviata da Joomla!.

Modifichiamo a nostro piacimento il valore della costante COM_USERS_EMAIL_REGISTERED_BODY e salviamolo e da questo momento in poi le mail di benvenuto saranno diverse da quella standard e di default di Joomla!




Nel caso in cui si volessero rimuovere gli override della lingua è sufficiente andare di nuovo nella pagina Override lingua, selezionare dalla check box gli override che vogliamo eliminare dall'elenco degli override e tutto ritorna come prima.

Con un po di pazienza e di curiosità è possibile modificare totalmente i file di lingua di Joomla! una volta raggiunta una certa familiarità con il sistema dell'override della lingua ed avere una personalizzazione estrema del nostro sito.
commentaCommenta questo articolo sul forum