将日期格式更改为本地语言

change date format to local language

我想将英文日期格式 ("Monday, 04 July 2020") 更改为印度尼西亚语 (Senin, 04 Juli 2020)。 我改config/App.php

'locale' => 'id',

并向 Providers/AppServiceProvider 添加一些代码。php

   public function boot()
    {
        config(['app.locale' => 'id']);
        Carbon::setLocale('id');
        date_default_timezone_set('Asia/Jakarta');
    }

我的模型

 public function dateFormat()
    {
        return \Carbon\Carbon::parse($this->attributes['tanggal_acara'])
        ->formatLocalized("%A, %d %B %Y");
    }

这是我的 blade

{{ $event->dateFormat() }}

但结果还是一样"Monday, 04 July 2020"

有人告诉我我错过了什么吗?

设置/app/config/app中的语言。php

'timezone' => 'Asia/Jakarta',
'locale' => 'id',
'faker_locale' => 'id_ID',

// App\Providers\AppServiceProvider

public function boot()
{
    config(['app.locale' => 'id']);
    Carbon::setLocale('id');
    date_default_timezone_set('Asia/Jakarta');

}

因为您正在使用 formatLocalized(),您需要像这样调用 php 的 setlocale()

public function boot()
{
    setlocale(LC_TIME, 'id_ID');
    config(['app.locale' => 'id']);
    Carbon::setLocale('id');
    date_default_timezone_set('Asia/Jakarta');
}

此外,根据 Sammitch 的评论,您需要确保在您的服务器上配置了区域设置(在 linux 上,可以使用控制台中的 locale -a 命令进行检查)作为 setlocale()否则将不起作用

已解决 使用这个库 https://github.com/jenssegers/date

这个日期库扩展了 Carbon 的多语言支持。 format、diffForHumans、parse、createFromFormat 和新时间跨度等方法现在将根据您的语言环境进行翻译。