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

出自Quickpedia wiki
無編輯摘要
無編輯摘要
第1行: 第1行:
$(function() {
$(function() {
   var languagePanel = $('#p-lang'); // 獲取包含語言連結的面板
   var variants = mw.config.get('wgContentLanguageVariants'); // 獲取可用的語言變體


   if (languagePanel.length) {
   if (variants && variants.length > 1) {
     var languageLinks = languagePanel.find('ul li a'); // 獲取所有語言連結
     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');


     if (languageLinks.length > 1) { // 只有在有多種語言連結時才創建選單
     for (var i = 0; i < variants.length; i++) {
      var currentLang = mw.config.get('wgContentLanguage'); // 獲取當前內容語言
       var variantCode = variants[i];
       var currentLangName = '';
       var variantName = '';
       var langOptions = '';


       // 創建下拉選單的 HTML
       switch (variantCode) {
      var languageDropdown = $('<div id="language-dropdown"></div>').append('<label for="lang-select">語言:</label><select id="lang-select"></select>');
        case 'zh-tw':
      var langSelect = languageDropdown.find('#lang-select');
        case 'zh-hant':
          variantName = '中文(繁體)';
          break;
        case 'zh-cn':
        case 'zh-hans':
          variantName = '中文(簡體)';
          break;
        default:
          variantName = variantCode;
      }


       // 遍歷語言連結,創建下拉選項
       var option = $('<option>').val(variantCode).text(variantName);
      languageLinks.each(function() {
      if (variantCode === currentVariant) {
        var langCode = $(this).attr('lang') || $(this).attr('hreflang');
        option.prop('selected', true);
        var langName = $(this).text();
       }
        var option = $('<option>').val($(this).attr('href')).text(langName);
       variantSelect.append(option);
 
        if (langCode === currentLang) {
          option.prop('selected', true);
          currentLangName = langName;
        }
 
        langSelect.append(option);
      });
 
      // 將當前語言顯示在選單標題中 (可選)
      languageDropdown.prepend('<span>' + currentLangName + '</span>');
      languageDropdown.addClass('language-selector'); // 添加一個 CSS 類
 
      // 監聽選單的 change 事件,跳轉到選定的語言頁面
      langSelect.on('change', function() {
        window.location.href = $(this).val();
       });
 
      // 移除原來的語言連結並將下拉選單添加到側邊欄
       languagePanel.empty().append(languageDropdown);
 
      // 你可能需要調整這個選擇器,以將下拉選單移動到更合適的位置
      // 例如,將其添加到側邊欄的頂部
      $('#mw-panel').prepend(languageDropdown);
     }
     }
  }
});
$(function() {
  var languagePanel = $('#p-lang'); // 假設側邊欄有語言連結


  if (languagePanel.length) {
    variantSelect.on('change', function() {
    var languageLinks = languagePanel.find('ul li a');
      var selectedVariant = $(this).val();
      var currentUrl = new URL(window.location.href);
      currentUrl.searchParams.set('variant', selectedVariant);
      window.location.href = currentUrl.toString();
    });


     if (languageLinks.length > 1) {
     // 將下拉選單添加到您希望顯示的位置,例如側邊欄頂部
      var languageDropdown = $('<div id="top-language-dropdown"></div>').append('<label for="top-lang-select">語言:</label><select id="top-lang-select"></select>');
    $('#mw-panel').prepend(languageDropdown);
      var langSelect = languageDropdown.find('#top-lang-select');


      languageLinks.each(function() {
    // 或者添加到左上角 (需要 CSS 定位,如同之前的討論)
        var langCode = $(this).attr('lang') || $(this).attr('hreflang');
    // $('body').prepend(languageDropdown);
        var langName = $(this).text();
        var option = $('<option>').val($(this).attr('href')).text(langName);
        langSelect.append(option);
      });
 
      langSelect.on('change', function() {
        window.location.href = $(this).val();
      });
 
      // 將下拉選單添加到頁面的最上方 (您可能需要調整 CSS 定位)
      $('body').prepend(languageDropdown);
 
      // 移除原來的側邊欄語言連結 (可選)
      // languagePanel.remove();
    }
   }
   }
});
});

於 2025年5月1日 (四) 03:19 的修訂

$(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);
  }
});