2012-07-30 10 views
11

現在のロケールに基づいて月の名前を表示しようとしています。Twig:現在のロケールに基づいて月の名前を表示

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

が、数ヶ月は常に英語で表示されます...

私はhereを見つけたの下に、私はこのコードを試してみましたが、結果は同じです...

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'; 
    } 
} 

NOTE :コントローラでは、現在のロケールを$request->getLocaleでチェックしています。これはparameters.ymlで切り替えるロケールパラメータに対応しています。

何が問題ですか?

答えて

4

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

+1

代わりに、Twig's Intl拡張機能の使用をお勧めします。 http://stackoverflow.com/a/23424315/1001110 –

+1

を参照してください。翻訳された月のみを表示する方法はありません。 –

2

あなたがdatetime TwigFilterを定義しているので、あなたが代わりに{{ event.date|date('F') }}

を呼び出す必要はありません、あなたはおそらく、あなたのPHPでPHP intl -libraryをインストールしていない{{ event.date|datetime('%B') }}

関連する問題