2012-07-30 45 views
11

我只是想根据当前区域设置显示月份的名称。小枝:根据当前区域显示月份的名称

{{ event.date|date('F') }} 

但几个月始终用英语显示...

我已经试过这下面的代码,我发现here,但结果是一样的...

class Helper_Twig extends Twig_Extension 
{ 
    public function getFilters() 
    { 
     return array(
      'datetime' => new Twig_Filter_Method($this, 'datetime') 
     ); 
    } 

    public function datetime($d, $format = "%B %e") 
    { 
     if ($d instanceof \DateTime) { 
      $d = $d->getTimestamp(); 
     } 

     return strftime($format, $d); 
    } 

    public function getName() 
    { 
     return 'Helper'; 
    } 
} 

注意:在控制器中,我使用$request->getLocale来检查当前语言环境,它对应于我在参数parameters.yml中切换的语言环境参数。

什么问题?

回答

4

您可以使用SonataIntlBundle来处理本地化的日期表示。需要安装Intl库。

+1

我推荐使用Twig的Intl扩展。请参阅http://stackoverflow.com/a/23424315/1001110 – 2014-05-06 12:50:10

+1

它没有提供仅显示翻译月份的方法。 – 2016-03-21 13:20:51

2

既然你定义datetime TwigFilter,你不必叫{{ event.date|date('F') }}

相反,你应该把这个{{ event.date|datetime('%B') }}