PHP: Fecha en español

No siempre tenemos acceso sin restricciones a los servidores, así que no siempre podemos configurarlos totalmente como quisiéramos. En muchas instalaciones, por no decir, en prácticamente la totalidad, la función date() de PHP devuelve la fecha en inglés. Si quieres que se muestre en español, creo que lo más fácil es convertir el valor devuelto por date() pasándolo como parámetro a una función personalizada. Vamos a verlo con un ejemplo práctico:

Partimos de una instalación Joomla que utiliza el tema themza_j15_13. Este tema muestra la fecha actual en la cabecera. Para ello, incluye la función date() en el fichero index.php. Vamos a editar la llamada a esta función para que muestre el resultado en nuestro idioma. Pasos a seguir:

  1. Antes de editar el fichero, añadimos el fichero funciones.php en la carpeta templates/themza_j15_13. Este fichero lo hemos de crear nosotros con el siguiente código:

    
    <?php
    function fecha_es_tr($temp) {
      $posibles_valores=array(
       'Sunday'=>'Domingo',
       'Monday'=>'Lunes',
       'Tuesday'=>'Martes',
       'Wednesday'=>'Miércoles',
       'Thursday'=>'Jueves',
       'Friday'=>'Viernes',
       'Saturday'=>'Sábado',
       'Sun'=>'Dom',
       'Mon'=>'Lun',
       'Tue'=>'Mar',
       'Wed'=>'Mié',
       'Thu'=>'Jue',
       'Fri'=>'Vie',
       'Sat'=>'Sab',
       'January'=>'enero',
       'February'=>'febrero',
       'March'=>'marzo',
       'April'=>'abril',
       'May'=>'mayo',
       'June'=>'junio',
       'July'=>'julio',
       'August'=>'agosto',
       'September'=>'septiembre',
       'October'=>'octubre',
       'November'=>'noviembre',
       'December'=>'diciembre',
       'Jan'=>'Ene',
       'Feb'=>'Feb',
       'Mar'=>'Mar',
       'Apr'=>'Abr',
       'May'=>'May',
       'Jun'=>'Jun',
       'Jul'=>'Jul',
       'Aug'=>'Ago',
       'Sep'=>'Sep',
       'Oct'=>'Oct',
       'Nov'=>'Nov',
       'Dec'=>'Dic'
      );
      while(list($clave, $valor) = each($posibles_valores)) $temp = str_replace($clave, $valor, $temp);
      return $temp;
    }
    ?>
    
  2. Editamos el fichero index.php que hay en la carpeta templates/themza_j15_13. La línea 25 dice:

    
    <div id="user3"><div id="pillmenu"><jdoc:include type="modules" name="user3" /></div><?php if($this->params->get('dateDisplay')) : ?><div id="date"><?php echo date('l dS \of F Y'); ?></div><?php endif; ?></div>
    

    lo cambiamos por:

    
    <div id="user3"><div id="pillmenu"><jdoc:include type="modules" name="user3" /></div><?php if($this->params->get('dateDisplay')) : ?><div id="date"><?php include_once('funciones.php');?><?php echo fecha_es_tr(date('l, j \d\e F \d\e Y')); ?></div><?php endif; ?></div>
    

    Lo único que cambia es el texto resaltado, el incluido en el div «date». En la plantilla original se hace una llamada a la función date() de php. Lo que hemos hecho es pasar este dato como parámetro a la función fecha_es_tr() que se incluye en el fichero funciones.php para que lo convierta, para que lo traduzca a español.

Como seguro que ya has intuido, editando apropiadamente el fichero funciones.php, la fecha podrá mostrarse en el idioma que quieras.

Más información sobre la función date() puedes verla en http://php.net/manual/en/function.date.php (en inglés).

Comentarios (5) »

  1. Issar Ramon | 14-enero-2012 5:44 am

    Hola amigo todo me funcionó perfecto, solo un detalle no me toma los acentos por ejemplo de sábado como puedo arreglarlo?

  2. ricardo | 2-abril-2012 11:53 am

    Hola, te agradezco tu artículo. Funciona perfectamente. Gracias.

  3. Gustavo Martin Hernandez | 16-septiembre-2012 2:19 pm

    Estupendo.Estupendo.Muchisimas Gracias. Todo funcionó a la perfeccion. Pero yo uso joomla 2.5 y el template ztmira.hay algunos templates que no esta el Date en el index.php,sino en layouts/default.php .Asi que hice lo que pusiste arriba, y en vez del index.php,que se ha cambiado en este theme, tuve que irme a /templates/zt_mira25/libs/layouts/default.php. Luego, en el default.php,encontrar el:

    , y luego modificarla como poner arriba, despues de subir el funciones.php,claro, en el mismo directorio: Por lo que quedaría asi:

    getParam(‘zt_time’)) : ?>

    MUCHAS GRACIAS POR TU AYUDA.

  4. Sandra Velazquez | 3-agosto-2014 2:09 am

    Hola, me gustaría saber cómo puedo actualizar lafecha de mi página web, desde hace meses que tiene todo correcto, excepto el año, pues me marca 2013 en vez de 2014 en la parte superior izquierda.

    Gracias mil de antemano.

    Sandra-

  5. David Cantón | 11-agosto-2014 11:40 pm

    Sandra, es posible que el servidor tenga mal el reloj?

Generador RSS para los comentarios de este artículo

Envía un comentario sobre PHP: Fecha en español