18 use TYPO3Fluid\Fluid\Core\Exception;
19 use TYPO3Fluid\Fluid\Core\Rendering\RenderingContextInterface;
20 use TYPO3Fluid\Fluid\Core\ViewHelper\AbstractViewHelper;
21 use TYPO3Fluid\Fluid\Core\ViewHelper\Traits\CompileWithRenderStatic;
93 use CompileWithRenderStatic;
109 $this->registerArgument(
'key',
'string',
'Translation Key');
110 $this->registerArgument(
'id',
'string',
'Translation ID. Same as key.');
111 $this->registerArgument(
'default',
'string',
'If the given locallang key could not be found, this value is used. If this argument is not set, child nodes will be used to render the default');
112 $this->registerArgument(
'arguments',
'array',
'Arguments to be replaced in the resulting string');
113 $this->registerArgument(
'extensionName',
'string',
'UpperCamelCased extension key (for example BlogExample)');
114 $this->registerArgument(
'languageKey',
'string',
'Language key ("dk" for example) or "default" to use for this translation. If this argument is empty, we use the current language');
115 $this->registerArgument(
'alternativeLanguageKeys',
'array',
'Alternative language keys if no translation does exist');
127 public static function renderStatic(array $arguments, \Closure $renderChildrenClosure, RenderingContextInterface $renderingContext)
129 $key = $arguments[
'key'];
130 $id = $arguments[
'id'];
131 $default = $arguments[
'default'];
132 $extensionName = $arguments[
'extensionName'];
133 $translateArguments = $arguments[
'arguments'];
140 if ((
string)$id ===
'') {
141 throw new Exception(
'An argument "key" or "id" has to be provided', 1351584844);
144 $request = $renderingContext->getControllerContext()->getRequest();
145 $extensionName = $extensionName ?? $request->getControllerExtensionName();
147 $value = static::translate($id, $extensionName, $translateArguments, $arguments[
'languageKey'], $arguments[
'alternativeLanguageKeys']);
148 }
catch (\InvalidArgumentException $e) {
151 if ($value ===
null) {
152 $value = $default ?? $renderChildrenClosure();
153 if (!empty($translateArguments)) {
154 $value = vsprintf($value, $translateArguments);
171 protected static function translate($id, $extensionName, $arguments, $languageKey, $alternativeLanguageKeys)