12

我只是想根据当前的语言环境显示月份的名称。

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

但是月份总是用英文显示...

我在下面找到了这里的代码,但结果是一样的......

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

4 回答 4

4

由于您定义datetime了 TwigFilter,因此您不必调用{{ event.date|date('F') }}

相反,你应该称之为{{ event.date|datetime('%B') }}

于 2012-07-30T19:42:18.243 回答
4

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

于 2012-07-30T21:56:02.140 回答
2

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

于 2012-07-30T20:45:30.027 回答
1

如果您已安装,则IntlExtension可以使用format_datetime自定义模式。

{{ event.date|format_datetime(pattern="MMMM") }}

文档:

于 2021-10-15T07:27:19.657 回答