Oggi stavo lavorando ad un progetto ed il cliente è saltato fuori con una di quelle richieste strambe che fanno i clienti di solito 😛
Ho una pagina con la lista degli agenti nazionali e internazionali, con i relativi riferimenti ed email, il sito però è multilingua e devo stampare a video un titolo in H3 all’interno di un modulo che ho precedentemente customizzato, non potendo utilizzare semplicemente J::Text facendo l’override della lingua perchè non è il titolo del modulo ed il modulo stesso è richiamato all’interno di una pagina con loadposition, per la serie come complicarsi la vita 🙁
Alla fien ho optato per creare qualche riga di codice PHP utilizzando le API di Joomla, così da recuperare la lingua corrente del navigatore, fare delle condizioni e poi stampare con un echo il testo che mi serve.
Bene, premessa fatta passiamo al codice .
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
<?php $lang = JFactory::getLanguage(); $currentlang = $lang->getTag(); $it_title = '<h3>Area Commerciale</h3>'; $en_title = '<h3>Commercial Area</h3>'; if ($currentlang == ('it-IT')): echo $it_title ; else: echo $en_title; endif; ?> |
Per prima cosa dichiaro le variabili :
$lang = JFactory::getLanguage(); : mi permette di fare un’interrogazione
$currentlang = $lang->getTag(); : prelevo il tag internazionale delle lingue (it-IT, en-GB, fr-FR, ecc…)
$it_title e $en_title : mi servono per valorizzare il titolo, rispettivamente in lingua italiana ed inglese
a questo punto scrivo la mia condizione, quindi se la lingua corretta è l’italiano (it-IT) stampo a video il titolo in italiano, altrimenti (else) lo stampo in lingua inglese.
Per fortuna il sito è solo in due lingue 🙂
Diversamente sarebbe necessario scrivere più condizioni, una per ogni lingua per essere precisi, una cosa tipo :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
<?php $lang = JFactory::getLanguage(); $currentlang = $lang->getTag(); $it_title = '<h3>Area Commerciale</h3>'; $en_title = '<h3>Commercial Area</h3>'; $fr_title = '<h3>Zone Commerciale</h3>'; if ($currentlang == ('it-IT')): echo $it_title ; elseif ( $currentlang == ('fr-FR')): echo $fr_title ; else: echo $en_title; endif; ?> |
Questa parte di codice l’ho inserita all’interno di un modulo che poi ho richiamato da un pagina con : {loadposition mia_posizione_modulo_nel_template} .
Come inserire codice PHP esterno in un modulo o una pagina Joomla.
Per inserire il codice PHP esterno a Joomla che trovate sopra, ho utilizzato Sourcer , un plugin sviluppato da NoNumber, un programmatore Joomla direi geniale 🙂
Programmatore WordPress Esperto WooCommerce
Sono l’autore di questo blog con tanti trucchi e guide su WordPress e WooCommerce.
Ciao,
una semplice domanda: dove trovo una lista dei tag (es. “it-IT”, “de-DE”, etc.) delle varie nazioni ?
A volte, bisogna verificare e, se non si sa il tag esatto … è un bel problema.
Infatti, ho uno script
… if ($codice == “en-EN”) …
ma, solo dopo, ho capito che il tag esatto era “en-GB” !
Sarei grato per una risposta !
Grazie e buon pomeriggio
Ariciao !
cerchi giorni e giorni, senza trovare niente e, proprio quando, disperato, ti rivolgi a qualcuno … miracolo: trovi quello che cercavi !
Per chi ne avesse interesse, allego il link con i codici del caso:
http://www.lingoes.net/en/translator/langcode.htm
Buon lavoro a tutti !
Pino