مستخدم:ASammour/checktranslate.js

من ويكيبيديا، الموسوعة الحرة

ملاحظة: بعد الحفظ، قد يلزمك إفراغ الكاش لرؤية التغييرات.

var link = mw.util.addPortletLink('p-tb', '#', 'فاحص الترجمات', 'ca-checktranslate', 'توليد تقرير لفحص الترجمات');
$("#ca-checktranslate").click(function() {
    var lang = window.prompt("أدخل رمز اللغة");

    //مصفوفة لحفظ عدد المتغيرات
    var variables = [];
    var variables2 = [];
    var variables3 = [];
    var variables4 = [];
    var variables5 = [];
    var variables6 = [];

    //مصفوفة لحفظ عدد الوصلات
    var links = [];

    //مصفوفة لحفظ الرسائل التي لاتحتوي على الدالة
    var plural = [];

    //مصففوفة لحفظ الرسائل التي لا تحتوى على Gender
    var gender = [];

    //مصفوفة لحفظ دالة int
    var int = [];

    //مصفوفة لحفظ دالة SITENAME
    var sitename = [];
	
	var magicworden = []; //الكلمات السحرية
    var magicwordar = [];
    var specialAliasen = []; //تسميات الصفحات الخاصة
    var specialAliasar = [];

    var em = [];
    var strong = [];

    var ns = [];

    var http = [];
    var https = [];

    var colon = [];

    //النص النهائي
    var finalText = "===تقرير للترجمات التي بحاجة لمراجعة===\n<div style = 'direction:ltr;margin-left:20px;'>";

    //جلب المعلومات من الترجمات الإنجليزية
    $.get("https://raw.githubusercontent.com/wikimedia/mediawiki/master/languages/i18n/en.json", function(e) {
        e = JSON.parse(e);
        for (key in e) {
            var value = e[key].toString();

            variables.push({
                key: key,
                value: value.includes("$1")
            });
            variables2.push({
                key: key,
                value: value.includes("$2")
            });
            variables3.push({
                key: key,
                value: value.includes("$3")
            });
            variables4.push({
                key: key,
                value: value.includes("$4")
            });
            variables5.push({
                key: key,
                value: value.includes("$5")
            });
            variables6.push({
                key: key,
                value: value.includes("$6")
            });

            plural.push({
                key: key,
                value: value.toLowerCase().includes("{{plural")
            });

            gender.push({
                key: key,
                value: value.toLowerCase().includes("{{gender")
            });

            int.push({
                key: key,
                value: value.toLowerCase().includes("{{int")
            });

            em.push({
                key: key,
                value: value.toLowerCase().includes("<em")
            });
            
            strong.push({
                key: key,
                value: value.toLowerCase().includes("<strong")
            });            
            
            sitename.push({
                key: key,
                value: value.toLowerCase().includes("{{sitename")
            });

			ns.push({
                key: key,
                value: value.toLowerCase().includes("{{ns:")
            });            

			http.push({
                key: key,
                value: value.includes("http:")
            });   
            
			https.push({
                key: key,
                value: value.includes("https:")
            });            

			colon.push({
                key: key,
                value: value.toLowerCase().includes(":")
            });            

            links.push({
                key: key,
                value: (
                    ((value.split("]").length - 1) === (value.split("[").length - 1)) &&
                    ((value.split("{").length - 1) === (value.split("}").length - 1))
                )
            });
        }
    });

    $.get("https://raw.githubusercontent.com/wikimedia/mediawiki/master/languages/i18n/" + lang + ".json", function(e) {
        e = JSON.parse(e);
        for (key in e) {
            var value = e[key].toString();
            isMatch(key, value.includes("$1"), "عدد المتغيرات مختلف $1 مفقود", variables);
            isMatch(key, value.includes("$2"), "عدد المتغيرات مختلف $2 مفقود", variables2);
            isMatch(key, value.includes("$3"), "عدد المتغيرات مختلف $3 مفقود", variables3);
            isMatch(key, value.includes("$4"), "عدد المتغيرات مختلف $4 مفقود", variables4);
            isMatch(key, value.includes("$5"), "عدد المتغيرات مختلف $5 مفقود", variables5);
            isMatch(key, value.includes("$6"), "عدد المتغيرات مختلف $6 مفقود", variables6);

            isMatch(key, (
                ((value.split("]").length - 1) === (value.split("[").length - 1)) &&
                ((value.split("{").length - 1) === (value.split("}").length - 1))
            ), "عدد الوصلات مختلف", links);

            isMatch(key, value.toLowerCase().includes("{{plural"), "لا يوجد plural في إحدى الرسالتين", plural);
            isMatch(key, value.toLowerCase().includes("{{gender"), "لا يوجد gender في إحدى الرسالتين", gender);
            isMatch(key, value.toLowerCase().includes("{{int"), "لا يوجد int في إحدى الرسالتين", int);
            isMatch(key, value.toLowerCase().includes("{{sitename"), "لا يوجد sitename في إحدى الرسالتين", sitename);
            isMatch(key, value.toLowerCase().includes("<em"), "وسم em مفقود", em);
            isMatch(key, value.toLowerCase().includes("<strong"), "وسم strong مفقود", strong);    
            isMatch(key, value.toLowerCase().includes("{{ns:"), "لا يوجد ns في إحدى الرسالتين", ns); 
            isMatch(key, value.includes("http:"), "لا يوجد http في إحدى الرسالتين", http); 
            isMatch(key, value.includes("https:"), "لا يوجد https في إحدى الرسالتين", https); 
            isMatch(key, value.toLowerCase().includes(":"), "لا يوجد : في إحدى الرسالتين", colon); 
        }
		
		//جلب أخطاء الكلمات السحرية وتسميات الصفحات الخاصة
		
        finalText = finalText + "\n===ترجمات إضافية===\n";
        getMessages(magicworden, "$magicWords", "En");
        getMessages(magicwordar, "$magicWords", lang.substr(0, 1).toUpperCase() + lang.substr(1));
        getMessages(specialAliasen, "$specialPageAliases", "En");
        getMessages(specialAliasar, "$specialPageAliases", lang.substr(0, 1).toUpperCase() + lang.substr(1));


        setTimeout(function() {
            for (var i = 0; i < magicworden.length; i++) {
                if (!magicwordar.includes(magicworden[i].toString())) {
                    finalText = finalText + "\n#" + magicworden[i];
                }
            }

            for (var i = 0; i < specialAliasen.length; i++) {
                if (!specialAliasar.includes(specialAliasen[i].toString())) {
                    finalText = finalText + "\n#" + specialAliasen[i];
                }
            }
			
			//التعديل يحدث هنا

            new mw.Api().create('مستخدم:' + mw.config.get('wgUserName') + '/ترجمات بحاجة لمراجعة/' + lang, {
                    summary: 'تحديث'
                },
                finalText + "</div>"
            ).then(function() {
                alert("تم!");
                console.log('تم!');
            });
            new mw.Api().edit(
                    'مستخدم:' + mw.config.get('wgUserName') + '/ترجمات بحاجة لمراجعة/' + lang,
                    function() {
                        return {
                            text: finalText + "</div>",
                            summary: "تحديث",
                            minor: true
                        };
                    }
                )
                .then(function() {
                	window.location.href = "https://ar.wikipedia.org/wiki/"+ 'مستخدم:' + mw.config.get('wgUserName') + '/ترجمات بحاجة لمراجعة/' + lang;
                    console.log('تم!');
                });
        }, 5000);

    });



    function isMatch(key, count, subject, myarray) {
        var messages = [];
        for (var i = 0; i < myarray.length; i++) {
            if (myarray[i].key === key) {

                if (count !== myarray[i].value) {
                    finalText = finalText + "\n#[[:translatewiki:Mediawiki:" + key + "/" + lang + "]]>>>" + "[[:translatewiki:Mediawiki:" + key + "/en]] '''(" + subject + ")'''";
                }
            }
        }
    }


    function getMessages(myarray, regex, lang) {
        $.ajax({
            url: "https://raw.githubusercontent.com/wikimedia/mediawiki/master/languages/messages/Messages" + lang + ".php",
            method: "get",
            success: function(response) {
                var messages = (response).substring(response.indexOf(regex)).split("];")[0].split("\n");
                for (var i = 0; i < messages.length; i++) {
                    var message = messages[i].split("=>")[0].trim().toString();

                    if (message.startsWith("'")) {
                        myarray.push(message);
                    }
                }
            }
        });
    }
});