php 碳设置Locale不工作Laravel

5n0oy7gb  于 2022-12-10  发布在  PHP
关注(0)|答案(5)|浏览(144)

我读过几个关于设置区域设置的堆栈溢出。我在终端中测试了locale -a,看看我的区域设置是否在那里,它在那里。下面的代码规则被添加到appServiceProvider中:

public function boot()
{
    Carbon::setLocale($this->app->getLocale());
}

$this-〉应用程序-〉getLocale()返回“nl”
有人知道为什么碳仍然显示星期天,而不是Zondag例如?

kjthegm6

kjthegm61#

使用全球本地化格式转换碳日期

测试环境: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
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"

有关转换本地化日期的详细信息,请参见以下链接https://carbon.nesbot.com/docs/#api-localization

7eumitmz

7eumitmz2#

您可能希望在应用程序的开头使用setLocale(LC_TIME, $this->app->getLocale())
然后,如果希望使用本地名称的本地化日期格式,请使用formatLocalized函数

Carbon::now()->formatLocalized('%d %B %Y');

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

q3qa4bjr

q3qa4bjr3#

经过研究,我发现了两个备选方案:

$date = Carbon::now();
$date->locale('de')->translatedFormat('d F Y');

以及:

$date = Carbon::now();
$carbonDateFactory = new CarbonFactory([
  'locale' => 'de_DE',
  'timezone' => 'Europe/Paris',
]);
$carbonDateFactory->make($date)->isoFormat('d MMMM YYYY');

ISO兼容格式符号为here

new9mtju

new9mtju4#

我通过在多个类上调用setLocale解决了这个问题:

$locale = 'nl_NL';
\Carbon\Carbon::setLocale($locale);
\Carbon\CarbonImmutable::setLocale($locale);
\Carbon\CarbonPeriod::setLocale($locale);
\Carbon\CarbonInterval::setLocale($locale);
\Illuminate\Support\Carbon::setLocale($locale);

还有this ServiceProvider也可以实现相同的功能。

a7qyws3x

a7qyws3x5#

可以这样做:setLocale(LC_TIME,app()-〉getLocale());

相关问题