Cómo configurar timezone en codeigniter?

publicado por: Anonymous

En mi aplicación tengo en index.php la siguiente línea

date_default_timezone_set('America/Bogota');

sin embargo, cuando voy a imprimir una fecha ya formateada con strftime("%d de %B de %Y", $date); me arroja el resultado en ingles.

También e intentado con setlocale(LC_TIME, 'es_CO.UTF-8'); y el resultado es el mismo. Cabe aclarar que mi aplicación está en un hosting compartido y no tengo acceso a php.ini. Agradezco cualquier orientación para poner mi fecha en español.

Saludos

solución

Fecha en Codeigniter

Este proceso solo se necesita si utilizas el helper de fechas de CI. Tendrás que descargar las traducciones de codeigniter y configurar para que aparezca en el idioma que desees.

Puedes encontrar las traducciones en el repositorio oficial de CI -> https://github.com/bcit-ci/codeigniter3-translations (No es necesario que descargues todas).

Lo añades a tu proyecto en la carpeta correspondiente y para configurarlo vas a application/config/config.php, donde encontrarás:

$config['language'] = 'english';

Lo modificas por spanish y listo.

Además, si quieres cargar esos ficheros de idioma automáticamente en todo el proyecto hay que añadirlo al autoload (solamente los ficheros que hay dentro de la carpeta spanish que te interesen, a modo array y sin _lang):

$autoload['language'] = array('date');

Fecha en PHP

En caso de utilizar funciones nativas de PHP (como es tu caso) tendríamos que:

Sistemas Windows

setlocale(LC_TIME, 'spanish');
echo strftime("%d de %B de %Y"); //Ejemplo

Sistemas Unix

setlocale(LC_TIME, 'es_CO.UTF-8');
echo strftime("%d de %B de %Y"); //Ejemplo

Mi servidor es compartido y no soporta setlocale

Si tu servidor no soporta setlocale creo que no lo puedes hacer de manera directa (corregidme si me equivoco), tendrás que crearte una función auxiliar que te ayude a traducir dichas fechas. Ejemplo:

function fechaES($fecha){
    $mes = array(
        'January' => 'Enero',
        'February' => 'Febrero',
        'March' => 'Marzo',
        'April' => 'Abril',
        'May' => 'Mayo',
        'June' => 'Junio',
        'July' => 'Julio',
        'August' => 'Agosto',
        'September' => 'Septiembre',
        'October' => 'Octubre',
        'November' => 'Noviembre',
        'December' => 'Diciembre'
    );

    return strtr($fecha, $mes);
}

echo fechaES(strftime('%d de %B de %Y'));

Saludos,

Respondido por: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *