Страницы

Поиск по вопросам

воскресенье, 1 декабря 2019 г.

Laravel 5 : русифицировать дату

#laravel #locale

Всем привет,
В laravel 5.5  нужно русифицировать дату и нагуглил способ :

echo '
$a::' . print_r($a, true) . '
'; setlocale(LC_TIME, 'ru'); date_default_timezone_set('CET'); Carbon::setLocale('ru'); echo '
$format::'.print_r($format,true).'
'; $b = $a->format($format); echo '
$b::'.print_r($b,true).'
'; С выводом: $a::Carbon\Carbon Object ( [date] => 2017-11-24 16:32:50.000000 [timezone_type] => 3 [timezone] => CET ) $format::j F, Y g:i A$b::24 November, 2017 4:32 PM То есть русифиция не сработала... также строки setlocale(LC_TIME, 'ru'); date_default_timezone_set('CET'); Carbon::setLocale('ru'); Я вставлял в app/Providers/AppServiceProvider.php: public function boot() { setlocale(LC_TIME, 'ru'); date_default_timezone_set('CET'); Carbon::setLocale('ru'); С тем же результатом. А как правильно? Спасибо!


Ответы

Ответ 1



Если вам нужно локализация даты, которая выводится через метод format, используйте PHP функцию setLocale(): setlocale(LC_TIME, 'ru_RU.UTF-8'); Так же замените метод format на formatLocalized, и так же учтите что метод formatLocalized использует функцию strftime() которая использует другие параметры, так что методы format нужно будет переписать под новые, список параметров найдете в описании функции. Приведу пример того что написал выше: Но есть ещё один метод diffForHumans который выводит дату в следующем виде: Для её локализации необходимо задать локаль в самом Carbon через метод setLocale: Carbon::setLocale('ru'); Лучше вынести этот параметр в конфиг (точнее он там уже есть) и использовать его: Carbon::setLocale(config('app.locale')); Приведу пример: Вот так получается что для разных методов разные подходы, так устроена библиотека Carbon. Устанавливать всё это нужно в момент запуска ядра, для этого нужно добавить это в метод boot сервис провайдера, к примеру AppServiceProvider: public function boot() { setlocale(LC_TIME, 'ru_RU.UTF-8'); Carbon::setLocale(config('app.locale')); }

Комментариев нет:

Отправить комментарий