/**
  * 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());
             }
         }
     }
 }
 /**
  * Builds form
  *
  * @param FormBuilderInterface $builder
  * @param array                $options
  */
 public function buildForm(FormBuilderInterface $builder, array $options)
 {
     foreach ($this->translationsHelper->getLanguages() as $locale => $name) {
         $builder->add($locale, @$options['field_type'], array_merge($options['field_options'], array('label' => $name, 'required' => $locale == $this->translationsHelper->getDefaultLocale() ? $options['required'] : false)));
     }
     $transformer = new TranslationFieldDataTransformer();
     $transformer->setCultures(array_keys($this->translationsHelper->getLanguages()))->setField($builder->getName())->setDefaultCulture($this->translatableListener->getDefaultLocale());
     // Adds transformer
     $builder->addModelTransformer($transformer);
     // On PreSet data - build translations
     $builder->addEventListener(FormEvents::PRE_SET_DATA, function (FormEvent $event) use($transformer) {
         $form = $event->getForm();
         $parentForm = $form->getParent();
         if ($parentForm->getData()) {
             $transformer->setObject($parentForm->getData());
         }
     }, -10);
     // On PostSet data - persist translations
     $builder->addEventListener(FormEvents::POST_SUBMIT, function (FormEvent $event) use($transformer) {
         foreach ($transformer->getFieldTranslations() as $translation) {
             $this->entityManager->persist($translation);
         }
     }, -10);
 }