Modificare e personalizzare la traduzione di Joomla e VirtueMart
Come funzionano le traduzioni di Joomla
Le procedure che descriveremo si applicano a tutti i componenti di Joomla, anche se noi focalizzeremo la nostra attenzione su VirtueMart e sul lato del sito visibile al pubblico dei navigatori (front end). Quanto diremo vale però anche per il lato amministrativo, sebbene di norma le richieste di personalizzazione riguardano il solo front end.
Ogni componente, se correttamente realizzato, dispone di uno, o più, files di traduzione. Questi files sono memorizzati nella cartella /languages/xx-YY/ ove xx sono due lettere che identificano la lingua (ISO-639 Language Codes) e YY sono anche esse due lettere che individuano però la nazione (ISO-3166 Country Codes).
I nomi dei files hanno il formato xx-YY.[tipo estensione]_[nome estensione].ini; nel caso di VirtuerMart, che è un componente, avremo, per la traduzione italiana: it-IT.com_virtuemart.ini.
All'interno dei files abbiamo poi una serie di coppie stringhe nel formato chiave="valore" che contengono le traduzioni effettive. La chiave, chiamata Costante Lingua, è uguale in tutte le lingue, ovviamente il valore, che è la traduzione, cambia di lingua in lingua. Anche per le chiavi è previsto un formato particolare, ma, dato che in questa occasione ci occupiamo solo di come modificare ciò che già esiste, vi rimando alla documentazione di Joomla, se desiderate per informazioni aggiuntive su questo aspetto.
Una volta che Joomla ha eseguito la fase di Routing and Authorisation, ed ha quindi individuato il componente richiesto, provvedere a caricare il file di traduzione necessario a tale componente per la lingua corrente ed a memorizzarne le traduzioni.
In Joomla 3+ viene sempre caricato prima il file della traduzione en-GB, in modo che, in caso di mancanza della traduzione nella lingua locale, sia possibile il fall back sull'inglese e non venga visualizzata la costante di lingua al posto del valore.
Dopo aver caricato i files di lingua richiesti dal framework e dalle estensioni in uso, come ultimo file, Joomla carica, se presente, il file degli overrides per la lingua in uso. Questo file si trova nella cartella /languages/overrides/ ed ha il nome formato secondo il seguente schema: xx-YY.override.ini. Questo file non appartiene né alle estensioni, né alla distribuzione di Joomla in sé, ma viene creato da Joomla quando si inserisce l'override di una chiave/costante lingua.
È buona norma non modificare manualmente questo file se non si è più che esperti! Il formato dei files di traduzione richiede l'osservanza di alcune specifiche regole per la codifica delle stringhe di testo, quindi avvaletevi dell'aiuto dell'interfaccia amministrativa di Joomla.
All'interno del codice, quando è necessario stampare un testo, si provvede ad usarne la chiave, lasciando al framework di Joomla il recupero della corretta traduzione. Questa operazione avviene passando la chiave al metodo statico _ della classe Jtext, nel seguente modo Jtext::_('COSTANTE_LINGUA'), il metodo restituisce una stringa con la traduzione per la lingua corrente, sgravando il programmatore del curarsi di tale aspetto.
Cambiare e personalizzare le traduzioni di VirtueMart
La prima operazione da compiere, visto quanto detto sopra, è individuare la chiave relativa alla traduzione che vogliamo modificare; per fare ciò abbiano due strade:
- cercare la costante lingua per la traduzione nel template e/o nel codice della estensione;
- cercare la costante lingua negli stessi files delle traduzioni.
ogni metodo ha, come di regola, i suoi pro e i suoi contro.
Cercare la costante lingua per la traduzione nel template
È la soluzione più complessa, ed è quella di norma preferita dai programmatori esperti. La procedura è più lunga ma è preferibile nel caso il testo della traduzione sia tanto breve da non poter essere individuato univocamente in altri modi o nel caso si voglia modificare una traduzione generica, ad esempio sostituire un generico 'annulla', usato in tutto il sito, con un più specifico 'annulla acquisto', 'annulla pagamento' e così via.
Il primo passo di questa procedura consiste nell'individuare la view ed il template/layout in uso; per fare ciò disabilitate momentaneamente il sistema SEF di joomla, in modo da individuare rapidamente i files in questione tramite le variabili presenti nell'URL. Le variabili da tenere d'occhio sono view, layout e tmpl.
Una volta individuato il file, possiamo esaminarlo alla ricerca della costante di lingua di interesse, magari aiutandoci con la path css per individuarne correttamente la posizione.
Cercare la costante lingua per la traduzione nei files di traduzione
Questa è la procedura più semplice. Prendiamo i due files di traduzione di Virtuemart, quello della lingua originale (Inglese) e quello di interesse (Italiano):
- en-GB.com_virtuemart.ini
- it-IT.com_virtuemart.ini
e teniamoli a portata di mano.
A seconda della versione di VirtueMart, potrebbero esserci anche altri files, riconoscibili per il formato del nome (xx-YY.com_virtuemart.zzz.ini); nel caso non trovassimo le stringhe cercate nei files prima citati, estenderemo la ricerca anche in questi ultimi, con l'osservanza che la modifica delle traduzioni delle stringhe presenti nel file xx-YY.com_virtuemart.sef.ini è da intendersi riservata a persone esperte.
A seconda del fatto che il nostro compito sia quello di aggiungere una nuova traduzione o di modificarne una già presente agiremo sul primo o sul secondo file o, più semplicemente, cercheremo la stringa di testo nel file per la lingua in cui la stringa è scritta.
Tenete sempre presente che le stringhe possono avere parti variabili, quindi abituatevi a pensare ed a cercare in tal senso. Ad esempio la stringa "1 x cappello è stato aggiunto al tuo carrello" contiene due variabili, quindi non cercate "cappello", ma "aggiunto al carrello"!
Una volta individuata la stringa tramite la funzione di ricerca del testo, prendete nota della chiave, ad esempio, la costante di lingua corrispondente alla traduzione del suggerimento sopra indicato è COM_VIRTUEMART_CART_PRODUCT_ADDED, questa costante ci servirà per modificare la traduzione.
In alcuni siti si suggerisce di modificare il file it-IT.com_virtuemart.ini: questo è assolutamente sbagliato. Le modifiche effettuate a questo file saranno perse al primo aggiornamento, pertanto dovremo rifare in continuazione il lavoro o non aggiornare mai!
Override della lingua in Joomla
Ora che abbiamo trovato la nostra chiave:
COM_VIRTUEMART_CART_PRODUCT_ADDED="%2$s x %1$s è stato aggiunto al tuo carrello."
Possiamo provvedere a personalizzarla. Accediamo all'amministrazione di Joomla, selezioniamo Estensioni -> Gestione Lingua dal menù e quindi scegliamo la tab Override Lingua, selezioniamo ora la lingua per cui vogliamo inserire la nuova traduzione, italiano nel nostro caso, e premiamo il pulsante aggiungi.
Inseriamo 'COM_VIRTUEMART_CART_PRODUCT_ADDED' come Costante Lingua e 'Hai aggiunto %2$s %1$s al carrello!' come valore della stessa e salviamo.
Da questo momento, al posto di "1 x cappello è stato aggiunto al tuo carrello", Virtuemart visualizzerà "Hai aggiunto 1 cappello al carrello!", che era ciò che volevamo.
Questa volta ho voluto affrontare un argomento che, nonostante la sua semplicità, crea sempre parecchia confusione sulla modalità corretta di intervento; spero che anche questa guida possa esservi di aiuto, e ricordate che, per interventi professionali, siamo a vostra disposizione.
Buona personalizzazione/traduzione a tutti!
Marco Maria Leoni
Commenti
RSS feed dei commenti di questo post.