Laravel:用我的语言重复格式化日期的最佳方式(意大利语)

时间:2015-12-08 18:05:17

标签: date laravel localization

我是Laravel和OOP的新手,试图从旧的程序代码切换。出于可读性原因,我想用我的语言(意大利语)显示我的模型的一些日期:到目前为止,这就是我所做的:

  1. 更改'locale' => 'it'档案中的config/app.php
  2. setlocale(LC_TIME, config('app.locale'));放入routes.php文件中,另请参阅我的previous question
  3. protected $dates = ['published_at', 'expires_at'];放入我的模型中以利用Carbon
  4. {{ utf8_encode($record->published_at->formatLocalized('%A %d %B %Y')) }}放入我的Blade视图中
  5. (注意:我必须使用utf8_encode(),否则带有重音字母的日期(lunedì,martedì等)不会显示:不知道为什么,也无法找到答案谷歌搜索...这有什么原因吗?是Laravel还是Carbon bug?)

    我的问题是关于最后一点:写那么久

    {{ utf8_encode($record->published_at->formatLocalized('%A %d %B %Y')) }}
    

    每次编码都是单调乏味的,而且编写

    会更快(并且可重复使用)
    {{ formatItalian($record->published_at) }}
    

    (请注意,我需要在多个模型上使用它,所以我想我必须避免使用Accessors以获得更通用的方法)

    实现这一目标的最佳方法是什么?我读到了自定义助手功能,这是一个好方法吗?正如我所说,我是Laravel的新手,从程序代码转换,并尝试使用最佳实践,对于这个愚蠢的问题感到抱歉......

    由于

1 个答案:

答案 0 :(得分:1)

虽然您应该(并且我强烈建议您这样做)打开一个错误来解决这个问题,但您可以轻松地扩展课程并使用它 作为一个例子

use Carbon\Carbon;
class MyCarbon extends Carbon
{
    public function formatItalian($format)
    {
        return utf8_encode($this->formatLocalized($format))
    }
}

请记住,这不是经过测试,只是为了给您提示。