コード例 #1
0
 /**
  * @param array $translations
  *
  * @return array
  */
 protected function installKeysAndTranslations(array $translations)
 {
     Propel::getConnection()->beginTransaction();
     $results = [];
     foreach ($translations as $keyName => $data) {
         $results[$keyName]['created'] = false;
         if (!$this->keyManager->hasKey($keyName)) {
             $this->keyManager->createKey($keyName);
             $results[$keyName]['created'] = true;
         }
         foreach ($data['translations'] as $localeName => $text) {
             $locale = new LocaleTransfer();
             $locale->setLocaleName($localeName);
             $results[$keyName]['translation'][$localeName]['text'] = $text;
             $results[$keyName]['translation'][$localeName]['created'] = false;
             $results[$keyName]['translation'][$localeName]['updated'] = false;
             if (!$this->translationManager->hasTranslation($keyName, $locale)) {
                 $this->translationManager->createAndTouchTranslation($keyName, $locale, $text, true);
                 $results[$keyName]['translation'][$localeName]['created'] = true;
             } elseif ($this->translationManager->getTranslationByKeyName($keyName, $locale)->getValue() !== $text) {
                 $this->translationManager->updateAndTouchTranslation($keyName, $locale, $text, true);
                 $results[$keyName]['translation'][$localeName]['updated'] = true;
             }
         }
     }
     Propel::getConnection()->commit();
     return $results;
 }
コード例 #2
0
 /**
  * @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;
     }
 }