{"id":248,"date":"2020-02-27T10:43:03","date_gmt":"2020-02-27T08:43:03","guid":{"rendered":"https:\/\/carsten.familie-schumann.info\/blog\/?page_id=248"},"modified":"2020-02-27T10:43:03","modified_gmt":"2020-02-27T08:43:03","slug":"internationales-datum-in-symfony","status":"publish","type":"page","link":"https:\/\/carsten.familie-schumann.info\/blog\/internationales-datum-in-symfony\/","title":{"rendered":"Internationales Datum in Symfony"},"content":{"rendered":"<p>Will man bei Symfony in einem Twig-Template ein internationales Datum anzeigen, gilt es ein paar Fallstricke zu \u00fcberwinden. Der normale Weg, wie make:crud die Templates erzeugt, f\u00fchrt n\u00e4mlich immer zu einem englischen Datum. Das Template sieht typischerweise dann so aus:<\/p>\n<pre class=\"brush: xml; title: ; notranslate\" title=\"\">\r\n            &lt;p&gt; Datum: {{object.createdAt | date()}}&lt;\/p&gt;\r\n<\/pre>\n<p>Auch wenn man in der Environment-Datei oder in der Config die (Default-)Locale \u00e4ndert, \u00e4ndert sich nichts am Datum.<\/p>\n<p>F\u00fcr ein deutsches Datum ben\u00f6tigen wir daher in paar Pakete, die per Composer installiert werden m\u00fcssen:<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\ncomposer require symfony\/intl \r\ncomposer require twig\/extra-bundle twig\/intl-extra\r\n<\/pre>\n<p>Hierbei liefert twig\/intl-extra ein paar zus\u00e4tzliche Funktionen und twig\/extra-bundle sorgt daf\u00fcr, dass diese auch korrekt registriert werden (sonst scheint es so, dass die Funktionen nicht vorhanden sind). Die Funktionen sind (kopiert von <a href=\"https:\/\/packagist.org\/packages\/twig\/intl-extra\">https:\/\/packagist.org\/packages\/twig\/intl-extra<\/a>):<\/p>\n<ul>\n<li>    country_name filter: returns the country name given its two-letter\/five-letter code;<\/li>\n<li>currency_name filter: returns the currency name given its three-letter code;<\/li>\n<li>currency_symbol filter: returns the currency symbol given its three-letter code;<\/li>\n<li>language_name filter: returns the language name given its two-letter\/five-letter code;<\/li>\n<li>locale_name filter: returns the language name given its two-letter\/five-letter code;<\/li>\n<li>timezone_name filter: returns the timezone name given its identifier;<\/li>\n<li>country_timezones filter: returns the timezone identifiers of the given country code;<\/li>\n<li>format_currency filter: formats a number as a currency;<\/li>\n<li>format_number filter: formats a number;<\/li>\n<li>format_datetime filter: formats a date time;<\/li>\n<li>format_date filter: formats a date;<\/li>\n<li>format_time filter: formats a time.<\/li>\n<\/ul>\n<p>Nun muss man noch die richtige Fuktion im Template aufrufen, in unserem Fall ist dies format_date.<\/p>\n<pre class=\"brush: xml; title: ; notranslate\" title=\"\">\r\n            &lt;p&gt; Datum: {{object.createdAt | format_date('de')}}&lt;\/p&gt;\r\n<\/pre>\n<p>Und eigentlich sollte jetzt das korrekte Datum angezeigt werden. Manchmal gibts aber auch eine Exception:<br \/>\n<img decoding=\"async\" src=\"https:\/\/carsten.familie-schumann.info\/blog\/wp-content\/uploads\/2020\/02\/intlexception.png\" alt=\"\" width=\"100%\"  class=\"alignnone size-full wp-image-255\" srcset=\"https:\/\/carsten.familie-schumann.info\/blog\/wp-content\/uploads\/2020\/02\/intlexception.png 1056w, https:\/\/carsten.familie-schumann.info\/blog\/wp-content\/uploads\/2020\/02\/intlexception-300x36.png 300w, https:\/\/carsten.familie-schumann.info\/blog\/wp-content\/uploads\/2020\/02\/intlexception-768x93.png 768w, https:\/\/carsten.familie-schumann.info\/blog\/wp-content\/uploads\/2020\/02\/intlexception-1024x124.png 1024w, https:\/\/carsten.familie-schumann.info\/blog\/wp-content\/uploads\/2020\/02\/intlexception-972x118.png 972w\" sizes=\"(max-width: 1056px) 100vw, 1056px\" \/><br \/>\n<code>An exception has been thrown during the rendering of a template (\"The Symfony\\Component\\Intl\\DateFormatter\\IntlDateFormatter::__construct() method's argument $locale value 'de' behavior is not implemented. Only the locale \"en\" is supported. Please install the \"intl\" extension for full localization capabilities.\").<\/code><\/p>\n<p>Diese Fehlermeldung bezieht sich nicht auf Symfony oder Twig sondern auf die PHP-Umgebung. Also noch mal schnell das entsprechende Paket nachinstallieren:<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\r\napt install php-intl\r\n<\/pre>\n<p>dann den Webserver neu starten (reload reicht nicht) und danach sollte das Datum korrekt angezeigt werden.<\/p>\n<p>Nat\u00fcrlich kann die locale (in diesem Fall &#8218;de&#8216;) auch programmatisch gesetzt werden und muss nicht in jedem TWIG-Template manuell eingegeben werden.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Will man bei Symfony in einem Twig-Template ein internationales Datum anzeigen, gilt es ein paar Fallstricke zu \u00fcberwinden. Der normale Weg, wie make:crud die Templates erzeugt, f\u00fchrt n\u00e4mlich immer zu einem englischen Datum. Das Template sieht typischerweise dann so aus: &lt;p&gt; Datum: {{object.createdAt | date()}}&lt;\/p&gt; Auch wenn man in der Environment-Datei oder in der Config&#8230;<br \/><a class=\"read-more-button\" href=\"https:\/\/carsten.familie-schumann.info\/blog\/internationales-datum-in-symfony\/\">Mehr Lesen<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-248","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/carsten.familie-schumann.info\/blog\/wp-json\/wp\/v2\/pages\/248","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/carsten.familie-schumann.info\/blog\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/carsten.familie-schumann.info\/blog\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/carsten.familie-schumann.info\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/carsten.familie-schumann.info\/blog\/wp-json\/wp\/v2\/comments?post=248"}],"version-history":[{"count":10,"href":"https:\/\/carsten.familie-schumann.info\/blog\/wp-json\/wp\/v2\/pages\/248\/revisions"}],"predecessor-version":[{"id":259,"href":"https:\/\/carsten.familie-schumann.info\/blog\/wp-json\/wp\/v2\/pages\/248\/revisions\/259"}],"wp:attachment":[{"href":"https:\/\/carsten.familie-schumann.info\/blog\/wp-json\/wp\/v2\/media?parent=248"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}