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(); }
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; }