/** * @param \Generated\Shared\Transfer\KeyTranslationTransfer $keyTranslationTransfer * * @throws \Spryker\Zed\Glossary\Business\Exception\MissingKeyException * * @return bool */ public function saveGlossaryKeyTranslations(KeyTranslationTransfer $keyTranslationTransfer) { if (!$keyTranslationTransfer->getGlossaryKey()) { throw new MissingKeyException('Glossary Key cannot be empty'); } try { if (!$this->keyManager->hasKey($keyTranslationTransfer->getGlossaryKey())) { $idGlossaryKey = $this->keyManager->createKey($keyTranslationTransfer->getGlossaryKey()); } else { $idGlossaryKey = $this->keyManager->getKey($keyTranslationTransfer->getGlossaryKey())->getIdGlossaryKey(); } $availableLocales = $this->localeFacade->getAvailableLocales(); foreach ($availableLocales as $localeName) { $localeTransfer = $this->localeFacade->getLocale($localeName); if (isset($keyTranslationTransfer->getLocales()[$localeName])) { $translationTransfer = $this->createTranslationTransfer($localeTransfer, $idGlossaryKey, $keyTranslationTransfer->getLocales()[$localeName]); $this->saveAndTouchTranslation($translationTransfer); } } return true; } catch (MissingKeyException $error) { $messageTransfer = new MessageTransfer(); $messageTransfer->setValue($error->getMessage()); $this->messengerFacade->addErrorMessage($messageTransfer); return false; } }