TYPO3 Adventskalender 2025
09.12.2025: Neues XLIFF-Sprachlabel-Parsing mit symfony/translate
Eine für den TYPO3-Kern sehr wichtige Änderung ist, dass statt einer selbstgebauten XLIFF-Sprachdateien-Integration nun die Standard-Komponenten symfony/translate zum Einsatz kommt.
Diese unterstützt zahlreiche Features, die TYPO3 bislang nicht konnte, wie z.B. XLIFF 2.0 Kompatibilität und Handling von Plural-Formen von Sprachlabels (dies ist jedoch noch nicht im Kern verdrahtet bisher). Die stabilere und ausgereifte API ist zudem besser zugänglich.
Die Integration hiervon erfolgte im Kern mit nur minimalen Auswirkungen für eigene Extensions. Das übliche Handling via "LLL:EXT:...." und einer Angabe zum Pfad der gewünschten XLIFF-Datei bleibt bestehen.
Aber es gibt nun auch eine Kurzform, so dass man statt:
LLL:EXT:core/Resources/Private/Language/locallang_tca.xlf:tabs.metadata
diese Kurzform nutzen kann:
core.form.tabs:metadata
Alle geladenen Language-Files können dann auch mit einem CLI-Kommando ausgelesen und durchsucht werden (siehe Kalendertürchen in den nächsten Tagen). Die Kurzform geht sowohl in Fluid (f:translate), in der PHP-API / TCA.
Durch die Symfony-Komponente ist nun auch ein zentrales "Cache-Warmup" möglich um bereits initial alle Sprachlabel-Dateien vorzuladen.
Intern wurden dafür ein paar TYPO3_CONF_VARS Werte migriert, die automatisch beim Update angepasst werden:
$GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['lang']['availableLanguages'] zu $GLOBALS['TYPO3_CONF_VARS']['LANG']['availableLocales']
$GLOBALS['TYPO3_CONF_VARS']['SYS']['lang']['format'] zu $GLOBALS['TYPO3_CONF_VARS']['LANG']['format']
Nur wer bislang eigene XLIFF-Parserintegrationen registriert hat, muss diese nun Symfony-kompatibel erstellen und registrieren.
Goodie: Endlich wurden nun auch mit "core.form.tabs" und "core.form.palettes" gewisse Labels mit kurzer Syntax als "API" deklariert, so dass man diese Labels ohne Duplikation in Extensions nutzen kann und diese stabil bleiben:
// TCA Palette vorher '--div--;LLL:EXT:filemetadata/Resources/Private/Language/locallang_tca.xlf:tabs.metadata' // TCA Palette nachher '--div--;core.form.tabs:metadata'