/** * Parse and save edited translation * * @param array $translateParams * @return array */ public function processAjaxPost(array $translateParams) { if (!$this->_translateInline->isAllowed()) { return ['inline' => 'not allowed']; } $this->_appCache->invalidate(\Magento\Framework\App\Cache\Type\Translate::TYPE_IDENTIFIER); $this->_validateTranslationParams($translateParams); $this->_filterTranslationParams($translateParams, ['custom']); /** @var $validStoreId int */ $validStoreId = $this->_storeManager->getStore()->getId(); /** @var $resource \Magento\Translation\Model\ResourceModel\StringUtils */ $resource = $this->_resourceFactory->create(); foreach ($translateParams as $param) { if ($this->_appState->getAreaCode() == \Magento\Backend\App\Area\FrontNameResolver::AREA_CODE) { $storeId = 0; } else { if (empty($param['perstore'])) { $resource->deleteTranslate($param['original'], null, false); $storeId = 0; } else { $storeId = $validStoreId; } } $resource->saveTranslate($param['original'], $param['custom'], null, $storeId); } return $this->getCacheManger()->updateAndGetTranslations(); }
/** * Render element * * @param \Magento\Framework\Data\Form\Element\AbstractElement $element * @return string * * @see RendererInterface::render() */ public function render(\Magento\Framework\Data\Form\Element\AbstractElement $element) { $element->addClass('element-value-changer'); $valueName = $element->getValueName(); if ($valueName === '') { $valueName = '...'; } if ($element->getShowAsText()) { $html = ' <input type="hidden" class="hidden" id="' . $element->getHtmlId() . '" name="' . $element->getName() . '" value="' . $element->getValue() . '"/> ' . htmlspecialchars($valueName) . ' '; } else { $html = ' <span class="rule-param"' . ($element->getParamId() ? ' id="' . $element->getParamId() . '"' : '') . '>' . '<a href="javascript:void(0)" class="label">'; if ($this->inlineTranslate->isAllowed()) { $html .= $this->escapeHtml($valueName); } else { $html .= $this->escapeHtml($this->filterManager->truncate($valueName, ['length' => 33, 'etc' => '...'])); } $html .= '</a><span class="element"> ' . $element->getElementHtml(); if ($element->getExplicitApply()) { $html .= ' <a href="javascript:void(0)" class="rule-param-apply"><img src="' . $this->getViewFileUrl('images/rule_component_apply.gif') . '" class="v-middle" alt="' . __('Apply') . '" title="' . __('Apply') . '" /></a> '; } $html .= '</span></span> '; } return $html; }