diff --git a/_includes/common-js.html b/_includes/common-js.html
index 83ae12f3..69e33515 100644
--- a/_includes/common-js.html
+++ b/_includes/common-js.html
@@ -1,4 +1,4 @@
-
+
{% if content contains "tab-container" %}
diff --git a/_includes/language-alert.html b/_includes/language-alert.html
index 8e63e6ac..1c5ab2da 100644
--- a/_includes/language-alert.html
+++ b/_includes/language-alert.html
@@ -1,6 +1,7 @@
diff --git a/_sass/base.scss b/_sass/base.scss
index 99e1ebcb..5d5776f6 100644
--- a/_sass/base.scss
+++ b/_sass/base.scss
@@ -541,8 +541,8 @@ a.footnote::after {
.tab-link {
border: 1px solid $borders;
+ border-bottom-width: 0;
padding: 0.5rem 1rem;
- margin-bottom: -1px;
transition: 150ms ease;
}
.tab-link:not(:first-of-type) {
diff --git a/assets/js/language-alert.js b/assets/js/language-alert.js
index 3603ad0a..4f230b8a 100644
--- a/assets/js/language-alert.js
+++ b/assets/js/language-alert.js
@@ -1,22 +1,28 @@
---
---
+// Have liquid insert the language info
+const languages = [{% for collection in site.collections %}"{{ collection.label }}"{% unless forloop.last %}, {% endunless %}{% endfor %}];
+const rtl = [{% for lang in site.data.rtl %}"{{ lang }}"{% unless forloop.last %}, {% endunless %}{% endfor %}];
+
+let languageID = null;
+
+function updateLanguageAlert() {
+ if(languageID)
+ document.getElementById("language-alert-link").href = (languageID == "en-US" ? "" : ("/" + languageID)) + window.location.pathname.replace(/[a-z]{2}-[A-Z]{2}\//, "") + (window.location.search ?? "") + (window.location.hash ?? "");
+}
+
if(!sessionStorage.languageAlertDismissed) {
- // Have liquid insert the language info
- const languages = [{% for collection in site.collections %}"{{ collection.label }}"{% unless forloop.last %}, {% endunless %}{% endfor %}];
- const rtl = [{% for lang in site.data.rtl %}"{{ lang }}"{% unless forloop.last %}, {% endunless %}{% endfor %}];
-
// Find which language the popup should be for, if any
- let languageID = null;
// Crowdin In-Context, keep as is
- if(document.documentElement.lang == "ic-IC"){
+ if(document.documentElement.lang == "ic-IC") {
languageID = "ic-IC";
// If the current language isn't in the browser's allowed languages, show the popup for the first language that has a page
- } else if(!window.navigator.languages.find(r => document.documentElement.lang.toLowerCase().includes(r.toLowerCase()))) {
- for(let wl of window.navigator.languages) {
- let l = languages.find(r => r.substr(0, 2) == wl.substr(0, 2));
- if(l) {
- languageID = `${l.substr(0, 2)}-${l.substr(3, 3).toUpperCase()}`;
+ } else if(!window.navigator.languages.find(function(lang) { return document.documentElement.lang.toLowerCase().includes(lang.toLowerCase()); })) {
+ for(let windowLang of window.navigator.languages) {
+ let lang = languages.find(lang => lang.substr(0, 2) == windowLang.substr(0, 2));
+ if(lang) {
+ languageID = lang.substr(0, 2) + "-" + lang.substr(3, 3).toUpperCase();
break;
}
}
@@ -27,21 +33,10 @@ if(!sessionStorage.languageAlertDismissed) {
for(let language of document.getElementById("language-dropdown").children) {
if(language.children[0].dataset.languageId == languageID) {
// Unhide language alert and set text direction
- let languageAlert = document.getElementById("language-alert");
+ const languageAlert = document.getElementById("language-alert");
languageAlert.classList.remove("d-none");
languageAlert.dir = rtl.includes(languageID) ? "rtl" : "ltr";
- // Create link to make in the preferred language
- let a = document.createElement("a");
- a.href = `${languageID == "en-US" ? "" : ("/" + languageID)}${window.location.pathname.replace(/[a-z][a-z]-[A-Z][A-Z]\//, "")}`;
- a.accessKey = "l";
- languageAlert.prepend(a);
-
- // Set text from language file if it exists
- import(`./i18n/${languageID}.js`).then(obj => {
- a.innerHTML = obj.default.pageIsInYourLanguage;
- }).catch(() => a.innerHTML = "This page is available in your language!");
-
// Set lang of the element so the correct forms of characters are used (mainly for Chinese characters)
languageAlert.lang = languageID;
@@ -50,8 +45,21 @@ if(!sessionStorage.languageAlertDismissed) {
if(sessionStorage)
sessionStorage.languageAlertDismissed = true;
});
+
+ const langAlertLink = document.getElementById("language-alert-link");
+
+ // Set text from language file if it exists
+ import(`./i18n/${languageID}.js`).then(function(obj) {
+ langAlertLink.innerHTML = obj.default.pageIsInYourLanguage;
+ }).catch(function() {
+ langAlertLink.innerHTML = "This page is available in your language!";
+ });
+
+ updateLanguageAlert();
break;
}
}
}
}
+
+window.addEventListener("hashchange", updateLanguageAlert);
diff --git a/assets/js/tabs.js b/assets/js/tabs.js
index 78fd2ded..82383b02 100644
--- a/assets/js/tabs.js
+++ b/assets/js/tabs.js
@@ -14,8 +14,10 @@ function setTab(tab) {
url = url.replace(/(?=#|$)/, "?tab=" + tab);
}
- if(url != window.location.href) // Don't update if not changed
+ if(url != window.location.href) { // Don't update if not changed
history.pushState({}, "", encodeURI(url));
+ if(typeof updateLanguageAlert != "undefined") updateLanguageAlert(); // Language alert requires modern JS
+ }
}
function findTab(tabGroup, tabName) {