Nach einigen Stunden Recherche nun mein Hilfegesuch hier im Forum:
Mit folgendem Fluid-Code wird der Monat März leider nicht zurückgegeben:
<f:format.htmlentities><f:format.date format="%B">{newsItem.datetime}</f:format.date></f:format.htmlentities>
Aus der Datei: \fileadmin\Resources\Private\Html\Extension\News\Partials\List
Typo3 Version: 6.1.5
News Version: 2.3.1
Woran kann das liegen?
Der Fluid Viewhelper nutzt für die Formatierung die date()-Funktion von PHP. Demnach müsste als Format statt "%B" "F" stehen. Aber auch das wird nicht wirklich zum Ziel führen... :-(
Es gibt aber einige Workarounds:
https://www.felixnagel.com/blog/artikel/2011/10/07/typo3-lokalisierte-datumsausgabe-mit-fluid/
Viele Grüße
Julian
Hallo,
erstmal danke für den Hinweis, das probiere ich mal aus. Das scheint mir aber eher ein Workaround zu sein.
So weit ich weiß, funktioniert f:format durchaus auch mit strftime(). Der folgende Schnipsel gibt nämlich korrekt den geschriebenen Monat und das Jahr zurück, aber nicht im März!
<f:format.date format="%B %Y">{date}</f:format.date>
Das erkär mir mal einer. Vielleicht gibt es einen Zusammenhang mit den System Locales auf dem Server?
Oder hat es wirklich was mit dem Umlaut zu tun?
Viele Grüße
Christian
Ich hänge mich mal hier dran....
Bei mir ist es das gleiche Problem:
<f:format.date format="%b">{newsItem.datetime}</f:format.date>
liefert den korrekten kurzen Monat, nur der März bleibt leer.
<f:format.date format="d">{newsItem.datetime}</f:format.date>
gibt mir den Kurzmonat in englisch aus!
Ich habe jetzt einen Workaround gefunden:
<f:format.crop maxCharacters="3" append=""><f:translate key="month.{newsItem.datetime -> f:format.date(format: 'm')}" /></f:format.crop>
Wenn man den langen Monatsnamen haben möchte, dann natürlich das CROP weglassen.
Hallo s_reinecke,
da ich nicht im Kontext von EXT:news unterwegs bin, habe ich es ganz ähnlich gelöst, aber mit eigenen XLIFF Dateien.
<f:translate key="LLL:EXT:myext/Resources/Private/Language/locallang.xlf:month.{f:format.date(format:'m', date:'{date}')}" />
Viele Grüße
Christian
Ich habe jetzt auch nochmal die Lösung getestet, die Julian als Erstes hier verlinkt hat.
-------
Typoscript:
# localize date format, used within the fluid templates
lib.ll_date = TEXT
lib.ll_date {
current = 1
strftime = %d. %B %Y
}
Fluid:
<f:cObject typoscriptObjectPath="lib.ll_date" data="{f:format.date(format:'U', date:'{newsItem.datetime}')}" />
-------
Leider erhalte ich dann als Ausgabe "M�rz 2021", obwohl meines Erachtens die Locales in Typo3 und auf dem Server richtig konfiguriert sind.
miniton schriebDas scheint mir aber eher ein Workaround zu sein.
Ähm, wenn über dem Link "Es gibt aber einige *Workarounds*:" steht, dann ist das vermutlich ein Workaround, ja ;-)
"M�rz 2021" ist ein deutliches zeichen, dass Du irgendwas mit den Zeichensätzen verwurschtelt hast. Das schaut nach doppelter UTF-8-Encodierung aus...
Eben mal getestet in einem TYPO3 v10.4.11 ohne irgendwelche Einstellungen in TypoScript oder Install-Tool, aber in Site Configuration
languages:
-
title: Deutsch
enabled: true
languageId: 0
base: /
typo3Language: default
locale: de_DE.UTF-8
iso-639-1: de
navigationTitle: ''
hreflang: ''
direction: ''
flag: de
websiteTitle: ''
Da funktioniert das hervorragend (Timestamp ist der 1.3.2021, 12 Uhr):
{f:format.date(format:'%B %Y', date:'1614596400')}
Bitte prüft mal, ob die passenden Locales am Server installiert sind:
locale -a
Hier sollte auftauchen, was Du als "locale" in der Site Configuration eingetragen hast.
Julian.Hofmann schrieb
Ähm, wenn über dem Link "Es gibt aber einige *Workarounds*:" steht, dann ist das vermutlich ein Workaround, ja ;-)
Wer lesen kann, ist klar im Vorteil. :-)
Danke!
Letztlich musste statt de_DE doch de_DE.utf8 in der SiteConfiguration stehen.
Es nur unter systemLocale in der LocalConfiguration einzutragen, war nicht ausreichend.