|
| 1 | +window.addEventListener("DOMContentLoaded", function() { |
| 2 | + var BASE_URL = location.protocol + "//" + location.hostname + ":" + location.port |
| 3 | + var CURRENT_LANGUAGE = document.documentElement.lang; |
| 4 | + var PATHNAME = location.pathname.replace('/' + CURRENT_LANGUAGE + '/', '') |
| 5 | + var languages = JSON.parse(document.getElementById("languages").getAttribute('data-lang').replace(/'/g, '"')); |
| 6 | + const language_names = { |
| 7 | + 'en': 'English', |
| 8 | + 'es': 'Español', |
| 9 | + 'fr': 'Français', |
| 10 | + 'pt': 'Português' |
| 11 | + } |
| 12 | + |
| 13 | + // Create dropdown menu |
| 14 | + function makeDropdown(options) { |
| 15 | + var dropdown = document.createElement("li"); |
| 16 | + dropdown.classList.add("nav-item"); |
| 17 | + dropdown.classList.add("dropdown"); |
| 18 | + |
| 19 | + var link = document.createElement("a"); |
| 20 | + link.classList.add("nav-link"); |
| 21 | + link.classList.add("dropdown-toggle"); |
| 22 | + link.setAttribute("data-bs-toggle", "dropdown"); |
| 23 | + link.setAttribute("href", "#"); |
| 24 | + link.setAttribute("role", "button"); |
| 25 | + link.setAttribute("aria-haspopup", "true"); |
| 26 | + link.setAttribute("aria-expanded", "false"); |
| 27 | + link.textContent = language_names[CURRENT_LANGUAGE]; |
| 28 | + |
| 29 | + var dropdownMenu = document.createElement("div"); |
| 30 | + dropdownMenu.classList.add("dropdown-menu"); |
| 31 | + |
| 32 | + options.forEach(function(i) { |
| 33 | + var dropdownItem = document.createElement("a"); |
| 34 | + dropdownItem.classList.add("dropdown-item"); |
| 35 | + dropdownItem.textContent = language_names[i] || i.toUpperCase(); |
| 36 | + dropdownItem.setAttribute("href", "#"); |
| 37 | + dropdownItem.addEventListener("click", function() { |
| 38 | + if (i == 'en') { |
| 39 | + URL_LANGUAGE = ''; |
| 40 | + } else { |
| 41 | + URL_LANGUAGE = '/' + i; |
| 42 | + } |
| 43 | + var PATHNAME = location.pathname.replace('/' + CURRENT_LANGUAGE + '/', '/') |
| 44 | + var newUrl = BASE_URL + URL_LANGUAGE + PATHNAME |
| 45 | + window.location.href = newUrl; |
| 46 | + }); |
| 47 | + dropdownMenu.appendChild(dropdownItem); |
| 48 | + }); |
| 49 | + |
| 50 | + dropdown.appendChild(link); |
| 51 | + dropdown.appendChild(dropdownMenu); |
| 52 | + return dropdown; |
| 53 | + } |
| 54 | + |
| 55 | + var container = document.getElementById("language-switcher-container"); |
| 56 | + if (container) { |
| 57 | + var dropdown = makeDropdown(languages); |
| 58 | + container.appendChild(dropdown); |
| 59 | + } |
| 60 | +}); |
0 commit comments