Laravel en español, configurando Carbon multi idioma

Configurando nuestra aplicación Laravel en español.

Una de las trabas que nos encontramos al desarrollar aplicaciones Laravel en español es el manejo de las fechas retornadas por nuestros modelos, ya que implementan Carbon pero solamente en inglés, sin posibilidad de personalizarlo.

Otra gran utilidad de Carbon es su función diffForHumans que nos permite obtener de una forma clara cuanto tiempo ha pasado o falta para una fecha en particular, el problema es que tampoco se puede personalizar de forma parametrizada para que nos responda en español.

Les aseguro que los usuarios no saben inglés, ni siquiera el nombre de los meses :(.

Para solucionar lo anterior y dejar nuestra aplicación totalmente en español o en el idioma que necesitemos, haremos dos intervenciones para que Carbon y nuestros modelos nos respondan como queremos:

Función diffForHumans() en español

Lo primero que haremos será que Carbon nos responda en español (u otro idioma xD) cuando usemos su función diffForHumans().

Podemos usar la función diffForHumans() de Carbon en español o en cualquier otro idioma soportado:

af
en
hr
no
sv
ar
eo
hu
pl
th
az
es
id
pt
tr
bg
et
it
pt_BR
uk
bn
eu
ja
ro
uz
ca
fa
ko
ru
vi
cs
fi
lt
sk
zh-TW
da
fo
lv
sl
zh
de
fr
ms
sq
el
he
nl
sr

Simplemente agregando esta línea en el método boot de AppServiceProvider (app/Providers/AppServiceProvider.php):

Registrar Carbon en AppServiceProvider para que nos deje Laravel en español

Con esto cambiará el idioma al que tengamos definido en la configuración de nuestra app dentro del archivo config/app.php.

Configurar idioma de la aplicación para que tengamos Laravel en español

Ya podemos hacer la prueba:

Probamos que diffForHumans() nos responda en español

Nos daría lo siguiente:

Instancias Carbon en español

Como segunda intervención haremos que los modelos nos sigan dando instancias de Carbon pero esta vez en el idioma de nuestra app, para esto instalaremos el package Jenssegers/Date:

Instalar el paquete Jenssegers/Date

Lo registramos en el archivo config/app.php agregándolo en la llave providers:

Registramos el ServiceProvider de Jenssegers/Date

Finalmente registramos un alias para acceder de forma simple:

Registramos el alias de Jenssegers/Date

Creamos un Trait para usarlo en nuestros modelos evitando repetir código, el archivo lo podríamos llamar DatesTranslator y ubicar lo en App/Traits/DatesTranslator.php.

Creamos un Traits para usarlo en nuestros modelos

Para finalizar usaremos el Trait en nuestros modelos de la siguiente forma

Aplicamos el Traits en el modelo

Si tenemos otros campos tipo fecha que necesitemos traducir simplemente debemos crear un Accesor para cada uno de nuestros modelos:

Registramos accesors adicionales

Una vez que terminamos podemos ver que las fechas se muestran en el idioma que especificamos en nuestra aplicación:

Probamos que nuestro modelo nos responda en español

Ejemplos:

 

Desde ahora podremos usar tanto la función diffForHumans() como las instancias de Carbon de nuestros modelos en español o en el idioma que nuestro proyecto requiera.

Espero les sea útil y pronto iré publicando más tips. Recuerda que si tienes alguna duda o recomendación puedes dejarlo en nuestros comentarios, o unirte a nuestro Slack de Laraveles en español, puedes conseguir tu invitación a través del siguiente enlace.

Saludos!

Comparte este artículo

Entra en la discusión y deja tu comentario

  • Nicolas Cumez

    Excelente post