MediaWiki:Gadget-sidebarTranslate.js

From Terraria Wiki
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.
// By Equazcion: http://terraria.gamepedia.com/User:Equazcion

var lang = mw.config.get( 'wgUserLanguage' ) || 'en';
var l10n = (function(){
	var $text = {
		'googletranslate': {
			'en': 'Google Translate: $lang$ to English',
			'de': 'Google Übersetzer: $lang$ zu Deutsch',
			'fr': 'Google traduction : $lang$ vers français',
			'pt-br': 'Google Tradutor: $lang$ para português brasileiro',
			'ru': 'Google Переводчик: $lang$ → русский'

		},
		'undefined_language': {
			'en': 'undefined',
			'de': 'undefiniert',
			'fr': 'indéfini',
			'pt-br': 'indefinido',
			'ru': 'неопределённый'
		},
		'arabic': {
			'en': 'Arabic',
			'de': 'Arabisch',
			'fr': 'Arabe'
		},
		'bulgarian': {
			'en': 'Bulgarian',
			'de': 'Bulgarisch',
			'fr': 'Bulgare',
			'pt-br': 'Búlgaro',
			'ru': 'болгарский'
		},
		'cantonese': {
			'en': 'Cantonese',
			'de': 'Kantonesisch',
			'fr': 'Cantonais',
			'pt-br': 'Cantonês',
			'ru': 'кантонский'
		},
		'chinese': {
			'en': 'Chinese',
			'de': 'Chinesisch',
			'fr': 'Chinois',
			'pt-br': 'Chinês',
			'ru': 'китайский'
		},
		'czech': {
			'en': 'Czech',
			'de': 'Tschechisch',
			'fr': 'Tchèque',
			'pt-br': 'Checo',
			'ru': 'чешский'
		},
		'danish': {
			'en': 'Danish',
			'de': 'Dänisch',
			'fr': 'Danois',
			'pt-br': 'Dinamarquês',
			'ru': 'датский'
		},
		'dutch': {
			'en': 'Dutch',
			'de': 'Niederländisch',
			'fr': 'Hollandais',
			'pt-br': 'Holandês',
			'ru': 'недерландский'
		},
		'english': {
			'en': 'English',
			'de': 'Englisch',
			'fr': 'Anglais',
			'pt-br': 'Inglês',
			'ru': 'английский'
		},
		'finnish': {
			'en': 'Finnish',
			'de': 'Finnisch',
			'fr': 'Finnois',
			'pt-br': 'Finlandês',
			'ru': 'финский'
		},
		'french': {
			'en': 'French',
			'de': 'Französisch',
			'fr': 'Français',
			'pt-br': 'Francês',
			'ru': 'французский'
		},
		'german': {
			'en': 'German',
			'de': 'Deutsch',
			'fr': 'Allemand',
			'pt-br': 'Alemão',
			'ru': 'немецкий'
		},
		'greek': {
			'en': 'Greek',
			'de': 'Griechisch',
			'fr': 'Grec',
			'pt-br': 'Grego',
			'ru': 'греческий'
		},
		'hindi': {
			'en': 'Hindi',
			'de': 'Hindi',
			'fr': 'Hindi'
		},
		'hungarian': {
			'en': 'Hungarian',
			'de': 'Ungarisch',
			'fr': 'Hongrois',
			'pt-br': 'Húngaro',
			'ru': 'венгерский'
		},
		'indonesian': {
			'en': 'Indonesian',
			'de': 'Indonesisch',
			'fr': 'Indonésien',
			'pt-br': 'Indonésio',
			'ru': 'индонезийский'
		},
		'italian': {
			'en': 'Italian',
			'de': 'Italienisch',
			'fr': 'Italien',
			'pt-br': 'Italiano',
			'ru': 'итальянский'
		},
		'japanese': {
			'en': 'Japanese',
			'de': 'Japanisch',
			'fr': 'Japonais',
			'pt-br': 'Japonês',
			'ru': 'японский'
		},
		'korean': {
			'en': 'Korean',
			'de': 'Koreanisch',
			'fr': 'Coréen',
			'pt-br': 'Coreano',
			'ru': 'корейский'
		},
		'latvian': {
			'en': 'Latvian',
			'de': 'Lettisch',
			'fr': 'Letton',
			'pt-br': 'Letão',
			'ru': 'латышский'
		},
		'lithuanian': {
			'en': 'Lithuanian',
			'de': 'Litauisch',
			'fr': 'Lituanien',
			'pt-br': 'Lituano',
			'ru': 'литовский'
		},
		'norwegian': {
			'en': 'Norwegian',
			'de': 'Norwegisch',
			'fr': 'Norvégien',
			'pt-br': 'Norueguês',
			'ru': 'норвежский'
		},
		'polish': {
			'en': 'Polish',
			'de': 'Polnisch',
			'fr': 'Polonais',
			'pt-br': 'Polonês',
			'ru': 'польский'
		},
		'portuguese': {
			'en': 'Portuguese',
			'de': 'Portugiesisch',
			'fr': 'Portugais',
			'pt-br': 'Português',
			'ru': 'португальский'
		},
		'romanian': {
			'en': 'Romanian',
			'de': 'Rumänisch',
			'fr': 'Roumain'
		},
		'russian': {
			'en': 'Russian',
			'de': 'Russisch',
			'fr': 'Russe',
			'pt-br': 'Russo',
			'ru': 'русский'
		},
		'slovak': {
			'en': 'Slovak',
			'de': 'Slowakisch',
			'fr': 'Slovaque',
			'pt-br': 'Eslovaco',
			'ru': 'словацкий'
		},
		'spanish': {
			'en': 'Spanish',
			'de': 'Spanisch',
			'fr': 'Espagnol',
			'pt-br': 'Espanhol',
			'ru': 'испанский'
		},
		'swedish': {
			'en': 'Swedish',
			'de': 'Schwedisch',
			'fr': 'Suédois',
			'pt-br': 'Sueco',
			'ru': 'шведский'
		},
		'thai': {
			'en': 'Thai',
			'de': 'Thailändisch',
			'fr': 'Thaï',
			'pt-br': 'Tailandês',
			'ru': 'тайский'
		},
		'turkish': {
			'en': 'Turkish',
			'de': 'Türkisch',
			'fr': 'Turc',
			'pt-br': 'Turco',
			'ru': 'турецкий'
		},
		'ukrainian': {
			'en': 'Ukrainian',
			'de': 'Ukrainisch',
			'fr': 'Ukrainien',
			'pt-br': 'Ucraniano',
			'ru': 'украинский'
		},
		'vietnamese': {
			'en': 'Vietnamese',
			'de': 'Vietnamesisch',
			'fr': 'Vietnamien',
			'pt-br': 'Vietnamita',
			'ru': 'вьетнамский'
		}
	};
	return function(key){
		return $text[key] && ($text[key][lang] || $text[key]['en']) || '';
	};
})();

