public function LanguageNegotiationSession::getLanguageSwitchLinks in Drupal 10
Same name and namespace in other branches
- 8 core/modules/language/src/Plugin/LanguageNegotiation/LanguageNegotiationSession.php \Drupal\language\Plugin\LanguageNegotiation\LanguageNegotiationSession::getLanguageSwitchLinks()
- 9 core/modules/language/src/Plugin/LanguageNegotiation/LanguageNegotiationSession.php \Drupal\language\Plugin\LanguageNegotiation\LanguageNegotiationSession::getLanguageSwitchLinks()
File
- core/
modules/ language/ src/ Plugin/ LanguageNegotiation/ LanguageNegotiationSession.php, line 126
Class
- LanguageNegotiationSession
- Identify language from a request/session parameter.
Namespace
Drupal\language\Plugin\LanguageNegotiationCode
public function getLanguageSwitchLinks(Request $request, $type, Url $url) {
$links = [];
$config = $this->config
->get('language.negotiation')
->get('session');
$param = $config['parameter'];
$language_query = $_SESSION[$param] ?? $this->languageManager
->getCurrentLanguage($type)
->getId();
$query = $request->query
->all();
foreach ($this->languageManager
->getNativeLanguages() as $language) {
$langcode = $language
->getId();
$links[$langcode] = [
// We need to clone the $url object to avoid using the same one for all
// links. When the links are rendered, options are set on the $url
// object, so if we use the same one, they would be set for all links.
'url' => clone $url,
'title' => $language
->getName(),
'attributes' => [
'class' => [
'language-link',
],
],
'query' => $query,
];
if ($language_query != $langcode) {
$links[$langcode]['query'][$param] = $langcode;
}
else {
$links[$langcode]['attributes']['class'][] = 'session-active';
}
}
return $links;
}