You are here

public function ConfigurableLanguageManager::getLanguageSwitchLinks in Drupal 9

Same name and namespace in other branches
  1. 8 core/modules/language/src/ConfigurableLanguageManager.php \Drupal\language\ConfigurableLanguageManager::getLanguageSwitchLinks()

Returns the language switch links for the given language type.

Parameters

string $type: The language type.

\Drupal\Core\Url $url: The URL the switch links will be relative to.

Return value

array A keyed array of links ready to be themed.

Overrides LanguageManager::getLanguageSwitchLinks

File

core/modules/language/src/ConfigurableLanguageManager.php, line 405

Class

ConfigurableLanguageManager
Overrides default LanguageManager to provide configured languages.

Namespace

Drupal\language

Code

public function getLanguageSwitchLinks($type, Url $url) {
  $links = FALSE;
  if ($this->negotiator) {
    foreach ($this->negotiator
      ->getNegotiationMethods($type) as $method_id => $method) {
      $reflector = new \ReflectionClass($method['class']);
      if ($reflector
        ->implementsInterface('\\Drupal\\language\\LanguageSwitcherInterface')) {
        $result = $this->negotiator
          ->getNegotiationMethodInstance($method_id)
          ->getLanguageSwitchLinks($this->requestStack
          ->getCurrentRequest(), $type, $url);
        if (!empty($result)) {

          // Allow modules to provide translations for specific links.
          $this->moduleHandler
            ->alter('language_switch_links', $result, $type, $url);
          $links = (object) [
            'links' => $result,
            'method_id' => $method_id,
          ];
          break;
        }
      }
    }
  }
  return $links;
}