TWIG日期时间区域语言


TWIG Date Time locale language

在TWIG文件中

     {{ comments.created|date('l, F j, Y') }}
     Thursday, July 25, 2013

显示默认区域设置英语。我们如何以其他语言格式显示。德语、土耳其语等

使用以下代码片段创建您自己的Twig函数locale_date。它从Symfonys Request对象读取当前区域设置,并使用PHPs IntlDateFormatter以格式化给定日期。

<?php
namespace App'Twig;
use Symfony'Component'HttpFoundation'RequestStack;
use Twig'Extension'AbstractExtension;
use Twig'TwigFilter;
use Twig'TwigFunction;
class LocaleDateExtension extends AbstractExtension {
    private $requestStack;
    public function __construct(RequestStack $requestStack) {
        $this->requestStack = $requestStack;
    }
    public function getFilters(): array {
        return [
            new TwigFilter('locale_date', [$this, 'localeDate']),
        ];
    }
    public function getFunctions(): array {
        return [
            new TwigFunction('locale_date', [$this, 'localeDate']),
        ];
    }
    public function localeDate('DateTimeInterface $date, $format) {
        $formatter = new 'IntlDateFormatter(
                $this->requestStack->getCurrentRequest()->getLocale(),
                'IntlDateFormatter::NONE,
                'IntlDateFormatter::NONE
        );
        $formatter->setPattern($format);
        return $formatter->format($date);
    }
}

在Twig:中的使用

{{ blog.createdAt|locale_date('d. MMMM yyyy') }}

Twig变量必须是DateTime对象。

只需设置所需的格式

{{ comments.created|date('d.m.Y') }}