/** * @param string $locale, e.g. 'en_GB' */ private function addPolyglotListenerToDoctrineWithLocale($locale) { $annotationReader = new AnnotationReader(); $defaultLocaleProvider = new DefaultLocaleProvider(); $defaultLocaleProvider->setDefaultLocale($locale); $listener = new PolyglotListener($annotationReader, $defaultLocaleProvider); $this->infrastructure->getEntityManager()->getEventManager()->addEventSubscriber($listener); }
/** * @param TestEntity $entity * @param LoggerInterface|null $logger * @return ManagedTranslationProxy */ private function createProxy(TestEntity $entity, LoggerInterface $logger = null) { $localeProvider = new DefaultLocaleProvider(); $localeProvider->setDefaultLocale('de'); // We need a translation class without required constructor parameters. $translationClass = 'Webfactory\\Bundle\\PolyglotBundle\\Tests\\TestEntityTranslation'; $proxy = new ManagedTranslationProxy($entity, 'en', $localeProvider, $this->makeAccessible(new \ReflectionProperty($translationClass, 'text')), $this->makeAccessible(new \ReflectionProperty($entity, 'translations')), new \ReflectionClass($translationClass), $this->makeAccessible(new \ReflectionProperty($translationClass, 'locale')), $this->makeAccessible(new \ReflectionProperty($translationClass, 'entity')), $logger); return $proxy; }