/** * Gets array locale => translation * * @return AbstractPersonalTranslation[] */ public function prepareTranslationsArray() { $result = array(); if ($this->object) { array_map(function (AbstractPersonalTranslation $translation) use(&$result) { $result[$translation->getLocale()] = $translation; }, $this->getFieldTranslations()); $class = $this->object->getTranslationClass(); foreach ($this->cultures as $culture) { if (!array_key_exists($culture, $result)) { /** @var AbstractPersonalTranslation $translation */ $translation = new $class($culture, $this->field); $this->object->addTranslation($translation); $result[$culture] = $translation; } } } return $result; }
/** * Updates base fields using translations * * @param TranslatedPersonalEntityInterface $entity */ protected function updateFields(TranslatedPersonalEntityInterface $entity) { $entity->setTranslatableLocale($this->translationsHelper->getDefaultLocale()); foreach ($entity->getTranslations() as $translation) { /** @var AbstractPersonalTranslation $translation */ if ($translation->getLocale() == $entity->getLocale()) { $method = 'set' . ucfirst($translation->getField()); if (method_exists($entity, $method)) { call_user_func(array($entity, $method), $translation->getContent()); } } } }