Laravel APP_LOCALE用西班牙语

时间:2017-10-11 14:14:34

标签: php laravel setlocale

在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

1 个答案:

答案 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
希望它有所帮助。