Localization
Multilingual websites are widespread nowadays, which means that the
web-available texts have to be localized. Extbase provides the helper class
\TYPO3\
for the translation of the labels. Besides,
there is the Fluid ViewHelper <f:
, with the help of whom you can use that
functionality in templates.
The localization class has only one public static method called translate
, which
does all the translation. The method can be called like this:
use TYPO3\CMS\Extbase\Utility\LocalizationUtility;
$someString = LocalizationUtility::translate($key, $extensionName, $arguments);
$key
- The identifier to be translated. If the format LLL:path:key is given, then this
identifier is used, and the parameter
$extension
is ignored. Otherwise, the fileName Resources/
from the given extension is loaded, and the resulting text for the given key in the current language returned.Private/ Language/ locallang. xlf $extension
Name - The extension name. It can be fetched from the request.
$arguments
-
It allows you to specify an array of arguments. In the
Localization
, these arguments will be passed to the functionUtility vsprintf
. So you can insert dynamic values in every translation. You can find the possible wildcard specifiers under https://www.php.net/manual/function.sprintf.php#refsect1-function.sprintf-parameters.Example language file with inserted wildcards
<?xml version="1.0" encoding="UTF-8"?> <xliff version="1.0" xmlns="urn:oasis:names:tc:xliff:document:1.1"> <file source-language="en" datatype="plaintext" original="messages" date="..." product-name="..."> <header/> <body> <trans-unit id="count_posts"> <source>You have %d posts with %d comments written.</source> </trans-unit> <trans-unit id="greeting"> <source>Hello %s!</source> </trans-unit> </body> </file> </xliff>
Copied!Called translations with arguments to fill data in wildcards
use TYPO3\CMS\Extbase\Utility\LocalizationUtility; $someString = LocalizationUtility::translate('count_posts', 'BlogExample', [$countPosts, $countComments]) $anotherString = LocalizationUtility::translate('greeting', 'BlogExample', [$userName])
Copied!