Alex Angelico
Alex Angelico

Reputation: 4065

Carbon formatLocalized not working in Blade

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....

Upvotes: 5

Views: 20003

Answers (5)

Kornel
Kornel

Reputation: 4294

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') }}

Upvotes: 0

Eduardo Qui&#241;onez
Eduardo Qui&#241;onez

Reputation: 119

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');

Upvotes: 7

Miloud BAKTETE
Miloud BAKTETE

Reputation: 2514

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,'');
} 

Upvotes: 2

Luca C.
Luca C.

Reputation: 12594

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

\Carbon::setUTF8(true);

Upvotes: 0

Alex Angelico
Alex Angelico

Reputation: 4065

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

Upvotes: 5

Related Questions