/** @override */ public static function init($em, $reader) { // http://www.w3schools.com/tags/ref_language_codes.asp static::$listener = $listener = new \Gedmo\Translatable\TranslatableListener(); // Current translation locale should be set from session or hook later into the listener // Most importantly, before the entity manager is flushed $lang = \Config::get('language', 'en'); $default = \Config::get('language_fallback', $lang); if (is_array($default)) { $default = $default[0]; } $listener->setTranslatableLocale($lang); $listener->setDefaultLocale($default); $listener->setAnnotationReader($reader); $listener->setTranslationFallback(true); $em->getEventManager()->addEventSubscriber($listener); }
public function onBootstrap(Event $e) { $application = $e->getApplication(); $eventManager = $application->getEventManager(); $eventManager->attach(MvcEvent::EVENT_DISPATCH, array($this, 'setApplicationSection')); $eventManager->attach(MvcEvent::EVENT_DISPATCH, array($this, 'setLayout'), 31); $eventManager->attach(MvcEvent::EVENT_DISPATCH_ERROR, array($this, 'setLayout'), 31); $app = $e->getParam('application'); $sm = $app->getServiceManager(); $evm = $sm->get('doctrine.eventmanager.orm_default'); $config = $sm->get('Config'); $tablePrefix = isset($config['doctrine']['connection']['orm_default']['params']['table_prefix']) ? $config['doctrine']['connection']['orm_default']['params']['table_prefix'] : FALSE; if ($tablePrefix) { $tablePrefix = new \Dxapp\Doctrine\Extension\TablePrefix($tablePrefix); $evm->addEventListener(\Doctrine\ORM\Events::loadClassMetadata, $tablePrefix); } $cache = $sm->get('doctrine.cache.memcache'); $annotationReader = new \Doctrine\Common\Annotations\AnnotationReader(); $cachedAnnotationReader = new \Doctrine\Common\Annotations\CachedReader($annotationReader, $cache); $em = $sm->get('doctrine.entitymanager.orm_default'); \Doctrine\DBAL\Types\Type::overrideType('datetime', 'Dxapp\\Doctrine\\Types\\UTCDatetimeType'); // $em->getConnection()->getDatabasePlatform()->registerDoctrineTypeMapping('Datetime', 'datetime'); $sluggableListener = new \Gedmo\Sluggable\SluggableListener(); $sluggableListener->setAnnotationReader($cachedAnnotationReader); $evm->addEventSubscriber($sluggableListener); $treeListener = new \Gedmo\Tree\TreeListener(); $treeListener->setAnnotationReader($cachedAnnotationReader); $evm->addEventSubscriber($treeListener); $timestampableListener = new \Gedmo\Timestampable\TimestampableListener(); $timestampableListener->setAnnotationReader($cachedAnnotationReader); $evm->addEventSubscriber($timestampableListener); $translatableListener = new \Gedmo\Translatable\TranslatableListener(); $translatableListener->setAnnotationReader($cachedAnnotationReader); $translatableListener->setTranslatableLocale('en'); $translatableListener->setDefaultLocale('en'); $evm->addEventSubscriber($translatableListener); }
// loggable, not used in example //$loggableListener = new Gedmo\Loggable\LoggableListener; //$loggableListener->setAnnotationReader($cachedAnnotationReader); //$loggableListener->setUsername('admin'); //$evm->addEventSubscriber($loggableListener); // timestampable $timestampableListener = new Gedmo\Timestampable\TimestampableListener(); $timestampableListener->setAnnotationReader($cachedAnnotationReader); $evm->addEventSubscriber($timestampableListener); // blameable $blameableListener = new \Gedmo\Blameable\BlameableListener(); $blameableListener->setAnnotationReader($cachedAnnotationReader); $blameableListener->setUserValue('MyUsername'); // determine from your environment $evm->addEventSubscriber($blameableListener); // translatable $translatableListener = new Gedmo\Translatable\TranslatableListener(); // current translation locale should be set from session or hook later into the listener // most important, before entity manager is flushed $translatableListener->setTranslatableLocale('en'); $translatableListener->setDefaultLocale('en'); $translatableListener->setAnnotationReader($cachedAnnotationReader); $evm->addEventSubscriber($translatableListener); // sortable, not used in example //$sortableListener = new Gedmo\Sortable\SortableListener; //$sortableListener->setAnnotationReader($cachedAnnotationReader); //$evm->addEventSubscriber($sortableListener); // mysql set names UTF-8 if required $evm->addEventSubscriber(new Doctrine\DBAL\Event\Listeners\MysqlSessionInit()); // Finally, create entity manager return Doctrine\ORM\EntityManager::create($connection, $config, $evm);
/** * Gets the 'stof_doctrine_extensions.listener.translatable' service. * * This service is shared. * This method always returns the same instance of the service. * * This service is private. * If you want to be able to request this service from the container directly, * make it public, otherwise you might end up with broken code. * * @return \Gedmo\Translatable\TranslatableListener A Gedmo\Translatable\TranslatableListener instance */ protected function getStofDoctrineExtensions_Listener_TranslatableService() { $this->services['stof_doctrine_extensions.listener.translatable'] = $instance = new \Gedmo\Translatable\TranslatableListener(); $instance->setAnnotationReader($this->get('annotation_reader')); $instance->setDefaultLocale('en'); $instance->setTranslatableLocale('en'); $instance->setTranslationFallback(false); $instance->setPersistDefaultLocaleTranslation(false); $instance->setSkipOnLoad(false); return $instance; }
/** * @return $this * @throws \Exception */ public function setUpTranslateable() { $defaultLocale = $this->locale->getDefaultLocale(); if ($defaultLocale === null) { throw new \Exception('Default locale not found! Fraym is not correctly installed, please reinstall Fraym.'); } $translatableListener = new \Gedmo\Translatable\TranslatableListener(); $translatableListener->setDefaultLocale($defaultLocale->locale); $translatableListener->setAnnotationReader($this->cachedAnnotationReader); $translatableListener->setTranslationFallback(true); $translatableListener->setPersistDefaultLocaleTranslation(true); $this->eventManager->addEventSubscriber($translatableListener); return $this; }
protected function registerI18n() { $translatableListener = new \Gedmo\Translatable\TranslatableListener(); $translatableListener->setDefaultLocale($this->config['general.default_language']); $translatableListener->setAnnotationReader($this->cachedAnnotationReader); $this->eventManager->addEventSubscriber($translatableListener); }