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