Breaking: #107789 - Core TCA and user settings showitem strings use short form references
See forge#107789
Description
TYPO3 Core TCA and user settings (
$GLOBALS)
configurations have been updated to use short form
translation reference formats (e.g., core.) instead of
the full LLL: path format in showitem strings.
This change affects all core TCA showitem definitions that previously
used full LLL: paths for labels. The most prominent updates are
tab labels using the -- syntax, though this pattern may be applied
to other TCA elements in the future.
Examples of changed references in tab labels:
// Before (TYPO3 v13)
'--div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:general'
'--div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:access'
'--div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:language'
// After (TYPO3 v14)
'--div--;core.form.tabs:general'
'--div--;core.form.tabs:access'
'--div--;core.form.tabs:language'
Impact
Custom extensions that programmatically manipulate TCA or
$GLOBALS showitem strings
from core tables and expect the full LLL: path format will break.
This particularly affects code that:
- Uses string search/replace operations on
showitemstrings to find or modify specific labels (tabs, palettes, or other elements) - Parses
showitemstrings using regular expressions expecting theLLL:patternEXT: - Extracts translation keys from TCA configurations for analysis or documentation purposes
- Builds custom TCA configurations by copying and modifying core
showitemstrings
Currently, the following label categories have been migrated to short-form:
Tab labels (--div--):
LLL:→EXT: core/ Resources/ Private/ Language/ Form/ locallang_ tabs. xlf:* core.form. tabs:* LLL:→EXT: filemetadata/ Resources/ Private/ Language/ locallang_ tca. xlf: tabs.* core.form. tabs:* LLL:→EXT: seo/ Resources/ Private/ Language/ locallang_ tca. xlf: pages. tabs.* core.form. tabs:*
Tab labels (--div--) in TYPO3_USER_SETTINGS:
LLL:→EXT: setup/ Resources/ Private/ Language/ locallang. xlf: personal_ data core.form. tabs: personaldata LLL:→EXT: setup/ Resources/ Private/ Language/ locallang. xlf: account Security core.form. tabs: account_ security LLL:→EXT: setup/ Resources/ Private/ Language/ locallang. xlf: opening core.form. tabs: backend_ appearance LLL:→EXT: setup/ Resources/ Private/ Language/ locallang. xlf: personalization core.form. tabs: personalization LLL:→EXT: setup/ Resources/ Private/ Language/ locallang. xlf: reset Tab core.form. tabs: reset_ configuration
Palette labels (palette definitions):
LLL:→EXT: core/ Resources/ Private/ Language/ locallang_ tca. xlf: be_ users. palettes.* core.form. palettes:* LLL:→EXT: core/ Resources/ Private/ Language/ locallang_ tca. xlf: be_ groups. palettes.* core.form. palettes:* LLL:→EXT: frontend/ Resources/ Private/ Language/ locallang_ tca. xlf: pages. palettes.* core.form. palettes:* LLL:→EXT: frontend/ Resources/ Private/ Language/ locallang_ ttc. xlf: palette.* core.form. palettes:* LLL:→EXT: filemetadata/ Resources/ Private/ Language/ locallang_ tca. xlf: palette.* core.form. palettes:* LLL:→EXT: seo/ Resources/ Private/ Language/ locallang_ tca. xlf: pages. palettes.* core.form. palettes:*
Replaced hardcoded palette label:
- Removed the hardcoded palette name in string
--in tablepalette--;Capabilities;capabilities sys_in favor of a label attached directly to the palette using the short syntaxfile_ storage core..form. palettes:*
Field label overrides removed in showitem definitions:
Field labels can be overridden in showitem definitions for types or palettes, but should rather be kept in the field definition itself. The following field label overrides have been removed from showitem strings in favor of using the field's own label definition:
bodytext;LLL:→EXT: frontend/ Resources/ Private/ Language/ locallang_ ttc. xlf: bodytext_ formlabel bodytextbodytext;LLL:→EXT: frontend/ Resources/ Private/ Language/ locallang_ ttc. xlf: field. table. bodytext bodytextCType;LLL:→EXT: frontend/ Resources/ Private/ Language/ locallang_ ttc. xlf: CType_ formlabel CTypecol→Pos;LLL: EXT: frontend/ Resources/ Private/ Language/ locallang_ ttc. xlf: col Pos_ formlabel colPos header;LLL:→EXT: frontend/ Resources/ Private/ Language/ locallang_ ttc. xlf: header_ formlabel headerheader_→layout;LLL: EXT: frontend/ Resources/ Private/ Language/ locallang_ ttc. xlf: header_ layout_ formlabel header_layout header_→link;LLL: EXT: frontend/ Resources/ Private/ Language/ locallang_ ttc. xlf: header_ link_ formlabel header_link header_→position;LLL: EXT: frontend/ Resources/ Private/ Language/ locallang_ ttc. xlf: header_ position_ formlabel header_position subheader;LLL:→EXT: frontend/ Resources/ Private/ Language/ locallang_ ttc. xlf: subheader_ formlabel subheaderdate;LLL:→EXT: frontend/ Resources/ Private/ Language/ locallang_ ttc. xlf: date_ formlabel datefile_→collections;LLL: EXT: frontend/ Resources/ Private/ Language/ locallang_ ttc. xlf: file_ collections. ALT. uploads_ formlabel file_collections filelink_→size;LLL: EXT: frontend/ Resources/ Private/ Language/ locallang_ ttc. xlf: filelink_ size_ formlabel filelink_size image_→zoom;LLL: EXT: frontend/ Resources/ Private/ Language/ locallang_ ttc. xlf: image_ zoom_ formlabel image_zoom imageborder;LLL:→EXT: frontend/ Resources/ Private/ Language/ locallang_ ttc. xlf: palette. media Adjustments. imageborder imageborderimage*;LLL:→EXT: frontend/ Resources/ Private/ Language/ locallang_ ttc. xlf: imageborder_ formlabel frontend.db. tt_ content: imageborder imagecols;LLL:→EXT: frontend/ Resources/ Private/ Language/ locallang_ ttc. xlf: imagecols_ formlabel imagecolsimageorient;LLL:→EXT: frontend/ Resources/ Private/ Language/ locallang_ ttc. xlf: imageorient_ formlabel imageorientimageheight;LLL:→EXT: frontend/ Resources/ Private/ Language/ locallang_ ttc. xlf: palette. media Adjustments. imageheight imageheightimagewidth;LLL:→EXT: frontend/ Resources/ Private/ Language/ locallang_ ttc. xlf: palette. media Adjustments. imagewidth imagewidthframe_→class;LLL: EXT: frontend/ Resources/ Private/ Language/ locallang_ ttc. xlf: frame_ class_ formlabel frame_class starttime;LLL:→EXT: frontend/ Resources/ Private/ Language/ locallang_ tca. xlf: pages. starttime_ formlabel starttimeendtime;LLL:→EXT: frontend/ Resources/ Private/ Language/ locallang_ tca. xlf: pages. endtime_ formlabel endtimefe_→group;LLL: EXT: frontend/ Resources/ Private/ Language/ locallang_ tca. xlf: pages. fe_ group_ formlabel fe_group media;LLL:→EXT: frontend/ Resources/ Private/ Language/ locallang_ ttc. xlf: media. ALT. uploads_ formlabel mediasection→Index;LLL: EXT: frontend/ Resources/ Private/ Language/ locallang_ ttc. xlf: section Index_ formlabel sectionIndex link→To Top;LLL: EXT: frontend/ Resources/ Private/ Language/ locallang_ ttc. xlf: link To Top_ formlabel linkTo Top layout;LLL:→EXT: frontend/ Resources/ Private/ Language/ locallang_ ttc. xlf: layout_ formlabel layoutspace_→before_ class;LLL: EXT: frontend/ Resources/ Private/ Language/ locallang_ ttc. xlf: space_ before_ class_ formlabel space_before_ class space_→after_ class;LLL: EXT: frontend/ Resources/ Private/ Language/ locallang_ ttc. xlf: space_ after_ class_ formlabel space_after_ class doktype;LLL:→EXT: frontend/ Resources/ Private/ Language/ locallang_ tca. xlf: pages. doktype_ formlabel doktypeshortcut_→mode;LLL: EXT: frontend/ Resources/ Private/ Language/ locallang_ tca. xlf: pages. shortcut_ mode_ formlabel shortcut_mode shortcut;LLL:→EXT: frontend/ Resources/ Private/ Language/ locallang_ tca. xlf: pages. shortcut_ formlabel shortcutmount_→pid_ ol;LLL: EXT: frontend/ Resources/ Private/ Language/ locallang_ tca. xlf: pages. mount_ pid_ ol_ formlabel mount_pid_ ol mount_→pid;LLL: EXT: frontend/ Resources/ Private/ Language/ locallang_ tca. xlf: pages. mount_ pid_ formlabel mount_pid url;LLL:→EXT: frontend/ Resources/ Private/ Language/ locallang_ tca. xlf: pages. url_ formlabel urltitle;LLL:→EXT: frontend/ Resources/ Private/ Language/ locallang_ tca. xlf: pages. title_ formlabel titlenav_→title;LLL: EXT: frontend/ Resources/ Private/ Language/ locallang_ tca. xlf: pages. nav_ title_ formlabel nav_title subtitle;LLL:→EXT: frontend/ Resources/ Private/ Language/ locallang_ tca. xlf: pages. subtitle_ formlabel subtitlenav_→hide;LLL: EXT: core/ Resources/ Private/ Language/ locallang_ tca. xlf: pages. nav_ hide_ toggle_ formlabel nav_hide extend→To Subpages;LLL: EXT: frontend/ Resources/ Private/ Language/ locallang_ tca. xlf: pages. extend To Subpages_ formlabel extendTo Subpages abstract;LLL:→EXT: frontend/ Resources/ Private/ Language/ locallang_ tca. xlf: pages. abstract_ formlabel abstractkeywords;LLL:→EXT: frontend/ Resources/ Private/ Language/ locallang_ tca. xlf: pages. keywords_ formlabel keywordsauthor;LLL:→EXT: frontend/ Resources/ Private/ Language/ locallang_ tca. xlf: pages. author_ formlabel authorauthor_→email;LLL: EXT: frontend/ Resources/ Private/ Language/ locallang_ tca. xlf: pages. author_ email_ formlabel author_email last→Updated;LLL: EXT: frontend/ Resources/ Private/ Language/ locallang_ tca. xlf: pages. last Updated_ formlabel lastUpdated new→Until;LLL: EXT: frontend/ Resources/ Private/ Language/ locallang_ tca. xlf: pages. new Until_ formlabel newUntil backend_→layout;LLL: EXT: frontend/ Resources/ Private/ Language/ locallang_ tca. xlf: pages. backend_ layout_ formlabel backend_layout backend_→layout_ next_ level;LLL: EXT: frontend/ Resources/ Private/ Language/ locallang_ tca. xlf: pages. backend_ layout_ next_ level_ formlabel backend_layout_ next_ level module;LLL:→EXT: frontend/ Resources/ Private/ Language/ locallang_ tca. xlf: pages. module_ formlabel modulecontent_→from_ pid;LLL: EXT: frontend/ Resources/ Private/ Language/ locallang_ tca. xlf: pages. content_ from_ pid_ formlabel content_from_ pid cache_→timeout;LLL: EXT: frontend/ Resources/ Private/ Language/ locallang_ tca. xlf: pages. cache_ timeout_ formlabel cache_timeout l18n_→cfg;LLL: EXT: frontend/ Resources/ Private/ Language/ locallang_ tca. xlf: pages. l18n_ cfg_ formlabel l18n_cfg is_→siteroot;LLL: EXT: frontend/ Resources/ Private/ Language/ locallang_ tca. xlf: pages. is_ siteroot_ formlabel is_siteroot no_→search;LLL: EXT: frontend/ Resources/ Private/ Language/ locallang_ tca. xlf: pages. no_ search_ formlabel no_search php_→tree_ stop;LLL: EXT: frontend/ Resources/ Private/ Language/ locallang_ tca. xlf: pages. php_ tree_ stop_ formlabel php_tree_ stop editlock;LLL:→EXT: frontend/ Resources/ Private/ Language/ locallang_ tca. xlf: pages. editlock_ formlabel editlockmedia;LLL:→EXT: frontend/ Resources/ Private/ Language/ locallang_ tca. xlf: pages. media_ formlabel mediatsconfig_→includes;LLL: EXT: frontend/ Resources/ Private/ Language/ locallang_ tca. xlf: pages. tsconfig_ includes tsconfig_includes TSconfig;LLL:→EXT: frontend/ Resources/ Private/ Language/ locallang_ tca. xlf: pages. TSconfig_ formlabel TSconfig
Field label overrides changed in palette definitions:
hidden;LLL:→EXT: core/ Resources/ Private/ Language/ locallang_ tca. xlf: pages. hidden_ toggle_ formlabel hidden;core.db. pages: hidden hidden;LLL:→EXT: frontend/ Resources/ Private/ Language/ locallang_ ttc. xlf: field. default. hidden hidden;frontend.db. tt_ content: hidden hidden;LLL:→EXT: frontend/ Resources/ Private/ Language/ locallang_ tca. xlf: pages. hidden_ formlabel hidden;core.db. pages: hidden starttime;LLL:→EXT: frontend/ Resources/ Private/ Language/ locallang_ ttc. xlf: starttime_ formlabel starttime;core.db. general: starttime endtime;LLL:→EXT: frontend/ Resources/ Private/ Language/ locallang_ ttc. xlf: endtime_ formlabel endtime;core.db. general: endtime fe_→group;LLL: EXT: frontend/ Resources/ Private/ Language/ locallang_ ttc. xlf: fe_ group_ formlabel fe_group;core. db. general: fe_ group target;LLL:→EXT: frontend/ Resources/ Private/ Language/ locallang_ tca. xlf: pages. target_ formlabel target;core.db. pages: link. target
Affected installations
Installations with custom extensions that:
- Programmatically read and manipulate TCA
showitemstrings from$GLOBALSor['TCA'] $GLOBALS.['TYPO3_ USER_ SETTINGS'] - Override core TCA or TYPO3_USER_SETTINGS by copying and modifying
existing
showitemconfigurations - Perform string operations on
showitemdefinitions expecting specificLLL:path formatsEXT: - Generate documentation or analysis tools based on TCA label path references
The extension scanner will not detect these usages, as they involve runtime string manipulation rather than direct PHP API usage.
Note:
Additional TCA elements beyond tab labels may follow this pattern in future
TYPO3 versions, further extending the use of short-form references in
showitem strings.
Migration
TCA Migration
Extension developers should review their Configuration/
files and any PHP code that manipulates TCA showitem strings
programmatically.
Option 1: Support both formats in string operations
Update your code to handle both the old LLL: path format and the
new short-form references:
// Before - hardcoded search for old format
if (str_contains($showitem, 'LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:general')) {
// Will not work in TYPO3 v14+
}
// After - handle new format
if (str_contains($showitem, 'core.form.tabs:general') ||
str_contains($showitem, 'LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:general')) {
// Works in both versions
}
Option 2: Use the TCA API instead of string manipulation
Rather than manipulating showitem strings directly, use TYPO3's TCA
manipulation APIs:
// Instead of string manipulation
use TYPO3\CMS\Core\Utility\ExtensionManagementUtility;
// Add fields using the API
ExtensionManagementUtility::addToAllTCAtypes(
'tx_myext_domain_model_foo',
'my_field',
'',
'after:title'
);
Recommended action for all extension developers
Scan your extension's Configuration/ directory and any
PHP code that interacts with showitem strings for patterns such as:
str_,contains () str_,replace () preg_or similar string functions operating onmatch () showitemvalues- String operations looking for
'LLL:patterns in TCA configurationsEXT:' - Custom parsing of
$GLOBALS['TCA'] showitemstrings expecting specific path formats
This review is especially important since future TYPO3 versions may further expand the use of short-form references across additional TCA elements.
TYPO3_USER_SETTINGS migrations
Update your code to handle the new short form references:
Before:
// Before - hardcoded search for old format
$showitem = $GLOBALS['TYPO3_USER_SETTINGS']['showitem'];
if (str_contains($showitem, 'LLL:EXT:setup/Resources/Private/Language/locallang.xlf:personal_data')) {
// Will not work in TYPO3 v14+
}
After:
// After - handle new format
$showitem = $GLOBALS['TYPO3_USER_SETTINGS']['showitem'];
if (str_contains($showitem, 'core.form.tabs:personaldata')
|| str_contains($showitem, 'LLL:EXT:setup/Resources/Private/Language/locallang.xlf:personal_data')) {
// Works in both versions
}