在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
。
答案 0 :(得分:2)
我建议你使用Carbon,它为DateTime操作提供了方便的原语,Laravel完全支持它(所以没有额外的包或composer require
动作)。要格式化本地化日期,您只需要几行代码:
use \Carbon\Carbon;
...
setlocale(LC_TIME, 'es_ES.UTF-8');
Carbon::setLocale('es');
$mydate = Carbon::parse($data->created)->formatLocalized('%d %B %Y');
如果您想跳过Carbon
步骤,只需使用setlocale
设置时间区域设置即可开箱即用。要获取UNIX计算机中已安装的语言环境列表,请运行命令
$ locale -a
在您的终端中或者如果您需要在您的计算机上添加语言环境,请取消注释/etc/locale.gen
中与您的语言环境对应的行(例如es_ES.UTF8
),然后在终端中运行以下命令以生成区域设置
$ sudo locale-gen es_ES.UTF-8
然后更新机器输入中的区域设置列表
$ sudo update-locale
希望它有所帮助。