Foros del Web » Creando para Internet » Sistemas de gestión de contenidos » WordPress »

[resuelto] Problema al traducir fechas con date_i18n()

Estas en el tema de [resuelto] Problema al traducir fechas con date_i18n() en el foro de WordPress en Foros del Web. Me está pasando algo curioso. Al traducir el nombre del mes con la función date_i18n() , el mes actual, Agosto, lo coloca bien. Cuando paso ...
  #1 (permalink)  
Antiguo 31/08/2012, 09:58
Avatar de AlZuwaga
Colaborador
 
Fecha de Ingreso: febrero-2001
Ubicación: 34.517 S, 58.500 O
Mensajes: 14.550
Antigüedad: 23 años, 9 meses
Puntos: 535
[resuelto] Problema al traducir fechas con date_i18n()

Me está pasando algo curioso. Al traducir el nombre del mes con la función date_i18n(), el mes actual, Agosto, lo coloca bien. Cuando paso al mes siguiente, que sería Septiembre, lo traduce como Octubre. Y el més siguiente a este es Octubre nuevamente. Algo así:

Numero mes / inglés / Mes traducido al español

08 / August / Agosto
09 / September / Octubre
10 / October / Octubre
11 / November / Diciembre
12 / Dicember / Diciembre
... y así ad infinitum.

El código usado es el siguiente:

Código:
<?php echo date_i18n('F' ,strtotime(tribe_get_current_month_text())); ?>
Debo decir que tribe_get_current_month_text() (que es una función del plugin the events calendar) devuelve correctamente los meses en inglés.

Esto fue detectado hoy, siendo el último día del actual mes. No sé como se comportó ayer ni cómo se comportará mañana! Más tarde pruebo en mi casa con una copia local, así puedo probar su comportamiento con fechas de ayer y mañana a ver qué pasa. Mientras tanto, dejo los meses en inglés en producción hasta tanto no resuelva este problema.

Esto más que un pedido de auxilio parece más la descripción de un bug, pero bueno, es lo que hay.
__________________
...___...
  #2 (permalink)  
Antiguo 31/08/2012, 10:54
Avatar de AlZuwaga
Colaborador
 
Fecha de Ingreso: febrero-2001
Ubicación: 34.517 S, 58.500 O
Mensajes: 14.550
Antigüedad: 23 años, 9 meses
Puntos: 535
Respuesta: Problema al traducir fechas con date_i18n()

Bueno, no lo puedo probar en el sitio donde ocurre el error, pero el plugin está descartado ya que haciendo lo siguiente en cualquier instalación de wordpress me arroja lo mismo (ver resultados más abajo):

Código:
<?php
include('wp-blog-header.php');
echo date_i18n('F' ,strtotime('january')) . '<br>';
echo date_i18n('F' ,strtotime('february')) . '<br>';
echo date_i18n('F' ,strtotime('march')) . '<br>';
echo date_i18n('F' ,strtotime('april')) . '<br>';
echo date_i18n('F' ,strtotime('may')) . '<br>';
echo date_i18n('F' ,strtotime('june')) . '<br>';
echo date_i18n('F' ,strtotime('july')) . '<br>';
echo date_i18n('F' ,strtotime('august')) . '<br>';
echo date_i18n('F' ,strtotime('september')) . '<br>';
echo date_i18n('F' ,strtotime('october')) . '<br>';
echo date_i18n('F' ,strtotime('november')) . '<br>';
echo date_i18n('F' ,strtotime('december')) . '<br>';
?>
Con fecha de HOY (31/08/2012) devuelve:

Cita:
enero
marzo
marzo
mayo
mayo
julio
julio
agosto
octubre
octubre
diciembre
diciembre
Con fecha de AYER (30/08/2012) devuelve:

Cita:
enero
marzo
marzo
abril
mayo
junio
julio
agosto
septiembre
octubre
noviembre
diciembre

Con fecha de MAÑANA (01/09/2012) devuelve lo correcto:

Cita:
enero
febrero
marzo
abril
mayo
junio
julio
agosto
septiembre
octubre
noviembre
diciembre
Por lo que veo, parecería ser que el error se da si el día actual es superior en número al último día del mes siguiente, salteándoselo... pero la verdad que no sé, ya me marié.
__________________
...___...

Última edición por AlZuwaga; 31/08/2012 a las 11:01
  #3 (permalink)  
Antiguo 31/08/2012, 14:34
Avatar de AlZuwaga
Colaborador
 
Fecha de Ingreso: febrero-2001
Ubicación: 34.517 S, 58.500 O
Mensajes: 14.550
Antigüedad: 23 años, 9 meses
Puntos: 535
Respuesta: Problema al traducir fechas con date_i18n()

Listo, solucionado:
Código:
<?php echo date_i18n('F' ,strtotime(tribe_get_current_month_text() . ' 1')); ?>
Notar el 1 concatenado.

Inicié un tema en el foro de wordpress para ver si era un bug, y así reportarlo, pero terminó resultando que no. Que fue un problema de no haber sido específico al usar la función strtotime(), la cual al pasarle sólo el mes, asume que el año es el actual pero también el día. Entonces, al intentar hacer strtotime('9-31-2012'), fecha que no existe porque septiembre tiene 30 días, devuelve octubre ya que es el próximo mes que tiene esa cantidad de días.

http://wordpress.org/support/topic/i...i18n?replies=4
__________________
...___...

Etiquetas: php, plugin, traducir
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 12:15.