繁体   English   中英

Laravel与Homestead的strftime无法正常工作

[英]Laravel strftime with Homestead ain't working

我在使用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检查系统上可用的locale -a 瑞典语的语言环境可能名为sv_SE.iso88591sv_SE.utf8 如果尚未安装,则可以使用以下命令进行安装:

sudo locale-gen sv_SE sv_SE.utf8

setlocale();安装第一个解决方案后setlocale(); 应该管用。 这将是生成日期的PHP方法

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

sudo nginx restart

Laravel方式

对于Laravel方式,您需要自己生成本地人。 首先在/app/lang/sv/days.php添加一个语言环境文件, /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托管在无法生成语言环境的共享托管环境中,则可能是可行的方法。

至少在Windows中,这似乎对我有用。

setlocale(LC_ALL, 'sv_SE', 'Swedish', 'swedish');

如果您的问题一般,而不是专门使用strftime,您可以尝试使用Laravel4-lang ,它是通过composer安装的。 添加到composer.json文件:

"require": { "laravel/framework": "4.2.*", "caouecs/laravel4-lang": "dev-master" },

然后更新软件包:

composer update caouecs/laravel4-lang

更新

这也真的很好: https : //github.com/jenssegers/laravel-date

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM