Author: Filip Procházka (filip@prochazka.su)
Inheritance: extends Nette\Object, implements Tracy\IBarPanel
Example #1
0
 /**
  * {@inheritdoc}
  */
 public function addResource($format, $resource, $locale, $domain = NULL)
 {
     if ($this->localeWhitelist && !preg_match($this->localeWhitelist, $locale)) {
         if ($this->panel) {
             $this->panel->addIgnoredResource($format, $resource, $locale, $domain);
         }
         return;
     }
     parent::addResource($format, $resource, $locale, $domain);
     $this->catalogueCompiler->addResource($format, $resource, $locale, $domain);
     $this->availableResourceLocales[$locale] = TRUE;
     if ($this->panel) {
         $this->panel->addResource($format, $resource, $locale, $domain);
     }
 }
 public function beforeCompile()
 {
     $builder = $this->getContainerBuilder();
     $config = $this->getConfig();
     $self = $this;
     $registerToLatte = function (Nette\DI\ServiceDefinition $def) use($self) {
         $def->addSetup('?->onCompile[] = function($engine) { Kdyby\\Translation\\Latte\\TranslateMacros::install($engine->getCompiler()); }', array('@self'))->addSetup('addFilter', array('translate', array($self->prefix('@helpers'), 'translate')))->addSetup('addFilter', array('getTranslator', array($self->prefix('@helpers'), 'getTranslator')));
     };
     $latteFactoryService = $builder->getByType('Nette\\Bridges\\ApplicationLatte\\ILatteFactory') ?: 'nette.latteFactory';
     if ($builder->hasDefinition($latteFactoryService)) {
         $registerToLatte($builder->getDefinition($latteFactoryService));
     }
     if ($builder->hasDefinition('nette.latte')) {
         $registerToLatte($builder->getDefinition('nette.latte'));
     }
     $applicationService = $builder->getByType('Nette\\Application\\Application') ?: 'application';
     $builder->getDefinition($applicationService)->addSetup('$service->onRequest[] = ?', array(array($this->prefix('@userLocaleResolver.param'), 'onRequest')));
     if ($config['debugger'] && interface_exists('Tracy\\IBarPanel')) {
         $builder->getDefinition($applicationService)->addSetup('$self = $this; $service->onStartup[] = function () use ($self) { $self->getService(?); }', array($this->prefix('default')))->addSetup('$service->onRequest[] = ?', array(array($this->prefix('@panel'), 'onRequest')));
     }
     Kdyby\Translation\Diagnostics\Panel::registerBluescreen();
     $extractor = $builder->getDefinition($this->prefix('extractor'));
     foreach ($builder->findByTag(self::EXTRACTOR_TAG) as $extractorId => $meta) {
         Validators::assert($meta, 'string:2..');
         $extractor->addSetup('addExtractor', array($meta, '@' . $extractorId));
         $builder->getDefinition($extractorId)->setAutowired(FALSE)->setInject(FALSE);
     }
     $writer = $builder->getDefinition($this->prefix('writer'));
     foreach ($builder->findByTag(self::DUMPER_TAG) as $dumperId => $meta) {
         Validators::assert($meta, 'string:2..');
         $writer->addSetup('addDumper', array($meta, '@' . $dumperId));
         $builder->getDefinition($dumperId)->setAutowired(FALSE)->setInject(FALSE);
     }
     $this->loaders = array();
     foreach ($builder->findByTag(self::LOADER_TAG) as $loaderId => $meta) {
         Validators::assert($meta, 'string:2..');
         $builder->getDefinition($loaderId)->setAutowired(FALSE)->setInject(FALSE);
         $this->loaders[$meta] = $loaderId;
     }
     $builder->getDefinition($this->prefix('loader'))->addSetup('injectServiceIds', array($this->loaders))->setInject(FALSE);
     foreach ($this->compiler->getExtensions() as $extension) {
         if (!$extension instanceof ITranslationProvider) {
             continue;
         }
         $config['dirs'] = array_merge($config['dirs'], array_values($extension->getTranslationResources()));
     }
     if ($dirs = array_values(array_filter($config['dirs'], Callback::closure('is_dir')))) {
         foreach ($dirs as $dir) {
             $builder->addDependency($dir);
         }
         $this->loadResourcesFromDirs($dirs);
     }
 }