L'argomento è abbastanza vasto comunque ho letto che molti hanno problemi con la visualizzazione delle date per cui partirei da lì.
Per la formattazione delle date php si appoggia alla funzione di sistema strftime, il cui funzionamente è regolato dalle variabili d'ambiente LC_* (dando per scontato che si stia parlando di ambienti unix/linux)
Il segreto per formattare le date è impostare la variabile d'ambiente LC_TIME nel modo corretto.
Se avete accesso al sistema linux potete fare delle prove da riga di comando con il comando date:
$ date +%A
Wednesday
in questo caso il locale di default è quello statunitense, vediamo come ottenere il giorno della settimana in italiano:
$ LC_TIME=it_IT date +%A
mercoledì
(non preoccupatevi se vi appare un punto interrogativo al posto della lettera accentata, ci torneremo)
la data è apparsa in italiano, con relativa lettera accentata. Già questo è importante perchè significa che il sistema ha a bordo la localizzazione per l'italiano, se così non fosse occorre intervire sul sistema per installare i file mancanti.
Per le lettere accentate europee in genere i sistemi supportano 2 codifiche: utf8 o iso8851, nel esempio precedente non ho specificato una codifica particolare e quindi il sistema utilizza quella di default. Per sapere qual'è quella di default basti sapere che utf8 utilizza 2 byte per ciascuna lettera accentata mentre iso8851 usa 1 byte. Controlliamo l'output del comando precedente:
$ LC_TIME=it_IT date +%A |od -c
0000000 m e r c o l e d 354 \n
0000012
la lettera accentata "ì" corrisponde ad un singolo byte con il valore ottale 354, quindi il mio sistema sta utilizzando una codifica iso8851 per il locale italiano di default.
Verifichiamo quali sono i locale italiani supportati dal mio sistema linux:
$ locale -a |grep it_IT
it_IT
it_IT@euro
it_IT.iso88591
it_IT.iso885915@euro
it_IT.utf8
it_IT.utf8@euro
questa verifica è molto importante perchè se nella configurazione di joomla indicate in $mosConfig_locale un locale non supportato dal sistema avrete problemi.
Ad esempio sul mio mac i nomi sono leggermente differenti:
$ locale -a|grep it_IT
it_IT
it_IT.ISO8859-1
it_IT.ISO8859-15
it_IT.UTF-8
l'indicazione del charset è case insensitive mentre non lo è l'indicazione della nazionalità e della lingua. Quindi ad esempio va bene sia se scriviamo it_IT.utf-8 che it_IT.UTF-8, ma non va bene scrivere IT_IT.UTF-8
In genere sui sistemi linux vengono accettati i nomi di charset sia con che senza il trattino (utf-8, utf8, iso88591, iso8859-1, iso-8859-1), ma per andare sul sicuro conviene rispettare l'indicazione ricevuta dal comando locale -a (dove sia possibile usarlo)
Ho detto poco fa che la codifica utf-8 utilizza 2 caratteri per le accentate, verifichiamo se è vero:
$ LC_TIME=it_IT.utf8 date +%A |od -c
0000000 m e r c o l e d 303 254 \n
0000013
Qui la lettera accentata corrisponde ai due byte 303, 254
Fatta questa premessa, perchè le date vengono visualizzate correttamente dovete:
1) scegliere una codifica tra utf8 e iso8859, non importa quale scegliete purchè sia supportata dal sistema operativo (verificate con il comando locale -a)
2) fatta la scelta e verificato che il sistema la supporti, indicare tale scelta nel file di configurazione di joomla:
$mosConfig_locale = 'it_IT.utf8'
Naturalmente è necessario che la stessa codifica venga utilizzata da joomla per la generazione dei contenuti, quindi indicatela nel file language/italian.php:
DEFINE('_ISO','charset=utf8');
Poi ci sarebbe da parlare di windows, di mysql, etc etc ma per adesso mi fermo qui..