Jump to content

MediaWiki:Common.js: Difference between revisions

From TexICApedia
No edit summary
No edit summary
 
Line 69: Line 69:
var note = document.createElement( 'div' );
var note = document.createElement( 'div' );
note.style.cssText = 'font-size:90%;color:#54595d;';
note.style.cssText = 'font-size:90%;color:#54595d;';
note.textContent = 'Machine translation
note.textContent = 'Machine translation. ' +
'May contain errors.';
bar.appendChild( note );
}
 
content.parentNode.insertBefore( bar, content );
} );
/* ===== End language link bar ===== */

Latest revision as of 20:45, 31 October 2026

/* Any JavaScript here will be loaded for all users on every page load. */
/* ===== Language link bar (machine translation) ===== */
   $.when( mw.loader.using( 'mediawiki.util' ), $.ready ).then( function () {
	var languages = [
		[ 'es', 'Español' ],
		[ 'fr', 'Français' ],
		[ 'de', 'Deutsch' ],
		[ 'vi', 'Tiếng Việt' ],
		[ 'zh', '中文' ],
		[ 'pt', 'Português' ],
		[ 'ko', '한국어' ],
		[ 'ja', '日本語' ]
	];

	// Only on articles (main namespace), only when reading the page
	if ( mw.config.get( 'wgNamespaceNumber' ) !== 0 || mw.config.get( 'wgAction' ) !== 'view' ) {
		return;
	}

	var page = mw.config.get( 'wgPageName' );
	var parts = page.split( '/' );
	var last = parts[ parts.length - 1 ].toLowerCase();
	var current = 'en';
	var base = page;
	for ( var i = 0; i < languages.length; i++ ) {
		if ( parts.length > 1 && languages[ i ][ 0 ] === last ) {
			current = last;
			base = parts.slice( 0, -1 ).join( '/' );
		}
	}

	// Skip pages that don't exist (unless it's a translation)
	if ( current === 'en' && mw.config.get( 'wgArticleId' ) === 0 ) {
		return;
	}

	var content = document.getElementById( 'mw-content-text' );
	if ( !content ) {
		return;
	}

	var bar = document.createElement( 'div' );
	bar.className = 'texi-langbar';
	bar.style.cssText = 'margin:0 0 1em;padding:6px 10px;border:1px solid #c8ccd1;' +
		'border-radius:4px;background:#f8f9fa;color:#202122;font-size:90%;line-height:1.8;';
	bar.appendChild( document.createTextNode( '🌐 ' ) );

	var all = [ [ 'en', 'English' ] ].concat( languages );
	for ( var j = 0; j < all.length; j++ ) {
		var code = all[ j ][ 0 ];
		if ( j > 0 ) {
			bar.appendChild( document.createTextNode( ' · ' ) );
		}
		if ( code === current ) {
			var b = document.createElement( 'b' );
			b.textContent = all[ j ][ 1 ];
			bar.appendChild( b );
		} else {
			var a = document.createElement( 'a' );
			a.href = mw.util.getUrl( code === 'en' ? base : base + '/' + code );
			a.textContent = all[ j ][ 1 ];
			a.lang = code;
			a.rel = 'nofollow';
			bar.appendChild( a );
		}
	}

	if ( current !== 'en' ) {
		var note = document.createElement( 'div' );
		note.style.cssText = 'font-size:90%;color:#54595d;';
		note.textContent = 'Machine translation. ' +
			'May contain errors.';
		bar.appendChild( note );
	}

	content.parentNode.insertBefore( bar, content );
} );
/* ===== End language link bar ===== */