MediaWiki:Gadget-redirectByLanguage.js: Difference between revisions
Created page with "console.log("🧩 redirectByLanguage gadget loaded"); mw.loader.using(['mediawiki.util', 'mediawiki.language']).then(function () { var userLang = mw.config.get('wgUserLanguage'); var contentLang = mw.config.get('wgContentLanguage'); var pageName = mw.config.get('wgPageName'); console.log("🌐 Language Debug Log:"); console.log("→ User language:", userLang); console.log("→ Content language:", contentLang); console.log("→ Page name:", p..." |
(No difference)
|
Latest revision as of 13:00, 3 December 2025
console.log("🧩 redirectByLanguage gadget loaded");
mw.loader.using(['mediawiki.util', 'mediawiki.language']).then(function () {
var userLang = mw.config.get('wgUserLanguage');
var contentLang = mw.config.get('wgContentLanguage');
var pageName = mw.config.get('wgPageName');
console.log("🌐 Language Debug Log:");
console.log("→ User language:", userLang);
console.log("→ Content language:", contentLang);
console.log("→ Page name:", pageName);
// Match subpage format, e.g., Page/de
var subpageMatch = pageName.match(/^(.*)\/([a-z\-]+)$/);
var isSubpage = !!subpageMatch;
var basePage = isSubpage ? subpageMatch[1] : pageName;
var currentLang = isSubpage ? subpageMatch[2] : contentLang;
// 🧠 Only redirect if userLang ≠ current page language
if (userLang === currentLang) {
console.log("✔️ Already on correct language version. No redirection.");
return;
}
// Compute the correct target page
var targetPage = (userLang === contentLang)
? basePage // back to default
: basePage + '/' + userLang;
console.log("🔄 Attempting redirect to:", targetPage);
// Check if the target page exists before redirecting
$.get(mw.util.wikiScript('api'), {
action: 'query',
titles: targetPage,
format: 'json'
}).done(function (data) {
var pages = data.query.pages;
var pageId = Object.keys(pages)[0];
if (pageId !== "-1") {
console.log("✅ Redirecting to:", targetPage);
// Use replace() to avoid infinite reload history
window.location.replace(mw.util.getUrl(targetPage));
} else {
console.log("❌ Target page does not exist:", targetPage);
}
});
});