Files
fiveq-website-2026/massiveedit/lang.js
T
2026-08-24 15:37:08 +08:00

84 lines
2.4 KiB
JavaScript

(function () {
var key = "massiveedit_lang";
var supported = {
"index.html": true,
"download.html": true,
"changelog.html": true,
"privacy.html": true,
};
var path = window.location.pathname;
var fileMatch = path.match(/\/([^\/?#]+)$/);
if (!fileMatch) return;
var file = fileMatch[1];
if (!supported[file]) return;
var isEn = /\/en\/[^\/?#]+$/.test(path);
var currentLang = isEn ? "en" : "zh";
function toEn(p) {
if (/\/en\/[^\/?#]+$/.test(p)) return p;
return p.replace(/\/([^\/?#]+)$/, "/en/$1");
}
function toZh(p) {
if (!/\/en\/[^\/?#]+$/.test(p)) return p;
return p.replace(/\/en\/([^\/?#]+)$/, "/$1");
}
function targetPath(lang) {
return lang === "en" ? toEn(path) : toZh(path);
}
var params = new URLSearchParams(window.location.search);
var queryLang = params.get("lang");
if (queryLang === "zh" || queryLang === "en") {
try {
localStorage.setItem(key, queryLang);
} catch (e) {}
}
var savedLang = null;
try {
savedLang = localStorage.getItem(key);
} catch (e) {}
var browserLang = (navigator.language || "").toLowerCase().indexOf("zh") === 0 ? "zh" : "en";
var hasExplicit = queryLang === "zh" || queryLang === "en" || savedLang === "zh" || savedLang === "en";
if (hasExplicit) {
var desiredLang = queryLang === "zh" || queryLang === "en" ? queryLang : savedLang;
if (desiredLang !== currentLang) {
var explicitDest = targetPath(desiredLang);
if (explicitDest && explicitDest !== path) {
window.location.replace(explicitDest + window.location.hash);
return;
}
}
} else {
// First visit: default to English only when browser language is non-Chinese.
if (browserLang === "en" && currentLang === "zh") {
var autoDest = targetPath("en");
if (autoDest && autoDest !== path) {
window.location.replace(autoDest + window.location.hash);
return;
}
}
}
document.addEventListener("DOMContentLoaded", function () {
var links = document.querySelectorAll("[data-lang-switch]");
links.forEach(function (link) {
link.addEventListener("click", function () {
var lang = link.getAttribute("data-lang-switch");
if (lang === "zh" || lang === "en") {
try {
localStorage.setItem(key, lang);
} catch (e) {}
}
});
});
});
})();