Chris@0: isMultilingual()) { Chris@0: $container->register('language_request_subscriber', 'Drupal\language\EventSubscriber\LanguageRequestSubscriber') Chris@0: ->addTag('event_subscriber') Chris@0: ->addArgument(new Reference('language_manager')) Chris@0: ->addArgument(new Reference('language_negotiator')) Chris@0: ->addArgument(new Reference('string_translation')) Chris@0: ->addArgument(new Reference('current_user')); Chris@0: Chris@0: $container->register('path_processor_language', 'Drupal\language\HttpKernel\PathProcessorLanguage') Chris@0: ->addTag('path_processor_inbound', ['priority' => 300]) Chris@0: ->addTag('path_processor_outbound', ['priority' => 100]) Chris@0: ->addArgument(new Reference('config.factory')) Chris@0: ->addArgument(new Reference('language_manager')) Chris@0: ->addArgument(new Reference('language_negotiator')) Chris@0: ->addArgument(new Reference('current_user')) Chris@0: ->addArgument(new Reference('language.config_subscriber')) Chris@0: ->addMethodCall('initConfigSubscriber'); Chris@0: } Chris@0: } Chris@0: Chris@0: /** Chris@0: * {@inheritdoc} Chris@0: */ Chris@0: public function alter(ContainerBuilder $container) { Chris@0: $definition = $container->getDefinition('language_manager'); Chris@0: $definition->setClass('Drupal\language\ConfigurableLanguageManager') Chris@0: ->addArgument(new Reference('config.factory')) Chris@0: ->addArgument(new Reference('module_handler')) Chris@0: ->addArgument(new Reference('language.config_factory_override')) Chris@0: ->addArgument(new Reference('request_stack')); Chris@0: if ($default_language_values = $this->getDefaultLanguageValues()) { Chris@0: $container->setParameter('language.default_values', $default_language_values); Chris@0: } Chris@0: Chris@0: } Chris@0: Chris@0: /** Chris@0: * Checks whether the site is multilingual. Chris@0: * Chris@0: * @return bool Chris@0: * TRUE if the site is multilingual, FALSE otherwise. Chris@0: */ Chris@0: protected function isMultilingual() { Chris@0: // Assign the prefix to a local variable so it can be used in an anonymous Chris@0: // function. Chris@0: $prefix = static::CONFIG_PREFIX; Chris@0: // @todo Try to swap out for config.storage to take advantage of database Chris@0: // and caching. This might prove difficult as this is called before the Chris@0: // container has finished building. Chris@0: $config_storage = BootstrapConfigStorageFactory::get(); Chris@0: $config_ids = array_filter($config_storage->listAll($prefix), function ($config_id) use ($prefix) { Chris@0: return $config_id != $prefix . LanguageInterface::LANGCODE_NOT_SPECIFIED && $config_id != $prefix . LanguageInterface::LANGCODE_NOT_APPLICABLE; Chris@0: }); Chris@0: return count($config_ids) > 1; Chris@0: } Chris@0: Chris@0: /** Chris@0: * Gets the default language values. Chris@0: * Chris@0: * @return array|bool Chris@0: * Returns the default language values for the language configured in Chris@0: * system.site:default_langcode if the corresponding configuration entity Chris@0: * exists, otherwise FALSE. Chris@0: */ Chris@0: protected function getDefaultLanguageValues() { Chris@0: $config_storage = BootstrapConfigStorageFactory::get(); Chris@0: $system = $config_storage->read('system.site'); Chris@0: $default_language = $config_storage->read(static::CONFIG_PREFIX . $system['default_langcode']); Chris@0: if (is_array($default_language)) { Chris@0: return $default_language; Chris@0: } Chris@0: return FALSE; Chris@0: } Chris@0: Chris@0: }