<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ar">
	<id>http://www.copticpedia.org/index.php?action=history&amp;feed=atom&amp;title=%D9%85%D9%8A%D8%AF%D9%8A%D8%A7%D9%88%D9%8A%D9%83%D9%8A%3AGadget-LinkTranslator.js</id>
	<title>ميدياويكي:Gadget-LinkTranslator.js - تاريخ المراجعة</title>
	<link rel="self" type="application/atom+xml" href="http://www.copticpedia.org/index.php?action=history&amp;feed=atom&amp;title=%D9%85%D9%8A%D8%AF%D9%8A%D8%A7%D9%88%D9%8A%D9%83%D9%8A%3AGadget-LinkTranslator.js"/>
	<link rel="alternate" type="text/html" href="http://www.copticpedia.org/index.php?title=%D9%85%D9%8A%D8%AF%D9%8A%D8%A7%D9%88%D9%8A%D9%83%D9%8A:Gadget-LinkTranslator.js&amp;action=history"/>
	<updated>2026-06-26T03:34:28Z</updated>
	<subtitle>تاريخ التعديل لهذه الصفحة في الويكي</subtitle>
	<generator>MediaWiki 1.41.1</generator>
	<entry>
		<id>http://www.copticpedia.org/index.php?title=%D9%85%D9%8A%D8%AF%D9%8A%D8%A7%D9%88%D9%8A%D9%83%D9%8A:Gadget-LinkTranslator.js&amp;diff=8408&amp;oldid=prev</id>
		<title>Gerges: مراجعة واحدة</title>
		<link rel="alternate" type="text/html" href="http://www.copticpedia.org/index.php?title=%D9%85%D9%8A%D8%AF%D9%8A%D8%A7%D9%88%D9%8A%D9%83%D9%8A:Gadget-LinkTranslator.js&amp;diff=8408&amp;oldid=prev"/>
		<updated>2021-03-19T00:35:40Z</updated>

		<summary type="html">&lt;p&gt;مراجعة واحدة&lt;/p&gt;
&lt;p&gt;&lt;b&gt;صفحة جديدة&lt;/b&gt;&lt;/p&gt;&lt;div&gt;//[[:en:User:Ebraminio/ArticleTranslator.js]]; [[ويكيبيديا:الميدان/تقنية/05/2012#مترجم]]&lt;br /&gt;
// &amp;lt;nowiki&amp;gt;&lt;br /&gt;
/*jslint regexp: true */&lt;br /&gt;
/*browser: true*/&lt;br /&gt;
/*global $: false, wgNamespaceNumber: false, wgAction: false, mw: false,&lt;br /&gt;
  wgScriptPath: false, wgPageContentLanguage: false, window: false */&lt;br /&gt;
