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

出自Quickpedia wiki
無編輯摘要
無編輯摘要
第1行: 第1行:
$(function() {
$(function() {
   // 檢查目前用戶的介面語言是否不是中文
   var languagePanel = $('#p-lang'); // 獲取包含語言連結的面板
  if (mw.config.get('wgUserLanguage') !== 'zh') {
    // 嘗試設定內容語言為中文
    mw.config.set('wgContentLanguage', 'zh');


    // 如果有語言選擇器,嘗試選中中文選項 (與之前的程式碼相同)
  if (languagePanel.length) {
     var languageSelector = document.getElementById('p-lang-btn');
     var languageLinks = languagePanel.find('ul li a'); // 獲取所有語言連結
     if (languageSelector && languageSelector.getElementsByTagName('ul').length > 0) {
 
       var languageList = languageSelector.getElementsByTagName('ul')[0].getElementsByTagName('li');
     if (languageLinks.length > 1) { // 只有在有多種語言連結時才創建選單
       for (var i = 0; i < languageList.length; i++) {
       var currentLang = mw.config.get('wgContentLanguage'); // 獲取當前內容語言
        var link = languageList[i].getElementsByTagName('a')[0];
      var currentLangName = '';
         if (link && (link.getAttribute('lang') === 'zh' || link.getAttribute('hreflang') === 'zh')) {
       var langOptions = '';
           window.location.href = link.getAttribute('href');
 
           return;
      // 創建下拉選單的 HTML
      var languageDropdown = $('<div id="language-dropdown"></div>').append('<label for="lang-select">語言:</label><select id="lang-select"></select>');
      var langSelect = languageDropdown.find('#lang-select');
 
      // 遍歷語言連結,創建下拉選項
      languageLinks.each(function() {
         var langCode = $(this).attr('lang') || $(this).attr('hreflang');
        var langName = $(this).text();
        var option = $('<option>').val($(this).attr('href')).text(langName);
 
        if (langCode === currentLang) {
           option.prop('selected', true);
           currentLangName = langName;
         }
         }
      }
    } else {
      var currentUrl = window.location.href;
      var url = new URL(currentUrl);
      url.searchParams.set('uselang', 'zh');
      window.location.href = url.toString();
    }
  }


  // 嘗試將使用者偏好設定中的語言更改為 zh-tw (僅在登錄後生效)
        langSelect.append(option);
  if (mw.config.get('wgUserName')) { // 檢查用戶是否已登錄
      });
    // 檢查當前偏好設定的語言是否不是 zh-tw
 
    if (mw.config.get('wgUserLanguage') !== 'zh-tw') {
      // 將當前語言顯示在選單標題中 (可選)
      // 嘗試修改 URL 並重新載入以應用 zh-tw 偏好
      languageDropdown.prepend('<span>' + currentLangName + '</span>');
      var currentUrl = window.location.href;
      languageDropdown.addClass('language-selector'); // 添加一個 CSS 類
       var url = new URL(currentUrl);
 
       url.searchParams.set('uselang', 'zh-tw');
      // 監聽選單的 change 事件,跳轉到選定的語言頁面
      langSelect.on('change', function() {
        window.location.href = $(this).val();
       });
 
       // 移除原來的語言連結並將下拉選單添加到側邊欄
      languagePanel.empty().append(languageDropdown);


       // 為了避免無限重定向,我們只在 URL 中沒有 uselang 參數或其值不是 zh-tw 時才重新載入
       // 你可能需要調整這個選擇器,以將下拉選單移動到更合適的位置
       if (!url.searchParams.has('uselang') || url.searchParams.get('uselang') !== 'zh-tw') {
      // 例如,將其添加到側邊欄的頂部
        window.location.href = url.toString();
       $('#mw-panel').prepend(languageDropdown);
      }
     }
     }
   }
   }
});
});

於 2025年5月1日 (四) 02:53 的修訂

$(function() {
  var languagePanel = $('#p-lang'); // 獲取包含語言連結的面板

  if (languagePanel.length) {
    var languageLinks = languagePanel.find('ul li a'); // 獲取所有語言連結

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

      // 創建下拉選單的 HTML
      var languageDropdown = $('<div id="language-dropdown"></div>').append('<label for="lang-select">語言:</label><select id="lang-select"></select>');
      var langSelect = languageDropdown.find('#lang-select');

      // 遍歷語言連結,創建下拉選項
      languageLinks.each(function() {
        var langCode = $(this).attr('lang') || $(this).attr('hreflang');
        var langName = $(this).text();
        var option = $('<option>').val($(this).attr('href')).text(langName);

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