Laravel 5 Carbon全球区域

时间:2015-09-13 12:49:43

标签: php laravel php-carbon

我试图设置相同的全局laalevel语言环境:

config('app.locale')

与Carbon合作。

看起来你可以使用以下任何一种方法来实现:

Carbon::setLocale('fr')

setlocale(LC_TIME, 'theLocale');

所以我尝试过使用中间件或提供商,但没有成功。

(为什么这不是laravel的默认功能?)

3 个答案:

答案 0 :(得分:15)

我在AppServiceProvider中配置了它。

class AppServiceProvider extends ServiceProvider
{
    public function boot()
    {
        // Localization Carbon

        \Carbon\Carbon::setLocale(config('app.locale'));
    }
}

答案 1 :(得分:13)

所以这是我的坏,Carbon实际上是在使用php

setlocale();

Carbon::setLocale('fr')

方法仅适用于

->diffForHumans()

方法。 请注意,php setlocale()引用了存储在操作系统上的语言环境 选择一个已安装的用途

locale -a

在你的控制台上

其次,你必须使用

->formatLocalized()

方法而不是

->format()

方法

最后是所有有用的方法,如

->toDateString()
->toFormattedDateString()
->toTimeString()
->toDateTimeString()
->toDayDateTimeString()

未被本地化

最后你必须使用这些解析字母

http://php.net/manual/en/function.strftime.php

答案 2 :(得分:2)

在AppServiceProvider中

public function register()
{

    // For example im gonna locale all dates to Indonesian (ID)
    config(['app.locale' => 'id']);
    \Carbon\Carbon::setLocale('id');
}

然后使语言环境输出执行类似的操作

// Without locale, the output gonna be like this    
Carbon\Carbon::parse('2019-03-01')->format('d F Y'); //Output: "01 March 2019"

// With locale
Carbon\Carbon::parse('2019-03-01')->translatedFormat('d F Y'); //Output: "01 Maret 2019"

有关转换本地化日期的更多信息,请参见以下链接 https://carbon.nesbot.com/docs/#api-localization