MediaWiki:Gadget-iwcore.js
Билгалдаккхар: Ӏалашйинчул тӀаьхьа браузеран кеш дӀайаккха йезаш хила мега, хийцамаш ган.
- Firefox / Safari: ГӀирсийн панелехь Shift-дӀа а лаьцна Керладаккхар тӀетаӀайе, йа Ctrl+F5 йаCtrl+R (Mac-хь ⌘+R) тӀетаӀайе.
- Google Chrome:Ctrl+Shift+R тӀетаӀайе (⌘+Shift+R Mac тӀехь)
- Edge: Ctrl дӀа а лаьцна, Refresh тӀе Ӏоттало йа Ctrl+F5 тӀе Ӏоттало.
- Opera: Ctrl+F5 тӀетаӀайе.
/**
* Sort interwiki links according to a preference table
*
* First revision was imported from https://no.wikipedia.org/wiki/MediaWiki:Interwiki-links.js
* Original description [[:no:Wikipedia:Sortering av interwiki-lenker]]
*
*/
// <nowiki>
(function () {
function main() {
'use strict';
// Guard against multiple inclusions
if ( typeof window.InterwikiLinks === 'object' ) return;
var IWL,
conf = mw.config.get( [
'wgContentLanguage',
'wgUserLanguage',
'wgUseUserLanguage',
'wgLangPrefs',
'wgAddLangHints'
] );
IWL = window.InterwikiLinks = {
langLinks: {}
/**
* Runs before $( document ).ready() and before translation is available
* (important event-binders should be attached as fast as possible)
*/
, preinstall: function () {
// make sure we in fact have a array
if ( !conf.wgLangPrefs ) {
conf.wgLangPrefs = [];
}
conf.wgLangPrefs.push( conf.wgUserLanguage );
// choose and adjust lists for prefered languages
for ( var i = 0; i < conf.wgLangPrefs.length; i++ ) {
conf.wgLangPrefs[ conf.wgLangPrefs[ i ] ] = 1;
IWL.langLinks[ conf.wgLangPrefs[ i ] ] = 1;
}
}
, install: function () {
// get data structures for nameing and sorting of languages
// this will block any languages that isn't defined
if ( typeof wgLangNames[ conf.wgUserLanguage ] == 'object' ) {
// reorganize wgLangNames so we can use it for sorting
IWL.langNames = {};
var sortedNames = Object.keys( wgLangNames[ conf.wgUserLanguage ] );
if ( sortedNames.length > 0 ) {
sortedNames = sortedNames.map( function ( value, index ) {
// Language name, code
return [ wgLangNames[ conf.wgUserLanguage ][ value ], value ];
} ).sort( function ( a, b ) {
// Sort by language name
a = a[ 0 ].toUpperCase();
b = b[ 0 ].toUpperCase();
return ( a < b ? -1 : ( a > b ? 1 : 0 ) );
} );
}
for ( var i = 0; i < sortedNames.length; i++ ) {
var lang = sortedNames[ i ][ 1 ];
IWL.langNames[ lang ] = [ sortedNames[ i ][ 0 ], i ];
}
} else {
return;
}
// wait for document.readyState
$( IWL.start );
}
, sort: function ( a, b ) {
try {
return IWL.langNames[ a.className.replace( /^.*?interwiki-/, '' ).replace( /\s.*$/, '' ) ][ 1 ] -
IWL.langNames[ b.className.replace( /^.*?interwiki-/, '' ).replace( /\s.*$/, '' ) ][ 1 ];
} catch ( e ) {
/* just skip this if its happens to fail, but then the link might be placed a bit random */
}
}
, start: function () {
// locate iw-links, and the container
var container = document.getElementById( 'p-lang' );
if ( !container ) return;
var ul = container.getElementsByTagName( 'ul' );
if ( !ul || ul.length != 1 ) return;
ul = ul[ 0 ];
var c = container.getElementsByTagName( 'li' );
if ( !c ) return;
// loop over the iw-links, translate names and
// separate those we know how to sort from the rest
// and add babel links
var childs = [];
var keeps = [];
var adds = [];
for ( var i = 0; i < c.length; i++ ) {
if ( typeof IWL.langNames != 'undefined' ) {
if ( c[ i ].className == 'wbc-editpage' ) {
adds.push( c[ i ] );
continue;
}
var s = c[ i ].className;
if ( s.indexOf( 'interwiki-' ) === 0 ) continue;
s = s.replace( /^.*?interwiki-/, '' ).replace( /\s.*$/, '' );
var a = c[ i ].getElementsByTagName( 'a' );
// localize language names
try {
if ( conf.wgUseUserLanguage ) {
if ( typeof IWL.langNames[ s ] != 'undefined'
&& typeof IWL.langNames[ s ][ 0 ] == 'string'
) {
if ( a.length ) {
a[ 0 ].innerHTML = IWL.langNames[ s ][ 0 ];
a[ 0 ].lang = 'ru';
}
}
}
} catch ( e ) { /* just skip this */ }
// add hints for language names
try {
if ( conf.wgAddLangHints ) {
if ( typeof IWL.langNames[ s ] != 'undefined'
&& typeof IWL.langNames[ s ][ 0 ] == 'string'
) {
a[ 0 ].setAttribute( 'title', decodeURIComponent( a[ 0 ].getAttribute( 'href' )
.replace( /^.*?\/wiki\/(.*)$/, '$1' ) )
.replace( /_/g, ' ' ) +
' — ' + IWL.langNames[ s ][ 0 ]
);
}
}
} catch ( e ) { /* just skip this */ }
// check if we have any odd link
try {
if ( conf.wgUseUserLanguage
&& typeof IWL.langNames[ s ] != 'undefined'
&& typeof IWL.langNames[ s ][ 1 ] == 'number' ) {
childs.push( c[ i ] );
} else {
adds.push( c[ i ] );
}
} catch ( e ) { /* just skip this */ }
} else {
childs.push( c[ i ] );
}
}
// sort the childs according to definitions used by sortIWlinks
if ( conf.wgUseUserLanguage ) {
childs = childs.sort( IWL.sort );
}
// reinsert those we didn't know how to sort into the list of children
for ( i = 0; i < adds.length; i++ ) {
childs.push( adds[ i ] );
}
// move one block to the top
try {
// separate out those that shall be moved to the top
var link;
for ( i = 0; i < childs.length; i++ ) {
// the following test fails if there are several classes for the actual child
link = IWL.langLinks[
childs[ i ].className.replace( /^.*?interwiki-/, '' ).replace( /\s.*$/, '' )
];
if ( link ) {
keeps.push( childs[ i ] );
}
}
// reorganize the list of children
var n = childs.length;
for ( i = childs.length - 1; i >= 0; i-- ) {
link = IWL.langLinks[
childs[ i ].className.replace( /^.*?interwiki-/, '' ).replace( /\s.*$/, '' )
];
if ( link ) {
childs[ i ].className += ' iw-focus';
} else {
keeps[ --n ] = childs[ i ];
}
}
} catch ( e ) { /* just skip this */ }
// remove all existing children and reinsert from our own list
if ( keeps.length ) {
var child;
while ( ( child = ul.firstChild ) !== null ) {
ul.removeChild( child );
}
for ( i = 0; i < keeps.length; i++ ) {
ul.appendChild( keeps[ i ] );
}
}
}
};
// bail out for debugging
if ( typeof wgDebugIWlang != 'undefined' && wgDebugIWlang ) return;
IWL.preinstall();
wgLangNames = {};
wgLangNames.ru = {
'aa': 'афар',
'ab': 'абхазский',
'ace': 'ачехский',
'ady': 'адыгейский',
'af': 'африкаанс',
'ak': 'акан',
'als': 'алеманнские (немецкий)',
'alt': 'южноалтайский',
'am': 'амхарский',
'ami': 'амисский',
'an': 'арагонский',
'ang': 'древнеанглийский',
'anp': 'ангика',
'ar': 'арабский',
'arc': 'арамейский',
'ary': 'марокканский (арабский)',
'arz': 'египетский (арабский)',
'as': 'ассамский',
'ast': 'астурийский',
'atj': 'атикамек',
'av': 'аварский',
'avk': 'котава',
'awa': 'авадхи',
'ay': 'аймара',
'az': 'азербайджанский',
'azb': 'иранский азербайджанский',
'ba': 'башкирский',
'ban': 'балийский',
'bar': 'баварский (немецкий)',
'bat-smg': 'жемайтский (литовский)',
'bbc': 'тоба-батакский',
'bcl': 'центральный бикольский',
'be': 'белорусский',
'be-tarask': 'белорусский (тарашкевица)',
'bg': 'болгарский',
'bh': 'бходжпури',
'bi': 'бислама',
'bjn': 'банджарский',
'blk': 'пао',
'bm': 'бамана',
'bn': 'бенгальский',
'bo': 'тибетский',
'bpy': 'бишнуприя-манипури',
'br': 'бретонский',
'bs': 'боснийский',
'btm': 'мандайлингский',
'bug': 'бугийский',
'bxr': 'бурятский',
'ca': 'каталанский',
'cbk-zam': 'чабакано',
'cdo': 'восточноминьский китайский',
'ce': 'чеченский',
'ceb': 'себуанский',
'ch': 'чаморро',
'cho': 'чокто',
'chr': 'чероки',
'chy': 'шайенский',
'ckb': 'сорани',
'co': 'корсиканский',
'cr': 'языки кри',
'crh': 'крымскотатарский',
'cs': 'чешский',
'csb': 'кашубский',
'cu': 'старославянский',
'cv': 'чувашский',
'cy': 'валлийский',
'da': 'датский',
'dag': 'дагбани',
'de': 'немецкий',
'dga': 'южный дагари',
'din': 'динка',
'diq': 'южный зазаки',
'dsb': 'нижнелужицкий',
'dty': 'дотияли',
'dv': 'мальдивский',
'dz': 'дзонг-кэ',
'ee': 'эве',
'el': 'греческий',
'eml': 'эмилиано-романьольский',
'en': 'английский',
'eo': 'эсперанто',
'es': 'испанский',
'et': 'эстонский',
'eu': 'баскский',
'ext': 'эстремадурский',
'fa': 'персидский',
'fat': 'фанти',
'ff': 'фула',
'fi': 'финский',
'fiu-vro': 'выруский',
'fj': 'фиджийский',
'fo': 'фарерский',
'fon': 'фон',
'fr': 'французский',
'frp': 'франкопровансальский',
'frr': 'севернофризский',
'fur': 'фриульский',
'fy': 'западнофризский',
'ga': 'ирландский',
'gag': 'гагаузский',
'gan': 'гань',
'gcr': 'гвианский креольский',
'gd': 'шотландский (кельтский)',
'gl': 'галисийский',
'glk': 'гилянский',
'gn': 'гуарани',
'gom': 'конкани',
'gor': 'горонтало',
'got': 'готский',
'gpe': 'ганский креольский',
'gu': 'гуджарати',
'guc': 'гуахиро',
'gur': 'фарефаре',
'guw': 'гун',
'gv': 'мэнский',
'ha': 'хауса',
'hak': 'хакка',
'haw': 'гавайский',
'he': 'иврит',
'hi': 'хинди',
'hif': 'фиджийский хинди',
'ho': 'хири-моту',
'hr': 'хорватский',
'hsb': 'верхнелужицкий',
'ht': 'гаитянский креольский',
'hu': 'венгерский',
'hy': 'армянский',
'hyw': 'западноармянский',
'hz': 'гереро',
'ia': 'интерлингва',
'id': 'индонезийский',
'ie': 'интерлингве',
'ig': 'игбо',
'ii': 'носу',
'ik': 'инупиак',
'ilo': 'илоканский',
'inh': 'ингушский',
'io': 'идо',
'is': 'исландский',
'it': 'итальянский',
'iu': 'инуктитут',
'ja': 'японский',
'jam': 'ямайский креольский',
'jbo': 'ложбан',
'jv': 'яванский',
'ka': 'грузинский',
'kaa': 'каракалпакский',
'kab': 'кабильский',
'kbd': 'кабардино-черкесский',
'kbp': 'кабье',
'kcg': 'тьяп',
'kg': 'конго',
'khw': 'кховар',
'ki': 'кикуйю',
'kj': 'кваньяма',
'kk': 'казахский',
'kl': 'гренландский',
'km': 'кхмерский',
'kn': 'каннада',
'ko': 'корейский',
'koi': 'коми-пермяцкий',
'kr': 'канури',
'krc': 'карачаево-балкарский',
'ks': 'кашмирский',
'ksh': 'рипуарские (немецкий)',
'ku': 'курдский',
'kv': 'коми-зырянский',
'kw': 'корнский',
'ky': 'киргизский',
'la': 'латинский',
'lad': 'сефардский',
'lb': 'люксембургский',
'lbe': 'лакский',
'lez': 'лезгинский',
'lfn': 'лингва франка нова',
'lg': 'луганда',
'li': 'лимбургский',
'lij': 'лигурийский',
'lld': 'ладинский',
'lmo': 'ломбардский',
'ln': 'лингала',
'lo': 'лаосский',
'lrc': 'севернолурский',
'lt': 'литовский',
'ltg': 'латгальский',
'lv': 'латышский',
'lzh': 'китайский (вэньянь)',
'mad': 'мадурский',
'mai': 'майтхили',
'map-bms': 'баньюмасанский',
'mdf': 'мокшанский',
'mg': 'малагасийский',
'mh': 'маршалльский',
'mhr': 'лугово-восточный марийский',
'mi': 'маори',
'min': 'минангкабау',
'mk': 'македонский',
'ml': 'малаялам',
'mn': 'монгольский',
'mni': 'манипури',
'mnw': 'монский',
'mr': 'маратхи',
'mrj': 'горномарийский',
'ms': 'малайский',
'mt': 'мальтийский',
'mus': 'крикский',
'mwl': 'мирандский',
'my': 'бирманский',
'myv': 'эрзянский',
'mzn': 'мазандеранский',
'na': 'науруанский',
'nah': 'астекский',
'nan': 'южноминьский китайский',
'nap': 'неаполитанский',
'nds': 'нижненемецкий',
'nds-nl': 'нижнесаксонские (нижненемецкий)',
'ne': 'непальский',
'new': 'неварский',
'ng': 'ндонга',
'nia': 'ниасский',
'nl': 'нидерландский',
'nn': 'норвежский (нюнорск)',
'no': 'норвежский (букмол)',
'nov': 'новиаль',
'nqo': 'нко',
'nrm': 'нормандский',
'nso': 'северный сото',
'nv': 'навахо',
'ny': 'ньянджа',
'oc': 'окситанский',
'olo': 'ливвиковский карельский',
'om': 'оромо',
'or': 'ория',
'os': 'осетинский',
'pa': 'восточный пенджаби',
'pag': 'пангасинанский',
'pam': 'капампанганский',
'pap': 'папьяменто',
'pcd': 'пикардский',
'pcm': 'нигерийский креольский',
'pdc': 'пенсильванский (немецкий)',
'pfl': 'пфальцский (немецкий)',
'pi': 'пали',
'pih': 'норфолкский/питкэрнский',
'pl': 'польский',
'pms': 'пьемонтский',
'pnb': 'западный пенджаби',
'pnt': 'понтийский',
'ps': 'пушту',
'pt': 'португальский',
'pwn': 'пайваньский',
'qu': 'кечуа',
'rm': 'романшский',
'rmy': 'влашские (цыганский)',
'rn': 'рунди',
'ro': 'румынский',
'roa-rup': 'арумынский',
'roa-tara': 'тарантинский (неаполитанский)',
'ru': 'русский',
'rue': 'русинский',
'rw': 'руанда',
'sa': 'санскрит',
'sah': 'якутский',
'sat': 'сантали',
'sc': 'сардинский',
'scn': 'сицилийский',
'sco': 'шотландский (германский)',
'sd': 'синдхи',
'se': 'северносаамский',
'sg': 'санго',
'sh': 'сербохорватский',
'shi': 'шильхский',
'shn': 'шанский',
'si': 'сингальский',
'simple': 'английский (упрощённый)',
'sk': 'словацкий',
'skr': 'сирайки',
'sl': 'словенский',
'sm': 'самоанский',
'smn': 'инари-саамский',
'sn': 'шона',
'so': 'сомалийский',
'sq': 'албанский',
'sr': 'сербский',
'srn': 'сранан-тонго',
'ss': 'свати',
'st': 'южный сото',
'stq': 'восточнофризский',
'su': 'сунданский',
'sv': 'шведский',
'sw': 'суахили',
'szl': 'силезский',
'szy': 'сакизайя',
'ta': 'тамильский',
'tay': 'атаяльский',
'tcy': 'тулу',
'te': 'телугу',
'tet': 'тетум',
'tg': 'таджикский',
'th': 'тайский',
'ti': 'тигринья',
'tk': 'туркменский',
'tl': 'тагальский',
'tly': 'талышский',
'tn': 'тсвана',
'to': 'тонганский',
'tpi': 'ток-писин',
'tr': 'турецкий',
'trv': 'седекский',
'ts': 'тсонга',
'tt': 'татарский',
'tum': 'тумбука',
'tw': 'чви',
'ty': 'таитянский',
'tyv': 'тувинский',
'udm': 'удмуртский',
'ug': 'уйгурский',
'uk': 'украинский',
'ur': 'урду',
'uz': 'узбекский',
've': 'венда',
'vec': 'венетский',
'vep': 'вепсский',
'vi': 'вьетнамский',
'vls': 'западнофламандский (нидерландский)',
'vo': 'волапюк',
'wa': 'валлонский',
'war': 'варайский',
'wo': 'волоф',
'wuu': 'у',
'xal': 'калмыцкий',
'xh': 'коса',
'xmf': 'мегрельский',
'yi': 'идиш',
'yo': 'йоруба',
'yue': 'юэ',
'za': 'чжуанский',
'zea': 'зеландский (нидерландский)',
'zgh': 'марокканский берберский',
'zh': 'китайский',
'zu': 'зулу'
};
IWL.install();
}
var wgLangNames, wgDebugIWlang;
// Нестрогое сравнение, потому что формат значений нестабилен, см. [[phab:T54542]]
if ( mw.user.options.get( 'compact-language-links' ) != 1 ) {
// Перед запуском ждём загрузки и выполнения дочерних гаджетов
$( main );
}
}());
// </nowiki>