Piccolo intervento infrasettimanale per avvisarvi che con Ubuntu (e potenzialmente, tutte le distribuzioni Linux basate su Debian) PHP ha qualche problema a leggere la localizzazione impostata nella funzione built-in setlocale().
<?
setlocale(LC_TIME, "it_IT")
echo ucwords(strftime("%A %d %B %Y, %H:%M:%S"))
?>
Restituisce la stringa:
Wednesday 20 December 2006, 18:31:25
Dando un'occhiata ai commenti presenti nella documentazione ufficiale di setlocale(), ho scoperto che sulla nostra linuxbox è possibile ottenere una lista delle localizzazioni attive col comando locale -a
.
simone@edgymachine:~$ locale -a
[... lista di pacchetti inglesi...]
it_IT.utf8
Così (grazie a chissà quale geniale intuizione :-P), ho provato a modificare il mio piccolo file .php in:
<?
setlocale(LC_TIME, "it_IT.utf8")
echo ucwords(strftime("%A %d %B %Y, %H:%M:%S"))
?>
E magicamente tutto è funzionato a meraviglia:
Mercoledì 20 Dicembre 2006, 18:40:55
Vi consiglio, comunque, di impostare la funzione in questo modo:
setlocale(LC_TIME, "it_IT", "it", "it_IT.utf8");
In modo tale che PHP controlli prima l'esistenza delle altre localizzazioni, per poi eventualmente passare a quella con estensione uguale alla codifica di caratteri utilizzata.