Laravel 5 Carbon global Locale

Я пытаюсь установить одну и ту же глобальную локаль laravel, которая:

config('app.locale')

для работы с Carbon.

Кажется, вы можете сделать это, используя либо:

Carbon::setLocale('fr')

или

setlocale(LC_TIME, 'theLocale');

Итак, я попытался использовать промежуточное программное обеспечение или поставщиков, но не был успешным.

(почему это не стандартная функция laravel?)

Ответ 1

Итак, это мое плохое, Carbon на самом деле использует php

setlocale();

Carbon::setLocale('fr')

метод предназначен только для

->diffForHumans()

метод. Обратите внимание, что ссылка php setlocale() на локаль, хранящуюся на вашей ОС для выбора одного из установленных одно использование

locale -a

на консоли

во-вторых, вы должны использовать

->formatLocalized()

вместо

->format()

Метод

и, наконец, все полезные методы, такие как

->toDateString()
->toFormattedDateString()
->toTimeString()
->toDateTimeString()
->toDayDateTimeString()

не локализованы

и, наконец, вы должны использовать эти разборные буквы

http://php.net/manual/en/function.strftime.php

Ответ 2

Я настроил его в AppServiceProvider.

class AppServiceProvider extends ServiceProvider
{
    public function boot()
    {
        // Localization Carbon

        \Carbon\Carbon::setLocale(config('app.locale'));
    }
}

Ответ 3

в AppServiceProvider

public function register()
{

    // For example im gonna locale all dates to Indonesian (ID)
    config(['app.locale' => 'id']);
    \Carbon\Carbon::setLocale('id');
}

затем, чтобы вывод локали делал что-то вроде этого

// Without locale, the output gonna be like this    
Carbon\Carbon::parse('2019-03-01')->format('d F Y'); //Output: "01 March 2019"

// With locale
Carbon\Carbon::parse('2019-03-01')->translatedFormat('d F Y'); //Output: "01 Maret 2019"

Для получения дополнительной информации о преобразовании дат локализации вы можете увидеть по ссылке нижеhttps://carbon.nesbot.com/docs/#api-localization