Code development platform for open source projects from the European Union institutions

Skip to content
Snippets Groups Projects
Commit 4633bcaf authored by gilmarfdelima's avatar gilmarfdelima Committed by Gilmar Lima
Browse files

OEL-1167: Preprocess variables for the language switcher template.

parent 54fb4b1e
No related branches found
No related tags found
2 merge requests!102Merge 1.x into EPIC-OEL-1255-migrate-paragraphs.,!94OEL-1167: Theme the content language switcher
<?php
/**
* @file
* OE Whitelabel theme Multilingual.
*/
declare(strict_types = 1);
use Drupal\oe_whitelabel_helper\EuropeanUnionLanguages;
/**
* Implements hook_preprocess_links().
*/
function oe_whitelabel_multilingual_preprocess_links__oe_multilingual_content_language_block(array &$variables): void {
// Generate the label for the unavailable language.
$currentLanguage = \Drupal::languageManager()->getCurrentLanguage();
$current_language_id = $currentLanguage->getId();
$variables['unavailable_language'] = $currentLanguage->getName();
foreach ($variables['links'] as $language_code => $link) {
// Handle both cases (block, page) when the link array structure differ.
if (isset($link['link'])) {
/** @var \Drupal\Core\Url $url */
$url = $link['link']['#url'];
$href = $url
->setOptions($link['link']['#options'])
->setAbsolute(TRUE)
->toString();
$label = $link['link']['#title'];
}
else {
$href = $link['#url']->toString();
$label = $link['#title'];
}
$language_internal = $language_code;
if (EuropeanUnionLanguages::hasLanguage($language_code)) {
$language_internal = EuropeanUnionLanguages::getInternalLanguageCode($language_code);
}
$language = [
'path' => $href,
'label' => $label,
// Pass original language code which can be useful for some other
// preprocessors.
'hreflang' => $language_code,
'lang' => $language_internal,
];
if (!empty($current_language_id) && $language_code === $current_language_id) {
$variables['current_language'] = [
'path' => $href,
'hreflang' => $language_code,
'lang' => $language_internal,
'label' => $link['link']['#title'],
];
$language['active'] = TRUE;
}
$variables['languages'][] = $language;
}
}
/**
* Implements hook__preprocess_links__language_block().
*/
function oe_whitelabel_multilingual_preprocess_links__language_block(&$variables) {
$currentLanguage = \Drupal::languageManager()->getCurrentLanguage();
$current_language_id = $currentLanguage->getId();
$language_config_storage = \Drupal::entityTypeManager()->getStorage('configurable_language');
$eu_links = [];
$non_eu_links = [];
foreach ($variables['links'] as $language_code => $link) {
/** @var \Drupal\Core\Url $url */
$url = $link['link']['#url'];
$href = $url
->setOptions($link['link']['#options'])
->setAbsolute(TRUE)
->toString();
$label = $link['link']['#title'];
$link = [
'href' => $href,
'name' => $label,
'id' => 'link_' . $language_code,
'hreflang' => $language_code,
];
if (!empty($current_language_id) && $language_code === $current_language_id) {
$variables['language']['link'] = $link;
$variables['language']['link']['target'] = 'languageModal';
$link['active'] = TRUE;
}
$language_config = $language_config_storage->load($language_code);
$category = $language_config->getThirdPartySetting('oe_multilingual', 'category');
if ($category === 'eu') {
$eu_links[$language_code] = $link;
}
else {
$non_eu_links[$language_code] = $link;
}
}
$variables['language']['modal'] = [
'id' => 'languageModal',
'size' => 'fullscreen',
'header' => [
'title' => t('Select your language'),
'label' => t('Close'),
],
'eu_links' => $eu_links,
'non_eu_links' => $non_eu_links,
'footer' => [
'label' => t('Close'),
],
];
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment