MediaWiki:Gadget-MainLangFirst.js

Note: After publishing, you may have to bypass your browser's cache to see the changes.

  • Firefox / Safari: Hold Shift while clicking Reload, or press either Ctrl-F5 or Ctrl-R (⌘-R on a Mac)
  • Google Chrome: Press Ctrl-Shift-R (⌘-Shift-R on a Mac)
  • Internet Explorer / Edge: Hold Ctrl while clicking Refresh, or press Ctrl-F5
  • Opera: Press Ctrl-F5.
/* global mw, $ */
( function () {
	'use strict';
	var langMap, langs;

	if ( mw.config.get( 'wgNamespaceNumber' ) !== 0 ) {
		return;
	}

	langMap = {
		'bho': 'bh',
		'gsw': 'als',
		'lzh': 'zh_classical',
		'nan': 'zh_min_nan',
		'nb': 'no',
		'rup': 'roa_rup',
		'sgs': 'bat_smg',
		'vro': 'fiu_vro',
		'yue': 'zh_yue',
	};

	langs = mw.user.options.get( 'translate-editlangs' ).split( ', ' );
	langs.push( mw.config.get( 'wgUserLanguage' ) );
	langs = langs.map( function ( lang ) {
		return langMap[ lang ] || lang;
	} );

	function highlightSiteLinks( $content ) {
		function highlightSiteLinksGroup( group, customSuffix ) {
			var selector,
				suffix = customSuffix || group,
				$group = $content.find( 'div[data-wb-sitelinks-group="' + group + '"]' );

			// Highlight main languages
			selector = langs.map( function ( code ) {
				return '.wikibase-sitelinkview-' + code + suffix;
			} ).join( ',' );
			$group.find( selector )
				.prependTo( $group.find( 'ul' ).eq( 0 ) )
				.addClass( 'main-lang-highlight' );
		}

		highlightSiteLinksGroup( 'wikipedia', 'wiki' );
		highlightSiteLinksGroup( 'wikibooks' );
		highlightSiteLinksGroup( 'wikinews' );
		highlightSiteLinksGroup( 'wikiquote' );
		highlightSiteLinksGroup( 'wikisource' );
		highlightSiteLinksGroup( 'wikiversity' );
		highlightSiteLinksGroup( 'wikivoyage' );
		highlightSiteLinksGroup( 'wiktionary' );
	}

	mw.hook( 'wikipage.content' ).add( highlightSiteLinks );

}() );