private function buildFiles(\Project $project)
 {
     $translations = $project->getTranslations();
     $builder = new KdybyTranslationBuilder();
     $files = [];
     foreach ($translations as $translation) {
         $mask = '%s.' . $translation->getLocale() . '.neon';
         $dictionaryData = $this->translationFacade->getDictionaryData($translation);
         $outputFiles = $builder->build($mask, $dictionaryData);
         $files = array_merge($files, $outputFiles);
     }
     $zip = new ZipStream(sprintf('%s.zip', $project->getName()));
     foreach ($files as $fileName => $messages) {
         $data = Neon::encode($messages, Neon::BLOCK);
         $zip->addFile($fileName, $data);
     }
     $zip->finish();
 }
Example #2
0
 public function addMessageToProject(\Project $project, $values)
 {
     foreach ($project->getTranslations() as $translation) {
         $message = new \Message();
         $message->setContext($values->context)->setSingular($values->singular);
         if ($values->plural !== '') {
             $message->setPlural($values->plural);
         }
         $pluralsCount = $translation->getPluralsCount();
         $message->setPluralsCount($pluralsCount)->setTranslations($this->prepareTranslationsArray($pluralsCount))->setTranslation($translation);
         $res = $translation->addMessage($message->singular, $message);
         if ($res === TRUE) {
             $this->dm->persist($message);
             $this->dm->persist($translation);
         }
     }
     $templateMessage = [$values->singular => ['singular' => $values->singular, 'translations' => []]];
     $res = $project->addTemplateMessage($values->singular, $templateMessage);
     if ($res === TRUE) {
         $this->dm->persist($project);
     }
     $this->dm->flush();
     return $message;
 }