Percorso

LineHeight > Blog > Scripting e Programmazione, Linux e Open Source > Singolo: PHP, Ubuntu, e setlocale()


Lo so, è brutto da dire, ma stiamo lavorando per voi. Stiamo? Sì, io e Andrea Gandino siamo all'opera sul nuovo LineHeight. Avete idee, suggerimenti, volete collaborare o semplicemente sapere perché vi sto tediando con un box giallo in cima a questa pagina? Sentitevi liberi di insultare me e Andrea per qualsiasi motivo, anche commentando la notizia sopracitata.

Restate connessi, mi raccomando.

PHP, Ubuntu, e setlocale()

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.

Technorati tags:

Non trovi anche tu che questo articolo sia delizioso?

Scritto mercoledì 20 dicembre 06 alle 18:54 in , . Rispondi

Risposte [1]

  1. # dannyb78, mercoledì 06 febbraio 08 alle 21:50

    Grandioso, funziona alla perfezione. Grazie!

Rispondi

Per inviare un commento clicca su Anteprima. Apparirà un nuovo pulsante Invia per confermare.

Commenti temporaneamente chiusi per motivi di spam. Per qualsiasi informazione contattatemi pure via email.


Articoli