ব্যবহারকারী:মোহাম্মদ মারুফ/refTranslator.js

উইকিপিডিয়া, মুক্ত বিশ্বকোষ থেকে

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

  • ফায়ারফক্স / সাফারি: পুনরায় লোড-এ ক্লিক করার সময় শিফট টিপে ধরে রাখুন, অথবা হয় Ctrl-F5 বা Ctrl-R টিপুন (ম্যাকে ⌘-R টিপুন)
  • গুগল ক্রোম: Ctrl-Shift-R (ম্যাকে ⌘-Shift-R) টিপুন
  • ইন্টারনেট এক্সপ্লোরার / এজ: Ctrl ধরে রাখা অবস্থায় Refresh-এ ক্লিক করুন, অথবা Ctrl-F5 টিপুন
  • অপেরা: Ctrl-F5 টিপুন।
(function () {
  /*
   ****************************************
   *** ব্যবহারকারী:মোহাম্মদ মারুফ/refTranslator.js: refTranslator module
   ****************************************
   * Mode of invocation:     trasnlation of references and citations
   * Active on:              only main namespace
   * Config directives in:   ব্যবহারকারী:মোহাম্মদ মারুফ/refTranslator.js
   * creator:                মোহাম্মদ মারুফ
   * created on:             23 December, 2022
   * version:                2.0
   */
  //load css file
  importStylesheetURI(
    "https://bn.wikipedia.org/w/index.php?title=ব্যবহারকারী:মোহাম্মদ মারুফ/default.css&action=raw&ctype=text/css"
  );
  //translations object
  var refTranslator = [
    [/{{cite\sweb/gi, "{{ওয়েব উদ্ধৃতি"],
    [/{{cite\sbook/gi, "{{বই উদ্ধৃতি"],
    [/{{cite\snews/gi, "{{সংবাদ উদ্ধৃতি"],
    [/{{cite\sjournal/gi, "{{সাময়িকী উদ্ধৃতি"],
    [/\|url\s*=/gi, "|ইউআরএল ="],
    [/\|url-access\s*=/gi, "|ইউআরএল-সংগ্রহ ="],
    [/\|title\s*=/gi, "|শিরোনাম ="],
    [/\|last\s*=/gi, "|শেষাংশ ="],
    [/\|first\s*=/gi, "|প্রথমাংশ ="],
    [/\|author-link\s*=/gi, "|লেখক-সংযোগ ="],
    [/\|last2\s*=/gi, "|শেষাংশ২ ="],
    [/\|first2\s*=/gi, "|প্রথমাংশ২ ="],
    [/\|author-link2\s*=/gi, "|লেখক-সংযোগ2 ="],
    [/\|date\s*=/gi, "|তারিখ ="],
    [/\|year\s*=/gi, "|বছর ="],
    [/\|orig-date\s*=/gi, "|প্রকৃত-বছর ="],
    [/\|editor-last\s*=/gi, "|সম্পাদক-শেষাংশ ="],
    [/\|editor-first\s*=/gi, "|সম্পাদক-প্রথমাংশ ="],
    [/\|editor-link\s*=/gi, "|সম্পাদক-সংযোগ ="],
    [/\|editor2-last\s*=/gi, "|সম্পাদক২-শেষাংশ ="],
    [/\|editor2-first\s*=/gi, "|সম্পাদক২-প্রথমাংশ ="],
    [/\|editor2-link\s*=/gi, "|সম্পাদক২-সংযোগ ="],
    [/\|department\s*=/gi, "|বিভাগ ="],
    [/\|website\s*=/gi, "|ওয়েবসাইট ="],
    [/\|series\s*=/gi, "|ধারাবাহিক ="],
    [/\|publisher\s*=/gi, "|প্রকাশক ="],
    [/\|agency\s*=/gi, "|এজেন্সি ="],
    [/\|location\s*=/gi, "|অবস্থান ="],
    [/\|page\s*=/gi, "|পাতা ="],
    [/\|pages\s*=/gi, "|পাতাসমূহ ="],
    [/\|at\s*=/gi, "|at ="],
    [/\|language\s*=/gi, "|ভাষা ="],
    [/\|script-title\s*=/gi, "|লিপির-শিরোনাম ="],
    [/\|trans-title\s*=/gi, "|অনূদিত-শিরোনাম ="],
    [/\|type\s*=/gi, "|ধরন ="],
    [/\|format\s*=/gi, "|বিন্যাস ="],
    [/\|arxiv\s*=/gi, "|arxiv ="],
    [/\|asin\s*=/gi, "|asin ="],
    [/\|bibcode\s*=/gi, "|বিবকোড ="],
    [/\|doi\s*=/gi, "|ডিওআই ="],
    [/\|doi-broken-date\s*=/gi, "|ডিওআই-ভাঙ্গার-তারিখ ="],
    [/\|isbn\s*=/gi, "|আইএসবিএন ="],
    [/\|issn\s*=/gi, "|issn ="],
    [/\|jfm\s*=/gi, "|জেএফএম ="],
    [/\|jstor\s*=/gi, "|jstor ="],
    [/\|lccn\s*=/gi, "|এলসিসিএন ="],
    [/\|mr\s*=/gi, "|mr ="],
    [/\|oclc\s*=/gi, "|oclc ="],
    [/\|ol\s*=/gi, "|ওএল ="],
    [/\|osti\s*=/gi, "|osti ="],
    [/\|pmc\s*=/gi, "|pmc ="],
    [/\|pmid\s*=/gi, "|pmid ="],
    [/\|rfc\s*=/gi, "|rfc ="],
    [/\|ssrn\s*=/gi, "|ssrn ="],
    [/\|zbl\s*=/gi, "|zbl ="],
    [/\|id\s*=/gi, "|আইডি ="],
    [/\|access-date\s*=/gi, "|সংগ্রহের-তারিখ ="],
    [/\|url-status\s*=/gi, "|ইউআরএল-অবস্থা ="],
    [/\|archive-url\s*=/gi, "|আর্কাইভের-ইউআরএল ="],
    [/\|archive-date\s*=/gi, "|আর্কাইভের-তারিখ ="],
    [/\|via\s*=/gi, "|মাধ্যম ="],
    [/\|quote\s*=/gi, "|উক্তি ="],
    [/\|ref\s*=/gi, "|সূত্র ="],
    [/\|postscript\s*=/gi, "|পুনশ্চ ="],
    [/\|last1\s*=/gi, "|শেষাংশ১ ="],
    [/\|first1\s*=/gi, "|প্রথমাংশ১ ="],
    [/\|author-link1\s*=/gi, "|লেখক-সংযোগ১ ="],
    [/\|last3\s*=/gi, "|শেষাংশ৩ ="],
    [/\|first3\s*=/gi, "|প্রথমাংশ৩ ="],
    [/\|author-link3\s*=/gi, "|লেখক-সংযোগ৩ ="],
    [/\|last4\s*=/gi, "|শেষাংশ৪ ="],
    [/\|first4\s*=/gi, "|প্রথমাংশ৪ ="],
    [/\|author-link4\s*=/gi, "|লেখক-সংযোগ৪ ="],
    [/\|last5\s*=/gi, "|শেষাংশ৫ ="],
    [/\|first5\s*=/gi, "|প্রথমাংশ৫ ="],
    [/\|author-link5\s*=/gi, "|লেখক-সংযোগ৫ ="],
    [/\|display-authors\s*=/gi, "|লেখক-প্রদর্শন ="],
    [/\|author-mask\s*=/gi, "|লেখক-ছদ্মনাম ="],
    [/\|name-list-style\s*=/gi, "|নামের-তালিকার-বিন্যাস ="],
    [/\|editor1-last\s*=/gi, "|সম্পাদক১-শেষাংশ ="],
    [/\|editor1-first\s*=/gi, "|সম্পাদক১-প্রথমাংশ ="],
    [/\|editor1-link\s*=/gi, "|সম্পাদক১-সংযোগ ="],
    [/\|editor3-last\s*=/gi, "|সম্পাদক৩-শেষাংশ ="],
    [/\|editor3-first\s*=/gi, "|সম্পাদক৩-প্রথমাংশ ="],
    [/\|editor3-link\s*=/gi, "|সম্পাদক৩-সংযোগ ="],
    [/\|editor4-last\s*=/gi, "|সম্পাদক৪-শেষাংশ ="],
    [/\|editor4-first\s*=/gi, "|সম্পাদক৪-প্রথমাংশ ="],
    [/\|editor4-link\s*=/gi, "|সম্পাদক৪-সংযোগ ="],
    [/\|editor5-last\s*=/gi, "|সম্পাদক৫-শেষাংশ ="],
    [/\|editor5-first\s*=/gi, "|সম্পাদক৫-প্রথমাংশ ="],
    [/\|editor5-link\s*=/gi, "|সম্পাদক৫-সংযোগ ="],
    [/\|display-editors\s*=/gi, "|সম্পাদক-প্রদর্শন ="],
    [/\|others\s*=/gi, "|অন্যান্য ="],
    [/\|journal\s*=/gi, "|journal ="],
    [/\|edition\s*=/gi, "|সংস্করণ ="],
    [/\|publication-place\s*=/gi, "|publication-place ="],
    [/\|publication-date\s*=/gi, "|প্রকাশনার-তারিখ ="],
    [/\|volume\s*=/gi, "|খণ্ড ="],
    [/\|issue\s*=/gi, "|issue ="],
    [/\|no-pp\s*=/gi, "|nopp ="],
    [/\|bibcode-access\s*=/gi, "|bibcode-access ="],
    [/\|biorxiv\s*=/gi, "|biorxiv ="],
    [/\|citeseerx\s*=/gi, "|citeseerx ="],
    [/\|doi-access\s*=/gi, "|doi-access ="],
    [/\|jstor-access\s*=/gi, "|jstor-access ="],
    [/\|ol-access\s*=/gi, "|ol-access ="],
    [/\|osti-access\s*=/gi, "|osti-access ="],
    [/\|layurl\s*=/gi, "|layurl ="],
  ];

  //get the page name
  var pagename = mw.config.get("wgPageName");
  //check if the page is in main namespace
  if (mw.config.get("wgNamespaceNumber") === 0 || 2) {
    //add a button to the page
    var button = $(
      mw.util.addPortletLink(
        "p-tb",
        "#",
        "অনুবাদক (সূত্র)",
        "refTranslator",
        "তথ্যসূত্র টেমপ্লেট অনুবাদ করুন",
        "",
        "#refTranslator"
      )
    );
    const api = new mw.Api();
    //button click event
    $(button).click(function () {
      api
        .edit(pagename, function (revision) {
          var text = modify(revision.content);
          return {
            text: text,
            summary: "অনুবাদ",
            minor: true,
            bot: false,
          };
        })
        .then(function () {
          location.reload();
        });
    });
  }
  //translator function
  function translator(data) {
    var text = data;
    for (var i = 0; i < refTranslator.length; i++) {
      text = text.replace(refTranslator[i][0], refTranslator[i][1]);
    }
    return text;
  }
  function modify(text) {
    //split the text
    var splittext = text
      .replace(/<ref(?!\s+name="(\w+|:\d)"\s*\/>)/gi, "<split")
      .replace(/<\/\s?ref/gi, "<split");
    var ref = splittext.split("<split");
    //now join the text
    var translatedText = "";
    var jointext = ref[0];
    for (var i = 1; i < ref.length; i++) {
      if (i % 2 == 0) {
        jointext += "</ref" + ref[i];
      } else {
        translatedText = translator(ref[i]);
        jointext += "<ref" + translatedText;
      }
    }
    return jointext;
  }
})();