Icono del sitio Tursos

Traducir la Función date() de PHP al Español

En este tutorial veremos como traducir y formatear de forma practica la fecha que nos proporciona la función date() de PHP.

La función date() de PHP nos sirve para mostrar la fecha actual (obtenida del ordenador del cliente), pero el problema es que esta solo se muestra en inglés, esto no es un problema si queremos que el formato de la fecha sea solo en numeros (10-11-2012), sin embargo en ocasiones queremos mostrarla de forma mas elaborada por ej: Sabado, 10 de Noviembre de 2012, es alli donde viene el problema.

Para solucionarlo vamos a usar un método que considero es el mas practico y seguro que funcione, lo que haremos sera guardar los valores en variables, pasarlos por una condición y por ultimo reemplazarlos por su valor traducido.

Dividimos cada elemento de la fecha y lo guardamos en variables:

$dia=date("l"); // Saturday

$mes=date("F"); // November

$ano=date("Y"); // 2012

En los comentarios esta lo que resultaria en cada caso (si no entiendes esos parámetros te recomiendo leas la documentación), ahora lo que haremos sera de acuerdo al resultado que obtengamos mediante una condición reemplazar ese valor de la variable:

$dia = date("l");

if ($dia == "Monday") $dia = "Lunes";
if ($dia == "Tuesday") $dia = "Martes";
if ($dia == "Wednesday") $dia = "Miércoles";
if ($dia == "Thursday") $dia = "Jueves";
if ($dia == "Friday") $dia = "Viernes";
if ($dia == "Saturday") $dia = "Sabado";
if ($dia == "Sunday") $dia = "Domingo";

$mes=date("F");

if ($mes == "January") $mes = "Enero";
if ($mes == "February") $mes = "Febrero";
if ($mes == "March") $mes = "Marzo";
if ($mes == "April") $mes = "Abril";
if ($mes == "May") $mes = "Mayo";
if ($mes == "June") $mes = "Junio";
if ($mes == "July") $mes = "Julio";
if ($mes == "August") $mes = "Agosto";
if ($mes == "September") $mes = "Setiembre";
if ($mes == "October") $mes = "Octubre";
if ($mes == "November") $mes = "Noviembre";
if ($mes == "December") $mes = "Diciembre";

$ano = date("Y");

Algo mas que añadir seria una variable mas a la cual llamaremos $dia2 esta almacenara el valor del dia pero en numeros y no sera traducida ya que no es necesario:

$dia2 = date("d");

Ya teniendo esto podemos armar nuestra fecha como nos plazca:

echo "$dia, $dia2 de $mes de $ano";

Lo que resultaria en:

Sábado, 10 de Noviembre de 2012

El mayor inconveniente que le veo a esta solución es el tamaño del código, por eso te recomendaria cuando lo uses guardarlo en un archivo aparte y llamarlo mediante un include o un require.


Porque no usar setlocale + strftime

El problema de usar este metodo es que setlocale utiliza un recurso del sistema operativo, el cual puede variar de acuerdo al OS que este usando el cliente, por consiguiente la funcion podria no funcionar siempre.


Espero te haya servido este pequeño tutorial, puedes bajarte el código fuente desde este enlace y no olvides que si tienes alguna pregunta o duda hazmela saber en los comentarios que con gusto te asistiré en lo que pueda.