Twig:根据当前区域设置显示月份的名称

时间:2012-07-30 19:10:54

标签: symfony twig

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

{{ 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中切换的语言环境参数。

有什么问题?

3 个答案:

答案 0 :(得分:4)

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

答案 1 :(得分:3)

由于您定义了datetime TwigFilter,因此您无需致电{{ event.date|date('F') }}

相反,您应该调用此{{ event.date|datetime('%B') }}

答案 2 :(得分:2)

您可能尚未在PHP中安装PHP intl - 库。 http://php.net/manual/de/book.intl.php