如何在Laravel中更改日期语言?

3

我想将我的视图中获取的日期语言从英语更改为法语。

{{ strftime("%d %B %Y, %H:%M", strtotime($article->created_at)) }}
3个回答

10

我们可以使用translatedFormat方法来采用另一种方法。

    Carbon::setLocale('fr');
echo $base_weight_category->created_at->translatedFormat('l jS F Y');

我们可以看到结果为2020年4月2日星期四


1
使用translatedFormat()函数时,如果Laravel的语言在config/app.php中已经定义好了(例如:'locale' => 'fr'),那么Carbon::setLocale(…)这行代码是不必要的。 - Erwan
1
我用它来解释我的法语示例。 - Berthold Feujo

5

首先设置 Carbon 的语言环境,然后再访问

Carbon::setLocale('fr');
$date_to_show_in_view = $article->created_at->diffForHumans();

对于您的第二个查询(获取2018年3月15日),请使用以下内容 -

<?php
   setlocale(LC_TIME, 'French');
   echo $base_weight_category->created_at->formatLocalized('%d %B %Y');
?>

@Sohel0415,嗨,伙计,我只是 Laravel 的初学者,真的需要你的帮助。看,我像这样使用了你更新的代码:<small> {{setlocale(LC_TIME, 'Russian'), $personal->created_at->formatLocalized('%d %B %Y') }}</small> 我用俄语代替了法语,但在视图中显示为:Russian_Russia1252。我做得对吗?希望得到你的关注 :) - Mirich
@Sohel0415,我使用了这样的代码:<?php setlocale(LC_TIME, 'Russian'); $personal->created_at->formatLocalized('%d %B %Y'); ?>,但是得到了空结果,也就是说,在视图中没有任何内容呈现。 - Mirich
@Mirich,你错过了echo部分。 - Sohel0415
@Mirich 使用 UTF-8 作为字符集,这可能是语言支持问题。 - Sohel0415
@Sohel0415,抱歉伙计,我发现数据库排序规则必须与UTF-8相同,对吧?也就是说,utf8mb4_unicode_ci。这正确吗? - Mirich
显示剩余19条评论

1
我总是在模型中使用这个函数来设置属性。
public function getReservationDateFormatAttribute() {
    return Carbon::parse($this->reservation_date)->locale(app()->getLocale())->translatedFormat('d F Y');
}

在获取属性之间,我传递属性的名称或标题,在我的示例中将以这种方式调用它。
$model_name->reservation_date_format;

更具体的答案是下面的代码。
Carbon::parse($this->reservation_date)->locale(app()->getLocale())->translatedFormat('d F Y');

在解析您传递的值之后,只需将语言环境设置为您想要的任何内容,例如,我在示例中使用了应用程序的语言环境,因为该项目是多语言的。在设置语言环境后,可以根据您的应用程序偏好选择适当的格式。希望这个答案对您有所帮助。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接