与宅基地的Laravel strftime无法正常工作

mur*_*rum 2 php localization strftime laravel laravel-4

我一直在使用Laravel和Homestead在我的本地化形成日期方面遇到很多麻烦(我不知道宅基地是否有任何类型的服务器配置使它不起作用,但这就是我的意思).我想互联网上的任何人都在努力解决同样的问题.我一直在寻找几个小时的答案而没有接近解决方案..这是我的代码.

public function formated_start()
{
    setlocale(LC_ALL, 'sv_SE');
    return strftime('%A %H:%M', strtotime($this->start));
}
Run Code Online (Sandbox Code Playgroud)

我也尝试过特定的laravel

public function formated_start()
{
    App::setLocale('sv_SE')
    return strftime('%A %H:%M', strtotime($this->start));
}
Run Code Online (Sandbox Code Playgroud)

仍然有相同的结果没有改变,%A应该是我的语言中的星期几,在这种情况下瑞典语仍然是英语.

max*_*lms 6

Homestead提供了一个Ubuntu系统.因此,首先要检查系统上可用的区域设置locale -a.也许瑞典语区域名称sv_SE.iso88591sv_SE.utf8.如果未安装,您可以使用以下命令安装:

sudo locale-gen sv_SE sv_SE.utf8
Run Code Online (Sandbox Code Playgroud)

安装完第一个解决方案后setlocale();应该工作.这将是PHP生成日期的方式.

在安装了所描述的语言环境后,请不要忘记重新启动服务器

sudo nginx restart
Run Code Online (Sandbox Code Playgroud)

Laravel方式

对于Laravel方式,您需要自己生成本地人.首先添加一个语言环境文件/app/lang/sv/days.php:

<?php

return array(
    'Monday' => 'måndag',
    'Tuesday' => 'tisdag',
    'Wednesday' => '..',
    'Thursday' => '..',
    'Friday' => '..',
    'Saturday' => 'lördag',
    'Sunday' => '..',
);
Run Code Online (Sandbox Code Playgroud)

现在,您可以用App::setLocale()Lang::get():

App::setLocale('sv');
echo Lang::get(sprintf('days.%s', date('l')));
Run Code Online (Sandbox Code Playgroud)

这种方式更复杂,但如果您在无法生成区域设置的共享托管环境中托管Laravel,这可能是一种可能的方式.