/** * @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; }
/** * @param string $keyName * @param string $value * @param bool $isActive * * @return \Orm\Zed\Glossary\Persistence\SpyGlossaryTranslation */ public function createTranslationForCurrentLocale($keyName, $value, $isActive = true) { $idKey = $this->keyManager->getKey($keyName)->getPrimaryKey(); $idLocale = $this->localeFacade->getCurrentLocale()->getIdLocale(); return $this->createTranslationByIds($idKey, $idLocale, $value, $isActive); }