/** * {@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); } }