我在使用 Laravel 和 Homestead 进行本地化格式化日期时遇到了很多麻烦(我不知道 Homestead 是否有任何服务器配置导致它无法工作,但这就是我的)。我想互联网上的任何人都在为同样的问题而苦苦挣扎。我已经寻找答案几个小时了,但没有更接近解决方案。这是我的代码。
public function formated_start()
{
setlocale(LC_ALL, 'sv_SE');
return strftime('%A %H:%M', strtotime($this->start));
}
我也尝试过特定于 Laravel 的
public function formated_start()
{
App::setLocale('sv_SE')
return strftime('%A %H:%M', strtotime($this->start));
}
结果仍然相同,没有任何变化,并且%A应该是我的语言中的星期几,在这种情况下瑞典语仍然是英语。
最佳答案
Homestead提供Ubuntu系统。因此,首先使用 locale -a
检查您的系统上有哪些区域设置可用。也许瑞典语言环境名为 sv_SE.iso88591
或 sv_SE.utf8
。如果尚未安装,您可以使用以下命令安装:
sudo locale-gen sv_SE sv_SE.utf8
使用 setlocale();
安装第一个解决方案后应该可以工作。这将是生成日期的 PHP 方式。
安装所描述的区域设置后,不要忘记重新启动服务器
sudo nginx restart
Laravel 之路
对于Laravel-way,你需要自己生成本地人。首先在 /app/lang/sv/days.php
中添加一个区域设置文件:
<?php
return array(
'Monday' => 'måndag',
'Tuesday' => 'tisdag',
'Wednesday' => '..',
'Thursday' => '..',
'Friday' => '..',
'Saturday' => 'lördag',
'Sunday' => '..',
);
现在您可以将 App::setLocale()
与 Lang::get()
一起使用:
App::setLocale('sv');
echo Lang::get(sprintf('days.%s', date('l')));
这要复杂得多,但如果您在无法生成语言环境的共享托管环境上托管 Laravel,这可能是一种可能的方法。
关于php - Laravel strftime 与 Homestead 无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24637212/