使用Symfony 2在树枝中本地化日期

Roe*_*zen 16 php localization symfony twig

要在树枝上格式化日期,通常使用以下内容:

{{ meeting.date|date("m/d/Y") }}
Run Code Online (Sandbox Code Playgroud)

现在,我必须本地化这个日期(美国m/d/y,NL d/m/y).在树枝上做这件事的最佳做法是什么?我确实使用Symfony 2,解决方法是在控制器中进行翻译,但我想在树枝上做这个.

Bri*_*zel 40

那么Intl Twig扩展呢?

在树枝模板中使用:

{{ my_date | localizeddate('full', 'none', locale) }}
Run Code Online (Sandbox Code Playgroud)

  • 这应该是公认的答案.有关如何使用Intl扩展的更多信息,请参阅[我对其他问题的回答](http://stackoverflow.com/a/23424315/1001110). (2认同)

小智 7

我不想为这些东西安装一个完整的扩展,并且需要自动执行一些操作:也可以在Bundle/Twig/Extensions中编写一个helperclass(或扩展现有的帮助器),例如:

public function foo(\Datetime $datetime, $lang = 'de_DE', $pattern = 'd. MMMM Y')
{
    $formatter = new \IntlDateFormatter($lang, \IntlDateFormatter::LONG, \IntlDateFormatter::LONG);
    $formatter->setPattern($pattern);
    return $formatter->format($datetime);
}
Run Code Online (Sandbox Code Playgroud)

树枝,模板:

{{ yourDateTimeObject|foo('en_US', 'd. MMMM Y') }}
Run Code Online (Sandbox Code Playgroud)

结果是"2014年2月12日"(或de_DE中的"12. Februar 2014"等)