diff options
Diffstat (limited to 'files/bn/mozilla/add-ons')
16 files changed, 1429 insertions, 0 deletions
diff --git a/files/bn/mozilla/add-ons/amo/policy/index.html b/files/bn/mozilla/add-ons/amo/policy/index.html new file mode 100644 index 0000000000..5fffee1dc8 --- /dev/null +++ b/files/bn/mozilla/add-ons/amo/policy/index.html @@ -0,0 +1,21 @@ +--- +title: AMO Policies +slug: Mozilla/Add-ons/AMO/Policy +tags: + - NeedsTranslation + - TopicStub +translation_of: Mozilla/Add-ons/AMO/Policy +--- +<p>{{AddonSidebar}}</p> + +<p>Mozilla is committed to ensuring a great add-ons experience for our users and developers. Please review the policies below before submitting your add-on.</p> + +<dl> + <dd></dd><dt><a href="/Mozilla/Add-ons/AMO/Policy/Agreement">Developer Agreement</a></dt> +<dd>Effective January 5, 2016</dd> <dt><a href="/Mozilla/Add-ons/AMO/Policy/Reviews">Review Process</a></dt> +<dd>Add-ons extend the core capabilities of Firefox, allowing users to modify and personalize their Web experience. A healthy add-on ecosystem, built on trust, is vital for developers to be successful and users to feel safe making Firefox their own. For these reasons, Mozilla requires all add-ons to comply with the following set of policies on acceptable practices. The below is not intended to serve as legal advice, nor is it intended to serve as a comprehensive list of terms to include in your add-on’s privacy policy.</dd> <dt><a href="/Mozilla/Add-ons/AMO/Policy/Featured">Featured Add-ons</a></dt> +<dd>How up-and-coming add-ons become featured and what's involved in the process. </dd> <strong><a href="/en-US/Add-ons#Contact_us">Contacting us</a></strong> + + <p> How to get in touch with us regarding these policies or your add-on.</p> + +</dl> diff --git a/files/bn/mozilla/add-ons/code_snippets/index.html b/files/bn/mozilla/add-ons/code_snippets/index.html new file mode 100644 index 0000000000..f104d2257b --- /dev/null +++ b/files/bn/mozilla/add-ons/code_snippets/index.html @@ -0,0 +1,194 @@ +--- +title: Code snippets +slug: Mozilla/Add-ons/Code_snippets +tags: + - Add-ons + - Code snippets + - Extensions + - NeedsTranslation + - TopicStub +translation_of: Archive/Add-ons/Code_snippets +--- +<p>এটা বিভিন্ন মোজিলা অ্যাপলিকেশনের এক্সটেনশন ডেভেলপারদের জন্য দরকারি কিছু কোড স্নিপেট<span style="font-size: 14px; line-height: 1.5;"> (ছোট ছোট কোডের নমুনা) </span><span style="font-size: 14px; line-height: 1.5;">এর তালিকা। এরমদ্ধে অনেক গুলো নমুনা স্বয়ং মোজিলার কোডে তো ব্যবহার হয়-ই আবার XULRunner অ্যাপ্লিকেশনের মধ্যেও ব্যবহার করা যায়।</span></p> +<p>কিভাবে প্রাথমিক কাজগুলো করতে হয়, এই নমুনাগুলো সেটা বর্ণনা করে।</p> +<h2 id="General" name="General">সাধারন বিষয়বস্তু</h2> +<dl> + <dt> + <a href="/en-US/docs/Code_snippets/From_articles" title="/en-US/docs/Code_snippets/From_articles">Examples and demos from MDN articles</a></dt> + <dd> + A collection of examples and demos from articles.</dd> + <dt> + <a href="/en-US/docs/Code_snippets/Windows" title="/en-US/docs/Code_snippets/Windows">Windows code</a></dt> + <dd> + Opening and manipulating windows</dd> + <dt> + <a href="/en-US/docs/Code_snippets/Toolbar" title="/en-US/docs/Code_snippets/Toolbar">Toolbar</a></dt> + <dd> + Toolbar related code</dd> + <dt> + <a href="/en-US/docs/Code_snippets/Sidebar" title="/en-US/docs/Code_snippets/Sidebar">Sidebar</a></dt> + <dd> + Sidebar related code</dd> + <dt> + <a href="/en-US/docs/Code_snippets/Forms">Forms</a></dt> + <dd> + Forms related code</dd> + <dt> + <a href="/en-US/docs/Code_snippets/XML" title="/en-US/docs/Code_snippets/XML">XML</a></dt> + <dd> + Code used to parse, write, manipulate, etc. XML</dd> + <dt> + <a href="/en-US/docs/Code_snippets/File_I_O" title="/en-US/docs/Code_snippets/File_I/O">File I/O</a></dt> + <dd> + Code used to read, write and process files</dd> + <dt> + <a href="/en-US/docs/Code_snippets/Drag_&_Drop" title="/en-US/docs/Code_snippets/Drag_&_Drop">Drag & Drop</a></dt> + <dd> + Code used to setup and handle drag and drop events</dd> + <dt> + <a href="/en-US/docs/Code_snippets/Dialogs_and_Prompts" title="/en-US/docs/Code_snippets/Dialogs_and_Prompts">Dialogs</a></dt> + <dd> + Code used to display and process dialog boxes</dd> + <dt> + <a href="/en-US/docs/Code_snippets/Alerts_and_Notifications" title="/en-US/docs/Code snippets/Alerts and Notifications">Alerts and Notifications </a></dt> + <dd> + Modal and non-modal ways to notify users</dd> + <dt> + <a href="/en-US/docs/Code_snippets/Preferences" title="/en-US/docs/Code_snippets/Preferences">Preferences</a></dt> + <dd> + Code used to read, write, and modify preferences</dd> + <dt> + <a href="/en-US/docs/Code_snippets/JS_XPCOM" title="/en-US/docs/Code_snippets/JS_XPCOM">JS XPCOM</a></dt> + <dd> + Code used to define and call XPCOM components in JavaScript</dd> + <dt> + <a href="/en-US/docs/Code_snippets/Running_applications" title="/en-US/docs/Code_snippets/Running_applications">Running applications</a></dt> + <dd> + Code used to run other applications</dd> + <dt> + <a href="/en-US/docs/Code_snippets/Canvas" title="/en-US/docs/Code_snippets/Canvas"><code><canvas></code> related</a></dt> + <dd> + <a href="/en-US/docs/HTML/Canvas" title="/en-US/docs/HTML/Canvas">WHAT WG Canvas</a>-related code</dd> + <dt> + <a href="/en-US/docs/Signing_a_XPI" title="/en-US/docs/Signing_a_XPI">Signing a XPI</a></dt> + <dd> + How to sign an XPI with PKI</dd> + <dt> + <a href="/en-US/docs/Code_snippets/Threads" title="/en-US/docs/Code_snippets/Threads">Threads</a></dt> + <dd> + Performing background operations and delaying execution while background operations complete</dd> + <dt> + <a href="/en-US/docs/Code_snippets/Miscellaneous" title="/en-US/docs/Code_snippets/Miscellaneous">Miscellaneous</a></dt> + <dd> + Miscellaneous useful code fragments</dd> + <dt> + <a href="/en-US/docs/Code_snippets/HTML_to_DOM" title="/en-US/docs/Code_snippets/HTML_to_DOM">HTML to DOM</a></dt> + <dd> + Using a hidden browser element to parse HTML to a window's DOM</dd> +</dl> +<h2 id="Browser-oriented_code" name="Browser-oriented_code">জাভাস্ক্রিপ্ট লাইব্রেরি সমূহ</h2> +<p>Here are some JavaScript libraries that may come in handy.</p> +<dl> + <dt> + <a href="/en-US/docs/Code_snippets/StringView" title="/en-US/docs/Code_snippets/StringView">StringView</a></dt> + <dd> + A library that implements a <code>StringView</code> view for <a href="/en-US/docs/Web/JavaScript/Typed_arrays" title="/en-US/docs/Web/JavaScript/Typed_arrays">JavaScript typed arrays</a>. This lets you access data in typed arrays using C-like string functions.</dd> +</dl> +<h2 id="Browser-oriented_code" name="Browser-oriented_code">ব্রাউজার-ওরিয়েন্টেড কোড</h2> +<dl> + <dt> + <a href="/en-US/docs/Code_snippets/Tabbed_browser" title="/en-US/docs/Code_snippets/Tabbed_browser">Tabbed browser code</a> (Firefox/SeaMonkey)</dt> + <dd> + Basic operations, such as page loading, with the tabbed browser, which is the heart of Mozilla's browser applications</dd> + <dt> + <a href="/en-US/docs/Code_snippets/Cookies" title="/en-US/docs/Code_snippets/Cookies">Cookies</a></dt> + <dd> + Reading, writing, modifying, and removing cookies</dd> + <dt> + <a href="/en-US/docs/Code_snippets/Page_Loading" title="/en-US/docs/Code_snippets/Page_Loading">Page Loading</a></dt> + <dd> + Code used to load pages, reload pages, and listen for page loads</dd> + <dt> + <a href="/en-US/docs/Code_snippets/Interaction_between_privileged_and_non-privileged_pages" title="/en-US/docs/Code_snippets/Interaction_between_privileged_and_non-privileged_pages">Interaction between privileged and non-privileged code</a></dt> + <dd> + How to communicate from extensions to websites and vice-versa.</dd> + <dt> + <a href="/en-US/docs/Code_snippets/Downloading_Files" title="/en-US/docs/Code_snippets/Downloading_Files">Downloading Files</a></dt> + <dd> + Code to download files, images, and to monitor download progress</dd> + <dt> + <a href="/en-US/docs/Code_snippets/Password_Manager" title="/en-US/docs/Code_snippets/Password_Manager">Password Manager</a></dt> + <dd> + Code used to read and write passwords to/from the integrated password manager</dd> + <dt> + <a href="/en-US/docs/Code_snippets/Bookmarks" title="/en-US/docs/Code_snippets/Bookmarks">Bookmarks</a></dt> + <dd> + Code used to read and write bookmarks</dd> + <dt> + <a href="/en-US/docs/Code_snippets/JavaScript_Debugger_Service" title="/en-US/docs/Code_snippets/JavaScript_Debugger_Service">JavaScript Debugger Service</a></dt> + <dd> + Code used to interact with the JavaScript Debugger Service</dd> +</dl> +<h2 id="SVG" name="SVG">এসভিজি</h2> +<dl> + <dt> + <a href="/en-US/docs/Code_snippets/SVG_General" title="/en-US/docs/Code_snippets/SVG_General">General</a></dt> + <dd> + General information and utilities</dd> + <dt> + <a href="/en-US/docs/Code_snippets/SVG_Animation" title="/en-US/docs/Code_snippets/SVG_Animation">SVG Animation</a></dt> + <dd> + Animate SVG using JavaScript and SMIL</dd> + <dt> + <a href="/en-US/docs/Code_snippets/SVG_Interacting_with_script" title="/en-US/docs/Code_snippets/SVG_Interacting_with_script">SVG Interacting with Script</a></dt> + <dd> + Using JavaScript and DOM events to create interactive SVG</dd> + <dt> + <a href="/en-US/docs/Code_snippets/Embedding_SVG" title="/en-US/docs/Code_snippets/Embedding_SVG">Embedding SVG in HTML and XUL</a></dt> + <dd> + Using SVG to enhance HTML or XUL based markup</dd> +</dl> +<h2 id="XUL_Widgets" name="XUL_Widgets">XUL উইজেট সমূহ</h2> +<dl> + <dt> + <a href="/en-US/docs/Code_snippets/HTML_in_XUL_for_rich_tooltips" title="/en-US/docs/Code_snippets/HTML_in_XUL_for_rich_tooltips">HTML in XUL for Rich Tooltips</a></dt> + <dd> + Dynamically embed HTML into a XUL element to attain markup in a tooltip</dd> + <dt> + <a href="/en-US/docs/Code_snippets/Label_and_description" title="/en-US/docs/Code_snippets/Label_and_description">Label and description</a></dt> + <dd> + Special uses and line breaking examples</dd> + <dt> + <a href="/en-US/docs/Code_snippets/Tree" title="/en-US/docs/Code_snippets/Tree">Tree</a></dt> + <dd> + Setup and manipulation of trees using XUL and JS</dd> + <dt> + <a href="/en-US/docs/Code_snippets/Scrollbar" title="/en-US/docs/Code_snippets/Scrollbar">Scrollbar</a></dt> + <dd> + Changing style of scrollbars. Applies to scrollbars in browser and iframe as well.</dd> + <dt> + <a href="/en-US/docs/Code_snippets/Autocomplete" title="/en-US/docs/Code_snippets/Autocomplete">Autocomplete</a></dt> + <dd> + Code used to enable form autocomplete in a browser</dd> + <dt> + <a href="/en-US/docs/Code_snippets/Boxes" title="/en-US/docs/Code_snippets/Boxes">Boxes</a></dt> + <dd> + Tips and tricks when using boxes as containers</dd> + <dt> + <a class="internal" href="/en-US/docs/Code_snippets/Tabbox" title="/en-US/docs/Code snippets/Tabbox">Tabbox</a></dt> + <dd> + Removing and manipulating tabs in a tabbox</dd> +</dl> +<h2 id="Windows-specific" name="Windows-specific">উইন্ডোজ নির্দিষ্ট</h2> +<dl> + <dt> + <a href="/en-US/docs/Code_snippets/Finding_Window_Handles" title="/en-US/docs/Code_snippets/Finding_Window_Handles">Finding Window Handles (HWND)</a> (Firefox)</dt> + <dd> + How to use Windows API calls to find various kinds of Mozilla window handles. Window handles can be used for IPC and Accessibility purposes.</dd> + <dt> + <a href="/en-US/docs/Accessing_the_Windows_Registry_Using_XPCOM" title="/en-US/docs/Accessing_the_Windows_Registry_Using_XPCOM">Using the Windows Registry with XPCOM</a></dt> + <dd> + How to read, write, modify, delete, enumerate, and watch registry keys and values.</dd> +</dl> +<h2 id="External_links" name="External_links">বহিঃস্থ লিঙ্ক সমূহ</h2> +<p>The content at <a class="external" href="http://kb.mozillazine.org/Category:Example_code">MozillaZine Example Code</a> is slowly being moved here, but you can still find useful examples there for now.</p> diff --git a/files/bn/mozilla/add-ons/code_snippets/toolbar/index.html b/files/bn/mozilla/add-ons/code_snippets/toolbar/index.html new file mode 100644 index 0000000000..ce7679b8ca --- /dev/null +++ b/files/bn/mozilla/add-ons/code_snippets/toolbar/index.html @@ -0,0 +1,59 @@ +--- +title: টুলবার +slug: Mozilla/Add-ons/Code_snippets/Toolbar +tags: + - NeedsReview +translation_of: Archive/Add-ons/Code_snippets/Toolbar +--- +<h2 id="টুলবার_বাটন_সংযোজন">টুলবার বাটন সংযোজন</h2> +<p>এখানে দুইটি টিউটোরিয়াল রয়েছে :</p> +<p>একটি টিউটোরিয়াল এর জন্য একটি বিশেষ পদক্ষেপ রয়েছে: <a href="/en/XUL/Toolbars/Custom_toolbar_button" title="en/Custom_Toolbar_Button">কাষ্টম টুলবার বাটন</a> একটি টিউটোরিয়াল বর্ণনা করার জন্য ইতোমধ্যে আপনার উন্নয়ন বুনিয়াদি একটি টুলবার বাটন যুক্ত করা প্রয়োজন: <a href="/en/XUL/Toolbars/Creating_toolbar_buttons" title="en/Creating_toolbar_buttons">টুলবার বাটন তৈরি করা</a></p> +<h2 id="বাটন_যুক্ত_করার_পদ্ধতি">বাটন যুক্ত করার পদ্ধতি :</h2> +<p>আপনি যখন আপনার এক্সটেনশন স্থাপন এবং একটি টুলবার বাটন অভেরলেইং দ্বারা যুক্ত করা হয়, এটি ডিফল্ট অবস্থায় পাওয়া যায় না । ব্যবহারকারীকে বাটনটি টুলবারে টেনে আনতে হয়। <span id="result_box" lang="bn"><span class="hps">নিম্নলিখিত</span> <span class="hps">কোড</span> <span class="hps">টুলবারে</span> <span class="hps">আপনার</span> <span class="hps alt-edited">বাটন</span> <span class="hps alt-edited">স্থাপন করবে। </span></span>This should only be done on the first run of your add-on after installation so that if the user decides to remove your button, it doesn't show up again every time they start the application.</p> +<h3 id="নোট">নোট</h3> +<ul> + <li><a href="/en/XUL_School/Appendix_B:_Install_and_Uninstall_Scripts#Install_Scripts">প্রথমবার চালনার সময়</a> একবার বাটন ঢোকান, অথবা একটি নতুন বাটন যোগ করে যখন একটি এক্সটেনশন আপডেট হয়।</li> + <li>Please only add your button by default if it adds real value to the user and will be a frequent entry point to your extension.</li> + <li>You <b>must not</b> insert your toolbar button between any of the following elements: the combined back/forward button, the location bar, the stop botton, or the reload button. These elements have special behaviors when placed next to eachother, and will break if separated by another element.</li> +</ul> +<pre class="brush: js">/** + * Installs the toolbar button with the given ID into the given + * toolbar, if it is not already present in the document. + * + * @param {string} toolbarId The ID of the toolbar to install to. + * @param {string} id The ID of the button to install. + * @param {string} afterId The ID of the element to insert after. @optional + */ +function installButton(toolbarId, id, afterId) { + if (!document.getElementById(id)) { + var toolbar = document.getElementById(toolbarId); + + // If no afterId is given, then append the item to the toolbar + var before = null; + if (afterId) { + let elem = document.getElementById(afterId); + if (elem && elem.parentNode == toolbar) + before = elem.nextElementSibling; + } + + toolbar.insertItem(id, before); + toolbar.setAttribute("currentset", toolbar.currentSet); + document.persist(toolbar.id, "currentset"); + + if (toolbarId == "addon-bar") + toolbar.collapsed = false; + } +} + +if (firstRun) { + installButton("nav-bar", "my-extension-navbar-button"); + // The "addon-bar" is available since Firefox 4 + installButton("addon-bar", "my-extension-addon-bar-button"); +} +</pre> +<h2 id="আরো_দেখুন">আরো দেখুন</h2> +<ul> + <li><a class="external" href="http://blog.pearlcrescent.com/archives/24">Programmatically adding items to the Firefox toolbar</a></li> + <li><a class="external" href="http://forums.mozillazine.org/viewtopic.php?t=189667">Toolbar button on install</a></li> + <li>{{ Bug(242071) }}</li> +</ul> diff --git a/files/bn/mozilla/add-ons/index.html b/files/bn/mozilla/add-ons/index.html new file mode 100644 index 0000000000..1d0f1b6661 --- /dev/null +++ b/files/bn/mozilla/add-ons/index.html @@ -0,0 +1,95 @@ +--- +title: অ্যাড-অনস +slug: Mozilla/Add-ons +tags: + - Add-ons + - NeedsTranslation + - TopicStub +translation_of: Mozilla/Add-ons +--- +<div class="summary"><span style="color: #000000;">মোজিলা অ্যাপ্লিকেশান গুলোর পরিবর্তন এবং পরিবর্ধন </span></div> + +<p>অ্যাড-অন, <a href="https://developer.mozilla.org/en-US/docs/Mozilla/Gecko">গেকো</a> ভিত্তিক অ্যাপ্লিকেশান যেমন: ফায়ারফক্স, সীমাঙ্কী এবং থান্ডারবার্ড এ নতুন কার্যকারিতা যোগ করে। মূলত দুই ধরণের অ্যাড-অন আছে: <a href="https://developer.mozilla.org/en-US/Add-ons#Extensions">এক্সটেনশন</a>, অ্যাপ্লিকেশানে নতুন ধরণের ফিচার যুক্ত করে, আর <a href="https://developer.mozilla.org/en-US/Add-ons#Themes">থিম</a> অ্যাপ্লিকেশানের ইউজার ইন্টারফেস পরিবর্তন করে। </p> + +<p>এক্সটেনশন এবং থিম উভয়ের জন্যই মোজিলা <a href="https://addons.mozilla.org/">addons.mozilla.org</a> তে একটি রিপোজিটরি পরিচালনা করে যা এএমও নামে পরিচিত। আপনি যখন <a href="https://developer.mozilla.org/en-US/Add-ons/Submitting_an_add-on_to_AMO">এএমও তে অ্যাড-অন জমা দেন</a> , তখন সেগুলোকে পর্যালোচনা করা হয় তারপর সেগুলো পর্যালোচনাতে উত্তীর্ণ হলে ব্যাবহারকারির কাছে পৌঁছে।<span style="font-family: helvetica;">আপনাকে এএমও তে অ্যাড-অন জমা দিতে হবেনা, কিন্তু আপনি যদি দেন, তাহলে ব্যাবহারকারিরা আত্মবিশ্বাসী হতে পারেন যে, সেগুলো রিভিও (পর্যালোচনা) করা হয়েছে । এবং আপনি দরকারি অ্যাড-অন এর উৎস হিসেবে এএমও এর দৃশ্যমানতা এর সুবিধা নিতে পারেন। </span></p> + +<p><span style="font-family: helvetica;">যেসকল অ্যাপ্লিকেশান অ্যাড-অন কে হোস্ট করে অ্যাড-অন তাদের আচরণকে প্রবলভাবে প্রভাবিত করতে পারে। আমরা এক ঝাঁক দিকনির্দেশনা তৈরি করেছি যাতে ব্যাবরহারকারিদের ভাল অভিজ্ঞতা দিতে পারি । সকল ধরণের অ্যাড-অনের জন্যই এই দিকনির্দেশনা প্রযোজ্য, তা </span><a class="external" href="https://addons.mozilla.org/" style="text-decoration: none;">addons.mozilla.org</a><span style="font-family: helvetica;"> তে হোস্ট করা হোক বা অন্য কোথাও হোস্ট করা হোক। </span></p> + +<hr> +<h2 id="এক্সটেনশন">এক্সটেনশন </h2> + +<p>এক্সটেনশন ফায়ারফক্স এবং থান্ডার-বার্ড এর মত মোজিলা অ্যাপ্লিকেশান গুলোতে নতুন কার্যকারিতা যোগ করে। এরা ব্রাউজারে নতুন ফিচার যুক্ত করতে পারে, যেমন: বিভিন্ন উপায়ে ট্যাবগুলোকে পরিচালনা করা। এবং তারা বিশেষ বিশেষ ওয়েবসাইটের ব্যাবহারযোগ্যতা অথবা নিরাপত্তা বাড়াতে ওয়েব কনটেন্টের পরিবর্তন করতে সক্ষম। </p> + +<p>এক্সটেনশন তৈরি করতে আপনি তিনটি ভিন্ন ভিন্ন কৌশল ব্যাবহার করতে পারেন: অ্যাড-অন এসডিকে ভিত্তিক এক্সটেনশন, ম্যানুয়ালী বুটস্ত্র্যাপড রিস্টার্ট বিহীন এক্সটেনশন এবং ওভারলে এক্সটেনশন। </p> + +<ul class="card-grid"> + <li><span><a href="https://developer.mozilla.org/en-US/Add-ons/SDK">অ্যাড-অন এসডিকে এক্সটেনশন</a> </span><br> + এক গুচ্ছ হাই-লেভেল জাভাস্ক্রিপ্ট এপিআই দ্বারা রিস্টার্টবিহীন এক্সটেনশন ডেভেলপ করুন। </li> + <li><a href="https://developer.mozilla.org/en-US/Add-ons/Bootstrapped_extensions">রিস্টার্টবিহীন এক্সটেনশন </a><br> + এমন এক্সটেনশন ডেভেলপ করুন যাতে ব্রাউজার রিস্টার্টের প্রয়োজন না হয়। </li> + <li><a href="https://developer.mozilla.org/en-US/Add-ons/Overlay_Extensions">ওভারলে এক্সটেনশন</a> <br> + এক্সইউএল ওভার লে দ্বারা গতানুগতিক এক্সটেনশন ডেভেলপ করুন। </li> +</ul> + +<p>আপনি যদি পারেন তবে, অ্যাড-অন এসডিকে ব্যাবহার করা সমীচীন হবে, যা রি স্টার্ট বিহীন মেকানিজম ব্যাবহার করে কিন্তু নির্দিষ্ট কিছু কাজকে সহজ করে এবং তারপর নিজেকে পরিষ্কার করে। যদি অ্যাড-অন এসডিকে আপনার প্রয়োজনের তুলনায় পর্যাপ্ত না হয় তবে, এর পরিবর্তে ম্যানুয়াল রি স্টার্ট বিহীন এক্সটেনশন ইমপ্লিমেন্ট করতে পারেন। বর্তমানে অধিকাংশ ক্ষেত্রে ওভারলে এক্সটেনশন অপ্রচলিত , যদিও এখনো এগুলোর প্রাচুর্য রয়েছে। </p> + +<p>কোন কৌশল অবলম্বন করবেন এ সম্পর্কে আরও জানতে পড়ুন তাদের <a href="https://developer.mozilla.org/en-US/Add-ons/Comparing_Extension_Toolchains">তুলনা</a>। </p> + +<div class="column-container"> +<div class="column-half"> +<h2 id="ভাল_চর্চা">ভাল চর্চা </h2> + +<dl> + <dd>আপনি যেভাবেই এক্সটেনশন ডেভেলপ করুন না কেন, আপনাকে কিছু দিক নির্দেশ মেনে চলতে হবে, যাতে ব্যাবহারকারিরা একটা ভাল অভিজ্ঞতা পান। </dd> + <dt><a href="https://developer.mozilla.org/en-US/Add-ons/Performance_best_practices_in_extensions">পারফরমেন্স </a></dt> + <dd>নিশ্চিত করা যে আপনার এক্সটেনশন দ্রুত, প্রতিক্রিয়াশীল এবং মেমরি এফিসিয়েন্ট। </dd> + <dt><a href="https://developer.mozilla.org/en-US/Add-ons/Security_best_practices_in_extensions">নিরাপত্তা </a></dt> + <dd>নিশ্চিত করা যে আপনার এক্সটেনশন ইউজারকে ক্ষতিকারক ওয়েবসাইটে প্রবেশ করাবে না। </dd> + <dt><a href="https://developer.mozilla.org/en-US/Add-ons/Extension_etiquette">ভদ্রতা </a></dt> + <dd>নিশ্চিত করা যে আপনার এক্সটেনশন অপর এক্সটেনশনের সাথে ভালো ভাবে কাজ করতে পারে কিনা। </dd> +</dl> +</div> + +<div class="column-half"> +<h3 id="নির্দিষ্ট-অ্যাপ্লিকেশান">নির্দিষ্ট-অ্যাপ্লিকেশান</h3> + +<p>অধিকাংশ ডকুমেন্টেশান ধরে নেয় যে আপনি ফায়ারফক্স ডেক্সটপের জন্য অ্যাড-অন ডেভেলপ করছেন। আপনি যদি গেকো ভিত্তিক অন্য অ্যাপ্লিকেশান এর জন্য ডেভেলপ করতে চান, তাহলে আপনাকে তাদের মধ্যে মুখ্য পার্থক্য গুলো জানতে হবে। </p> + +<dl> + <dt><a href="https://developer.mozilla.org/en-US/Add-ons/Thunderbird">থান্ডারবার্ড </a></dt> + <dd>থান্ডার বার্ড মেইল ক্লায়েন্ট এর জন্য এক্সটেনশন ডেভেলপ করা। </dd> + <dt><a href="https://developer.mozilla.org/en-US/Add-ons/Firefox_for_Android">ফায়ারফক্স এন্ড্রয়েড</a></dt> + <dd>ফায়ারফক্স এন্ড্রয়েডের জন্য এক্সটেনশন ডেভেলপ করা। </dd> + <dt><a href="https://developer.mozilla.org/en-US/Add-ons/SeaMonkey_2">সীমাঙ্কী</a></dt> + <dd><a href="http://www.seamonkey-project.org/">সীমাঙ্কী</a> সফটওয়্যার সুইটের জন্য এক্সটেনশন ডেভেলপ করা। </dd> +</dl> +</div> +</div> + +<hr> +<h2 id="থিম"><a name="Themes">থিম </a></h2> + +<p>থিম হল অ্যাড-অন যারা অ্যাপ্লিকেশানের ইউজার ইন্টারফেস পরিবর্তন করে। দুই ধরণের থিম আছে: লাইটওয়েট এবং সম্পূর্ণ থিম। </p> + +<div class="column-container"> +<div class="column-half"> +<p><a href="https://addons.mozilla.org/en-US/developers/docs/themes">লাইটওয়েট থিম</a> গুলো সম্পূর্ণ থিমের চেয়ে সহজে ইমপ্লিমেন্ট করা যায়, কিন্তু খুব সীমিত পরিবর্তন প্রদান করে। </p> +</div> + +<div class="column-half"> +<p><a href="https://developer.mozilla.org/en-US/docs/Themes">সম্পূর্ণ থিম</a> দ্বারা অ্যাপ্লিকেশান ইউআই তে গভীর পরিবর্তন আনা যায়। সম্পূর্ণ থিমের ডকুমেন্টেশান গুলো অনেক পুরনো, কিন্তু সম্ভাব্য আপডেটের জন্য এখানে লিঙ্ক দেয়া হবে। </p> +</div> +</div> + +<hr> +<h2 id="অন্যান্য_ধরণের_অ্যাড-অন">অন্যান্য ধরণের অ্যাড-অন</h2> + +<p><a href="https://developer.mozilla.org/en-US/docs/Creating_OpenSearch_plugins_for_Firefox">সার্চইঞ্জিন প্লাগইন</a> হল সরল এবং খুব নির্দিষ্ট ধরণের অ্যাড-অন: তারা ব্রাউজারের সার্চবারে নতুন সার্চইঞ্জিন যুক্ত করে । </p> + +<p>যেসকল কন্টেন্টকে অ্যাপ্লিকেশান স্বাভাবিক ভাবে সাপোর্ট করেনা তাদের বোঝার জন্য <a href="https://developer.mozilla.org/en-US/docs/Plugins">প্লাগইনের</a> সাহায্য দরকার হয়। আমরা এসকল প্লাগ ইনের গভীরতা বাড়াতে কাজ করছি, কেননা এদের স্থায়িত্ব, পারফরমেন্স এবং নিরাপত্তার সমস্যাপূর্ণ ইতিহাস রয়েছে।</p> + +<p>{{AddonSidebar}}</p> + +<div id="__if72ru4sdfsdfrkjahiuyi_once" style="display: none;"></div> + +<div id="__hggasdgjhsagd_once" style="display: none;"></div> diff --git a/files/bn/mozilla/add-ons/performance_best_practices_in_extensions/index.html b/files/bn/mozilla/add-ons/performance_best_practices_in_extensions/index.html new file mode 100644 index 0000000000..f9cd7b926e --- /dev/null +++ b/files/bn/mozilla/add-ons/performance_best_practices_in_extensions/index.html @@ -0,0 +1,91 @@ +--- +title: Performance best practices in extensions +slug: Mozilla/Add-ons/Performance_best_practices_in_extensions +translation_of: Archive/Add-ons/Performance_best_practices_in_extensions +--- +<p> ফায়ারফক্সের একটি সব চেয়ে বড় সুবিধা হল is its extreme extensibility. Extensions can do almost anything. There is a down side to this: poorly written extensions can have a severe impact on the browsing experience, including on the overall performance of Firefox itself. This article offers some best practices and suggestions that can not only improve the performance and speed of your extension, but also of Firefox itself.</p> +<h2 id="Improving_startup_performance">Improving startup performance</h2> +<p>Extensions are loaded and run whenever a new browser window opens. That means every time a window opens, your extension can have an impact on how long it takes the user to see the content they're trying to view. There are several things you can do to reduce the amount of time your extension delays the appearance of the user's desired content.</p> +<h3 id="Load_only_what_you_need_when_you_need_it">Load only what you need, when you need it</h3> +<p>Don't load things during startup that are only needed if the user clicks a button, or if a given preference is enabled when it's not. If your extension has features that only work when the user has logged into a service, don't load the resources for those features until the user actually logs in.</p> +<h3 id="Use_JavaScript_code_modules">Use JavaScript code modules</h3> +<p>You can create your own <a href="/en-US/docs/Mozilla/JavaScript_code_modules/Using" title="/en-US/docs/Mozilla/JavaScript_code_modules/Using">JavaScript code modules</a> incorporating sets of features that are only needed under specific circumstances. This makes it easy to load chunks of your extension on the fly as needed, instead of loading everything all at once.</p> +<p>This has an advantage over XPCOM modules, which are always loaded when your extension starts up.</p> +<p>Of course, for extremely simple extensions it may not make sense to modularize your code.</p> +<h3 id="Defer_everything_that_you_can">Defer everything that you can</h3> +<p>Most extensions have a load event listener in the main overlay that runs their startup functions. Do as little as possible here. The browser window is blocked while your add-on's load handler runs, so the more it does, the slower Firefox will appear to the user.</p> +<p>If there is <em>anything</em> that can be done even a fraction of a second later, you can use an {{ interface("nsITimer") }} or the {{ domxref("window.setTimeout()") }} method to schedule that work for later. Even a short delay can have a big impact.</p> +<h2 id="General_Performance_Tips">General Performance Tips</h2> +<h3 id="Avoid_Creating_Memory_Leaks">Avoid Creating Memory Leaks</h3> +<p>Memory leaks require the garbage collector and the cycle collector to work harder, which can significantly degrade performance.</p> +<p>Zombie compartments are a particular kind of memory leak that you can detect with minimal effort. See the<a href="/en/Zombie_compartments" title="en/Zombie_compartments"> </a><a href="/en/Zombie_compartments" title="en/Zombie_compartments">Zombie compartments page</a>, especially the <a href="/en/Zombie_compartments#Proactive_checking_of_add-ons" title="en/Zombie_compartments#Proactive_checking_of_add-ons">Proactive checking of add-ons</a> section.</p> +<p>See <a href="/en/Extensions/Common_causes_of_memory_leaks_in_extensions" title="en/Extensions/Common_causes_of_zombie_compartments_in_extensions">Common causes of memory leaks in extensions</a> for ways to avoid zombie compartments and other kinds of leaks.</p> +<p>As well as looking for these specific kinds of leaks, it's worth exercising your extension's functionality and checking the contents of about:memory for any excessive memory usage. For example, <a class="link-https" href="https://bugzilla.mozilla.org/show_bug.cgi?id=719601" title="https://bugzilla.mozilla.org/show_bug.cgi?id=719601">bug 719601</a> featured a "System Principal" JavaScript compartment containing 100s of MBs of memory, which is <em>much</em> larger than usual.</p> +<h3 id="Use_JavaScript_Modules">Use JavaScript Modules</h3> +<p>JavaScript modules are just like any other JavaScript, with the exception that they are singletons and Firefox can cache the compiled code for faster use the next time the browser is started. Any time your add-on loads JavaScript from an {{ HTMLElement("script") }} element you should consider using a JavaScript Module instead. For more on how JavaScript modules work, see the <a href="/en-US/docs/Mozilla/JavaScript_code_modules/Using" title="/en-US/docs/Mozilla/JavaScript_code_modules/Using">Using JavaScript Code Modules page</a>.</p> +<h3 id="Avoid_Writing_Slow_CSS">Avoid Writing Slow CSS</h3> +<ul> + <li>Read the <a href="/en/CSS/Writing_Efficient_CSS" title="en/CSS/Writing_Efficient_CSS">"writing efficient CSS"</a> guide.</li> + <li>Remember that any selector in your rule which might match many different nodes is a source of inefficiency during either selector matching or dynamic update processing. This is especially bad for the latter if the selector can dynamically start or stop matching. Avoid unqualified ":hover" like the plague.</li> +</ul> +<h3 id="Avoid_DOM_mutation_event_listeners">Avoid DOM mutation event listeners</h3> +<p>Adding DOM mutation listeners to a document disables most DOM modification optimizations and <a class="external" href="http://groups.google.com/group/mozilla.dev.platform/browse_thread/thread/2f42f1d75bb906fb?pli=1">profoundly degrades the performance</a> of further DOM modifications to that document. Moreover, removing the listeners does not reverse the damage. For these reasons, the following events should be avoided wherever possible: <code>DOMAttrModified</code>, <code>DOMAttributeNameChanged</code>, <code>DOMCharacterDataModified</code>, <code>DOMElementNameChanged</code>, <code>DOMNodeInserted</code>, <code>DOMNodeInsertedIntoDocument</code>, <code>DOMNodeRemoved</code>, <code>DOMNodeRemovedFromDocument</code>, <code>DOMSubtreeModified</code></p> +<p>For more on these events and their deprecation, see <a href="/en-US/docs/Web/Guide/DOM/Events/Mutation_events" title="en-US/docs/Web/Guide/DOM/Events/Mutation_events">Mutation events</a>. Use <a href="/en-US/docs/Web/API/MutationObserver" title="en-US/docs/Web/API/MutationObserver">Mutation Observers</a> instead if possible.</p> +<h3 id="Lazily_load_services">Lazily load services</h3> +<p>The <a href="/en/JavaScript_code_modules/XPCOMUtils.jsm#Methods" title="en/JavaScript_code_modules/XPCOMUtils.jsm#Methods">XPCOMUtils JavaScript module</a> provides two methods for lazily loading things:</p> +<ul> + <li><code>defineLazyGetter()</code> defines a function on a specified object that acts as a getter which will be created the first time it's used. <a class="external" href="http://mxr.mozilla.org/mozilla-central/search?string=defineLazyGetter">See examples</a>.</li> + <li><code>defineLazyServiceGetter()</code> defines a function on a specified object which acts as a getter for a service. The service isn't obtained until the first time it's used. {{ LXRSearch("ident", "string", "defineLazyServiceGetter", "Look through the source") }} for examples.</li> +</ul> +<p>As of Firefox 4.0, many common services are already cached for you in <a href="/en/JavaScript_code_modules/Services.jsm" title="en/JavaScript_code_modules/Services.jsm">Services.jsm</a>.</p> +<h3 id="Reduce_file_IO">Reduce file I/O</h3> +<p>TODO: Give examples below, link to code, bugs, docs.</p> +<ul> + <li>If you're targeting Firefox 3.6 and earlier, or if you're specifying <code>em:unpack</code> then use chrome JARs!</li> + <li>Combine CSS</li> + <li>Combine pref files</li> + <li>Combine interfaces into a single .idl to reduce xpt files</li> + <li>Combine toolbar icons in a single file.</li> +</ul> +<h3 id="Use_the_right_compression_level_for_JAR_and_XPI_files">Use the right compression level for JAR and XPI files</h3> +<p>Reading data from compressed archives costs time. The higher the compression level of the archive, the higher also the performance cost of reading the data from it. So any JAR files in your extension should always be packed with compression level 0 (no compression) for better performance. It may seem counter-intuitive, but doing this will increase the JAR file size and actually <em>decrease</em> the XPI file size as it allows for compression between files inside the JAR to be done when compressing the XPI (essentially a poor-man's <a class="external" href="http://en.wikipedia.org/wiki/Solid_archive" title="http://en.wikipedia.org/wiki/Solid_archive">solid archive</a> effect).</p> +<p>If your extension doesn't specify <code>em:unpack</code> then its XPI file will not be unpacked in Firefox 4 and used directly instead. This makes choosing a low compression level preferable; we recommend using compression level 1. It will increase the download size only a small amount, even compared to maximum compression.</p> +<h3 id="Use_asynchronous_IO">Use asynchronous I/O</h3> +<p>This cannot be stressed enough: never do synchronous I/O on the GUI thread.</p> +<ul> + <li>Never use synchronous XMLHttpRequests (XHR). Use asynchronous requests instead and show a throbber image or message in case you need the user to wait.</li> + <li><a href="/en/JavaScript_code_modules/NetUtil.jsm" title="en/JavaScript_code_modules/NetUtil.jsm">NetUtils.jsm</a> provides helpers for asynchronous reading and copying of files.</li> + <li>Never access a SQLite database synchronously. Use the <a href="/en/Storage#Asynchronously" title="en/Storage#Asynchronously">asynchronous API</a> instead.</li> +</ul> +<h3 id="Unnecessary_onreadystatechange_in_XHR">Unnecessary onreadystatechange in XHR</h3> +<p><code>addEventListener</code>(load/error) and/or xhr.onload/.onerror are usually sufficient for most uses and will only be called once, contrary to <code>onreadystatechange</code>. When using XHR in websites people tend to use <code>onreadystatechange</code> (for compatiblity reasons). Often it is enough to just load the resource or handle errors. load/error event listener are far less often called than <code>onreadystatechange</code>, i.e. only once, and you don't need to check <code>readyState</code> or figure out if it is an error or not. Only use <code>onreadystatechange</code> if you want to process the response while it is still arriving.</p> +<h3 id="Removing_Event_Listeners">Removing Event Listeners</h3> +<p>Remove event listener if they are not needed any more. It is better to actually remove event listener instead of just having some flag to check if the listener is active which is checked every time when an event is propagated. Abandon schemes like: <code>function onMouseOver(evt) { if (is_active) { /* doSomeThing */ } }</code> Also, remove "fire-once" listeners again:</p> +<pre class="brush: js"> function init() { + var largeArray; + addEventListener('load', function onLoad() { + removeEventListener('load', onLoad, true); + largeArray.forEach(); + }, true); +</pre> +<p>Else a lot of closure stuff might be still referenced (<code>largeArray</code> in this example). And the listener will sit idle in some internal table.</p> +<h3 id="Populate_menus_as_needed">Populate menus as needed</h3> +<p>Populate "context" menus (page, tabs, tools) as needed and keep computation to a minimum (UI responsiveness). There is no need to populate the context menu every time something changes. It is enough to populate it once the user actually needs it. Add a listener to the "popupshowing" event and compute there.</p> +<h3 id="Avoid_mouse_movement_events">Avoid mouse movement events</h3> +<p>Avoid mouse movement events (enter/over/exit) or at least keep computation to a minimum. Mouse movement events, especially the <code>mouseover</code> event, usually happen at high frequency. Best would be to only store the new information and compute "stuff" once the user actually requests it (e.g. in a <code>popupshowing</code> event). Also don't forget to remove the event listeners when no longer needed (see above).</p> +<h3 id="Avoid_polling">Avoid polling</h3> +<p>Use {{ interface("nsIObserverService") }} functionality instead. Everybody is free to post "custom" notifications via {{ interface("nsIObserverService") }}, but few extensions actually use this. However, a lot of other services also provide observer functionality, such as nsIPrefBranch2.</p> +<h3 id="aPNGaGIF_inappropriate_in_a_lot_of_cases">aPNG/aGIF inappropriate in a lot of cases</h3> +<p>Animations require a lot of time to set up, as a lot of images are decoded (the frames). Animated images may have their cached representations evicted quite often, causing the frames of your animated images to be reloaded lots of times, not just once. {{ interface("nsITree") }} / {{ XULElem("tree") }} seems to be extra special in this regard, as it doesn't seem to cache animations at all under certain circumstances.</p> +<h3 id="base64md5sha1_implementations">base64/md5/sha1 implementations</h3> +<p>Do not ship your own base64/md5/sha1 implementations. Regarding base64 there are the built-in <code>atob</code>/<code>btoa</code> functions that do the job just well and are available in overlay script as well as in in JavaScript modules and components. Hashes can be computed using {{ interface("nsICryptoHash") }}, which accepts either a string or an {{ interface("nsIInputStream") }}.</p> +<h3 id="Image_sprites">Image sprites</h3> +<p>You may combine multiple images into one (sprites). See {{ cssxref("-moz-image-region") }}. Most XUL widgets that are used to display some image (incl. {{ XULElem("button") }} and {{ XULElem("toolbarbutton") }}) allow to use {{ cssxref("list-style-image") }}. Avoid the <code>imagesrc</code>/<code>src</code> attributes to define images where possible.</p> +<h3 id="Consider_using_Chrome_Workers">Consider using Chrome Workers</h3> +<p>You can use a {{ domxref("ChromeWorker") }} to execute long running tasks or do data processing.</p> +<h2 id="See_also">See also</h2> +<ul> + <li><a href="/en/Performance/Measuring_add-on_startup_performance" title="en/Measuring Add-on Startup Performance">Measuring Add-on Startup Performance</a></li> + <li><a class="external" href="http://blog.mozilla.com/addons/2010/06/14/improve-extension-startup-performance/" title="http://blog.mozilla.com/addons/2010/06/14/improve-extension-startup-performance/">How to Improve Extension Startup Performance</a></li> + <li><a href="/en-US/docs/Performance">General information about measuring and improving performance in Mozilla code</a></li> +</ul> diff --git a/files/bn/mozilla/add-ons/sdk/index.html b/files/bn/mozilla/add-ons/sdk/index.html new file mode 100644 index 0000000000..c5dcaf17b9 --- /dev/null +++ b/files/bn/mozilla/add-ons/sdk/index.html @@ -0,0 +1,102 @@ +--- +title: এডঅন(Add-on) সফটওয়্যার সম্পাদনা বক্স (SDK) +slug: Mozilla/Add-ons/SDK +tags: + - NeedsTranslation + - TopicStub +translation_of: Archive/Add-ons/Add-on_SDK +--- +<p>এই এডঅন সফটওয়্যার সম্পাদনা বক্স (SDK) ব্যবহার করে আপনিও ফায়ারফক্সের জন্য এডঅন তৈরী করতে পারবেন, তবে আপনার জানা থাকতে হবেঃ জাভাস্ক্রিপ্ট, এইচটিএমএল, সিএসএস। এই সফটওয়্যার সম্পাদনা বক্স (SDK) এর সাথে আছে জাভাস্ক্রিপ্ট এপিআই (API) , যেটা আপনি এডঅন তৈরী, এডঅন টেস্টিং, এডঅন চালু করা ও এডঅন প্যাকেজ করার কাজে ব্যবহার করতে পারবেন।</p> +<hr> +<h3 id="পাঠদান"><u>পাঠদান</u></h3> +<div class="column-container"> + <div class="column-half"> + <dl> + <dt> + <a href="/en-US/Add-ons/SDK/Tutorials#getting-started">শুরু করুন</a></dt> + <dd> + কিভাবে <a href="/en-US/Add-ons/SDK/Tutorials/Installation">সফটওয়্যার সম্পাদনা বক্স (SDK)</a> ইন্সটল করবেন এবং <a href="/en-US/Add-ons/SDK/Tutorials/Getting_Started_With_cfx">সিএফএক্স</a> দিয়ে এডঅন সম্পাদনা, টেস্টিং ও প্যাকেজিং করবেন।</dd> + <dt> + <a href="/en-US/Add-ons/SDK/Tutorials#interact-with-the-browser">Interact with the browser</a></dt> + <dd> + <a href="/en-US/Add-ons/SDK/Tutorials/Open_a_Web_Page">Open web pages</a>, <a href="/en-US/Add-ons/SDK/Tutorials/Listen_For_Page_Load">listen for pages loading</a>, and <a href="/en-US/Add-ons/SDK/Tutorials/List_Open_Tabs">list open pages</a>.</dd> + <dt> + <a href="/en-US/Add-ons/SDK/Tutorials#development-techniques">Development techniques</a></dt> + <dd> + Learn about common development techniques, such as <a href="/en-US/Add-ons/SDK/Tutorials/Unit_testing">unit testing</a>, <a href="/en-US/Add-ons/SDK/Tutorials/Logging">logging</a>, <a href="/en-US/Add-ons/SDK/Tutorials/Creating_Reusable_Modules">creating reusable modules</a>, <a href="/en-US/Add-ons/SDK/Tutorials/l10n">localization</a>, and <a href="/en-US/Add-ons/SDK/Tutorials/Mobile_development">mobile development</a>.</dd> + </dl> + </div> + <div class="column-half"> + <dl> + <dt> + <a href="/en-US/Add-ons/SDK/Tutorials#create-user-interfaces">Create user interface components</a></dt> + <dd> + Create user interface components such as <a href="/en-US/Add-ons/SDK/Tutorials/Adding_a_Button_to_the_Toolbar">toolbar buttons</a>, <a href="/en-US/Add-ons/SDK/Tutorials/Add_a_Context_Menu_Item">context menus</a>, <a href="/en-US/Add-ons/SDK/Tutorials/Add_a_Menu_Item_to_Firefox">menu items</a>, and <a href="/en-US/Add-ons/SDK/Tutorials/Display_a_Popup">dialogs</a>.</dd> + <dt> + <a href="/en-US/Add-ons/SDK/Tutorials#modify-web-pages">Modify web pages</a></dt> + <dd> + Modify pages <a href="/en-US/Add-ons/SDK/Tutorials/Modifying_Web_Pages_Based_on_URL">matching a URL pattern</a> or dynamically <a href="/en-US/Add-ons/SDK/Tutorials/Modifying_the_Page_Hosted_by_a_Tab">modify a particular tab</a>.</dd> + <dt> + <a href="/en-US/Add-ons/SDK/Tutorials/Annotator">Putting it together</a></dt> + <dd> + Walkthrough of the Annotator example add-on.</dd> + </dl> + </div> +</div> +<hr> +<h3 id="Guides">Guides</h3> +<div class="column-container"> + <div class="column-half"> + <dl> + <dt> + <a href="/en-US/Add-ons/SDK/Guides#contributors-guide">Contributor's guide</a></dt> + <dd> + Learn <a href="/en-US/Add-ons/SDK/Guides/Getting_Started">how to start contributing</a> to the SDK, and about the most important idioms used in the SDK code, such as <a href="/en-US/Add-ons/SDK/Guides/Modules">modules</a>, <a href="/en-US/Add-ons/SDK/Guides/Classes_and_Inheritance">classes and inheritance</a>, <a href="/en-US/Add-ons/SDK/Guides/Private_Properties">private properties</a>, and <a href="/en-US/Add-ons/SDK/Guides/Content_Processes">content processes</a>.</dd> + <dt> + <a href="/en-US/Add-ons/SDK/Guides#sdk-infrastructure">SDK infrastructure</a></dt> + <dd> + Aspects of the SDK's underlying technology: <a href="/en-US/Add-ons/SDK/Guides/Module_structure_of_the_SDK">modules</a>, the <a href="/en-US/Add-ons/SDK/Guides/Program_ID">Program ID</a>, and the rules defining <a href="/en-US/Add-ons/SDK/Guides/Firefox_Compatibility">Firefox compatibility</a>.</dd> + <dt> + <a href="/en-US/Add-ons/SDK/Guides/Content_Scripts">Content scripts</a></dt> + <dd> + A detailed guide to working with content scripts.</dd> + </dl> + </div> + <div class="column-half"> + <dl> + <dt> + <a href="/en-US/Add-ons/SDK/Guides#sdk-idioms">SDK idioms</a></dt> + <dd> + The SDK's <a href="/en-US/Add-ons/SDK/Guides/Working_with_Events">event framework</a> and the <a href="/en-US/Add-ons/SDK/Guides/Two_Types_of_Scripts">distinction between add-on scripts and content scripts</a>.</dd> + <dt> + <a href="/en-US/Add-ons/SDK/Guides/XUL_Migration_Guide">XUL migration</a></dt> + <dd> + A guide to <a href="/en-US/Add-ons/SDK/Guides/XUL_Migration_Guide">porting XUL add-ons to the SDK</a>. This guide includes a <a href="/en-US/Add-ons/SDK/Guides/XUL_vs_SDK">comparison of the two toolsets</a> and a <a href="/en-US/Add-ons/SDK/Guides/Porting_the_Library_Detector">working example</a> of porting a XUL add-on.</dd> + </dl> + </div> +</div> +<hr> +<h3 id="Reference">Reference</h3> +<div class="column-container"> + <div class="column-half"> + <dl> + <dt> + <a href="/en-US/Add-ons/SDK/High-Level_APIs">High-Level APIs</a></dt> + <dd> + Reference documentation for the high-level SDK APIs.</dd> + <dt> + <a href="/en-US/Add-ons/SDK/Tools">Tools reference</a></dt> + <dd> + Reference documentation for the <a href="/en-US/Add-ons/SDK/Tools/cfx">cfx tool</a> used to develop, test, and package add-ons, the <a href="/en-US/Add-ons/SDK/Tools/console">console</a> global used for logging, and the <a href="/en-US/Add-ons/SDK/Tools/package_json">package.json</a> file.</dd> + </dl> + </div> + <div class="column-half"> + <dl> + <dt> + <a href="/en-US/Add-ons/SDK/Low-Level_APIs">Low-Level APIs</a></dt> + <dd> + Reference documentation for the low-level SDK APIs.</dd> + </dl> + </div> +</div> +<p> </p> diff --git a/files/bn/mozilla/add-ons/sdk/tutorials/adding_a_button_to_the_toolbar/index.html b/files/bn/mozilla/add-ons/sdk/tutorials/adding_a_button_to_the_toolbar/index.html new file mode 100644 index 0000000000..0a33490189 --- /dev/null +++ b/files/bn/mozilla/add-ons/sdk/tutorials/adding_a_button_to_the_toolbar/index.html @@ -0,0 +1,64 @@ +--- +title: Adding a Button to the Toolbar +slug: Mozilla/Add-ons/SDK/Tutorials/Adding_a_Button_to_the_Toolbar +translation_of: Archive/Add-ons/Add-on_SDK/Tutorials/Adding_a_Button_to_the_Toolbar +--- +<div class="note"> + <p>এই টিউটরিআল বুঝতে হলে আপনাকে প্রথমে <a href="/en-US/Add-ons/SDK/Tutorials/Installation" style="line-height: 1.5;">এস ডি কে</a><span style="line-height: 1.5;"> ইন্সটল করতে হবে এবং </span><a href="/en-US/Add-ons/SDK/Tutorials/Getting_Started_With_cfx" style="line-height: 1.5;">সি এফ এক্স এর প্রাথমিক </a><span style="line-height: 1.5;"> জিনিস গুলা শিখতে হবে ।</span></p> + <p><span style="line-height: 1.5;">এই টিউটোরিয়াল </span><a href="/en-US/Add-ons/SDK/Low-Level_APIs/ui_button_action" style="line-height: 1.5;">এক্সশন বাটন </a> এ পি আই <span style="line-height: 1.5;">ব্যাবহার করে, যে শুধু মাত্র ফায়ার ফক্স ২৯ বা এর পরের ভারশন গুলোতে কাজ করে ।</span></p> + <p> </p> +</div> +<p><span style="line-height: 1.5;">কোন বাটন টুলবারের সাথে সংযুক্ত করতে হলে </span><a href="/en-US/Add-ons/SDK/Low-Level_APIs/ui_button_action" style="line-height: 1.5;"> এক্সন বাটন</a><span style="line-height: 1.5;"> বা </span><a href="/en-US/Add-ons/SDK/Low-Level_APIs/ui_button_toggle" style="line-height: 1.5;">টগল বাটন </a>মডিউলগুলো ব্যাবহার করুন ।</p> +<p>একটি নতুন ডিরেক্টরি তৈরি করুন, তার ভেতরে ডুকুন এবং সিএফএক্স ইনিট চালান ।</p> +<p>তার পর নিচের আইকন তিনটি "ডাটা" ডিরেক্টরিতে সেভ করুন ।</p> +<table class="standard-table"> + <tbody> + <tr> + <td><img alt="" src="https://mdn.mozillademos.org/files/7635/icon-16.png" style="width: 16px; height: 16px;"></td> + <td>icon-16.png</td> + </tr> + <tr> + <td><img alt="" src="https://mdn.mozillademos.org/files/7637/icon-32.png" style="width: 32px; height: 32px;"></td> + <td>icon-32.png</td> + </tr> + <tr> + <td><img alt="" src="https://mdn.mozillademos.org/files/7639/icon-64.png" style="width: 64px; height: 64px;"></td> + <td>icon-64.png</td> + </tr> + </tbody> +</table> +<p>Then open the file called "main.js" in the "lib" directory and add the following code to it:</p> +<pre class="brush: js">var buttons = require('sdk/ui/button/action'); +var tabs = require("sdk/tabs"); + +var button = buttons.ActionButton({ + id: "mozilla-link", + label: "Visit Mozilla", + icon: { + "16": "./icon-16.png", + "32": "./icon-32.png", + "64": "./icon-64.png" + }, + onClick: handleClick +}); + +function handleClick(state) { + tabs.open("https://www.mozilla.org/"); +}</pre> +<p>Now run the add-on with <code>cfx run</code>. The button is added to the toolbar at the top of the browser window:</p> +<p><img alt="" src="https://mdn.mozillademos.org/files/7641/mozilla-button.png" style="width: 382px; height: 221px; display: block; margin-left: auto; margin-right: auto;">You can't set the initial location for the button, but the user can move it using the browser's customization feature. The <code>id</code> attribute is mandatory, and is used to remember the position of the button, so you should not change it in subsequent versions of the add-on.</p> +<p>Clicking the button loads <a href="https://www.mozilla.org/en-US/">https://www.mozilla.org/</a> into a new tab.</p> +<h2 id="Specifying_the_icon">Specifying the icon</h2> +<p>The icon property may specify a single icon or a collection of icons in different sizes, as in the example above. If you specify a collection of icons in different sizes the browser will automatically choose the best fit for the screen resolution and the place in the browser UI that hosts the button. <a href="/en-US/Add-ons/SDK/Low-Level_APIs/ui_button_action#ActionButton(options)">Read more about specifying multiple icons</a>.</p> +<p>The icon file must be packaged with your add-on: it may not refer to a remote file.</p> +<p>You can change the icon at any time by setting the button's <code>icon</code> property. You can change the icon, and the other state attributes, either globally, for a specific window, or for a specific tab. <a href="/en-US/Add-ons/SDK/Low-Level_APIs/ui_button_action#Updating_state">Read more about updating state</a>.</p> +<h2 id="Attaching_a_panel">Attaching a panel</h2> +<p>If you need to attach a panel to a button, use the <a href="/en-US/Add-ons/SDK/Low-Level_APIs/ui_button_toggle">toggle button</a> API. This is just like the action button API except it adds a boolean <code>checked</code> property which is toggled whenever the button is checked. To attach the panel, pass the button to the panel's <a href="https://developer.mozilla.org/en-US/Add-ons/SDK/High-Level_APIs/panel#show(options)"><code>show()</code></a> method. For more details on this, see the <a href="/en-US/Add-ons/SDK/Low-Level_APIs/ui_button_toggle#Attaching_panels_to_buttons">toggle button's documentation</a>.</p> +<h2 id="Displaying_richer_content">Displaying richer content</h2> +<p>To create more complex user interface content than is possible with just a button, use the <a href="/en-US/Add-ons/SDK/Low-Level_APIs/ui_toolbar">toolbar</a> API. With the toolbar API you get a complete horizontal strip of user interface real estate. You can add buttons to the toolbar and also <a href="/en-US/Add-ons/SDK/Low-Level_APIs/ui_frame">frames</a>, that can host HTML, CSS, and JavaScript.</p> +<h2 id="Learning_more">Learning more</h2> +<ul> + <li><a href="/en-US/Add-ons/SDK/Low-Level_APIs/ui_button_action">action button reference</a></li> + <li><a href="/en-US/Add-ons/SDK/Low-Level_APIs/ui_button_toggle">toggle button reference</a></li> + <li><a href="/en-US/Add-ons/SDK/Low-Level_APIs/ui_toolbar">toolbar reference</a></li> +</ul> diff --git a/files/bn/mozilla/add-ons/sdk/tutorials/index.html b/files/bn/mozilla/add-ons/sdk/tutorials/index.html new file mode 100644 index 0000000000..25c953da9e --- /dev/null +++ b/files/bn/mozilla/add-ons/sdk/tutorials/index.html @@ -0,0 +1,175 @@ +--- +title: Tutorials +slug: Mozilla/Add-ons/SDK/Tutorials +tags: + - টিউটোরিয়াল +translation_of: Archive/Add-ons/Add-on_SDK/Tutorials +--- +<p>এই পেজ এর তালিকাগুলো নিজ হাতে গড়া অনুচ্ছেদ, কেমনে SDK ব্যবহার করে নির্দিষ্ট কাজসমূহ অর্জন করা যায় এ সম্পর্কে।</p> +<hr> +<h3 id="শুরু_করা"><a name="শুরু করা">শুরু</a> করা</h3> +<div class="column-container"> + <div class="column-half"> + <dl> + <dt> + <a href="/en-US/Add-ons/SDK/Tutorials/Installation"> স্থাপন করা </a></dt> + <dd> + ডাউনলোড, স্থাপন,এবং SDK চালু করা Windows, OS X এবং Linux এ।</dd> + </dl> + <dl> + <dt> + <a href="/en-US/Add-ons/SDK/Tutorials/Troubleshooting">সমস্যাসমাধান </a></dt> + <dd> + কিছু pointers ব্যবহার করা হয় গতানুগতিক সমস্যাসমূহ সমাধান করার জন্য এবং আরও সাহায্য পাওয়ার জন্য।</dd> + </dl> + </div> + <div class="column-half"> + <dl> + <dt> + শুরু করা</dt> + <dd> + SDK এর সাথে একটি simple add-ones তৈরি করুন।</dd> + </dl> + </div> +</div> +<hr> +<h3 id="ইউজার_ইন্টারফেস_তৈরি">ইউজার ইন্টারফেস তৈরি</h3> +<div class="column-container"> + <div class="column-half"> + <dl> + <dt> + <a href="/en-US/Add-ons/SDK/Tutorials/Adding_a_Button_to_the_Toolbar">একটি toolbar button যুক্ত করুন</a></dt> + <dt> + <a href="/en-US/Add-ons/SDK/Tutorials/Adding_a_Button_to_the_Toolbar"> একটি বোতাম যুক্ত করুন </a> Firefox Add-on toolbar এ।<a href="/en-US/Add-ons/SDK/Tutorials/Add_a_Menu_Item_to_Firefox"> </a></dt> + <dt> + <a href="/en-US/Add-ons/SDK/Tutorials/Add_a_Menu_Item_to_Firefox">একটি menu item যুক্ত করুন Firefox এ </a></dt> + <dd> + Firefox main menus এ items যুক্ত করুন।</dd> + </dl> + </div> + <div class="column-half"> + <dl> + <dt> + পপআপ প্রদর্শন</dt> + <dd> + পপআাপ dialog প্রদর্শন করা HTML এবং Javascript এর সাথে।<a href="/en-US/Add-ons/SDK/Tutorials/Add_a_Context_Menu_Item"> </a></dd> + <dd> + <a href="/en-US/Add-ons/SDK/Tutorials/Add_a_Context_Menu_Item">একটি </a><a href="/en-US/Add-ons/SDK/Tutorials/Add_a_Context_Menu_Item">context menu item যুক্ত করা</a></dd> + <dd> + Firefox's context menu এ items যুক্ত করুন।</dd> + </dl> + </div> +</div> +<hr> +<h3 id="ব্রাউজার_দিয়ে_যোগাযোগ">ব্রাউজার দিয়ে যোগাযোগ</h3> +<div class="column-container"> + <div class="column-half"> + <p><a href="/en-US/Add-ons/SDK/Tutorials/Open_a_Web_Page"> একটি web page খোলা </a></p> + <p><a href="/en-US/Add-ons/SDK/Tutorials/Open_a_Web_Page"> একটি web page খুলুন একটি নতুন browser tab e অথবা window তে tabs module ব্যবহার করে,এবং ইহার বিষয়বস্তুকে প্রবেশাধিকার দেয়া।</a></p> + <dl> + <dt> + </dt> + <dd> + </dd> + <dt> + পৃষ্ঠা লোড শুনুন</dt> + <dd> + Tabs module ব্যবহার করা অবহিত করার জন্য যখন নতুন web page load হবে, এবং তাদের বিষয়বস্তুকে প্রবেশাধিকার দেয়া হবে।</dd> + </dl> + </div> + <div class="column-half"> + <dl> + <dt> + open tab এর তালিকা পাওয়া</dt> + <dd> + বর্তমানে খোলা tabs গুলোর মাধ্যমে বারবার,এবং তাদের content access tab module ব্যবহার করুন।</dd> + </dl> + </div> +</div> +<hr> +<h3 id="ওয়েব_পেজ_পরিবর্তন">ওয়েব পেজ পরিবর্তন</h3> +<div class="column-container"> + <div class="column-half"> + <dl> + <dt> + <a href="/en-US/Add-ons/SDK/Tutorials/Modifying_Web_Pages_Based_on_URL">URL এর উপর ভিত্তি করে ওয়েব পেজ পরিবর্তন করা </a></dt> + <dd> + URL এর উপর ভিত্তি করে web pages এর জন্য filters তৈরি করাঃযার URL টি ফিল্টার সাথে মিলে একটি ওয়েব পাতা লোড হয়, যখনই এটি একটি নির্দিষ্ট স্ক্রিপ্ট চালায়।</dd> + </dl> + </div> + <div class="column-half"> + <dl> + <dt> + <a href="/en-US/Add-ons/SDK/Tutorials/Modifying_the_Page_Hosted_by_a_Tab">সচল ওয়েব পেজ চালানো </a></dt> + <dd> + বর্তমান সক্রিয় ওয়েব পেজ এর মধ্যে পরিবর্তনশীল একটি স্ক্রিপ্ট লোড করুন।</dd> + </dl> + </div> +</div> +<hr> +<h3 id="উন্নয়ন_কৌশল">উন্নয়ন কৌশল</h3> +<div class="column-container"> + <div class="column-half"> + <dl> + <dt> + <a href="/en-US/Add-ons/SDK/Tutorials/Logging">লগিং </a></dt> + <dd> + <br> + ডায়গনিস্টিক উদ্দেশ্যে কনসোল থেকে বার্তা লগ ইন</dd> + <dt> + <br> + পূর্ণব্যবহারযোগ্য মডিউল নির্মাণ</dt> + <dd> + আলাদা modules এ আপনার add-on গঠন করুন যাতে এটি উন্নয়ন,ত্রুটি সরানো,এবং রক্ষণাবেক্ষণ করা সহজ হয়।পূর্ণব্যবহারযোগ্য packages তৈরি করুন যেটা আপনার modules এ ধারণ করবে,সুতরাং অন্যান্য add-on developers রাও তাদের ব্যবহার করতে পারবে।</dd> + <dt> + ইউনিট টেস্টিং</dt> + <dd> + SDK's test framework ব্যবহার করে writting and running unit tests করুন।</dd> + <dt> + ক্রোম কর্তৃপক্ষ</dt> + <dd> + components object এ access পাবেন,আপনার add-on load হওয়ার জন্য সক্রিয় করুন এবং কোন xpcom object ব্যবহার করুন।</dd> + <dt> + <a href="/en-US/Add-ons/SDK/Tutorials/Creating_event_targets">event targets </a>তৈরি করা</dt> + <dd> + আপনি তাদের নিজস্ব ইভেন্ট থেকে নির্গত নির্ধারণ বস্তু সক্রিয় করুন।</dd> + </dl> + </div> + <div class="column-half"> + <dl> + <dt> + লোড এবং লোড না করার জন্য শুনুন</dt> + <dd> + যখন আপনার add-on firefox এ load বা unload হবে তখন এর বিজ্ঞপ্তি জানুন এবং আর্গুমেন্ট পাস করান add-on এ command line হতে।</dd> + <dd> + <a href="/en-US/Add-ons/SDK/Tutorials/Add_a_Menu_Item_to_Firefox">Third-party modules </a>ব্যবহার করা</dd> + <dd> + ইনস্টল করুন এবং অতিরিক্ত মডিউল ব্যবহার করুন যা SDK এর সাথে Ship করে না।</dd> + <dt> + স্থানীয়করণ</dt> + <dd> + অনুবাদ কোড লেখা।</dd> + <dt> + মোবাইল উন্নয়ন</dt> + <dd> + Firefox Mobile এর জন্য android এর উপর add-ons উন্নয়ন করুন।</dd> + <dt> + <a href="/en-US/Add-ons/Add-on_Debugger">Add-on ডিবাগার</a></dt> + <dd> + আপনার অ্যাড অন এর জাভাস্ক্রিপ্ট ডিবাগ করুন।</dd> + </dl> + </div> +</div> +<hr> +<h3 id="একসঙ্গে_নির্বাণ"><a name="putting-it-together"></a>একসঙ্গে নির্বাণ</h3> +<div class="column-container"> + <div class="column-half"> + <dl> + <dt> + <a href="/en-US/Add-ons/SDK/Tutorials/Annotator">ভাষ্যকার add-on </a></dt> + <dd> + একটি অপেক্ষাকৃত জটিল add-on এ walkthrough করা।</dd> + </dl> + </div> +</div> +<p> </p> diff --git a/files/bn/mozilla/add-ons/sdk/tutorials/installation/index.html b/files/bn/mozilla/add-ons/sdk/tutorials/installation/index.html new file mode 100644 index 0000000000..496e6df0c2 --- /dev/null +++ b/files/bn/mozilla/add-ons/sdk/tutorials/installation/index.html @@ -0,0 +1,78 @@ +--- +title: Installation +slug: Mozilla/Add-ons/SDK/Tutorials/Installation +tags: + - ইন্সটলেশন + - স্থাপন করা +translation_of: Mozilla/Add-ons/SDK/Tools/jpm#Installation +--- +<p id="Prerequisites">পূর্বশর্ত</p> +<p>Add-on SDK-র মাধ্যমে উন্নয়ন করতে চাইলে আপনের লাগবেঃ</p> +<ul> + <li><a href="http://www.python.org/">Python</a> 2.5, 2.6 or 2.7. বিঃদ্রঃ Version 3.x of Python কোন Platform এ গ্রহণযোগ্য হবে না।নিশ্চিত করেন যে Python আপনার গতিপথে আছে।</li> + <li>Firefox.</li> + <li>SDK নিজেঃ আপনি এসডিকের সর্বশেষ স্থায়ী সংস্করণ পেতে পারেন tarball অথবা zip file হিসেবে, অথবা আপনি সর্বশেষ উন্নয়ন সংস্করণ পেতে পারেন GitHub repository থেকে।যদি আপনি সর্বশেষ উন্নয়ন সংস্করণ ব্যবহার করে থাকেন, তবে আপনাকে অবশ্যই এটি ব্যবহার করতে হবে Nightly version of Firefox এর সাথে।</li> +</ul> +<h2 id="Git_Sources_থেকে_Extention_Building_করা_AMO_এর_জন্য">Git Sources থেকে Extention Building করা AMO এর জন্য</h2> +<p>শুধুমাত্র addon-sdk sources এর সর্বশেষ git release tag ব্যবহার করা যেতে পারে যদি AMO তে উপস্থাপন করা হয়।</p> +<p>The git archive command প্রয়োজন হয় git clone working directory এর কিছু git attribute placeholders বিশ্লেষণ করার জন্য।</p> +<pre>1 git checkout 1.16 +2 +3 git archive 1.16 python-lib/cuddlefish/_version.py | tar -xvf - +</pre> +<h2 id="FreeBSD_OS_X_Linux_এ_স্থাপন_করা">FreeBSD/ OS X / Linux এ স্থাপন করা</h2> +<p>যে স্থানটি আপনি নির্বাচন করেছেন সে স্থানের File Contents Extract করুন, এবং shell/command prompt এর মাধ্যমে SDK এর root directory navigate করুন। উদাহরণস্বরূপঃ</p> +<pre>1 tar -xf addon-sdk.tar.gz +2 cd addon-sdk +</pre> +<p>যদি আপনি Bash user হন তবে চালু করুন (অধিকাংশ মানুষ)</p> +<pre>source bin/activate +</pre> +<p>এবং আপনি যদি non-Bash user হন ,আপনার চালু করা উচিতঃ</p> +<pre>bash bin/activate +</pre> +<p><span id="result_box" lang="bn"><span class="hps">আপনার কমান্ড</span> <span class="hps">প্রম্পট</span> <span class="hps">এখন</span> <span class="hps">SDK এর</span> <span class="hps">মূল</span> <span class="hps">ডিরেক্টরির নাম</span> <span class="hps">ধারণকারী একটি</span> <span class="hps">নতুন</span> <span class="hps">উপসর্গ</span> <span class="hps">থাকতে হবে</span></span></p> +<pre>(addon-sdk)~/mozilla/addon-sdk > +</pre> +<h2 id="Homebrew_ব্যবহার_করে_Mac_Install_করা">Homebrew ব্যবহার করে Mac Install করা</h2> +<p>যদি আপনি Mac user হন তবে SDK install করতে আপনি Homebrew ব্যবহার করতে পারেন, নিম্নোক্ত নির্দেশ ব্যবহার করেঃ</p> +<pre>brew install mozilla-addon-sdk</pre> +<p>একবার সফলতার সাথে এটি সম্পূর্ণ হলে, আপনি cfx program আপনার command line এ ব্যবহার করতে পারেন যে কোন সময় । আপনার bin/activate চালু করার প্রয়োজন নেই।</p> +<h2 id="Windows_এ_install_করা">Windows এ install করা</h2> +<p>যে স্থানটি আপনি নির্বাচন করেছেন সে স্থানের File Contents Extract করুন, এবং shell/command prompt এর মাধ্যমে SDK এর root directory navigate করুন। উদাহরণস্বরূপঃ</p> +<pre>7z.exe x addon-sdk.zip +cd addon-sdk +</pre> +<p>তারপর চালু করুনঃ</p> +<pre>bin\activate +</pre> +<p><span id="result_box" lang="bn"><span class="hps">আপনার কমান্ড</span> <span class="hps">প্রম্পট</span> <span class="hps">এখন</span> <span class="hps">SDK এর</span> <span class="hps">এর</span> <span class="hps">রুট ডিরেক্টরি</span> <span class="hps">সম্পূর্ণ পাথ</span> <span class="hps">ধারণকারী একটি</span> <span class="hps">নতুন</span> <span class="hps">উপসর্গ</span> <span class="hps">থাকতে হবে</span></span> :</p> +<pre>(C:\Users\mozilla\sdk\addon-sdk) C:\Users\Work\sdk\addon-sdk> +</pre> +<h2 id="সক্রিয়_করা"> সক্রিয় করা</h2> +<p>সক্রিয় কমান্ড কিছু environment variables set করে যেটা SDK এর জন্য প্রয়োজন। এটি শুধুমাত্র variables set করে current command prompt এর জন্য। <code>যদি আপনি নতুন command prompt </code><code>চালু করেন,</code>SDK নতুন prompt এ সক্রিয় হতে পারবে না যতক্ষণ না পর্যন্ত আপনি activate type না করেন।</p> +<p>এটা মানে হল আপনার SDK এর অনেক কপি আপনার disk এর বিভিন্ন স্থানে থাকতে পারে এবং তাদের মধ্যে switch থাকতে পারে, <span id="result_box" lang="bn"><span class="hps">অথবা এমনকি তাদের</span> <span class="hps">উভয়ে</span> <span class="hps">একই সময়ে বিভিন্ন</span> <span class="hps">কমান্ড লিখতে </span><span class="hps">সক্রিয়</span> <span class="hps">থাকে।</span></span></p> +<h3 id="সক্রিয়করণ_স্থায়ী_করা">সক্রিয়করণ স্থায়ী করা</h3> +<p>এই variables গুলো আপনার পরিমণ্ডলে set করলে আপনার সকল নতুন prompt তাদের নির্ণয় করে ফেলবে, আপনি সক্রিয়করণকে স্থায়ী করতে পারবেন। <span id="result_box" lang="bn"><span class="hps">তারপর আপনি</span> <span class="hps">একটি নতুন কমান্ড</span> <span class="hps">প্রম্পট</span> <span class="hps">খুলুন</span> <span class="hps">প্রত্যেক সময়</span> <span class="hps">সক্রিয়</span> <span class="hps">টাইপ</span> <span class="hps">করার প্রয়োজন হবে না</span><span>।</span></span></p> +<p>কারন নতুন মুক্তিপ্রাপ্ত SDK এর সাথে সঠিক variables set পরিবর্তন হতে পারে,activation scripts পড়া উচিত কোন variables set করা প্রয়োজন তা ঠিক করার জন্য। সক্রিয়করণ ব্যবহার করে বিভিন্ন Scripts এবং sets করে বিভিন্ন variables bash environment এর জন্য (Linux and OS X) এবং Windows environments এর জন্য।</p> +<h4 id="Windows">Windows</h4> +<p>Windows এ, <code>bin\activate</code> uses <code>activate.bat</code>, এবং আপনি command line ব্যবহার করে <code>setx</code> tool or the Control Panel সক্রিয়করণ স্থায়ী করতে পাড়েন।</p> +<h4 id="Linux_OS_X">Linux / OS X</h4> +<p>Linux and OS X এ, <code>source bin/activate</code> <code>activate</code> bash script ব্যবহার করে, এবং আপনি সক্রিয়করণ স্থায়ী করতে পারবেন <code>~/.bashrc</code> (on Linux) or <code>~/.bashprofile</code> (on OS X) ব্যবহার করে।</p> +<p>এটির পরিবর্তে আপনার directory তে আপনি cfx program এ সাংকেতিক চিহ্ন তৈরি করতে পারেনঃ</p> +<p> </p> +<pre>ln -s PATH_TO_SDK/bin/cfx ~/bin/cfx +</pre> +<p>SDK install করার করার জন্য যদি আপনি Homebrew ব্যবহার করেন,environment variables আপনার জন্য স্থায়ীভাবে স্থাপন হয়ে থাকবে।</p> +<h2 id="বৈধতা_পরীক্ষা">বৈধতা পরীক্ষা</h2> +<p>আপনার shell prompt এর মাধ্যমে চালু করেনঃ</p> +<pre>cfx +</pre> +<p>এটির নির্গমন এমন হতে হবে যে এটির প্রথম লাইন দেখতে এটির মত,অনেক লাইন তথ্য অনুসরণ করেঃ</p> +<pre>Usage: cfx [options] [command] +</pre> +<p>এটি হয় <a href="/en-US/Add-ons/SDK/Tools/cfx"><code>cfx</code> command-line program</a>। এটি আপনার Add-on SDK এর প্রাথমিক interface। Firefox চালাতে আপনি এটি ব্যবহার করেন এবং আপনার add-on পরীক্ষা করেন, আপনার add-on package করুন বিতরণ করার জন্য, দলিল পরিদর্শন করুন এবং unit tests চালু করুন</p> +<h2 id="সমস্যাসমূহ">সমস্যাসমূহ ?</h2> +<p><a href="https://developer.mozilla.org/en-US/Add-ons/SDK/Tutorials/Troubleshooting">Troubleshooting</a> page এ চেষ্টা করুন।</p> +<h2 id="পরবর্তী_পদক্ষেপ">পরবর্তী পদক্ষেপ</h2> +<p>পরবর্তীতে <a href="/en-US/Add-ons/SDK/Tutorials/Getting_Started_With_cfx">Getting Started With cfx</a> tutorial দেখুন,সেখানে <span class="gt-card-ttl-txt" style="direction: ltr;">ব্যাখ্যা করা আছে যে কেমন করে</span> <code>cfx</code> tool ব্যবহার করে add-ons তৈরি করা যায়।</p> diff --git a/files/bn/mozilla/add-ons/sdk/tutorials/logging/index.html b/files/bn/mozilla/add-ons/sdk/tutorials/logging/index.html new file mode 100644 index 0000000000..3e67bdd732 --- /dev/null +++ b/files/bn/mozilla/add-ons/sdk/tutorials/logging/index.html @@ -0,0 +1,38 @@ +--- +title: লগিং +slug: Mozilla/Add-ons/SDK/Tutorials/Logging +translation_of: Archive/Add-ons/Add-on_SDK/Tutorials/Logging +--- +<div class="note"> + To follow this tutorial you'll need to have <a href="/en-US/Add-ons/SDK/Tutorials/Installation">installed the SDK</a> and learned the <a href="/en-US/Add-ons/SDK/Tutorials/Getting_Started_With_cfx">basics of <code>cfx</code></a>.</div> +<p> <a href="https://developer.mozilla.org/en/DOM/console">ডম<code> কনসোল অবজেক্ট</code> </a> জাভাস্ক্রিপ্ট ডিবাগ করার জন্য ব্যবহৃত হয়। কারণ ডম অবজেক্ট গুলো মেইন অ্যাড-অন কোডে পাওয়া যায় না । SDK এর নিজেস্ব গ্লোবাল কনসোল অবজেক্ট আছে যার অধিকাংশ মেথড ডম কনসোল এর মত , যার মধ্যে আছে লগ এরর, ওয়ার্নিং অথবা ইনফরমেশনাল ম্যাসেজ। কনসোল এ এক্সেস করার জন্য আপনার কোন কিছুর প্রয়োজন<code>()নেই।</code> এটি automatically আপনার জন্য দেয়া আছে ।</p> +<p>The <code>console.log()</code> method prints an informational message:</p> +<pre class="brush: js">console.log("Hello World"); +</pre> +<p>Try it out:</p> +<ul> + <li>create a new directory, and navigate to it</li> + <li>execute <code>cfx init</code></li> + <li>open "lib/main.js" and add the line above</li> + <li>execute <code>cfx run</code>, then <code>cfx run</code> again</li> +</ul> +<p>Firefox will start, and the following line will appear in the command window you used to execute <code>cfx run</code>:</p> +<pre>info: Hello World! +</pre> +<h2 id="console_in_Content_Scripts"><code>console</code> in Content Scripts</h2> +<p>You can use the console in <a href="/en-US/Add-ons/SDK/Guides/Content_Scripts">content scripts</a> as well as in your main add-on code. The following add-on logs the HTML content of every tab the user loads, by calling <code>console.log()</code> inside a content script:</p> +<pre class="brush: js">require("sdk/tabs").on("ready", function(tab) { + tab.attach({ + contentScript: "console.log(document.body.innerHTML);" + }); +}); +</pre> +<h2 id="console_Output"><code>console</code> Output</h2> +<p>If you are running your add-on from the command line (for example, executing <code>cfx run</code> or <code>cfx test</code>) then the console's messages appear in the command shell you used.</p> +<p>If you've installed the add-on in Firefox then the messages appear in Firefox's <a href="/en-US/docs/Tools/Browser_Console">Browser Console</a>.</p> +<p>But note that <strong>by default, calls to <code>console.log()</code> will not result in any output in the Error Console for any installed add-ons</strong>: this includes add-ons installed using the Add-on Builder or using tools like the <a href="https://addons.mozilla.org/en-US/firefox/addon/autoinstaller/">Extension Auto-installer</a>.</p> +<p>See <a href="/en-US/Add-ons/SDK/Tools/console#Logging_Levels">"Logging Levels"</a> in the console reference documentation for more information on this.</p> +<h2 id="Disabling_strict_mode">Disabling strict mode</h2> +<p class="note">By default, <code>cfx</code> enables JavaScript strict mode, which will cause a lot of JavaScript warnings to be logged to the console. If this makes it harder to interpret logging output, you can disable strict mode by opening the file at python-lib/cuddlefish/prefs.py and setting "javascript.options.strict" to <code>False</code>.</p> +<h2 id="Learning_More">Learning More</h2> +<p>For the complete <code>console</code> API, see its <a href="/en-US/Add-ons/SDK/Tools/console">API reference</a>.</p> diff --git a/files/bn/mozilla/add-ons/sdk/tutorials/unit_testing/index.html b/files/bn/mozilla/add-ons/sdk/tutorials/unit_testing/index.html new file mode 100644 index 0000000000..1f7ad87c4d --- /dev/null +++ b/files/bn/mozilla/add-ons/sdk/tutorials/unit_testing/index.html @@ -0,0 +1,114 @@ +--- +title: ইউনিট টেস্টিং +slug: Mozilla/Add-ons/SDK/Tutorials/Unit_testing +translation_of: Archive/Add-ons/Add-on_SDK/Tutorials/Unit_testing +--- +<div class="note"> + <p><span style="color: rgb(0, 0, 0); font-family: Georgia; font-size: 16px; line-height: normal;">এই tutorial আপনার থাকতে দরকার হবে অনুসরন করতে</span><span> <a href="/en-US/Add-ons/SDK/Tutorials/Installation">installed the SDK</a>, </span><span style="color: rgb(0, 0, 0); font-family: Georgia; font-size: 16px; line-height: normal;">জ্ঞানী </span><span><a href="/en-US/Add-ons/SDK/Tutorials/Getting_Started_With_cfx">basics of <code>cfx</code></a>, </span><span style="color: rgb(0, 0, 0); font-family: Georgia; font-size: 16px; line-height: normal;">আর অনুসরন করা tutorial</span><span> <a href="/en-US/Add-ons/SDK/Tutorials/Creating_reusable_modules">writing reusable modules</a>.</span></p> +</div> +<div class="note"> + <p><span style="color: rgb(0, 0, 0); font-family: Georgia; font-size: 16px; line-height: normal;">যদি আপনি ব্যবহার করতেন</span> <a href="/en-US/Add-ons/SDK/Tools/jpm">jpm</a> <span style="color: rgb(0, 0, 0); font-family: Georgia; font-size: 16px; line-height: normal;">cfx বদলে, cfx থেকে স্থানান্তর করতে গাইড দেখে</span>, in particular <span style="color: rgb(0, 0, 0); font-family: Georgia; font-size: 16px; line-height: normal;">সেকশান</span> <a href="/en-US/Add-ons/SDK/Tools/cfx_to_jpm#Requiring_modules_from_test_code">loading modules from test code</a>.</p> +</div> +<p><span style="color: rgb(0, 0, 0); font-family: Georgia; font-size: 16px; line-height: normal;">sdk দেয় একটি কাঠামো সাহায্য করতে বানায় আর আপনার কোড-এর জন্য অংশ পরীক্ষা দৌড়ায়</span>. <span style="color: rgb(0, 0, 0); font-family: Georgia; font-size: 16px; line-height: normal;">এটা হাতেকলমে দেখাতে কাজ করে আমরা একটি সাদাসিধে-এর জন্য কিছু অংশ পরীক্ষা লিখব</span> <a href="http://en.wikipedia.org/wiki/Base64">Base64</a> <span style="color: rgb(0, 0, 0); font-family: Georgia; font-size: 16px; line-height: normal;">মডিউল সঙ্কেতাক্ষরে লিখতে</span>.</p> +<h2 id="একটি_সাদাসিধে_base64_মডিউল"><span style="color: rgb(0, 0, 0); font-family: Georgia; font-size: 16px; line-height: normal;">একটি সাদাসিধে base64 মডিউল</span></h2> +<p><span style="color: rgb(0, 0, 0); font-family: Georgia; font-size: 16px; line-height: normal;">একটি ওয়েব পাতায়, আপনি base64 সম্পাদন করতে পারেন ( -rrb- আর atob -lrb- ) কাজ ব্যবহার সঙ্কেতাক্ষরে লিখতে আর btoa ব্যবহার করা সন্কেত উদঘাটন করতে।</span><span style="color: rgb(0, 0, 0); font-family: Georgia; font-size: 16px; line-height: normal;">দুর্ভাগ্যক্রমে এই কাজ ব্যবহার জানালা জিনিষে সংযুক্ত করা হয়: যেহেতু এই জিনিষ না উপস্থিত আপনার প্রধান add-on কোডে, atob ( -rrb- আর btoa -lrb- ) নেই উপস্থিত either।</span> <span style="color: rgb(0, 0, 0); font-family: Georgia; font-size: 16px; line-height: normal;">তাই আমরা একটি base64 মডিউল বানাবো প্ল্যাটফর্ম থেকে এই কাজ ব্যবহার অনাবৃত করতে।</span></p> +<p><span style="color: rgb(0, 0, 0); font-family: Georgia; font-size: 16px; line-height: normal;">শুরুতে, একটি নতুন ডিরেক্টরি বানাতে, এটায় পথ খোঁজতে, আর cfx init দৌড়াতে।</span> Now create a new file in "lib" called "base64.js", and give it the following contents:<span style="color: rgb(0, 0, 0); font-family: Georgia; font-size: 16px; line-height: normal;">এখন `` libে '' `` "base64.js" ডাকা একটি নতুন ফাইল বানান।</span></p> +<pre class="brush: js">const { atob, btoa } = require("chrome").Cu.import("resource://gre/modules/Services.jsm", {}); + +exports.atob = a => atob(a); +exports.btoa = b => btoa(b); </pre> +<p><code><span style="color: rgb(0, 0, 0); font-family: Georgia; font-size: 16px; line-height: normal;">এই কোড দুটো কাজ ব্যবহার, যা মাত্র প্ল্যাটফর্ম-এর btoa ডাকে রপ্তানি করে</span>()</code> and <code>atob()</code> functions. <span style="color: rgb(0, 0, 0); font-family: Georgia; font-size: 16px; line-height: normal;">ব্যবহারে মডিউল দেখাতে, সম্পাদন করতে</span> "main.js"<span style="color: rgb(0, 0, 0); font-family: Georgia; font-size: 16px; line-height: normal;">দাখিল করুন যেহেতু এটি অনুসরন করে:</span></p> +<pre class="brush: js">var base64 = require("./base64"); + +var button = require("sdk/ui/button/action").ActionButton({ + id: "base64", + label: "base64", + icon: "./icon-16.png", + onClick: function() { + encoded = base64.btoa("hello"); + console.log(encoded); + decoded = base64.atob(encoded); + console.log(decoded); + } +});</pre> +<p><span style="color: rgb(0, 0, 0); font-family: Georgia; font-size: 16px; line-height: normal;">আপনার add-ons `` ডাটা '' ডিরেক্টরিতে বাঁচাতে </span><span style="color: rgb(0, 0, 0); font-family: Georgia; font-size: 16px; line-height: normal;"> উপরন্তু দৃষ্টান্ত একটি প্রতিমা উল্লেখ করে `` icon-16 দাখিল করে থাকতে হবে। । আপনি এই প্রতিমা ডাউনলোড করতে পারতেন:</span> <img alt="" src="https://mdn.mozillademos.org/files/7661/icon-16.png" style="width: 16px; height: 16px;">.</p> +<p><span style="color: rgb(0, 0, 0); font-family: Georgia; font-size: 16px; line-height: normal;">এখন</span> "main.js" <span style="color: rgb(0, 0, 0); font-family: Georgia; font-size: 16px; line-height: normal;">আমদানি base64 মডিউল আর ডাক এটার দুটো exported কাজ ব্যবহার।</span></p> +<table style="color: rgb(0, 0, 0); font-family: Georgia; font-size: 12px; line-height: normal; overflow: auto; width: 400px; height: 40px;"> + <tbody> + <tr> + <td><span style="font-size: 16px;">যদি আমরা add-on দৌড়াতাম আর বাটন ক্লিক করি, আমরা অনুসরন করা লগ করা আউটপুট দেখা উচিত</span></td> + </tr> + </tbody> +</table> +<p>:</p> +<pre>info: aGVsbG8= +info: hello +</pre> +<h2 id="পরীক্ষা_করে_base64_মডিউল"><span style="color: rgb(0, 0, 0); font-family: Georgia; font-size: 16px; line-height: normal;">পরীক্ষা করে base64 মডিউল</span></h2> +<p><span style="color: rgb(0, 0, 0); font-family: Georgia; font-size: 16px; line-height: normal;">navigate এ্যাডঅন-এর-এর</span> <code>test</code> <span style="color: rgb(0, 0, 0); font-family: Georgia; font-size: 16px; line-height: normal;">directory আর delete</span> <code>test-main.js</code> <span style="color: rgb(0, 0, 0); font-family: Georgia; font-size: 16px; line-height: normal;">ফাইল</span>. <span style="color: rgb(0, 0, 0); font-family: Georgia; font-size: 16px; line-height: normal;">এটার জায়গায় বানান একটি ফাইল যা ডাকা হলো</span> <code>test-base64.js</code> <span style="color: rgb(0, 0, 0); font-family: Georgia; font-size: 16px; line-height: normal;">অনুসরন করা অভ্যন্তরস্থ বস্তু-এর সাথে</span>:</p> +<pre class="brush: js">var base64 = require("./base64"); + +exports["test atob"] = function(assert) { + assert.ok(base64.atob("aGVsbG8=") == "hello", "atob works"); +} + +exports["test btoa"] = function(assert) { + assert.ok(base64.btoa("hello") == "aGVsbG8=", "btoa works"); +} + +exports["test empty string"] = function(assert) { + assert.throws(function() { + base64.atob(); + }, + "empty string check works"); +} + +require("sdk/test").run(exports); </pre> +<p><span style="color: rgb(0, 0, 0); font-family: Georgia; font-size: 16px; line-height: normal;">এটা দাখিল করে</span>: <span style="color: rgb(0, 0, 0); font-family: Georgia; font-size: 16px; line-height: normal;">রপ্তানি করে তিন কাজ ব্যবহার, যার each একটি একাকী যুক্তি পেতে আশা করে যা হচ্ছে একটি</span> <code>assert</code> <span style="color: rgb(0, 0, 0); font-family: Georgia; font-size: 16px; line-height: normal;">জিনিষ</span>. <code>assert</code> <span style="color: rgb(0, 0, 0); font-family: Georgia; font-size: 16px; line-height: normal;">যোগান দেয়া হয়</span> <a href="/en-US/Add-ons/SDK/Low-Level_APIs/test_assert"><code>test/assert</code></a> <span style="color: rgb(0, 0, 0); font-family: Georgia; font-size: 16px; line-height: normal;">module আর বাস্তবায়িত করে</span><a href="http://wiki.commonjs.org/wiki/Unit_Testing/1.1">CommonJS Unit Testing specification</a>.</p> +<ul> + <li> + <p><code><span style="color: rgb(0, 0, 0); font-family: Georgia; font-size: 16px; line-height: normal;">প্রথম দুটো কাজ ব্যবহার atob ডাকে</span>()</code> <code><span style="color: rgb(0, 0, 0); font-family: Georgia; font-size: 16px; line-height: normal;">আর btoa</span>()</code> <span style="color: rgb(0, 0, 0); font-family: Georgia; font-size: 16px; line-height: normal;">আর ব্যবহার</span> <a href="/en-US/Add-ons/SDK/Low-Level_APIs/test_assert#ok(guard.2C_message)"><code>assert.ok()</code></a> <span style="color: rgb(0, 0, 0); font-family: Georgia; font-size: 16px; line-height: normal;">যাচাই করতে যে হচ্ছে as আশা করা আউটপুট।</span></p> + </li> + <li> + <p><code><span style="color: rgb(0, 0, 0); font-family: Georgia; font-size: 16px; line-height: normal;">দ্বিতীয় কাজ ব্যবহার একটি খালি সূতা পাশ করতে দ্বারা মডিউল-এর error-handling কোড পরীক্ষা করে</span>atob()</code> <code><span style="color: rgb(0, 0, 0); font-family: Georgia; font-size: 16px; line-height: normal;">আর ব্যবহার করতে</span><a href="/en-US/Add-ons/SDK/Low-Level_APIs/test_assert#throws(block.2C_error.2C_message)">assert.throws()</a></code> <span style="color: rgb(0, 0, 0); font-family: Georgia; font-size: 16px; line-height: normal;">যাচাই করতে যে ওঠানো হয় প্রত্যাশিত ব্যতিক্রম।</span></p> + </li> +</ul> +<p><span style="color: rgb(0, 0, 0); font-family: Georgia; font-size: 16px; line-height: normal;">এই মুহূর্তে আপনার add-on ought এই মত দেখতে:</span></p> +<pre> /base64 + package.json + README.md + /doc + main.md + /lib + main.js + base64.js + /test + test-base64.js +</pre> +<p><span style="color: rgb(0, 0, 0); font-family: Georgia; font-size: 16px; line-height: normal;">এখন cfx নির্বাহ করুন-- এ্যাডঅন-এর মূল ডিরেক্টরি থেকে verbose পরীক্ষা করুন। আপনি এখন এর মত কিছু দেখা পাবেন:</span></p> +<pre>Running tests on Firefox 13.0/Gecko 13.0 ({ec8030f7-c20a-464f-9b0e-13a3a9e97384}) under darwin/x86. +info: executing 'test-base64.test atob' +info: pass: atob works +info: executing 'test-base64.test btoa' +info: pass: btoa works +info: executing 'test-base64.test empty string' +info: pass: empty string check works + +3 of 3 tests passed. +Total time: 5.172589 seconds +Program terminated successfully. +</pre> +<table style="color: rgb(0, 0, 0); font-family: Georgia; font-size: 12px; line-height: normal; overflow: auto; width: 400px; height: 40px;"> + <tbody> + <tr> + <td><span style="font-size: 16px;">কি ঘটে এখানে হচ্ছে সে cfx পরীক্ষা</span></td> + </tr> + </tbody> +</table> +<p><span style="color: rgb(0, 0, 0); font-family: Georgia; font-size: 16px; line-height: normal;">যোজক চিহ্ন নোট করুন</span><span> "test" </span><span style="color: rgb(0, 0, 0); font-family: Georgia; font-size: 16px; line-height: normal;">module নামে।</span><span> <code>cfx test</code></span><span style="color: rgb(0, 0, 0); font-family: Georgia; font-size: 16px; line-height: normal;">will অন্তর্ভুক্ত করে একটি মডিউল যা ডাকা হলো</span><span> "test-myCode.js", </span><span style="color: rgb(0, 0, 0); font-family: Georgia; font-size: 16px; line-height: normal;">কিন্তু, অভিলাষ মডিউল ছাঁটাই করে যা ডাকা হলো</span><span> "test_myCode.js" or "testMyCode.js".</span></p> +<ul> + <li><span style="color: rgb(0, 0, 0); font-family: Georgia; font-size: 16px; line-height: normal;">পরীক্ষা ডিরেক্টরিতে রূপ আপনার প্যাকেজ-এর</span></li> + <li><span style="color: rgb(0, 0, 0); font-family: Georgia; font-size: 16px; line-height: normal;">যেকোনো মডিউল যার নাম শব্দ পরীক্ষার সাথে শুরু করে loads-</span></li> + <li><span style="color: rgb(0, 0, 0); font-family: Georgia; font-size: 16px; line-height: normal;">প্রত্যেক exported কাজ ব্যবহার যার নাম শুরু করে calls</span>"test", <span style="color: rgb(0, 0, 0); font-family: Georgia; font-size: 16px; line-height: normal;">এটা একটি পাশ করতে</span> <a href="/en-US/Add-ons/SDK/Low-Level_APIs/test_assert#Assert"><code>assert</code></a> <span style="color: rgb(0, 0, 0); font-family: Georgia; font-size: 16px; line-height: normal;">এটার একমাত্র যুক্তি হিসেবে আপত্তি করুন।</span></li> +</ul> +<p><span style="color: rgb(0, 0, 0); font-family: Georgia; font-size: 16px; line-height: normal;">স্পষ্টত, আপনার-- verbose অপশন পাশ করতে cfx যদি আপনি চাইতেন না হবে না; এত মাত্র করতে আউটপুট আরো সহজ পড়তে বানায়।</span></p> diff --git a/files/bn/mozilla/add-ons/webextensions/index.html b/files/bn/mozilla/add-ons/webextensions/index.html new file mode 100644 index 0000000000..8a47f12413 --- /dev/null +++ b/files/bn/mozilla/add-ons/webextensions/index.html @@ -0,0 +1,91 @@ +--- +title: WebExtensions +slug: Mozilla/Add-ons/WebExtensions +tags: + - NeedsTranslation + - TopicStub +translation_of: Mozilla/Add-ons/WebExtensions +--- +<div>{{AddonSidebar}}</div> + +<div class="note"> +<p>WebExtensions are currently in an experimental alpha state. From Firefox 46, you can publish WebExtensions to Firefox users, just like any other add-on. We're aiming for a first stable release in Firefox 48.</p> +</div> + +<p>WebExtensions are a cross-browser system for developing browser add-ons. To a large extent the system is compatible with the <a class="external-icon external" href="https://developer.chrome.com/extensions">extension API</a> supported by Google Chrome and Opera. Extensions written for these browsers will in most cases run in Firefox or <a href="https://developer.microsoft.com/en-us/microsoft-edge/platform/documentation/extensions/">Microsoft Edge</a> with <a href="https://developer.mozilla.org/en-US/Add-ons/WebExtensions/Porting_from_Google_Chrome">just a few changes</a>. The API is also fully compatible with <a href="https://developer.mozilla.org/en-US/Firefox/Multiprocess_Firefox">multiprocess Firefox</a>.</p> + +<p>We're also intending to extend the APIs to support the needs of add-on developers, so if you have ideas, we'd love to hear them. You can reach us on the <a href="https://mail.mozilla.org/listinfo/dev-addons">dev-addons mailing list</a> or <a href="irc://irc.mozilla.org/webextensions">#webextensions</a> on <a href="https://wiki.mozilla.org/IRC">IRC</a>.</p> + +<div class="row topicpage-table"> +<div class="section"> +<h3 id="Getting_started">Getting started</h3> + +<ul> + <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/What_are_WebExtensions_">What are WebExtensions?</a></li> + <li><a href="/en-US/Add-ons/WebExtensions/Your_first_WebExtension">Your first WebExtension</a></li> + <li><a href="/en-US/Add-ons/WebExtensions/Your_second_WebExtension">Your second WebExtension</a></li> + <li><a href="/en-US/Add-ons/WebExtensions/Anatomy_of_a_WebExtension">Anatomy of a WebExtension</a></li> + <li><a href="/en-US/Add-ons/WebExtensions/Examples">Example WebExtensions</a></li> +</ul> + +<h3 id="How_to">How to</h3> + +<ul> + <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/Intercept_HTTP_requests">Intercept HTTP requests</a></li> + <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/Modify_a_web_page">Modify a web page</a></li> + <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/Add_a_button_to_the_toolbar">Add a button to the toolbar</a></li> + <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/Implement_a_settings_page">Implement a settings page</a></li> + <li>Manipulate browser tabs</li> + <li>Access and modify bookmarks</li> + <li>Access and modify cookies</li> +</ul> + +<h3 id="Concepts">Concepts</h3> + +<ul> + <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/Using_the_JavaScript_APIs">Using the JavaScript APIs</a></li> + <li><a href="/en-US/Add-ons/WebExtensions/Content_scripts">Content scripts</a></li> + <li><a href="/en-US/Add-ons/WebExtensions/Match_patterns">Match patterns</a></li> + <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/Internationalization">Internationalization</a></li> + <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/Content_Security_Policy">Content Security Policy</a></li> +</ul> + +<h3 id="Porting">Porting</h3> + +<ul> + <li><a href="/en-US/Add-ons/WebExtensions/Porting_from_Google_Chrome">Porting a Google Chrome extension</a></li> + <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/Porting_a_legacy_Firefox_add-on">Porting a legacy Firefox add-on</a></li> + <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/Comparison_with_the_Add-on_SDK">Comparison with the Add-on SDK</a></li> + <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/Comparison_with_XUL_XPCOM_extensions">Comparison with XUL/XPCOM extensions</a></li> + <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/Chrome_incompatibilities">Chrome incompatibilities</a></li> +</ul> + +<h3 id="Firefox_workflow">Firefox workflow</h3> + +<ul> + <li><a href="/en-US/Add-ons/WebExtensions/Temporary_Installation_in_Firefox">Installation</a></li> + <li><a href="/en-US/Add-ons/WebExtensions/Debugging">Debugging</a></li> + <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/Getting_started_with_web-ext">Getting started with web-ext</a></li> + <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/web-ext_command_reference">web-ext command reference</a></li> + <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/WebExtensions_and_the_Add-on_ID">WebExtensions and the Add-on ID</a></li> + <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/Publishing_your_WebExtension">Publishing your WebExtension</a></li> +</ul> +</div> + +<div class="section"> +<h3 id="Reference">Reference</h3> + +<ul> + <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/API">JavaScript API overview</a></li> + <li><a href="/en-US/Add-ons/WebExtensions/Browser_support_for_JavaScript_APIs">Browser compatibility tables for JavaScript APIs</a></li> +</ul> + +<h4 id="JavaScript_APIs">JavaScript APIs</h4> + +<div class="twocolumns">{{ ListSubpages ("/en-US/Add-ons/WebExtensions/API") }}</div> + +<h4 id="Manifest_keys">Manifest keys</h4> + +<div class="twocolumns">{{ ListSubpages ("/en-US/Add-ons/WebExtensions/manifest.json") }}</div> +</div> +</div> diff --git a/files/bn/mozilla/add-ons/webextensions/what_are_webextensions/index.html b/files/bn/mozilla/add-ons/webextensions/what_are_webextensions/index.html new file mode 100644 index 0000000000..f92dc2ad28 --- /dev/null +++ b/files/bn/mozilla/add-ons/webextensions/what_are_webextensions/index.html @@ -0,0 +1,95 @@ +--- +title: What are WebExtensions? +slug: Mozilla/Add-ons/WebExtensions/What_are_WebExtensions +translation_of: Mozilla/Add-ons/WebExtensions/What_are_WebExtensions +--- +<p><span id="result_box" lang="bn"><span title="<p>This page contains links to documentation for the approach to developing extensions for Gecko-based applications which uses:</p> + +">এই পাতা গেকো ভিত্তিক অ্যাপ্লিকেশনের জন্য উন্নয়নশীল এক্সটেনশন পদ্ধতির যা ব্যবহার ডকুমেন্টেশন লিঙ্ক উপস্থিত রয়েছে</span><br> + <br> + <br> + <span title="<li>XUL overlays to specify the interface</li> + "> XUL প্রতিস্থাপক ইন্টারফেস করুন </ li> নির্দিষ্ট করার<br> + </span><span title='&lt;li>APIs available to privileged code, such as &lt;a href="/en-US/docs/XUL/tabbrowser">&lt;code>tabbrowser&lt;/code>&lt;/a> and &lt;a href="/en-US'><লি> যেমন <a href="/en-US/docs/XUL/tabbrowser"> <code> বিশেষ সুবিধাভোগী কোড উপলব্ধ API গুলি, tabbrowser </ code> </a> এবং <একটি href = "/ en-US </span><span title='/docs/Mozilla/JavaScript_code_modules">JavaScript modules&lt;/a>, to interact with the application and content.&lt;/li> +'>/ ডক্স / মজিলা / JavaScript_code_modules "> জাভাস্ক্রিপ্ট মডিউল </a>, অ্যাপ্লিকেশন এবং কন্টেন্ট সঙ্গে যোগাযোগ করার জন্য. </ li></span><br> + <span title="</ul> + +"></ Li></span><br> + <br> + <span title="<p>Prior to Firefox 4, and the Gecko 2 engine that powers it, this was the only way to develop extensions."><P> ঢাকা ফায়ারফক্স 4, এবং গেকো 2 ইঞ্জিন এটি ক্ষমতা, এই এক্সটেনশন বিকাশ করার একমাত্র উপায় ছিল এর আগে. </span><span title='This methodology has largely been superseded by &lt;a href="/en-US/docs/Extensions/Bootstrapped_extensions">restartless extensions&lt;/a>, and the &lt;a href="/en-US/Add-ons/SDK">'>এই পদ্ধতি মূলত <a href="/en-US/docs/Extensions/Bootstrapped_extensions"> রিস্টার্টবিহীন এক্সটেনশন </a>, এবং <a দ্বারা বাতিল হয়েছে href="/en-US/Add-ons/SDK"> </span><span title="Add-on SDK</a>, which is built on top of them.">অ্যাড-অন এসডিকে </a>, যা তাদের উপর নির্মিত হয়. </span><span title="The privileged JavaScript APIs described here can still be used in these newer types of add-ons.</p> + +">সুবিধাভোগী জাভাস্ক্রিপ্ট এপিআই এখানে বর্ণনা এখনও অ্যাড টার্ন এই নতুন ধরনের ব্যবহার করা যেতে পারে. '</ p></span><br> + <br> + <span title='&lt;h2 id="XUL_School">XUL School&lt;/h2> + +'><H2 & id = "XUL_School"> XUL স্কুল </ h2></span><br> + <br> + <span title='&lt;p>&lt;a href="/en-US/Add-ons/Overlay_Extensions/XUL_School">XUL School&lt;/a> is a comprehensive add-on development tutorial, focusing on Firefox extension development but mostly applicable to other Gecko-based'><পি> <a href="/en-US/Add-ons/Overlay_Extensions/XUL_School"> XUL স্কুল </a> একটি ব্যাপক অ্যাড অন উন্নয়ন টিউটোরিয়াল, কিন্তু বেশিরভাগই অন্যান্য গেকো ভিত্তিক প্রযোজ্য ফায়ারফক্স এক্সটেনশন উন্নয়ন উপর মনোযোগ নিবদ্ধ করে </span><span title="applications.</p> + +">অ্যাপ্লিকেশন. '</ p></span><br> + <br> + <span title='&lt;h2 id="More_resources">More resources&lt;/h2> + +'><H2 & id = "More_resources"> আরো সম্পদ করুন </ h2></span><br> + <br> + <span title='&lt;div class="column-container"> +'><Div class = "কলাম-ধারক"></span><br> + <span title='&lt;div class="column-half"> +'><Div class = "কলাম অর্ধ"></span><br> + <span title="<dl> + "><DL><br> + </span><span title='&lt;dt>&lt;a href="/en-US/Mozilla/Add-ons/Setting_up_extension_development_environment">Setting up your environment&lt;/a>&lt;/dt> + '><Dt> <a href="/en-US/Mozilla/Add-ons/Setting_up_extension_development_environment"> আপনার পরিবেশ </a> </ DT> সেট আপ<br> + </span><span title="<dd>Setting up the application for extension development.</dd> + "><DD> এক্সটেনশন উন্নয়নের জন্য আবেদন সেট আপ হচ্ছে. </ DD><br> + </span><span title='&lt;dt>&lt;a href="/en-US/docs/XUL">XUL&lt;/a>&lt;/dt> + '><Dt> <a href="/en-US/docs/XUL"> XUL </a> </ DT><br> + </span><span title="<dd>Tutorials and reference for the user interface language used by XUL extensions.</dd> + "><DD> টিউটোরিয়াল এবং ইউজার ইন্টারফেস XUL এক্সটেনশন. </ DD> দ্বারা ব্যবহৃত ভাষা জন্য রেফারেন্স<br> + </span><span title='&lt;dt>&lt;a href="/en-US/Mozilla/Add-ons/Code_snippets">Code snippets&lt;/a>&lt;/dt> + '><Dt> <a href="/en-US/Mozilla/Add-ons/Code_snippets"> কোড স্নিপেট </a> </ DT><br> + </span><span title="<dd>Sample code for many of the things you'll want to do.</dd> + "><DD> জিনিষ আপনি করতে চাইবেন. </ DD> অনেক জন্য নমুনা কোড<br> + </span><span title='&lt;dt>&lt;a href="/en-US/Mozilla/Add-ons/Installing_extensions">Installing extensions&lt;/a>&lt;/dt> + '><Dt> <a href="/en-US/Mozilla/Add-ons/Installing_extensions"> এক্সটেনশন </a> </ DT> ইনস্টল<br> + </span><span title="<dd>How to install an extension by copying the extension files into the application's install directory.</dd> + "><DD> অ্যাপ্লিকেশনের তালিকা ইনস্টল এক্সটেনশান ফাইল অনুলিপি দ্বারা একটি এক্সটেনশন ইনস্টল করার জন্য কিভাবে. </ DD><br> + </span><span title='&lt;dt>&lt;a href="/en-US/Add-ons/Overlay_extensions/Firefox_addons_developer_guide">Firefox add-ons developer guide&lt;/a>&lt;/dt> + '><Dt> <a href="/en-US/Add-ons/Overlay_extensions/Firefox_addons_developer_guide"> ফায়ারফক্স অ্যাড-অন ডেভেলপার নির্দেশিকা </a> </ DT><br> + </span><span title="<dd>A guide to developing overlay extensions.</dd> +"><DD> ওভারলে এক্সটেনশন. </ DD> উন্নয়নশীল একটি নির্দেশিকা</span><br> + <span title="</dl> +"></ DL></span><br> + <span title="</div> + +"></ Div></span><br> + <br> + <span title='&lt;div class="column-half"> +'><Div class = "কলাম অর্ধ"></span><br> + <span title="<dl> + "><DL><br> + </span><span title='&lt;dt>&lt;a href="/en-US/docs/Mozilla/JavaScript_code_modules">JavaScript code modules&lt;/a>&lt;/dt> + '><Dt> <a href="/en-US/docs/Mozilla/JavaScript_code_modules"> জাভাস্ক্রিপ্ট কোড মডিউল </a> </ DT><br> + </span><span title="<dd>JavaScript modules available to extension developers.</dd> + "><DD> জাভাস্ক্রিপ্ট মডিউল এক্সটেনশন ডেভেলপার. </ DD> উপলব্ধ<br> + </span><span title='&lt;dt>&lt;a href="/en-US/Mozilla/Add-ons/Inline_Options">Extension preferences&lt;/a>&lt;/dt> + '><Dt> <a href="/en-US/Mozilla/Add-ons/Inline_Options"> এক্সটেনশন পছন্দগুলি </a> </ DT><br> + </span><span title="<dd>How to specify the preferences for your extension that will appear in the Add-ons Manager.</dd> + "><DD> কিভাবে আপনার এক্সটেনশন পছন্দগুলি যে অ্যাড-অন ম্যানেজার প্রদর্শিত হবে তা নির্দিষ্ট করার. </ DD><br> + </span><span title='&lt;dt>&lt;a href="/en-US/Mozilla/Add-ons/Extension_Packaging">Extension packaging&lt;/a>&lt;/dt> + '><Dt> <a href="/en-US/Mozilla/Add-ons/Extension_Packaging"> এক্সটেনশন প্যাকেজিং </a> </ DT><br> + </span><span title="<dd>How extensions are packaged and installed.</dd> + "><DD> কিভাবে এক্সটেনশন প্যাকেজ এবং ইনস্টল করা হয়. </ DD><br> + </span><span title='&lt;dt>&lt;a href="/en-US/Mozilla/Add-ons/Creating_Custom_Firefox_Extensions_with_the_Mozilla_Build_System">Binary Firefox extensions&lt;/a>&lt;/dt> + '><Dt> <a href="/en-US/Mozilla/Add-ons/Creating_Custom_Firefox_Extensions_with_the_Mozilla_Build_System"> বাইনারি ফায়ারফক্স এক্সটেনশন </a> </ DT><br> + </span><span title="<dd>Creating binary extensions for Firefox.</dd> +"><DD> ফায়ারফক্সের জন্য বাইনারি এক্সটেনশন তৈরি. </ DD></span><br> + <span title="</dl> +"></ DL></span><br> + <span title="</div> +"></ Div></span><br> + <span title="</div> + +"></ Div></span><br> + <br> + <span title="<p>&nbsp;</p>"><পি> & nbsp; </ p></span></span></p> diff --git a/files/bn/mozilla/add-ons/webextensions/your_first_webextension/index.html b/files/bn/mozilla/add-ons/webextensions/your_first_webextension/index.html new file mode 100644 index 0000000000..c705ed4493 --- /dev/null +++ b/files/bn/mozilla/add-ons/webextensions/your_first_webextension/index.html @@ -0,0 +1,143 @@ +--- +title: আপনার প্রথম WebExtension +slug: Mozilla/Add-ons/WebExtensions/Your_first_WebExtension +translation_of: Mozilla/Add-ons/WebExtensions/Your_first_WebExtension +--- +<p>{{AddonSidebar}}</p> + +<p>এই অনুচ্ছেদে ফায়ারফক্সের WebExtension তৈরীর আদ্যপন্ত জানব। এই অ্যাড-অন "mozilla.org" অথবা এর সাবডোমেন থেকে আসা সমস্ত পেজে লাল বর্ডার যোগ করবে।</p> + +<p>এই উদাহরণের সোর্স কোড GitHub-এ দেওয়া আছেঃ</p> + +<p><a href="https://github.com/mdn/webextensions-examples/tree/master/borderify">https://github.com/mdn/webextensions-examples/tree/master/borderify</a>.</p> + +<p>প্রথমে দরকার হবে ফায়ারফক্স ৪৫ অথবা তার পরবর্তী ভার্সন।</p> + +<h2 id="WebExtension_লিখা">WebExtension লিখা</h2> + +<p>নতুন একটি ডিরেক্টরী তৈরী করে সেখানে প্রবেশ করুনঃ</p> + +<pre class="brush: bash">mkdir borderify +cd borderify</pre> + +<h3 id="manifest.json">manifest.json</h3> + +<p>এখন "borderify" ডিরেক্টরীর ভেতরে "manifest.json" নামে নতুন একটি ফাইল তৈরী করুন। তাতে নিম্নলিখিত কোড লিখুনঃ</p> + +<pre class="brush: json">{ + + "manifest_version": 2, + "name": "Borderify", + "version": "1.0", + + "description": "Adds a solid red border to all webpages matching mozilla.org.", + + "icons": { + "48": "icons/border-48.png" + }, + + "content_scripts": [ + { + "matches": ["*://*.mozilla.org/*"], + "js": ["borderify.js"] + } + ] + +}</pre> + +<ul> + <li>প্রথম তিনটি key: <code><a href="https://developer.mozilla.org/en-US/Add-ons/WebExtensions/manifest.json/manifest_version">manifest_version</a></code>, <code><a href="https://developer.mozilla.org/en-US/Add-ons/WebExtensions/manifest.json/name">name</a></code>, এবং <code><a href="https://developer.mozilla.org/en-US/Add-ons/WebExtensions/manifest.json/version">version</a></code>, দিতেই হবে যাতে অ্যাড-অনের প্রাথমিক মেটাডাটা থাকে।</li> + <li><code><a href="/en-US/Add-ons/WebExtensions/manifest.json/description">description</a></code> ঐচ্ছিক কিন্তু দিতে পরাপর্শ দেওয়া হচ্ছে কারণ, অ্যাড-ম্যানেজারে এই তথ্য দেখাবে।।</li> + <li><code><a href="/en-US/Add-ons/WebExtensions/manifest.json/icons">icons</a></code> ঐচ্ছিক যা অ্যাড-অনের একটি আইকন নির্দিষ্ট করে,যা অ্যাড-ম্যানেজারে দেখাবে তাই দিতে পরামর্শ দেওয়া হচ্ছে।</li> +</ul> + +<p>কিছু ফায়ারফক্স ভার্সনে একটি অতিরক্ত <code><a href="https://developer.mozilla.org/en-US/Add-ons/WebExtensions/manifest.json/applications">applications </a></code>key manifest.json-এ যোগ করা লাগতে পারে।</p> + +<pre class="brush: json line-numbers language-json"><code class="language-json"><span class="key token">"applications":</span> <span class="punctuation token">{</span> + <span class="key token">"gecko":</span> <span class="punctuation token">{</span> + <span class="key token">"id":</span> <span class="string token">"borderify@example.com"</span><span class="punctuation token">,</span> + <span class="key token">"strict_min_version":</span> <span class="string token">"42.0"</span><span class="punctuation token">,</span> + <span class="key token">"strict_max_version":</span> <span class="string token">"50.*"</span><span class="punctuation token">,</span> + <span class="key token">"update_url":</span> <span class="string token">"https://example.com/updates.json"</span> + <span class="punctuation token">}</span> +<span class="punctuation token">}</span></code></pre> + +<p>সবচেয়ে মজার key হচ্ছ <code><a href="/en-US/Add-ons/WebExtensions/manifest.json/content_scripts">content_scripts</a></code>. এটা ফায়ারফক্সকে সেই সব ওয়েব পেজে স্ক্রীপট লোড করতে বলবে যাদের URL-এ একটি নির্দিষ্ট প্যাটার্ন আছে।এক্ষেত্রে আমরা ফায়ারফক্সকে "mozilla.org" বা এর সাবডোমেনের সমস্ত HTTP অথবা HTTPS পেজে "borderify.js" নামে স্ক্রীপট লোড করতে বলছি।</p> + +<ul> + <li><a href="/en-US/Add-ons/WebExtensions/Content_scripts">Learn more about content scripts.</a></li> + <li><a href="/en-US/Add-ons/WebExtensions/Match_patterns">Learn more about match patterns</a>.</li> +</ul> + +<h3 id="iconsborder-48.png">icons/border-48.png</h3> + +<p>The add-on should have an icon. This will be shown next to the add-on's listing in the Add-ons Manager. Our manifest.json promised that we would have an icon at "icons/border-48.png".</p> + +<p>Create the "icons" directory directly under the "borderify" directory. Save an icon there named "border-48.png". You could use <a href="https://github.com/mdn/webextensions-examples/blob/master/borderify/icons/border-48.png">the one from our example</a>, which is taken from the Google Material Design iconset, and is used under the terms of the <a href="http://creativecommons.org/licenses/by-sa/3.0/">Creative Commons Attribution-ShareAlike</a> license.</p> + +<p>If you choose to supply your own icon, It should be 48x48 pixels. You could also supply a 96x96 pixel icon, for high-resolution displays, and if you do this it will be specified as the <code>96</code> property of the <code>icons</code> object in manifest.json:</p> + +<pre class="brush: json line-numbers language-json"><code class="language-json"><span class="key token">"icons":</span> <span class="punctuation token">{</span> + <span class="key token">"48":</span> <span class="string token">"icons/border-48.png", + "96": "icons/border-96.png"</span> +<span class="punctuation token">}</span></code></pre> + +<p>Alternatively, you could supply an SVG file here, and it will be scaled correctly.</p> + +<ul> + <li><a href="/en-US/Add-ons/WebExtensions/manifest.json/icons">Learn more about specifying icons.</a></li> +</ul> + +<h3 id="borderify.js">borderify.js</h3> + +<p>Finally, create a file called "borderify.js" directly under the "borderify" directory. Give it this content:</p> + +<pre class="brush: js">document.body.style.border = "5px solid red";</pre> + +<p>This script will be loaded into the pages that match the pattern given in the <code>content_scripts</code> manifest.json key. The script has direct access to the document, just like scripts loaded by the page itself.</p> + +<ul> + <li><a href="/en-US/Add-ons/WebExtensions/Content_scripts">Learn more about content scripts.</a></li> +</ul> + +<h2 id="Testing_it_out">Testing it out</h2> + +<p>First, double check that you have the right files in the right places:</p> + +<pre>borderify/ + icons/ + border-48.png + borderify.js + manifest.json</pre> + +<p>Open "about:debugging" in Firefox, click "Load Temporary Add-on" and select any file in your add-on's directory:</p> + +<p>{{EmbedYouTube("cer9EUKegG4")}}</p> + +<p>The add-on will now be installed, and will stay until you restart Firefox.</p> + +<p>Now try visiting a page under "mozilla.org", and you should see the red border round the page:</p> + +<p>{{EmbedYouTube("rxBQl2Z9IBQ")}}</p> + +<p>Try experimenting a bit. Edit the content script to change the color of the border, or do something else to the page content. Save the content script, then reload the add-on's files by clicking the "Reload" button in about:debugging. You can see the changes right away:</p> + +<p>{{EmbedYouTube("NuajE60jfGY")}}</p> + +<ul> + <li><a href="/en-US/Add-ons/WebExtensions/Temporary_Installation_in_Firefox">Learn more about loading add-ons</a></li> +</ul> + +<h2 id="Packaging_and_publishing">Packaging and publishing</h2> + +<p>For other people to use your add-on, you need to package it and submit it to Mozilla for signing. To learn more about that, see <a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/Publishing_your_WebExtension">"Publishing your WebExtension"</a>.</p> + +<h2 id="What's_next">What's next?</h2> + +<p>Now you've got an idea of the process of developing a WebExtension for Firefox, try:</p> + +<ul> + <li><a href="/en-US/Add-ons/WebExtensions/Anatomy_of_a_WebExtension">reading more about the anatomy of WebExtensions</a></li> + <li><a href="/en-US/Add-ons/WebExtensions/Your_second_WebExtension">writing a more complex WebExtension</a></li> + <li><a href="/en-US/Add-ons/WebExtensions/API">reading about the JavaScript APIs available to WebExtensions.</a></li> +</ul> diff --git a/files/bn/mozilla/add-ons/থিম/index.html b/files/bn/mozilla/add-ons/থিম/index.html new file mode 100644 index 0000000000..30bd842c22 --- /dev/null +++ b/files/bn/mozilla/add-ons/থিম/index.html @@ -0,0 +1,60 @@ +--- +title: থিম +slug: Mozilla/Add-ons/থিম +tags: + - NeedsReview +translation_of: Mozilla/Add-ons/Themes +--- +<p>থিমস বিভিন্ন মোজিলা অ্যাপ্লিকেশনের জন্য স্কিনস। তারা আপনার ইউজার ইন্টারফেস এর লুক এবং অনুভুতিতে পরিবর্তন এবং আপনার কার্যকলাপকে এটি ব্যক্তিগতকৃত করতে অনুমতি দেয়। একটি থিম সহজভাবে UI এর রং পরিবর্তন করতে পারে অথবা এটি তার লুক এর প্রতিটি স্থানের পরিবর্তন করতে পারে। এখানে থিম ডকুমেন্টেশন তারিখ সীমার বাইরে, কিন্তু আমরা শীঘ্রই এটি আপডেট করার জন্য কিছু সাহায্য পেতে প্রত্যাশা করছি।</p> +<div class="column-container"> + <div class="column-half"> + <h2 class="Documentation" id="Documentation" name="Documentation">নথিপত্র</h2> + <dl> + <dt> + <a href="/en-US/docs/Building_a_Theme" title="Building a Theme">Building a Theme</a></dt> + <dd> + ফায়ারফক্স এর একটি সহজ থিম নির্মাণের জন্য একটি টিউটোরিয়াল।</dd> + <dt> + <a href="/en-US/docs/Themes/Common_Firefox_Theme_Issues_and_Solutions" title="Themes/Common_Firefox_Theme_Issues_and_Solutions">Common Theme Issues and Their Solutions</a></dt> + <dd> + যখন AMO সম্পাদকরা থিম এবং কিভাবে তাদের ঠিক করতে হবে এটা নিয়ে পর্যালোচনা করেন তখন প্রচলিত বিষয় দেখা যায়।</dd> + <dt> + <a href="/en-US/docs/Themes/Lightweight_themes" title="Themes/Lightweight themes">Lightweight themes</a></dt> + <dd> + ফায়ারফক্সের জন্য লাইটওয়েট থিম নির্মাণের প্রণালী।</dd> + <dt> + <a href="/en-US/docs/Creating_a_Skin_for_SeaMonkey_2.x" title="Creating_a_Skin_for_SeaMonkey_2.x">Creating a Skin for SeaMonkey 2</a></dt> + <dd> + সীমাংকি 2 জন্য নতুন থিম তৈরির জন্য একটি উপস্থাপনা।</dd> + <dt> + <a href="/en-US/docs/Making_Sure_Your_Theme_Works_with_RTL_Locales" title="Making_Sure_Your_Theme_Works_with_RTL_Locales">Making Sure Your Theme Works with RTL Locales</a></dt> + <dd> + আপনার থিম হিব্রু, আরবি, ফার্সি ও উর্দু লোকেইলের সাথে সঠিক হবে কাজ করবে এটা নিশ্চিত করুন।</dd> + <dt> + <a href="/en-US/docs/Theme_Packaging" title="Theme_Packaging">Theme Packaging</a></dt> + <dd> + ফায়ারফক্স এবং থান্ডারবার্ড জন্য থিম প্যাকেজ করুন।</dd> + <dt> + <a href="http://www.tudobom.de/articles/yatt/" title="http://www.tudobom.de/articles/yatt/">Yet Another Theme Tutorial</a></dt> + <dd> + মোজিলা থিম নির্মাণ এর জন্য আরেকটি টিউটোরিয়াল।</dd> + <dt> + <a href="/en-US/Mozilla/Add-ons/Themes/Obsolete">Obsolete docs</a></dt> + <dd> + এই ডক্স খুব পুরানো এবং আপডেট করা হবে না কখনও কিন্তু থিম ডকুমেন্টেশন আপডেট সবার জন্য দরকারী উৎস উপাদান তাই তাদের জন্য রাখা হয়েছে।</dd> + </dl> + </div> + <div class="column-half"> + <h2 id="Getting_help">Getting help</h2> + <ul> + <li><a href="http://forums.mozillazine.org/viewforum.php?f=18">MozillaZine Themes forum</a></li> + </ul> + <h2 class="Tools" id="Tools" name="Tools">Tools</h2> + <ul> + <li><a href="/en-US/docs/DOM_Inspector" title="DOM_Inspector">DOM Inspector</a></li> + <li><a class="link-https" href="https://addons.mozilla.org/en-US/firefox/addon/inspectorwidget/">InspectorWidget</a></li> + <li><a class="link-https" href="https://addons.mozilla.org/en-us/firefox/addon/force-rtl/">Force RTL</a>: Test for RTL compatibility</li> + </ul> + </div> +</div> +<p> </p> diff --git a/files/bn/mozilla/add-ons/থিম/obsolete/index.html b/files/bn/mozilla/add-ons/থিম/obsolete/index.html new file mode 100644 index 0000000000..43f20d34b5 --- /dev/null +++ b/files/bn/mozilla/add-ons/থিম/obsolete/index.html @@ -0,0 +1,9 @@ +--- +title: Obsolete +slug: Mozilla/Add-ons/থিম/Obsolete +tags: + - needsRevision +translation_of: Mozilla/Add-ons/Themes/Obsolete +--- +<p>এই পৃষ্ঠাটি কিছু থিম সংগ্রহ করে যেগুলো আমরা মনে করি কখনই হালনাগাদ করা হবে না , কিন্তু আমরা এই সময়ের জন্য এগুলো কে শক্তিশালী উৎস হিসেবে রেখে দিচ্ছি পরবর্তীতে ব্যবহার করার জন্য ।</p> +<p>{{ ListSubPages ("/en-US/Add-ons/Themes/Obsolete", 5) }}</p> |