Feature: #93663 - Backend user's preferred UI language stored as DB field¶
In previous TYPO3 versions, administrators could create new backend
users and select from the list of all supported TYPO3-internal
languages for their backend language (= all labels from
XLIFF files). This information was stored in the database field
be_users.lang and was only used on the first login of a user
into TYPO3 backend.
The backend users themselves could use the User settings module to change the UI language to their preferred language, based on the available language packs in the system.
This information was then stored in the user's
uc (user configuration),
an arbitrary settings field.
This approach - built over 18 years ago without any significant changes ever since - had several downsides:
The database field
be_users.langwas not really needed
Administrators did not see available language packs when changing the language
Administrators could only change an editor's preferred language by switching to the user (Switch User Mode).
Administrators could not filter / sort editors to see what languages the users had chosen
Fetching the user's preferred language always meant to fetch the whole
ucinformation and unpack it.
The preferred language was only selected if the user had logged in for the first time to initialize the
Instead, TYPO3 now keeps the current language preference in the
be_users.lang, allowing both editors and administrators
to access the same value for fetching this information.
When the user changes their language in the user settings module, the database record gets updated, and it is clear where this information is stored. It is now the same logic when an administrator updates the editor's record via FormEngine.
The value is now always filled, and if English is chosen, the value
is set to the string
default (instead of an empty value).
An upgrade wizard migrates existing
uc values into the database
user->uc['lang'] is kept in sync for