#php #laravel #format #carbon
#php #laravel #php-carbon
Вопрос:
Я прочитал несколько stackoverflows о set locale. Я протестировал locale -a в терминале, чтобы проверить, есть ли там моя локаль, и она была. В AppServiceProvider добавлено следующее правило кода:
public function boot()
{
Carbon::setLocale($this->app->getLocale());
}
$this->app->getLocale() возвращает «nl»
Кто-нибудь знает, почему Carbon по-прежнему показывает воскресенье вместо Zondag, например?
Ответ №1:
Перевод углеродной даты с использованием глобального локализованного формата
Протестировано в: Laravel 5.8, Laravel 6, Laravel 8
В config/app.php
'locale' => 'id', // The default is 'en', but this time I want localize them to Indonesian (ID)
Затем, чтобы сделать вывод локали, сделайте что-то вроде этого:
// WITHOUT LOCALE
CarbonCarbon::parse('2019-03-01')->format('d F Y'); //Output: "01 March 2019"
now()->subMinute(5)->diffForHumans(); // Output: "5 minutes ago"
// WITH LOCALE
CarbonCarbon::parse('2019-03-01')->translatedFormat('d F Y'); // Output: "01 Maret 2019"
now()->subMinute(5)->diffForHumans(); // Output: "5 menit yang lalu"
Для получения дополнительной информации о преобразовании дат локализации вы можете посмотреть по ссылке ниже
https://carbon.nesbot.com/docs/#api-localization
Комментарии:
1. Это следует использовать для Laravel 8
2. Обратите внимание, что если вы используете Laravel 5.5 , локаль будет автоматически установлена в соответствии с текущим последним выполнением App:setLocale. Итак
diffForHumans
,isoFormat
,translatedFormat
и локализованные свойства, такие как->dayName
или->monthName
, будут локализованы прозрачно.
Ответ №2:
Возможно, вы захотите использовать setLocale(LC_TIME, $this->app->getLocale())
где-нибудь в начале вашего приложения.
Затем, если вы хотите иметь локализованный формат даты с локальными именами, используйте formatLocalized
функцию
Carbon::now()->formatLocalized('%d %B %Y');
См. http://php.net/manual/en/function.strftime.php для параметра для форматирования
Комментарии:
1. {{$var-> start_at->formatLocalized(‘d-m-Y’)}} похоже, это не работает, это просто echo d-m-y в виде строки
2. вы добавили параметр LC_TIME перед запуском этого шаблона?
3. Это в моем appserviceprovider, так что да, команда должна выполняться при запуске приложения
4. о, подождите, formatLocalized использует другой формат. Попробуйте
%d %B %Y
5. Кажется, проблема была в Carbon::setLocale, когда я использовал только setLocale, это сработало, спасибо! перечитывал это в вашем сообщении
Ответ №3:
попробуйте это: setLocale(LC_TIME, app()-> getLocale());
Комментарии:
1. Правильный ответ был дан несколько месяцев назад. Нет необходимости повторять это.