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

时间:2014-07-08 16:38:30

标签: php laravel localization laravel-4 strftime

我在使用Laravel和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应该是我的语言中的星期几,在这种情况下瑞典语仍然是英语。

3 个答案:

答案 0 :(得分:6)

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

sudo locale-gen sv_SE sv_SE.utf8

使用setlocale();安装第一个解决方案后应该可行。这将是生成日期的 PHP-way

在您安装了所描述的区域设置后,不要忘记重启服务器

sudo nginx restart

Laravel-way

对于 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,您无法生成区域设置,这可能是一种可能的方式。

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

如果您的问题一般,而不是专门使用 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