「MediaWiki:Common.js」:修訂間差異
無編輯摘要 |
無編輯摘要 |
||
| 第45行: | 第45行: | ||
} | } | ||
}); | }); | ||
/* Language Redirection and Menu Filtering for Simplified/Traditional Chinese */ | |||
(function() { | |||
// === 1. 自動語系導向邏輯 === | |||
var lang = (navigator.language || navigator.userLanguage).toLowerCase(); | |||
var simplifiedCodes = ['zh-cn', 'zh-sg', 'zh-hans']; // 簡體中文語系代碼 | |||
var traditionalCodes = ['zh-tw', 'zh-hk', 'zh-mo', 'zh-hant']; // 繁體中文語系代碼 | |||
var currentURL = window.location.href; | |||
// 檢查 URL 中是否已經有繁體或簡體的標示 | |||
// 注意:您可能需要根據您的實際URL結構調整 '/簡體' 和 '/繁體' | |||
// 如果您的繁體版本不需要 '/繁體' 這個路徑,或者預設就是繁體,請調整 below! | |||
var hasSimplifiedInURL = currentURL.includes('/簡體'); | |||
var hasTraditionalInURL = currentURL.includes('/繁體'); | |||
// 只有當 URL 中尚未明確指定繁簡版本時,才進行語系導向 | |||
if (!hasSimplifiedInURL && !hasTraditionalInURL) { | |||
var isSimplifiedBrowser = simplifiedCodes.includes(lang); | |||
var isTraditionalBrowser = traditionalCodes.includes(lang); | |||
if (isSimplifiedBrowser) { | |||
// 如果瀏覽器是簡體,導向到簡體版本 | |||
window.location.href = currentURL + '/簡體'; | |||
} else if (isTraditionalBrowser) { | |||
// 如果瀏覽器是繁體,導向到繁體版本 | |||
// 再次強調:確保您的 Wiki 支援 /繁體 這個路徑來顯示繁體內容。 | |||
// 如果您的繁體版本就是預設URL (沒有額外路徑),則這裡可以考慮不導向。 | |||
window.location.href = currentURL + '/繁體'; | |||
} else { | |||
// 如果瀏覽器語系既不是簡體也不是繁體中文 (例如英文),則預設導向到繁體中文。 | |||
window.location.href = currentURL + '/繁體'; | |||
} | |||
} | |||
// === 2. 隱藏其他語系選項 (MediaWiki 右上角的語系切換器) === | |||
// MediaWiki 的語系切換器通常在一個 class 為 'mw-portlet' 或 id 為 'p-variants' 的區塊裡 | |||
// 裡面的每個語系選項是一個 <li> 包含一個 <a> | |||
// 我們需要移除或隱藏那些非 'zh-hans' 或 'zh-hant' 的選項 | |||
// 等待頁面內容完全加載,確保語系選單已經存在 | |||
$(document).ready(function() { | |||
var variantsMenu = $('#p-variants'); // 這是 MediaWiki 語系選單的標準 ID | |||
if (variantsMenu.length > 0) { | |||
// 遍歷所有的語系選項 (<li> 元素) | |||
variantsMenu.find('li').each(function() { | |||
var $li = $(this); | |||
var $link = $li.find('a'); | |||
if ($link.length > 0) { | |||
var href = $link.attr('href'); | |||
// 檢查 href 中是否包含簡體或繁體的標識 | |||
// MediaWiki 通常會使用 /zh-hans, /zh-hant 這樣的路徑 | |||
if (!href.includes('/zh-hans') && !href.includes('/zh-hant') && | |||
!href.includes('/zh-cn') && !href.includes('/zh-tw')) { | |||
// 如果不包含,則隱藏這個 li 元素 | |||
$li.hide(); | |||
} | |||
} | |||
}); | |||
// 可選:如果你希望將原本的語系選擇標題 (例如 "Language variants") 也改為中文 | |||
// 找到標題元素,通常是 .mw-portlet-variants h3 或類似 | |||
// 實際元素請檢查您的 Wiki HTML 結構 | |||
// var titleElement = variantsMenu.find('h3'); // 假設是 h3 | |||
// if (titleElement.length > 0) { | |||
// titleElement.text('語系選項'); // 或 '語言選項' | |||
// } | |||
// 可選:如果你希望簡化菜單,只顯示“簡體”和“繁體”的文字 | |||
// 而不是預設的“中文(簡體)” “中文(臺灣)” 等 | |||
variantsMenu.find('a[href*="/zh-hans"]').text('簡體中文'); | |||
variantsMenu.find('a[href*="/zh-cn"]').text('簡體中文'); // 確保zh-cn也顯示為簡體 | |||
variantsMenu.find('a[href*="/zh-hant"]').text('繁體中文'); | |||
variantsMenu.find('a[href*="/zh-tw"]').text('繁體中文'); // 確保zh-tw也顯示為繁體 | |||
variantsMenu.find('a[href*="/zh-hk"]').text('繁體中文'); // 確保zh-hk也顯示為繁體 | |||
variantsMenu.find('a[href*="/zh-mo"]').text('繁體中文'); // 確保zh-mo也顯示為繁體 | |||
} | |||
}); | |||
})(); | |||
於 2025年6月24日 (二) 08:10 的修訂
$(function() {
var variants = mw.config.get('wgContentLanguageVariants'); // 獲取可用的語言變體
if (variants && variants.length > 1) {
var currentVariant = mw.config.get('wgUserVariant');
var languageDropdown = $('<div id="zh-variant-dropdown"></div>').append('<label for="zh-variant-select">中文:</label><select id="zh-variant-select"></select>');
var variantSelect = languageDropdown.find('#zh-variant-select');
for (var i = 0; i < variants.length; i++) {
var variantCode = variants[i];
var variantName = '';
switch (variantCode) {
case 'zh-tw':
case 'zh-hant':
variantName = '中文(繁體)';
break;
case 'zh-cn':
case 'zh-hans':
variantName = '中文(簡體)';
break;
default:
variantName = variantCode;
}
var option = $('<option>').val(variantCode).text(variantName);
if (variantCode === currentVariant) {
option.prop('selected', true);
}
variantSelect.append(option);
}
variantSelect.on('change', function() {
var selectedVariant = $(this).val();
var currentUrl = new URL(window.location.href);
currentUrl.searchParams.set('variant', selectedVariant);
window.location.href = currentUrl.toString();
});
// 將下拉選單添加到您希望顯示的位置,例如側邊欄頂部
$('#mw-panel').prepend(languageDropdown);
// 或者添加到左上角 (需要 CSS 定位,如同之前的討論)
// $('body').prepend(languageDropdown);
}
});
/* Language Redirection and Menu Filtering for Simplified/Traditional Chinese */
(function() {
// === 1. 自動語系導向邏輯 ===
var lang = (navigator.language || navigator.userLanguage).toLowerCase();
var simplifiedCodes = ['zh-cn', 'zh-sg', 'zh-hans']; // 簡體中文語系代碼
var traditionalCodes = ['zh-tw', 'zh-hk', 'zh-mo', 'zh-hant']; // 繁體中文語系代碼
var currentURL = window.location.href;
// 檢查 URL 中是否已經有繁體或簡體的標示
// 注意:您可能需要根據您的實際URL結構調整 '/簡體' 和 '/繁體'
// 如果您的繁體版本不需要 '/繁體' 這個路徑,或者預設就是繁體,請調整 below!
var hasSimplifiedInURL = currentURL.includes('/簡體');
var hasTraditionalInURL = currentURL.includes('/繁體');
// 只有當 URL 中尚未明確指定繁簡版本時,才進行語系導向
if (!hasSimplifiedInURL && !hasTraditionalInURL) {
var isSimplifiedBrowser = simplifiedCodes.includes(lang);
var isTraditionalBrowser = traditionalCodes.includes(lang);
if (isSimplifiedBrowser) {
// 如果瀏覽器是簡體,導向到簡體版本
window.location.href = currentURL + '/簡體';
} else if (isTraditionalBrowser) {
// 如果瀏覽器是繁體,導向到繁體版本
// 再次強調:確保您的 Wiki 支援 /繁體 這個路徑來顯示繁體內容。
// 如果您的繁體版本就是預設URL (沒有額外路徑),則這裡可以考慮不導向。
window.location.href = currentURL + '/繁體';
} else {
// 如果瀏覽器語系既不是簡體也不是繁體中文 (例如英文),則預設導向到繁體中文。
window.location.href = currentURL + '/繁體';
}
}
// === 2. 隱藏其他語系選項 (MediaWiki 右上角的語系切換器) ===
// MediaWiki 的語系切換器通常在一個 class 為 'mw-portlet' 或 id 為 'p-variants' 的區塊裡
// 裡面的每個語系選項是一個 <li> 包含一個 <a>
// 我們需要移除或隱藏那些非 'zh-hans' 或 'zh-hant' 的選項
// 等待頁面內容完全加載,確保語系選單已經存在
$(document).ready(function() {
var variantsMenu = $('#p-variants'); // 這是 MediaWiki 語系選單的標準 ID
if (variantsMenu.length > 0) {
// 遍歷所有的語系選項 (<li> 元素)
variantsMenu.find('li').each(function() {
var $li = $(this);
var $link = $li.find('a');
if ($link.length > 0) {
var href = $link.attr('href');
// 檢查 href 中是否包含簡體或繁體的標識
// MediaWiki 通常會使用 /zh-hans, /zh-hant 這樣的路徑
if (!href.includes('/zh-hans') && !href.includes('/zh-hant') &&
!href.includes('/zh-cn') && !href.includes('/zh-tw')) {
// 如果不包含,則隱藏這個 li 元素
$li.hide();
}
}
});
// 可選:如果你希望將原本的語系選擇標題 (例如 "Language variants") 也改為中文
// 找到標題元素,通常是 .mw-portlet-variants h3 或類似
// 實際元素請檢查您的 Wiki HTML 結構
// var titleElement = variantsMenu.find('h3'); // 假設是 h3
// if (titleElement.length > 0) {
// titleElement.text('語系選項'); // 或 '語言選項'
// }
// 可選:如果你希望簡化菜單,只顯示“簡體”和“繁體”的文字
// 而不是預設的“中文(簡體)” “中文(臺灣)” 等
variantsMenu.find('a[href*="/zh-hans"]').text('簡體中文');
variantsMenu.find('a[href*="/zh-cn"]').text('簡體中文'); // 確保zh-cn也顯示為簡體
variantsMenu.find('a[href*="/zh-hant"]').text('繁體中文');
variantsMenu.find('a[href*="/zh-tw"]').text('繁體中文'); // 確保zh-tw也顯示為繁體
variantsMenu.find('a[href*="/zh-hk"]').text('繁體中文'); // 確保zh-hk也顯示為繁體
variantsMenu.find('a[href*="/zh-mo"]').text('繁體中文'); // 確保zh-mo也顯示為繁體
}
});
})();