/**
  * {@inheritdoc}
  */
 protected function alterRoutes(RouteCollection $collection)
 {
     foreach ($this->contentTranslationManager->getSupportedEntityTypes() as $entity_type_id => $entity_type) {
         // Try to get the route from the current collection.
         $link_template = $entity_type->getLinkTemplate('canonical');
         if (strpos($link_template, '/') !== FALSE) {
             $base_path = '/' . $link_template;
         } else {
             if (!($entity_route = $collection->get("entity.{$entity_type_id}.canonical"))) {
                 continue;
             }
             $base_path = $entity_route->getPath();
         }
         // Inherit admin route status from edit route, if exists.
         $is_admin = FALSE;
         $route_name = "entity.{$entity_type_id}.edit_form";
         if ($edit_route = $collection->get($route_name)) {
             $is_admin = (bool) $edit_route->getOption('_admin_route');
         }
         $path = $base_path . '/translations';
         $route = new Route($path, array('_controller' => '\\Drupal\\content_translation\\Controller\\ContentTranslationController::overview', 'entity_type_id' => $entity_type_id), array('_entity_access' => $entity_type_id . '.view', '_access_content_translation_overview' => $entity_type_id), array('parameters' => array($entity_type_id => array('type' => 'entity:' . $entity_type_id)), '_admin_route' => $is_admin));
         $route_name = "entity.{$entity_type_id}.content_translation_overview";
         $collection->add($route_name, $route);
         $route = new Route($path . '/add/{source}/{target}', array('_controller' => '\\Drupal\\content_translation\\Controller\\ContentTranslationController::add', 'source' => NULL, 'target' => NULL, '_title' => 'Add', 'entity_type_id' => $entity_type_id), array('_entity_access' => $entity_type_id . '.view', '_access_content_translation_manage' => 'create'), array('parameters' => array('source' => array('type' => 'language'), 'target' => array('type' => 'language'), $entity_type_id => array('type' => 'entity:' . $entity_type_id)), '_admin_route' => $is_admin));
         $collection->add("entity.{$entity_type_id}.content_translation_add", $route);
         $route = new Route($path . '/edit/{language}', array('_controller' => '\\Drupal\\content_translation\\Controller\\ContentTranslationController::edit', 'language' => NULL, '_title' => 'Edit', 'entity_type_id' => $entity_type_id), array('_access_content_translation_manage' => 'update'), array('parameters' => array('language' => array('type' => 'language'), $entity_type_id => array('type' => 'entity:' . $entity_type_id)), '_admin_route' => $is_admin));
         $collection->add("entity.{$entity_type_id}.content_translation_edit", $route);
         $route = new Route($path . '/delete/{language}', array('_entity_form' => $entity_type_id . '.content_translation_deletion', 'language' => NULL, '_title' => 'Delete', 'entity_type_id' => $entity_type_id), array('_access_content_translation_manage' => 'delete'), array('parameters' => array('language' => array('type' => 'language'), $entity_type_id => array('type' => 'entity:' . $entity_type_id)), '_admin_route' => $is_admin));
         $collection->add("entity.{$entity_type_id}.content_translation_delete", $route);
     }
 }
 /**
  * {@inheritdoc}
  */
 public function getDerivativeDefinitions($base_plugin_definition)
 {
     // Create contextual links for translatable entity types.
     foreach ($this->contentTranslationManager->getSupportedEntityTypes() as $entity_type_id => $entity_type) {
         $this->derivatives[$entity_type_id]['title'] = t('Translate');
         $this->derivatives[$entity_type_id]['route_name'] = "entity.{$entity_type_id}.content_translation_overview";
         $this->derivatives[$entity_type_id]['group'] = $entity_type_id;
     }
     return parent::getDerivativeDefinitions($base_plugin_definition);
 }
 /**
  * {@inheritdoc}
  */
 public function getDerivativeDefinitions($base_plugin_definition)
 {
     // Create tabs for all possible entity types.
     foreach ($this->contentTranslationManager->getSupportedEntityTypes() as $entity_type_id => $entity_type) {
         // Find the route name for the translation overview.
         $translation_route_name = $entity_type->getLinkTemplate('drupal:content-translation-overview');
         $this->derivatives[$translation_route_name] = array('entity_type' => $entity_type_id, 'title' => 'Translate', 'route_name' => $translation_route_name, 'base_route' => $entity_type->getLinkTemplate('canonical')) + $base_plugin_definition;
     }
     return parent::getDerivativeDefinitions($base_plugin_definition);
 }
 /**
  * {@inheritdoc}
  */
 public function getDerivativeDefinitions($base_plugin_definition)
 {
     // Create tabs for all possible entity types.
     foreach ($this->contentTranslationManager->getSupportedEntityTypes() as $entity_type_id => $entity_type) {
         // Find the route name for the translation overview.
         $translation_route_name = "entity.{$entity_type_id}.content_translation_overview";
         $base_route_name = "entity.{$entity_type_id}.canonical";
         $this->derivatives[$translation_route_name] = array('entity_type' => $entity_type_id, 'title' => $this->t('Translate'), 'route_name' => $translation_route_name, 'base_route' => $base_route_name) + $base_plugin_definition;
     }
     return parent::getDerivativeDefinitions($base_plugin_definition);
 }
 /**
  * {@inheritdoc}
  */
 protected function alterRoutes(RouteCollection $collection)
 {
     foreach ($this->contentTranslationManager->getSupportedEntityTypes() as $entity_type_id => $entity_type) {
         // Try to get the route from the current collection.
         if (!($entity_route = $collection->get($entity_type->getLinkTemplate('canonical')))) {
             continue;
         }
         $path = $entity_route->getPath() . '/translations';
         // Inherit admin route status from edit route, if exists.
         $is_admin = FALSE;
         if ($edit_route = $collection->get($entity_type->getLinkTemplate('edit-form'))) {
             $is_admin = (bool) $edit_route->getOption('_admin_route');
         }
         $route = new Route($path, array('_content' => '\\Drupal\\content_translation\\Controller\\ContentTranslationController::overview', '_entity_type_id' => $entity_type_id), array('_access_content_translation_overview' => $entity_type_id, '_permission' => 'translate any entity'), array('_access_mode' => 'ANY', 'parameters' => array('entity' => array('type' => 'entity:' . $entity_type_id), $entity_type_id => array('type' => 'entity:' . $entity_type_id)), '_admin_route' => $is_admin));
         $collection->add($entity_type->getLinkTemplate('drupal:content-translation-overview'), $route);
         $route = new Route($path . '/add/{source}/{target}', array('_content' => '\\Drupal\\content_translation\\Controller\\ContentTranslationController::add', 'source' => NULL, 'target' => NULL, '_title' => 'Add', '_entity_type_id' => $entity_type_id), array('_permission' => 'translate any entity', '_access_content_translation_manage' => 'create'), array('_access_mode' => 'ANY', 'parameters' => array('entity' => array('type' => 'entity:' . $entity_type_id), $entity_type_id => array('type' => 'entity:' . $entity_type_id)), '_admin_route' => $is_admin));
         $collection->add("content_translation.translation_add_{$entity_type_id}", $route);
         $route = new Route($path . '/edit/{language}', array('_content' => '\\Drupal\\content_translation\\Controller\\ContentTranslationController::edit', 'language' => NULL, '_title' => 'Edit', '_entity_type_id' => $entity_type_id), array('_permission' => 'translate any entity', '_access_content_translation_manage' => 'update'), array('_access_mode' => 'ANY', 'parameters' => array('entity' => array('type' => 'entity:' . $entity_type_id), $entity_type_id => array('type' => 'entity:' . $entity_type_id)), '_admin_route' => $is_admin));
         $collection->add("content_translation.translation_edit_{$entity_type_id}", $route);
         $route = new Route($path . '/delete/{language}', array('_form' => '\\Drupal\\content_translation\\Form\\ContentTranslationDeleteForm', 'language' => NULL, '_title' => 'Delete', '_entity_type_id' => $entity_type_id), array('_permission' => 'translate any entity', '_access_content_translation_manage' => 'delete'), array('parameters' => array('entity' => array('type' => 'entity:' . $entity_type_id), $entity_type_id => array('type' => 'entity:' . $entity_type_id)), '_access_mode' => 'ANY', '_admin_route' => $is_admin));
         $collection->add("content_translation.delete_{$entity_type_id}", $route);
     }
 }