You are here

public function LanguageHierarchyServiceProvider::alter in Language Hierarchy 2.x

Same name and namespace in other branches
  1. 8 src/LanguageHierarchyServiceProvider.php \Drupal\language_hierarchy\LanguageHierarchyServiceProvider::alter()

Modifies existing service definitions.

Parameters

ContainerBuilder $container: The ContainerBuilder whose service definitions can be altered.

Overrides ServiceProviderBase::alter

File

src/LanguageHierarchyServiceProvider.php, line 17

Class

LanguageHierarchyServiceProvider
Overrides the language overrides config factory service to use fallbacks.

Namespace

Drupal\language_hierarchy

Code

public function alter(ContainerBuilder $container) {
  $definition = $container
    ->getDefinition('language.config_factory_override');
  $definition
    ->setClass('Drupal\\language_hierarchy\\Config\\LanguageHierarchyConfigFactoryOverride');
  $modules = $container
    ->getParameter('container.modules');

  // Decorate locale.storage only if locale module is enabled.
  if (isset($modules['locale'])) {
    $container
      ->register('language_hierarchy.string_database_storage_decorator', 'Drupal\\language_hierarchy\\StringDatabaseStorageDecorator')
      ->setDecoratedService('locale.storage')
      ->addArgument(new Reference('language_hierarchy.string_database_storage_decorator.inner'))
      ->addArgument(new Reference('language_manager'))
      ->addArgument(new Reference('database'));
  }

  // Add RouteSubscriber only if Config Translation module is enabled.
  if (isset($modules['config_translation'])) {
    $container
      ->register('language_hierarchy.route_subscriber', 'Drupal\\language_hierarchy\\Routing\\RouteSubscriber')
      ->addArgument(new Reference('plugin.manager.config_translation.mapper'))
      ->addTag('event_subscriber');
  }
}