/**
  * translate all strings marked as multi lang
  *
  * @param ObjectEvent $event serialization event
  *
  * @return void
  */
 public function onPostSerialize(ObjectEvent $event)
 {
     $object = $event->getObject();
     foreach ($this->localizedFields[\spl_object_hash($object)] as $field => $value) {
         $event->getVisitor()->addData($field, $this->utils->getTranslatedField($value));
     }
 }
 /**
  * return simple string
  *
  * all we want to store after going through a for is a simple string. If there
  * are any other languages being sent, this is where they get stored.
  *
  * @param  array $default value from client
  *
  * @return string
  *
  * @throws TransformationFailedException
  */
 public function reverseTransform($default)
 {
     $defaultLang = $this->utils->getDefaultLanguage();
     if (!isset($default[$defaultLang])) {
         throw new TransformationFailedException(sprintf('Value must contain "%s" string', $defaultLang));
     }
     $this->utils->insertTranslatable($default);
     return $default[$defaultLang];
 }
Exemplo n.º 3
0
 /**
  * @param FormBuilderInterface $builder form builder
  * @param array                $options array of options
  *
  * @return void
  */
 public function buildForm(FormBuilderInterface $builder, array $options)
 {
     $builder->addViewTransformer($this->transformer);
     $languages = $this->utils->getLanguages();
     $default = $this->utils->getDefaultLanguage();
     // handle what happens when no languages exist in db yet
     if (!in_array($default, $languages)) {
         $languages[] = $default;
     }
     foreach ($languages as $language) {
         $options = [];
         if ($language == $default) {
             $options['required'] = true;
         }
         $builder->add($language, 'text', $options);
     }
 }
Exemplo n.º 4
0
 /**
  * translate all strings marked as multi lang
  *
  * @param ObjectEvent $event serialization event
  *
  * @return void
  */
 public function onPostSerialize(ObjectEvent $event)
 {
     $object = $event->getObject();
     if (!$object instanceof TranslatableDocumentInterface) {
         return;
     }
     foreach ($this->localizedFields[\spl_object_hash($object)] as $field => $value) {
         if (substr($field, -2, 2) === '[]') {
             $field = substr($field, 0, -2);
             $event->getVisitor()->addData($field, array_map([$this->utils, 'getTranslatedField'], $value));
         } else {
             $event->getVisitor()->addData($field, $this->utils->getTranslatedField($value));
         }
     }
 }
Exemplo n.º 5
0
 /**
  * Looks up all matching Translatables and returns them uniquified
  *
  * @return array matching english strings
  */
 private function getAllPossibleTranslatableStrings()
 {
     $matchingTranslations = array();
     // is it a glob?
     if ($this->node->getValue() instanceof \Xiag\Rql\Parser\DataType\Glob) {
         $userValue = $this->node->getValue()->toRegex();
         $useWildcard = true;
     } else {
         $userValue = $this->node->getValue();
         $useWildcard = false;
     }
     $matchingTranslatables = $this->intUtils->findMatchingTranslatables($userValue, $this->getClientSearchLanguage(), $useWildcard);
     foreach ($matchingTranslatables as $translatable) {
         $originalString = $translatable->getOriginal();
         if (!empty($originalString)) {
             $matchingTranslations[] = $originalString;
         }
     }
     return array_unique($matchingTranslations);
 }
 /**
  * translate all strings marked as multi lang
  *
  * @return void
  */
 public function onPostDeserialize()
 {
     \array_walk($this->localizedFields, function ($values) {
         $this->utils->insertTranslatable($values);
     });
 }
 /**
  * Get default translation
  *
  * @param array $translations Translations
  * @return string
  */
 private function getDefaultTranslation(array $translations)
 {
     $defaultLanguage = $this->utils->getDefaultLanguage();
     return isset($translations[$defaultLanguage]) ? $translations[$defaultLanguage] : reset($translations);
 }