ব্যবহারকারী:Tanvir 360/numTranslator.js
লক্ষ্য করুন: প্রকাশ করার পর, পরিবর্তনগুলো দেখতে আপনাকে আপনার ব্রাউজারের ক্যাশে পরিষ্কার করার প্রয়োজন হতে পারে।
- ফায়ারফক্স / সাফারি: পুনরায় লোড-এ ক্লিক করার সময় শিফট টিপে ধরে রাখুন, অথবা হয় Ctrl-F5 বা Ctrl-R টিপুন (ম্যাকে ⌘-R টিপুন)
- গুগল ক্রোম: Ctrl-Shift-R (ম্যাকে ⌘-Shift-R) টিপুন
- এজ: Ctrl ধরে রাখা অবস্থায় Refresh-এ ক্লিক করুন, অথবা Ctrl-F5 টিপুন।
- অপেরা: Ctrl-F5 টিপুন।
// numTranslator.js
if (mw.config.get("wgNamespaceNumber") === 0, 2) {
// Add a button to the page
var button = mw.util.addPortletLink(
"p-tb",
"#",
"সংখ্যা অনুবাদ",
"numTranslator",
"ইংরেজি সংখ্যা বাংলায় অনুবাদ",
"numTr"
);
const api = new mw.Api();
// Button click event
$(button).click(function () {
// Get page name
var pagename = mw.config.get("wgPageName");
// Get revision content
api.get({
action: "query",
prop: "revisions",
titles: pagename,
rvprop: "content",
format: "json",
})
.then(function (data) {
var revision = data.query.pages[Object.keys(data.query.pages)[0]];
var text = revision.revisions[0]["*"];
var result = translateNumberToBangla(text);
// Exclude numbers inside [[File:]], [[চিত্র:]], <ref> tag, and template parameter names
result = result.replace(/\[\[(file|চিত্র):[^\]]+\]\]/gi, match => match);
result = result.replace(/<ref(?: [^>]*)?>[\s\S]*?<\/ref>/gi, match => match);
if (result !== text) {
// Apply translation to the content
api.post({
action: "edit",
title: pagename,
text: result,
summary:
"পাতার প্রায় সকল ইংরেজি সংখ্যা,দিন ও তারিখ স্বয়ংক্রিয়ভাবে বাংলায় অনুবাদ করা হলো",
minor: true,
bot: false,
token: mw.user.tokens.get("csrfToken"),
})
.then(function () {
// Reload the page after the edit
location.reload();
});
} else {
alert("কোনো ইংরেজি সংখ্যা পাওয়া যায়নি");
}
});
});
}
function translateNumberToBangla(text) {
const translations = {
'0': '০',
'1': '১',
'2': '২',
'3': '৩',
'4': '৪',
'5': '৫',
'6': '৬',
'7': '৭',
'8': '৮',
'9': '৯',
};
// Regular expression to match numbers outside <ref> tags, [[File:]], [[চিত্র:]], and inside template parameters
const regex = /(?![^<]*<\/ref>)(?!(?:\[\[(?:File|চিত্র):[^\]]+\]\]))(?<=\{\{[^{}]*\|.*?)(?<!\w\d+)\d+/g;
// Translate numbers outside excluded patterns
const translatedText = text.replace(regex, match => {
// Translate each digit in the matched number
return match.split('').map(digit => translations[digit] || digit).join('');
});
return translatedText;
}