如何将 toDayDateTimeString 方法翻译成其他语言?

How to translate toDayDateTimeString method to other language?

我希望将演出日期翻译成 "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" 这样的日期吗?

你可以使用setLocale('de')方法。

这是一个例子

<?php 
\Carbon\Carbon::setLocale('de')      
?>


{{$post->date->toDayDateTimeString()}}

希望对您有所帮助

Laravel 附带 Carbon 包,如果您在应用程序中设置语言环境。 Carbon 将使用所选语言自动解析日期。

Check this

Carbon::setLocale('de');
echo Carbon::getLocale();                          // de
echo Carbon::now()->addYear()->diffForHumans();    // in 1 Jahr

Carbon::setLocale('en');
echo Carbon::getLocale();                          // en

为了将日期翻译成德语,您必须在使用 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

现在,返回您的浏览器,您将成功看到 date/time 翻译。

已编辑: 我们后来发现,Carbon class 中的 toDayDateTimeString() 方法不适用于本地化,因此必须使用 formatLocalized()