ব্যবহারকারী: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;
}