我希望将显示日期翻译成"de"并采用以下格式:
Thu, Mar 8, 2018 - 6:30
Run Code Online (Sandbox Code Playgroud)
我有"app.php":
'locale' => 'de',
Run Code Online (Sandbox Code Playgroud)
然后在视图中Im使用:
{{$post->date->toDayDateTimeString()}}
Run Code Online (Sandbox Code Playgroud)
但结果仍然出现在"en"中:
Thu, Mar 8, 2018 6:30 AM
Run Code Online (Sandbox Code Playgroud)
但是例如使用其他碳方法:{$post->date->diffForHumans()}}结果出现在"de"中,但我不想要那种格式,我想要toDayDateTimeString()格式.
你知道怎么也有这种格式toDayDateTimeString()翻译另一种语言?那么可以用另一种语言显示"Thu,Mar 8,2018 - 6:30"之类的日期吗?
为了将日期翻译为德语,您必须在使用之前设置适当的区域Carbon设置。
在您看来,作为一个测试,这应该足够了:
<?php setlocale(LC_TIME, 'de_DE'); ?>
{{ $post->date->formatLocalized('%a, %b %d, %Y %H:%M') }}
Run Code Online (Sandbox Code Playgroud)
对于其他格式选项,请参阅strftime()函数手册。
您必须确保系统中启用了所需的区域设置。
我假设您处于 Linux 环境中,因此您必须编辑该locale.gen文件(Arch Linux 和 Ubuntu 将其放在 中/etc/locale.gen,其他发行版可能在其他地方),并取消注释相应的行:
# de_DE ISO-8859-1
# de_DE.UTF-8 UTF-8
Run Code Online (Sandbox Code Playgroud)
必须改为
de_DE ISO-8859-1
de_DE.UTF-8 UTF-8
Run Code Online (Sandbox Code Playgroud)
更新locale.gen文件后,您需要运行locale-gen,以便您刚刚取消注释的那些新语言环境可以从 PHP 中使用。
$ locale-gen
现在确认新的区域设置可用:
$ locale -a
现在,返回浏览器,您将成功看到翻译的日期/时间。
编辑:
正如我们后来发现的,类toDayDateTimeString()中的方法Carbon不适用于本地化,因此formatLocalized()必须使用。