Feature: #99694 - Unified Locale handling for translation files (XLF)
See forge#99694
Description
TYPO3 now internally uses a "locale" format following the IETF RFC 5646 language tag standard.
A locale supported by TYPO3 consists of the following parts (tags and subtags):
- ISO 639-1 / ISO 639-2 compatible language key in lowercase (such as "fr" French, or "de" for German)
- optionally the ISO 15924 compatible language script system (4 letter, such as "Hans" as in "zh_Hans")
- optionally the region / country code according to ISO 3166-1 standard in upper camelcase such as "AT" for Austria.
Examples for a locale string are:
- "en" for English
- "pt" for Portuguese
- "da-DK" for Danish as used in Denmark
- "de-CH" for German as used in Switzerland
- "zh-Hans-CN" for Chinese with the simplified script as spoken in China (mainland)
A new PHP object Locale
automatically separates each tag and subtag into
these parts.
The \TYPO3\
object can now be used to instantiate a new
\TYPO3\
object for translating labels.
Previously, TYPO3 used the default
language key instead of the locale en
to
identify the English language. Both are supported, but it is encouraged to use
en-
or en-
with the region subtag to identify the chosen language more
precisely.
Impact
Example for using the Locale
class for creating a Language
object for translations:
$languageService = $languageServiceFactory->create(new Locale('de-AT'));
$myTranslatedString = $languageService->sL(
'LLL:EXT:my_extension/Resources/Private/Language/myfile.xlf:my-label'
);
Using this service is highly recommended, as the wrappers
$GLOBALS
and $GLOBALS
will be
deprecated in the future.