languageManager = $language_manager; $this->pathMatcher = $path_matcher; } /** * {@inheritdoc} */ public static function create(ContainerInterface $container, array $configuration, $plugin_id, $plugin_definition) { return new static( $configuration, $plugin_id, $plugin_definition, $container->get('language_manager'), $container->get('path.matcher') ); } /** * {@inheritdoc} */ protected function blockAccess(AccountInterface $account) { $access = $this->languageManager->isMultilingual() ? AccessResult::allowed() : AccessResult::forbidden(); return $access->addCacheTags(['config:configurable_language_list']); } /** * {@inheritdoc} */ public function build() { $build = []; $route_name = $this->pathMatcher->isFrontPage() ? '' : ''; $type = $this->getDerivativeId(); $links = $this->languageManager->getLanguageSwitchLinks($type, Url::fromRoute($route_name)); if (isset($links->links)) { $build = [ '#theme' => 'links__language_block', '#links' => $links->links, '#attributes' => [ 'class' => [ "language-switcher-{$links->method_id}", ], ], '#set_active_class' => TRUE, ]; } return $build; } /** * {@inheritdoc} * * @todo Make cacheable in https://www.drupal.org/node/2232375. */ public function getCacheMaxAge() { return 0; } }