碳 setLocale 不工作 Laravel

Nic*_*rde 4 php laravel php-carbon

我读过几个关于 set locale 的 stackoverflows。我在终端中测试了 locale -a 以查看我的语言环境是否在那里,确实如此。在 appServiceProvider 中添加了以下代码规则:

public function boot()
{
    Carbon::setLocale($this->app->getLocale());
}
Run Code Online (Sandbox Code Playgroud)

$this->app->getLocale() 返回“nl”

有人知道为什么 Carbon 仍然显示星期日而不是 Zondag 吗?

Rob*_*lia 13

使用全球本地化格式翻译碳日期

测试: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)
Run Code Online (Sandbox Code Playgroud)

然后,要使语言环境输出执行以下操作:

// WITHOUT LOCALE
Carbon\Carbon::parse('2019-03-01')->format('d F Y'); //Output: "01 March 2019"
now()->subMinute(5)->diffForHumans(); // Output: "5 minutes ago"

// WITH LOCALE
Carbon\Carbon::parse('2019-03-01')->translatedFormat('d F Y'); // Output: "01 Maret 2019"
now()->subMinute(5)->diffForHumans(); // Output: "5 menit yang lalu"
Run Code Online (Sandbox Code Playgroud)

有关转换本地化日期的更多信息,您可以查看以下链接 https://carbon.nesbot.com/docs/#api-localization

  • 这应该用于 Laravel 8 (2认同)

Tsc*_*cka 5

您可能希望setLocale(LC_TIME, $this->app->getLocale())在应用程序开始的某个地方使用。

然后,如果您希望具有本地名称的本地化日期格式,请使用该formatLocalized函数

Carbon::now()->formatLocalized('%d %B %Y');
Run Code Online (Sandbox Code Playgroud)

有关格式化参数,请参阅http://php.net/manual/en/function.strftime.php