|
15 | 15 | href="{{ base_url }}{{ stylesheet }}">
|
16 | 16 | {% endfor %}
|
17 | 17 | <link rel=" stylesheet" href=" https://cdn.jsdelivr.net/npm/[email protected]/font/bootstrap-icons.min.css" >
|
18 |
| - <meta id="languages" data-lang="{{ languages }}"> |
19 |
| - <script src="{{ base_url }}static/js/language_switcher.js"></script> |
| 18 | + <script type="text/javascript"> |
| 19 | + window.addEventListener("DOMContentLoaded", function() { |
| 20 | + var absBaseUrl = document.baseURI; |
| 21 | + var baseUrl = location.protocol + "//" + location.hostname |
| 22 | + if (location.port) { |
| 23 | + baseUrl = baseUrl + ":" + location.port |
| 24 | + } |
| 25 | + var currentLanguage = document.documentElement.lang; |
| 26 | + var languages = [ |
| 27 | + {% for lang, name in translations["languages"].items() -%} |
| 28 | + "{{ lang }}", |
| 29 | + {% endfor -%} |
| 30 | + ] |
| 31 | + var languageNames = { |
| 32 | + {% for lang, name in translations["languages"].items() -%} |
| 33 | + {{ lang }}: '{{ name }}', |
| 34 | + {% endfor -%} |
| 35 | + } |
| 36 | + |
| 37 | + // Handle preview URLs on github |
| 38 | + // If preview URL changes, this regex will need to be updated |
| 39 | + var re = /preview\/pandas-dev\/pandas\/(?<pr>[0-9]*)\//g; |
| 40 | + var previewUrl = ''; |
| 41 | + for (const match of absBaseUrl.matchAll(re)) { |
| 42 | + previewUrl = `/preview/pandas-dev/pandas/${match.groups.pr}`; |
| 43 | + } |
| 44 | + var pathName = location.pathname.replace(previewUrl, '') |
| 45 | + |
| 46 | + // Create dropdown menu |
| 47 | + function makeDropdown(options) { |
| 48 | + var dropdown = document.createElement("li"); |
| 49 | + dropdown.classList.add("nav-item"); |
| 50 | + dropdown.classList.add("dropdown"); |
| 51 | + |
| 52 | + var link = document.createElement("a"); |
| 53 | + link.classList.add("nav-link"); |
| 54 | + link.classList.add("dropdown-toggle"); |
| 55 | + link.setAttribute("data-bs-toggle", "dropdown"); |
| 56 | + link.setAttribute("href", "#"); |
| 57 | + link.setAttribute("role", "button"); |
| 58 | + link.setAttribute("aria-haspopup", "true"); |
| 59 | + link.setAttribute("aria-expanded", "false"); |
| 60 | + link.textContent = languageNames[currentLanguage]; |
| 61 | + |
| 62 | + var dropdownMenu = document.createElement("div"); |
| 63 | + dropdownMenu.classList.add("dropdown-menu"); |
| 64 | + |
| 65 | + options.forEach(function(i) { |
| 66 | + var dropdownItem = document.createElement("a"); |
| 67 | + dropdownItem.classList.add("dropdown-item"); |
| 68 | + dropdownItem.textContent = languageNames[i] || i.toUpperCase(); |
| 69 | + dropdownItem.setAttribute("href", "#"); |
| 70 | + dropdownItem.addEventListener("click", function() { |
| 71 | + var urlLanguage = ''; |
| 72 | + if (i !== 'en') { |
| 73 | + urlLanguage = '/' + i; |
| 74 | + } |
| 75 | + pathName = pathName.replace('/' + currentLanguage + '/', '/') |
| 76 | + var newUrl = baseUrl + previewUrl + urlLanguage + pathName |
| 77 | + window.location.href = newUrl; |
| 78 | + }); |
| 79 | + dropdownMenu.appendChild(dropdownItem); |
| 80 | + }); |
| 81 | + |
| 82 | + dropdown.appendChild(link); |
| 83 | + dropdown.appendChild(dropdownMenu); |
| 84 | + return dropdown; |
| 85 | + } |
| 86 | + |
| 87 | + var container = document.getElementById("language-switcher-container"); |
| 88 | + if (container) { |
| 89 | + var dropdown = makeDropdown(languages); |
| 90 | + container.appendChild(dropdown); |
| 91 | + } |
| 92 | + }); |
| 93 | + </script> |
20 | 94 | </head>
|
21 | 95 | <body>
|
22 | 96 | <header>
|
|
0 commit comments