$.when( $.ready ).then(function() {
	var sort = function( a, b ) {
		return ( $(b).text() ) < ( $(a).text() ) ? 1 : -1;
	};
	var plang = $('#p-lang');	
	var plangUL = plang.find('ul');
	var interwikis = plangUL.find('li[class^="interlanguage-link"]').detach();
	if ( interwikis.length > 0 ) {
		var gtPre = 'https://translate.google.com/translate?sl=auto&tl=' + lang + '&u=';
		var hardLangs = {
			'العربية':'arabic',
			'Български':'bulgarian',
			'粵語':'cantonese',
			'中文':'chinese',
			'Čeština':'czech',
			'Dansk':'danish',
			'Nederlands':'dutch',
			'English':'english',
			'Français':'french',
			'Suomi':'finnish',
			'Deutsch':'german',
			'Ελληνικά':'greek',
			'हिन्दी':'hindi',
			'Magyar':'hungarian',
			'Bahasa Indonesia':'indonesian',
			'Italiano':'italian',
			'日本語':'japanese',
			'한국어':'korean',
			'Latviešu':'latvian',
			'Lietuvių':'lithuanian',
			'Norsk':'norwegian',
			'Polski':'polish',
			'Português':'portuguese',
			'Română':'romanian',
			'Русский':'russian',
			'Slovenčina':'slovak',
			'Español':'spanish',
			'Svenska':'swedish',
			'ไทย':'thai',
			'Türkçe':'turkish',
			'Українська':'ukrainian',
			'Tiếng Việt':'vietnamese'
		};
		var googleSupported = ['afrikaans', 'albanian', 'amharic', 'arabic', 'armenian', 'azerbaijani', 'basque', 'belarusian', 'bengali', 'bosnian',
			'bulgarian', 'burmese', 'catalan', 'cebuan', 'chewa', 'chinese', 'corsican', 'croatian', 'czech', 'danish', 'dutch', 'english', 'esperanto',
			'estonian', 'filipino', 'finnish', 'french', 'frisian', 'galician', 'georgian', 'german', 'greek', 'gujarati', 'haitian', 'hawaiian', 'hmong',
			'igbo', 'creole', 'hausa', 'hebrew', 'hindi', 'hungarian', 'icelandic', 'indonesian', 'irish', 'italian', 'japanese', 'javanese', 'kannada',
			'kazakh', 'khmer', 'kinyarwanda', 'korean', 'kurmanji', 'kyrgyz', 'lao', 'latin', 'latvian', 'lithuanian', 'luxembourgish', 'macedonian',
			'malagasy', 'malay', 'malayalam', 'maltese', 'maori', 'marathi', 'mongolian', 'nepali', 'norwegian', 'odia', 'pashto', 'persian', 'polish',
			'portuguese', 'punjabi', 'romanian', 'russian', 'samoan', 'scottish gaelic', 'serbian', 'shona', 'sindhi', 'sinhala', 'slovak', 'slovenian',
			'somali', 'sotho', 'spanish', 'sundanese', 'swahili', 'swedish', 'tajik', 'tamil', 'tatar', 'telugu', 'thai', 'turkish', 'turkmen', 'ukrainian',
			'urdu', 'uyghur', 'uzbek', 'vietnamese', 'welsh', 'xhosa', 'yiddish', 'yoruba', 'zulu'];
		
		interwikis.find('a').each( function() {
			var $this = $(this);
			var origLangName = $this.text();
			if ( origLangName !== null ) {
				var newLangName = 'undefined_language';
				var hrefs = $this.attr('href');
				if (hardLangs[ origLangName ]) {
					newLangName = hardLangs[ origLangName ];
					$this.text( l10n(newLangName) ).removeAttr('lang style');
				}

				var classes = "external gtrans";
				if (googleSupported.indexOf(newLangName) < 0)
					classes += " gtrans-unsupported";

				$('<a></a>', {
					'class': classes,
					'target': '_blank',
					'href': gtPre + hrefs,
					'title': l10n('googletranslate').replace('$lang$', l10n(newLangName))
				}).insertAfter( $this ).before(' ');
				if ( $this.text().length > 17 )  $this.html( $this.html().replace('-','- ').replace(' ', '<br/>') );
			}
		});
		plangUL.prepend( interwikis.sort(sort) );
	}
});