Este foro ya no está activo, así que no puedes publicar nuevas preguntas ni responder a las preguntas existentes.

Twig, fechas en español sin extensión intl de PHP

21 de agosto de 2014

Hola Javier,

¿Conoces alguna forma para que aparezca una fecha en formato español (ejemplo Jueves, 21 de Agosto de 2014) con Twig, que no sea necesario la utilización de la extension intl de PHP?

Aplicación Symfony 2.0 y hosting compartido.

Gracias y un saludo.


Respuestas

#1

Aunque ya supongo que lo sabes, la única manera correcta de resolver este problema es utilizar la extensión intl de PHP. Pero entiendo que por temas de hosting no puedas utilizarla.

La solución más sencilla que se me ocurre es realmente cutre pero ahí va:

{{ fecha|date('l, j \d\e F \d\e Y')|replace({
  'January'  : 'Enero',
  ...
  'December' : 'Diciembre',
  'Monday'   : 'Lunes',
  ...
  'Sunday'   : 'Domingo'
}) }}

Obviamente si necesitas esto en muchas plantillas, tienes que crearte una macro de Twig e importarla en tus plantillas.

Una variante más profesional de esta solución sería crear un filtro llamado fecha en una extensión de Twig propia y pasar todo este código allí. Si lo necesitas, aquí tienes un ejemplo de una clase PHP bien hecha que utiliza esta misma técnica de reemplazar los nombres en inglés de los meses y los días. Tan sólo tendrías que transformar esa clase en una extensión de Twig que defina el filtro que necesitas.

@javiereguiluz

21 agosto 2014, 20:39
#2

Hola Javier,

La primera opción ya la tenía yo en mente, y la segunda me ha gustado.

Tengo que pensar que me interesa más.

Me sigue sorprendiendo la habilidad que tienes para buscar cosas, porque yo antes de escribir en el foro ya estuve buscando algo y nada.

Gracias.

@julioalp

22 agosto 2014, 14:08