【发布时间】:2017-10-11 22:54:54
【问题描述】:
在 Laravel 5.4 中,.env 我有:
APP_LOCALE=es
APP_FALLBACK_LOCALE=en
APP_LOCALE_PHP=es_US
在config/app.php:
'locale' => env('APP_LOCALE', 'es'),
'fallback_locale' => env('APP_FALLBACK_LOCALE', 'en'),
'locale_php' => env('APP_LOCALE_PHP', 'en_US'),
但我想设置为西班牙语。例如,在控制器中我有:
$mydate = date('d F Y', strtotime($data->created));
$data->created 是来自数据库的字符串,来自created_at 列。这样它显示为:
14 August 2017
英语,所以 ¿我怎样才能得到西班牙语?
我用es测试APP_LOCALES,什么也没发生。我在 $mydate 之前尝试了setlocale(LC_TIME, "es");,结果是一样的。顺便说一句,我正在保存更改并执行php artisan config:cache。
【问题讨论】:
-
date()不知道语言环境。 Laravel 必须有一些内置的方法来本地化日期。 -
见stackoverflow.com/a/30291265/463205。这并不是一个真正的 Laravel 特定问题,只是
date()不尊重语言环境,而strftime()确实如此。 -
看看Carbon,它也处理语言环境,并且被 Laravel 广泛支持。
-
我没有找到使用 Laravel 的人,然后他们求助于
date或strftime。你为什么要使用 10 年前的今天已经过时的东西?无论如何,你在 Laravel 中获得了 Carbon,使用它。date将假定服务器的默认时区。您很幸运能够在您自己的时区拥有您的服务器,并且您正在为您所在国家/地区的人们这样做。了解如何使用 Carbon 并永远忘记日期、时区或夏令时。使用起来也超级简单。 -
@Mjh 当然你不能得到它,因为你不知道问题的整个上下文:重用 MB 代码,来自不同语言和框架的多个服务,一个团队,而不仅仅是我摸了摸代码等等,这样的东西没必要评论。