「MediaWiki:Common.js」:修訂間差異

出自Quickpedia wiki
無編輯摘要
無編輯摘要
第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也顯示為繁體

        }
    });

})();