在Laravel上定位约会的最佳方式是什么?

2022-08-30 13:58:06

举个例子:

{{ $article->created_at->format('M') }}

它将返回 。我需要将其本地化为我的语言,因此输出应该是NovKas

考虑过执行以下操作:

{{ trans("language.{$article->created_at->format('M')}") }}

app/lang/tr/language.php -> 'nov' => 'kas'

这看起来像是重新发明轮子,在程序上非常糟糕。我相信有一些本地化标准。像这样:

{{ $article->created_at->format('M')->localiseTo('tr_TR') }}

实现这一目标的最佳方法是什么?


答案 1

使用库作为Laravel-Date,您只需要在Laravel应用程序配置文件中设置应用程序的语言,并使用其函数根据需要格式化日期。

在 /app/config/app 中设置语言.php

'locale' => 'es',

我发现这个库非常有用和干净。要使用它,您可以在库自述文件中编写类似示例的内容。我将结果保留为西班牙语。

echo Date::now()->format('l j F Y H:i:s'); // domingo 28 abril 2013 21:58:16

echo Date::parse('-1 day')->diffForHumans(); // 1 día atrás

这是指向存储库的链接:

https://github.com/jenssegers/laravel-date

要安装此库,您可以按照以下链接中详细说明的说明进行操作:

https://github.com/jenssegers/laravel-date#installation


答案 2

当您在Laravel中检索模型的日期时,您会得到一个Carbon对象:https://github.com/briannesbitt/Carbon

如果您参考 Carbon 文档,它会告诉您如何获取区域设置格式的日期:

遗憾的是,基类 DateTime 没有任何本地化支持。要开始本地化支持,添加了一个 formatLocalized($format) 方法。该实现使用当前实例时间戳调用 strftime。如果首先使用 setlocale() 设置当前区域设置,则返回的字符串将采用正确的区域设置格式。

setlocale(LC_TIME, 'German');                     
echo $dt->formatLocalized('%A %d %B %Y');          // Donnerstag 25 Dezember 1975
setlocale(LC_TIME, '');                           
echo $dt->formatLocalized('%A %d %B %Y');          // Thursday 25 December 1975

所以基本上,只是使用而不是formatLocalized('M')format('M')


推荐