/** * Test translation setters getters */ public function testTranslation() { $requestStatus = new RequestStatus(); $this->assertInstanceOf('Doctrine\\Common\\Collections\\ArrayCollection', $requestStatus->getTranslations()); $this->assertCount(0, $requestStatus->getTranslations()); $translation = new RequestStatusTranslation(); $requestStatus->addTranslation($translation); $this->assertCount(1, $requestStatus->getTranslations()); $requestStatus->addTranslation($translation); $this->assertCount(1, $requestStatus->getTranslations()); $requestStatus->addTranslation(new RequestStatusTranslation()); $this->assertCount(2, $requestStatus->getTranslations()); $translation = new RequestStatusTranslation(); $translation->setLocale('en_US')->setField('type'); $translations = new ArrayCollection([$translation]); $requestStatus->setTranslations($translations); $this->assertCount(1, $requestStatus->getTranslations()); }
/** * {@inheritdoc} */ public function loadEntities(ObjectManager $objectManager) { $localeSettings = $this->container->get('oro_locale.settings'); $defaultLocale = $localeSettings->getLocale(); $locales = $this->getTranslationLocales(); if (!in_array($defaultLocale, $locales, true)) { throw new \LogicException('There are no default locale in translations!'); } foreach ($this->items as $item) { $status = new RequestStatus(); $status->setSortOrder($item['order']); $status->setName($item['name']); foreach ($locales as $locale) { $label = $this->translate($item['name'], static::PREFIX, $locale); if ($locale == $defaultLocale) { $status->setLabel($label)->setLocale($locale); } else { $status->addTranslation((new RequestStatusTranslation())->setLocale($locale)->setField('label')->setContent($label)); } } $objectManager->persist($status); } $objectManager->flush(); }