【问题标题】:TWIG Date Time locale languageTWIG 日期时间语言
【发布时间】:2013-07-25 14:24:34
【问题描述】:

在 TWIG 文件中

     {{ comments.created|date('l, F j, Y') }}

     Thursday, July 25, 2013

显示默认语言环境英语。我们如何以其他语言格式显示。德语、土耳其语等

【问题讨论】:

  • AFAIK 你必须自己编写翻译,然后应用trans 过滤器。

标签: php datetime symfony locale twig


【解决方案1】:

使用以下代码 sn-p 创建您自己的 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);
    }

}

在树枝中的用法:

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

Twig 变量必须是 DateTime 对象。

【讨论】:

    【解决方案2】:

    只需设置所需的格式

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

    【讨论】:

    • 它不会将ThursdayJuly 更改为德语或土耳其语版本
    猜你喜欢
    • 2020-07-28
    • 2018-08-09
    • 2021-11-20
    • 1970-01-01
    • 2011-09-25
    • 2015-07-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多