我希望将显示日期翻译成“de”并采用以下格式:
Thu, Mar 8, 2018 - 6:30
我有“app.php”:
'locale' => 'de',
然后在视图中使用:
{{$post->date->toDayDateTimeString()}}
但结果仍然出现在“en”中:
Thu, Mar 8, 2018 6:30 AM
但是例如使用其他碳方法:{$post->date->diffForHumans()}}
结果显示在“de”中,但我不想要那种格式,我想要toDayDateTimeString()
格式。
你知道如何将这种格式的toDayDateTimeString()翻译成另一种语言吗?那么可以用另一种语言显示“Thu,Mar 8,2018 - 6:30”这样的日期吗?
答案 0 :(得分:3)
为了将日期翻译为德语,您必须在使用Carbon
之前设置相应的locale。
作为您认为的测试,这应该足够了:
<?php setlocale(LC_TIME, 'de_DE'); ?>
{{ $post->date->formatLocalized('%a, %b %d, %Y %H:%M') }}
有关其他格式选项,请参阅strftime()功能手册。
您必须确保在系统中启用了所需的区域设置。
我会假设你在Linux环境中,所以你必须编辑locale.gen
文件(Arch Linux和Ubuntu在/etc/locale.gen
中有它,其他发行版可能在其他地方有它),并取消注释相应的行:
# de_DE ISO-8859-1
# de_DE.UTF-8 UTF-8
必须更改为
de_DE ISO-8859-1
de_DE.UTF-8 UTF-8
更新locale.gen
文件后,您需要运行locale-gen
,以便从PHP中获取您刚刚取消注释的新区域设置。
$ locale-gen
现在确认新的语言环境可用,包括:
$ locale -a
现在,返回浏览器,您将成功查看已翻译的日期/时间。
<强>编辑:强>
我们后来发现,toDayDateTimeString()
类中的Carbon
方法不适用于本地化,因此必须使用formatLocalized()
。
答案 1 :(得分:1)
您可以使用setLocale('de')
方法。
这是一个例子
<?php
\Carbon\Carbon::setLocale('de')
?>
{{$post->date->toDayDateTimeString()}}
希望这有帮助
答案 2 :(得分:1)
如果您在应用中设置了区域设置,Laravel会附带Carbon
包。 Carbon将使用选择的语言自动解析日期。
Carbon::setLocale('de');
echo Carbon::getLocale(); // de
echo Carbon::now()->addYear()->diffForHumans(); // in 1 Jahr
Carbon::setLocale('en');
echo Carbon::getLocale(); // en