我想用德語在TWIG中顯示一個日期。Symfony 2 setlocale(LC_ALL,'de_DE')
{{ event.beginnAt |date('l d.m.Y')}}
但是輸出是「星期五28.06.2013」。
我應該在哪裏使用用德語顯示日期的setlocale函數?
我想用德語在TWIG中顯示一個日期。Symfony 2 setlocale(LC_ALL,'de_DE')
{{ event.beginnAt |date('l d.m.Y')}}
但是輸出是「星期五28.06.2013」。
我應該在哪裏使用用德語顯示日期的setlocale函數?
您需要啓用twig intl extension(它需要啓用在PHP intl functions)一個,那麼你只需要使用:
{{ event.beginAt | localizeddate('full', 'none', locale) }}
編輯:
如果你只想本地化天的名字,你可以創建自己的樹枝延伸:
src/Acme/Bundle/DemoBundle/Twig/DateExtension.php
namespace Acme\Bundle\DemoBundle\Twig;
class DateExtension extends \Twig_Extension
{
public function getFilters()
{
return array(
new \Twig_SimpleFilter('intl_day', array($this, 'intlDay')),
);
}
public function intlDay($date, $locale = "de_DE")
{
$fmt = new \IntlDateFormatter($locale, \IntlDateFormatter::FULL, \IntlDateFormatter::FULL, 'Europe/Berlin', \IntlDateFormatter::GREGORIAN, 'EEEE');
return $fmt->format($date);
}
public function getName()
{
return 'date_extension';
}
}
然後在services.yml
src/Acme/Bundle/DemoBundle/Resources/config/services.yml
parameters:
acme_demo.date_extension.class: Acme\Bundle\DemoBundle\Twig\DateExtension
services:
acme_demo.twig.date_extension:
class: %acme_demo.date_extension.class%
tags:
- { name: twig.extension }
註冊它,在你的樹枝模板,你可以使用:
{{ event.beginAt|intl_day }} {{ event.beginAt|date('d.m.Y') }}
爲了達到這個目的,我使用了SonataIntlBundle它公開了一些用intl格式化的小枝函數。
實施例:
{{ date_time_object | format_datetime(null, 'fr', 'Europe/Paris',
constant('IntlDateFormatter::LONG'), constant('IntlDateFormatter::SHORT')) }}
將輸出
'1 février 2011 19:55'
我使用更簡單的方法,因爲我強迫本地PHP的執行上下文,並且,在此之後,僅通過format_datetime替換日期的功能。請記住看到支持的模式,因爲它們與strftime不同。你在SonataIntlBundle上有一個鏈接。
您可以使用setlocale()
和strftime()
,使用的東西Symfony特定的可能是開銷。
你檢查了你的parameters.yml嗎? – cptnk
[如何在Twig模板中渲染DateTime對象]可能的重複(http://stackoverflow.com/questions/8318914/how-to-render-a-datetime-object-in-a-twig-template) –