protected function createComponentFormAddTranslation() { $form = new Form(); $langs = Intl::getLocaleBundle()->getLocaleNames(); $filtered = []; foreach ($langs as $locale => $name) { try { $lang = substr($locale, 0, -strlen(strrchr($locale, '_'))); \Bazo\Translation\Langs::getPluralRule($lang); $filtered[$locale] = $name; } catch (\InvalidArgumentException $ex) { } } $form->addSelect('lang', 'Language', $filtered); $form->addSubmit('btnSubmit', 'Create'); $form->onSuccess[] = callback($this, 'formAddTranslationSubmitted'); return $form; }
public function createTranslation(\Project $project, $locale) { $translation = new \Translation(); $lang = substr($locale, 0, 2); $pluralRule = Langs::getPluralRule($lang); $pluralsCount = Langs::getPluralsCount($lang); $plurals = $this->getPlurals($locale, $pluralsCount); $language = \Symfony\Component\Intl\Intl::getLocaleBundle()->getLocaleName($locale); $translation->setLang($lang)->setLocale($locale)->setLanguage($language)->setProject($project)->setPluralRule($pluralRule)->setPluralsCount($pluralsCount)->setPluralNumbers($plurals); $translations = $this->prepareTranslationsArray($pluralsCount); foreach ($project->getTemplateMessages() as $messageData) { $message = $this->prepareMessage($messageData, $translations, $pluralsCount); $messageId = $message->getContext() . '.' . $message->getSingular(); $translation->addMessage($messageId, $message); $message->setTranslation($translation); $this->dm->persist($message); } $project->addTranslation($translation); $this->dm->persist($translation); $this->dm->persist($project); $this->dm->flush(); return $translation; }