ব্যবহারকারী:মোহাম্মদ মারুফ/linkTranslator.js
লক্ষ্য করুন: প্রকাশ করার পর, পরিবর্তনগুলো দেখতে আপনাকে আপনার ব্রাউজারের ক্যাশে পরিষ্কার করার প্রয়োজন হতে পারে।
- ফায়ারফক্স / সাফারি: পুনরায় লোড-এ ক্লিক করার সময় শিফট টিপে ধরে রাখুন, অথবা হয় Ctrl-F5 বা Ctrl-R টিপুন (ম্যাকে ⌘-R টিপুন)
- গুগল ক্রোম: Ctrl-Shift-R (ম্যাকে ⌘-Shift-R) টিপুন
- ইন্টারনেট এক্সপ্লোরার / এজ: Ctrl ধরে রাখা অবস্থায় Refresh-এ ক্লিক করুন, অথবা Ctrl-F5 টিপুন
- অপেরা: Ctrl-F5 টিপুন।
(function () {
/*
****************************************
*** ব্যবহারকারী:মোহাম্মদ মারুফ/listTranslator.js: listTranslator module
****************************************
* Mode of invocation: translate list items
* Active on: only main and template namespace
* Config directives in: ব্যবহারকারী:মোহাম্মদ মারুফ/listTranslator.js
* creator: মোহাম্মদ মারুফ
* created on: 03 February, 2023
*/
if (
mw.config.get("wgNamespaceNumber") == 10 ||
mw.config.get("wgNamespaceNumber") == 0 ||
mw.config.get("wgNamespaceNumber") == 2
) {
const api = new mw.Api();
const lang = mw.config.get("wgPageContentLanguage");
const page = mw.config.get("wgPageName");
const ForeignApi = new mw.ForeignApi("https://en.wikipedia.org/w/api.php");
//get the list items
async function getLinks(callback) {
var links = [];
var params = {
action: "parse",
page: page,
prop: "links|wikiText",
format: "json",
formatversion: 2,
};
api.get(params).then(function (data) {
var link = data.parse.links;
for (var i = 0; i < link.length; i++) {
if (
link[i].ns == 0 &&
link[i].exists == true &&
link[i].title.search(/\w+/) > -1
) {
links.push(link[i].title);
}
}
callback(links, data.parse.wikitext);
});
}
//get the translation of the list items
var button = mw.util.addPortletLink(
"p-tb",
"#",
"লিস্ট অনুবাদ",
"t-translate"
);
$(button).click(function () {
getLinks(async function (links, text) {
var translatedLinks = [];
var params = {
action: "parse",
prop: "langlinks",
format: "json",
formatversion: 2,
};
for (var i = 0; i < links.length; i++) {
params.page = links[i];
var data = await ForeignApi.get(params);
var langLinks = data.parse.langlinks;
for (var j = 0; j < langLinks.length; j++) {
if (langLinks[j].lang == lang) {
translatedLinks.push([links[i], langLinks[j]]);
break;
}
}
}
for (var i = 0; i < translatedLinks.length; i++) {
var link = translatedLinks[i][0];
var translation = translatedLinks[i][1];
var params = {
action: "edit",
title: page,
};
var newText = text.replaceAll(link, translation);
if (text != newText) {
var params = {
action: "edit",
title: page,
text: newText,
summary: "Translated list items",
token: mw.user.tokens.get("editToken"),
};
var result = await api.postWithToken("csrf", params);
if (result.edit.result == "Success") {
alert("Translation successful");
location.reload();
} else {
alert("Translation failed");
}
}
}
});
});
}
})();