مستخدم:ASammour/checktranslate.js
![]() | يمكن توفير توثيق لسكربت المستخدم هذا في الصفحة : مستخدم:ASammour/checktranslate. |
ملاحظة: بعد الحفظ، قد يلزمك محو الاختزان لرؤية التغييرات ( ).
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);
}
}
}
});
}
});