User:1234qwer1234qwer4/internationalise.js

From Wikispecies
Jump to navigation Jump to search

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.
// based on https://en.wikipedia.org/wiki/User:DannyS712/Draft_no_cat.js
// Set `internationalise.AJAX = true;` to internationalise without reloading the page

$(() => {
const internationalise = {};
window.internationalise = internationalise;
internationalise.config = {
	name: '[[User:1234qwer1234qwer4/internationalise.js|internationalise.js]]',
	debug: false
};

internationalise.summary = "Internationalised using " + internationalise.config.name;
	
internationalise.run = function () {
	var editSummary = internationalise.summary;
	
	if ( internationalise.config.debug ) {
		console.log ( editSummary );
	}
	
	var api = new mw.Api();
	api.get( {
		action: 'query',
		titles: mw.config.get( 'wgPageName' ),
		prop: 'revisions',
		rvprop: 'content',
		rvslots: 'main',
		formatversion: 2
	} ).done(
		function ( response ) {
			console.log( response );
			var text = response.query.pages[0].revisions[0].slots.main.content;
			var textInt = text
				.replace(/^(=+)( *)Taxonavigation( *)(=+)/mi,"$1$2{{int:Taxonavigation}}$2$4")
				.replace(/^(=+)( *)References?( *)(=+)/mi,"$1$2{{int:References}}$2$4")
				.replace(/^(=+)( *)(Primary|Additional) references?( *)(=+)/mi,"$1$2{{int:$3 references}}$2$5")
				.replace(/^(=+)( *)Links?( *)(=+)/mi,"$1$2{{int:Links}}$2$4")
				.replace(/^(=+)( *)Synonym(y|s)( *)(=+)/mi,"$1$2{{int:Synonym$3}}$2$5")
				.replace(/^(=+)( *)Publications( *)(=+)/mi,"$1$2{{int:Publications}}$2$4")
				.replace(/^(=+)( *)Authored taxa( *)(=+)/mi,"$1$2{{int:Authored taxa}}$2$4")
				.replace(/^(=+)( *)External links( *)(=+)/mi,"$1$2{{int:External links}}$2$4")
				.replace(/^(=+)( *)See also( *)(=+)/mi,"$1$2{{int:See also}}$2$4")
				.replace(/^(=+)( *)Name( *)(=+)/mi,"$1$2{{int:Name}}$2$4")
				.replace(/^(=+)( *)Vernacular names?( *)(=+)/mi,"$1$2{{int:Vernacular names}}$2$4")
				.replace(/^(=+)( *)Homonym(s?)( *)(=+)/mi,"$1$2{{int:Homonym$3}}$2$5")
				.replace(/^(=+)( *)Basionym( *)(=+)/mi,"$1$2{{int:Basionym}}$2$4")
				.replace(/^(=+)( *)Gender( *)(=+)/mi,"$1$2{{int:Gender}}$2$4")
				.replace(/^(=+)( *)Etymology( *)(=+)/mi,"$1$2{{int:Etymology}}$2$4")
				.replace(/^(=+)( *)Native distribution areas( *)(=+)/mi,"$1$2{{int:Native distribution areas}}$2$4")
				.replace(/^(=+)( *)Distribution( *)(=+)/mi,"$1$2{{int:Distribution}}$2$4")
				.replace(/^(=+)( *)Type species( *)(=+)/mi,"$1$2{{int:Type species}}$2$4")
				.replace(/^(=+)( *)Type locality( *)(=+)/mi,"$1$2{{int:Type locality}}$2$4")
				.replace(/^(=+)( *)Overview of species( *)(=+)/mi,"$1$2{{int:Overview of species}}$2$4")
				.replace(/^(=+)( *)Overview of genera( *)(=+)/mi,"$1$2{{int:Overview of genera}}$2$4")
				.replace(/^(=+)( *)Overview of familiae( *)(=+)/mi,"$1$2{{int:Overview of familiae}}$2$4")
				.replace(/^(=+)( *)Hybrids( *)(=+)/mi,"$1$2{{int:Hybrids}}$2$4")
				.replace(/^(=+)( *)Alternative classifications( *)(=+)/mi,"$1$2{{int:Alternative classifications}}$2$4")
				.replace(/^(=+)( *)Original combination( *)(=+)/mi,"$1$2{{int:Original combination}}$2$4")
				.replace(/^(=+)( *)Combinations( *)(=+)/mi,"$1$2{{int:Combinations}}$2$4")
				.replace(/^(=+)( *)Nomenclatural acts( *)(=+)/mi,"$1$2{{int:Nomenclatural acts}}$2$4")
				.replace(/^(=+)( *)New names( *)(=+)/mi,"$1$2{{int:New names}}$2$4")
				.replace(/^(=+)( *)New taxa( *)(=+)/mi,"$1$2{{int:New taxa}}$2$4")
				.replace(/^(=+)( *)Primary type fixations( *)(=+)/mi,"$1$2{{int:Primary type fixations}}$2$4");
			if(textInt == text){
				return mw.notify("Page already internationalised.");
			}
			api.postWithEditToken( {
				action: 'edit',
				minor: true,
				title: mw.config.get( 'wgPageName' ),
				text: textInt,
				summary: editSummary
			} ).done(
				function() {
					if(internationalise.AJAX === undefined || internationalise.AJAX == false){
						location.reload();
					}
					else mw.notify("Page successfully internationalised.");
				}
			);
		}
	);
};

});

$( document ).ready( () => {
	if ( [0,10].indexOf(mw.config.get( 'wgNamespaceNumber' )) !== -1 && mw.config.get('wgAction') === 'view' ) {
		mw.loader.using(
			[ 'mediawiki.util' ],
			function () {
				var  link = mw.util.addPortletLink( 'p-cactions', '#', 'Internationalise', 'ca-internationalise', 'Internationalise section headings'); 
				$( link ).click( function ( event ) {
					event.preventDefault();
					mw.loader.using( 'mediawiki.api', window.internationalise.run );
				} );
			}
		);
	}
} );