如何将toDayDateTimeString方法转换为其他语言?

时间:2018-03-16 17:38:46

标签: php laravel php-carbon

我希望将显示日期翻译成“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”这样的日期吗?

3 个答案:

答案 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将使用选择的语言自动解析日期。

Check this

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

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