Locale
New in version 12.2
The \TYPO3\
class unifies the handling of
locales instead of dealing with "default" or other TYPO3-specific namings.
The Locale
class is instantiated with a string following the
IETF RFC 5646 language tag standard:
use TYPO3\CMS\Core\Localization\Locale;
$locale = new Locale('de-CH');
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
for French orde
for German) - optionally the ISO 15924 compatible language script system
(4 letter, such as
Hans
as inzh_
)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 Englishpt
for Portugueseda-
for Danish as used in DenmarkDK de-
for German as used in SwitzerlandCH zh-
for Chinese with the simplified script as spoken in China (mainland)Hans- CN
The Locale
object can be used to create a new
LanguageService object via the
LanguageServiceFactory 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.
Example for using the Locale
class for creating a Language
object for translations:
<?php
declare(strict_types=1);
namespace MyVendor\MyExtension;
use TYPO3\CMS\Core\Localization\LanguageServiceFactory;
use TYPO3\CMS\Core\Localization\Locale;
final class LocaleExample
{
public function __construct(
private readonly LanguageServiceFactory $languageServiceFactory,
) {}
public function doSomething()
{
$languageService = $this->languageServiceFactory->create(new Locale('de-CH'));
$myTranslatedString = $languageService->sL(
'LLL:EXT:my_extension/Resources/Private/Language/myfile.xlf:my-label',
);
}
}
API
- class Locale
-
- Fully qualified name
-
\TYPO3\
CMS\ Core\ Localization\ Locale
- A representation of
- language key (based on ISO 639-1 / ISO 639-2)
- - the optional four-letter script code that can follow the language code according to the Unicode ISO 15924 Registry (e.g. Hans in zh_Hans)
-
- region / country (based on ISO 3166-1)
separated with a "-".
This conforms to IETF - RFC 5646 (see https://datatracker.ietf.org/doc/rfc5646/) in a simplified form.