Skip to content
Snippets Groups Projects
Commit 6bd5ce35 authored by Chris Moisiadis's avatar Chris Moisiadis
Browse files

Issue #3209090: Handling alt languages in browser mode configuration

parent 06b1d5ea
No related branches found
No related tags found
1 merge request!4Resolve #3209090 "Translation for all languages"
......@@ -105,7 +105,18 @@ class CCC9Config extends AbstractCCCConfig {
$this->loadTextObject();
$this->loadBrandingObject();
$this->config['locales'] = $this->loadAltLanguage();
// Get locale mode from configuration.
$mode = $this->cccConfig->get('civiccookiecontrol_locale_mode');
if ($mode == 'drupal') {
// Get current site language.
$currentLang = \Drupal::languageManager()->getCurrentLanguage()->getId();
$this->config['locales'] = $this->loadAltLanguages($currentLang);
}
else {
$this->config['locales'] = $this->loadAltLanguages();
}
}
/**
......@@ -225,135 +236,159 @@ class CCC9Config extends AbstractCCCConfig {
}
/**
* Function to load alternative language.
* Function to load alternative languages.
*
* When $lang is not provided ('browser' mode), the returned array will have
* all alternative languages.
* When $lang is provided ('drupal' mode), the returned array will have only
* the reference alt language from alter language configuration. If not found,
* the returned array will be empty, so the default language will be used.
*
* @param null|string $lang
* Language code.
*
* @return array
* The language(s) in array.
*
* @throws \Drupal\Component\Plugin\Exception\InvalidPluginDefinitionException
* @throws \Drupal\Component\Plugin\Exception\PluginNotFoundException
*/
public function loadAltLanguage() {
public function loadAltLanguages($lang = NULL) {
$altLanguages = $this->entityTypeManager
->getStorage('altlanguage')
->loadMultiple();
$locales = [];
// Get current site language.
$currentLang = \Drupal::languageManager()->getCurrentLanguage()->getId();
$languageMapping = [];
foreach ($altLanguages as $key => $value) {
$languageMapping[$key] = $value->getAltLanguageIsoCode();
}
if (!in_array($currentLang, $languageMapping)) {
// For locale mode 'drupal', when reference alt language not found, return
// empty array.
if ($lang && !in_array($lang, $languageMapping)) {
return $locales;
}
$langCCId = array_search($currentLang, $languageMapping);
$altLang = $altLanguages[$langCCId];
$locale['locale'] = strtolower(str_replace('-', '_', $altLang->getAltLanguageIsoCode()));
$locale['mode'] = $altLang->getAltLanguageMode();
$locale['location'] = $altLang->getAltLanguageLocation();
$locale['text']['closeLabel'] = $altLang->getAltLanguageCloseLabel();
$locale['text']['accessibilityAlert'] = $altLang->getAltLanguageAccessibilityAlert();
$locale['optionalCookies'] = $altLang->getAltLanguageOptionalCookies();
$locale['text']['title'] = $altLang->getAltLanguageTitle();
$locale['text']['intro'] = $altLang->getAltLanguageIntro();
$locale['text']['acceptRecommended'] = $altLang->getAltLanguageAcceptRecommended();
$locale['text']['acceptSettings'] = $altLang->getAltLanguageAcceptSettings();
$locale['text']['rejectSettings'] = $altLang->getAltLanguageRejectSettings();
$locale['text']['necessaryTitle'] = $altLang->getAltLanguageNecessaryTitle();
$locale['text']['necessaryDescription'] = $altLang->getAltLanguageNecessaryDescription();
$locale['text']['thirdPartyTitle'] = $altLang->getAltLanguageThirdPartyTitle();
$locale['text']['thirdPartyDescription'] = $altLang->getAltLanguageThirdPartyDescription();
$locale['text']['on'] = $altLang->getAltLanguageOn();
$locale['text']['off'] = $altLang->getAltLanguageOff();
$locale['text']['notifyTitle'] = $altLang->getAltLanguageNotifyTitle();
$locale['text']['notifyDescription'] = $altLang->getAltLanguageNotifyDescription();
$locale['text']['accept'] = $altLang->getAltLanguageAccept();
$locale['text']['reject'] = $altLang->getAltLanguageReject();
$locale['text']['settings'] = $altLang->getAltLanguageSettings();
$locale['text']['showVendors'] = $altLang->getAltLanguageShowVendors();
$locale['text']['thirdPartyCookies'] = $altLang->getAltLanguageThirdPartyCookies();
$locale['text']['readMore'] = $altLang->getAltLanguagereadMore();
$locale['statement']['description'] = $altLang->getAltLanguageStmtDescrText();
$locale['statement']['name'] = $altLang->getAltLanguageStmtNameText();
global $base_url;
if (($nid = $altLang->getAltLanguageStmtUrl()) && ($locale['mode'] != 'nothing')) {
$privacyNodeUrl = Link::createFromRoute(
$altLang->getAltLanguageStmtUrl(),
'entity.node.canonical',
['node' => $nid]
);
$locale['statement']['url'] = $base_url . $privacyNodeUrl->getUrl()
->toString();
}
$locale['statement']['updated'] = !empty($altLang->getAltLanguageStmtDate()) ?
$this->dateFormatter
->format(strtotime($altLang->getAltLanguageStmtDate()), 'custom', 'd/m/Y') : NULL;
$locale['ccpaConfig']['description'] = $altLang->getAltLanguageCcpaStmtDescrText();
$locale['ccpaConfig']['name'] = $altLang->getAltLanguageCcpaStmtNameText();
if ($nid = $altLang->getAltLanguageCcpaStmtUrl() && $locale['mode'] != 'nothing') {
$privacyNodeUrl = Link::createFromRoute(
$altLang->getAltLanguageCcpaStmtUrl(),
'entity.node.canonical',
['node' => $nid]
);
$locale['ccpaConfig']['url'] = $base_url . $privacyNodeUrl->getUrl()
->toString();
}
$locale['ccpaConfig']['updated'] = !empty($altLang->getAltLanguageCcpaStmtDate()) ?
$this->dateFormatter
->format(strtotime($altLang->getAltLanguageCcpaStmtDate()), 'custom', 'd/m/Y') : NULL;
if (($this->iabConfig->get('iabCMP') == 1)) {
$locale['text']['iabCMP']['panelTitle'] = $altLang->getAltLanguageIabPanelTitleText();
$locale['text']['iabCMP']['panelIntro1'] = $altLang->getAltLanguageIabPanelIntro1();
$locale['text']['iabCMP']['panelIntro2'] = $altLang->getAltLanguageIabPanelIntro2();
$locale['text']['iabCMP']['panelIntro3'] = $altLang->getAltLanguageIabPanelIntro3();
$locale['text']['iabCMP']['aboutIab'] = $altLang->getAltLanguageIabAboutIab();
$locale['text']['iabCMP']['iabName'] = $altLang->getAltLanguageIabName();
$locale['text']['iabCMP']['iabLink'] = $altLang->getAltLanguageIabLink();
$locale['text']['iabCMP']['purposes'] = $altLang->getAltLanguageIabPurposes();
$locale['text']['iabCMP']['specialPurposes'] = $altLang->getAltLanguageIabSpecialPurposes();
$locale['text']['iabCMP']['features'] = $altLang->getAltLanguageIabFeatures();
$locale['text']['iabCMP']['specialFeatures'] = $altLang->getAltLanguageIabSpecialFeatures();
$locale['text']['iabCMP']['dataUse'] = $altLang->getAltLanguageIabDataUse();
$locale['text']['iabCMP']['vendors'] = $altLang->getAltLanguageIabVendors();
$locale['text']['on'] = $altLang->getAltLanguageIabOn();
$locale['text']['off'] = $altLang->getAltLanguageIabOff();
$locale['text']['iabCMP']['purposeLegitimateInterest'] =
$altLang->getAltLanguageIabPurposeLegitimateInterest();
$locale['text']['iabCMP']['vendorLegitimateInterest'] =
$altLang->getAltLanguageIabVendorLegitimateInterest();
$locale['text']['iabCMP']['objectPurposeLegitimateInterest'] =
$altLang->getAltLanguageIabObjectPurposeLegitimateInterest();
$locale['text']['iabCMP']['objectVendorLegitimateInterest'] =
$altLang->getAltLanguageIabObjectVendorLegitimateInterest();
$locale['text']['iabCMP']['relyConsent'] = $altLang->getAltLanguageIabRelyConsent();
$locale['text']['iabCMP']['relyLegitimateInterest'] =
$altLang->getAltLanguageIabRelyLegitimateInterest();
$locale['text']['iabCMP']['savePreferences'] = $altLang->getAltLanguageIabSavePreferences();
$locale['text']['iabCMP']['acceptAll'] = $altLang->getAltLanguageIabAcceptAll();
$locale['text']['iabCMP']['rejectAll'] = $altLang->getAltLanguageIabRejectAll();
$locale['text']['iabCMP']['legalDescription'] = $altLang->getAltLanguageIabLegalDescription();
$locale['text']['iabCMP']['cookieMaxAge'] = $altLang->getAltLanguageIabCookieMaxAge();
$locale['text']['iabCMP']['usesNonCookieAccessTrue'] =
$altLang->getAltLanguageIabUsesNonCookieAccessTrue();
$locale['text']['iabCMP']['usesNonCookieAccessFalse'] =
$altLang->getAltLanguageIabUsesNonCookieAccessFalse();
$locale['text']['iabCMP']['storageDisclosures'] = $altLang->getAltLanguageIabStorageDisclosures();
$locale['text']['iabCMP']['disclosureDetailsColumn'] =
$altLang->getAltLanguageIabDisclosureDetailsColumn();
$locale['text']['iabCMP']['disclosurePurposesColumn'] =
$altLang->getAltLanguageIabDisclosurePurposesColumn();
$locale['text']['iabCMP']['seconds'] = $altLang->getAltLanguageIabSeconds();
$locale['text']['iabCMP']['minutes'] = $altLang->getAltLanguageIabMinutes();
$locale['text']['iabCMP']['hours'] = $altLang->getAltLanguageIabHours();
$locale['text']['iabCMP']['days'] = $altLang->getAltLanguageIabDays();
// For locale mode 'drupal', when reference alt language exists, use only
// this language for the loop.
$altLanguage = [];
if ($lang && in_array($lang, $languageMapping)) {
$langCCId = array_search($lang, $languageMapping);
$altLanguage[] = $altLanguages[$langCCId];
}
$altLanguagesArray = $lang ? $altLanguage : $altLanguages;
foreach ($altLanguagesArray as $altLang) {
$locale['locale'] = strtolower(str_replace('-', '_', $altLang->getAltLanguageIsoCode()));
$locale['mode'] = $altLang->getAltLanguageMode();
$locale['location'] = $altLang->getAltLanguageLocation();
$locale['text']['closeLabel'] = $altLang->getAltLanguageCloseLabel();
$locale['text']['accessibilityAlert'] = $altLang->getAltLanguageAccessibilityAlert();
$locale['optionalCookies'] = $altLang->getAltLanguageOptionalCookies();
$locale['text']['title'] = $altLang->getAltLanguageTitle();
$locale['text']['intro'] = $altLang->getAltLanguageIntro();
$locale['text']['acceptRecommended'] = $altLang->getAltLanguageAcceptRecommended();
$locale['text']['acceptSettings'] = $altLang->getAltLanguageAcceptSettings();
$locale['text']['rejectSettings'] = $altLang->getAltLanguageRejectSettings();
$locale['text']['necessaryTitle'] = $altLang->getAltLanguageNecessaryTitle();
$locale['text']['necessaryDescription'] = $altLang->getAltLanguageNecessaryDescription();
$locale['text']['thirdPartyTitle'] = $altLang->getAltLanguageThirdPartyTitle();
$locale['text']['thirdPartyDescription'] = $altLang->getAltLanguageThirdPartyDescription();
$locale['text']['on'] = $altLang->getAltLanguageOn();
$locale['text']['off'] = $altLang->getAltLanguageOff();
$locale['text']['notifyTitle'] = $altLang->getAltLanguageNotifyTitle();
$locale['text']['notifyDescription'] = $altLang->getAltLanguageNotifyDescription();
$locale['text']['accept'] = $altLang->getAltLanguageAccept();
$locale['text']['reject'] = $altLang->getAltLanguageReject();
$locale['text']['settings'] = $altLang->getAltLanguageSettings();
$locale['text']['showVendors'] = $altLang->getAltLanguageShowVendors();
$locale['text']['thirdPartyCookies'] = $altLang->getAltLanguageThirdPartyCookies();
$locale['text']['readMore'] = $altLang->getAltLanguagereadMore();
$locale['statement']['description'] = $altLang->getAltLanguageStmtDescrText();
$locale['statement']['name'] = $altLang->getAltLanguageStmtNameText();
global $base_url;
if (($nid = $altLang->getAltLanguageStmtUrl()) && ($locale['mode'] != 'nothing')) {
$privacyNodeUrl = Link::createFromRoute(
$altLang->getAltLanguageStmtUrl(),
'entity.node.canonical',
['node' => $nid]
);
$locale['statement']['url'] = $base_url . $privacyNodeUrl->getUrl()
->toString();
}
$locale['statement']['updated'] = !empty($altLang->getAltLanguageStmtDate()) ?
$this->dateFormatter
->format(strtotime($altLang->getAltLanguageStmtDate()), 'custom', 'd/m/Y') : NULL;
$locale['ccpaConfig']['description'] = $altLang->getAltLanguageCcpaStmtDescrText();
$locale['ccpaConfig']['name'] = $altLang->getAltLanguageCcpaStmtNameText();
if ($nid = $altLang->getAltLanguageCcpaStmtUrl() && $locale['mode'] != 'nothing') {
$privacyNodeUrl = Link::createFromRoute(
$altLang->getAltLanguageCcpaStmtUrl(),
'entity.node.canonical',
['node' => $nid]
);
$locale['ccpaConfig']['url'] = $base_url . $privacyNodeUrl->getUrl()
->toString();
}
$locale['ccpaConfig']['updated'] = !empty($altLang->getAltLanguageCcpaStmtDate()) ?
$this->dateFormatter
->format(strtotime($altLang->getAltLanguageCcpaStmtDate()), 'custom', 'd/m/Y') : NULL;
if (($this->iabConfig->get('iabCMP') == 1)) {
$locale['text']['iabCMP']['panelTitle'] = $altLang->getAltLanguageIabPanelTitleText();
$locale['text']['iabCMP']['panelIntro1'] = $altLang->getAltLanguageIabPanelIntro1();
$locale['text']['iabCMP']['panelIntro2'] = $altLang->getAltLanguageIabPanelIntro2();
$locale['text']['iabCMP']['panelIntro3'] = $altLang->getAltLanguageIabPanelIntro3();
$locale['text']['iabCMP']['aboutIab'] = $altLang->getAltLanguageIabAboutIab();
$locale['text']['iabCMP']['iabName'] = $altLang->getAltLanguageIabName();
$locale['text']['iabCMP']['iabLink'] = $altLang->getAltLanguageIabLink();
$locale['text']['iabCMP']['purposes'] = $altLang->getAltLanguageIabPurposes();
$locale['text']['iabCMP']['specialPurposes'] = $altLang->getAltLanguageIabSpecialPurposes();
$locale['text']['iabCMP']['features'] = $altLang->getAltLanguageIabFeatures();
$locale['text']['iabCMP']['specialFeatures'] = $altLang->getAltLanguageIabSpecialFeatures();
$locale['text']['iabCMP']['dataUse'] = $altLang->getAltLanguageIabDataUse();
$locale['text']['iabCMP']['vendors'] = $altLang->getAltLanguageIabVendors();
$locale['text']['on'] = $altLang->getAltLanguageIabOn();
$locale['text']['off'] = $altLang->getAltLanguageIabOff();
$locale['text']['iabCMP']['purposeLegitimateInterest'] =
$altLang->getAltLanguageIabPurposeLegitimateInterest();
$locale['text']['iabCMP']['vendorLegitimateInterest'] =
$altLang->getAltLanguageIabVendorLegitimateInterest();
$locale['text']['iabCMP']['objectPurposeLegitimateInterest'] =
$altLang->getAltLanguageIabObjectPurposeLegitimateInterest();
$locale['text']['iabCMP']['objectVendorLegitimateInterest'] =
$altLang->getAltLanguageIabObjectVendorLegitimateInterest();
$locale['text']['iabCMP']['relyConsent'] = $altLang->getAltLanguageIabRelyConsent();
$locale['text']['iabCMP']['relyLegitimateInterest'] =
$altLang->getAltLanguageIabRelyLegitimateInterest();
$locale['text']['iabCMP']['savePreferences'] = $altLang->getAltLanguageIabSavePreferences();
$locale['text']['iabCMP']['acceptAll'] = $altLang->getAltLanguageIabAcceptAll();
$locale['text']['iabCMP']['rejectAll'] = $altLang->getAltLanguageIabRejectAll();
$locale['text']['iabCMP']['legalDescription'] = $altLang->getAltLanguageIabLegalDescription();
$locale['text']['iabCMP']['cookieMaxAge'] = $altLang->getAltLanguageIabCookieMaxAge();
$locale['text']['iabCMP']['usesNonCookieAccessTrue'] =
$altLang->getAltLanguageIabUsesNonCookieAccessTrue();
$locale['text']['iabCMP']['usesNonCookieAccessFalse'] =
$altLang->getAltLanguageIabUsesNonCookieAccessFalse();
$locale['text']['iabCMP']['storageDisclosures'] = $altLang->getAltLanguageIabStorageDisclosures();
$locale['text']['iabCMP']['disclosureDetailsColumn'] =
$altLang->getAltLanguageIabDisclosureDetailsColumn();
$locale['text']['iabCMP']['disclosurePurposesColumn'] =
$altLang->getAltLanguageIabDisclosurePurposesColumn();
$locale['text']['iabCMP']['seconds'] = $altLang->getAltLanguageIabSeconds();
$locale['text']['iabCMP']['minutes'] = $altLang->getAltLanguageIabMinutes();
$locale['text']['iabCMP']['hours'] = $altLang->getAltLanguageIabHours();
$locale['text']['iabCMP']['days'] = $altLang->getAltLanguageIabDays();
}
$locales[] = $locale;
}
return $locales;
}
......
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