Hola,
Revisando el manual de PHP sobre la función
"set_locale()" lo que se saca en claro es que el asunto pinta bastante oscuro. La implementación de dicha función, es, cuando menos, problemática, porque depende del sistema en que se ejecute PHP, por ejemplo, y también depende otras cuestiones que no sabría explicar claramente. Ahí está el manual y algunas referencias para quien quiera adentrarse en los problemas.
Lo que yo he visto en algunas aplicaciones, y lo que llevo a cabo en algún proyecto, es "localizar" la fecha y hora "a mano", pero, me temo que con esto hemos topado con que ha de haber distintas soluciones para conseguir más o menos lo mismo, o lo que sea necesario. Si estamos hablando únicamente de "localizar" fechas, y si el formato de dicha fecha no lo deciden los usuarios, sino que se predetermina en el sistema, entonces creo que el asunto no es demasiado complicado, o no debería serlo.
Un ejemplo más o menos sencillo y que acaso podría servirte sería el siguiente, escrito a vuela pluma, lo reconozco, pero, creo que más o menos se entiende por dónde voy:
Código PHP:
<?php
$days = array(
1 => 'Lunes',
2 => 'Martes',
3 => 'Miércoles',
4 => 'Jueves',
5 => 'Viernes',
6 => 'Sábado',
7 => 'Domingo',
);
$months = array(
1 => 'Enero',
2 => 'Febrero',
3 => 'Marzo',
4 => 'Abril',
5 => 'Mayo',
6 => 'Junio',
7 => 'Julio',
8 => 'Agosto',
9 => 'Septiembre',
10 => 'Octubre',
11 => 'Noviembre',
12 => 'Diciembre'
);
$currentYear = date('Y');
$currentDayNumber = date('j');
$currentDayName = $days[date('N')];
$currentMonthName = $months[date('n')];
printf("Hoy es %s, %d de %s de %s", $currentDayName,
$currentDayNumber, $currentMonthName, $currentYear);
?>
No sé si algo así te serviría, o si necesitas algo más...