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

TwigFilterを定義datetimeしたので、呼び出す必要はありません{{ event.date|date('F') }}

代わりに、これを呼び出す必要があります{{ event.date|datetime('%B') }}

于 2012-07-30T19:42:18.243 に答える
4

SonataIntlBundleを使用して、ローカライズされた日付表現を処理できます。Intlただし、ライブラリをインストールする必要があります。

于 2012-07-30T21:56:02.140 に答える
2

PHP ライブラリを PHP にインストールしていない可能性がありintlます。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 に答える