MediaWiki:Gadget-interlangSearch.js
- 其他语言中
注意:在保存之后,您可能需要清除浏览器缓存才能看到所作出的更改的影响。
- Firefox或Safari:按住Shift的同时单击刷新,或按Ctrl-F5或Ctrl-R(Mac为⌘-R)
- Google Chrome:按Ctrl-Shift-R(Mac为⌘-Shift-R)
- Internet Explorer:按住Ctrl的同时单击刷新,或按Ctrl-F5
- Opera:前往菜单 → 设置(Mac为Opera → 选项),然后隐私和安全 → 清除浏览数据 → 缓存的图片和文件。
const i18n = {
de: {
suggest: 'Siehe auch die Seiten passend zu „$1“ in anderssprachigen Wikis.',
langlink: 'Diese Seite existiert als „$1“ in diesem Wiki.',
section: ' (Abschnitt $1)',
language: ' ($1)'
},
en: {
suggest: 'See also pages matching "$1" from other language wikis.',
langlink: 'This page exists as "$1" on this wiki!',
section: ' (section $1)',
language: ' ($1)'
},
es: {
suggest: 'Mira también páginas que coinciden con "$1" en wikis de otros idiomas.',
langlink: '¡Esta página existe como "$1" en esta wiki!',
section: ' (sección $1)',
language: ' ($1)'
},
nl: {
suggest: 'Zoek naar pagina\'s die overeenkomen met "$1" op anderstalige wiki\'s',
langlink: 'Deze pagina bestaat als "$1" op deze wiki!',
section: ' (gedeelte $1)',
language: ' ($1)'
},
pt: {
suggest: 'Veja também páginas correspondentes a "$1" nas wikis de outros idiomas.',
langlink: 'Esta página existe como "$1" nessa wiki!',
section: ' (seção $1)',
language: ' ($1)'
},
th: {
suggest: 'ดูเพิ่มหน้าที่ตรงกับ "$1" จากวิกิภาษาอื่น',
langlink: 'หน้านี้มีอยู่ใน "$1" บนวิกิแห่งนี้!',
section: ' (ส่วน $1)',
language: ' ($1)'
}
};
mw.loader.using( [
'mediawiki.util',
'mediawiki.api',
'mediawiki.ForeignApi',
'ext.gadget.global-utils'
] ).then( function(require) {
const globalUtils = require( 'ext.gadget.global-utils' );
const config = mw.config.get( [
'wgCanonicalSpecialPageName',
'searchTerm',
'wgUserId',
'wgUserLanguage',
'wgContentLanguage'
] );
if ( config.wgCanonicalSpecialPageName !== 'Search' || $('.searchresults a.mw-nextlink').length ) return;
const searchTerm = config.searchTerm.trim();
if ( !searchTerm ) return;
const wikis = Object.values( globalUtils.wikis ).filter( wiki => wiki.url !== config.wgServer );
const currentWiki = config.wgContentLanguage;
const i18nLang = globalUtils.localization( i18n );
Promise.allSettled( wikis.map(checkWiki) ).then( function(results) {
var pages = [];
results.forEach( function(result, i) {
if ( result.status !== 'fulfilled' ) return;
var query = result.value.query;
var page = query.pages[0];
if ( page.missing || page.invalid ) return;
pages.push( {
wiki: wikis[i],
title: ( query.converted ? query.converted[0].from : page.title ),
section: ( query.redirects && query.redirects[0].tofragment ),
langlink: ( page.langlinks && page.langlinks[0].title )
} );
} );
if ( !pages.length ) return;
$('.searchresults .mw-search-visualclear:last-of-type').before(
$('<div class="mw-search-visualclear">'),
$('<div class="searchdidyoumean">').text(mw.format(i18nLang.suggest, searchTerm)).css('margin-top', '32px'),
$('<ul class="mw-search-results">').css('margin-top', '24px').append( pages.map( function(page) {
return $('<li class="mw-search-result">').append(
$('<div class="mw-search-result-heading">').append(
$('<a>').attr('href', page.wiki.url + mw.util.getUrl(page.title)).attr('title', page.title + ' – ' + page.wiki.name).append(
mw.html.escape(page.title).replace(searchTerm, '<span class="searchmatch">' + searchTerm + '</span>')
),
( page.section ? $('<span class="searchalttitle">').append(
mw.html.escape(i18nLang.section.split('$1')[0]),
$('<a>').attr('href', page.wiki.url + mw.util.getUrl(page.title + '#' + page.section)).attr('title', page.title + ' – ' + page.wiki.name).append(
mw.html.escape(page.section).replace(searchTerm, '<span class="searchmatch">' + searchTerm + '</span>')
).css('font-size', 'unset'),
mw.html.escape(i18nLang.section.split('$1')[1])
) : '' ),
$('<span class="searchalttitle">').text(mw.format(i18nLang.language, page.wiki.name))
),
( page.langlink ? $('<div class="searchresult">').append(
mw.html.escape(i18nLang.langlink.split('$1')[0]),
$('<a class="searchmatch">').attr('href', mw.util.getUrl(page.langlink)).attr('title', page.langlink.split('#')[0]).text(page.langlink).css('font-size', 'unset'),
mw.html.escape(i18nLang.langlink.split('$1')[1])
) : '' )
);
} ) )
);
} );
function checkWiki(wiki) {
return new mw.ForeignApi( wiki.url + '/api.php', {
anonymous: true
} ).get( {
action: 'query',
redirects: true,
converttitles: true,
titles: [searchTerm],
prop: 'langlinks',
lllang: currentWiki,
formatversion: 2,
requestid: 'gadget-interlangSearch'
} );
}
} );