مدیاویکی:Gadget-TranslationAssistant.js
پرش به ناوبری
پرش به جستجو
نکته: پس از انتشار ممکن است برای دیدن تغییرات نیاز باشد که حافظهٔ نهانی مرورگر خود را پاک کنید.
- فایرفاکس / سافاری: کلید Shift را نگه دارید و روی دکمهٔ Reload کلیک کنید، یا کلیدهای Ctrl-F5 یا Ctrl-R را با هم فشار دهید (در رایانههای اپل مکینتاش کلیدهای ⌘-R)
- گوگل کروم: کلیدهای Ctrl+Shift+R را با هم فشار دهید (در رایانههای اپل مکینتاش کلیدهای ⌘-Shift-R)
- اینترنت اکسپلورر/ Edge: کلید Ctrl را نگهدارید و روی دکمهٔ Refresh کلیک کنید، یا کلیدهای Ctrl-F5 را با هم فشار دهید
- اپرا: Ctrl-F5 را بفشارید.
// Translation Assistnant tool, https://fa.wikipedia.org/wiki/MediaWiki:Gadget-TranslationAssistant.js
$.when($.ready, mw.loader.using(['mediawiki.util'])).then(function () {
'use strict';
if (['edit', 'submit'].indexOf(mw.config.get('wgAction')) === -1) {
return; // only for edit mode for now
}
var messages = (function () {
var translations = {
ar: {
translationHelper: 'مساعد الترجمة',
pleaseWait: 'انتظر لطفا…',
showWikiCode: 'اظهر كود الويكي'
},
ckb: {
translationHelper: 'کمک ترجمه',
pleaseWait: 'تکایە ڕاوەستن…',
showWikiCode: 'نیشاندانی ویکیکۆد'
},
en: {
translationHelper: 'Translation helper',
pleaseWait: 'Wait…',
showWikiCode: 'Show wikicode'
},
fa: {
translationHelper: 'ترجمهیار',
pleaseWait: 'صبر کنید…',
showWikiCode: 'نمایش ویکیکد'
},
ur: {
translationHelper: 'معاون مترجم',
pleaseWait: 'انتظار کریں۔۔۔',
showWikiCode: 'ویکی کوڈ دیکھیں'
}
};
return translations[mw.config.get('wgUserLanguage')] || translations.fa;
}());
function getTitle(page, source) {
return $.post('', {
from: mw.config.get('wgDBname'),
to: source + 'wiki',
p: page
}).then(function (result) {
return Object.keys(result).map(function (x) { return result[x]; })[0];
});
}
var enName = new mw.Uri().query.enName;
if (new mw.Uri().query.enName !== undefined) {
run(enName, 'en');
} else {
$('#t-translationhelper').remove();
var link = $(mw.util.addPortletLink(
'p-tb',
'#',
messages.translationHelper,
't-translationhelper'
));
$('a', link).click(function () {
$('#translationhelper-helperpage').remove();
var source = $('#translationhelper-source-langcode').text();
getTitle(mw.config.get('wgPageName'), source).then(function (title) {
run(title, source);
});
}).css('font-weight', 'bold');
link.append(' ', $('<span contenteditable id="translationhelper-source-langcode">en</span>').keypress(function (e) {
if (e.which !== 13) return;
$(this).blur();
e.preventDefault();
}).click(function () {
document.execCommand('selectAll', false, null);
}));
}
function run(page, source) {
if ($(window).width() < 960) {
return;
}
var enWikiFrame = $('<iframe>', {
src: 'https://' + source + '.wikipedia.org' + mw.util.getUrl(page) + '#tofawikiframe',
style: 'width: 100%; height: 100%;'
});
var enWikiSource = $('<textarea>', { style: 'display: none; width: 100%; height: 100%', dir: 'ltr', readonly: 'readonly' });
var helperPage = $('<div>', { id: 'translationhelper-helperpage' }).append(
$('<label>').append($('<input>', { type: 'checkbox' }).change(function () {
if (this.checked) {
enWikiFrame.hide();
enWikiSource.show().val(messages.pleaseWait);
$.Deferred().resolve().then(function (result) {
return window.tofawikipassenwikisource
? window.tofawikipassenwikisource
: getRawPage(page, source).then(function (result) {
return window.tofawikipassenwikisource = result;
});
}).then(function (result) {
enWikiSource.val(result);
});
} else {
enWikiFrame.show();
enWikiSource.hide();
}
}), ' ' + messages.showWikiCode), '<br>', enWikiFrame, enWikiSource
);
if (mw.config.get('tofawiki.sidebyside', true) === true) {
$('.wikiEditor-ui .wikiEditor-ui-view').css('width', '50%');
helperPage.attr('style', 'width: 50%; height: 500px; top: 0px; left: 0px; position: absolute;');
helperPage.insertAfter('.wikiEditor-ui .wikiEditor-ui-view');
} else {
helperPage.attr('style', 'width: 100%; height: 400px;');
helperPage.insertAfter('#wpTextbox1');
}
}
function getRawPage(page, source) {
return new mw.Api({ ajax: { url: '//' + source + '.wikipedia.org/w/api.php' } }).get({
action: 'query',
prop: 'revisions',
titles: page,
rvprop: 'content',
format: 'json',
origin: window.location.protocol + '//' + window.location.hostname
}).then(function (data) {
return data.query.pages && !data.query.pages[-1]
? Object.keys(data.query.pages).map(function (x) { return data.query.pages[x]; })[0].revisions[0]['*']
: '';
});
}
});