User:Xiplus/js/TranslateTextVariants.js

维基百科,自由的百科全书

注意:保存之后,你必须清除浏览器缓存才能看到做出的更改。Google ChromeFirefoxMicrosoft EdgeSafari:按住⇧ Shift键并单击工具栏的“刷新”按钮。参阅Help:绕过浏览器缓存以获取更多帮助。

// <nowiki>

(function() {
	window.TranslateTextVariants = function(text, lang) {
		return new Promise(function(resolve, reject) {
			var zhwpapi;
			if (mw.config.get('wgDBname') === 'zhwiki') {
				var zhwpapi = new mw.Api();
			} else {
				var zhwpapi = new mw.ForeignApi(
					'//zh.wikipedia.org/w/api.php',
					{ anonymous: true }
				);
			}

			text = text.replace(/[[\]{}<>|:*'_#&\s]/gim, function(s) {
				return "&#" + s.charCodeAt(0) + ";";
			});
			text = text.replace(/(&#91;&#91;)((?:(?!&#124;)(?!&#93;).)+?)(&#124;(?:(?!&#93;).)+?&#93;&#93;)/g, '$1-{$2}-$3');
			text = text.replace(/-&#123;(.+?)&#125;-/g, function(s) {
				return s
					.replace('-&#123;', '-{')
					.replace('&#125;-', '}-')
					.replace(/&#124;/g, '|')
					.replace(/&#32;/g, ' ')
					.replace(/&#61;/g, '=')
					.replace(/&#62;/g, '>')
					.replace(/&#58;/g, ':')
			});

			zhwpapi.parse(
				'{{NoteTA|G1=IT|G2=MediaWiki}}<div id="TVcontent">' + text + '</div>',
				{
					'uselang': lang,
					'prop': 'text'
				}
			).then(function(data) {
				var newtext = $('<div/>').html(data).find('#TVcontent').text();
				resolve(newtext);
			}, function(err) {
				reject(err);
			});
		});
	};

})();

// </nowiki>