Hallo David, wie wäre es mit f:translate?
https://docs.typo3.org/typo3cms/ExtbaseGuide/Fluid/ViewHelper/Translate.html https://forum.typo3.org/index.php?t=msg&goto=676703& viele Grüße Birgit > Am 29.03.2018 um 13:52 schrieb David Brünner <david.bruen...@t-online.de>: > > Hallo, > > ich rufe den SelectViewHelper folgendermaßen auf: > > [code] > <f:form.select options="{leistungen}" property="uebergeordneteLeistung" > additionalAttributes="{data-placeholder: 'Wählen Sie eine Leistung...'}" > optionLabelField="bezeichnung" multiple="0" class="form-control chosen"/> > [/code] > > Nun habe ich aber das Problem, dass der Text für das Attribut > 'data-placeholder' aus einem Languagefile kommen soll. > > Meine Idee wäre gewesen, einen neuen ViewHelper zu schreiben, der erst schaut > ob was zu übersetzen ist und dann einfach an den vorhanden SelectViewHelper > weiterleitet. > > [code] > <kkvh:form.selectWithTranslation options="{leistungen}" > property="uebergeordneteLeistung" additionalAttributes="{data-placeholder: > 'LLL:EXT:kkbaybw/Resources/Private/Language/locallang.xlf:be.chooseLeistung;bla'}" > optionLabelField="bezeichnung" multiple="0" class="form-control chosen"/> > [/code] > > [code] > class SelectWithTranslationViewHelper extends SelectViewHelper { > protected $viewHelperArgs = null; > > public function init() { > $this->viewHelperArgs = $this->arguments; > } > > public function render() { > $this->init(); > $this->_getAttributeFromArgs($this->viewHelperArgs); > $this->setArguments($this->viewHelperArgs); > return parent::render(); > } > > protected function _getAttributeFromArgs($arguments) { > foreach ($arguments as $attribute => $value) { > if (is_array($value)) { > $result = $this->_getAttributeFromArgs($value); > $this->viewHelperArgs[$attribute] = $result; > } else { > if (strpos(strtolower($value), 'lll:') !== > false) { > $parts[] = $value; > if (strpos($value, ';') !== false) { > $parts = explode(';', $value); > } > if (count($parts) == 1) { > $result[$attribute] = > $this->_translated($parts[0], []); > } elseif (count($parts) == 2) { > $result[$attribute] = > $this->_translated($parts[0], $parts[1]); > } > return $result; > } > } > } > } > > protected function _translated($id, $args) { > $request = > $this->renderingContext->getControllerContext()->getRequest(); > $extensionName = $request->getControllerExtensionName(); > return LocalizationUtility::translate($id, $extensionName, > $args); > } > } > [/code] > > Aber leider funktioniert das nicht. Die Argumente die im > 'SelectWithTranslationVH' entgegengenommen werden ,werden schön übersetzt. > Aber es kommt trotzdem der Placeholder 'LLL:xxxx' raus. > > Ich habe gelesen, dass sowieso davon abgeraten wird ViewHelper zu > verschachteln > (https://forum.typo3.org/index.php/t/152059/call-viewhelper-from-another-viewhelper). > > Zusammenfassend: > Ich brauche eine Möglichkeit den SelectViewHelper aufzurufen, aber zusätzlich > auch zusätzliche Attribute (in diesem Bsp.: 'data-placeholder') zu übersetzen. > > _______________________________________________ > TYPO3-german mailing list > TYPO3-german@lists.typo3.org > http://lists.typo3.org/cgi-bin/mailman/listinfo/typo3-german _______________________________________________ TYPO3-german mailing list TYPO3-german@lists.typo3.org http://lists.typo3.org/cgi-bin/mailman/listinfo/typo3-german