LanguageService
This class is used to translate strings in plain PHP. For examples
see Localization in PHP. A Language
should not
be created directly, therefore its constructor is internal. Create a
Language
with the LanguageServiceFactory.
In the backend context a Language
is stored in the global
variable $GLOBALS
.
In the frontend a Language
can be accessed via the contentObject:
- class LanguageService
-
- Fully qualified name
-
\TYPO3\
CMS\ Core\ Localization\ Language Service
Main API to fetch labels from XLF (label files) based on the current system language of TYPO3. It is able to resolve references to files + their pointers to the proper language. If you see something about "LLL", this class does the trick for you. It is not related to language handling of content, but rather of labels for plugins.
Usually this is injected into $GLOBALS['LANG'] when in backend or CLI context, and populated by the current backend user. Do not rely on $GLOBAL['LANG'] in frontend, as it is only available under certain circumstances! In frontend, this is also used to translate "labels", see TypoScriptFrontendController->sL() for that.
As TYPO3 internally does not match the proper ISO locale standard, the "locale" here is actually a list of supported language keys, (see Locales class), whereas "English" has the language key "default".
Further usages on setting up your own LanguageService in BE:
$languageService = GeneralUtility::makeInstance(LanguageServiceFactory::class) ->createFromUserPreferences($GLOBALS['BE_USER']);
Copied!- sL ( ?string $input)
-
Main and most often used method.
Resolve strings like these:
'LLL:EXT:core/Resources/Private/Language/locallang_core.xlf:labels.depth_0'
Copied!This looks up the given .xlf file path in the 'core' extension for label labels.depth_0
- param $input
-
Label key/reference
- Returns
-
string
Example: Use
<?php
use Psr\Http\Message\ServerRequestInterface;
use TYPO3\CMS\Core\Localization\LanguageServiceFactory;
final class ExampleController
{
private ServerRequestInterface $request;
public function __construct(
private readonly LanguageServiceFactory $LanguageServiceFactory,
) {}
public function processAction(
string $content,
array $configurations,
ServerRequestInterface $request,
): string {
$this->request = $request;
// ...
$content .= $this->getTranslatedLabel(
'LLL:EXT:my_extension/Resources/Private/Language/locallang.xlf:labels.exampleLabel',
);
// ...
return $content;
}
private function getTranslatedLabel(string $key): string
{
$language =
$this->request->getAttribute('language')
?? $this->request->getAttribute('site')->getDefaultLanguage();
$languageService = $this->LanguageServiceFactory
->createFromSiteLanguage($language);
return $languageService->sL($key);
}
}