লক্ষ্য করুন: প্রকাশ করার পর, পরিবর্তনগুলো দেখতে আপনাকে আপনার ব্রাউজারের ক্যাশে পরিষ্কার করার প্রয়োজন হতে পারে।

  • ফায়ারফক্স / সাফারি: পুনরায় লোড-এ ক্লিক করার সময় শিফট টিপে ধরে রাখুন, অথবা হয় Ctrl-F5 বা Ctrl-R টিপুন (ম্যাকে ⌘-R টিপুন)
  • গুগল ক্রোম: Ctrl-Shift-R (ম্যাকে ⌘-Shift-R) টিপুন
  • ইন্টারনেট এক্সপ্লোরার / এজ: Ctrl ধরে রাখা অবস্থায় Refresh-এ ক্লিক করুন, অথবা Ctrl-F5 টিপুন
  • অপেরা: Ctrl-F5 টিপুন।
(function () {
  /*
   ****************************************
   *** ব্যবহারকারী:মোহাম্মদ মারুফ/numTranslator.js: numTranslator module
   ****************************************
   * Mode of invocation:     translate numbers to bangla
   * Active on:              expect some namespace
   * Config directives in:   ব্যবহারকারী:মোহাম্মদ মারুফ/numTranslator.js
   * creator:                মোহাম্মদ মারুফ
   * created on:             23 December, 2022
   * last update:            1 Januarry, 2024
   * version:                2.0.0
   */
  "use strict";
  //get the page name
  var pagename = mw.config.get("wgPageName");
  //load css file
  mw.loader.load(
    "https://bn.wikipedia.org/w/index.php?title=ব্যবহারকারী:মোহাম্মদ মারুফ/default.css&action=raw&ctype=text/css",
    "text/css"
  );
  //check if the page is in main namespace
  if (mw.config.get("wgNamespaceNumber") === 0) {
    //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 () {
      api
        .edit(pagename, function (revision) {
          var text = revision.content;
          var result = translateNumbers(text);
          if (result !== text) {
            return {
              text: result,
              summary:
                "প্রায় সকল সংখ্যা, দিন ও তারিখগুলো স্বয়ংক্রিয়ভাবে বাংলায় অনুবাদ করা হলো",
              minor: true,
              bot: false,
            };
          } else {
            alert("কোনো ইংরেজি সংখ্যা পাওয়া যায়নি");
            return { text: result };
          }
        })
        .then(function () {
          location.reload();
        });
    });
  }
  //translate dates
  var translateDates = [
    [
      /(?<=(=|(\s+|\()))(January(,|\s+))|(?<=(=|(\s+|\()))(Jan\s+)/gi,
      " জানুয়ারি ",
    ],
    [
      /(?<=(=|(\s+|\()))(February(,|\s+))|(?<=(=|(\s+|\()))(Feb\s+)/gi,
      " ফেব্রুয়ারি ",
    ],
    [/(?<=(=|(\s+|\()))(March(,|\s+))|(?<=(=|(\s+|\()))(Mar\s+)/gi, " মার্চ "],
    [/(?<=(=|(\s+|\()))(April(,|\s+))|(?<=(=|(\s+|\()))(Apr\s+)/gi, " এপ্রিল "],
    [/(?<=(=|(\s+|\()))(May\s+)/gi, " মে "],
    [/(?<=(=|(\s+|\()))(June(,|\s+))|(?<=(=|(\s+|\()))(Jun\s+)/gi, " জুন "],
    [/(?<=(=|(\s+|\()))(July(,|\s+))|(?<=(=|(\s+|\()))(Jul\s+)/gi, " জুলাই "],
    [
      /(?<=(=|(\s+|\()))(August(,|\s+))|(?<=(=|(\s+|\()))(Aug\s+)/gi,
      " অগাস্ট ",
    ],
    [
      /(?<=(=|(\s+|\()))(September(,|\s+))|(?<=(=|(\s+|\()))(Sep\s+)/gi,
      " সেপ্টেম্বর ",
    ],
    [
      /(?<=(=|(\s+|\()))(October(,|\s+))|(?<=(=|(\s+|\()))(Oct\s+)/gi,
      " অক্টোবর ",
    ],
    [
      /(?<=(=|(\s+|\()))(November(,|\s+))|(?<=(=|(\s+|\()))(Nov\s+)/gi,
      " নভেম্বর ",
    ],
    [
      /(?<=(=|(\s+|\()))(December(,|\s+))|(?<=(=|(\s+|\()))(Dec\s+)/gi,
      " ডিসেম্বর ",
    ],
    [
      /(?<=(=|(\s+|\()))(Sunday(,|\s+))|(?<=(=|(\s+|\()))(Sun\s+)/gi,
      " রবিবার ",
    ],
    [
      /(?<=(=|(\s+|\()))(Monday(,|\s+))|(?<=(=|(\s+|\()))(Mon\s+)/gi,
      " সোমবার ",
    ],
    [
      /(?<=(=|(\s+|\()))(Tuesday(,|\s+))|(?<=(=|(\s+|\()))(Tue\s+)/gi,
      " মঙ্গলবার ",
    ],
    [
      /(?<=(=|(\s+|\()))(Wednesday(,|\s+))|(?<=(=|(\s+|\()))(Wed\s+)/gi,
      " বুধবার ",
    ],
    [
      /(?<=(=|(\s+|\()))(Thursday(,|\s+))|(?<=(=|(\s+|\()))(Thu\s+)/gi,
      " বৃহস্পতিবার ",
    ],
    [
      /(?<=(=|(\s+|\()))(Friday(,|\s+))|(?<=(=|(\s+|\()))(Fri\s+)/gi,
      " শুক্রবার ",
    ],
    [
      /(?<=(=|(\s+|\()))(Saturday(,|\s+))|(?<=(=|(\s+|\()))(Sat\s+)/gi,
      " শনিবার ",
    ],
    [/(?<=(=|(\s+|\()))(BC\s+)/gi, " খ্রিস্টাব্দ "],
    [/(?<=\d{4})s/gi, "এর দশকের"],
    [/(\s|\()hours?(\s|\))/gi, " ঘন্টা "],
    [/(\s|\()days?(\s|\))/gi, " দিন "],
    [/(\s|\()months?(\s|\))/gi, " মাস "],
    [/(\s|\()years?(\s|\))/gi, " বছর "],
    [/(\s|\()minutes?(\s|\))/gi, " মিনিট "],
    [/(\s|\()seconds?(\s|\))/gi, " সেকেন্ড "],
    [/(\s|\()weeks?(\s|\))/gi, " সপ্তাহ "],
    [/(\s|\()decades?(\s|\))/gi, " দশক "],
  ];
  function translateNumbers(data) {
    var result = data.replace(
      /((?<!(({|\[)[^|]+|.*:.*|"|<.+|\w+))\d+(?!(<\/.*>|"|\w+)))|((তারিখ|বছর|পাতাসমূহ).+?(\||\}))|(\s|\\>|)[\d,]+(\s)|(\(\d+\))/g,
      (match) => {
        var p = "";
        if (!match) return match;
        for (var i in match) {
          if (match[i].match(/\d/)) p += "০১২৩৪৫৬৭৮৯"[match[i]];
          else p += match[i];
        }
        return p;
      }
    );
    for (var i = 0; i < translateDates.length; i++) {
      var thisregex = translateDates[i][0];
      var thisreplace = translateDates[i][1];
      result = result.replace(thisregex, thisreplace);
    }
    return result;
  }
})();