我试图设置相同的全局laalevel语言环境:
config('app.locale')
与Carbon合作。
看起来你可以使用以下任何一种方法来实现:
Carbon::setLocale('fr')
或
setlocale(LC_TIME, 'theLocale');
所以我尝试过使用中间件或提供商,但没有成功。
(为什么这不是laravel的默认功能?)
答案 0 :(得分:15)
我在AppServiceProvider中配置了它。
class AppServiceProvider extends ServiceProvider
{
public function boot()
{
// Localization Carbon
\Carbon\Carbon::setLocale(config('app.locale'));
}
}
答案 1 :(得分:13)
所以这是我的坏,Carbon实际上是在使用php
setlocale();
的
Carbon::setLocale('fr')
方法仅适用于
->diffForHumans()
方法。 请注意,php setlocale()引用了存储在操作系统上的语言环境 选择一个已安装的用途
locale -a
在你的控制台上
其次,你必须使用
->formatLocalized()
方法而不是
->format()
方法
最后是所有有用的方法,如
->toDateString()
->toFormattedDateString()
->toTimeString()
->toDateTimeString()
->toDayDateTimeString()
未被本地化
最后你必须使用这些解析字母
答案 2 :(得分:2)
在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