MediaWiki:Gadget-redirectByLanguage.js
Note: After publishing, you may have to bypass your browser's cache to see the changes.
- Firefox / Safari: Hold Shift while clicking Reload, or press either Ctrl-F5 or Ctrl-R (⌘-R on a Mac)
- Google Chrome: Press Ctrl-Shift-R (⌘-Shift-R on a Mac)
- Internet Explorer / Edge: Hold Ctrl while clicking Refresh, or press Ctrl-F5
- Opera: Press Ctrl-F5.
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);
}
});
});