&lt;br /&gt;
if (window.globalTranslatorConfigs === undefined) {&lt;br /&gt;
    var globalTranslatorConfigs = {&lt;br /&gt;
        'homeWiki': window.homeWiki,&lt;br /&gt;
        'fromLang': window.fromLang,&lt;br /&gt;
        'translatorBarFormat': window.translatorBarFormat,&lt;br /&gt;
        'templateTranslatorText': window.templateTranslatorText,&lt;br /&gt;
        'removeLinksAliasesText': window.removeLinksAliasesText,&lt;br /&gt;
        'doneText': window.doneText&lt;br /&gt;
    };&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
var translatorConfigs = {&lt;br /&gt;
	'homeWiki': 'ar',&lt;br /&gt;
    'fromLang': 'en',&lt;br /&gt;
    'translatorBarFormat': '$1ترجم$2 الوصلات $4&amp;amp;nbsp;⇒&amp;amp;nbsp;$3',&lt;br /&gt;
    'templateTranslatorText': 'ترجم القوالب',&lt;br /&gt;
    'removeLinksAliasesText': 'أخف عناوين الوصلات',&lt;br /&gt;
    'doneText': 'تم',&lt;br /&gt;
    'enableTemplateTranslation': true,&lt;br /&gt;
    'removeLinksAliases': true,&lt;br /&gt;
    'enableNeedingShow': false,&lt;br /&gt;
    'name': 'اسم الصفحة',&lt;br /&gt;
    'interwikiCount': 'عدد وصلات اللغات فيها',&lt;br /&gt;
    'linkedTo': 'عدد الوصلات فيها',&lt;br /&gt;
    'listOfUnavailablePagesOn': 'الصفحات غير الموجودة في '&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
$.extend(translatorConfigs, globalTranslatorConfigs);&lt;br /&gt;
&lt;br /&gt;
// getting the last translator preference from the cookie&lt;br /&gt;
if ($.cookie('homeWiki') !== null) {&lt;br /&gt;
    translatorConfigs.homeWiki = $.cookie('homeWiki');&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
if ($.cookie('fromLang') !== null) {&lt;br /&gt;
    translatorConfigs.fromLang = $.cookie('fromLang');&lt;br /&gt;
}&lt;br /&gt;
//&lt;br /&gt;
&lt;br /&gt;
// Regexp.escape() from: http://80.68.89.23/2006/Jan/20/escape/&lt;br /&gt;
RegExp.escape = function (text) {&lt;br /&gt;
    'use strict';&lt;br /&gt;
    return text.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g, '\\$&amp;amp;');&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
function Translator() {&lt;br /&gt;
    'use strict';&lt;br /&gt;
&lt;br /&gt;
    var translationTextArea,&lt;br /&gt;
        progressCount,&lt;br /&gt;
        itemsCount,&lt;br /&gt;
        ajaxUrl;&lt;br /&gt;
&lt;br /&gt;
    function getOrigin() {&lt;br /&gt;
        var result = window.location.protocol + '//' + window.location.host;&lt;br /&gt;
        if (window.location.port !== '') {&lt;br /&gt;
            result = result + ':' + window.location.port;&lt;br /&gt;
        }&lt;br /&gt;
        return result;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    function getOriginOfWikiLang(lang) {&lt;br /&gt;
        return getOrigin().replace(wgPageContentLanguage, lang);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    function setAjaxUrl() {&lt;br /&gt;
        var tailOfApiUrl = '/api.php?action=query&amp;amp;prop=langlinks&amp;amp;redirects=&amp;amp;format=json&amp;amp;lllimit=500&amp;amp;titles=';&lt;br /&gt;
        if (translatorConfigs.enableNeedingShow === true) {&lt;br /&gt;
            tailOfApiUrl = '/api.php?action=query&amp;amp;prop=langlinks|links&amp;amp;redirects=&amp;amp;format=json&amp;amp;pllimit=500&amp;amp;lllimit=500&amp;amp;titles=';&lt;br /&gt;
        }&lt;br /&gt;
        ajaxUrl = getOriginOfWikiLang(translatorConfigs.fromLang) + wgScriptPath + tailOfApiUrl;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    function getSelectedTextLinks() {&lt;br /&gt;
        // borrowed from: http://stackoverflow.com/questions/4220478 :)&lt;br /&gt;
        var selection,&lt;br /&gt;
            selectionAncestor,&lt;br /&gt;
            range,&lt;br /&gt;
            allWithinRangeParent,&lt;br /&gt;
            allSelected,&lt;br /&gt;
            i,&lt;br /&gt;
            el;&lt;br /&gt;
&lt;br /&gt;
        // if `window.getSelection` is not defined (on IE) return nothing.&lt;br /&gt;
        if (window.getSelection === undefined) {&lt;br /&gt;
            return [];&lt;br /&gt;
        }&lt;br /&gt;
        selection = window.getSelection();&lt;br /&gt;
&lt;br /&gt;
        // if nothing is selected, return empty array&lt;br /&gt;
        if (selection.isCollapsed) {&lt;br /&gt;
            return [];&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        range = selection.getRangeAt(0);&lt;br /&gt;
        selectionAncestor = range.commonAncestorContainer;&lt;br /&gt;
        if (selectionAncestor.getElementsByTagName === undefined) { // if it is not a formal HTML selection&lt;br /&gt;
            return [];&lt;br /&gt;
        }&lt;br /&gt;
        allWithinRangeParent = selectionAncestor.getElementsByTagName('a');&lt;br /&gt;
&lt;br /&gt;
        allSelected = [];&lt;br /&gt;
        for (i = 0; (el = allWithinRangeParent[i]) !== undefined; i += 1) {&lt;br /&gt;
            // The second parameter says to include the element &lt;br /&gt;
            // even if it's not fully selected&lt;br /&gt;
            if (selection.containsNode(el, true)) {&lt;br /&gt;
                allSelected.push(el);&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
        return allSelected;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    /*jslint unparam: true*/ // I don't want use key parameter in closures!&lt;br /&gt;
    function increaseProgressCount() {&lt;br /&gt;
        progressCount = progressCount + 1;&lt;br /&gt;
        $('#translatorProgress').attr('value', progressCount);&lt;br /&gt;
&lt;br /&gt;
        if (progressCount === itemsCount) {&lt;br /&gt;
            $('#translatorProgress').hide('slow');&lt;br /&gt;
            $('#translatorStatus').css('font-weight', 'bold').text(translatorConfigs.doneText).show('slow');&lt;br /&gt;
            $( &amp;quot;.translatorAddedcontent&amp;quot; ).prev().css( &amp;quot;color&amp;quot;, &amp;quot;lightblue&amp;quot; );&lt;br /&gt;
            if (translatorConfigs.enableNeedingShow) {&lt;br /&gt;
                var links = [],&lt;br /&gt;
                    result,&lt;br /&gt;
                    linksCount,&lt;br /&gt;
                    titleExistance = {},&lt;br /&gt;
                    title;&lt;br /&gt;
                $('.translatorNeededLink').each(function (k, v) {&lt;br /&gt;
                    title = $(v).attr('data-title');&lt;br /&gt;
                    if (titleExistance[title] === true) {&lt;br /&gt;
                        return;&lt;br /&gt;
                    }&lt;br /&gt;
                    titleExistance[title] = true;&lt;br /&gt;
                    linksCount = $(v).attr('data-links-to-count');&lt;br /&gt;
                    if (parseInt(linksCount, 10) === 500) {&lt;br /&gt;
                        linksCount = '500+';&lt;br /&gt;
                    }&lt;br /&gt;
                    links.push([title, parseInt($(v).attr('data-interwikis'), 10), linksCount]);&lt;br /&gt;
                });&lt;br /&gt;
                links = links.sort(function (x, y) { return y[1] - x[1]; });&lt;br /&gt;
                result = '&amp;lt;table class=&amp;quot;wikitable sortable&amp;quot; &amp;gt;&amp;lt;tr&amp;gt;&amp;lt;th&amp;gt;' + translatorConfigs.name + '&amp;lt;/th&amp;gt;&amp;lt;th&amp;gt;' + translatorConfigs.interwikiCount + '&amp;lt;/th&amp;gt;&amp;lt;th&amp;gt;' + translatorConfigs.linkedTo + '&amp;lt;/th&amp;gt;&amp;lt;/tr&amp;gt;' + links.map(function (x) { return '&amp;lt;tr&amp;gt;&amp;lt;td style=&amp;quot;unicode-bidi: plaintext;&amp;quot;&amp;gt;&amp;lt;a href=&amp;quot;' + x[0] + '&amp;quot;&amp;gt;' + x[0] + '&amp;lt;/a&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;' + x[1] + '&amp;lt;/td&amp;gt;&amp;lt;td&amp;gt;' + x[2] + '&amp;lt;/tr&amp;gt;'; }).join('') + '&amp;lt;/table&amp;gt;';&lt;br /&gt;
                $('#translatorPlusContainer').remove();&lt;br /&gt;
                $('&amp;lt;li style=&amp;quot;line-height: 1.25;&amp;quot; id=&amp;quot;translatorPlusContainer&amp;quot;&amp;gt;' + translatorConfigs.listOfUnavailablePagesOn + ' ' + translatorConfigs.homeWiki + '.wiki:\n&amp;lt;div style=&amp;quot;white-space: pre-line;&amp;quot;&amp;gt;' + result + '&amp;lt;/div&amp;gt;&amp;lt;/li&amp;gt;').appendTo('#translatorBar');&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    function queryTranslationFromData(data) {&lt;br /&gt;
        var languageLinks,&lt;br /&gt;
            linksToCount = 0,&lt;br /&gt;
            translation;&lt;br /&gt;
&lt;br /&gt;
        if (data.query === undefined || data.query.pages === undefined) {&lt;br /&gt;
            return null;&lt;br /&gt;
        }&lt;br /&gt;
        $.each(data.query.pages, function (key, value) { // for retrieving first object index&lt;br /&gt;
            languageLinks = value.langlinks;&lt;br /&gt;
            if (value.links !== undefined) {&lt;br /&gt;
                linksToCount = value.links.length;&lt;br /&gt;
            }&lt;br /&gt;
        });&lt;br /&gt;
        if (languageLinks === undefined) {&lt;br /&gt;
            return null;&lt;br /&gt;
        }&lt;br /&gt;
        $.each(languageLinks, function (key, value) { // we can also use .filter here&lt;br /&gt;
            if (value.lang === translatorConfigs.homeWiki) {&lt;br /&gt;
                translation = value['*'];&lt;br /&gt;
            }&lt;br /&gt;
        });&lt;br /&gt;
        return {&lt;br /&gt;
            translation: translation,&lt;br /&gt;
            linksToCount: linksToCount,&lt;br /&gt;
            interwikis: languageLinks.length&lt;br /&gt;
        };&lt;br /&gt;
    }&lt;br /&gt;
    /*jslint unparam: false*/&lt;br /&gt;
&lt;br /&gt;
    function commonAjaxRunner(title, translatorFunction) {&lt;br /&gt;
        $.ajax({&lt;br /&gt;
            url: ajaxUrl + encodeURIComponent(title),&lt;br /&gt;
            complete: function () {&lt;br /&gt;
                increaseProgressCount();&lt;br /&gt;
            },&lt;br /&gt;
            success: function (data) {&lt;br /&gt;
                var translation = queryTranslationFromData(data);&lt;br /&gt;
                if (translation !== null) {&lt;br /&gt;
                    translatorFunction(translation);&lt;br /&gt;
                }&lt;br /&gt;
            },&lt;br /&gt;
            dataType: 'jsonp'&lt;br /&gt;
        });&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    function addTranslationToNode(node, translation) {&lt;br /&gt;
        if (translation.translation !== undefined) {&lt;br /&gt;
            node.after('&amp;lt;span class=&amp;quot;translatorAddedcontent&amp;quot;&amp;gt;' + '(&amp;lt;a href=&amp;quot;' + getOriginOfWikiLang(translatorConfigs.homeWiki) + mw.util.getUrl(translation.translation) + '&amp;quot;&amp;gt;' + translation.translation + '&amp;lt;/a&amp;gt;)&amp;lt;/span&amp;gt;');&lt;br /&gt;
        } else if (translatorConfigs.enableNeedingShow === true) {&lt;br /&gt;
            node.after('&amp;lt;span class=&amp;quot;translatorAddedcontent&amp;quot;&amp;gt;(&amp;lt;span style=&amp;quot;color: red;&amp;quot; class=&amp;quot;translatorNeededLink&amp;quot; data-title=&amp;quot;' + node.attr('title') + '&amp;quot; data-interwikis=&amp;quot;' + translation.interwikis + '&amp;quot; data-links-to-count=&amp;quot;' + translation.linksToCount + '&amp;quot;&amp;gt;' + translation.interwikis + '&amp;lt;/span&amp;gt;)&amp;lt;/span&amp;gt;');&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    function translateFromLanguageLinkNode(title, node) {&lt;br /&gt;
        commonAjaxRunner(title, function (translation) {&lt;br /&gt;
            addTranslationToNode(node, translation);&lt;br /&gt;
        });&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    // for [[Link]]s in textareas&lt;br /&gt;
    function addTranslationToTextareaLink(title, translation) {&lt;br /&gt;
        translationTextArea.val(translationTextArea.val().replace(&lt;br /&gt;
            new RegExp('(\\[\\[:?)' + RegExp.escape(title) + '((?:\\|[^\\]]*)?)(\\]\\])'),&lt;br /&gt;
            '$1' + translation + (translatorConfigs.removeLinksAliases ? '' : '$2') + '$3'&lt;br /&gt;
        ));&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    function translateFromLanguageLinks(title) {&lt;br /&gt;
        commonAjaxRunner(title, function (translation) {&lt;br /&gt;
            if (translation.translation !== undefined) {&lt;br /&gt;
                addTranslationToTextareaLink(title, translation.translation);&lt;br /&gt;
            }&lt;br /&gt;
        });&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    // for {{TemplateLink}}s in textareas&lt;br /&gt;
    function addTranslationToTextareaTemplateLink(title, translation) {&lt;br /&gt;
        translationTextArea.val(translationTextArea.val().replace(&lt;br /&gt;
            new RegExp('(\\{\\{\\s*(?:[Tt]emplate:)?)' + RegExp.escape(title) + '([\\n\\|\\}])'),&lt;br /&gt;
            '$1' + translation + '$2'&lt;br /&gt;
        ));&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    function translateFromLanguageTemplateLinks(title) {&lt;br /&gt;
        commonAjaxRunner('Template:' + title, function (translation) {&lt;br /&gt;
            if (translation.translation !== undefined) {&lt;br /&gt;
                addTranslationToTextareaTemplateLink(title, translation.translation.replace(/^.*?:/, ''));&lt;br /&gt;
            }&lt;br /&gt;
        });&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    function parseUrl(url) {&lt;br /&gt;
        if (url === undefined) {&lt;br /&gt;
            return undefined;&lt;br /&gt;
        }&lt;br /&gt;
        var match = url.match(/\/wiki\/([^#]*)/);&lt;br /&gt;
        if (match === null) {&lt;br /&gt;
            match = url.match(/\/w\/index\.php\?title=([^&amp;amp;#]*).*redlink=1/);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        if (match !== null) {&lt;br /&gt;
            return decodeURI(match[1]); // returns () matched text&lt;br /&gt;
        }&lt;br /&gt;
        return undefined;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    function getLinkTitle(link) { // previously it was link.attr(&amp;quot;title&amp;quot;)&lt;br /&gt;
        return parseUrl(link.attr('href'));&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    this.run = function () {&lt;br /&gt;
        setAjaxUrl();&lt;br /&gt;
        progressCount = 0;&lt;br /&gt;
        itemsCount = 0;&lt;br /&gt;
        $('#translatorStatus').hide(0);&lt;br /&gt;
        $('#translatorProgress').removeAttr('max').removeAttr('value');&lt;br /&gt;
        $('.translatorAddedcontent').remove();&lt;br /&gt;
&lt;br /&gt;
        var links,&lt;br /&gt;
            templates,&lt;br /&gt;
            i,&lt;br /&gt;
            title;&lt;br /&gt;
&lt;br /&gt;
        if (mw.config.get('wgAction') === 'view' || mw.config.get('wgAction') === 'purge' || mw.config.get('wgAction') === 'historysubmit') {&lt;br /&gt;
            links = getSelectedTextLinks();&lt;br /&gt;
            if (links.length === 0) {&lt;br /&gt;
                links = $('#bodyContent a');&lt;br /&gt;
            }&lt;br /&gt;
            $(links).filter('a').each(function () {&lt;br /&gt;
                var iter = $(this),&lt;br /&gt;
                    title = getLinkTitle(iter);&lt;br /&gt;
                if (title !== undefined) {&lt;br /&gt;
                    itemsCount = itemsCount + 1;&lt;br /&gt;
                    translateFromLanguageLinkNode(title, iter);&lt;br /&gt;
                }&lt;br /&gt;
            });&lt;br /&gt;
            $('#translatorProgress').show().attr('max', itemsCount);&lt;br /&gt;
        } else if (mw.config.get('wgAction') === 'edit' || mw.config.get('wgAction') === 'submit') {&lt;br /&gt;
            $('#wpTextbox2').remove(); // remove translation textarea if exists&lt;br /&gt;
&lt;br /&gt;
            if (translatorConfigs.fromLang === wgPageContentLanguage) {&lt;br /&gt;
                translationTextArea = $('#wpTextbox1').clone().attr({&lt;br /&gt;
                    'id': 'wpTextbox2'&lt;br /&gt;
                }).css({ // new color for translation textarea&lt;br /&gt;
                    'background-color': 'whitesmoke'&lt;br /&gt;
                }).val($('#wpTextbox1').val()); // this something that clone must do&lt;br /&gt;
                $('#wpTextbox1').before(translationTextArea); // put translation textarea before old&lt;br /&gt;
            } else {&lt;br /&gt;
                translationTextArea = $('#wpTextbox1');&lt;br /&gt;
            }&lt;br /&gt;
&lt;br /&gt;
            // for links&lt;br /&gt;
            links = translationTextArea.val().match(/\[\[.*?\]\]/g);&lt;br /&gt;
            templates = translationTextArea.val().match(/\{\{.*?[\n\|\}]/g);&lt;br /&gt;
&lt;br /&gt;
            itemsCount = -1;&lt;br /&gt;
            if (links !== null) {&lt;br /&gt;
                for (i = 0; i &amp;lt; links.length; i = i + 1) { // equals with &amp;lt;code&amp;gt;for (i in matched)&amp;lt;/code&amp;gt;&lt;br /&gt;
                    title = links[i].replace(/\[\[:?([^\]\|]*)\|?.*?\]\]/g, &amp;quot;$1&amp;quot;);&lt;br /&gt;
                    translateFromLanguageLinks(title);&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
                if (itemsCount === -1) {&lt;br /&gt;
                    itemsCount = 0;&lt;br /&gt;
                }&lt;br /&gt;
                itemsCount = itemsCount + links.length;&lt;br /&gt;
            }&lt;br /&gt;
&lt;br /&gt;
            if (templates !== null &amp;amp;&amp;amp; translatorConfigs.enableTemplateTranslation === true) {&lt;br /&gt;
                for (i = 0; i &amp;lt; templates.length; i = i + 1) { // equals with &amp;lt;code&amp;gt;for (i in matched)&amp;lt;/code&amp;gt;&lt;br /&gt;
                    title = templates[i].replace(/\{\{\s*(?:[Tt]emplate:)?(.*)\s*[\n\|\}]/g, '$1');&lt;br /&gt;
                    translateFromLanguageTemplateLinks(title);&lt;br /&gt;
                }&lt;br /&gt;
&lt;br /&gt;
                if (itemsCount === -1) {&lt;br /&gt;
                    itemsCount = 0;&lt;br /&gt;
                }&lt;br /&gt;
                itemsCount = itemsCount + templates.length;&lt;br /&gt;
            }&lt;br /&gt;
&lt;br /&gt;
            if (itemsCount !== -1) {&lt;br /&gt;
                $('#translatorProgress').show().attr('max', itemsCount);&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    };&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
var translator = new Translator();&lt;br /&gt;
$(function () {&lt;br /&gt;
    &amp;quot;use strict&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
    function initializeEditorFor(forEditable, inputForEditable, setVariableClosure) {&lt;br /&gt;
        $(forEditable).click(function (event) {&lt;br /&gt;
            event.preventDefault();&lt;br /&gt;
            $(forEditable).hide();&lt;br /&gt;
            $(inputForEditable).css('width', '2em').show().val($(forEditable).text());&lt;br /&gt;
        });&lt;br /&gt;
&lt;br /&gt;
        $(inputForEditable).keyup(function (event) {&lt;br /&gt;
            var selectedLanugage = $(this).val();&lt;br /&gt;
            if (event.keyCode === 13) {&lt;br /&gt;
                $(this).focusout(); // on enter&lt;br /&gt;
            } else if (event.keyCode === 27) {&lt;br /&gt;
                $(forEditable).show(); // on escape&lt;br /&gt;
                $(inputForEditable).hide().val(selectedLanugage);&lt;br /&gt;
            }&lt;br /&gt;
        }).focusout(function () {&lt;br /&gt;
            var selectedLanugage = $(this).val();&lt;br /&gt;
            if (/...?/.test(selectedLanugage)) {&lt;br /&gt;
                setVariableClosure(selectedLanugage);&lt;br /&gt;
                $(forEditable).html(selectedLanugage);&lt;br /&gt;
            }&lt;br /&gt;
            $(forEditable).show();&lt;br /&gt;
            $(inputForEditable).hide();&lt;br /&gt;
        });&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    $('#translatorBar').remove();&lt;br /&gt;
    var html = '&amp;lt;li style=&amp;quot;unicode-bidi: normal;margin-inline-end: 1em;list-style-type: none;display: inline-block; direction: rtl; margin-top: 0.5em; color: grey; letter-spacing: 0.5px;&amp;quot; id=&amp;quot;translatorBar&amp;quot;&amp;gt;' + translatorConfigs.translatorBarFormat;&lt;br /&gt;
    if (mw.config.get('wgAction') === &amp;quot;edit&amp;quot; || mw.config.get('wgAction') === &amp;quot;submit&amp;quot;) {&lt;br /&gt;
        html = html + ' &amp;lt;input type=&amp;quot;checkbox&amp;quot; name=&amp;quot;enableTemplateTranslation&amp;quot; id=&amp;quot;enableTemplateTranslation&amp;quot;&amp;gt;&amp;lt;label for=&amp;quot;enableTemplateTranslation&amp;quot;&amp;gt;' + translatorConfigs.templateTranslatorText + '&amp;lt;/label&amp;gt;';&lt;br /&gt;
        html = html + ' &amp;lt;input type=&amp;quot;checkbox&amp;quot; name=&amp;quot;removeLinksAliases&amp;quot; id=&amp;quot;removeLinksAliases&amp;quot;&amp;gt;&amp;lt;label for=&amp;quot;removeLinksAliases&amp;quot;&amp;gt;' + translatorConfigs.removeLinksAliasesText + '&amp;lt;/label&amp;gt;';&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    html = html + '&amp;lt;span id=&amp;quot;translatorStatus&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;progress id=&amp;quot;translatorProgress&amp;quot; style=&amp;quot;display: none;font-size:5px;margin-inline-start:1em&amp;quot;&amp;gt;يجري...&amp;lt;/progress&amp;gt;&amp;lt;/li&amp;gt;';&lt;br /&gt;
&lt;br /&gt;
    html = html.replace('$1', '(&amp;lt;a title=&amp;quot;البحث أو الترجمة في غوغل&amp;quot; id=&amp;quot;translator-equ&amp;quot; href=&amp;quot;#&amp;quot;&amp;quot;&amp;gt;…&amp;lt;/a&amp;gt;&amp;lt;span id=&amp;quot;translator-equ-links&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;) &amp;lt;a id=&amp;quot;translator-button&amp;quot; href=&amp;quot;#&amp;quot;&amp;gt; ');&lt;br /&gt;
    html = html.replace('$2', '&amp;lt;/a&amp;gt;&amp;lt;span&amp;gt; (&amp;lt;a id=&amp;quot;translator-plus&amp;quot; title=&amp;quot;المقالات الناقصة في العربية&amp;quot; href=&amp;quot;#&amp;quot;&amp;gt;-&amp;lt;/a&amp;gt;)&amp;lt;/span&amp;gt;');&lt;br /&gt;
    html = html.replace('$3', '&amp;lt;a id=&amp;quot;translator-from&amp;quot; href=&amp;quot;#&amp;quot;&amp;gt;' + translatorConfigs.fromLang + '&amp;lt;/a&amp;gt;&amp;lt;input style=&amp;quot;display: none&amp;quot; id=&amp;quot;translator-from-input&amp;quot;&amp;gt;');&lt;br /&gt;
    html = html.replace('$4', '&amp;lt;a id=&amp;quot;translator-to&amp;quot; href=&amp;quot;#&amp;quot;&amp;gt;' + translatorConfigs.homeWiki + '&amp;lt;/a&amp;gt;&amp;lt;input style=&amp;quot;display: none&amp;quot; id=&amp;quot;translator-to-input&amp;quot;&amp;gt;');&lt;br /&gt;
    if (mw.config.get('skin') == 'minerva') {&lt;br /&gt;
    	    		  $('#bodyContent').prepend(html);&lt;br /&gt;
&lt;br /&gt;
} else {&lt;br /&gt;
	    			$('#p-tb &amp;gt; div &amp;gt; ul').append(html);	&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
 &lt;br /&gt;
    	&lt;br /&gt;
&lt;br /&gt;
    &lt;br /&gt;
&lt;br /&gt;
    $('#translator-button').click(function (event) {&lt;br /&gt;
        event.preventDefault();&lt;br /&gt;
        translatorConfigs.enableNeedingShow = false;&lt;br /&gt;
        translator.run();&lt;br /&gt;
    });&lt;br /&gt;
    &lt;br /&gt;
    $('#translator-equ').click(function (event) {&lt;br /&gt;
        event.preventDefault();&lt;br /&gt;
        $('#translator-equ-links').html('&amp;lt;a target=&amp;quot;_blank&amp;quot; href=&amp;quot;//translate.google.com/translate_t?sl=' + translatorConfigs.fromLang + '&amp;amp;tl=' + translatorConfigs.homeWiki + '&amp;amp;q=' + mw.config.get('wgTitle') + '&amp;quot;&amp;gt;جوجل: ترجمة&amp;lt;/a&amp;gt; | &amp;lt;a target=&amp;quot;_blank&amp;quot; href=\'//www.google.com/search?q=&amp;quot;' + mw.config.get('wgTitle') + '&amp;quot;&amp;amp;lr=lang_' + translatorConfigs.homeWiki + '\'&amp;gt;بحث باللغة الهدف&amp;lt;/a&amp;gt;');&lt;br /&gt;
    });&lt;br /&gt;
&lt;br /&gt;
    $('#translator-plus').click(function (event) {&lt;br /&gt;
        event.preventDefault();&lt;br /&gt;
        translatorConfigs.enableNeedingShow = true;&lt;br /&gt;
        translator.run();&lt;br /&gt;
    });&lt;br /&gt;
&lt;br /&gt;
    initializeEditorFor('#translator-to', '#translator-to-input', function (value) {&lt;br /&gt;
        translatorConfigs.homeWiki = value;&lt;br /&gt;
        $.cookie(&amp;quot;homeWiki&amp;quot;, value);&lt;br /&gt;
    });&lt;br /&gt;
&lt;br /&gt;
    initializeEditorFor('#translator-from', '#translator-from-input', function (value) {&lt;br /&gt;
        translatorConfigs.fromLang = value;&lt;br /&gt;
        $.cookie(&amp;quot;fromLang&amp;quot;, value);&lt;br /&gt;
    });&lt;br /&gt;
&lt;br /&gt;
    $('#enableTemplateTranslation').attr('checked', translatorConfigs.enableTemplateTranslation).click(function () {&lt;br /&gt;
        translatorConfigs.enableTemplateTranslation = this.checked;&lt;br /&gt;
    });&lt;br /&gt;
&lt;br /&gt;
    $('#removeLinksAliases').attr('checked', translatorConfigs.removeLinksAliases).click(function () {&lt;br /&gt;
        translatorConfigs.removeLinksAliases = this.checked;&lt;br /&gt;
    });&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
mw.util.addCSS(&amp;quot;#translator-equ, #translator-plus {font-family: monospace;} .translatorAddedcontent {font-size: small; padding-left: 5px; unicode-bidi: plaintext;font-family: serif;    color: red;} #translatorStatus {margin-right:1em}&amp;quot;);&lt;/div&gt;</summary>
		<author><name>Gerges</name></author>
	</entry>
</feed>