1document.addEventListener('DOMContentLoaded', function () { 2 const languageNavbar = document.getElementById('language-navbar'); 3 const navHome = document.getElementById('nav-home'); 4 const navLibrary = document.getElementById('nav-library'); 5 const navAbout = document.getElementById('nav-about'); 6 const navContact = document.getElementById('nav-contact'); 7 const navHelp = document.getElementById('nav-help'); 8 const navContribute = document.getElementById('nav-contribute'); 9 10 const footerHome = document.getElementById('footer-home'); 11 const footerLibrary = document.getElementById('footer-library'); 12 const footerAbout = document.getElementById('footer-about'); 13 const footerContact = document.getElementById('footer-contact'); 14 const footerHelp = document.getElementById('footer-help'); 15 const footerContribute = document.getElementById('footer-contribute'); 16 const footerContributeURL = document.getElementById('footer-contribute-url'); 17 const footerOpenData = document.getElementById('footer-open-data'); 18 const footerCCLicense1 = document.getElementById('cc-license-1'); 19 const footerCCLicense2 = document.getElementById('cc-license-2'); 20 21 const storedLanguage = localStorage.getItem('lacliLanguagePreference'); 22 23 if (storedLanguage) { 24 updateLanguageSelection(storedLanguage); 25 updateContentLanguage(storedLanguage); 26 } 27 28 function updateLanguageSelection(language) { 29 const languageLinks = languageNavbar.getElementsByTagName('a'); 30 const footerLanguage = document.getElementById('footer-language'); 31 const footerLanguageLinks = footerLanguage.getElementsByTagName('a'); 32 33 // Remove active class from navbar language links 34 for (let i = 0; i < languageLinks.length; i++) { 35 if (languageLinks[i].getAttribute('data-lang') === language) { 36 languageLinks[i].classList.add('lang-link-active'); 37 } else { 38 languageLinks[i].classList.remove('lang-link-active'); 39 } 40 } 41 42 // Add active class to footer language links 43 for (let i = 0; i < footerLanguageLinks.length; i++) { 44 if (footerLanguageLinks[i].getAttribute('data-lang') === language) { 45 footerLanguageLinks[i].classList.add('lang-link-active'); 46 } else { 47 footerLanguageLinks[i].classList.remove('lang-link-active'); 48 } 49 } 50 } 51 52 function updateContentLanguage(language) { 53 const translations = { 54 en: { 55 home: 'Impact', 56 library: 'Library', 57 about: 'About', 58 contact: 'Contact', 59 help: 'Help', 60 contribute: 'Contribute', 61 navContributeURL: 'https://forms.gle/XC7UqyLMGShZVXb5A', 62 footerContributeURL: 'https://forms.gle/XC7UqyLMGShZVXb5A', 63 openData: 'Open Data', 64 ccLicense1: 'This work is licensed under a',
65 ccLicense2: 'Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License', 66 ccLicenseURL: 'https://creativecommons.org/licenses/by-nc-sa/4.0/deed.en', 67 }, 68 es: { 69 home: 'Impacto', 70 library: 'Biblioteca', 71 about: 'Acerca de', 72 contact: 'Contacto', 73 help: 'Ayuda', 74 contribute: 'Contribuya', 75 navContributeURL: 'https://forms.gle/XC7UqyLMGShZVXb5A', 76 footerContributeURL: 'https://forms.gle/XC7UqyLMGShZVXb5A', 77 openData: 'Datos abiertos', 78 ccLicense1: 'Esta obra está bajo una', 79 ccLicense2: 'Licencia Creative Commons Reconocimiento-NoComercial-CompartirIgual 4.0 Internacional', 80 ccLicenseURL: 'https://creativecommons.org/licenses/by-nc-sa/4.0/deed.es', 81 }, 82 pt: { 83 home: 'Relevância', 84 library: 'Biblioteca', 85 about: 'Sobre', 86 contact: 'Contacto', 87 help: 'Ajuda', 88 contribute: 'Contribua', 89 navContributeURL: 'https://forms.gle/XC7UqyLMGShZVXb5A', 90 footerContributeURL: 'https://forms.gle/XC7UqyLMGShZVXb5A', 91 openData: 'Dados abertos', 92 ccLicense1: 'Este trabalho está sob um', 93 ccLicense2: 'Licencia Creative Commons Atribuição-NãoComercial-CompartilhaIgual 4.0 Internacional', 94 ccLicenseURL: 'https://creativecommons.org/licenses/by-nc-sa/4.0/deed.pt_BR', 95 }, 96 }; 97 98 navHome.textContent = translations[language].home; 99 navLibrary.textContent = translations[language].library; 100 navAbout.textContent = translations[language].about; 101 navContact.textContent = translations[language].contact; 102 navHelp.textContent = translations[language].help; 103 navContribute.textContent = translations[language].contribute; 104 navContribute.setAttribute('href', translations[language].navContributeURL); 105 106 footerHome.textContent = translations[language].home; 107 footerLibrary.textContent = translations[language].library; 108 footerAbout.textContent = translations[language].about; 109 footerContact.textContent = translations[language].contact; 110 footerHelp.textContent = translations[language].help; 111 footerContribute.textContent = translations[language].contribute; 112 footerContributeURL.setAttribute('href', translations[language].footerContributeURL); 113 footerOpenData.textContent = translations[language].openData; 114 footerCCLicense1.textContent = translations[language].ccLicense1; 115 footerCCLicense2.textContent = translations[language].ccLicense2; 116 footerCCLicense2.setAttribute('href', translations[language].ccLicenseURL); 117 } 118 119 languageNavbar.addEventListener('click', function (event) { 120 event.preventDefault(); 121 const selectedLanguage = event.target.getAttribute('data-lang'); 122 localStorage.setItem('lacliLanguagePreference', selectedLanguage); 123 updateLanguageSelection(selectedLanguage); 124 updateContentLanguage(selectedLanguage); 125 }); 126 127 // Add event listener to footer language list 128 const footerLanguage = document.getElementById('footer-language'); 129 footerLanguage.addEventListener('click', function (event) { 130 event.preventDefault(); 131 const selectedLanguage = event.target.getAttribute('data-lang'); 132 if (selectedLanguage) { // Check if a language is selected 133 localStorage.setItem('lacliLanguagePreference', selectedLanguage); 134 updateLanguageSelection(selectedLanguage); 135 updateContentLanguage(selectedLanguage); 136 } 137 }); 138 139});
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.