.::Php::.




Nella versione precedente del sito avevo inserito questo piccolo tutorial. Lo lascio in linea nel caso interessasse ancora a qualcuno.

[Mini Tutorial] - Le date in italiano con setlocale

Se facciamo stampare una data in php di solito abbiamo qualcosa del genere: Wednesday, 07 January 2004

Non ci sarebbe una soluzione semplice per tirar fuori un bel "Mercoledì, 07 gennaio 2004"?

Ci sarebbe e si chiama setlocale, ma dipende un po' da dove gira lo script: Windows, Linux, altri Unix...
E con particolari installazioni di php potrebbe anche non andare (vedere le note degli utenti sul manuale alla funzione setlocale).

Php >= 4.3.0

Da questa versione in avanti è possibile passare più parametri a setlocate per le impostazioni locali: la funzione li prova finché trova uno che funziona, altrimenti restituisce false.

Quindi si risolve con una cosa di questo tipo:

<?php
$ita = array("ita","it","Italian","it_IT","it_IT.ISO8859-1","it_IT.ISO_8859-1");
setlocale (LC_ALL,$ita);
echo
strftime ("%A, %d %B %Y");
?>


"ita","it","Italian" dovrebbero andare bene per Windows; "it_IT" per Linux; "it_IT.ISO8859-1", "it_IT.ISO_8859-1" per FreeBSD.

Php < 4.3.0

Qui il problema è che si può passare un solo parametro a setlocate.
O si conosce quello che funziona e lo si mette a mano a seconda dei casi (però se uno sviluppa in locale su Windows e poi mette in rete su Unix è una seccatura), oppure si fa una cosa del genere:

<?php
function set_ita() {
$ita = array("ita","it","Italian","it_IT","it_IT.ISO8859-1","it_IT.ISO_8859-1");
$tot = count($ita);
for (
$i=0;$i<$tot;$i++) {
if (
$loc = setlocale (LC_ALL,$ita[$i])) {
return
$loc;
}
}
}
set_ita();
echo
strftime ("%A, %d %B %Y");
?>


**************
Tutto questo per esperienza personale con alcune prove. Certamente mancherà qualcosa ma, trovato il parametro giusto (sempre che ci sia: non è detto ad esempio che su tutti i sistemi di questo mondo ci sia il supporto per l'italiano, o per l'albanese, o per quello che vi pare...), basta aggiungerlo all'array $ita.
Non mi sono nemmeno sprecato troppo nei test:
Su Windows XP con Php 4.3.2, su Linux con php 4.1.2, su FreeBSD con Php 4.2.3 e su FreeBSD con Php 4.0.6 compilato fastcgi.


Ivan Marchesini - Via Roma, 115 - 23020 - Piateda (SO) - P.I. 00858920143 - Copyright © 2003-2008