Carbon formatLocalized not working in Blade

18.7k views Asked by At

In a Blade view I have this code

{{ \Carbon\Carbon::setLocale("es") }} {{ $registro->fecha_desde->format("l j F Y") }}<br /> {{ $registro->fecha_desde->formatLocalized("%A %d %B %Y") }}<br /> {{ $registro->fecha_desde->diffForHumans() }}

This does not work, it returns:

Friday 30 December 2016
Friday 30 December 2016
dentro de 1 semana 

So, format() and formatLocalized always returns the date in english format. diffForHumans returns the date localized (in spanish in this case).

Am I missing something? cant believe "Carbon's formatLocalized" is not returning localized formated dates....

5

There are 5 answers

1
Alex Angelico On

Found it. The problems is \Carbon::setlocale()

This looks ugly but works:

{{ setlocale(LC_ALL, 'es_MX', 'es', 'ES') }}
{{ $registro->fecha_desde->formatLocalized("%A %d %B %Y") }}

Output:

es viernes 30 diciembre 2016
0
Eduardo QuiƱonez On

I found two ways to output dates in other language. add this in the AppServiceProvider

    Carbon::setLocale('es');
    setlocale(LC_TIME,'es_ES');

//This output dates in spanish

In App.php put 'es' instead 'en'. now you can use FormatLocalized and all Carbon Functions will be in the language that you assign in setLocale.

Note: If you're using Oracle DB add:

 setlocale(LC_TIME, config('app.locale'));

instead:

setlocale(LC_TIME,'es_ES');
0
Luca C. On

to view formats with additional accents, you have to enable UTF8 encoding, before formatting:

\Carbon::setUTF8(true);
0
Kornel On

Nowadays it's better to use ->isoFormat('dddd DD MMMM YYYY') instead of ->formatLocalized('%A %d %B %Y') because formatLocalized() is deprecated.

So it can look like this:

{{ setlocale(LC_ALL, 'es_MX', 'es', 'ES') }}
{{ $registro->fecha_desde->isoFormat('dddd DD MMMM YYYY') }}
2
Miloud BAKTETE On

Open AppServiceProvider.php Call class of carbon use Carbon\Carbon;

public function boot()
{
  Carbon::setUTF8(true);
  Carbon::setLocale(config('app.locale'));
  setlocale(LC_TIME, config('app.locale'));
}

in the config folder open app.php

set 'locale' => 'es',

on ubuntu

public function boot()
{
   Carbon::setUTF8(true);
   Carbon::setLocale(config('app.locale'));
   setlocale(LC_TIME,'');
}