TWIG日期时间区域语言



在TWIG文件中

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

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

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

<?php
namespace AppTwig;
use SymfonyComponentHttpFoundationRequestStack;
use TwigExtensionAbstractExtension;
use TwigTwigFilter;
use TwigTwigFunction;
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') }}

最新更新