aboutsummaryrefslogtreecommitdiff
path: root/files/de/mozilla
diff options
context:
space:
mode:
Diffstat (limited to 'files/de/mozilla')
-rw-r--r--files/de/mozilla/add-ons/add-on_guidelines/index.html124
-rw-r--r--files/de/mozilla/add-ons/amo/index.html9
-rw-r--r--files/de/mozilla/add-ons/amo/policy/index.html19
-rw-r--r--files/de/mozilla/add-ons/bootstrapped_extensions/index.html243
-rw-r--r--files/de/mozilla/add-ons/index.html198
-rw-r--r--files/de/mozilla/add-ons/performance_best_practices_in_extensions/index.html156
-rw-r--r--files/de/mozilla/add-ons/sdk/builder/index.html16
-rw-r--r--files/de/mozilla/add-ons/sdk/guides/content_scripts/index.html484
-rw-r--r--files/de/mozilla/add-ons/sdk/guides/index.html154
-rw-r--r--files/de/mozilla/add-ons/sdk/index.html83
-rw-r--r--files/de/mozilla/add-ons/sdk/tools/index.html14
-rw-r--r--files/de/mozilla/add-ons/sdk/tools/jpm/index.html497
-rw-r--r--files/de/mozilla/add-ons/sdk/tutorials/adding_a_button_to_the_toolbar/index.html100
-rw-r--r--files/de/mozilla/add-ons/sdk/tutorials/getting_started/index.html214
-rw-r--r--files/de/mozilla/add-ons/sdk/tutorials/index.html165
-rw-r--r--files/de/mozilla/add-ons/sdk/tutorials/installation/index.html134
-rw-r--r--files/de/mozilla/add-ons/sdk/tutorials/mobile_development/index.html476
-rw-r--r--files/de/mozilla/add-ons/security_best_practices_in_extensions/index.html80
-rw-r--r--files/de/mozilla/add-ons/themes/obsolete/index.html10
-rw-r--r--files/de/mozilla/add-ons/webextensions/anatomy_of_a_webextension/index.html133
-rw-r--r--files/de/mozilla/add-ons/webextensions/api/browseraction/index.html135
-rw-r--r--files/de/mozilla/add-ons/webextensions/api/browseraction/setpopup/index.html136
-rw-r--r--files/de/mozilla/add-ons/webextensions/api/commands/index.html83
-rw-r--r--files/de/mozilla/add-ons/webextensions/api/downloads/index.html123
-rw-r--r--files/de/mozilla/add-ons/webextensions/api/index.html51
-rw-r--r--files/de/mozilla/add-ons/webextensions/api/lesezeich/index.html121
-rw-r--r--files/de/mozilla/add-ons/webextensions/arbeiten_mit_taps_api/index.html608
-rw-r--r--files/de/mozilla/add-ons/webextensions/beispiele/index.html22
-rw-r--r--files/de/mozilla/add-ons/webextensions/browser_support_for_javascript_apis/index.html15
-rw-r--r--files/de/mozilla/add-ons/webextensions/deine_erste_weberweiterung/index.html155
-rw-r--r--files/de/mozilla/add-ons/webextensions/deine_zweite_erweiterung/index.html357
-rw-r--r--files/de/mozilla/add-ons/webextensions/extending_the_developer_tools/index.html143
-rw-r--r--files/de/mozilla/add-ons/webextensions/index.html86
-rw-r--r--files/de/mozilla/add-ons/webextensions/manifest.json/commands/index.html184
-rw-r--r--files/de/mozilla/add-ons/webextensions/manifest.json/devtools_page/index.html42
-rw-r--r--files/de/mozilla/add-ons/webextensions/manifest.json/index.html105
-rw-r--r--files/de/mozilla/add-ons/webextensions/manifest.json/theme/index.html1361
-rw-r--r--files/de/mozilla/add-ons/webextensions/match_patterns/index.html430
-rw-r--r--files/de/mozilla/add-ons/webextensions/what_are_webextensions/index.html24
-rw-r--r--files/de/mozilla/add-ons/überliegende_erweiterungen/index.html54
-rw-r--r--files/de/mozilla/chrome_registration/index.html48
-rw-r--r--files/de/mozilla/creating_a_spell_check_dictionary_add-on/index.html105
-rw-r--r--files/de/mozilla/css/index.html11
-rw-r--r--files/de/mozilla/developer_guide/firefox_erfolgreich_erstellt/index.html14
-rw-r--r--files/de/mozilla/developer_guide/index.html108
-rw-r--r--files/de/mozilla/developer_guide/quelltexte/index.html46
-rw-r--r--files/de/mozilla/firefox/developer_edition/index.html57
-rw-r--r--files/de/mozilla/firefox/developer_edition/zurückkehren/index.html25
-rw-r--r--files/de/mozilla/firefox/headless-mode/index.html237
-rw-r--r--files/de/mozilla/firefox/index.html60
-rw-r--r--files/de/mozilla/firefox/multiprocess_firefox/index.html80
-rw-r--r--files/de/mozilla/firefox/multiprocess_firefox/technical_overview/index.html164
-rw-r--r--files/de/mozilla/firefox/multiprocess_firefox/web_content_compatibility/index.html32
-rw-r--r--files/de/mozilla/firefox/nutzung_in_unternehmen/index.html142
-rw-r--r--files/de/mozilla/firefox/privacy/index.html9
-rw-r--r--files/de/mozilla/firefox/privacy/tracking_protection/index.html88
-rw-r--r--files/de/mozilla/firefox/releases/16/index.html104
-rw-r--r--files/de/mozilla/firefox/releases/27/index.html56
-rw-r--r--files/de/mozilla/firefox/releases/28/index.html116
-rw-r--r--files/de/mozilla/firefox/releases/3.6/index.html301
-rw-r--r--files/de/mozilla/firefox/releases/34/index.html107
-rw-r--r--files/de/mozilla/firefox/releases/47/index.html174
-rw-r--r--files/de/mozilla/firefox/releases/5/index.html169
-rw-r--r--files/de/mozilla/firefox/releases/56/index.html122
-rw-r--r--files/de/mozilla/firefox/releases/57/index.html99
-rw-r--r--files/de/mozilla/firefox/releases/58/index.html186
-rw-r--r--files/de/mozilla/firefox/releases/60/index.html146
-rw-r--r--files/de/mozilla/firefox/releases/68/index.html162
-rw-r--r--files/de/mozilla/firefox/releases/index.html12
-rw-r--r--files/de/mozilla/firefox/the_about_protocol/index.html190
-rw-r--r--files/de/mozilla/firefox/updating_add-ons_for_firefox_5/index.html69
-rw-r--r--files/de/mozilla/firefox_fuer_android/compatibility_testing/index.html103
-rw-r--r--files/de/mozilla/firefox_fuer_android/index.html64
-rw-r--r--files/de/mozilla/index.html12
-rw-r--r--files/de/mozilla/javascript_code_modules/deutsch/index.html197
-rw-r--r--files/de/mozilla/javascript_code_modules/index.html102
-rw-r--r--files/de/mozilla/localization/index.html25
-rw-r--r--files/de/mozilla/localization/kodierung_fuer_lokalisierungs-dateien/index.html137
-rw-r--r--files/de/mozilla/localization/localization_content_best_practices/index.html324
-rw-r--r--files/de/mozilla/localization/lokalisierung_mit_mercurial/index.html252
-rw-r--r--files/de/mozilla/localization/lokalisierung_von_pontoon/index.html135
-rw-r--r--files/de/mozilla/localization/lokalisierung_von_xliff-dateien/index.html59
-rw-r--r--files/de/mozilla/localization/programmübersetungen_mit_mercurial/index.html284
-rw-r--r--files/de/mozilla/mathml_project/index.html72
-rw-r--r--files/de/mozilla/mathml_project/mathml_torture_test/index.html1323
-rw-r--r--files/de/mozilla/mathml_project/start/index.html95
-rw-r--r--files/de/mozilla/mobile/index.html25
-rw-r--r--files/de/mozilla/mobile/viewport_meta_tag/index.html86
-rw-r--r--files/de/mozilla/performance/index.html145
-rw-r--r--files/de/mozilla/persona/bootstrapping_persona/index.html31
-rw-r--r--files/de/mozilla/persona/branding/index.html42
-rw-r--r--files/de/mozilla/persona/browser_compatibility/index.html84
-rw-r--r--files/de/mozilla/persona/index.html133
-rw-r--r--files/de/mozilla/persona/protocol_overview/index.html61
-rw-r--r--files/de/mozilla/persona/schnellstart/index.html201
-rw-r--r--files/de/mozilla/persona/warum_persona/index.html31
-rw-r--r--files/de/mozilla/preferences/eine_kurze_anleitung_zu_mozilla_einstellungen/index.html10
-rw-r--r--files/de/mozilla/preferences/index.html48
-rw-r--r--files/de/mozilla/projects/deutsch/index.html35
-rw-r--r--files/de/mozilla/projects/index.html14
-rw-r--r--files/de/mozilla/projects/nss/index.html186
-rw-r--r--files/de/mozilla/projects/nss/nss_3.33_release_notes/index.html78
-rw-r--r--files/de/mozilla/projects/nss/nss_sample_code/index.html25
-rw-r--r--files/de/mozilla/projects/nss/pkcs11/index.html20
-rw-r--r--files/de/mozilla/projects/nss/pkcs11/module_installation/index.html32
-rw-r--r--files/de/mozilla/projects/thunderbird/thunderbird_lokalisation/index.html98
-rw-r--r--files/de/mozilla/qa/index.html70
-rw-r--r--files/de/mozilla/tech/index.html14
-rw-r--r--files/de/mozilla/tech/xpcom/guide/empfang_von_benachrichtigungen_zum_startprozess/index.html56
-rw-r--r--files/de/mozilla/tech/xpcom/guide/index.html13
-rw-r--r--files/de/mozilla/tech/xpcom/reference/index.html27
-rw-r--r--files/de/mozilla/tech/xpcom/reference/interface/index.html19
-rw-r--r--files/de/mozilla/tech/xpcom/reference/interface/nsiloginmanager/index.html420
-rw-r--r--files/de/mozilla/tech/xpcom/reference/interface/nsiloginmanager/using_nsiloginmanager/index.html212
-rw-r--r--files/de/mozilla/tech/xpcom/reference/interface/nsixmlhttprequest/index.html89
-rw-r--r--files/de/mozilla/thunderbird/autokonfiguration/index.html146
-rw-r--r--files/de/mozilla/thunderbird/index.html75
-rw-r--r--files/de/mozilla/thunderbird/thunderbird_extensions/building_a_thunderbird_extension/index.html57
-rw-r--r--files/de/mozilla/thunderbird/thunderbird_extensions/building_a_thunderbird_extension_3_colon__install_manifest/index.html61
-rw-r--r--files/de/mozilla/thunderbird/thunderbird_extensions/building_a_thunderbird_extension_7_colon__installation/index.html58
-rw-r--r--files/de/mozilla/thunderbird/thunderbird_extensions/building_a_thunderbird_extension_8_colon__packaging/index.html24
-rw-r--r--files/de/mozilla/thunderbird/thunderbird_extensions/building_a_thunderbird_extension_9_colon__distributing/index.html24
-rw-r--r--files/de/mozilla/thunderbird/thunderbird_extensions/ein_thunderbird_addon_programmieren_5_colon__xul/index.html43
-rw-r--r--files/de/mozilla/thunderbird/thunderbird_extensions/eine_thunderbird-erweiterung_programmieren_2_colon__erweiterungs-dateisystem/index.html31
-rw-r--r--files/de/mozilla/thunderbird/thunderbird_extensions/eine_thunderbird-erweiterung_programmieren_4_colon__chrome_manifest/index.html44
-rw-r--r--files/de/mozilla/thunderbird/thunderbird_extensions/eine_thunderbird-erweiterung_programmieren_6_colon__javascript_hinzufuegen/index.html53
-rw-r--r--files/de/mozilla/thunderbird/thunderbird_extensions/index.html138
-rw-r--r--files/de/mozilla/verbinden/index.html94
-rw-r--r--files/de/mozilla/über_colon_omni.ja_(ehemals_omni.jar)/index.html62
129 files changed, 17182 insertions, 0 deletions
diff --git a/files/de/mozilla/add-ons/add-on_guidelines/index.html b/files/de/mozilla/add-ons/add-on_guidelines/index.html
new file mode 100644
index 0000000000..e781073547
--- /dev/null
+++ b/files/de/mozilla/add-ons/add-on_guidelines/index.html
@@ -0,0 +1,124 @@
+---
+title: Add-on guidelines
+slug: Mozilla/Add-ons/Add-on_guidelines
+tags:
+ - Zusatzgerä
+translation_of: 'https://extensionworkshop.com/documentation/publish/add-on-policies/'
+---
+<p>These add-on guidelines were created to foster an open and diverse add-on developer community while ensuring an excellent user experience. They apply to all add-ons and add-on updates regardless of where they are hosted, and also apply to customizations performed by installers that configure Firefox without using an add-on. Add-ons hosted on <a class="external text" href="https://addons.mozilla.org/" rel="nofollow">AMO</a> are subject to <a href="https://addons.mozilla.org/developers/docs/policies" title="https://addons.mozilla.org/developers/docs/policies">additional policies</a>.</p>
+
+<h2 id="Be_Transparent">Be Transparent</h2>
+
+<ul>
+ <li>Add-ons must either be installed using the add-on web install system, or be approved by the user using the <a class="external text" href="https://blog.mozilla.org/addons/2011/08/11/strengthening-user-control-of-add-ons/" rel="nofollow">install opt-in dialog</a>.
+
+ <ul>
+ <li>We want our users to know what they are installing so that they are not unpleasantly surprised by changes they did not expect. We also want them to know what to remove if they decide not to keep it.</li>
+ <li>Add-ons installed through application installers should <a class="external text" href="/en-US/docs/Adding_Extensions_using_the_Windows_Registry" rel="nofollow">use the Windows Registry</a> or equivalent global install methods so that Firefox displays the opt-in screen. The opt-in screen must not be tampered with in any way, including overlaying additional information or images on top of it.</li>
+ </ul>
+ </li>
+ <li>Add-ons must always be possible to uninstall or disable from the Add-ons Manager.
+ <ul>
+ <li>Add-ons installed globally using the Windows registry or global extension directories cannot be uninstalled (<a class="external text" href="https://bugzilla.mozilla.org/show_bug.cgi?id=640775" rel="nofollow">bug 640775</a>), but they can be disabled to the same effect.</li>
+ </ul>
+ </li>
+ <li>Add-ons must use a <a class="external text" href="/en-US/docs/Install_manifests#id" rel="nofollow">single unique ID</a> during their entire lifetime.
+ <ul>
+ <li>Using the same ID for multiple products, or multiple IDs for a single product, can lead to problems with automatic updates as well as blocklisting conflicts. Add-ons may change their IDs due to ownership changes, as they commonly use an email address-like format (<em>e.g.,</em> personasplus@mozilla.com).</li>
+ </ul>
+ </li>
+ <li>Add-ons must not use brand names, trademarks, or other terms in ways that deceive users. Using Mozilla trademarks must follow <a class="external text" href="http://www.mozilla.org/foundation/trademarks/policy.html" rel="nofollow">our trademark policy</a>.</li>
+ <li>Add-ons should clearly communicate their intended purpose and active features, including features introduced through updates.
+ <ul>
+ <li>While we understand and support add-on developers who choose to monetize their products, this should not come at the expense of users' browsing experience. If an add-on inserts advertisements, affiliate codes, sponsored search results, or the like, into web pages, the user should be made aware of this when the add-on is installed. Likewise, if some features require payment to use, or require payment to remain active after a trial period, users should be made aware of this.</li>
+ </ul>
+ </li>
+</ul>
+
+<h2 id="Be_Respectful_to_Users">Be Respectful to Users</h2>
+
+<ul>
+ <li>Add-ons must remove all introduced code, executables, and application configuration changes when they are uninstalled.
+ <ul>
+ <li>Uninstalling an add-on using the regular uninstall process should generally suffice. This guideline primarily applies to changes made to preferences such as the homepage, default search URL, network settings, and so forth. These preferences should be restored to their previous values when the add-on is uninstalled. Most add-ons can easily accomplish this by making such changes via a <a class="external text" href="/en-US/docs/Building_an_Extension#Defaults_Files" rel="nofollow">default preferences file</a>.</li>
+ </ul>
+ </li>
+ <li>Add-ons must respect the users' choices and not make unexpected changes, or limit users' ability to revert them.
+ <ul>
+ <li>For instance, users generally do not expect an add-on to change the Firefox homepage. Asking users to opt-in to such extra changes is recommended.</li>
+ <li>Making settings changes difficult or impossible to revert is prohibited. It's not allowed to block users or other add-ons or installers from changing any settings.</li>
+ </ul>
+ </li>
+ <li>Add-ons should make it clear how private user data is being used.
+ <ul>
+ <li>Add-ons which send user data over the Internet should generally provide a Privacy Policy, ideally concise and easily readable.</li>
+ </ul>
+ </li>
+ <li>Add-on developers should provide a mechanism for them to be contacted.
+ <ul>
+ <li>While developers are not required to provide a support channel for users, it is recommended. All add-on developers should have a contact form or public email address so that they can be contacted in case of emergencies, such as guideline violations that could lead to blocklisting.</li>
+ </ul>
+ </li>
+</ul>
+
+<h2 id="Be_Safe">Be Safe</h2>
+
+<ul>
+ <li>Add-ons must not cause harm to users' data, system, or online identities.</li>
+ <li>Add-ons must not transmit users' private data unsafely, or expose it to third parties unnecessarily.
+ <ul>
+ <li>Private data should always be sent over a secure connection. This includes browsing data such as visited URLs and bookmarks.</li>
+ <li>Making the browser easier to fingerprint by adding text to the User-Agent string or adding custom headers is also a privacy concern, and should be avoided.</li>
+ </ul>
+ </li>
+ <li>Add-ons must not create or expose application or system vulnerabilities.
+ <ul>
+ <li>Security bugs happen, but once discovered they need to be addressed immediately. A popular add-on with a security vulnerability is a valuable attack vector for hackers, and in such cases we will move quickly to blocklist the add-on if there is no prompt response from the developer.</li>
+ </ul>
+ </li>
+ <li>Add-ons must not tamper with the application or blocklist update systems.</li>
+ <li>Add-ons should not store any browsing data while in Private Browsing Mode.
+ <ul>
+ <li>It's worth stressing that PBM is about avoiding storing<em>local</em> data while browsing, not about sending data elsewhere. To learn more about PBM we recommend reading <a class="external text" href="http://ehsanakhgari.org/tag/privatebrowsing" rel="nofollow">Ehsan's blog posts</a> about it.</li>
+ </ul>
+ </li>
+</ul>
+
+<h2 id="Be_Stable">Be Stable</h2>
+
+<ul>
+ <li>Add-ons must not cause hangs or crashes.</li>
+ <li>Add-ons should not break or disable core application features.
+ <ul>
+ <li>This includes features like tabbed browsing, Private Browsing Mode, and the location bar. Add-ons that are specifically meant to do this are exempt.</li>
+ </ul>
+ </li>
+ <li>Add-ons should not cause memory leaks, or unnecessarily consume large amounts of memory.</li>
+ <li>Add-ons should not slow down the application or system significantly.</li>
+ <li>Add-ons should not consume network resources to an extent that affects regular application usage.
+ <ul>
+ <li>Downloading large amounts of data without user awareness can significantly disrupt regular browsing, and may result in unexpected charges for users who have network usage limitations (notably on mobile).</li>
+ </ul>
+ </li>
+</ul>
+
+<h2 id="Exceptions">Exceptions</h2>
+
+<ul>
+ <li>Add-ons can break some of these guidelines if that's their intended purpose and there isn't malicious intent (<em>e.g.,</em> a security exploit proof of concept).</li>
+ <li>Add-ons deployed by administrators within workplaces, schools, kiosks, and so forth, are exempt from most guidelines.</li>
+ <li>As add-ons can only run clean up code if they are uninstalled while Firefox is running and they are enabled, we do not require that they attempt to clean up after themselves when they are uninstalled under other circumstances. Application installers that configure Firefox without add-ons should revert any changes when uninstalled.</li>
+ <li>Add-ons may leave behind preferences changes in private preference branches which do not affect Firefox when the add-on is not active, so that any previous add-on configuration is not lost if the user decides to re-install the add-on in the future.</li>
+</ul>
+
+<p>Other exceptions may apply.</p>
+
+<h2 id="Enforcement">Enforcement</h2>
+
+<p>Add-ons that do not follow these guidelines may qualify for blocklisting, depending on the extent of the violations. Guidelines qualified with the word<em>must</em> are especially important, and violations thereof will most likely result in a blocklisting nomination.</p>
+
+<p>The Add-ons Team will do their best to contact the add-on's developers and provide a reasonable time frame for the problems to be corrected before a block is put in place. If an add-on is considered malicious or its developers have proven unreachable or unresponsive, or in case of repeat violations, blocklisting may be immediate.</p>
+
+<p>Guideline violations should be <a class="external text" href="https://bugzilla.mozilla.org/enter_bug.cgi?product=Tech%20Evangelism&amp;component=Add-ons" rel="nofollow">reported via Bugzilla</a>, under Tech Evangelism &gt; Add-ons. Questions can be posted in the <a class="external text" href="irc://irc.mozilla.org/addons" rel="nofollow">#addons IRC channel</a>.</p>
+
+<p>These guidelines may change in the future. All updates will be announced in the <a class="external text" href="https://blog.mozilla.org/addons/" rel="nofollow">Add-ons Blog</a>.</p>
diff --git a/files/de/mozilla/add-ons/amo/index.html b/files/de/mozilla/add-ons/amo/index.html
new file mode 100644
index 0000000000..5867afab50
--- /dev/null
+++ b/files/de/mozilla/add-ons/amo/index.html
@@ -0,0 +1,9 @@
+---
+title: AMO
+slug: Mozilla/Add-ons/AMO
+tags:
+ - NeedsTranslation
+ - TopicStub
+translation_of: Mozilla/Add-ons/AMO
+---
+<p>Seiten, die <a href="https://addons.mozilla.org/en-US/firefox/">addons.mozilla.org</a> dokumentieren:</p>
diff --git a/files/de/mozilla/add-ons/amo/policy/index.html b/files/de/mozilla/add-ons/amo/policy/index.html
new file mode 100644
index 0000000000..45bdc8ac09
--- /dev/null
+++ b/files/de/mozilla/add-ons/amo/policy/index.html
@@ -0,0 +1,19 @@
+---
+title: AMO Policies
+slug: Mozilla/Add-ons/AMO/Policy
+translation_of: Mozilla/Add-ons/AMO/Policy
+---
+<p>{{AddonSidebar}}</p>
+
+<p><span id="result_box" lang="de"><span>Mozilla ist bestrebt, unseren Nutzern und Entwicklern eine großartige Add-On-Erfahrung zu bieten.</span> <span>Bitte lesen Sie die folgenden Richtlinien, bevor Sie Ihr Add-on abschicken.</span></span></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="/de/Add-ons#Contact_us">Contacting us</a></strong>
+
+ <p> <span id="result_box" lang="de"><span>Wie Sie uns bezüglich dieser Richtlinien oder Ihres Add-ons kontaktieren können.</span></span></p>
+
+</dl>
diff --git a/files/de/mozilla/add-ons/bootstrapped_extensions/index.html b/files/de/mozilla/add-ons/bootstrapped_extensions/index.html
new file mode 100644
index 0000000000..582b48c775
--- /dev/null
+++ b/files/de/mozilla/add-ons/bootstrapped_extensions/index.html
@@ -0,0 +1,243 @@
+---
+title: Bootstrapped extensions
+slug: Mozilla/Add-ons/Bootstrapped_extensions
+translation_of: Archive/Add-ons/Bootstrapped_extensions
+---
+<p>{{ gecko_minversion_header("2.0") }}</p>
+<div class="note">
+ <p><strong>Note:</strong> All extensions created using the <a class="link-https" href="https://addons.mozilla.org/en-US/developers/docs/sdk/latest/">Add-on SDK</a> are bootstrapped! All the bootstrapping code is generated for you, so you don't really need to think about it. Not using the Add-on SDK? Read on...</p>
+</div>
+<p>Traditional extensions include <strong>overlays</strong>, wherein the application can load up XUL from the extension's package and automatically apply it atop its own UI. While this makes creating extensions that add to the application's user interface relatively easy, it means that updating, installing, or disabling an extension requires an application restart.</p>
+<p>Gecko 2.0 {{ geckoRelease("2.0") }} introduces <strong>bootstrapped extensions</strong>. These are special extensions that, instead of using overlays to apply their user interface to the application, programmatically insert themselves into the application. This is done using a special script file that's included in the extension that contains functions the browser calls to command the extension to install, uninstall, start up, and shut down.</p>
+<p>All the application does is call into this script file; the extension is responsible for adding and removing its user interface and handling any other setup and shutdown tasks it requires.</p>
+<p>This article discusses how bootstrapped extensions work. See this tutorial on <a href="/en-US/Add-ons/How_to_convert_an_overlay_extension_to_restartless">converting from an overlay extension to restartless</a> for a practical step by step guide to migrating.</p>
+<h2 id="The_startup_and_shutdown_process">The startup and shutdown process</h2>
+<p>A key feature of bootstrapped extensions is that they must be able to be started up and shut down on demand by the application. When the extension's <code>startup()</code> function is called, it must manually inject its user interface and other behavior into the application. Similarly, when its <code>shutdown()</code> function is called, it must remove anything it's added to the application, as well as all references to any of its objects.</p>
+<p>There are several scenarios in which the <code>startup()</code> function may be called; for example:</p>
+<ul>
+ <li>When the extension is first installed, assuming that it's both compatible with the application and is enabled.</li>
+ <li>When the extension becomes enabled using the add-ons manager window.</li>
+ <li>When the application is started up, if the extension is enabled and compatible with the application.</li>
+</ul>
+<p>Some examples of when the <code>shutdown()</code> function may be called:</p>
+<ul>
+ <li>When the extension is uninstalled, if it's currently enabled.</li>
+ <li>When the extension becomes disabled.</li>
+ <li>When the user quits the application, if the extension is enabled.</li>
+</ul>
+<h2 id="Notes_on_modifying_the_application_user_interface">Notes on modifying the application user interface</h2>
+<h3 id="chrome.manifest_in_bootstrapped_add-ons">chrome.manifest in bootstrapped add-ons</h3>
+<p>You can use a <a href="/en-US/docs/Chrome_Registration"><code>chrome.manifest</code></a> file in bootstrapped add-ons to:</p>
+<ol>
+ <li>make your add-on's content available via a <code>chrome://</code> URL (using the <code>content</code>, <code>locale</code>, and <code>skin</code> instructions in the manifest);</li>
+ <li>replace existing <code>chrome://</code> URIs with your content (using the <code>override</code> instruction).</li>
+</ol>
+<p>Not all <code>chrome.manifest</code> instructions are supported in bootstrapped add-ons, for example you still cannot register <a href="/en-US/docs/XUL_Overlays">XUL Overlays</a> from a bootstrapped add-on. See the <a href="/en-US/docs/Chrome_Registration"><code>chrome.manifest</code></a> documentation for details.</p>
+<p>In Firefox 10 and later the <code>chrome.manifest</code> file located in the root of the add-on's XPI (i.e. a sibling of the <code>install.rdf</code>) is loaded automatically. In Firefox 8 and 9 you had to load/unload the manifest manually using {{ ifmethod("nsIComponentManager", "addBootstrappedManifestLocation") }} and {{ ifmethod("nsIComponentManager", "removeBootstrappedManifestLocation") }}. This feature was unavailable in Firefox versions before 8.</p>
+<h3 id="Adding_user_interface_manually">Adding user interface manually</h3>
+<p>If you decide to go ahead and try to develop a bootstrapped extension that modifies the application's user interface, here are a few suggestions to get you started.</p>
+<p>You need to look up the relevant application UI elements by their ID by calling {{ domxref("document.getElementById()") }}, then manipulate them to inject your UI. For example, you can get access to the menu bar in Firefox with <code>document.getElementById("main-menubar")</code>.</p>
+<p>Be sure that at shutdown time, you remove any user interface you've added.</p>
+<h2 id="Creating_a_bootstrapped_extension">Creating a bootstrapped extension</h2>
+<p>To mark an extension as bootstrappable, you need to add the following element to its <a href="/en-US/docs/Install_Manifests">install manifest</a>:</p>
+<pre><code>&lt;em:bootstrap&gt;true&lt;/em:bootstrap&gt;</code></pre>
+<p>Then you need to add a <a href="/en-US/docs/Extensions/bootstrap.js"><code><strong>bootstrap.js</strong></code> file</a> that contains the required functions; this should be alongside the <a href="/en-US/docs/Install_Manifests"><code>install.rdf</code> file</a> in the extension's package.</p>
+<h3 id="Backward_compatibility">Backward compatibility</h3>
+<p>Because older versions of Firefox don't know about the <code>bootstrap</code> property or <code>bootstrap.js</code> file, it's not overly difficult to create an XPI that will work on both as a bootstrappable extension and as a traditional extension. Create your extension as a bootstrappable extension, then add the traditional overlays as well. Newer versions of Firefox will use the <code>bootstrap.js</code> script, ignoring the components and overlays, while older versions will use the overlays.</p>
+<h2 id="Bootstrap_entry_points">Bootstrap entry points</h2>
+<p>The <code>bootstrap.js</code> script should contain several specific functions, which are called by the browser to manage the extension. The script gets executed in a privileged sandbox, which is cached until the extension is shut down.</p>
+<h3 id="startup">startup</h3>
+<p>Called when the extension needs to start itself up. This happens at application launch time or when the extension is enabled after being disabled (or after it has been shut down in order to install an update. As such, this can be called many times during the lifetime of the application.</p>
+<p>This is when your add-on should inject its UI, start up any tasks it may need running, and so forth.</p>
+<pre>void startup(
+  data,
+  reason
+);
+</pre>
+<h6 id="Parameters">Parameters</h6>
+<dl>
+ <dt>
+ <code>data</code></dt>
+ <dd>
+ A <a href="#Bootstrap_data">bootstrap data structure</a>.</dd>
+ <dt>
+ <code>reason</code></dt>
+ <dd>
+ One of the <a href="#Reason_constants">reason constants</a>, indicating why the extension is being started up. This will be one of <code>APP_STARTUP</code>, <code>ADDON_ENABLE</code>, <code>ADDON_INSTALL</code>, <code>ADDON_UPGRADE</code>, or <code>ADDON_DOWNGRADE</code>.</dd>
+</dl>
+<h3 id="shutdown">shutdown</h3>
+<p>Called when the extension needs to shut itself down, such as when the application is quitting or when the extension is about to be upgraded or disabled. Any user interface that has been injected must be removed, tasks shut down, and objects disposed of.</p>
+<pre>void shutdown(
+  data,
+  reason
+);
+</pre>
+<h6 id="Parameters_2">Parameters</h6>
+<dl>
+ <dt>
+ <code>data</code></dt>
+ <dd>
+ A <a href="#Bootstrap_data">bootstrap data structure</a>.</dd>
+ <dt>
+ <code>reason</code></dt>
+ <dd>
+ One of the <a href="#Reason_constants">reason constants</a>, indicating why the extension is being shut down. This will be one of <code>APP_SHUTDOWN</code>, <code>ADDON_DISABLE</code>, <code>ADDON_UNINSTALL</code>, <code>ADDON_UPGRADE</code>, or <code>ADDON_DOWNGRADE</code>.</dd>
+</dl>
+<h3 id="install">install</h3>
+<p>Your bootstrap script must include an <code>install()</code> function, which the application calls before the first call to <code>startup()</code> after the extension is installed, upgraded, or downgraded.</p>
+<div class="note">
+ <strong>Note:</strong> This method is never called if the extension has never been started; for example, if an extension is installed but isn't compatible with the current version of the application, <code>install()</code> never gets called if it is uninstalled before becoming compatible. However, if the extension gets upgraded to a version that's compatible with the application, its <code>install()</code> function will be called at that time, before the first <code>startup()</code> call.</div>
+<pre>void install(
+  data,
+  reason
+);
+</pre>
+<h6 id="Parameters_3">Parameters</h6>
+<dl>
+ <dt>
+ <code>data</code></dt>
+ <dd>
+ A <a href="#Bootstrap_data">bootstrap data structure</a>.</dd>
+ <dt>
+ <code>reason</code></dt>
+ <dd>
+ One of the <a href="#Reason_constants">reason constants</a>, indicating why the extension is being installed. This will be one of <code>ADDON_INSTALL</code>, <code>ADDON_UPGRADE</code>, or <code>ADDON_DOWNGRADE</code>.</dd>
+</dl>
+<h3 id="uninstall">uninstall</h3>
+<p>This function is called after the last call to <code>shutdown()</code> before a particular version of an extension is uninstalled. This will not be called if <code>install()</code> was never called.</p>
+<div class="note">
+ <strong>Note:</strong> It's important to keep in mind that <code>uninstall()</code> can be called even on extensions that are currently disabled, or are not compatible with the current application. Because of this, it's crucial that the function be implemented to gracefully handle APIs that may not be present in the application. This function will also not be called if a third-party application removes the extension while Firefox isn't running. Simply having code <code>function install() {} </code>IS NOT ENOUGH, if you have code in <code>uninstall </code>it will not run, you MUST run some code in the <code>install </code>function, at the least you must set arguments on the <code>install </code>function so like: <code>function install(aData, aReason) {}</code> then uninstall WILL WORK.</div>
+<div class="note">
+ <strong>Note:</strong> If you open addon manager and then click "Remove" on addon, it will not call uninstall function right away. Because it was soft uninstalled, as the "Undo" button is there. If you close addon manager or something to make that "Undo" button to go away then the hard uninstall takes place.</div>
+<div class="note">
+ <strong>Note:</strong> The uninstall function fires on downgrade and upgrade as well so you should make sure it is an uninstall by doing this:<br>
+ <code>function uninstall(aData, aReason) {</code><br>
+ <code>     if (aReason == ADDON_UNINSTALL) {</code><br>
+ <code>          console.log('really uninstalling');</code><br>
+ <code>     } else {</code><br>
+ <code>          console.log('not a permanent uninstall, likely an upgrade or downgrade');</code><br>
+ <code>     }</code><br>
+ <code>}</code></div>
+<pre>void uninstall(
+  data,
+  reason
+);
+</pre>
+<h6 id="Parameters_4">Parameters</h6>
+<dl>
+ <dt>
+ <code>data</code></dt>
+ <dd>
+ A <a href="#Bootstrap_data">bootstrap data structure</a>.</dd>
+ <dt>
+ <code>reason</code></dt>
+ <dd>
+ One of the <a href="#Reason_constants">reason constants</a>, indicating why the extension is being uninstalled. This will be one of <code>ADDON_UNINSTALL</code>, <code>ADDON_UPGRADE</code>, or <code>ADDON_DOWNGRADE</code>.</dd>
+</dl>
+<h2 id="Reason_constants">Reason constants</h2>
+<p>The bootstrap functions accept a <code>reason</code> parameter, which explains to the extension why it's being called. The reason constants are:</p>
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <td class="header">Constant</td>
+ <td class="header">Value</td>
+ <td class="header">Description</td>
+ </tr>
+ <tr>
+ <td><code>APP_STARTUP</code></td>
+ <td>1</td>
+ <td>The application is starting up.</td>
+ </tr>
+ <tr>
+ <td><code>APP_SHUTDOWN</code></td>
+ <td>2</td>
+ <td>The application is shutting down.</td>
+ </tr>
+ <tr>
+ <td><code>ADDON_ENABLE</code></td>
+ <td>3</td>
+ <td>The add-on is being enabled.</td>
+ </tr>
+ <tr>
+ <td><code>ADDON_DISABLE</code></td>
+ <td>4</td>
+ <td>The add-on is being disabled. (Also <a class="link-https" href="https://bugzilla.mozilla.org/show_bug.cgi?id=620541">sent during uninstallation</a>)</td>
+ </tr>
+ <tr>
+ <td><code>ADDON_INSTALL</code></td>
+ <td>5</td>
+ <td>The add-on is being installed.</td>
+ </tr>
+ <tr>
+ <td><code>ADDON_UNINSTALL</code></td>
+ <td>6</td>
+ <td>The add-on is being uninstalled.</td>
+ </tr>
+ <tr>
+ <td><code>ADDON_UPGRADE</code></td>
+ <td>7</td>
+ <td>The add-on is being upgraded.</td>
+ </tr>
+ <tr>
+ <td><code>ADDON_DOWNGRADE</code></td>
+ <td>8</td>
+ <td>The add-on is being downgraded.</td>
+ </tr>
+ </tbody>
+</table>
+<h2 id="Bootstrap_data">Bootstrap data</h2>
+<p>Each of the entry points is passed a simple data structure containing some useful information about the add-on being bootstrapped. More information about the add-on can be obtained by calling <code><a href="/en-US/docs/Addons/Add-on_Manager/AddonManager#getAddonByID()">AddonManager.getAddonByID()</a></code>. The data is a simple JavaScript object with the following properties:</p>
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <td class="header">Property</td>
+ <td class="header">Type</td>
+ <td class="header">Description</td>
+ </tr>
+ <tr>
+ <td><code>id</code></td>
+ <td><code>string</code></td>
+ <td>The ID of the add-on being bootstrapped.</td>
+ </tr>
+ <tr>
+ <td><code>version</code></td>
+ <td><code>string</code></td>
+ <td>The version of the add-on being bootstrapped.</td>
+ </tr>
+ <tr>
+ <td><code>installPath</code></td>
+ <td><code>nsIFile</code></td>
+ <td>The installation location of the add-on being bootstrapped. This may be a directory or an XPI file depending on whether the add-on is installed unpacked or not.</td>
+ </tr>
+ <tr>
+ <td><code>resourceURI</code></td>
+ <td><code>nsIURI</code></td>
+ <td>A URI pointing at the root of the add-ons files, this may be a <code>jar:</code> or <code>file:</code> URI depending on whether the add-on is installed unpacked or not. {{ gecko_minversion_inline("7.0") }}</td>
+ </tr>
+ <tr>
+ <td><code>oldVersion</code></td>
+ <td><code>string</code></td>
+ <td>The previously installed version, if the reason is <code>ADDON_UPGRADE</code> or <code>ADDON_DOWNGRADE</code>, and the method is <code>install</code> or <code>startup</code>. {{ gecko_minversion_inline("22.0") }}</td>
+ </tr>
+ <tr>
+ <td><code>newVersion</code></td>
+ <td><code>string</code></td>
+ <td>The version to be installed, if the reason is <code>ADDON_UPGRADE</code> or <code>ADDON_DOWNGRADE</code>, and the method is <code>shutdown</code> or <code>uninstall</code>. {{ gecko_minversion_inline("22.0") }}</td>
+ </tr>
+ </tbody>
+</table>
+<div class="note">
+ <p><strong>Note:</strong> An add-on may be upgraded/downgraded at application startup, in this case the <code>startup</code> method reason is <code>APP_STARTUP</code>, and the <code>oldVersion</code> property is not set. Also be aware that in some circumstances an add-on upgrade/downgrade may occur without the <code>uninstall</code> method being called.</p>
+</div>
+<h2 id="Add-on_debugger">Add-on debugger</h2>
+<p>From Firefox 31 onwards, you can use the <a href="/en-US/Add-ons/Add-on_Debugger">Add-on Debugger</a> to debug bootstrapped add-ons.</p>
+<h2 id="Further_reading">Further reading</h2>
+<ul>
+ <li>Dave Garrett provides a step-by-step guide to <a class="external" href="https://flagfox.wordpress.com/2014/01/19/writing-restartless-addons/">convert an old overlay based extension into a restartless addon</a>. Some code samples provided.</li>
+ <li>Dave Townsend provides a basic code base to <a class="external" href="http://www.oxymoronical.com/blog/2011/01/Playing-with-windows-in-restartless-bootstrapped-extensions">load UI for each opened window</a> in a bootstrapped extension.</li>
+ <li>Wladimir Palant explains <a class="external" href="http://adblockplus.org/blog/how-many-hacks-does-it-take-to-make-your-extension-install-without-a-restart">problems and bugs found when converting an existing extension</a>, including some solutions and workarounds. (largely obsolete)</li>
+ <li>Mark Finkle provides some simple example code for <a class="external" href="http://starkravingfinkle.org/blog/2011/01/bootstrap-jones-adventures-in-restartless-add-ons/">restartless add-ons in mobile Firefox</a>, <a class="external" href="http://starkravingfinkle.org/blog/2011/01/restartless-add-ons-more-resources/">adding resources (like the options window)</a> to bootstrapped extensions and <a class="external" href="http://starkravingfinkle.org/blog/2011/01/restartless-add-ons-%e2%80%93-default-preferences/">using default preferences</a> without a <code>default/preferences/prefs.js</code> file.</li>
+ <li>Kris Maglione writes about <a class="external" href="http://maglione-k.users.sourceforge.net/bootstrapped.xhtml">the requirements for the cleanup procedures</a> in bootstrapped extensions.</li>
+ <li>Edward Lee shows off some <a class="external" href="http://ed.agadak.net/2011/01/restartless-add-on-example-code">helpful coding patterns and examples</a> you can use in your bootstrapped add-on.</li>
+ <li>Documentation for <a href="/en-US/docs/Extensions/Inline_Options">Inline Options</a> in Firefox 7 and later.</li>
+</ul>
diff --git a/files/de/mozilla/add-ons/index.html b/files/de/mozilla/add-ons/index.html
new file mode 100644
index 0000000000..298aba8754
--- /dev/null
+++ b/files/de/mozilla/add-ons/index.html
@@ -0,0 +1,198 @@
+---
+title: Add-ons
+slug: Mozilla/Add-ons
+tags:
+ - Add-ons
+ - Erweiterungen
+ - Mozilla
+translation_of: Mozilla/Add-ons
+---
+<div>{{AddonSidebar}}</div>
+
+<div class="summary"><u><em><strong>Ändern und Erweitern von Mozilla-Anwendungen</strong></em></u></div>
+
+<p><span class="seoSummary">Add-ons fügen neue Funktionalitäten zu <a href="/de/docs/Mozilla/Gecko">Gecko</a>-basierten Anwendungen wie zum Beispiel Firefox, SeaMonkey und Thunderbird hinzu.</span><strong> </strong>Es gibt zwei Arten von Add-ons: <a href="#Extensions">Erweiterungen</a> fügen neue Funktionen zur Anwendung hinzu, während <a href="#Themes">Themes</a> nur die Oberfläche verändern.</p>
+
+<p><span id="ouHighlight__0_2TO0_2">Für</span><span id="noHighlight_0.46174817388551737"> </span><span id="ouHighlight__9_18TO4_16">Erweiterungen</span><span id="noHighlight_0.9728453500078768"> </span><span id="ouHighlight__20_22TO18_20">und</span><span id="noHighlight_0.8772702394846859"> </span><span id="ouHighlight__24_29TO22_27">Themes</span><span id="noHighlight_0.10864923417065742"> </span><span id="ouHighlight__40_47TO29_36">betreibt</span><span id="noHighlight_0.2896404695195993"> </span><span id="ouHighlight__32_38TO38_44">Mozilla</span><span id="noHighlight_0.616403534771801"> </span><span id="ouHighlight__49_49TO46_48">ein</span><span id="noHighlight_0.3610688851925862"> </span><span id="ouHighlight__51_60TO50_59">Repository</span><span id="noHighlight_0.4564345131244706"> </span><span id="ouHighlight__62_63TO61_63">auf</span><span id="noHighlight_0.8092074683100744"> </span><a href="https://addons.mozilla.org/">addons.mozilla.org</a><span id="noHighlight_0.2282951451891393">,</span><span id="noHighlight_0.6708139759356772"> </span><span id="ouHighlight__85_88TO85_88">auch</span><span id="noHighlight_0.05199455050576829"> </span><span id="ouHighlight__90_94TO90_96">bekannt</span><span id="noHighlight_0.5422853980015302"> </span><span id="ouHighlight__96_97TO98_100">als</span><span id="noHighlight_0.7749799119731183"> </span><span id="ouHighlight__99_101TO102_104">AMO</span><span id="noHighlight_0.6685905641724511">.</span><span id="noHighlight_0.631834269557855"> </span><span id="ouHighlight__104_107TO107_110">Wenn</span><span id="noHighlight_0.7392724408625175"> </span><span id="ouHighlight__109_111TO112_114">Sie</span><span id="noHighlight_0.21350134406125387"> </span><a href="/de/Add-ons/Submitting_an_add-on_to_AMO"><span id="ouHighlight__120_126TO116_122">Add-ons</span><span id="noHighlight_0.2923239221030458"> bei</span><span id="noHighlight_0.8881758058990628"> </span><span id="ouHighlight__131_133TO128_130">AMO</span><span id="noHighlight_0.025624897842256078"> einreichen</span></a><span id="noHighlight_0.8413771821831256"> </span><span id="ouHighlight__140_142TO143_148">werden</span><span id="noHighlight_0.5558507955998613"> diese </span><span id="ouHighlight__144_151TO150_158">überprüft</span><span id="noHighlight_0.9072753976621971"> </span><span id="ouHighlight__154_156TO160_162">und erst</span><span id="noHighlight_0.6736322856600808"> </span><span id="ouHighlight__158_162TO164_167">nach</span><span id="noHighlight_0.25558448245838705"> </span><span id="ouHighlight__164_170TO169_179">bestandener</span><span id="noHighlight_0.8168167267155648"> </span><span id="ouHighlight__172_177TO181_187">Prüfung</span><span id="noHighlight_0.7442566133261889"> veröffentlicht</span><span id="noHighlight_0.8740845934787674">. Allerdings ist es nicht zwingend erforderlich, dass Add-ons nur über AMO veröffentlicht werden, aber durch die Überprüfung gewinnen Anwender an Vertrauen und im Gegenzug können Sie von AMO als einer zentralen Plattform, auf der viele hilfreiche Add-ons zu finden sind, nur profitieren.</span></p>
+
+<div class="Wrap" id="OutputText" style="direction: ltr; text-align: left;">
+<div><span class="highlight" id="ouHighlight__0_6TO0_6">Add-ons</span><span id="noHighlight_0.8073168651876949"> </span><span id="ouHighlight__8_10TO8_13">können</span><span id="noHighlight_0.5161412189661699"> </span><span id="ouHighlight__12_18TO15_20">großen</span><span id="noHighlight_0.7385260295513605"> </span><span id="ouHighlight__20_25TO22_33">Einfluss auf</span><span id="noHighlight_0.6855261499753901"> </span><span id="ouHighlight__27_29TO35_37">das</span><span id="noHighlight_0.16685755020083615"> </span><span id="ouHighlight__31_39TO39_47">Verhalten</span><span id="noHighlight_0.8541112890313974"> </span><span id="ouHighlight__41_42TO49_51">der</span><span id="noHighlight_0.4702563262360646"> </span><span id="ouHighlight__48_58TO53_61">Anwendung haben</span><span id="ouHighlight__60_63TO62_66">, die</span><span id="noHighlight_0.4344044719962509"> </span><span id="ouHighlight__71_74TO68_70">sie</span><span id="noHighlight_0.6103633117751325"> </span><span id="ouHighlight__65_69TO72_77">hosten</span><span id="noHighlight_0.5064620255593768">.</span><span id="noHighlight_0.8461832550228662"> </span><span id="ouHighlight__77_81TO80_88">Wir haben</span><span id="noHighlight_0.5294361961437433"> </span><span id="ouHighlight__93_93TO90_93">eine</span><span id="noHighlight_0.6544640902426183"> </span><span id="ouHighlight__95_97TO95_99">Reihe</span><span id="noHighlight_0.03377692679910005"> </span><span id="ouHighlight__99_100TO101_103">von</span><span id="noHighlight_0.9377326475684262"> </span><a href="/de/docs/Mozilla/Add-ons/Add-on_guidelines"><span id="ouHighlight__102_111TO105_115">Richtlinien</span></a><span id="ouHighlight__83_91TO194_203"> entwickelt</span><span id="noHighlight_0.5106467926791978">, </span><span id="ouHighlight__113_114TO118_119">um</span><span id="noHighlight_0.14890796820080987"> </span><span id="ouHighlight__116_126TO121_135">sicherzustellen</span><span id="ouHighlight__128_131TO136_141">, dass</span><span id="noHighlight_0.07500516160225124"> S</span><span id="ouHighlight__133_136TO143_145">ie</span><span id="noHighlight_0.08855436033349207"> </span><span id="ouHighlight__146_146TO147_150">eine</span><span id="noHighlight_0.3070385633480808"> </span><span id="ouHighlight__148_151TO152_155">gute</span><span id="noHighlight_0.3381150327176671"> </span><span id="ouHighlight__153_162TO157_165">Erfahrung</span><span id="noHighlight_0.07569587577790593"> </span><span id="ouHighlight__164_165TO167_169">für</span><span id="noHighlight_0.8464872954812956"> </span><span id="ouHighlight__167_171TO171_178">Benutzer</span><span id="noHighlight_0.6111953604296508"> </span><span id="ouHighlight__138_144TO180_192">bereitstellen</span><span id="noHighlight_0.754293482871765">.</span><span id="noHighlight_0.8279596833879079"> </span><span id="ouHighlight__174_178TO206_210">Diese</span><span id="noHighlight_0.1932574202336862"> </span><span id="ouHighlight__180_189TO212_222">Richtlinien</span><span id="noHighlight_0.2279840053412009"> </span><span id="ouHighlight__191_195TO224_229">gelten</span><span id="noHighlight_0.7699032448605116"> </span><span id="ouHighlight__197_199TO231_233">für</span><span id="noHighlight_0.5009387101195566"> </span><span id="ouHighlight__201_203TO235_238">alle</span><span id="noHighlight_0.1494141467754172"> </span><span id="ouHighlight__205_209TO240_244">Arten</span><span id="noHighlight_0.14879182542509328"> </span><span id="ouHighlight__211_212TO246_248">von</span><span id="noHighlight_0.5012259301526238"> </span><span id="ouHighlight__214_220TO250_253">Add-</span><span id="noHighlight_0.23289593709132983">ons</span><span id="noHighlight_0.4169765534770873">,</span><span id="noHighlight_0.48070762106654374"> </span><span id="ouHighlight__223_229TO259_260">ob</span><span id="noHighlight_0.3238985427414621"> </span><span id="ouHighlight__231_234TO262_264">sie</span><span id="noHighlight_0.5918557393357521"> </span><span id="ouHighlight__247_248TO266_268">auf</span><span id="noHighlight_0.7562549712671994"> </span><a href="https://addons.mozilla.org/"><span id="ouHighlight__250_267TO270_287">addons.mozilla.org</span></a><span id="noHighlight_0.5740639914818754"> </span><span id="ouHighlight__269_270TO289_292">oder</span><span id="noHighlight_0.28226842992825674"> </span><span id="ouHighlight__272_274TO294_298">nicht</span><span id="noHighlight_0.8114463871280692"> gehostet werden</span><span id="noHighlight_0.7988823650391782">.</span></div>
+</div>
+
+<hr>
+<h2 id="Erweiterungen"><a name="Extensions">Erweiterungen</a></h2>
+
+<p><span id="ouHighlight__0_9TO0_12">Erweiterungen</span><span id="noHighlight_0.5729434698073165"> fügen </span><span id="ouHighlight__15_17TO73_76">neue</span><span id="noHighlight_0.5426566923941274"> </span><span id="ouHighlight__19_31TO78_91">Funktionalität</span><span id="noHighlight_0.5729434698073165"> bei</span><span id="noHighlight_0.17223497468812032"> </span><span id="ouHighlight__36_42TO25_31">Mozilla</span><span id="noHighlight_0.30201855489047735">-</span><span id="ouHighlight__44_55TO33_43">Anwendungen</span><span id="noHighlight_0.9323699890664823"> </span><span id="ouHighlight__57_63TO45_47">wie</span><span id="noHighlight_0.6288054173067209"> </span><span id="ouHighlight__65_71TO49_55">Firefox</span><span id="noHighlight_0.3720649555765366"> </span><span id="ouHighlight__73_75TO57_59">und</span><span id="noHighlight_0.41093353307315184"> </span><span id="ouHighlight__77_87TO61_71">Thunderbird</span><span id="noHighlight_0.005072096932092651"> </span><span id="ouHighlight__33_34TO14_23">hinzu</span><span id="noHighlight_0.514778115570198">.</span><span id="noHighlight_0.8402892092302489"> Sie k</span><span id="ouHighlight__95_97TO94_99">önnen dem Browser</span><span id="noHighlight_0.6506630460504175"> </span>neue Funktionen <span id="ouHighlight__123_129TO105_111">hinzufügen</span><span id="noHighlight_0.4739361983240178">,</span><span id="noHighlight_0.9961192317983276"> </span><span id="ouHighlight__132_138TO114_118">z. B.</span><span id="noHighlight_0.8826244039728934"> </span><span id="ouHighlight__140_140TO120_123">eine</span><span id="noHighlight_0.5894468244715919"> </span><span id="ouHighlight__142_150TO125_130">andere</span><span id="noHighlight_0.21119886019042655"> </span><span id="ouHighlight__152_154TO132_142">Möglichkeit</span><span id="noHighlight_0.040012773147417136"> </span><span id="ouHighlight__156_157TO144_146">zum</span><span id="noHighlight_0.6037609008470418"> </span><span id="ouHighlight__159_164TO148_156">Verwalten</span><span id="noHighlight_0.7243803787966292"> von </span><span id="ouHighlight__166_169TO162_175">Registerkarten</span><span id="noHighlight_0.9132172497546358">,</span><span id="noHighlight_0.3979001439345283"> </span><span id="ouHighlight__103_105TO178_181">neue</span><span id="noHighlight_0.707735932331072"> </span><span id="ouHighlight__107_114TO183_192">Funktionen</span><span id="noHighlight_0.40561987701461166"> </span><span id="ouHighlight__116_117TO194_203">hinzufügen</span><span id="noHighlight_0.9616888386930491"> </span><span id="ouHighlight__172_174TO205_207">und</span><span id="noHighlight_0.6438472756046978"> </span><span id="ouHighlight__176_179TO209_211">sie</span><span id="noHighlight_0.5784811038902246"> </span><span id="ouHighlight__181_183TO213_218">können</span><span id="noHighlight_0.5937395654078539"> </span><span id="ouHighlight__192_194TO220_222">Web</span><span id="noHighlight_0.7099929023902743">-</span><span id="ouHighlight__196_202TO224_230">Inhalte</span><span id="noHighlight_0.9209985235882363"> </span><span id="ouHighlight__204_205TO232_234">zur</span><span id="noHighlight_0.09029320754299464"> </span><span id="ouHighlight__207_213TO236_247">Verbesserung</span><span id="noHighlight_0.20353211567771035"> </span><span id="ouHighlight__215_217TO249_251">der</span><span id="noHighlight_0.2439272349522139"> </span><span id="ouHighlight__219_227TO253_274">Benutzerfreundlichkeit</span><span id="noHighlight_0.9924717971226085"> </span><span id="ouHighlight__229_230TO276_279">oder</span><span id="noHighlight_0.43115927678722177"> die </span><span id="ouHighlight__232_239TO285_294">Sicherheit</span><span id="noHighlight_0.9524965819559671"> </span><span id="ouHighlight__241_242TO296_298">von</span><span id="noHighlight_0.7894184901812318"> </span><span id="ouHighlight__244_253TO300_309">bestimmten</span><span id="noHighlight_0.47692432029040743"> </span><span id="ouHighlight__255_262TO311_319">Webseiten</span><span id="noHighlight_0.07282619191471151"> </span><span id="ouHighlight__185_190TO321_326">ändern</span><span id="noHighlight_0.28402655314769354">.</span></p>
+
+<div class="Wrap" id="OutputText" style="direction: ltr; text-align: left;">
+<div><span class="highlight" id="ouHighlight__0_4TO0_1">Es</span><span id="noHighlight_0.5618336419358886"> </span><span id="ouHighlight__6_8TO3_6">gibt</span><span id="noHighlight_0.20951348350366739"> </span><span id="ouHighlight__10_14TO8_11">drei</span><span id="noHighlight_0.5210041330526933"> </span><span id="ouHighlight__16_24TO13_24">verschiedene</span><span id="noHighlight_0.15803069640292677"> Ansätze </span><span id="ouHighlight__58_67TO40_52">Erweiterungen</span><span id="noHighlight_0.7944043659249324"> </span><span id="ouHighlight__52_56TO54_62">zu erstellen</span><span id="noHighlight_0.7515176659448694"> können</span><span id="noHighlight_0.9583879950808301">:</span><span id="noHighlight_0.48850260791567"> </span><span id="ouHighlight__70_75TO72_77">Add-on</span><span id="noHighlight_0.5063497891968006"> </span><span id="ouHighlight__77_85TO79_90">SDK-basierte</span><span id="noHighlight_0.6910049815748374"> </span><span id="ouHighlight__87_96TO92_104">Erweiterungen</span><span id="noHighlight_0.8618006793204717">,</span><span id="noHighlight_0.42408608134295733"> </span><span id="ouHighlight__99_106TO107_113">manuell</span><span id="noHighlight_0.1487685728083037"> </span><span id="ouHighlight__108_119TO115_126">bootstrapped</span><span id="noHighlight_0.6457540411668959"> </span><span id="ouHighlight__121_131TO128_138">restartless</span><span id="noHighlight_0.20860427395815706"> </span><span id="ouHighlight__133_142TO140_152">Erweiterungen</span><span id="noHighlight_0.3909614429694541"> </span><span id="ouHighlight__145_147TO154_156">und</span><span id="noHighlight_0.5844507143177976"> </span><span id="ouHighlight__149_155TO158_164">Overlay</span><span id="noHighlight_0.6223730968805569">-</span><span id="ouHighlight__157_166TO166_178">Erweiterungen</span><span id="noHighlight_0.04213765936154057">.</span></div>
+
+<div></div>
+</div>
+
+<ul class="card-grid">
+ <li><span><a href="https://developer.mozilla.org/de/Add-ons/SDK">Add-on SDK Erweiterungen</a></span>
+
+ <div class="Wrap" id="OutputText" style="direction: ltr; text-align: left;">
+ <div></div>
+
+ <div>Erweiterungen, die auf high-level JavaScript APIs aufbauen und keinen Browserneustart bei der Installation erfordern.</div>
+ </div>
+ </li>
+ <li><span><a href="/en-US/Add-ons/Bootstrapped_extensions">Restartless Erweiterungen</a></span>
+ <div class="Wrap" id="OutputText" style="direction: ltr; text-align: left;">
+ <div></div>
+
+ <div>Erweiterungen, die keinen Browserneustart bei der Installation erfordern.</div>
+ </div>
+ </li>
+ <li><a href="/de/Add-ons/Overlay_Extensions"><span>Overlay Erweiterungen</span></a>
+ <div class="Wrap" id="OutputText" style="direction: ltr; text-align: left;">
+ <div></div>
+
+ <div>Overlay-Erweiterungen, die gewöhnlich <a href="/de/docs/Mozilla/Tech/XUL/Overlays">XUL-Overlays</a> verwenden, und einen Browserneustart bei der Installation erfordern</div>
+ </div>
+ </li>
+</ul>
+
+<div class="Wrap" id="OutputText" style="direction: ltr; text-align: left;">
+<div><span id="ouHighlight__0_1TO0_3">Wenn</span><span id="noHighlight_0.3337830105998172"> </span><span id="ouHighlight__3_5TO5_7">Sie</span><span id="noHighlight_0.7746803241322997"> </span><span id="ouHighlight__7_9TO9_14">können</span><span id="noHighlight_0.585451144512538">,</span><span id="noHighlight_0.4911257835218017"> </span><span id="ouHighlight__12_15TO17_22">ist es</span><span id="noHighlight_0.6065425206393317"> </span><span id="ouHighlight__17_25TO24_29">ratsam</span><span id="noHighlight_0.550658005662535">,</span><span id="noHighlight_0.24798880559775416"> </span><span id="ouHighlight__34_36TO32_34">das</span><span id="noHighlight_0.8340677088719144"> </span><span id="ouHighlight__38_43TO36_41">Add-on</span><span id="noHighlight_0.00014064138883218558">-</span><span id="ouHighlight__45_47TO43_45">SDK</span><span id="noHighlight_0.8375346034178479">  zu </span><span id="ouHighlight__30_32TO47_55">verwenden</span><span id="noHighlight_0.005823161182457626">, die <span id="ouHighlight__38_43TO36_41">Add-on</span><span id="noHighlight_0.00014064138883218558">-</span><span id="ouHighlight__45_47TO43_45">SDK </span></span><span id="ouHighlight__56_59TO58_66">verwendet</span><span id="noHighlight_0.14337984823954886"> </span><span id="ouHighlight__61_63TO68_70">die</span><span id="noHighlight_0.7781581584527945"> </span><span id="ouHighlight__65_75TO72_82">restartless</span><span id="noHighlight_0.4376804997463938"> </span><span id="ouHighlight__77_95TO84_106">Erweiterungsmechanismus</span><span id="noHighlight_0.3984695253305903"> die aber</span><span id="noHighlight_0.7931560723784686"> </span><span id="ouHighlight__112_118TO113_121">bestimmte</span><span id="noHighlight_0.2588679376188092"> </span><span id="ouHighlight__120_124TO123_130">Aufgaben</span><span id="noHighlight_0.8667723987939762"> </span><span id="ouHighlight__101_110TO132_142">vereinfacht</span><span id="noHighlight_0.6199566203398377"> </span><span id="ouHighlight__126_128TO144_146">und</span><span id="noHighlight_0.2381105889500461"> </span><span id="ouHighlight__146_151TO163_166">sich selbst </span><span id="ouHighlight__130_138TO148_156">bereinigt. </span><span id="ouHighlight__154_155TO169_172">Wenn</span><span id="noHighlight_0.8347930705003632"> </span><span id="ouHighlight__157_159TO174_176">das</span><span id="noHighlight_0.0387513500553347"> </span><span id="ouHighlight__161_166TO178_183">Add-on</span><span id="noHighlight_0.6450042984906047"> </span><span id="ouHighlight__168_170TO185_187">SDK</span><span id="noHighlight_0.7701572494323595"> nicht </span><span id="ouHighlight__178_187TO195_205">ausreichend</span><span id="noHighlight_0.6563860977922914"> </span><span id="ouHighlight__189_191TO207_209">für</span><span id="noHighlight_0.6976277595872102"> </span><span id="ouHighlight__193_196TO211_214">Ihre</span><span id="noHighlight_0.04591068407091248"> </span><span id="ouHighlight__198_202TO216_226">Bedürfnisse</span><span id="noHighlight_0.22159616810780236"> </span><span id="ouHighlight__172_176TO228_230">ist</span><span id="noHighlight_0.6674557675600933">,</span><span id="noHighlight_0.07989125941461361"> </span><span id="ouHighlight__205_213TO233_246">implementieren</span><span id="noHighlight_0.30761721803101016"> Sie </span><span id="ouHighlight__246_252TO252_262">stattdessen</span><span id="noHighlight_0.8909545170859443"> </span><span id="ouHighlight__215_215TO264_267">eine</span><span id="noHighlight_0.6468098346773389"> </span><span id="ouHighlight__217_222TO269_276">manuelle</span><span id="noHighlight_0.6341425702033984"> </span><span id="ouHighlight__224_234TO278_288">restartless</span><span id="noHighlight_0.6460871563716616">-</span><span id="ouHighlight__236_244TO290_300">Erweiterung</span><span id="noHighlight_0.5146973093507594">.</span></div>
+
+<div></div>
+</div>
+
+<div class="Wrap" id="OutputText" style="direction: ltr; text-align: left;">
+<div><span id="ouHighlight__57_60TO0_4">Lesen</span><span id="noHighlight_0.6551587170848595"> Sie </span><span id="ouHighlight__0_2TO10_12">für</span><span id="noHighlight_0.5235885588700181"> </span><span id="ouHighlight__4_7TO14_20">weitere</span><span id="noHighlight_0.3269583681457525"> </span><span id="ouHighlight__9_19TO22_34">Informationen</span><span id="noHighlight_0.540100826342384"> </span><span id="ouHighlight__21_22TO36_38">zur</span><span id="noHighlight_0.13894618541551684"> </span><span id="ouHighlight__24_31TO40_46">Auswahl</span><span id="noHighlight_0.25469384450538257"> "</span><span id="ouHighlight__33_37TO48_53">welche</span><span id="noHighlight_0.7575584097586778"> </span><span id="ouHighlight__39_47TO55_61">Technik</span><span id="noHighlight_0.5414143564779148"> </span><span id="ouHighlight__52_54TO63_71">verwenden</span><span id="noHighlight_0.8016183801484662">" </span><span id="ouHighlight__62_65TO73_78">diesen</span><span id="noHighlight_0.2896063301754803"> </span><a href="/de/Add-ons/Comparing_Extension_Toolchains"><span id="ouHighlight__67_76TO80_88">Vergleich</span></a><span id="noHighlight_0.9816731982769745">.</span></div>
+
+<div></div>
+</div>
+
+<h3 id="Debugging">Debugging</h3>
+
+<p>Die Entwicklung von Erweiterung wird erschwert, wenn man für den Debug über keine Möglichkeit verfügt zu sehen, in welcher Zeile der Fehler aufgetreten ist. Sie müssen die Entwickler Präferenzen aktivieren, damit die logs in der Browser Konsole gezeigt werden. Für Dektopnutzer: <a href="https://developer.mozilla.org/de/docs/Einrichten_einer_Entwicklungsumgebung_f%C3%BCr_Erweiterungen#Entwicklungseinstellungen">Einrichten einer Entwicklungsumgebung für Erweiterungen</a>.</p>
+
+<p>Für eine Desktop-Umgebung nutzen Sie: <a href="/de/docs/XUL/School_tutorial/Eine_Entwicklungsumgebung_einrichten_Environment">Eine Entwicklungsumgebung einrichten</a>, für Mobile Geräte (Android/iOS) nutzen Sie: <a href="/de/docs/Tools/Remote_Debugging/Debugging_Firefox_for_Android_with_WebIDE">Debugging Firefox for Android with WebIDE</a>. Letztere verwendet die "Browser Toolbox" innerhalb der Dektop WebIDE, um auf dem Mobilgerät auftretende Fehler zu erkennen, nutzen Sie für Firefox OS auch die WebIDE.</p>
+
+<div class="column-container">
+<div class="column-half">
+<h3 id="Empfohlene_Vorgehensweisen"><span id="ouHighlight__0_13TO0_7">Empfohlene Vorgehensweisen</span></h3>
+
+<div class="Wrap" id="OutputText" style="direction: ltr; text-align: left;">
+<div><span class="highlight" id="ouHighlight__0_8TO0_3">Egal</span><span id="noHighlight_0.9527565672013398">, </span><span id="ouHighlight__10_12TO6_8">wie</span><span id="noHighlight_0.9263453430701603"> </span><span id="ouHighlight__14_16TO10_12">Sie</span><span id="noHighlight_0.20698839178159"> </span><span id="ouHighlight__26_27TO14_17">eine</span><span id="noHighlight_0.6200662748583877"> </span><span id="ouHighlight__29_37TO19_29">Erweiterung</span><span id="noHighlight_0.6728120070352871"> </span><span id="ouHighlight__18_24TO34_43">entwickeln</span><span id="noHighlight_0.4299495607061933">.</span><span id="noHighlight_0.7741888108021036"> </span><span id="ouHighlight__40_48TO46_49">Gibt</span><span id="noHighlight_0.5415096933419522"> es </span><span id="ouHighlight__50_53TO54_59">einige</span><span id="noHighlight_0.0720089039768479"> </span><span id="ouHighlight__55_64TO61_71">Richtlinien</span><span id="noHighlight_0.803657196413949">, denen </span><span id="ouHighlight__66_68TO78_80">Sie</span><span id="noHighlight_0.5984322114595474"> </span><span id="ouHighlight__74_79TO82_87">folgen</span><span id="noHighlight_0.12869484077400462"> </span><span id="ouHighlight__70_72TO89_94">können</span><span id="noHighlight_0.8370743591981885">, </span><span id="ouHighlight__81_82TO97_98">um</span><span id="noHighlight_0.6622236277215582"> </span><span id="ouHighlight__84_94TO100_114">sicherzustellen</span><span id="noHighlight_0.8564379951141409">, dass </span><span id="ouHighlight__96_99TO122_125">Ihre</span><span id="noHighlight_0.4459602478330692"> </span><span id="ouHighlight__101_109TO127_137">Erweiterung</span><span id="noHighlight_0.8961693769838563"> </span><span id="ouHighlight__128_128TO146_150">einem</span><span id="noHighlight_0.9686635232190152"> </span><span id="ouHighlight__130_133TO152_159">Benutzer eine möglichst gute Nutzererfahrung</span><span id="noHighlight_0.6251852022548666"> bietet</span><span id="ouHighlight__149_156TO174_180">.</span></div>
+
+<div></div>
+</div>
+
+<dl>
+ <dt><a href="/de/Add-ons/Performance_best_practices_in_extensions">Leistung</a></dt>
+ <dd>
+ <div class="Wrap" id="OutputText" style="direction: ltr; text-align: left;">
+ <div><span id="ouHighlight__9_12TO0_2">Die</span><span id="noHighlight_0.5269484393147706"> </span><span id="ouHighlight__14_22TO4_14">Erweiterung</span><span id="noHighlight_0.9292851327044691"> </span><span id="ouHighlight__24_25TO16_18">ist</span><span id="noHighlight_0.7115102572562606"> </span><span id="ouHighlight__27_30TO20_26">schnell</span><span id="noHighlight_0.9124290392126198">,</span><span id="noHighlight_0.8579411377226112"> </span><span id="ouHighlight__33_42TO29_42">reaktionsfähig</span><span id="noHighlight_0.14649752077292222"> </span><span id="ouHighlight__44_46TO44_46">und</span><span id="noHighlight_0.8931592573259234"> </span><span id="ouHighlight__48_64TO48_66">Speicher-effizient.</span></div>
+ </div>
+ </dd>
+ <dt><a href="/de/Add-ons/Security_best_practices_in_extensions">Sicherheit</a></dt>
+ <dd>
+ <div class="Wrap" id="OutputText" style="direction: ltr; text-align: left;">
+ <div><span id="noHighlight_0.7809287776294521">Die Erweiterung setzt den Nutzer keinen schädlichen Websites aus.</span></div>
+ </div>
+ </dd>
+ <dt><a href="/de/Add-ons/Extension_etiquette">Etikette</a></dt>
+ <dd>
+ <div class="Wrap" id="OutputText" style="direction: ltr; text-align: left;">
+ <p><span id="ouHighlight__0_7TO0_13">Die Erweiterung arbeitet problemlos mit anderen Erweiterungen</span><span id="noHighlight_0.5275381715109507">.</span></p>
+ </div>
+ </dd>
+</dl>
+</div>
+
+<div class="column-half">
+<h3 id="Anwendungsspezifische"><span id="ouHighlight__0_19TO0_20">Anwendungsspezifische</span></h3>
+
+<div class="Wrap" id="OutputText" style="direction: ltr; text-align: left;">
+<div><span id="noHighlight_0.28953880883995153">Der </span><span id="ouHighlight__0_3TO4_11">Großteil</span><span id="noHighlight_0.841644606651682"> </span><span id="ouHighlight__5_6TO13_15">der</span><span id="noHighlight_0.9945862029585774"> </span><span id="ouHighlight__12_24TO17_29">Dokumentation</span><span id="noHighlight_0.4540168435472163"> </span><span id="ouHighlight__26_32TO31_52">geht davon aus</span><span id="ouHighlight__34_39TO53_62">, dass Sie</span><span id="noHighlight_0.7684776301011831"> </span><span id="ouHighlight__52_54TO64_66">für</span><span id="noHighlight_0.4193207842861575"> </span><span id="ouHighlight__56_62TO68_74">Firefox</span><span id="noHighlight_0.9088718078539929"> </span><span id="ouHighlight__64_70TO76_82">Desktop</span><span id="noHighlight_0.49963813570432103"> </span><span id="ouHighlight__41_50TO84_93">entwickeln</span><span id="noHighlight_0.9909568108756502">.</span><span id="noHighlight_0.7634750581056711"> </span><span id="ouHighlight__73_74TO96_99">Wenn</span><span id="noHighlight_0.18227136516518694"> </span><span id="ouHighlight__76_81TO101_103">Sie</span><span id="noHighlight_0.7937397378231141"> </span><span id="ouHighlight__94_96TO105_107">für</span><span id="noHighlight_0.446034339567268"> </span><span id="ouHighlight__98_101TO109_114">einige</span><span id="noHighlight_0.6132288336308135"> </span><span id="ouHighlight__103_107TO116_121">andere</span><span id="noHighlight_0.4998320478574969"> </span><span id="ouHighlight__109_119TO123_136">Gecko-basierte</span><span id="noHighlight_0.9832400471917658"> </span><span id="ouHighlight__121_131TO138_146">Anwendung</span><span id="noHighlight_0.2489654801480421"> </span><span id="ouHighlight__83_92TO148_157">entwickeln</span><span id="noHighlight_0.5137074691361836">,</span><span id="noHighlight_0.52164172348249"> </span><span id="ouHighlight__134_142TO160_163">gibt</span><span id="noHighlight_0.5326594647041315"> es </span><span id="ouHighlight__144_148TO168_172">große</span><span id="noHighlight_0.49279966118057716"> </span><span id="ouHighlight__150_160TO174_185">Unterschiede</span><span id="noHighlight_0.00917762905149666">, über die Sie Bescheid wissen müssen</span>.</div>
+
+<div></div>
+</div>
+
+<dl>
+ <dt><a href="/de/Add-ons/Thunderbird">Thunderbird</a></dt>
+ <dd>
+ <div class="Wrap" id="OutputText" style="direction: ltr; text-align: left;">
+ <div><span class="highlight" id="ouHighlight__0_9TO0_10">Entwicklung</span><span id="noHighlight_0.8594649359455269"> von </span><span id="ouHighlight__11_20TO16_28">Erweiterungen</span><span id="noHighlight_0.808223459280189"> </span><span id="ouHighlight__22_24TO30_32">für</span><span id="noHighlight_0.1371760678355618"> </span><span id="ouHighlight__26_28TO34_36">den</span><span id="noHighlight_0.07522888675983863"> </span><span id="ouHighlight__30_40TO38_48">Thunderbird</span><span id="noHighlight_0.8486035940187313">-</span><span id="ouHighlight__42_45TO50_53">Mail</span><span id="noHighlight_0.47393784639771463">-</span><span id="ouHighlight__47_52TO55_60">Client</span><span id="noHighlight_0.1425177715644017">.</span></div>
+ </div>
+ </dd>
+ <dt><a href="/de/Add-ons/Firefox_for_Android">Firefox for Android</a></dt>
+ <dd>
+ <div class="Wrap" id="OutputText" style="direction: ltr; text-align: left;">
+ <div><span class="highlight" id="ouHighlight__0_9TO0_10">Entwicklung</span><span id="noHighlight_0.4886350776165175"> von </span><span id="ouHighlight__11_20TO16_28">Erweiterungen</span><span id="noHighlight_0.8972505665957908"> </span><span id="ouHighlight__22_24TO30_32">für</span><span id="noHighlight_0.7124573638197107"> </span><span id="ouHighlight__26_32TO34_40">Firefox</span><span id="noHighlight_0.21979868666214342"> </span><span id="ouHighlight__34_36TO42_44">für</span><span id="noHighlight_0.18709199135447352"> </span><span id="ouHighlight__38_44TO46_52">Android</span><span id="noHighlight_0.7186912318112938">.</span></div>
+ </div>
+ </dd>
+ <dt><a href="/de/Add-ons/SeaMonkey_2">SeaMonkey</a></dt>
+ <dd>
+ <div class="Wrap" id="OutputText" style="direction: ltr; text-align: left;">
+ <div><span id="ouHighlight__0_9TO0_10">Entwicklung</span><span id="noHighlight_0.4353357474301892"> von </span><span id="ouHighlight__11_20TO16_28">Erweiterungen</span><span id="noHighlight_0.3231901619416755"> </span><span id="ouHighlight__22_24TO30_32">für </span><a href="http://www.seamonkey-project.org/">SeaMonkey</a><span id="noHighlight_0.8390064965105459"> </span><span id="ouHighlight__40_47TO44_51">Software</span><span id="noHighlight_0.4412931994597855">-</span><span id="ouHighlight__49_53TO53_57">Suite</span><span id="noHighlight_0.3284779725993763">.</span></div>
+ </div>
+ </dd>
+</dl>
+</div>
+</div>
+
+<hr>
+<h2 id="Themes_2"><a name="Themes">Themes</a></h2>
+
+<div class="Wrap" id="OutputText" style="direction: ltr; text-align: left;">
+<div><span class="highlight" id="ouHighlight__0_5TO0_5">Themen</span><span id="noHighlight_0.7091726869291386"> </span><span id="ouHighlight__7_9TO7_10">sind</span><span id="noHighlight_0.7158110424914277"> </span><span id="ouHighlight__11_17TO12_18">Add-ons</span><span id="ouHighlight__19_22TO19_23">, die</span><span id="noHighlight_0.7855084263475988"> </span><span id="ouHighlight__52_65TO25_42">Benutzeroberfläche</span><span id="noHighlight_0.14409582791714548"> </span><span id="ouHighlight__34_36TO44_46">der</span><span id="noHighlight_0.9733285273704742"> </span><span id="ouHighlight__38_50TO48_56">Anwendung</span><span id="noHighlight_0.8181555853832905"> </span><span id="ouHighlight__24_32TO58_65">anpassen</span><span id="noHighlight_0.20276572757547962">.</span><span id="noHighlight_0.2625807275944092"> </span><span id="ouHighlight__68_72TO68_69">Es</span><span id="noHighlight_0.40480842245991133"> </span><span id="ouHighlight__74_76TO71_74">gibt</span><span id="noHighlight_0.35580628877654075"> </span><span id="ouHighlight__78_80TO76_79">zwei</span><span id="noHighlight_0.6726631148974175"> </span><span id="ouHighlight__82_86TO81_85">Arten</span><span id="noHighlight_0.6951386979247874"> </span><span id="ouHighlight__88_89TO87_89">von</span><span id="noHighlight_0.1266225433530359"> </span><span id="ouHighlight__91_96TO91_96">Themen</span><span id="noHighlight_0.6480903868387894">:</span><span id="noHighlight_0.3826606478753982"> </span><span id="ouHighlight__99_109TO99_105">leichte</span><span id="noHighlight_0.6792783607305855"> </span><span id="ouHighlight__111_116TO107_112">Themen</span><span id="noHighlight_0.4933933862487505"> </span><span id="ouHighlight__118_120TO114_116">und</span><span id="noHighlight_0.376437195200402"> </span><span id="ouHighlight__122_129TO118_126">komplette</span><span id="noHighlight_0.6218638899327298"> </span><span id="ouHighlight__131_136TO128_133">Themen</span><span id="noHighlight_0.796731371924988">.</span></div>
+
+<div></div>
+</div>
+
+<div class="column-container">
+<div class="column-half">
+<p><a href="https://addons.mozilla.org/de/developers/docs/themes"><span class="highlight" id="ouHighlight__0_10TO0_6">Leichte</span><span id="noHighlight_0.8076423798904167"> </span><span id="ouHighlight__12_17TO8_13">Themen</span></a><span id="noHighlight_0.8955283939242232"> </span><span id="ouHighlight__19_21TO15_18">sind</span><span id="noHighlight_0.9476356229330717"> </span><span id="ouHighlight__23_26TO20_23">viel</span><span id="noHighlight_0.860282754437777"> </span><span id="ouHighlight__28_34TO25_33">einfacher</span><span id="noHighlight_0.582288824259858"> </span><span id="ouHighlight__36_37TO35_36">zu</span><span id="noHighlight_0.5216144599053265"> </span><span id="ouHighlight__39_47TO38_51">implementieren</span><span id="noHighlight_0.765565431708579"> </span><span id="ouHighlight__49_52TO53_55">als</span><span id="noHighlight_0.5166018447680067"> </span><span id="ouHighlight__54_61TO57_65">komplette</span><span id="noHighlight_0.40329506865457243"> </span><span id="ouHighlight__63_68TO67_72">Themen</span><span id="noHighlight_0.9061345100744131">,</span><span id="noHighlight_0.35463797060676616"> </span><span id="ouHighlight__71_73TO75_78">aber sie </span><span id="ouHighlight__75_81TO105_110">bieten</span><span id="noHighlight_0.4430890269706572"> </span><span id="ouHighlight__83_86TO80_83">sehr</span><span id="noHighlight_0.9701129855139587"> </span><span id="ouHighlight__88_94TO85_93">begrenzte</span><span id="noHighlight_0.6256824291356461"> </span><span id="ouHighlight__96_108TO95_103">Anpassung</span><span id="noHighlight_0.22200604584963135">s möglichkeiten </span><span id="noHighlight_0.2890287412664867">.</span></p>
+</div>
+
+<div class="column-half">
+<div class="Wrap" id="OutputText" style="direction: ltr; text-align: left;">
+<div><span id="ouHighlight__0_3TO0_2">Mit</span><span id="noHighlight_0.7117414737790739"> </span><a href="/de/docs/Themes"><span id="ouHighlight__5_12TO4_13">kompletten</span><span id="noHighlight_0.04497219750149328"> Themes</span><span id="noHighlight_0.900419536727446"> </span></a><span id="ouHighlight__25_32TO23_28">machen</span><span id="noHighlight_0.7218148045305813"> </span><span id="ouHighlight__21_23TO30_32">Sie</span><span id="noHighlight_0.4386707677328683"> </span><span id="ouHighlight__34_37TO34_37">viel</span><span id="noHighlight_0.6945682788019498"> </span><span id="ouHighlight__39_44TO39_46">tieferen</span><span id="noHighlight_0.02507011941532078"> </span><span id="ouHighlight__46_58TO48_57">Änderungen</span><span id="noHighlight_0.6993966692173353"> </span><span id="ouHighlight__60_61TO59_60">an</span><span id="noHighlight_0.5480234798726392"> </span><span id="ouHighlight__63_65TO62_64">der</span><span id="noHighlight_0.32801931360345093"> </span><span class="highlight" id="ouHighlight__79_80TO66_83">Benutzeroberfläche</span><span id="noHighlight_0.812546935384922"> der </span><span id="ouHighlight__67_77TO89_97">Anwendung</span><span id="noHighlight_0.35402061599221446">.</span><span id="noHighlight_0.3490873352351369"> </span><span id="ouHighlight__83_85TO100_102">Die</span><span id="noHighlight_0.5419638678279032"> </span><span id="ouHighlight__87_99TO104_116">Dokumentation</span><span id="noHighlight_0.4889522018065986"> </span><span id="ouHighlight__101_103TO118_120">für</span><span id="noHighlight_0.3147442304269288"> </span><span id="ouHighlight__105_112TO122_130">komplette</span><span id="noHighlight_0.7409278300021354"> </span><span id="ouHighlight__114_119TO132_137">Themes</span><span id="noHighlight_0.9310480698691203"> </span><span id="ouHighlight__121_122TO139_141">ist</span><span id="noHighlight_0.19504357656123383"> </span><span id="ouHighlight__131_134TO143_150">veraltet</span><span id="noHighlight_0.351278927378499">,</span><span id="noHighlight_0.7834788929649756"> </span><span id="ouHighlight__137_139TO153_156">aber</span><span id="noHighlight_0.23221578864327252"> </span><span id="ouHighlight__141_142TO158_160">ist</span><span id="noHighlight_0.2072200413320433"> </span><span id="ouHighlight__154_157TO162_165">hier</span><span id="noHighlight_0.48896474805878065"> </span><span id="ouHighlight__159_160TO167_169">als</span><span id="noHighlight_0.7927970407375282"> </span><span id="ouHighlight__162_162TO171_174">eine</span><span id="noHighlight_0.3640498873599233"> </span><span id="ouHighlight__164_171TO176_183">mögliche</span><span id="noHighlight_0.4694294791588658"> </span><span id="ouHighlight__173_177TO185_193">Grundlage</span><span id="noHighlight_0.7299930099582119"> </span><span id="ouHighlight__179_181TO195_197">für</span><span id="noHighlight_0.08697375973628907"> </span><span id="ouHighlight__183_189TO199_211">aktualisierte</span><span id="noHighlight_0.4713024466741753"> </span><span id="ouHighlight__191_203TO213_225">Dokumentation</span><span id="noHighlight_0.9536066369584425"> </span><span id="ouHighlight__144_149TO227_235">verbunden</span><span id="noHighlight_0.8079093729885053">.</span></div>
+</div>
+</div>
+</div>
+
+<h2 id="Andere_Arten_von_Add-ons">Andere Arten von Add-ons</h2>
+
+<div class="Wrap" id="OutputText" style="direction: ltr; text-align: left;">
+<div><a href="/de/docs/Creating_OpenSearch_plugins_for_Firefox">Search engine plugins</a><span id="noHighlight_0.19786193015987918"> </span><span id="ouHighlight__22_24TO20_23">sind</span><span id="noHighlight_0.4042654635760823"> </span><span id="ouHighlight__26_26TO25_28">eine</span><span id="noHighlight_0.013331733575812854"> </span><span id="ouHighlight__28_33TO30_37">einfache</span><span id="noHighlight_0.3357292309767407"> </span><span id="ouHighlight__35_37TO39_41">und</span><span id="noHighlight_0.6906528779067063"> </span><span id="ouHighlight__39_42TO43_46">sehr</span><span id="noHighlight_0.795727328148957"> </span><span id="ouHighlight__44_51TO48_58">spezifische</span><span id="noHighlight_0.3885277082041798"> </span><span id="ouHighlight__53_56TO60_62">Art</span><span id="noHighlight_0.9928546588503686"> </span><span id="ouHighlight__58_59TO64_66">von</span><span id="noHighlight_0.05442968422145267"> </span><span id="ouHighlight__61_66TO68_73">Add-on</span><span id="noHighlight_0.23935903302768258">:</span><span id="noHighlight_0.3205499902071268"> </span><span id="ouHighlight__69_72TO76_78">sie</span><span id="noHighlight_0.7641452782587046"> </span><span id="ouHighlight__78_80TO80_83">fügen neue</span><span id="noHighlight_0.25923348582678285"> </span><span id="ouHighlight__82_95TO85_97">Suchmaschinen</span><span id="noHighlight_0.40861143856459026"> </span><span id="ouHighlight__97_98TO99_100">zu</span><span id="noHighlight_0.9796185082863216"> </span><span id="ouHighlight__100_102TO102_104">den</span><span id="noHighlight_0.9744248881763996"> </span><span id="ouHighlight__104_112TO106_112">Browser</span><span id="noHighlight_0.238452498937324">-</span><span id="ouHighlight__114_124TO114_123">Suchleiste</span><span id="noHighlight_0.6935225429152729"> </span><span id="ouHighlight__74_76TO125_134">hinzu</span><span id="noHighlight_0.8712683010470288">.</span></div>
+
+<div></div>
+</div>
+
+<div class="Wrap" id="OutputText" style="direction: ltr; text-align: left;">
+<div><strong><a href="/de/docs/Plugins">Plugins</a></strong><span id="noHighlight_0.308275920971552"> </span><span id="ouHighlight__8_11TO8_13">helfen</span><span id="noHighlight_0.005012862116077099"> </span><span id="ouHighlight__13_15TO15_17">den</span><span id="noHighlight_0.5836467766155674"> </span><span id="ouHighlight__17_27TO19_27">Anwendung</span><span id="noHighlight_0.5622831932929843"> den </span><span id="ouHighlight__40_46TO29_34">Inhalt</span><span id="noHighlight_0.0759762703159298"> zu </span><span id="ouHighlight__29_38TO39_47">verstehen</span><span id="ouHighlight__48_51TO48_52">, die</span><span id="noHighlight_0.9410264063356472"> </span><span id="ouHighlight__61_63TO54_58">nicht</span><span id="noHighlight_0.027592567795727163"> </span><span id="ouHighlight__65_72TO60_64">nativ</span><span id="noHighlight_0.1596520819365158"> </span><span id="ouHighlight__74_80TO66_76">unterstützt</span><span id="noHighlight_0.35445393961131644"> </span><span id="ouHighlight__56_59TO78_81">werden</span><span id="noHighlight_0.20435452023787382">.</span><span id="noHighlight_0.6269652232383389"> </span><span id="ouHighlight__83_84TO84_86">Wir</span><span id="noHighlight_0.4575597174820274"> </span><span id="ouHighlight__86_88TO88_91">sind</span><span id="noHighlight_0.9182470995338107"> </span><span id="ouHighlight__90_106TO93_97">dabei</span><span id="noHighlight_0.2323513020812058"> </span><span id="ouHighlight__108_118TO99_108">ablehnend</span><span id="noHighlight_0.18013907391857142"> Plugins zu </span><span id="ouHighlight__120_126TO110_122">Supporten</span><span id="noHighlight_0.8477490172852702">, </span><span id="ouHighlight__147_148TO143_144">da</span><span id="noHighlight_0.6743600132620321"> </span><span id="ouHighlight__150_153TO146_148">sie</span><span id="noHighlight_0.4732348168075391"> </span><span id="ouHighlight__160_160TO150_153">eine</span><span id="noHighlight_0.03990327193490939"> </span><span id="ouHighlight__162_168TO155_164">Geschichte</span><span id="noHighlight_0.053116464521166584"> </span><span id="ouHighlight__170_171TO166_168">der</span><span id="noHighlight_0.9308770254849978"> </span><span id="ouHighlight__181_189TO170_179">Stabilität</span><span id="noHighlight_0.053022201910917444">,</span><span id="noHighlight_0.9255764685927823"> </span><span id="ouHighlight__192_202TO182_189">Leistung</span><span id="noHighlight_0.2685633189745187"> </span><span id="ouHighlight__205_207TO191_193">und</span><span id="noHighlight_0.10023133462949951"> </span><span id="ouHighlight__218_225TO195_213">Sicherheitsprobleme</span><span id="noHighlight_0.7081075791010901"> </span><span id="ouHighlight__173_179TO215_224">verursacht</span><span id="noHighlight_0.26674105625618405"> </span><span id="ouHighlight__155_158TO226_230">haben</span><span id="noHighlight_0.03774240860132083">.</span></div>
+</div>
+
+<h2 id="Inhalt">Inhalt</h2>
+
+<ol>
+ <li><a href="/de/Add-ons/Overlay_Extensions" title="Overlay extensions">Overlay Erweiterung</a></li>
+ <li><a href="/de/Add-ons/Bootstrapped_extensions" title="Restartless extensions">Restartless Erweiterung</a></li>
+ <li><a href="/de/Add-ons/SDK">Add-on SDK</a></li>
+ <li><a href="#">Erweiterung  Bewährte</a>
+ <ol>
+ <li><a href="/de/Add-ons/Performance_best_practices_in_extensions" title="Performance">Leistung</a></li>
+ <li><a href="/de/Add-ons/Security_best_practices_in_extensions" title="Security">Sicherheit</a></li>
+ <li><a href="/de/Add-ons/Extension_etiquette" title="Etiquette">Etikette</a></li>
+ </ol>
+ </li>
+ <li><a href="#">Themes</a>
+ <ol>
+ <li><a href="https://addons.mozilla.org/de/developers/docs/themes" title="Lightweight themes">Leichte Themes</a></li>
+ <li><a href="/de/docs/Themes" title="Complete themes">Komplete Themes</a></li>
+ </ol>
+ </li>
+ <li><a href="#">Veröffentlichung Add-ons</a>
+ <ol>
+ <li><a href="https://addons.mozilla.org/" title="addons.mozilla.org">addons.mozilla.org</a></li>
+ <li><a href="/de/docs/Mozilla/Add-ons/Add-on_guidelines">Add-on Richtlinien</a></li>
+ </ol>
+ </li>
+</ol>
diff --git a/files/de/mozilla/add-ons/performance_best_practices_in_extensions/index.html b/files/de/mozilla/add-ons/performance_best_practices_in_extensions/index.html
new file mode 100644
index 0000000000..5a1c7e8052
--- /dev/null
+++ b/files/de/mozilla/add-ons/performance_best_practices_in_extensions/index.html
@@ -0,0 +1,156 @@
+---
+title: Best Practice für Performance in Erweiterungen
+slug: Mozilla/Add-ons/Performance_best_practices_in_extensions
+tags:
+ - Add-ons
+ - Best Practice
+ - Erweiterungen
+ - Leitfaden
+ - Performanz
+translation_of: Archive/Add-ons/Performance_best_practices_in_extensions
+---
+<p>Einer der größten Vorteile von Firefox ist seine Erweiterbarkeit. Erweiterungen können beinahe jede beliebige Funktion erfüllen. Doch dieses Konzept hat einen Nachteil: Eine schlecht geschriebene Erweiterung kann sich stark negativ auf das Nutzungserlebnis auswirken, und auch zu allgemeinen Leistungseinbußen in Firefox führen. Der folgende Artikel soll eine Reihe von Vorschlägen liefern, um die Leistung und Geschwindigkeit Deiner Erweiterung zu erhöhen, und dadurch auch von Firefox selbst.</p>
+
+<h2 id="Die_Startup_Leistung_Verbessern">Die Startup Leistung Verbessern</h2>
+
+<p>Erweiterungen werden immer dann geladen und gestartet, wenn eine neues Browser Fenster geöffnet wird. Im Umkehrschluss bedeutet das aber, dass Deine Erweiterung einen direkten Einfluss darauf hat, wie lange ein Benutzer beim Laden einer neuen Seite warten muss. Es gibt mehrere Möglichkeiten, die Startzeit Deiner Erweiterung zu optimieren und somit die Verzögerung für den Endbenutzer zu minimieren.</p>
+
+<h3 id="Lade_nur_was_nötig_ist">Lade nur, was nötig ist</h3>
+
+<p>Lade keine Ressourcen beim Startup, die nicht direkt benötigt werden. Das sind Daten, die erst nach einer Benutzerinteraktion, etwa ein Klick auf einen Button, benötigt werden, oder Daten die nur bei bestimmten Einstellungen zum Tragen kommen. Auch wenn Deine Erweiterung Features anbietet, die nur funktionieren wenn der Benutzer sich in ein Service eingeloggt hat, lade die Ressourcen für diese Features erst beim tatsächlichen Login.</p>
+
+<h3 id="Nutze_JavaScript_Code_Module">Nutze JavaScript Code Module</h3>
+
+<p>Du kannst Teile deiner Erweiterung in <a href="/de/docs/Mozilla/JavaScript_code_modules/Using" title="/en-US/docs/Mozilla/JavaScript_code_modules/Using">JavaScript code modules</a> kapseln. Diese Module können zur Laufzeit bei Bedarf geladen werden und reduzieren somit den Ladeaufwand zum Programmstart.</p>
+
+<p>Die JavaScript Code Module bieten hier einen Vorteil gegenüber XPCOM Modulen, die immer zu Beginn geladen werden.</p>
+
+<p>Natürlich hängt es von der Komplexität der Erweiterung ab, ob eine Modularisierung des Codes sinnvoll ist.</p>
+
+<h3 id="Verschiebe_alles_was_verschoben_werden_kann">Verschiebe alles, was verschoben werden kann</h3>
+
+<p>Die meisten Erweiterungen fangen das load event eines Fensters ab, um ihren Startup Code auszuführen. Hier sollte so wenig wie möglich getan werden. Das Browser Fenster wird so lange blockiert, bis der load Handler deiner Erweiterung abgeschlossen ist. Das bedeutet, je länger die Erweiterung dafür braucht, desto langsamer wirkt Firefox für den Benutzer.</p>
+
+<p>Jede Operation, die nicht sofort ausgeführt werden muss, kann mittels einem {{ interface("nsITimer") }} oder mit der {{ domxref("window.setTimeout()") }} Funktion für einen späteren Zeitpunkt geplant werden. Sogar kurze Verzögerungen in diesem Programmbereich können eine große Auswirkung auf die Ladegeschwindigkeit haben.</p>
+
+<h2 id="General_Performance_Tips">General Performance Tips</h2>
+
+<h3 id="Vermeide_Speicherlecks">Vermeide Speicherlecks</h3>
+
+<p>Speicherlecks können die Leistung deiner Erweiterung stark reduzieren, weil sie dafür sorgen, dass der Garbage Collector und der Cycle Collector mehr Arbeit haben.</p>
+
+<p>Sogenannte Zombiebereiche sind eine Form von Speicherlecks, die Du selbst sehr einfach entdecken und verhindern kannst. Lies dazu den Artikel zu <a href="/de/Zombie_compartments" title="en/Zombie_compartments">Zombie compartments</a>, speziell die Sektion <a href="/de/Zombie_compartments#Proactive_checking_of_add-ons" title="en/Zombie_compartments#Proactive_checking_of_add-ons">Proactive checking of add-ons</a>.</p>
+
+<p>Im Artikel <a href="/de/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> werden weitere Möglichkeiten, wie Du Zombiebereiche und andere Formen von Speicherlecks verhindern kannst, besprochen.</p>
+
+<p>Neben der direkten Suche nach den oben genannten Lecks solltest Du auch allgemein ein Auge auf die Speichernutzung deines Addons haben und regelmäßig unter about:memory überprüfen. Als Beispiel sei <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> genannt, bei dem ein "System Principal" JavaScript Bereich auf mehrere 100 MB an Speicher anwuchs, was <em>sehr</em> viel größer ist als im Regelfall.</p>
+
+<h3 id="Nutze_JavaScript_Module">Nutze JavaScript Module</h3>
+
+<p>JavaScript Module verhalten sich wie jeder andere JavaScript Code, mit dem feinen Unterschied, dass sie als Singletons agieren und daher von Firefox in den Cache abgelegt werden können. Dadurch können sie beim nächsten Start sehr viel effizienter geladen werden. Wann immer deine Erweiterung JavaScript Code von einem {{ HTMLElement("script") }} Element lädt, solltest du überlegen, stattdessen ein JavaScript Modul zu nutzen. Weitere Information über JavaScript Module und ihre Verwendung werden im Artikel <a href="/de/docs/Mozilla/JavaScript_code_modules/Using" title="/en-US/docs/Mozilla/JavaScript_code_modules/Using">Using JavaScript Code Modules</a> besprochen.</p>
+
+<h3 id="Vermeide_Langsamen_CSS_Code">Vermeide Langsamen CSS Code</h3>
+
+<ul>
+ <li>Lies den Leitfaden <a href="/de/CSS/Writing_Efficient_CSS" title="en/CSS/Writing_Efficient_CSS">"writing efficient CSS"</a></li>
+ <li>Beachte, dass jeder Selektor, der auf viele unterschiedliche Knoten zutreffen könnte, eine Quelle von Ineffizienz darstellen kann, entweder während dem Matching oder beim Verarbeiten von Updates. Das ist speziell in letzterem Fall problematisch, wenn der Selektor dynamisch zutreffen könnte oder nicht. Ein unqualifiziertes ":hover" sollte vermieden werden wie die Pest.</li>
+</ul>
+
+<h3 id="Vermeide_DOM_Mutation_Event_Listeners">Vermeide DOM Mutation Event Listeners</h3>
+
+<p>Durch das Hinzufügen eines DOM Mutation Listeners in einem Dokument werden die meisten DOM Mutation Optimierungen deaktiviert und die Performanz von weiteren Änderungen der DOM-Struktur des Dokuments wird <a href="http://groups.google.com/group/mozilla.dev.platform/browse_thread/thread/2f42f1d75bb906fb?pli=1">stark herabgesetzt</a>. Des weiteren kann dieser Effekt durch das Deaktivieren eines Mutation Listeners nicht wieder rückgängig gemacht werden. Die folgenden Events sollten daher strikt vermieden werden: <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>Weitere Information zu diesen veralteten Events findest Du im Artikel <a href="/de/docs/Web/Guide/DOM/Events/Mutation_events" title="en-US/docs/Web/Guide/DOM/Events/Mutation_events">Mutation events</a>. Stattdessen sollten <a href="/de/docs/Web/API/MutationObserver" title="en-US/docs/Web/API/MutationObserver">Mutation Observers</a> benutzt werden.</p>
+
+<h3 id="Benutze_Lazy_Load_für_Services">Benutze Lazy Load für Services</h3>
+
+<p>Das JavaScript Modul <a href="/de/JavaScript_code_modules/XPCOMUtils.jsm#Methods">XPCOMUtils</a> bietet zwei Möglichkeiten für Lazy Loading:</p>
+
+<ul>
+ <li><code>defineLazyGetter()</code> definiert eine Getter-Funktion für ein bestimmtes Objekt, die erst bei der erstmaligen Verwendung angelegt wird. <a href="http://mxr.mozilla.org/mozilla-central/search?string=defineLazyGetter">Beispiele</a>.</li>
+ <li><code>defineLazyServiceGetter()</code> definiert eine Funktion für ein bestimmtes Objekt, die als Getter für ein Service fungiert. Das Service wird dabei erst aktiviert, wenn es zum ersten Mal benutzt wird. {{ LXRSearch("ident", "string", "defineLazyServiceGetter", "Lies den Quellcode") }} für Beispiele.</li>
+</ul>
+
+<p>Seit Firefox 4.0 werden viele übliche Services bereits in <a href="/de/JavaScript_code_modules/Services.jsm" title="en/JavaScript_code_modules/Services.jsm">Services.jsm</a> gecached.</p>
+
+<h3 id="Reduziere_File_IO">Reduziere File I/O</h3>
+
+<p>TODO: Hier fehlen Beispiele, wie etwa Links zu Code, Bugs, oder Docs.</p>
+
+<ul>
+ <li>Wenn du mit Firefox 3.6 und darunter kompatibel sein willst, oder wenn du <code>em:unpack</code> benutzt, verwende chrome JARs!</li>
+ <li>Kombiniere dein CSS</li>
+ <li>Kombiniere deine Einstellungsseiten</li>
+ <li>Kombiniere Schnittstellen in eine einzelne .idl Datei, um xpt Dateien zu reduzieren</li>
+ <li>Kombiniere Toolbar Icons in eine einzelne Datei</li>
+</ul>
+
+<h3 id="Benutze_die_Richtige_Kompressionsstufe_für_JAR_und_XPI_Dateien">Benutze die Richtige Kompressionsstufe für JAR und XPI Dateien</h3>
+
+<p>Daten von komprimierten Archiven zu lesen ist zeitaufwändig. Je stärker ein Archiv komprimiert ist, desto mehr Aufwand muss auch für das Lesen der darin befindlichen Daten erbracht werden. Daher sollten alle JAR Dateien in deiner Erweiterung mit Kompressionslevel 0 (keine Kompression) gepackt werden. Es mag kontraproduktiv klingen, aber dadurch wird zwar die Dateigröße der JAR Datei erhöht, die Größe der XPI Datei aber <em>reduziert</em>, weil dadurch die Möglichkeit gegeben ist, dass beim Komprimiered der XPI Datei Kompressionen der einzelnen im JAR enthaltenen Dateien stattfinden können. (Das kann als eine Art <a href="https://de.wikipedia.org/wiki/Progressive_Kompression">progressive Kompression</a> bezeichnet werden).</p>
+
+<p>Wenn deine Erweiterung nicht explizit <code>em:unpack</code> verwendet, wird das XPI file ab Firefox 4 nicht entpackt, sondern direkt genutzt. Aus diesem Grund ist eine niedrige Kompressionsstufe zu bevorzugen, wobei wir zu Kompressionslevel 1 raten. Selbst im Vergleich mit maximaler Kompression wird dadurch die Größe des Downloads nur geringfügig angehoben.</p>
+
+<h3 id="Benutze_asynchrone_IO">Benutze asynchrone I/O</h3>
+
+<p>Diese Regel kann nicht oft genug wiederholt werden: Benutze niemals synchrone I/O in einem GUI Thread.</p>
+
+<ul>
+ <li>Benutze keine synchronen XMLHttpRequests (XHR). Verwende stattdessen asynchrone Anfragen und zeige dem Benutzer ein Ladesymbol oder eine Nachricht, falls es zu Wartezeiten kommt.</li>
+ <li>Hilfsfunktionen für asynchrones Lesen und Kopieren von Dateien werden von <a href="/de/JavaScript_code_modules/NetUtil.jsm" title="en/JavaScript_code_modules/NetUtil.jsm">NetUtils.jsm</a> bereitgestellt.</li>
+ <li>Greife niemals synchron auf eine SQLite Datenbank zu. Benutze stattdessen die <a href="/de/Storage#Asynchronously">asynchrone API</a>.</li>
+</ul>
+
+<h3 id="Unnötige_Verwendung_von_onreadystatechange_in_XHR">Unnötige Verwendung von onreadystatechange in XHR</h3>
+
+<p>Für die meisten Anwendungsfälle sind <code>addEventListener</code>(load/error) und/oder xhr.onload/.onerror völlig ausreichend und bieten den Vorteil, dass sie nur einmal aufgerufen werden, im Gegensatz zu <code>onreadystatechange</code>. In vielen Fällen wird <code>onreadystatechange</code> aus Kompatibilitätsgründen verwendet, wenn XHR in einer Webseite verwendet wird. Das ist oft auchreichend, um Ressourcen zu laden oder Fehler zu behandeln. Allerdings werden load/error Event Listener viel seltener aufgerufen als <code>onreadystatechange</code>, genauer gesagt nur einmal, und es ist nicht notwendig jedes mal den <code>readyState</code>  zu überprüfen oder herauszufinden, ob es sich um ein error Event handelt. <code>onreadystatechange</code> sollte nur benutzt werden, wenn es notwendig ist, eine Antwort noch während ihrem Einlangen zu behandeln.</p>
+
+<h3 id="Entferne_Event_Listeners">Entferne Event Listeners</h3>
+
+<p>Entferne Event Listener, wenn sie nicht mehr benötigt werden. Es ist viel effizienter, Event Listener zu entfernen, als sie etwa durch Flags zu deaktivieren; denn bei zweiterem Ansatz muss bei jedem auftretenden Event die Flag abgefragt werden. Konstrukte wie <code>function onMouseOver(evt) { if (is_active) { /* doSomeThing */ } }</code> sollten also vermieden werden. Auch "Einmal-Events" sollten danach wieder deaktiviert werden:</p>
+
+<pre class="brush: js"> function init() {
+ var largeArray;
+ addEventListener('load', function onLoad() {
+ removeEventListener('load', onLoad, true);
+ largeArray.forEach();
+ }, true);
+</pre>
+
+<p>Andernfalls kann es vorkommen, dass Closure Objekte des Listeners weiter referenziert werden (in obigem Beispiel die Variable <code>largeArray</code>). Der Listener wird dadurch weit über seine nötige Lebensdauer im Speicher gehalten.</p>
+
+<h3 id="Befülle_Menüs_nach_Bedarf">Befülle Menüs nach Bedarf</h3>
+
+<p>Befülle Kontextmenüs (page, tabs, tools) nur nach Bedarf und reduziere Berechnungen auf ein Minimum, um die Reaktionsgeschwindigkeit der UI zu erhalten. Es ist nicht notwendig, bei jeder Änderung das gesamte Menü neu zu befüllen. Diese Aufgabe kann warten, bis der Benutzer das Menü tatsächlich verwenden will. Füge einen Listener für das "popupshowing" Event hinzu und erstelle/befülle das Kontextmenü dort.</p>
+
+<h3 id="Vermeide_Maus-Bewegungs-Events">Vermeide Maus-Bewegungs-Events</h3>
+
+<p>Vermeide die Verwendung von Mausbewegungsevents (enter, over, exit) oder minimiere zumindest die Berechnungen, die beim Auslösen eines solchen Events durchgeführt werden auf ein Minimum. Solche Events, besonders das <code>mouseover</code> Event, treten überlichweise sehr häufig auf. Es wird geraten, im Eventhandler nur neue Information zu speichern und die Berechnung erst dann auszuführen, wenn der Benutzer sie benötigt (zum Beispiel bei einem <code>popupshowing</code> Event). Vergiss auch nicht darauf, nicht mehr benötigte Event Listener auszuschalten (siehe oben).</p>
+
+<h3 id="Vermeide_Polling">Vermeide Polling</h3>
+
+<p>Benutze die {{ interface("nsIObserverService") }} Funktion stattdessen. Jede Erweiterung darf via {{ interface("nsIObserverService") }} eigene Benachrichtigungen versenden, aber die wenigsten benutzen diese Funktionalität. Auch viele andere Services bieten Funktionalität zur Beobachtung, etwa nslPrefBranch2.</p>
+
+<h3 id="aPNGaGIF_sind_oft_nicht_zu_Empfehlen">aPNG/aGIF sind oft nicht zu Empfehlen</h3>
+
+<p>Animationen benötigen viel Ladezeit, weil eine große Anzahl an Bildern dekodiert werden muss (die Frames der Animation). Animierte Bilder werden häufig aus dem Cache entfernt, was dazu führt, dass sie immer wieder neu geladen werden müssen. Besonders anfällig dafür ist {{ interface("nsITree") }} / {{ XULElem("tree") }}, das unter manchen Umständen gar kein Caching betreibt.</p>
+
+<h3 id="base64md5sha1_Implementierungen">base64/md5/sha1 Implementierungen</h3>
+
+<p>Verwende keine eigenen base64/md5/sha1 Implementierungen. Die eingebauten Funktionen für base64 <code>atob</code>/<code>btoa</code> sind völlig ausreichend und können in overlay Scripts sowie in JavaScript Modulen verwendet werden. Hashes können mit {{ interface("nsICryptoHash") }}, berechnet werden, das entweder einen String oder {{ interface("nsIInputStream") }} akzeptiert.</p>
+
+<h3 id="Image_sprites">Image sprites</h3>
+
+<p>Mehrere Bilder können in ein Sprite kombiniert werden. Siehe {{ cssxref("-moz-image-region") }}. Die meisten XUL Widgets, die zum Anzeigen von Bildern verwendet werden können (inklusive {{ XULElem("button") }} und {{ XULElem("toolbarbutton") }}) erlauben auch die Verwendung von {{ cssxref("list-style-image") }}. Vermeide die Benutzung der <code>imagesrc</code>/<code>src</code> Attribute für die einbettung von Bildern.</p>
+
+<h3 id="Verwende_Chrome_Workers">Verwende Chrome Workers</h3>
+
+<p>Für lange andauernde Berechnungen oder Datenverarbeitung kann {{ domxref("ChromeWorker") }} verwendet werden.</p>
+
+<h2 id="Weiterführende_Links">Weiterführende Links</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/de/mozilla/add-ons/sdk/builder/index.html b/files/de/mozilla/add-ons/sdk/builder/index.html
new file mode 100644
index 0000000000..d243acec45
--- /dev/null
+++ b/files/de/mozilla/add-ons/sdk/builder/index.html
@@ -0,0 +1,16 @@
+---
+title: Builder
+slug: Mozilla/Add-ons/SDK/Builder
+tags:
+ - builder
+translation_of: Archive/Add-ons/Add-on_SDK/Builder
+---
+<p>Der Add-on Builder war ein web-basiertes Entwicklungssystem welches Entwicklern erlaubt hat, mit den SDK APIs Addons zu erstellen ohne das cfx Kommando-Zeilen-Tool verwenden zu müssen. Es wurde am 1. April 2014 eingestellt und jetzt leitet es auf die builder.addons.mozilla.org-Seite weiter.<br>
+ <br>
+ Falls sie bisher das SDK nur über den Builder verwendet haben, wissen sie bereits das meiste, das sie benötigen um direkt mit dem SDK arbeiten zu können. Die <a href="/en-US/Add-ons/SDK/High-Level_APIs">high-level</a> und <a href="/en-US/Add-ons/SDK/Low-Level_APIs">low-level</a> APIs, die für Builder Addons verwendet wurden sind jeweils die gleichen. Mit folgenden Schritten können sie zum SDK wechseln:</p>
+
+<ul>
+ <li>installieren sie <a href="/de/Add-ons/SDK/Tutorials/Installation">das SDK lokal</a></li>
+ <li>machen sie sich mit dem cfx Kommando-Zeilen-Tool mit Hilfe dieser <a href="/de/Add-ons/SDK/Tutorials/Getting_started">Einführung</a> und der  <a href="/de/Add-ons/SDK/Tools/cfx">detailierten <code>cfx</code> Referenz </a>vertraut</li>
+ <li>lernen sie die <a href="/en-US/Add-ons/SDK/Tools/package_json">package.json</a> Datei zum Konfigurieren ihres Add-On kennen</li>
+</ul>
diff --git a/files/de/mozilla/add-ons/sdk/guides/content_scripts/index.html b/files/de/mozilla/add-ons/sdk/guides/content_scripts/index.html
new file mode 100644
index 0000000000..a94176f2cb
--- /dev/null
+++ b/files/de/mozilla/add-ons/sdk/guides/content_scripts/index.html
@@ -0,0 +1,484 @@
+---
+title: Content Scripts
+slug: Mozilla/Add-ons/SDK/Guides/Content_Scripts
+translation_of: Archive/Add-ons/Add-on_SDK/Guides/Content_Scripts
+---
+<article id="wikiArticle">
+<p><span class="seoSummary">Viele Add-ons müssen den Inhalt von Webseiten modifizieren oder auf diesen zugreifen können. Der Grundcode des Add-on  bekommt aber keinen direkten Zugriff auf Webinhalte. Stattdessen müssen SDK Add-ons den Code,  der Zugriff auf Webinhalte erhält in seperate Skripte auslagern, die sogenannten "Content Scripts". Diese Seite beschreibt wie man Content Scripts entwickelt und diese implementiert. </span></p>
+
+<p>Content Scripts sind einer der verwirrenderen Aspekte beim Arbeiten mit der SDK, aber Sie werden mit Sicherheit mit ihnen arbeiten müssen. Es gibt fünf grundlegende Prinzipien:</p>
+
+<ul>
+ <li>Der Grundcode des Add-ons, wie zum Beispiel "main.js" und andere module im "lib" Verzeichnis, können die <a href="/de/Add-ons/SDK/High-Level_APIs">high-level</a> und <a href="/de/Add-ons/SDK/Low-Level_APIs">low-level</a> APIs benutzen, aber nicht direkt auf Webinhalte zugreifen.</li>
+ <li>Content Skripts <a href="/de/Add-ons/SDK/Guides/Two_Types_of_Scripts#API_Access_for_Add-on_Code_and_Content_Scripts">können keine SDK APIs</a> ( kein Zugang zu <code>exports</code>, <code>require</code>), dafür aber auf Webinhalte zugreifen.</li>
+ <li>SDK APIs, die Content Skripts verwenden, wie zum Beispiel <a href="/de/Add-ons/SDK/High-Level_APIs/page-mod">page-mod</a> und <a href="/de/Add-ons/SDK/High-Level_APIs/tabs">tabs</a>, bieten Funktionen die es dem Grundcode des Add-ons ermöglichen Content Skripts  in eine Weebseite zu laden.</li>
+ <li>Content Skripts können als Strings geladen werden, werden aber öfter in seperaten Dateien im Add-on Ordner "data" abgespeichert. Jpm erzeugt keinen "data" Ordner, daher muss dieser manuell hinzugefügt werden und ihr Content Scrikt dort abgespeichert werden.</li>
+ <li>Eine Nachricht übertragende API erlaubt es dem Grundcode und dem Content Skript miteinander zu kommunizieren.</li>
+</ul>
+
+<p>Dieses komplette Add-on zeigt alle diese Prinzipien. Die "main.js" hängt ein Content Skript an den aktuellen Tab, mittels den <a href="/de/Add-ons/SDK/High-Level_APIs/tabs">tabs </a>Modules, an. In diesem Fall wird der Content Skript in Form eines Strings übergeben. Das Content Skript ersetzt einfach nur den Inhalt der Seite:</p>
+
+<pre class="brush: js">// main.js
+var tabs = require("sdk/tabs");
+var contentScriptString = 'document.body.innerHTML = "&lt;h1&gt;Diese Seite wurde aufgegessen&lt;/h1&gt;";'
+
+tabs.activeTab.attach({
+ contentScript: contentScriptString
+});</pre>
+
+<p>Die folgenden high-level SDK Module können Content Skripts benutzen, um Webseiten zu bearbeiten:</p>
+
+<ul>
+ <li><a href="/de/Add-ons/SDK/High-Level_APIs/page-mod">page-mod</a>: Erlaubt es Ihnen Content Skripts bei Webseiten, die mit einem bestimmten URL Muster übereinstimmen, einzusetzen.</li>
+ <li><a href="/de/Add-ons/SDK/High-Level_APIs/tabs">tabs</a>: Exportiert ein Tab Objekt um mit einem Browser Tab zu arbeiten.Das Tab Objekt beinhaltet eine Funktion <a href="/de/Add-ons/SDK/High-Level_APIs/tabs#attach(options)"><code>attach()</code></a> um dem Skript Content Skripte anzuhängen.</li>
+ <li><a href="/de/Add-ons/SDK/High-Level_APIs/page-worker">page-worker</a>:  Lässt Sie eine Webseite erhalten ohne diese anzuzeigen. Sie können diesen Seiten Content Skripte anhängen, die DOM der Seite erreichen oder diese maniulieren.</li>
+ <li><a href="/de/Add-ons/SDK/High-Level_APIs/context-menu">context-menu</a>: Hiermit können Sie ein Content Skript benutzen um mit einer Seite zu interagieren, in der das Menü aufgerufen ist.</li>
+</ul>
+
+<p>Zusätzlich sind manche SDK Benutzeroberflächen Komponenten - Panel, Sidebar, frames - darauf ausgelegt HTML zu benutzen und haben deshalb seperate Skripte um mit ihrem Inhalt zu interagieren. In vielen Punkten sind diese Skripte wie Content Skripte, aber dies ist nicht Teil dieses Artikels. Um mehr über die Interaktion des Inhalts eines Benutzeroberflächenmoduls zu erfahren, schauen Sie sich die modulspezifischen Dokumentationen: <a href="/de/Add-ons/SDK/High-Level_APIs/panel">panel</a>, <a href="/de/Add-ons/SDK/Low-Level_APIs/ui_sidebar">sidebar</a>, <a href="/de/Add-ons/SDK/Low-Level_APIs/ui_frame">frame </a>an.</p>
+
+<p>Fast alle diese Beispiele, die in dieser Anleitung präsentiert werden, sind als komplette, aber minimalistische, Add-ons in der<a href="https://github.com/mdn/addon-sdk-content-scripts"> addon-sdk-content-scripts repository</a> auf Github vorhanden.</p>
+
+<h2 id="Content_Skripts_laden">Content Skripts laden</h2>
+
+<article id="wikiArticle">
+<p>Sie können ein einzelnes Skript laden, indem Sie einen String an die <code>contentScript</code> oder die <code>contentScriptFile</code> Option übergeben. Die <code>contentScript</code> Option behandelt den übergebenen String wie ein eigenes Skript:</p>
+
+<pre class="brush: js">// main.js
+
+var pageMod = require("sdk/page-mod");
+var contentScriptValue = 'document.body.innerHTML = ' +
+ ' "&lt;h1&gt;Page matches ruleset&lt;/h1&gt;";';
+
+pageMod.PageMod({
+ include: "*.mozilla.org",
+ contentScript: contentScriptValue
+});</pre>
+
+<p><code>Die contentScriptFile</code> Option behandelt den String wie eine resource:// URL, die auf ein Skript zeigt, dass in ihrem Add-on Verzeichnis "data" gespeichert ist. jpm erstellt standardmäßig keinen "data" Ordner, also muss dieser erst erstellt werden, wenn Sie ihre Content Scripts verwenden wollen.</p>
+
+<p>Das Add-on liefert eine URL, die auf die Datei "content-script.js" zeigt, welche im <code>data</code> Unterordner des Add-on Stammverzeichnisses enthalten ist:</p>
+
+<pre class="brush: js">// main.js
+
+var data = require("sdk/self").data;
+var pageMod = require("sdk/page-mod");
+
+pageMod.PageMod({
+ include: "*.mozilla.org",
+ contentScriptFile: data.url("content-script.js")
+});</pre>
+
+<pre class="brush: js">// content-script.js
+
+document.body.innerHTML = "&lt;h1&gt;Seite erfüllt die Regeln.&lt;/h1&gt;";</pre>
+
+<div class="note">
+<p>Ab Firefox 34 , kann "./content-script.js" als Alias für self.data.url("content-script.js") verwendet werden. Die main.js kann also auch folgendermaßen geschrieben werden:</p>
+
+<pre class="brush: js">var pageMod = require("sdk/page-mod");
+
+pageMod.PageMod({
+ include: "*.mozilla.org",
+ contentScriptFile: "./content-script.js"
+});
+</pre>
+</div>
+
+<div class="warning">
+<p>Wenn ihr Content Skript nicht sehr simpel ist oder aus einem statischen String besteht, sollten Sie <code>contentScript</code>:  nicht benutzen. Wenn Sie es doch tun, könnten Sie Probleme haben Ihr Add.on auf AMO verifiziert zu bekommmen.</p>
+
+<p>Stattdessen sollten Sie ihr Skript in einer seperaten Datei schreiben und mit<code> contentScriptFile</code> laden. Das macht ihren Code übersichtlicher und er ist einfacher zu Warten, sichern und debuggen.</p>
+</div>
+
+<p>Sie können auch mehrere Skripte in <code>contentScript oder contentScriptFile laden, indem Sie ein Array von Strings übergeben:</code></p>
+
+<pre class="brush: js">// main.js
+
+var tabs = require("sdk/tabs");
+
+tabs.on('ready', function(tab) {
+ tab.attach({
+ contentScript: ['document.body.style.border = "5px solid red";', 'window.alert("hi");']
+ });
+});
+</pre>
+
+<pre class="brush: js">// main.js
+
+var data = require("sdk/self").data;
+var pageMod = require("sdk/page-mod");
+
+pageMod.PageMod({
+ include: "*.mozilla.org",
+ contentScriptFile: [data.url("jquery.min.js"), data.url("my-content-script.js")]
+});</pre>
+
+<p>Wenn Sie das tuen, können die Skripte direkt miteinander kommunizieren, als wären es Skripte der gleichen Webseite.</p>
+
+<p>Sie können auch <code>contentScript und contentScriptFile zusammen benutzen.</code> Wenn Sie das tun, werden die Skripte, die sie in <code>contentScriptFile spezifizieren vor denen in contentScript geladen. Das ermöglicht es Ihnen javaScript Bibliotheken, wie JQuery über eine URL zu laden und dann ein simples Skript inline zu verwenden, dass diese Bibliothek benutzt:</code></p>
+
+<pre class="brush: js">// main.js
+
+var data = require("sdk/self").data;
+var pageMod = require("sdk/page-mod");
+
+var contentScriptString = '$("body").html("&lt;h1&gt;Page matches ruleset&lt;/h1&gt;");';
+
+pageMod.PageMod({
+ include: "*.mozilla.org",
+ contentScript: contentScriptString,
+ contentScriptFile: data.url("jquery.js")
+});</pre>
+
+<div class="warning">
+<p>Wenn ihr Content Skript nicht sehr simpel ist oder aus einem statischen String besteht, sollten Sie <code>contentScript</code>:  nicht benutzen. Wenn Sie es doch tun, könnten Sie Probleme haben Ihr Add.on auf AMO verifiziert zu bekommmen.</p>
+
+<p>Stattdessen sollten Sie ihr Skript in einer seperaten Datei schreiben und mit<code> contentScriptFile</code> laden. Das macht ihren Code übersichtlicher und er ist einfacher zu Warten, sichern und debuggen.</p>
+</div>
+
+<h3 id="Kontrollieren_wann_das_Skript_angehängt_werden_soll.">Kontrollieren, wann das Skript angehängt werden soll.</h3>
+
+<p>Die <code>contentScriptWhen</code> Option spezifiziert, wann das/die Content Skript/e geladen werden sollen. Diese brauch eine dieser Parameter:</p>
+
+<ul>
+ <li><code>"start"</code>: Läd das Skript sofort, nach dem das Dokumentelement der Seite in den DOM eingefügt wird. ZU diesem Zeitpunkt wurde der DOM Inhalt noch nicht geladen,, deshalb kann das Skript nicht damit interagieren.</li>
+ <li><code>"ready"</code>: Läd das Skript nachdem der DOM der Seite geladen wurde: Dies ist der Fall, wenn das <a href="https://developer.mozilla.org/de/Gecko-Specific_DOM_Events">DOMContentLoaded Event  </a>abgefeuert wird. Ab diesem Zeitpunkt können Content Skripts mit dem DOM interagieren, aber extern referenzierte Stylesheets und Bilder könnten noch nicht geladen sein.</li>
+ <li><code>"end"</code>: Läd das Skript nachdem der komplette Inhalt (DOM, JS, CSS, images) der Seute geladen wurde. Zu diesem Zeitpunkt wird das <a href="https://developer.mozilla.org/de/DOM/window.onload">window.onload event</a> abgefeuert.</li>
+</ul>
+
+<p>Der Standardwert ist <code>"end"</code>.</p>
+
+<p>Die Funktion <a href="/de/Add-ons/SDK/High-Level_APIs/tabs#attach(options)"><code>tab.attach()</code></a> akzepiert contentScriptWhen nicht, da es generell aufgerufen wird wenn die Seite geladen wurde.</p>
+
+<h3 id="Übergabe_von_Konfigurationsoptionen">Übergabe von Konfigurationsoptionen</h3>
+
+<p>Das <code>contentScriptOptions</code> Objekt ist ein JSON Objekt, das den Content Skripts als "read-only" Wert als <code><a href="/de/Add-ons/SDK/Guides/Content_Scripts/self">self</a>.options Eigenschaft</code> übergeben wird:</p>
+
+<pre class="brush: js">// main.js
+
+var tabs = require("sdk/tabs");
+
+tabs.on('ready', function(tab) {
+ tab.attach({
+ contentScript: 'window.alert(self.options.message);',
+ contentScriptOptions: {"message" : "hello world"}
+ });
+});</pre>
+
+<p>Jeder Wert (Objekt, Feld, String, etc), dass in JSON dargestellt werden kann, kann hier benutzt werden.</p>
+
+<h2 id="Zugriff_auf_den_DOM">Zugriff auf den DOM</h2>
+
+<p>Content Skripts können natürlich wie jedes andere Skript, dass die Seite geladen hat ( Page Skripts) auf den DOM zugreifen. Content Skripts und Page Skripts sind wie folgt von einander isoliert:</p>
+
+<ul>
+ <li>Content Skripts sehen keine JavaScript Objekte, die der Seite über Page Skripts hinzugefügt wurden.</li>
+ <li>Auch wenn ein Page Skript das Verhalten eines DOM Objekts verändert hat, sieht das Content Skript nur das Originalverhalten.</li>
+</ul>
+
+<p>Das gleiche gilt auch umgekehrt: Page Skripts sehen keine JavaScript Objekte, die von Content Skripts hinzugefügt wurden.</p>
+
+<p>Stellen Sie sich eine Seite vor, die zum Beispiel eine Variable <code>foo</code> über ein Page Skript zum <code>window</code> Objekt hinzufügt:</p>
+
+<pre class="brush: html">&lt;!DOCTYPE html"&gt;
+&lt;html&gt;
+ &lt;head&gt;
+ &lt;script&gt;
+ window.foo = "hello from page script"
+ &lt;/script&gt;
+ &lt;/head&gt;
+&lt;/html&gt;</pre>
+
+<p>Ein anderes Skript, dass nach diesem Skript in die Seite geladen wird, kann auf <code>foo </code>zugreifen. Ein Content Skript kann dies nicht:</p>
+
+<pre class="brush: js">// main.js
+
+var tabs = require("sdk/tabs");
+var mod = require("sdk/page-mod");
+var self = require("sdk/self");
+
+var pageUrl = self.data.url("page.html")
+
+var pageMod = mod.PageMod({
+ include: pageUrl,
+ contentScript: "console.log(window.foo);"
+})
+
+tabs.open(pageUrl);</pre>
+
+<pre>console.log: my-addon: null
+</pre>
+
+<p>Es gibt gute Gründe für diese Isolation. Erstens können Content Skripts so keine Objekte an Webseiten übermitteln und somit Sicherheitslücken schaffen. Zweitens können Content Skripts so Objekte erzeugen, ohne sich Sorgen machen zu müssen, dass diese mit Objekten kollidieren, die in Page Skripts erzeugt wurden.</p>
+
+<p>Die Isulation bedeutet, dass wenn zum Beispiel eine Webseite die JQuery Bibliothek läd, das Content Skript nicht in der Lage ist dieses zu sehen, aber eine eigene JQuery Bibliothek laden kann ohne das es ein Problem mit der Version gibt, die über das Page Skript hinzugefügt wurde.</p>
+
+<h3 id="Interaktion_mit_Page_Skripts">Interaktion mit Page Skripts</h3>
+
+<p>Normalerweise möchte man Content Skripts und Page Skripts voneinander isolieren. Wenn dies nicht der Fall ist, da Sie zum Beispiel Objekte zwischen beiden Skripten austauschen wollen, oder Nachrichten zwischen ihnen schicken wollen können Sie mehr zum Thema unter  <a href="https://developer.mozilla.org/de/Add-ons/SDK/Guides/Content_Scripts/Interacting_with_page_scripts">Interaktion mit Page Skripts</a> finden.</p>
+
+<h3 id="Event_Listeners">Event Listeners</h3>
+
+<p>Man kann in Content Skripts genau wie in einem Page Skript auf DOM Events warten. Es gibt nur zwei wichtige Unterschieden:</p>
+
+<p>Erstens: Falls Sie einen Event Listener als String an <a href="https://developer.mozilla.org/de/DOM/element.setAttribute"><code>setAttribute()</code></a> übergeben, wird der Listener im Seitenkontext ausgeführt und hat somit keinen Zugriff auf Variablen, die im Content Skript definiert wurden.</p>
+
+<p>Zum Beispiel, wird dieses Content Skript mit der Fehlermeldung "theMessage is not defined" ausgeben:</p>
+
+<pre class="brush: js">var theMessage = "Hello from content script!";
+anElement.setAttribute("onclick", "alert(theMessage);");</pre>
+
+<p>Zweitens: Falls Sie einen Event Listener per direkter Zuweisung einem <a href="/de/docs/Web/API/GlobalEventHandlers">globalen Event Handler</a>  wie <code>onclick zuweisen</code>, könnten Zuweisungen, die die Seite vornimmt überschrieben werden. Zur Veranschaulichung ist hier ein Add-on, das versucht einen click Handler per Zuweisung an window.onclick anzufügen:</p>
+
+<pre class="brush: js">var myScript = "window.onclick = function() {" +
+ " console.log('unsafewindow.onclick: ' + window.document.title);" +
+ "}";
+
+require("sdk/page-mod").PageMod({
+ include: "*",
+ contentScript: myScript,
+ contentScriptWhen: "start"
+});</pre>
+
+<p>Das wird auf den meisten Seiten funktionieren, bis auf denen, die ebenfalls ein onclick zuweisen:</p>
+
+<pre class="brush: html">&lt;html&gt;
+ &lt;head&gt;
+ &lt;/head&gt;
+ &lt;body&gt;
+ &lt;script&gt;
+ window.onclick = function() {
+ window.alert("it's my click now!");
+ }
+ &lt;/script&gt;
+ &lt;/body&gt;
+&lt;/html&gt;</pre>
+
+<p>Aus diesen Gründen ist es besser Event Listeners per <a href="https://developer.mozilla.org/de/DOM/element.addEventListener"><code>addEventListener()</code></a> hinzuzufügen. So definieren Sie einen Listener als Funktion:</p>
+
+<pre class="brush: js">var theMessage = "Hello from content script!";
+
+anElement.onclick = function() {
+ alert(theMessage);
+};
+
+anotherElement.addEventListener("click", function() {
+ alert(theMessage);
+});</pre>
+
+<h2 id="Kommunikation_mit_dem_Add-on">Kommunikation mit dem Add-on</h2>
+
+<p>Damit Add-On Sktipts und Content Skripts miteinander kommunizieren können, haben beide Seiten der Konversation Zugriff auf ein <code>port</code> Objekt.</p>
+
+<ul>
+ <li>Um eine Nachricht von einer Seite zur anderen zu schicken nutzen Sie <code>port.emit()</code></li>
+ <li>Um eine Nachricht von der anderen Seite zu empfangen nutzen <code>port.on()</code></li>
+</ul>
+
+<p><img alt="" src="https://mdn.mozillademos.org/files/7873/content-scripting-overview.png" style="display: block; margin-left: auto; margin-right: auto;">Nachrichten sind asyncron, was bedeutet, dass der Sender nicht wartet, bis er eine Antwort des Empfängers erhält, sondern die Nachricht schickt und das weiter arbeitet.</p>
+
+<p>Hier ist ein simples Beispieladd-on, das eine Nachricht an ein Content Skript per <code>port </code>schickt:</p>
+
+<pre class="brush: js">// main.js
+
+var tabs = require("sdk/tabs");
+var self = require("sdk/self");
+
+tabs.on("ready", function(tab) {
+ worker = tab.attach({
+ contentScriptFile: self.data.url("content-script.js")
+ });
+ worker.port.emit("alert", "Message from the add-on");
+});
+
+tabs.open("http://www.mozilla.org");</pre>
+
+<pre class="brush: js">// content-script.js
+
+self.port.on("alert", function(message) {
+ window.alert(message);
+});</pre>
+
+<div class="note">
+<p>Das context-menu Modul benutzt das Kommunikationsmodul, das hier beschrieben wird nicht. Um etwas über die Kommunikation mit geladenen Content Skripts im context-menu zu erfahren, schauen Sie in die <a href="/de/Add-ons/SDK/High-Level_APIs/context-menu">context-menu Dokumentation</a>.</p>
+</div>
+
+<h3 id="Zugriff_auf_port_im_Content_Skript">Zugriff auf port im Content Skript</h3>
+
+<p>Im Content Skript ist das port Objekt als Eigenschaft im globalen Objekt<a href="/de/Add-ons/SDK/Guides/Content_Scripts/self"><code> self</code></a> verfügbar. So versenden Sie eine Nachricht vom Content Skript:</p>
+
+<pre class="brush: js">self.port.emit("myContentScriptMessage", myContentScriptMessagePayload);</pre>
+
+<p>Um eine Nachricht vom Add-on Code zu bekommen:</p>
+
+<pre class="brush: js">self.port.on("myAddonMessage", function(myAddonMessagePayload) {
+ // Handle the message
+});</pre>
+
+<div class="note">
+<p><span>Das globale <a href="/de/Add-ons/SDK/Guides/Content_Scripts/self"><code>self</code></a> Objekt ist etwas komplett anderes als das <a href="https://developer.mozilla.org/de/Add-ons/SDK/High-Level_APIs/self">self Modul</a>, das einer API in einem Add-on die Möglichkeit bietet auf Daten und die ID des Add-ons zuzugreifen.</span></p>
+</div>
+
+<h3 id="Zugriff_auf_port_im_Add-on_Skript">Zugriff auf port im Add-on Skript</h3>
+
+<p>Im Add-on Code ist das Bindeglied zur Kommunikation zwischen Add-on und einem spezifischen Content Skript das  <a href="https://developer.mozilla.org/en-US/Add-ons/SDK/Low-Level_APIs/content_worker"><code>worker</code></a> Objekt. Das <code>port Objekt ist also eine Eigenschaft des</code>  <code>worker</code> Objekts.</p>
+
+<p>Der worker wird aber im Add-on Code nicht von allen Modulen gleich verwendet.</p>
+
+<h4 id="Vom_page-worker"><code>Vom page-worker</code></h4>
+
+<p><code>Das page-worker</code> Objekt integriert die worker API direkt. Um also eine Nachricht von einem Content Skript zu erhalten, das mit dem page-worker assoziiert wird benutzt man <code>pageWorker.port.on()</code>:</p>
+
+<pre class="brush: js">// main.js
+
+var pageWorkers = require("sdk/page-worker");
+var self = require("sdk/self");
+
+var pageWorker = require("sdk/page-worker").Page({
+  contentScriptFile: self.data.url("content-script.js"),
+  contentURL: "http://en.wikipedia.org/wiki/Internet"
+});
+
+pageWorker.port.on("first-para", function(firstPara) {
+  console.log(firstPara);
+});</pre>
+
+<p>Um eine benutzerdefinierte Nachricht vom Add-on zu schicken, nutz man <code>pageWorker.port.emit()</code>:</p>
+
+<pre class="brush: js">// main.js
+
+var pageWorkers = require("sdk/page-worker");
+var self = require("sdk/self");
+
+pageWorker = require("sdk/page-worker").Page({
+  contentScriptFile: self.data.url("content-script.js"),
+  contentURL: "http://en.wikipedia.org/wiki/Internet"
+});
+
+pageWorker.port.on("first-para", function(firstPara) {
+  console.log(firstPara);
+});
+
+pageWorker.port.emit("get-first-para");</pre>
+
+<pre class="brush: js">// content-script.js
+
+self.port.on("get-first-para", getFirstPara);
+
+function getFirstPara() {
+ var paras = document.getElementsByTagName("p");
+ if (paras.length &gt; 0) {
+ var firstPara = paras[0].textContent;
+ self.port.emit("first-para", firstPara);
+ }
+}</pre>
+
+<h4 id="Vom_page-mod"><code>Vom page-mod</code></h4>
+
+<p>Ein einziges  <code>page-mod</code> Objekt kann ein Skript an mehrere Seiten anhängen. Jede dieser Seiten hat ihren eigenen Context, in dem sie dieses Skript aufrufen. Daher benötigt es seperate Kanäle(worker) für jede Seite.</p>
+
+<p><code>page-mod</code> integriert also die worker API nicht direkt, sondern es wird jedes Mal wenn ein Content Skript an eine Seite angehängt wird das <code>attach</code> Event aufgerufen,  dessen listener einen worker für den Kontext übergeben bekommt. Durch das bereit stellen eines listeners bei attach kann man das port Objekt für das Content Skript, dass dieser Seite angefügt wurde über diesen page-mod verwenden:</p>
+
+<pre class="brush: js">// main.js
+
+var pageMods = require("sdk/page-mod");
+var self = require("sdk/self");
+
+var pageMod = pageMods.PageMod({
+  include: ['*'],
+  contentScriptFile: self.data.url("content-script.js"),
+  onAttach: startListening
+});
+
+function startListening(worker) {
+  worker.port.on('click', function(html) {
+    worker.port.emit('warning', 'Do not click this again');
+  });
+}</pre>
+
+<pre class="brush: js">// content-script.js
+
+window.addEventListener('click', function(event) {
+ self.port.emit('click', event.target.toString());
+ event.stopPropagation();
+ event.preventDefault();
+}, false);
+
+self.port.on('warning', function(message) {
+ window.alert(message);
+});
+</pre>
+
+<p>Im oben gezeigten Add-on gibt es zwei Nachrichten:</p>
+
+<ul>
+ <li><code>click</code> wird vom page-mod an das Add-on geschickt, wenn der Nutzer auf ein Element auf der Seite klickt</li>
+ <li><code>warning</code> schickt einen String zurück an den page-mod</li>
+</ul>
+
+<h4 id="Von_Tab.attach()"><code>Von Tab.attach()</code></h4>
+
+<p><code>Die Tab.attach()</code> methode liefert einen worker zurück, den man zur Kommunikation mit dem/den Content Skript/Content Skripts, die angehängt wurden, verwenden kann.</p>
+
+<p>Das Add-on fügt einen Button zu Firefox hinzu: Wenn der Benutzer den Button drückt, fügt das Add-on ein Content Skript an den aktuellen Tab an. Das Skript sendet eine Nachricht namens "my-addon-message" und wartet auf eine Antwort namens "my-script-response":</p>
+
+<pre class="brush: js">//main.js
+
+var tabs = require("sdk/tabs");
+var buttons = require("sdk/ui/button/action");
+var self = require("sdk/self");
+
+buttons.ActionButton({
+ id: "attach-script",
+ label: "Attach the script",
+ icon: "./icon-16.png",
+ onClick: attachScript
+});
+
+function attachScript() {
+ var worker = tabs.activeTab.attach({
+ contentScriptFile: self.data.url("content-script.js")
+ });
+ worker.port.on("my-script-response", function(response) {
+ console.log(response);
+ });
+ worker.port.emit("my-addon-message", "Message from the add-on");
+}
+</pre>
+
+<pre class="brush: js">// content-script.js
+
+self.port.on("my-addon-message", handleMessage);
+
+function handleMessage(message) {
+ alert(message);
+ self.port.emit("my-script-response", "Response from content script");
+}</pre>
+
+<h3 id="Die_port_API">Die port API</h3>
+
+<p>Schaue unter <a href="/de/Add-ons/SDK/Guides/Content_Scripts/port">der Referenzseite für das port Objekt</a>.</p>
+</article>
+
+<h3 id="Die_postMessage_API">Die postMessage API</h3>
+
+<p>bevor das port Objekt hinzugefügt wurde, kommunizierten Add-on Code und Content Skripts über eine andere API:</p>
+
+<ul>
+ <li>Das Content Skript rief <code>self.postMessage()</code> auf, um zu senden und <code>self.on() um zu empfangen.</code></li>
+ <li>Das Add-on Skript rief <code>worker.postMessage()</code> auf, um zu senden und  <code>worker.on()</code> um zu empfangen</li>
+</ul>
+
+<p>Die API ist immer noch verfügbar und <a href="/de/Add-ons/SDK/Guides/Content_Scripts/using_postMessage">dokumentiert</a>, aber es gibt keinen Grund sie statt der port API zu verwenden, die hier beschrieben wird. Die Ausnahme bildet das<a href="/de/Add-ons/SDK/High-Level_APIs/context-menu"> context-menu</a> Modul, welches immer noch postMessage verwendet.</p>
+
+<h3 id="Content_Skript_zu_Content_Skript">Content Skript zu Content Skript</h3>
+
+<p>Content Skripts können nur direkt miteinander kommunizieren, wenn diese im gleichen Kontext geladen wurden. Beispiel: Wenn ein einziger Aufruf von  <code>Tab.attach()</code>  zwei Content Skripts anhängt, können diese sich gegenseitig sehen. Wenn aber <code>Tab.attach() </code>zweimal aufgerufen wird, und die Content Skripts einzeln anhängt,können die Content Skripte nicht miteinander kommunizieren. Dann müssen die Nachrichten über die  port API über den Add-on code gesendet werden.</p>
+
+<h2 id="Cross-domain_Content_Skripts">Cross-domain Content Skripts</h2>
+
+<p>Grundsätzlich hat ein Content Skript keine cross-domain Privilegien. Sie können also keinen Inhalt eines iframes auslesen, wenn dieser Inhalt von einer anderen Domain stammt, oder XMLHttpRequests an eine andere Domain schicken.</p>
+
+<p>Um dieses Feature für spezielle Domains hinzuzufügen fügen Sie dem <a href="/de/Add-ons/SDK/Tools/package_json">package.json </a>ihres Add-ons den Schlüssel <code>"cross-domain-content" </code>unter dem <code>"permissions"</code> Schlüssel hinzu. Siehe dafür den Artikel  <a href="/de/Add-ons/SDK/Guides/Content_Scripts/Cross_Domain_Content_Scripts">cross-domain content scripts</a>.</p>
+</article>
diff --git a/files/de/mozilla/add-ons/sdk/guides/index.html b/files/de/mozilla/add-ons/sdk/guides/index.html
new file mode 100644
index 0000000000..fbb8311866
--- /dev/null
+++ b/files/de/mozilla/add-ons/sdk/guides/index.html
@@ -0,0 +1,154 @@
+---
+title: Leitfäden
+slug: Mozilla/Add-ons/SDK/Guides
+translation_of: Archive/Add-ons/Add-on_SDK/Guides
+---
+<p>Auf dieser Seite sind theoretische und detailliertere Artikel über das SDK auffindbar.</p>
+<hr>
+<h3 id="Für_Mitwirkende"><a name="contributors-guide">Für Mitwirkende</a></h3>
+<div class="column-container">
+ <div class="column-half">
+ <dl>
+ <dt>
+ <a href="Guides/Getting_Started">Erste Schritte</a></dt>
+ <dd>
+ Erfahre, wie du zu dem SDK beitragen kannst: den Quellcode erhalten, Bugs melden und beheben, Patches einreichen, Überprüfungen und Hilfe erhalten.</dd>
+ <dt>
+ <a href="Guides/Modules">Module</a></dt>
+ <dd>
+ Erfahre mehr über das vom SDK verwendete Modulsystem (basierend auf der CommonJS-Spezifikation), wie Sandboxes und Compartments zum Erhöhen der Sicherheit verwendet werden können, und über den im SDK enthaltenen Modul-Loader Cuddlefish.</dd>
+ <dt>
+ <a href="Guides/Classes_and_Inheritance">Klassen und Vererbung</a></dt>
+ <dd>
+ Erfahre, wie Klassen und Vererbungen in JavaScript implementiert werden können, unter Verwendung von Konstruktoren und Prototypen, und über die Helper-Funktion des SDKs zum Vereinfachen dieser Prozesse.</dd>
+ </dl>
+ </div>
+ <div class="column-half">
+ <dl>
+ <dt>
+ <a href="Guides/Private_Properties">Private Eigenschaften</a></dt>
+ <dd>
+ Erfahre, wie private Eigenschaften in JavaScript unter Verwendung von Prefixes, Closures und WeakMaps implementiert werden können und wie das SDK private Eigenschaften durch das Verwenden von Namespaces (eine Verallgemeinerung von WeakMaps) unterstützt.</dd>
+ <dt>
+ <a href="Guides/Content_Processes">Prozesse</a></dt>
+ <dd>
+ Das SDK wurde dafür entwickelt, in einer Umgebung zu arbeiten, in welcher Code zum Manipulieren von Web-Inhalten in unterschiedlichen Prozessen wie der Haupt-Code des Add-ons ausgeführt wird. Dieser Artikel erklärt die wichtigsten Vorteile dieses Konzepts.</dd>
+ </dl>
+ </div>
+</div>
+<hr>
+<h3 id="SDK-Infrastruktur"><a name="sdk-infrastructure">SDK-Infrastruktur</a></h3>
+<div class="column-container">
+ <div class="column-half">
+ <dl>
+ <dt>
+ <a href="Guides/Module_structure_of_the_SDK">Modulstruktur des SDKs</a></dt>
+ <dd>
+ Das SDK selbst sowie die dafür konzipierten Add-ons bestehen aus wiederverwendbaren JavaScript-Modulen. Dieser Artikel erklärt, worum es sich bei diesen Modulen handelt, wie sie geladen werden können und wie die Modul-Baumstruktur des SDKs aufgebaut ist.</dd>
+ <dt>
+ <a href="Guides/SDK_API_Lifecycle">SDK-API-Lebenszyklus</a></dt>
+ <dd>
+  Einführung in den Lebenszyklus der SDK-APIs, beinhaltet Stabilitätsbewertungen für APIs.</dd>
+ </dl>
+ </div>
+ <div class="column-half">
+ <dl>
+ <dt>
+ <a href="Guides/Program_ID">Programm-ID</a></dt>
+ <dd>
+ Die Programm-ID ist ein eindeutiger Bezeichner für ein Add-on. Dieser Leitfaden zeigt, wie sie erstellt wird, und wozu sie dient.</dd>
+ <dt>
+ <a href="Guides/Firefox_Compatibility">Firefox-Kompatibilität</a></dt>
+ <dd>
+ Lerne, mit welchen Firefox-versionen eine SDK-Version kompatibel ist und wie Kompatibilitätsprobleme behandelt werden können.</dd>
+ </dl>
+ </div>
+</div>
+<hr>
+<h3 id="SDK-Spracheigenschaften"><a name="sdk-idioms">SDK-Spracheigenschaften</a></h3>
+<div class="column-container">
+ <div class="column-half">
+ <dl>
+ <dt>
+ <a href="Guides/Working_with_Events">Arbeiten mit Events</a></dt>
+ <dd>
+ Erstelle Event-basierten Code mit Hilfe des SDK-Eventausgabe-Frameworks.</dd>
+ </dl>
+ </div>
+ <div class="column-half">
+ <dl>
+ <dt>
+ <a href="Guides/Two_Types_of_Scripts">Zwei Arten von Scripts</a></dt>
+ <dd>
+ Dieser Artikel erklärt die Unterschiede zwischen den vom Haupt-Code des Add-ons verwendbaren APIs und von denen, die von einem Content-Script verwendet werden können.</dd>
+ </dl>
+ </div>
+</div>
+<hr>
+<h3 id="Content-Scripts"><a name="content-scripts">Content-Scripts</a></h3>
+<div class="column-container">
+ <div class="column-half">
+ <dl>
+ <dt>
+ <a href="Guides/Content_Scripts">Einführung in Content-Scripts</a></dt>
+ <dd>
+ Eine Übersicht über Content-Scripts.</dd>
+ <dt>
+ <a href="Guides/Loading_content_scripts">Laden von Content-Scripts</a></dt>
+ <dd>
+ Laden von Content-Scripts in Webseiten, Einbindung entweder von Strings oder von eigenen Dateien und Festlegen des Ausführungszeitpunktes.</dd>
+ <dt>
+ <a href="Guides/Accessing_the_DOM">Auf das DOM zugreifen</a></dt>
+ <dd>
+ Informationen über den Zugriff von Content-Scripts auf das DOM (Document Object Model).</dd>
+ <dt>
+ <a href="Guides/Communicating_with_other_scripts">Kommunikation mit anderen Scripts</a></dt>
+ <dd>
+ Erfahre, wie ein Content-Script mit der <em>main.js</em>-Datei, mit anderen Content-Scripts und von der Webseite selbst geladenen Scripts kommunizieren kann.</dd>
+ </dl>
+ </div>
+ <div class="column-half">
+ <dl>
+ <dt>
+ <a href="Guides/using_port">Verwendung von "port"</a></dt>
+ <dd>
+ Kommunikation zwischen einem Content-Script und den anderen Bestandteilen des Add-ons über das <code>port</code>-Objekt.</dd>
+ <dt>
+ <a href="Guides/using_postMessage">Verwendung von "postMessage()"</a></dt>
+ <dd>
+ Kommunikation zwischen einem Content-Script und den anderen Bestandteilen des Add-ons über die <code>postMessage()</code>-API und ein Vergleich dieser Technik mit dem <code>port</code>-Objekt.</dd>
+ <dt>
+ <a href="Guides/Cross_domain_content_scripts">Domainübergreifende Content-Scripts</a></dt>
+ <dd>
+ Lerne, wie man Content-Scripts dazu befähigt, mit Inhalten von anderen Domains zu interagieren.</dd>
+ <dt>
+ <a href="Guides/Reddit_example">Reddit-Beispiel</a></dt>
+ <dd>
+ Ein einfaches Add-on mit Content-Scripts.</dd>
+ </dl>
+ </div>
+</div>
+<hr>
+<h3 id="XUL-Portierung"><a name="xul-migration">XUL-Portierung</a></h3>
+<div class="column-container">
+ <div class="column-half">
+ <dl>
+ <dt>
+ <a href="Guides/XUL_Migration_Guide">XUL Portierungsleitfaden</a></dt>
+ <dd>
+ Techniken zum Portieren eines XUL Add-ons auf das SDK.</dd>
+ <dt>
+ <a href="Guides/XUL_vs_SDK">XUL versus SDK</a></dt>
+ <dd>
+ Ein Vergleich der Stärken und Schwächen des SDK's mit denen der traditionellen XUL-basierten Add-ons.</dd>
+ </dl>
+ </div>
+ <div class="column-half">
+ <dl>
+ <dt>
+ <a href="Guides/Porting_the_Library_Detector">Portierungs-Beispiel</a></dt>
+ <dd>
+ Ein Walkthrough durch das Portieren eines relativ einfachen XUL-basierten Add-ons auf das SDK.</dd>
+ </dl>
+ </div>
+</div>
diff --git a/files/de/mozilla/add-ons/sdk/index.html b/files/de/mozilla/add-ons/sdk/index.html
new file mode 100644
index 0000000000..4a73b5fbeb
--- /dev/null
+++ b/files/de/mozilla/add-ons/sdk/index.html
@@ -0,0 +1,83 @@
+---
+title: Add-on SDK
+slug: Mozilla/Add-ons/SDK
+translation_of: Archive/Add-ons/Add-on_SDK
+---
+<p>Das Add-on SDK ermöglicht es, Add-ons für Firefox unter Verwendung der Standard-Webtechnologien zu entwickeln: JavaScript, HTML und CSS. Das SDK beinhaltet JavaScript APIs zum Erstellen, Ausführen, Testen und Packen von Add-ons.</p>
+
+<hr>
+<h3 id="Tutorials">Tutorials</h3>
+
+<div class="column-container">
+<div class="column-half">
+<dl>
+ <dt><a href="/de/docs/Mozilla/Add-ons/SDK/Tutorials#getting-started">Erste Schritte</a></dt>
+ <dd>Anleitungen zum <a href="/en-US/Add-ons/SDK/Tutorials/Installation">Installieren des SDKs</a> sowie zur Verwendung des <a href="/en-US/Add-ons/SDK/Tutorials/Getting_Started_With_cfx">cfx-Tools</a> zum Entwickeln, Testen und Packen von Add-ons.</dd>
+ <dt> </dt>
+ <dt><a href="/de/docs/Mozilla/Add-ons/SDK/Tutorials#interact-with-the-browser">Interagieren mit dem Browser</a></dt>
+ <dd><a href="/en-US/Add-ons/SDK/Tutorials/Open_a_Web_Page">Webseiten öffnen, auf das Laden von Webseiten reagieren und geöffnete Webseiten auflisten. </a></dd>
+ <dd>Das <a href="/en-US/Add-ons/SDK/Tutorials/Listen_For_Page_Load">Laden von Webseiten reagieren</a> und <a href="/en-US/Add-ons/SDK/Tutorials/List_Open_Tabs">geöffnete Webseiten auflisten</a>.</dd>
+ <dt><a href="/de/docs/Mozilla/Add-ons/SDK/Tutorials#development-techniques">Entwicklungstechnologien</a></dt>
+ <dd>Lerne Entwicklungstechnologien wie das <a href="/en-US/Add-ons/SDK/Tutorials/Unit_testing">Testen der Add-on-Elemente</a>, <a href="/en-US/Add-ons/SDK/Tutorials/Logging">Loggen</a>, <a href="/en-US/Add-ons/SDK/Tutorials/Creating_Reusable_Modules">Erstellen von wiederverwendbaren Modulen</a>, die <a href="/en-US/Add-ons/SDK/Tutorials/l10n">Lokalisierung</a> und das<a href="/en-US/Add-ons/SDK/Tutorials/Mobile_development"> Entwickeln für mobile Endgeräte</a> kennen.</dd>
+</dl>
+</div>
+
+<div class="column-half">
+<dl>
+ <dt><a href="/de/docs/Mozilla/Add-ons/SDK/Tutorials#create-user-interfaces">Benutzeroberflächen</a></dt>
+ <dd>Erstelle Benutzeroberflächenkomponenten wie <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">Kontextmenüs</a>, <a href="/en-US/Add-ons/SDK/Tutorials/Add_a_Menu_Item_to_Firefox">Menüeinträge</a> oder <a href="/en-US/Add-ons/SDK/Tutorials/Display_a_Popup">Dialoge</a>.</dd>
+ <dt><a href="/de/docs/Mozilla/Add-ons/SDK/Tutorials#modify-web-pages">Inhalte von Webseiten bearbeiten</a></dt>
+ <dd>Inhalte von Seiten <a href="/en-US/Add-ons/SDK/Tutorials/Modifying_Web_Pages_Based_on_URL">über ein spezifisches URL-Muster</a> oder dynamisch <a href="/en-US/Add-ons/SDK/Tutorials/Modifying_the_Page_Hosted_by_a_Tab">einen bestimmten Tab bearbeiten</a>.</dd>
+ <dt><a href="/en-US/Add-ons/SDK/Tutorials/Annotator">Zusammenfassung</a></dt>
+ <dd>Walk-through durch das Beispiel-Add-on "Annotator".</dd>
+</dl>
+</div>
+</div>
+
+<hr>
+<h3 id="Leitfäden">Leitfäden</h3>
+
+<div class="column-container">
+<div class="column-half">
+<dl>
+ <dt><a href="/en-US/Add-ons/SDK/Guides#contributors-guide">Zum SDK beitragen</a></dt>
+ <dd><a href="/en-US/Add-ons/SDK/Guides/Getting_Started">Trage zum SDK bei</a> und lerne die wichtigsten im SDK-Quelltext verwendeten Objekte wie <a href="/en-US/Add-ons/SDK/Guides/Modules">Module</a>, <a href="/en-US/Add-ons/SDK/Guides/Classes_and_Inheritance">Klassen und Vererbung</a>, <a href="/en-US/Add-ons/SDK/Guides/Private_Properties">private Eigenschaften</a> und <a href="/en-US/Add-ons/SDK/Guides/Content_Processes">Inhaltsabläufe</a> kennen.</dd>
+ <dt><a href="/en-US/Add-ons/SDK/Guides#sdk-infrastructure">SDK-Aufbau</a></dt>
+ <dd>Verstehe die Technologien, die dem SDK zugrunde liegen: <a href="/en-US/Add-ons/SDK/Guides/Module_structure_of_the_SDK">Modulstruktur</a>, <a href="/en-US/Add-ons/SDK/Guides/Program_ID">Programm-ID</a> und die Regeln, die die <a href="/en-US/Add-ons/SDK/Guides/Firefox_Compatibility">Firefox-Kompatibilität</a> definieren.</dd>
+ <dt><a href="/en-US/Add-ons/SDK/Guides/Content_Scripts">Content-Scripts</a></dt>
+ <dd>Eine detaillierte Anleitung zum <a href="/en-US/Add-ons/SDK/Guides/Content_Scripts">Arbeiten mit Content-Scripts</a>. Erklärt wird das <a href="/en-US/Add-ons/SDK/Guides/Loading_content_scripts">Laden von Content-Scripts</a>,<a href="/en-US/Add-ons/SDK/Guides/Accessing_the_DOM"> auf welche Objekte ein Content-Script zugreifen kann</a> und <a href="/en-US/Add-ons/SDK/Guides/Communicating_with_other_scripts">wie man zwischen einem Content-Script und dem Rest des Add-ons kommunizieren kann</a>.</dd>
+</dl>
+</div>
+
+<div class="column-half">
+<dl>
+ <dt><a href="/en-US/Add-ons/SDK/Guides#sdk-idioms">SDK-Spracheigenschaften</a></dt>
+ <dd>Das  <a href="/en-US/Add-ons/SDK/Guides/Working_with_Events">SDK-Event-Framework</a> und die <a href="/en-US/Add-ons/SDK/Guides/Two_Types_of_Scripts">Unterscheidung zwischen Add-on-Scripts und Content-Scripts</a>.</dd>
+ <dt><a href="/en-US/Add-ons/SDK/Guides/XUL_Migration_Guide">XUL-Migration</a></dt>
+ <dd>Anleitung zum <a href="/en-US/Add-ons/SDK/Guides/XUL_Migration_Guide">Portieren von XUL-Add-ons auf das SDK</a>. Diese Anleitung beinhaltet einen <a href="/en-US/Add-ons/SDK/Guides/XUL_vs_SDK">Vergleich der beiden Umgebungen</a> und ein <a href="/en-US/Add-ons/SDK/Guides/Porting_the_Library_Detector">Beispiel des Portierens eines XUL-Add-ons</a>.</dd>
+</dl>
+</div>
+</div>
+
+<hr>
+<h3 id="Referenzen">Referenzen</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>Dokumentation der High-Level-SDK-APIs.</dd>
+ <dt><a href="/en-US/Add-ons/SDK/Tools">Tools-Referenz</a></dt>
+ <dd>Dokumentation des <a href="/en-US/Add-ons/SDK/Tools/cfx">cfx-Tools</a> zum Entwickeln, Testen und Packen von Add-ons, der <a href="/en-US/Add-ons/SDK/Tools/console">Konsole</a>, die global zum Loggen verwendet wird und der <a href="/en-US/Add-ons/SDK/Tools/package_json">package.json-Datei</a>.</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>Dokumentation der Low-Level-SDK-APIs.</dd>
+</dl>
+</div>
+</div>
+
+<p> </p>
diff --git a/files/de/mozilla/add-ons/sdk/tools/index.html b/files/de/mozilla/add-ons/sdk/tools/index.html
new file mode 100644
index 0000000000..8c67b4644e
--- /dev/null
+++ b/files/de/mozilla/add-ons/sdk/tools/index.html
@@ -0,0 +1,14 @@
+---
+title: Tools
+slug: Mozilla/Add-ons/SDK/Tools
+tags:
+ - Add-on SDK
+ - CFX
+ - JPM
+ - NeedsTranslation
+ - TopicStub
+translation_of: Archive/Add-ons/Add-on_SDK/Tools
+---
+<p>Articles listed here provide a reference for the SDK's tools:</p>
+
+<p>{{ LandingPageListSubpages ("/en-US/Add-ons/SDK/Tools", 7) }}</p>
diff --git a/files/de/mozilla/add-ons/sdk/tools/jpm/index.html b/files/de/mozilla/add-ons/sdk/tools/jpm/index.html
new file mode 100644
index 0000000000..86e6a82aa3
--- /dev/null
+++ b/files/de/mozilla/add-ons/sdk/tools/jpm/index.html
@@ -0,0 +1,497 @@
+---
+title: jpm
+slug: Mozilla/Add-ons/SDK/Tools/jpm
+translation_of: Archive/Add-ons/Add-on_SDK/Tools/jpm
+---
+<div class="note">
+<p>Sie können <code>jpm</code> ab Firefox 38 verwenden.</p>
+
+<p>Dieser Artikel bezieht sich auf <code>jpm</code>.</p>
+</div>
+
+<p><span class="seoSummary">Der Node-basierte Ersatz für <code><a href="/de/Add-ons/SDK/Tools/cfx">cfx</a></code>, erlaubt das Testen, Starten und Paketieren von Add-Ons.</span></p>
+
+<p>Schauen Sie sich das <a href="/de/Add-ons/SDK/Tutorials/Getting_Started_%28jpm%29"><code>jpm</code>-Tutorial</a> als Einführung an.</p>
+
+<p><code>jpm</code> wird folgendermaßen verwendet:</p>
+
+<pre class="brush: bash">jpm [command] [options]
+</pre>
+
+<p><code>jpm</code> unterstützt die folgenden globalen Optionen:</p>
+
+<pre class="brush: bash">-h, --help - Zeigt eine Hilfsnachricht
+-V, --version - Anzeigen der JPM Versionsnummer
+</pre>
+
+<h2 id="Installation">Installation</h2>
+
+<p><code>jpm</code> wird über den Node Package Manager (<code><a class="external external-icon" href="https://www.npmjs.org/package/jpm">npm</a></code>) installiert. <code>npm</code> ist im Installer von Node.js enthalten, welchen Sie auf <a class="external external-icon" href="http://nodejs.org/">nodejs.org</a> finden.</p>
+
+<p>Nachdem Sie <code>npm</code> installiert haben, können Sie <code>jpm</code> wie jedes andere <code>npm</code>-Paket installieren:</p>
+
+<pre class="brush: bash">npm install jpm -g</pre>
+
+<p>Abhängig von ihren Einstellungen müssen Sie den Befehl möglicherweise mit Adminrechten ausführen:</p>
+
+<pre class="brush: bash">sudo npm install jpm -g</pre>
+
+<p>Tippen Sie folgendes in die Eingabeaufforderung:</p>
+
+<pre class="brush: bash">jpm</pre>
+
+<p>Es sollte sich eine Zusammenfassung der <code>jpm</code>-Kommandos öffnen. Im Gegensatz zu <code>cfx</code> ist <code>jpm</code> in jeder Eingabeaufforderung verwendbar, solange Sie es mit der Option <code>-g</code> installiert haben.</p>
+
+<h3 id="Probleme">Probleme?</h3>
+
+<p>Falls Sie die Zusammenfassung nicht verstehen, fragen Sie nach Hilfe. SDK-Nutzer und Teammitglieder des Projekts diskutieren über Probleme und Vorschläge in der  <a class="external external-icon" href="http://groups.google.com/group/mozilla-labs-jetpack/topics">Projekt- Mailingliste</a>. Andere könnten das selbe Problem wie Sie gehabt haben, also suchen Sie bitte zuerst im Listenarchiv. Sie können mit anderen SDK-Nutzern im Kanal <a class="external external-icon" href="http://mibbit.com/?channel=%23jetpack&amp;server=irc.mozilla.org">#jetpack</a> in <a class="external external-icon" href="http://irc.mozilla.org/">Mozillas IRC-Netzwerk</a> chatten.</p>
+
+<h2 id="Command_reference">Command reference</h2>
+
+<p>There are six jpm commands:</p>
+
+<table class="fullwidth-table standard-table">
+ <tbody>
+ <tr>
+ <td style="width: 20%;"><a href="/en-US/Add-ons/SDK/Tools/jpm#jpm_init"><code>jpm init</code></a></td>
+ <td>Create a skeleton add-on as a starting point for your own add-on.</td>
+ </tr>
+ <tr>
+ <td><a href="/en-US/Add-ons/SDK/Tools/jpm#jpm_run"><code>jpm run</code></a></td>
+ <td>Launch an instance of Firefox with your add-on installed.</td>
+ </tr>
+ <tr>
+ <td><a href="/en-US/Add-ons/SDK/Tools/jpm#jpm_test"><code>jpm test</code></a></td>
+ <td>Runs your add-on's unit tests.</td>
+ </tr>
+ <tr>
+ <td><a href="/en-US/Add-ons/SDK/Tools/jpm#jpm_xpi"><code>jpm xpi</code></a></td>
+ <td>Package your add-on as an <a href="https://developer.mozilla.org/en/XPI">XPI</a> file, which is the install file format for Firefox add-ons.</td>
+ </tr>
+ <tr>
+ <td><a href="/en-US/Add-ons/SDK/Tools/jpm#jpm_post"><code>jpm post</code></a></td>
+ <td>Package your add-on as an <a href="https://developer.mozilla.org/en/XPI">XPI</a> file, then post it to some url.</td>
+ </tr>
+ <tr>
+ <td><a href="/en-US/Add-ons/SDK/Tools/jpm#jpm_watchpost"><code>jpm watchpost</code></a></td>
+ <td>Package your add-on as an <a href="https://developer.mozilla.org/en/XPI">XPI</a> file whenever there is a file changed, and post that to some url.</td>
+ </tr>
+ </tbody>
+</table>
+
+<h3 id="jpm_init">jpm init</h3>
+
+<p>This command initializes a new add-on from scratch.</p>
+
+<p>Create a new directory, change into it, and run <code>jpm init</code>.</p>
+
+<pre class="brush: bash">mkdir my-addon
+cd my-addon
+jpm init</pre>
+
+<p>You'll then be asked to supply some information about your add-on: this will be used to create your add-on's <a href="https://developer.mozilla.org/en-US/Add-ons/SDK/Tools/package_json">package.json</a> file.</p>
+
+<ul>
+ <li><a href="https://developer.mozilla.org/en-US/Add-ons/SDK/Tools/package_json#title">title</a></li>
+ <li><a href="https://developer.mozilla.org/en-US/Add-ons/SDK/Tools/package_json#name">name</a>: this defaults to the name of the directory in which you are running <code>jpm init</code>. Unless an <a href="https://developer.mozilla.org/en-US/Add-ons/SDK/Tools/package_json#id"><code>id</code></a> field is present in package.json, jpm will prepend "@" to <code>name</code> and use the result as the <a href="https://developer.mozilla.org/en-US/Add-ons/Install_Manifests#id"><code>id</code> field in the add-on's install manifest</a>.</li>
+ <li><a href="https://developer.mozilla.org/en-US/Add-ons/SDK/Tools/package_json#version">version</a></li>
+ <li><a href="https://developer.mozilla.org/en-US/Add-ons/SDK/Tools/package_json#description">description</a></li>
+ <li><a href="https://developer.mozilla.org/en-US/Add-ons/SDK/Tools/package_json#main">entry point</a> (which maps to "main" in package.json)</li>
+ <li><a href="https://developer.mozilla.org/en-US/Add-ons/SDK/Tools/package_json#author">author</a></li>
+ <li><a href="https://developer.mozilla.org/en-US/Add-ons/SDK/Tools/package_json#engines">engines</a> (supported applications)</li>
+ <li><a href="https://developer.mozilla.org/en-US/Add-ons/SDK/Tools/package_json#license">license</a></li>
+</ul>
+
+<p>Most of these fields have a default, which is shown in brackets after the question. If you just press Enter, your add-on will get the default value.</p>
+
+<p>Once you've supplied a value or accepted the default for these properties, you'll be shown the complete contents of "package.json" and asked to accept it.</p>
+
+<p>Then jpm will create an skeleton add-on, as a starting point for your own add-on development, with the following file structure:</p>
+
+<ul class="directory-tree">
+ <li>my-addon
+ <ul>
+ <li>index.js</li>
+ <li>package.json</li>
+ <li>test
+ <ul>
+ <li>test-index.js</li>
+ </ul>
+ </li>
+ </ul>
+ </li>
+</ul>
+
+<h3 id="jpm_run">jpm run</h3>
+
+<p>This command runs a new instance of Firefox with the add-on installed:</p>
+
+<pre class="brush: bash">jpm run</pre>
+
+<p><code>jpm run</code> accepts the following options:</p>
+
+<table class="fullwidth-table standard-table">
+ <tbody>
+ <tr>
+ <td style="width: 30%;"><code>-b --binary BINARY</code></td>
+ <td>
+ <p>Use the version of Firefox specified in BINARY. BINARY may be specified as a full path or as a path relative to the current directory.</p>
+
+ <pre class="brush: bash">
+jpm run -b /path/to/Firefox/Nightly</pre>
+ See <a href="/en-US/Add-ons/SDK/Tools/jpm#Selecting_a_browser_version">Selecting a browser version</a>.</td>
+ </tr>
+ <tr>
+ <td><code>--binary-args CMDARGS</code></td>
+ <td>
+ <p>Pass <a href="/en-US/docs/Mozilla/Command_Line_Options">extra arguments</a> to Firefox.</p>
+
+ <p>For example, to pass the <code>-jsconsole</code> argument to Firefox, which will launch the <a href="/en-US/docs/Tools/Browser_Console">Browser Console</a>, try the following:</p>
+
+ <pre class="brush: bash">
+jpm run --binary-args -jsconsole</pre>
+
+ <p>To pass multiple arguments, or arguments containing spaces, quote them:</p>
+
+ <pre class="brush: bash">
+jpm run --binary-args '-url mzl.la -jsconsole'</pre>
+ </td>
+ </tr>
+ <tr>
+ <td><code>--debug</code></td>
+ <td>Run the <a href="/en-US/Add-ons/Add-on_Debugger">add-on debugger</a> attached to the add-on.</td>
+ </tr>
+ <tr>
+ <td><code>-o --overload PATH</code></td>
+ <td>
+ <p>Rather than use the SDK modules built into Firefox, use the modules found at PATH. If <code>-o</code> is specified and PATH is omitted, jpm will look for the JETPACK_ROOT environment variable and use its value as the path.</p>
+
+ <p>See <a href="/en-US/Add-ons/SDK/Tools/jpm#Overloading_the_built-in_modules">Overloading the built-in modules</a> for more information.</p>
+ </td>
+ </tr>
+ <tr>
+ <td><code>-p --profile=<code> PROFILE</code></code></td>
+ <td>
+ <p>By default, jpm uses a clean temporary Firefox <a href="http://support.mozilla.com/en-US/kb/profiles">profile</a> each time you call jpm run. Use the <code>--profile</code> option to instruct jpm to launch Firefox with an existing profile.</p>
+
+ <p>The PROFILE value may be a profile name or the path to the profile.</p>
+
+ <p>See <a href="/en-US/Add-ons/SDK/Tools/jpm#Using_profiles">Using profiles</a> for more information.</p>
+ </td>
+ </tr>
+ <tr>
+ <td><code>-v --verbose</code></td>
+ <td>Verbose operation.</td>
+ </tr>
+ <tr>
+ <td><code>--no-copy</code></td>
+ <td>
+ <div class="warning">Use with caution because <code>jpm run|test</code> changes many preferences, never use with your main profile.</div>
+
+ <div class="note">This only applies when <code>--profile</code> is used.</div>
+ Disables the copying of the profile used, which allows one to reuse a profile.</td>
+ <td> </td>
+ </tr>
+ </tbody>
+</table>
+
+<h3 id="jpm_test">jpm test</h3>
+
+<p>Use this command to run an add-on's unit tests. It will:</p>
+
+<ul>
+ <li>look for a directory called "test" under the add-on's root</li>
+ <li>open every file in there whose name starts with "test-" (note the hyphen after "test" in the filename. <code>jpm test</code> will include a file called "test-myCode.js", but will exclude files called "test_myCode.js" or "testMyCode.js")</li>
+ <li>call every function exported from that file whose name starts with "test"</li>
+</ul>
+
+<pre class="brush: bash">jpm test
+</pre>
+
+<p>See the <a href="https://developer.mozilla.org/en-US/Add-ons/SDK/Tutorials/Unit_testing">tutorial on unit testing</a> and the <a href="https://developer.mozilla.org/en-US/Add-ons/SDK/Low-Level_APIs/test_assert">reference documentation for the <code>assert</code> module</a> for more details on this.</p>
+
+<p><code>jpm test</code> accepts the following options:</p>
+
+<table class="fullwidth-table standard-table">
+ <tbody>
+ <tr>
+ <td><code>-b --binary BINARY</code></td>
+ <td>
+ <p>Use the version of Firefox specified in BINARY. BINARY may be specified as a full path or as a path relative to the current directory.</p>
+
+ <pre class="brush: bash">
+jpm test -b /path/to/Firefox/Nightly</pre>
+
+ <p>See <a href="/en-US/Add-ons/SDK/Tools/jpm#Selecting_a_browser_version">Selecting a browser version</a>.</p>
+ </td>
+ </tr>
+ <tr>
+ <td><code>--binary-args CMDARGS</code></td>
+ <td>
+ <p>Pass <a href="http://kb.mozillazine.org/Command_line_arguments">extra arguments</a> to Firefox.</p>
+
+ <p>For example, to pass the <code>-jsconsole</code> argument to Firefox, which will launch the <a href="/en-US/docs/Tools/Browser_Console">Browser Console</a>, try the following:</p>
+
+ <pre class="brush: bash">
+jpm test --binary-args -jsconsole</pre>
+
+ <p>To pass multiple arguments, or arguments containing spaces, quote them:</p>
+
+ <pre class="brush: bash">
+jpm test --binary-args '-url mzl.la -jsconsole'</pre>
+ </td>
+ </tr>
+ <tr>
+ <td><code>--debug</code></td>
+ <td>Run the <a href="/en-US/Add-ons/Add-on_Debugger">add-on debugger</a> attached to the add-on.</td>
+ </tr>
+ <tr>
+ <td style="width: 30%;"><code>-f --filter FILE[:TEST]</code></td>
+ <td>
+ <p>Only run tests whose filenames match FILE and optionally match TEST, both regexps.</p>
+
+ <pre class="brush: bash">
+jpm test --filter base64:btoa</pre>
+
+ <p>The above command only runs tests in files whose names contain "base64", and in those files only runs tests whose names contain "btoa".</p>
+ </td>
+ </tr>
+ <tr>
+ <td style="width: 30%;"><code>-o --overload PATH</code></td>
+ <td>
+ <p>Rather than use the SDK modules built into Firefox, use the modules found at PATH. If <code>-o</code> is specified and PATH is omitted, jpm will look for the JETPACK_ROOT environment variable and use its value as the path.</p>
+
+ <p>See <a href="/en-US/Add-ons/SDK/Tools/jpm#Overloading_the_built-in_modules">Overloading the built-in modules</a> for more information.</p>
+ </td>
+ </tr>
+ <tr>
+ <td style="width: 30%;"><code>-p --profile<code> PROFILE</code></code></td>
+ <td>
+ <p>By default, jpm uses a clean temporary Firefox <a href="http://support.mozilla.com/en-US/kb/profiles">profile</a> each time you call jpm run. Use the <code>--profile</code> option to instruct jpm to launch Firefox with an existing profile.</p>
+
+ <p>The PROFILE value may be a profile name or the path to the profile.</p>
+
+ <p>See <a href="/en-US/Add-ons/SDK/Tools/jpm#Using_profiles">Using profiles</a> for more information.</p>
+ </td>
+ </tr>
+ <tr>
+ <td><code>--stop-on-error</code></td>
+ <td>
+ <p>By default jpm test keeps running tests even after tests fail. Specify <code>--stop-on-error</code> to stop running tests after the first failure:</p>
+
+ <pre class="brush: bash">
+jpm test --stop-on-error</pre>
+ </td>
+ </tr>
+ <tr>
+ <td><code>--tbpl</code></td>
+ <td>Print test output in <a href="https://treeherder.mozilla.org/">Treeherder</a> format</td>
+ </tr>
+ <tr>
+ <td><code>--times NUMBER</code></td>
+ <td>
+ <p>Run tests NUMBER of times:</p>
+
+ <pre class="brush: bash">
+jpm test --times 2</pre>
+ </td>
+ </tr>
+ <tr>
+ <td><code>-v --verbose</code></td>
+ <td>Verbose operation.</td>
+ </tr>
+ <tr>
+ <td><code>--no-copy</code></td>
+ <td>
+ <div class="warning">Use with caution because <code>jpm run|test</code> changes many preferences, never use with your main profile.</div>
+
+ <div class="note">This only applies when <code>--profile</code> is used.</div>
+ Disables the copying of the profile used, which allows one to reuse a profile.</td>
+ </tr>
+ </tbody>
+</table>
+
+<h3 id="jpm_xpi">jpm xpi</h3>
+
+<p>This command packages the add-on as an <a href="https://developer.mozilla.org/en/XPI">XPI</a> file, which is the install file format for Mozilla add-ons.</p>
+
+<pre class="brush: bash">jpm xpi</pre>
+
+<p>It looks for a file called <code>package.json</code> in the current directory and creates the corresponding XPI file. It ignores any ZIPs or XPIs in the add-on's root, and any test files.</p>
+
+<p>Once you have built an XPI file you can distribute your add-on by submitting it to <a href="http://addons.mozilla.org">addons.mozilla.org</a>.</p>
+
+<p><code>jpm xpi</code> accepts the following option:</p>
+
+<table class="fullwidth-table standard-table">
+ <tbody>
+ <tr>
+ <td><code>-v --verbose</code></td>
+ <td>
+ <p>Verbose operation:</p>
+
+ <pre class="brush: bash">
+jpm xpi -v</pre>
+ </td>
+ </tr>
+ </tbody>
+</table>
+
+<h3 id="jpm_post">jpm post</h3>
+
+<p>This command packages the add-on as an <a href="https://developer.mozilla.org/en/XPI">XPI</a> file, the posts it to some url.</p>
+
+<pre class="brush: bash">jpm post</pre>
+
+<p>It looks for a file called <code>package.json</code> in the current directory and creates a XPI file with which to post to the <code>--post-url</code>.</p>
+
+<p><code>jpm post</code> accepts the following options:</p>
+
+<table class="fullwidth-table standard-table">
+ <tbody>
+ <tr>
+ <td><code>--post-url URL</code></td>
+ <td>
+ <p>The url to post the extension to after creating a XPI.</p>
+
+ <pre class="brush: bash">
+jpm post --post-url http://localhost:8888/</pre>
+
+ <p>See <a href="https://www.npmjs.com/package/jpm#using-post-and-watchpost">Using Post and Watchpost</a> for more information.</p>
+ </td>
+ </tr>
+ <tr>
+ <td><code>-v --verbose</code></td>
+ <td>
+ <p>Verbose operation:</p>
+
+ <pre class="brush: bash">
+jpm post --post-url http://localhost:8888/ -v</pre>
+ </td>
+ </tr>
+ </tbody>
+</table>
+
+<h3 id="jpm_watchpost">jpm watchpost</h3>
+
+<p>This command packages the add-on as an <a href="https://developer.mozilla.org/en/XPI">XPI</a> file, the posts it to some url whenever a file in the current working directory changes.</p>
+
+<pre class="brush: bash">jpm watchpost</pre>
+
+<p>Creates a XPI whenever a file in the current working directory changes and posts that to the <code>--post-url</code>.</p>
+
+<p><code>jpm watchpost</code> accepts the following options:</p>
+
+<table class="fullwidth-table standard-table">
+ <tbody>
+ <tr>
+ <td><code>--post-url URL</code></td>
+ <td>
+ <p>The url to post the extension to after creating a XPI.</p>
+
+ <pre class="brush: bash">
+jpm watchpost --post-url http://localhost:8888/</pre>
+
+ <p>See <a href="https://www.npmjs.com/package/jpm#using-post-and-watchpost">Using Post and Watchpost</a> for more information.</p>
+ </td>
+ </tr>
+ <tr>
+ <td><code>-v --verbose</code></td>
+ <td>
+ <p>Verbose operation:</p>
+
+ <pre class="brush: bash">
+jpm watchpost --post-url http://localhost:8888/ -v</pre>
+ </td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Techniques">Techniques</h2>
+
+<h3 id="Selecting_a_browser_version">Selecting a browser version</h3>
+
+<p>By default, <code>jpm run</code> and <code>jpm test</code> will run the release version of Firefox. You can instruct jpm to use a different version in one of two ways:</p>
+
+<ul>
+ <li>
+ <p>you can use the <code>-b</code> or <code>--binary</code> option to instruct jpm to run a different version of Firefox. You can supply a path to a specific binary:</p>
+
+ <pre class="brush: bash">jpm run -b /path/to/Firefox/Nightly</pre>
+
+ <p>As a shorthand for this, you can pass "nightly", "aurora", "beta", or "firefox" and jpm will look in the default location for these Firefox versions:</p>
+
+ <pre class="brush: bash">jpm run -b nightly</pre>
+ </li>
+ <li>
+ <p>you can set the <code>JPM_FIREFOX_BINARY</code> environment variable with the path to the version of Firefox you want to run. When you invoke <code>jpm run</code> or <code>jpm test</code> without the <code>-b</code> option, jpm will first check  <code>JPM_FIREFOX_BINARY</code>, and use this as the path if it is set.</p>
+ </li>
+</ul>
+
+<h3 id="Using_.jpmignore_to_ignore_files">Using <code>.jpmignore</code> to ignore files</h3>
+
+<p>Using <code>.jpmignore</code> is similar to using <code>.gitignore</code> with <code>git</code>, <code>.hgignore</code> with Mercurial, or <code>.npmignore</code> with <code>npm</code>. By using this file you can let <code>jpm</code> know which files you would like it to ignore when building a <code>.xpi</code> file with <code>jpm xpi</code>.</p>
+
+<p>Here is an example:</p>
+
+<pre class="brush: bash"># Ignore .DS_Store files created by mac
+.DS_Store
+
+# Ignore any zip or xpi files
+*.zip
+*.xpi
+</pre>
+
+<p>A <code>.jpmignore</code> file with the above contents would ignore all zip files and <code>.DS_Store</code> files from the xpi generated by <code>jpm xpi</code>.</p>
+
+<h3 id="Using_profiles_2"><a name="Using_profiles">Using profiles</a></h3>
+
+<p>By default, <code>jpm run</code> uses a new profile each time it is executed. This means that any profile-specific data entered from one run of <code>jpm</code> will not, by default, be available in the next run.</p>
+
+<p>This includes, for example, any extra add-ons you installed, or your history, or any data stored using the <a href="/en-US/Add-ons/SDK/High-Level_APIs/simple-storage">simple-storage</a> API.</p>
+
+<p>To make <code>jpm</code> use a specific profile, pass the <code>--profile</code> option, specifying the name of the profile you wish to use, or the path to the profile.</p>
+
+<pre class="brush: bash">jpm run --profile boogaloo
+</pre>
+
+<pre class="brush: bash">jpm run --profile path/to/boogaloo</pre>
+
+<p>If you supply <code>--profile</code> but its argument is not the name of or path to an existing profile, jpm will open the <a href="https://support.mozilla.org/en-US/kb/profile-manager-create-and-remove-firefox-profiles">profile manager</a>,  enabling you to select and existing profile or create a new one:</p>
+
+<pre class="brush: bash">jpm run --profile i-dont-exist</pre>
+
+<h3 id="Developing_without_browser_restarts">Developing without browser restarts</h3>
+
+<p>Because <code>jpm run</code> restarts the browser each time you invoke it, it can be a little cumbersome if you are making very frequent changes to an add-on. An alternative development model is to use the <a href="https://addons.mozilla.org/en-US/firefox/addon/autoinstaller/" rel="noreferrer">Extension Auto-Installer</a> add-on: this listens for new XPI files on a specified port and installs them automatically. That way you can test new changes without needing to restart the browser:</p>
+
+<ul>
+ <li>make a change to your add-on</li>
+ <li>run <code>jpm post --post-url http://localhost:8888/</code>, to make a xpi and post it.</li>
+</ul>
+
+<p>You could even automate this workflow with a simple script. For example:</p>
+
+<pre class="brush: bash">jpm watchpost --post-url http://localhost:8888/
+</pre>
+
+<p>Note that the logging level defined for the console is different when you use this method, compared to the logging level used when an add-on is run using <code>jpm run</code>. This means that if you want to see output from <a href="/en-US/Add-ons/SDK/Tutorials/Logging" rel="noreferrer"><code>console.log()</code></a> messages, you'll have to tweak a setting. See the documentation on <a href="/en-US/Add-ons/SDK/Tools/console#Logging_Levels" rel="noreferrer">logging levels</a> for the details on this.</p>
+
+<h3 id="Overloading_the_built-in_modules">Overloading the built-in modules</h3>
+
+<p>The SDK modules you use to implement your add-on are built into Firefox. When you run or package an add-on using <code>jpm run</code> or <code>jpm xpi</code>, the add-on will use the versions of the modules in the version of Firefox that hosts it.</p>
+
+<p>As an add-on developer, this is usually what you want. But if you're developing the SDK modules themselves, of course, it isn't. In this case you need to:</p>
+
+<ul>
+ <li>get a local copy of the SDK modules that you want: this usually means checking out the SDK from its <a href="https://github.com/mozilla/addon-sdk" rel="noreferrer">GitHub repo</a></li>
+ <li>set the <code>JETPACK_ROOT</code> environment variable to your local copy</li>
+ <li>pass the <code>-o</code> option to <code>jpm run</code> or <code>jpm xpi</code>:</li>
+</ul>
+
+<pre>jpm run -o
+</pre>
+
+<p>This instructs jpm to use the local copies of the SDK modules, not the ones in Firefox. If you don't want to set the <code>JETPACK_ROOT</code> environment variable, you can pass the location of your copy of the SDK modules along with <code>-o</code>:</p>
+
+<pre>jpm run -o "/path/to/SDK/"</pre>
diff --git a/files/de/mozilla/add-ons/sdk/tutorials/adding_a_button_to_the_toolbar/index.html b/files/de/mozilla/add-ons/sdk/tutorials/adding_a_button_to_the_toolbar/index.html
new file mode 100644
index 0000000000..c5f41a2baf
--- /dev/null
+++ b/files/de/mozilla/add-ons/sdk/tutorials/adding_a_button_to_the_toolbar/index.html
@@ -0,0 +1,100 @@
+---
+title: Einen Button zur Toolbar hinzufügen
+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">
+ Für dieses Tutorial wird die erfolgreiche <a href="/en-US/Add-ons/SDK/Tutorials/Installation">Installation des SDK</a> und erlernte <a href="/en-US/Add-ons/SDK/Tutorials/Getting_Started_With_cfx">Vorkenntnisse von <code>cfx</code></a> vorrausgesetzt.</div>
+<div class="warning">
+ <p>Dieses Widget wird ab Firefox 29 nicht mehr verwendet/funktionieren. Um Buttons in Firefox 29 (+) hinzuzufügen, benutze bitte die <a href="/en-US/Add-ons/SDK/High-Level_APIs/ui">UI Module</a>, besonders die <a href="/en-US/Add-ons/SDK/Low-Level_APIs/ui_button_action">Action-Buttons</a> oder <a href="/en-US/Add-ons/SDK/Low-Level_APIs/ui_button_toggle">Toogle-Buttons</a> APIs.</p>
+</div>
+<p>Um einen Button zur Toolbar hinzuzufügen, verwende das <a href="/en-US/Add-ons/SDK/High-Level_APIs/widget"><code>widget</code></a>-Module.</p>
+<p>Erstelle ein neues Verzeichnis, navigiere mit der Eingabeaufforderung in dieses Verzeichnis, und gib <code>cfx init</code> ein. Dann öffne die Datei "main.js" im "lib"-Verzeichnis und gib folgenden Code ein:</p>
+<pre class="brush: js">var widgets = require("sdk/widget");
+var tabs = require("sdk/tabs");
+
+var widget = widgets.Widget({
+ id: "mozilla-link",
+ label: "Mozilla website",
+ contentURL: "http://www.mozilla.org/favicon.ico",
+ onClick: function() {
+ tabs.open("http://www.mozilla.org/");
+ }
+});</pre>
+<p>Das Widget wird wird zur AddOn-Leiste (unten am Fensterrand) hinzugefügt:</p>
+<p><img alt="" src="https://mdn.mozillademos.org/files/6697/widget-mozilla.png" style="width: 464px; height: 184px; display: block; margin-left: auto; margin-right: auto;">Du kannst leider nicht die Standart-Position des Icons ändern, aber der User kann den Standort jederzeit verändern. Das <code>id</code>-Attribut ist zwingend erforderlich. Es speichert die Position des Icons und sollte nicht verändert weren, da sonst wieder der Standart wiederhergestellt wird.</p>
+<p>Beim Aktivieren wird dieser Link geöffnet: <a href="http://www.mozilla.org">http://www.mozilla.org</a>.</p>
+<div style="">
+  </div>
+<h2 id="Das_Icon_angeben_(URL)">Das Icon angeben (URL)</h2>
+<p>Wenn Du dieses Widget verwendest, kannst Du das Icon via <code>contentURL</code>: anzeigen. Das kann eine lokale, aber auch eine externe Datei sein. Allerdings lässt es sich nicht empfehlen Icons im Internet zu verwenden, da bei einem Serverausfall die Grafik nicht geladen werden kann. Das Beispiel verwendet eine Grafik namens "my-icon.png" aus dem AddOn-Verzeichnis (data):</p>
+<div>
+ <pre class="brush: js" id="highlighter_533558" style="width: auto;">var widgets = require("sdk/widget");
+var tabs = require("sdk/tabs");
+var self = require("sdk/self");
+
+var widget = widgets.Widget({
+ id: "mozilla-link",
+ label: "Mozilla website",
+ contentURL: self.data.url("my-icon.png"),
+ onClick: function() {
+ tabs.open("http://www.mozilla.org/");
+ }
+});</pre>
+</div>
+<p><code><font face="Open Sans, sans-serif"><span style="line-height: 21px;">Du kannst das Icon immer mit </span></font>contentURL</code> ändern!</p>
+<h2 id="Responding_To_the_User">Responding To the User</h2>
+<p>You can listen for <code>click</code>, <code>mouseover</code>, and <code>mouseout</code> events by passing handler functions as the corresponding constructor options. The widget example above assigns a listener to the <code>click</code> event using the <code>onClick</code> option, and there are similar <code>onMouseover</code> and <code>onMouseout</code> options.</p>
+<p>To handle user interaction in more detail, you can attach a content script to the widget. Your add-on script and the content script can't directly access each other's variables or call each other's functions, but they can send each other messages.</p>
+<p>Here's an example. The widget's built-in <code>onClick</code> property does not distinguish between left and right mouse clicks, so to do this we need to use a content script. The script looks like this:</p>
+<pre class="brush: js">window.addEventListener('click', function(event) {
+ if(event.button == 0 &amp;&amp; event.shiftKey == false)
+ self.port.emit('left-click');
+ if(event.button == 2 || (event.button == 0 &amp;&amp; event.shiftKey == true))
+ self.port.emit('right-click');
+ event.preventDefault();
+}, true);</pre>
+<p>It uses the standard DOM <code>addEventListener()</code> function to listen for click events, and handles them by sending the corresponding message to the main add-on code. Note that the messages "left-click" and "right-click" are not defined in the widget API itself, they're custom events defined by the add-on author.</p>
+<p>Save this script in your <code>data</code> directory as "click-listener.js".</p>
+<p>Next, modify <code>main.js</code> to:</p>
+<ul>
+ <li>pass in the script by setting the <code>contentScriptFile</code> property</li>
+ <li>listen for the new events:</li>
+</ul>
+<pre class="brush: js">var widgets = require("sdk/widget");
+var tabs = require("sdk/tabs");
+var self = require("sdk/self");
+
+var widget = widgets.Widget({
+ id: "mozilla-link",
+ label: "Mozilla website",
+ contentURL: "http://www.mozilla.org/favicon.ico",
+ contentScriptFile: self.data.url("click-listener.js")
+});
+widget.port.on("left-click", function(){
+ console.log("left-click");
+});
+widget.port.on("right-click", function(){
+ console.log("right-click");
+});</pre>
+<p>Now execute <code>cfx run</code> again, and try right- and left-clicking on the button. You should see the corresponding string written to the command shell.</p>
+<h2 id="Attaching_a_Panel">Attaching a Panel</h2>
+
+<p><img alt="" class="image-right" src="https://mdn.mozillademos.org/files/6527/widget-panel-clock.png" style="display: block; margin-left: auto; margin-right: auto;"></p>
+<p>If you supply a <a href="/en-US/Add-ons/SDK/High-Level_APIs/panel"><code>panel</code></a> object to the widget's constructor, then the panel will be shown when the user clicks the widget:</p>
+<pre class="brush: js">var data = require("sdk/self").data;
+var clockPanel = require("sdk/panel").Panel({
+ width:215,
+ height:160,
+ contentURL: data.url("clock.html")
+});
+require("sdk/widget").Widget({
+ id: "open-clock-btn",
+ label: "Clock",
+ contentURL: data.url("History.png"),
+ panel: clockPanel
+});</pre>
+<p>To learn more about working with panels, see the tutorial on <a href="/en-US/Add-ons/SDK/Display_a_Popup">displaying a popup</a>.</p>
+<h2 id="Learning_More">Learning More</h2>
+<p>To learn more about the widget module, see its <a href="/en-US/Add-ons/SDK/High-Level_APIs/widget">API reference documentation</a>.</p>
+<p>To learn more about content scripts, see the <a href="/en-US/Add-ons/SDK/Guides/Content_Scripts">content scripts guide</a>.</p>
diff --git a/files/de/mozilla/add-ons/sdk/tutorials/getting_started/index.html b/files/de/mozilla/add-ons/sdk/tutorials/getting_started/index.html
new file mode 100644
index 0000000000..dbafb57553
--- /dev/null
+++ b/files/de/mozilla/add-ons/sdk/tutorials/getting_started/index.html
@@ -0,0 +1,214 @@
+---
+title: Getting started
+slug: Mozilla/Add-ons/SDK/Tutorials/Getting_started
+translation_of: Mozilla/Add-ons/SDK/Tutorials/Getting_Started_%28jpm%29
+---
+<p>This tutorial walks through creating a simple add-on using the SDK.</p>
+
+<h2 id="Prerequisites">Prerequisites</h2>
+
+<p>To create add-ons for Firefox using the SDK, you'll first need to follow the instructions to <a href="/en-US/Add-ons/SDK/Tutorials/Installation" rel="noreferrer">install and activate the SDK</a>. Once you've done that, you'll be looking at a command prompt.</p>
+
+<h2 id="Initializing_an_empty_add-on">Initializing an empty add-on</h2>
+
+<p>In the command prompt, create a new directory. The directory doesn't have to be under the SDK root: you can create it anywhere you like. Navigate to it, type <code>cfx init</code>, and hit enter:</p>
+
+<pre>mkdir my-addon
+cd my-addon
+cfx init
+</pre>
+
+<p>You'll see some output like this:</p>
+
+<pre>* lib directory created
+* data directory created
+* test directory created
+* doc directory created
+* README.md written
+* package.json written
+* test/test-main.js written
+* lib/main.js written
+* doc/main.md written
+Your sample add-on is now ready for testing:
+try "cfx test" and then "cfx run". Have fun!"
+</pre>
+
+<h2 id="Implementing_the_add-on">Implementing the add-on</h2>
+
+<p>Now you can write the add-on's code, which goes in the "main.js" file in your "lib" directory. This file was created for you in the previous step. Open it and add the following code:</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>Save the file.</p>
+
+<p>Next, save these three icon files to the "data" directory:</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>Back at the command prompt, type:</p>
+
+<pre>cfx run
+</pre>
+
+<p>This is the SDK command to run a new instance of Firefox with your add-on installed. When Firefox launches, in the top-right corner of the browser you'll see an icon with the Firefox logo. Click the icon, and a new tab will open with <a href="https://www.mozilla.org/" rel="noreferrer">https://www.mozilla.org/</a> loaded into it.</p>
+
+<div class="note">
+<p>You might see an error message like this when you type cfx run:</p>
+
+<pre class="bz_comment_text" id="comment_text_0">A given cfx option has an inappropriate value:
+ ZIP does not support timestamps before 1980</pre>
+
+<p>If so, you've run into <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1005412">bug 1005412</a>, meaning that the icon files you downloaded are given a timestamp of 1970. Until this bug is fixed, the workaround is to use the <a href="http://www.linfo.org/touch.html"><code>touch</code></a> command to update the timestamps:</p>
+
+<pre>touch icon-16.png</pre>
+</div>
+
+<p>That's all this add-on does. It uses two SDK modules: the <a href="/en-US/Add-ons/SDK/Low-Level_APIs/ui_button_action">action button</a> module, which enables you to add buttons to the browser, and the <a href="/en-US/Add-ons/SDK/High-Level_APIs/tabs" rel="noreferrer">tabs</a> module, which enables you to perform basic operations with tabs. In this case, we've created a button whose icon is the Firefox icon, and added a click handler that loads the Mozilla home page in a new tab.</p>
+
+<p><img alt="" src="https://mdn.mozillademos.org/files/7643/mozilla-button.png" style="width: 382px; height: 221px; display: block; margin-left: auto; margin-right: auto;">Try editing this file. For example, we could change the page that gets loaded:</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://developer.mozilla.org/");
+}</pre>
+
+<p>At the command prompt, execute <code>cfx run</code> again. This time clicking it takes you to <a href="https://developer.mozilla.org/">https://developer.mozilla.org/</a>.</p>
+
+<h2 id="Packaging_the_add-on">Packaging the add-on</h2>
+
+<p>When you've finished the add-on and are ready to distribute it, you'll need to package it as an XPI file. This is the installable file format for Firefox add-ons. You can distribute XPI files yourself or publish them to <a href="https://addons.mozilla.org" rel="noreferrer">https://addons.mozilla.org</a> so other users can download and install them.</p>
+
+<p>To build an XPI, just execute the command <code>cfx xpi</code> from the add-on's directory:</p>
+
+<pre>cfx xpi
+</pre>
+
+<p>You should see a message like:</p>
+
+<pre>Exporting extension to my-addon.xpi.
+</pre>
+
+<p>To test that this worked, try installing the XPI file in your own Firefox installation. You can do this by pressing the Ctrl+O key combination (Cmd+O on Mac) from within Firefox, or selecting the "Open" item from Firefox's "File" menu. This will bring up a file selection dialog; navigate to the "my-addon.xpi" file, open it and follow the prompts to install the add-on.</p>
+
+<h2 id="Summary">Summary</h2>
+
+<p>In this tutorial we've built and packaged an add-on using three commands:</p>
+
+<ul>
+ <li><code>cfx init</code> to initialize an empty add-on template</li>
+ <li><code>cfx run</code> to run a new instance of Firefox with the add-on installed, so we can try it out</li>
+ <li><code>cfx xpi</code> to package the add-on into an XPI file for distribution</li>
+</ul>
+
+<p>These are the three main commands you'll use when developing SDK add-ons. There's comprehensive <a href="/en-US/Add-ons/SDK/Tools/cfx" rel="noreferrer">reference documentation</a> covering all the commands you can use and all the options they take.</p>
+
+<p>The add-on code itself uses two SDK modules, <a href="/en-US/Add-ons/SDK/Low-Level_APIs/ui_button_action">action button</a> and <a href="/en-US/Add-ons/SDK/High-Level_APIs/tabs" rel="noreferrer">tabs</a>. There's reference documentation for all the <a href="/en-US/Add-ons/SDK/High-Level_APIs" rel="noreferrer">high-level</a> and <a href="/en-US/Add-ons/SDK/Low-Level_APIs" rel="noreferrer">low-level</a> APIs in the SDK.</p>
+
+<h2 id="What's_next">What's next?</h2>
+
+<p>To get a feel for some of the things you can do with the SDK APIs, try working through some of the <a href="/en-US/Add-ons/SDK/Tutorials" rel="noreferrer">tutorials</a>.</p>
+
+<h2 id="Advanced_techniques">Advanced techniques</h2>
+
+<h3 id="Overriding_the_built-in_modules">Overriding the built-in modules</h3>
+
+<p>The SDK modules you use to implement your add-on are built into Firefox. When you run or package an add-on using <code>cfx run</code> or <code>cfx xpi</code>, the add-on will use the versions of the modules in the version of Firefox that hosts it.</p>
+
+<p>As an add-on developer, this is usually what you want. But if you're developing the SDK modules themselves, of course, it isn't. In this case it's assumed that you have checked out the SDK from its <a href="https://github.com/mozilla/addon-sdk" rel="noreferrer">GitHub repo</a> and will have run the <a href="/en-US/Add-ons/SDK/Tutorials/Installation" rel="noreferrer">bin/activate</a> script from the root of your checkout.</p>
+
+<p>Then when you invoke <code>cfx run</code> or <code>cfx xpi</code>, you pass the "-o" option:</p>
+
+<pre>cfx run -o
+</pre>
+
+<p>This instructs cfx to use the local copies of the SDK modules, not the ones in Firefox.</p>
+
+<h3 id="Developing_without_cfx_run">Developing without cfx run</h3>
+
+<p>Because <code>cfx run</code> restarts the browser each time you invoke it, it can be a little cumbersome if you are making frequent changes to an add-on. An alternative development model is to use the <a href="https://addons.mozilla.org/en-US/firefox/addon/autoinstaller/" rel="noreferrer">Extension Auto-Installer</a> add-on: this listens for new XPI files on a specified port and installs them automatically. That way you can test new changes without needing to restart the browser:</p>
+
+<ul>
+ <li>make a change to your add-on</li>
+ <li>run cfx xpi</li>
+ <li>post the add-on to the port specified</li>
+</ul>
+
+<p>You could even automate this workflow with a simple script. For example:</p>
+
+<pre>while true ; do cfx xpi ; wget --post-file=codesy.xpi http://localhost:8888/ ; sleep 5 ; done
+</pre>
+
+<p>Note that the logging level defined for the console is different when you use this method, compared to the logging level used when an add-on is run using <code>cfx run</code>. This means that if you want to see output from <a href="/en-US/Add-ons/SDK/Tutorials/Logging" rel="noreferrer"><code>console.log()</code></a> messages, you'll have to tweak a setting. See the documentation on <a href="/en-US/Add-ons/SDK/Tools/console#Logging_Levels" rel="noreferrer">logging levels</a> for the details on this.</p>
+
+<p>Another example using <a href="http://gruntjs.com/">grunt</a> and <a href="https://www.npmjs.com/package/grunt-shell">grunt-shell</a>:</p>
+
+<pre class="brush: js">module.exports = function(grunt) {
+ 'use strict';
+ require('matchdep').filterDev('grunt-!(cli)').forEach(grunt.loadNpmTasks);
+ grunt.initConfig({
+ shell: {
+ xpi: {
+ command: [
+ 'cd pluginpath',
+ 'cfx xpi',
+ 'wget --post-file=pluginname.xpi http://localhost:8888/ || echo&gt;/dev/null'
+ ].join('&amp;&amp;')
+ }
+ },
+ watch: {
+ xpi: {
+ files: ['pluginpath/**'],
+ tasks: ['shell:xpi']
+ }
+ }
+ });
+
+ grunt.loadNpmTasks('grunt-contrib-watch');
+ grunt.loadNpmTasks('grunt-shell');
+ grunt.registerTask('default', ['watch']);
+};</pre>
diff --git a/files/de/mozilla/add-ons/sdk/tutorials/index.html b/files/de/mozilla/add-ons/sdk/tutorials/index.html
new file mode 100644
index 0000000000..6eb7e95b49
--- /dev/null
+++ b/files/de/mozilla/add-ons/sdk/tutorials/index.html
@@ -0,0 +1,165 @@
+---
+title: Tutorials
+slug: Mozilla/Add-ons/SDK/Tutorials
+translation_of: Archive/Add-ons/Add-on_SDK/Tutorials
+---
+<p>Auf dieser Seite wird gezeigt, wie man spezifische praktische Aufgaben unter Verwendung des SDKs bewältigen kann.</p>
+<hr>
+<h3 id="Erste_Schritte"><a name="getting-started">Erste Schritte</a></h3>
+<div class="column-container">
+ <div class="column-half">
+ <dl>
+ <dt>
+ <a href="/en-US/Add-ons/SDK/Tutorials/Installation">Installation</a></dt>
+ <dd>
+ Download, Installation und Einrichtung des SDKs unter Windows, OS X und Linux.</dd>
+ </dl>
+ <dl>
+ <dt>
+ <a href="/en-US/Add-ons/SDK/Tutorials/Troubleshooting">Fehlerbehebung</a></dt>
+ <dd>
+ Lösungsansätze zum Beheben klassischer Probleme und Möglichkeiten zum Erhalten weiterer Hilfe.</dd>
+ </dl>
+ </div>
+ <div class="column-half">
+ <dl>
+ <dt>
+ <a href="/en-US/Add-ons/SDK/Tutorials/Getting_started_with_cfx">Erste Schritte mit cfx</a></dt>
+ <dd>
+ Die elementaren cfx-Befehle zum Erstellen von Add-ons.</dd>
+ </dl>
+ </div>
+</div>
+<hr>
+<h3 id="Benutzeroberflächen_erstellen"><a name="create-user-interfaces">Benutzeroberflächen erstellen</a></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 hinzufügen</a></dt>
+ <dd>
+ Einen Button zur Firefox-Toolbar hinzufügen.</dd>
+ <dt>
+ <a href="/en-US/Add-ons/SDK/Tutorials/Add_a_Menu_Item_to_Firefox">Hauptmenü erweitern</a></dt>
+ <dd>
+ Items den Hauptmenüs von Firefox hinzufügen.</dd>
+ </dl>
+ </div>
+ <div class="column-half">
+ <dl>
+ <dt>
+ <a href="/en-US/Add-ons/SDK/Tutorials/Display_a_Popup">Popups anzeigen</a></dt>
+ <dd>
+ Einen Popup-Dialog unter Verwendung von HTML und JavaScript anzeigen.</dd>
+ <dt>
+ <a href="/en-US/Add-ons/SDK/Tutorials/Add_a_Context_Menu_Item">Kontextmenü erweitern</a></dt>
+ <dd>
+ Items dem Kontextmenü von Firefox hinzufügen.</dd>
+ </dl>
+ </div>
+</div>
+<hr>
+<h3 id="Interagieren_mit_dem_Browser"><a name="interact-with-the-browser">Interagieren mit dem Browser</a></h3>
+<div class="column-container">
+ <div class="column-half">
+ <dl>
+ <dt>
+ <a href="/en-US/Add-ons/SDK/Tutorials/Open_a_Web_Page">Webseiten öffnen</a></dt>
+ <dd>
+ Mit Hilfe des tabs-Moduls eine Seite in einem neuen Tab oder einem neuen Fenster öffnen und auf deren Inhalt zugreifen.</dd>
+ <dt>
+ <a href="/en-US/Add-ons/SDK/Tutorials/Listen_for_Page_Load">Auf das Laden von Webseiten reagieren</a></dt>
+ <dd>
+ Mit dem tabs-Modul erkennen, wenn neue Webseiten geladen werden und auf deren Inhalte zugreifen.</dd>
+ </dl>
+ </div>
+ <div class="column-half">
+ <dl>
+ <dt>
+ <a href="/en-US/Add-ons/SDK/Tutorials/List_Open_Tabs">Geöffnete Tabs auflisten </a></dt>
+ <dd>
+ Mit dem tabs-Modul geöffnete Tabs auflisten und auf ihre Inhalte zugreifen.</dd>
+ </dl>
+ </div>
+</div>
+<hr>
+<h3 id="Inhalte_von_Webseiten_bearbeiten"><a name="modify-web-pages">Inhalte von Webseiten bearbeiten</a></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">Webseiten basierend auf deren URL bearbeiten</a></dt>
+ <dd>
+ URL-Filter für Webseiten erstellen und ein Script darin ausführen, sobald eine Seite geladen wird, deren URL mit einer URL im Filter übereinstimmt.</dd>
+ </dl>
+ </div>
+ <div class="column-half">
+ <dl>
+ <dt>
+ <a href="/en-US/Add-ons/SDK/Tutorials/Modifying_the_Page_Hosted_by_a_Tab">Aktive Webseite bearbeiten</a></dt>
+ <dd>
+ Ein Script dynamisch in der aktuell aktiven Website ausführen.</dd>
+ </dl>
+ </div>
+</div>
+<hr>
+<h3 id="Entwicklungstechnologien"><a name="development-techniques">Entwicklungstechnologien</a></h3>
+<div class="column-container">
+ <div class="column-half">
+ <dl>
+ <dt>
+ <a href="/en-US/Add-ons/SDK/Tutorials/Logging">Loggen</a></dt>
+ <dd>
+ Nachrichten auf der Konsole für Diagnosezwecke ausgeben.</dd>
+ <dt>
+ <a href="/en-US/Add-ons/SDK/Tutorials/Creating_reusable_modules">Wiederverwendbare Module erstellen</a></dt>
+ <dd>
+ Gliedere dein Add-on in einzelne Module und erleichtere somit das Entwickeln, Debuggen und Erhalten des Add-ons. Erstelle wiederverwendbare Pakete, die deine Module enthalten, damit auch andere Add-on-Entwickler diese verwenden können.</dd>
+ <dt>
+ <a href="/en-US/Add-ons/SDK/Tutorials/Unit_testing">Testen der Bestandteile</a></dt>
+ <dd>
+ Erstellen und Ausführen von Tests mit dem SDK-test-Framework.</dd>
+ <dt>
+ <a href="/en-US/Add-ons/SDK/Tutorials/Chrome_authority">Chrome-Autorität</a></dt>
+ <dd>
+ Erhalte Zugriff auf das Components-Objekt und erlaube deinem Add-on XPCOM-Objekte zu laden und zu verwenden.</dd>
+ <dt>
+ <a href="/en-US/Add-ons/SDK/Tutorials/Creating_event_targets">Erstellen von benutzerdefinierten Events</a></dt>
+ <dd>
+ Erlaube deinen erstellten Objekten, eigene Events auszugeben.</dd>
+ </dl>
+ </div>
+ <div class="column-half">
+ <dl>
+ <dt>
+ <a href="/en-US/Add-ons/SDK/Tutorials/Listening_for_load_and_unload">Auf das Starten und Beenden des Add-ons reagieren</a></dt>
+ <dd>
+ Werde benachrichtigt, wenn ein Add-on von Firefox gestartet oder beendet wird und übergebe Argumente an das Add-on über die Kommandozeile.</dd>
+ <dt>
+ <a href="/en-US/Add-ons/SDK/Tutorials/Add_a_Menu_Item_to_Firefox">Module von Drittanbietern verwenden</a></dt>
+ <dd>
+ Installation und Verwendung von zusätzlichen Modulen, die nicht im SDK enthalten sind.</dd>
+ <dt>
+ <a href="/en-US/Add-ons/SDK/Tutorials/l10n">Lokalisierung</a></dt>
+ <dd>
+ Entwicklung lokalisierbarer Add-ons.</dd>
+ <dt>
+ <a href="/en-US/Add-ons/SDK/Tutorials/Mobile_development">Entwicklung für mobile Endgeräte</a></dt>
+ <dd>
+ Entwicklung von Add-ons für Firefox Mobile für Android.</dd>
+ </dl>
+ </div>
+</div>
+<hr>
+<h3 id="Zusammenfassung"><a name="putting-it-together">Zusammenfassung</a></h3>
+<div class="column-container">
+ <div class="column-half">
+ <dl>
+ <dt>
+ <a href="/en-US/Add-ons/SDK/Tutorials/Annotator">Add-on "Annotator"</a></dt>
+ <dd>
+ Walk-through durch das Beispiel-Add-on "Annotator".</dd>
+ </dl>
+ </div>
+</div>
+<p> </p>
diff --git a/files/de/mozilla/add-ons/sdk/tutorials/installation/index.html b/files/de/mozilla/add-ons/sdk/tutorials/installation/index.html
new file mode 100644
index 0000000000..28e899226e
--- /dev/null
+++ b/files/de/mozilla/add-ons/sdk/tutorials/installation/index.html
@@ -0,0 +1,134 @@
+---
+title: Installation
+slug: Mozilla/Add-ons/SDK/Tutorials/Installation
+translation_of: Mozilla/Add-ons/SDK/Tools/jpm#Installation
+---
+<div class="warning">
+<p><strong><code>Die </code></strong><strong><code>cfx</code> Installation ist veraltet. Sie sollten stattdessen  <a href="https://developer.mozilla.org/en-US/Add-ons/SDK/Tools/jpm">jpm</a> benutzen.</strong></p>
+
+<p>Mehr Informationen finden Sie unter <a href="https://blog.mozilla.org/addons/2015/02/26/jpm-replaces-cfx-for-firefox-38/">JPM replaces CFX for Firefox 38</a>.</p>
+</div>
+
+<h2 id="Vorraussetzungen">Vorraussetzungen</h2>
+
+<p>Um mit dem Add-on SDK zu entwickeln, brauchen Sie:</p>
+
+<ul>
+ <li><a href="http://www.python.org/">Python</a> 2.5, 2.6 or 2.7. Achtung, die Versionen 3.x von Python werden auf keinen Plattformen unterstützt. Python sollte in ihrem Pfad enthalten sein.</li>
+ <li>Firefox.</li>
+ <li>Die SDK: Sie können die letzte Version der SDK als <a href="https://ftp.mozilla.org/pub/mozilla.org/labs/jetpack/jetpack-sdk-latest.tar.gz">tarball</a> oder als <a href="https://ftp.mozilla.org/pub/mozilla.org/labs/jetpack/jetpack-sdk-latest.zip">zip file</a>, oder die neuste Entwicklungsversion im <a href="https://github.com/mozilla/addon-sdk">GitHub repository</a> herunterladen. Wenn Sie sich für die letzte Ebtwicklungsversion entscheiden, müssen die diese mit einer Nightly Version von Firefox verwenden.</li>
+</ul>
+
+<h2 id="Installation">Installation</h2>
+
+<h3 id="Installation_auf_FreeBSD_OS_X_Linux">Installation auf FreeBSD/ OS X / Linux</h3>
+
+<p>Entpacken Sie die Dateien an einen beliebigen Ort und navigieren Sie mit einer Kommandozeile/Shell in das Stammverzeichnis der SDK. Zum Beispiel so:</p>
+
+<pre>tar -xf addon-sdk.tar.gz
+cd addon-sdk
+</pre>
+
+<p>Danach aktivieren Sie so die SDK, wenn Sie ein Bash Benutzer sind (was die meisten sind):</p>
+
+<pre>source bin/activate
+</pre>
+
+<p>Als nicht-Bash Benutzer, müssen Sie folgenden Befehl verwenden:</p>
+
+<pre>bash bin/activate
+</pre>
+
+<p>In Ihrer Eingabeaufforderung sollten Sie jetzt einen neuen Prefix haben, der den Namen des SDK's root Verzeichniss hat:</p>
+
+<pre>(addon-sdk)~/mozilla/addon-sdk &gt;
+</pre>
+
+<h3 id="Installation_auf_Mac_mit_Homebrew">Installation auf Mac mit Homebrew</h3>
+
+<p>Falls Sie ein Mac Benutzer sind, können Sie die SDK auch mithilfe von <a href="http://brew.sh/">Homebrew</a> und dem folgenden Befehl installieren:</p>
+
+<pre>brew install mozilla-addon-sdk</pre>
+
+<p>Sobald die Installation erfolgreich abgeschlossen wurde, können Sie das cfx Programm jederzeit in der Kommandozeile verwenden und benötigen keine vorherige Aktivierung.</p>
+
+<h3 id="Installation_auf_Windows">Installation auf Windows</h3>
+
+<p>Entpacken Sie die Dateien an einen beliebigen Ort und navigieren Sie mit einer Kommandozeile/Shell in das Stammverzeichnis der SDK. Zum Beispiel so:</p>
+
+<pre>7z.exe x addon-sdk.zip
+cd addon-sdk
+</pre>
+
+<p>Dann führen Sie folgenden Befehl aus:</p>
+
+<pre>bin\activate
+</pre>
+
+<p>In Ihrer Eingabeaufforderung sollten Sie jetzt einen neuen Prefix haben, der den Namen des SDK's root Verzeichniss hat:</p>
+
+<pre>(C:\Users\mozilla\sdk\addon-sdk) C:\Users\Work\sdk\addon-sdk&gt;
+</pre>
+
+<h2 id="Plausibilitätsprüfung"><span class="st">Plausibilitätsprüfung</span></h2>
+
+<p>Rufen Sie diesen Befehl in einer Kommandozeile auf:</p>
+
+<pre>cfx
+</pre>
+
+<p>Es sollte eine Meldung produzieren, die in etwa so aussieht, gefolgt von einer Auflistung der Benutzungsoptionen:</p>
+
+<pre>Usage: cfx [options] [command]
+</pre>
+
+<p>Das ist das <a href="/en-US/Add-ons/SDK/Tools/cfx"><code>cfx</code> Kommandozeilen Programm</a>. Es ist ihr primäres Interface für das Add-on SDK. Damit können Sie Firefox starten und ihr Add-on testen, ihr Add-on zur Veröffentlichung verpacken, sich Dokumentationen ansehen und Unit tests durchführen.</p>
+
+<h2 id="Nächste_Schritte">Nächste Schritte</h2>
+
+<p>Schauen Sie sich als nächstes das Tutorial  <a href="/en-US/Add-ons/SDK/Tutorials/Getting_Started_With_cfx">Getting Started With cfx</a> an, das erklärt, wie man ein Add-on mit dem CFX Tool erstellt.</p>
+
+<h2 id="Fortgeschrittene_Themen">Fortgeschrittene Themen</h2>
+
+<h3 id="Das_SDK_von_Git_verwenden">Das SDK von Git verwenden</h3>
+
+<p>Die SDK wurde in GitHub entwickelt. Statt das verpackte Release zu verwenden, können Sie von <a class="external external-icon" href="https://github.com/mozilla/addon-sdk">GitHub repository </a>den letzten Entwicklungsstand, statt dem offiziellen Release verwenden.</p>
+
+<p>Wenn Sie den letzten Entwicklungsstand verwenden, benötigen Sie eine Nightly Version von Firefox und Sie können keine Add-ons bei <a class="external external-icon" href="https://addons.mozilla.org/">addons.mozilla.org</a> (AMO) einreichen, da AMP den offiziellen Release vorraussetzt.</p>
+
+<h4 id="Erweiterungen_für_AMO_von_Git_Quellen_entwickeln">Erweiterungen für AMO von Git Quellen entwickeln</h4>
+
+<p>Zum Einreichein bei <a href="https://addons.mozilla.org/">AMO</a> können nur der neuste git release tag für die Add-On SDK Quelldateien benutzt werden.</p>
+
+<p>Der Gitarchivbefehl wird benötigt um ein Paar  Git Atrributplatzhalter im Git Klonverzeichnis zu erweitern.</p>
+
+<p>git checkout 1.16</p>
+
+<p>git archive 1.16 python-lib/cuddlefish/_version.py | tar -xvf -</p>
+
+<h3 id="Permanente_Aktivierung"><code>Permanente Aktivierung</code></h3>
+
+<p>Sie können die Aktivierung permanent machen, in dem Sie die Variablen in ihrer Umgebung permanent setzen, so dass jede Eingabeaufforderung sie lesen kann. In diesem Fall müssen nicht jedesmal den activate Befehl verwenden, sobald Sie eine neue Eingabeaufforderung öffnen.</p>
+
+<p>Da sich die Anzahl der zu setzenden Variable mit jeder neuen Version des SDK ändern kann, ist es am Besten sich nach den jeweiligen Aktivierungsskripten zu richten um Festzustellen welche Variablen verwendet werden. Die Aktivierung benutzt verschieden Skripte für Bashumgebungen (Linux und OS X) und Windowsumgebungen.</p>
+
+<h4 id="Windows">Windows</h4>
+
+<p>Bei Windows, <code>benutzt bin\activate</code> die <code>activate.bat</code> Datei. Sie können die Aktivierung permanent machen, indem Sie in der Kommandozeile das setx tool verwenden.</p>
+
+<h4 id="Linux_OS_X">Linux / OS X</h4>
+
+<p>Auf Linux und OS X<code> benutz source bin/activate</code> das <code>activate</code> bash Skript. Die Aktivierung kann per <code>~/.bashrc</code> (Linux) oder <code>~/.bashprofile</code> (OS X) Permanent gemacht werden.</p>
+
+<p>Eine Alternative ist das Erstellen eines symbolischen Links im Ordner <code>~/bin, </code>der auf das cfx Programm verweist:</p>
+
+<pre>ln -s PATH_TO_SDK/bin/cfx ~/bin/cfx
+</pre>
+
+<p>Falls Sie Homebrew zur Installation des SDKs verwenden, werden die Umgebungsvariablen bereits permanent für Sie gesetzt.</p>
+
+<h2 id="activate">activate</h2>
+
+<p>Der activate Befehl setzt Umgebungsvariablen, die zur Nutzung der SDK nötig sind. Er setzt die Variablen nur für die aktuelle Kommandozeile. Das heisst, wenn Sie eine neue Kommandozeile öffnen, müssen Sie den Befehl erneut ausführen, bevor Sie die SDK wieder benutzen können.</p>
+
+<p>Das bedeutet, dass Sie mehrere Kopien der SDK an verschiedenen Orten ihrer Festplatte haben können und zwischen diesen wechseln können, oder sogar gleichzeitig in verschiedenen Eingabeaufforderungen aktiviert haben können.</p>
diff --git a/files/de/mozilla/add-ons/sdk/tutorials/mobile_development/index.html b/files/de/mozilla/add-ons/sdk/tutorials/mobile_development/index.html
new file mode 100644
index 0000000000..9d33162519
--- /dev/null
+++ b/files/de/mozilla/add-ons/sdk/tutorials/mobile_development/index.html
@@ -0,0 +1,476 @@
+---
+title: Developing for Firefox Mobile
+slug: Mozilla/Add-ons/SDK/Tutorials/Mobile_development
+translation_of: Archive/Add-ons/Add-on_SDK/Tutorials/Mobile_development
+---
+<div class="warning">
+ <p>Developing add-ons for Firefox Mobile is still an experimental feature of the SDK. Although the SDK modules used are stable, the setup instructions and cfx commands are likely to change.</p>
+</div>
+<div class="note">
+ <p><span>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>. </span></p>
+</div>
+<p>Firefox for Android implements its UI using native Android widgets instead of XUL. With the add-on SDK you can develop add-ons that run on this new version of Firefox Mobile as well as on the desktop version of Firefox.</p>
+<p>You can use the same code to target both desktop Firefox and Firefox Mobile, and just specify some extra options to <code>cfx run</code>, <code>cfx test</code>, and <code>cfx xpi</code> when targeting Firefox Mobile.</p>
+<p>Right now not all modules are fully functional, but we're working on adding support for more modules. The <a href="/en-US/Add-ons/SDK/Tutorials/Mobile_development#Module_Compatibility">tables at the end of this guide</a> list the modules that are currently supported on Firefox Mobile.</p>
+<p>This tutorial explains how to run SDK add-ons on an Android device connected via USB to your development machine. We'll use the <a href="http://developer.android.com/guide/developing/tools/adb.html">Android Debug Bridge</a> (adb) to communicate between the Add-on SDK and the device.</p>
+<p><img src="https://mdn.mozillademos.org/files/6555/mobile-setup-adb.png" style="display: block; margin-left: auto; margin-right: auto;"></p>
+<p>It's possible to use the <a href="http://developer.android.com/guide/developing/tools/emulator.html">Android emulator</a> to develop add-ons for Android without access to a device, but it's slow, so for the time being it's much easier to use the technique described below.</p>
+<h2 id="Setting_up_the_Environment">Setting up the Environment</h2>
+<p>First you'll need an <a href="https://wiki.mozilla.org/Mobile/Platforms/Android#System_Requirements">Android device capable of running the native version of Firefox Mobile</a>. Then:</p>
+<ul>
+ <li>install the <a href="https://wiki.mozilla.org/Mobile/Platforms/Android#Download_Nightly">Nightly build of the native version of Firefox Mobile</a> on the device.</li>
+ <li><a href="http://developer.android.com/guide/developing/device.html#setting-up">enable USB debugging on the device (step 3 of this link only)</a></li>
+</ul>
+<p>On the development machine:</p>
+<ul>
+ <li>install version 1.5 or higher of the Add-on SDK</li>
+ <li>install the correct version of the <a href="http://developer.android.com/sdk/index.html">Android SDK</a> for your device</li>
+ <li>using the Android SDK, install the <a href="http://developer.android.com/sdk/installing.html#components">Android Platform Tools</a></li>
+</ul>
+<p>Next, attach the device to the development machine via USB.</p>
+<p>Now open up a command shell. Android Platform Tools will have installed <code>adb</code> in the "platform-tools" directory under the directory in which you installed the Android SDK. Make sure the "platform-tools" directory is in your path. Then type:</p>
+<pre>adb devices
+</pre>
+<p>You should see some output like:</p>
+<pre>List of devices attached
+51800F220F01564 device
+</pre>
+<p>(The long hex string will be different.)</p>
+<p>If you do, then <code>adb</code> has found your device and you can get started.</p>
+<h2 id="Running_Add-ons_on_Android">Running Add-ons on Android</h2>
+<p>You can develop your add-on as normal, as long as you restrict yourself to the supported modules.</p>
+<p>When you need to run the add-on, first ensure that Firefox is not running on the device. Then execute <code>cfx run</code> with some extra options:</p>
+<pre>cfx run -a fennec-on-device -b /path/to/adb --mobile-app fennec --force-mobile
+</pre>
+<p>See <a href="/en-US/Add-ons/SDK/Tutorials/Mobile_development#cfx_Options_for_Mobile_Development">"cfx Options for Mobile Development"</a> for the details of this command.</p>
+<p>In the command shell, you should see something like:</p>
+<pre>Launching mobile application with intent name org.mozilla.fennec
+Pushing the addon to your device
+Starting: Intent { act=android.activity.MAIN cmp=org.mozilla.fennec/.App (has extras) }
+--------- beginning of /dev/log/main
+--------- beginning of /dev/log/system
+Could not read chrome manifest 'file:///data/data/org.mozilla.fennec/chrome.manifest'.
+info: starting
+info: starting
+zerdatime 1329258528988 - browser chrome startup finished.
+</pre>
+<p>This will be followed by lots of debug output.</p>
+<p>On the device, you should see Firefox launch with your add-on installed.</p>
+<p><code>console.log()</code> output from your add-on is written to the command shell, just as it is in desktop development. However, because there's a lot of other debug output in the shell, it's not easy to follow. The command <code>adb logcat</code> prints <code>adb</code>'s log, so you can filter the debug output after running the add-on. For example, on Mac OS X or Linux you can use a command like the below to filter only the lines of console output:</p>
+<pre>adb logcat | grep console
+</pre>
+<p>You can experiment with different filter strings on <code>adb logcat</code> to focus in on the lines relevant to you.</p>
+<p>Running <code>cfx test</code> is identical:</p>
+<pre>cfx test -a fennec-on-device -b /path/to/adb --mobile-app fennec --force-mobile
+</pre>
+<h2 id="cfx_Options_for_Mobile_Development"><a name="cfx-options">cfx Options for Mobile Development</a></h2>
+<p>As you see in the quote above, <code>cfx run</code> and <code>cfx test</code> need four options to work on Android devices.</p>
+<table>
+ <colgroup>
+ <col>
+ <col>
+ </colgroup>
+ <tbody>
+ <tr>
+ <td><code>-a fennec-on-device</code></td>
+ <td>This tells the Add-on SDK which application will host the add-on, and should be set to "fennec-on-device" when running an add-on on Firefox Mobile on a device.</td>
+ </tr>
+ <tr>
+ <td><code>-b /path/to/adb</code></td>
+ <td>
+ <p>As we've seen, <code>cfx</code> uses the Android Debug Bridge (adb) to communicate with the Android device. This tells <code>cfx</code> where to find the <code>adb</code> executable.</p>
+ <p>You need to supply the full path to the <code>adb</code> executable.</p>
+ </td>
+ </tr>
+ <tr>
+ <td><code>--mobile-app</code></td>
+ <td>
+ <p>This is the name of the <a href="http://developer.android.com/reference/android/content/Intent.html"> Android intent</a>. Its value depends on the version of Firefox Mobile that you're running on the device:</p>
+ <ul>
+ <li><code>fennec</code>: if you're running Nightly</li>
+ <li><code>fennec_aurora</code>: if you're running Aurora</li>
+ <li><code>firefox_beta</code>: if you're running Beta</li>
+ <li><code>firefox</code>: if you're running Release</li>
+ </ul>
+ <p>If you're not sure, run a command like this (on OS X/Linux, or the equivalent on Windows):</p>
+ <pre>
+adb shell pm list packages | grep mozilla</pre>
+ <p>You should see "package" followed by "org.mozilla." followed by a string. The final string is the name you need to use. For example, if you see:</p>
+ <pre>
+package:org.mozilla.fennec</pre>
+ <p>...then you need to specify:</p>
+ <pre>
+--mobile-app fennec</pre>
+ <p>This option is not required if you have only one Firefox application installed on the device.</p>
+ </td>
+ </tr>
+ <tr>
+ <td><code>--force-mobile</code></td>
+ <td>
+ <p>This is used to force compatibility with Firefox Mobile, and should always be used when running on Firefox Mobile.</p>
+ </td>
+ </tr>
+ </tbody>
+</table>
+<h2 id="Packaging_Mobile_Add-ons">Packaging Mobile Add-ons</h2>
+<p>To package a mobile add-on as an XPI, use the command:</p>
+<pre>cfx xpi --force-mobile
+</pre>
+<p>Actually installing the XPI on the device is a little tricky. The easiest way is probably to copy the XPI somewhere on the device:</p>
+<pre>adb push my-addon.xpi /mnt/sdcard/
+</pre>
+<p>Then open Firefox Mobile and type this into the address bar:</p>
+<pre>file:///mnt/sdcard/my-addon.xpi
+</pre>
+<p>The browser should open the XPI and ask if you want to install it.</p>
+<p>Afterwards you can delete it using <code>adb</code> as follows:</p>
+<pre>adb shell
+cd /mnt/sdcard
+rm my-addon.xpi
+</pre>
+<p><a name="modules-compatibility"></a></p>
+<h2 id="Module_Compatibility">Module Compatibility</h2>
+<p>Modules not supported in Firefox Mobile are <span>marked</span> in the tables below.</p>
+<h3 id="High-Level_APIs">High-Level APIs</h3>
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <td style="width: 200px;">addon-page</td>
+ <td style="background-color: rgb(255, 51, 51); width: 200px;">Not supported</td>
+ </tr>
+ <tr>
+ <td>base64</td>
+ <td style="background-color: rgb(102, 204, 51);"><span style="background-color: #66cc33;">Supported</span></td>
+ </tr>
+ <tr>
+ <td>clipboard</td>
+ <td style="background-color: rgb(255, 51, 51);">Not supported</td>
+ </tr>
+ <tr>
+ <td>context-menu</td>
+ <td style="background-color: rgb(255, 51, 51);">Not supported</td>
+ </tr>
+ <tr>
+ <td>hotkeys</td>
+ <td style="background-color: rgb(102, 204, 51);"><span style="background-color: #66cc33;">Supported</span></td>
+ </tr>
+ <tr>
+ <td>indexed-db</td>
+ <td style="background-color: rgb(102, 204, 51);"><span style="background-color: #66cc66;">Supported</span></td>
+ </tr>
+ <tr>
+ <td>l10n</td>
+ <td style="background-color: rgb(102, 204, 51);"><span style="background-color: #66cc66;">Supported</span></td>
+ </tr>
+ <tr>
+ <td>notifications</td>
+ <td style="background-color: rgb(102, 204, 51);"><span style="background-color: #66cc66;">Supported</span></td>
+ </tr>
+ <tr>
+ <td>page-mod</td>
+ <td style="background-color: rgb(102, 204, 51);"><span style="background-color: #66cc66;">Supported</span></td>
+ </tr>
+ <tr>
+ <td>page-worker</td>
+ <td style="background-color: rgb(102, 204, 51);"><span style="background-color: #66cc66;">Supported</span></td>
+ </tr>
+ <tr>
+ <td>panel</td>
+ <td style="background-color: rgb(255, 51, 51);"><span style="background-color: #ff3333;">Not supported</span></td>
+ </tr>
+ <tr>
+ <td>passwords</td>
+ <td style="background-color: rgb(102, 204, 51);"><span style="background-color: #66cc66;">Supported</span></td>
+ </tr>
+ <tr>
+ <td>private-browsing</td>
+ <td style="background-color: rgb(255, 51, 51);">Not supported</td>
+ </tr>
+ <tr>
+ <td>querystring</td>
+ <td style="background-color: rgb(102, 204, 51);">Supported</td>
+ </tr>
+ <tr>
+ <td>request</td>
+ <td style="background-color: rgb(102, 204, 51);">Supported</td>
+ </tr>
+ <tr>
+ <td>selection</td>
+ <td style="background-color: rgb(255, 51, 51);">Not supported</td>
+ </tr>
+ <tr>
+ <td>self</td>
+ <td style="background-color: rgb(102, 204, 51);">Supported</td>
+ </tr>
+ <tr>
+ <td>simple-prefs</td>
+ <td style="background-color: rgb(102, 204, 51);">Supported</td>
+ </tr>
+ <tr>
+ <td>simple-storage</td>
+ <td style="background-color: rgb(102, 204, 51);">Supported</td>
+ </tr>
+ <tr>
+ <td>system</td>
+ <td style="background-color: rgb(102, 204, 51);">Supported</td>
+ </tr>
+ <tr>
+ <td>tabs</td>
+ <td style="background-color: rgb(102, 204, 51);">Supported</td>
+ </tr>
+ <tr>
+ <td>timers</td>
+ <td style="background-color: rgb(102, 204, 51);">Supported</td>
+ </tr>
+ <tr>
+ <td>ui</td>
+ <td style="background-color: rgb(255, 51, 51);">Not supported</td>
+ </tr>
+ <tr>
+ <td>url</td>
+ <td style="background-color: rgb(102, 204, 51);">Supported</td>
+ </tr>
+ <tr>
+ <td>widget</td>
+ <td style="background-color: rgb(255, 51, 51);">Not supported</td>
+ </tr>
+ <tr>
+ <td>windows</td>
+ <td style="background-color: rgb(102, 204, 51);">Supported</td>
+ </tr>
+ </tbody>
+</table>
+<h3 id="Low-Level_APIs">Low-Level APIs</h3>
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <td style="width: 200px;">loader</td>
+ <td style="width: 200px; background-color: rgb(102, 204, 51);">Supported</td>
+ </tr>
+ <tr>
+ <td>chrome</td>
+ <td style="width: 200px; background-color: rgb(102, 204, 51);">Supported</td>
+ </tr>
+ <tr>
+ <td>console/plain-text</td>
+ <td style="width: 200px; background-color: rgb(102, 204, 51);">Supported</td>
+ </tr>
+ <tr>
+ <td>console/traceback</td>
+ <td style="width: 200px; background-color: rgb(102, 204, 51);">Supported</td>
+ </tr>
+ <tr>
+ <td>content/content</td>
+ <td style="width: 200px; background-color: rgb(102, 204, 51);">Supported</td>
+ </tr>
+ <tr>
+ <td>content/loader</td>
+ <td style="width: 200px; background-color: rgb(102, 204, 51);">Supported</td>
+ </tr>
+ <tr>
+ <td>content/mod</td>
+ <td style="width: 200px; background-color: rgb(102, 204, 51);">Supported</td>
+ </tr>
+ <tr>
+ <td>content/worker</td>
+ <td style="width: 200px; background-color: rgb(102, 204, 51);">Supported</td>
+ </tr>
+ <tr>
+ <td>core/heritage</td>
+ <td style="width: 200px; background-color: rgb(102, 204, 51);">Supported</td>
+ </tr>
+ <tr>
+ <td>core/namespace</td>
+ <td style="width: 200px; background-color: rgb(102, 204, 51);">Supported</td>
+ </tr>
+ <tr>
+ <td>core/promise</td>
+ <td style="width: 200px; background-color: rgb(102, 204, 51);">Supported</td>
+ </tr>
+ <tr>
+ <td>event/core</td>
+ <td style="width: 200px; background-color: rgb(102, 204, 51);">Supported</td>
+ </tr>
+ <tr>
+ <td>event/target</td>
+ <td style="width: 200px; background-color: rgb(102, 204, 51);">Supported</td>
+ </tr>
+ <tr>
+ <td>frame/hidden-frame</td>
+ <td style="width: 200px; background-color: rgb(102, 204, 51);">Supported</td>
+ </tr>
+ <tr>
+ <td>frame/utils</td>
+ <td style="width: 200px; background-color: rgb(102, 204, 51);">Supported</td>
+ </tr>
+ <tr>
+ <td>io/byte-streams</td>
+ <td style="width: 200px; background-color: rgb(102, 204, 51);">Supported</td>
+ </tr>
+ <tr>
+ <td>io/file</td>
+ <td style="width: 200px; background-color: rgb(102, 204, 51);">Supported</td>
+ </tr>
+ <tr>
+ <td>io/text-streams</td>
+ <td style="width: 200px; background-color: rgb(102, 204, 51);">Supported</td>
+ </tr>
+ <tr>
+ <td>lang/functional</td>
+ <td style="width: 200px; background-color: rgb(102, 204, 51);">Supported</td>
+ </tr>
+ <tr>
+ <td>lang/type</td>
+ <td style="width: 200px; background-color: rgb(102, 204, 51);">Supported</td>
+ </tr>
+ <tr>
+ <td>loader/cuddlefish</td>
+ <td style="width: 200px; background-color: rgb(102, 204, 51);">Supported</td>
+ </tr>
+ <tr>
+ <td>loader/sandbox</td>
+ <td style="width: 200px; background-color: rgb(102, 204, 51);">Supported</td>
+ </tr>
+ <tr>
+ <td>net/url</td>
+ <td style="width: 200px; background-color: rgb(102, 204, 51);">Supported</td>
+ </tr>
+ <tr>
+ <td>net/xhr</td>
+ <td style="width: 200px; background-color: rgb(102, 204, 51);">Supported</td>
+ </tr>
+ <tr>
+ <td>places/bookmarks</td>
+ <td style="background-color: rgb(255, 51, 51);">Not supported</td>
+ </tr>
+ <tr>
+ <td>places/favicon</td>
+ <td style="background-color: rgb(255, 51, 51);">Not supported</td>
+ </tr>
+ <tr>
+ <td>places/history</td>
+ <td style="background-color: rgb(255, 51, 51);">Not supported</td>
+ </tr>
+ <tr>
+ <td>platform/xpcom</td>
+ <td style="background-color: rgb(102, 204, 51);">Supported</td>
+ </tr>
+ <tr>
+ <td>preferences/service</td>
+ <td style="background-color: rgb(102, 204, 51);">Supported</td>
+ </tr>
+ <tr>
+ <td>stylesheet/style</td>
+ <td style="background-color: rgb(102, 204, 51);">Supported</td>
+ </tr>
+ <tr>
+ <td>stylesheet/utils</td>
+ <td style="background-color: rgb(102, 204, 51);">Supported</td>
+ </tr>
+ <tr>
+ <td>system/environment</td>
+ <td style="background-color: rgb(102, 204, 51);">Supported</td>
+ </tr>
+ <tr>
+ <td>system/events</td>
+ <td style="background-color: rgb(102, 204, 51);">Supported</td>
+ </tr>
+ <tr>
+ <td>system/globals</td>
+ <td style="background-color: rgb(102, 204, 51);">Supported</td>
+ </tr>
+ <tr>
+ <td>system/runtime</td>
+ <td style="background-color: rgb(102, 204, 51);">Supported</td>
+ </tr>
+ <tr>
+ <td>system/unload</td>
+ <td style="background-color: rgb(102, 204, 51);">Supported</td>
+ </tr>
+ <tr>
+ <td>system/xul-app</td>
+ <td style="background-color: rgb(102, 204, 51);">Supported</td>
+ </tr>
+ <tr>
+ <td>tabs/utils</td>
+ <td style="background-color: rgb(102, 204, 51);">Supported</td>
+ </tr>
+ <tr>
+ <td>test/assert</td>
+ <td style="background-color: rgb(102, 204, 51);">Supported</td>
+ </tr>
+ <tr>
+ <td>test/harness</td>
+ <td style="background-color: rgb(102, 204, 51);">Supported</td>
+ </tr>
+ <tr>
+ <td>test/httpd</td>
+ <td style="background-color: rgb(102, 204, 51);">Supported</td>
+ </tr>
+ <tr>
+ <td>test/runner</td>
+ <td style="background-color: rgb(102, 204, 51);">Supported</td>
+ </tr>
+ <tr>
+ <td>test/utils</td>
+ <td style="background-color: rgb(102, 204, 51);">Supported</td>
+ </tr>
+ <tr>
+ <td>ui/button/action</td>
+ <td style="background-color: rgb(255, 51, 51);">Not supported</td>
+ </tr>
+ <tr>
+ <td>ui/button/toggle</td>
+ <td style="background-color: rgb(255, 51, 51);">Not supported</td>
+ </tr>
+ <tr>
+ <td>ui/frame</td>
+ <td style="background-color: rgb(255, 51, 51);">Not supported</td>
+ </tr>
+ <tr>
+ <td>ui/id</td>
+ <td style="background-color: rgb(102, 204, 51);">Supported</td>
+ </tr>
+ <tr>
+ <td>ui/sidebar</td>
+ <td style="background-color: rgb(255, 51, 51);">Not supported</td>
+ </tr>
+ <tr>
+ <td>ui/toolbar</td>
+ <td style="background-color: rgb(255, 51, 51);">Not supported</td>
+ </tr>
+ <tr>
+ <td>util/array</td>
+ <td style="background-color: rgb(102, 204, 51);">Supported</td>
+ </tr>
+ <tr>
+ <td>util/collection</td>
+ <td style="background-color: rgb(102, 204, 51);">Supported</td>
+ </tr>
+ <tr>
+ <td>util/deprecate</td>
+ <td style="background-color: rgb(102, 204, 51);">Supported</td>
+ </tr>
+ <tr>
+ <td>util/list</td>
+ <td style="background-color: rgb(102, 204, 51);">Supported</td>
+ </tr>
+ <tr>
+ <td>util/match-pattern</td>
+ <td style="background-color: rgb(102, 204, 51);">Supported</td>
+ </tr>
+ <tr>
+ <td>util/object</td>
+ <td style="background-color: rgb(102, 204, 51);">Supported</td>
+ </tr>
+ <tr>
+ <td>util/uuid</td>
+ <td style="background-color: rgb(102, 204, 51);">Supported</td>
+ </tr>
+ <tr>
+ <td>window/utils</td>
+ <td style="background-color: rgb(102, 204, 51);">Supported</td>
+ </tr>
+ </tbody>
+</table>
+<p> </p>
diff --git a/files/de/mozilla/add-ons/security_best_practices_in_extensions/index.html b/files/de/mozilla/add-ons/security_best_practices_in_extensions/index.html
new file mode 100644
index 0000000000..689a9b9679
--- /dev/null
+++ b/files/de/mozilla/add-ons/security_best_practices_in_extensions/index.html
@@ -0,0 +1,80 @@
+---
+title: Sicherheitsleitfaden bei Erweiterungen
+slug: Mozilla/Add-ons/Security_best_practices_in_extensions
+tags:
+ - Add-ons
+ - Anleitung
+ - Erweiterungen
+ - Leitfaden
+ - Sicherheit
+translation_of: Archive/Add-ons/Security_best_practices_in_extensions
+---
+<p>{{ draft() }}</p>
+
+<p>Dieses Dokument ist dazu gedacht, für Entwickler als Leitfaden zu bestmöglichen Vorgensweisen bei der Absicherung ihrer Erweiterung zu dienen. Dein Ziel ist es, deine Nutzer zu schützen. Einige Einträge sind strikte Richtlinien, was Bedeutet, dass wenn Du diesen nicht folgst, dein Add-On im Gegenzug auf Mozilla Add-Ons nicht akzeptiert wird. Andere Einträge sind Empfehlungen. Der Unterschied wird klar gekennzeichnet.</p>
+
+<p>Es ist aus der Perspektive einer Firefox Erweiterung geschrieben, aber die meisten Einträge beziehen sich auf Erweiterungen für andere Mozilla-basierte Applikationen wie Thunderbird oder SeaMonkey.</p>
+
+<h2 id="Handhabung_von_Webinhalten">Handhabung von Webinhalten</h2>
+
+<p>Im Allgemeinen ist der beste Weg sicherzustellen, dass der Browser beim Laden von Inhalten nicht kompromittiert wird, dafür zu sorgen, dass diese keine entsprechenden Rechte haben. Eine detailliertere Erklärung dieses Prozesses findet sich unter <a class="internal" href="https://developer.mozilla.org/en/Displaying_web_content_in_an_extension_without_security_issues" title="En/Displaying web content in an extension without security issues">Webinhalte ohne Sicherheitsprobleme in einer Erweiterung anzeigen</a>.</p>
+
+<p>Die Rechte, die ein Dokument bekommt, hängen auch davon ab, wo es herkommt.  Zum Beispiel: Wenn Du eine chrome URL lädst, bedeutet es, dass der Inhalt in Firefox registriert wurde und vollen Zugriff hat. Inhalt von einer Domain (wie http://example.com) kann nur auf die gleiche Domain zugreifen. Über das File Protocol geladene Dateien können auf solche zugreifen, die auf der Festplatte und anderen lokalen Datenträgern liegen. Es gibt Wege, die content/chrome Sicherheitsbarriere zu umgehen, falls Du zum Beispiel möchtest, dass eine Webseite eine Notifikation an ein Add-On sendet (oder umgekehrt). Ein Weg das zu tun ist es, eigene DOM Events zu nutzen; siehe <a class="internal" href="/en/Code_snippets/Interaction_between_privileged_and_non-privileged_pages" title="en/Code snippets/Interaction between privileged and non-privileged pages">Interaktionen zwischen priviligierten und nicht-priviligierten Seiten</a>.</p>
+
+<p>Unabhängig davon, wo das Dokument herkommt, kannst du weiter Beschränken, was es kann, indem du Eigenschaften zum Dokumentenhalter - auch bekannt als docshell - zuweist.</p>
+
+<p><code>frame.docShell.allowImages = false;<br>
+ frame.docShell.allowJavascript = false;<br>
+ frame.docShell.allowPlugins = false;</code></p>
+
+<p>Es gibt mehr Beispiele in dem oben gelisteten Dokument. Unter gewissen Umständen möchte man Code in der Erweiterung ausführen, allerdings solltest du ihm eingeschränkte Rechte geben. Einer der besten Wege das zu tun ist <a class="internal" href="/en/Components.utils.evalInSandbox" title="en/Components.utils.evalInSandbox"><code>Components.utils.evalInSandbox()</code></a> zu nutzen. Beachte, dass Objekte, die an die Sandbox weitergegeben werden, eingeschränkt sind, aber solche, die wieder herauskommen es nicht sind. Nimm Bezug auf den Artikel, um herauszufinden, wie du solche Tücken vermeidest. Für weitere Informationen, siehe den Abschnitt evalInSandbox.</p>
+
+<h2 id="Die_Sidebar_Ein_Anwendungsfall">Die Sidebar: Ein Anwendungsfall</h2>
+
+<p>Die Sidebar in Firefox ist dafür gestaltet, sowohl chrome (priviligierte) Inhalte, als auch Web (nichtpriviligierte) Inhalte zu beinhalten - letzteres in Form von Webseiten. Diese Webseiten können von einem Server oder von lokalen HTML Dateien, die mit der Erweiterung gekommen sind, stammen. Für Seiten, die vom Server kommen, musst du Schritte vornehmen, um zu sicherzustellen, dass die Inhalte nicht in den Browser rückrufen und Schadcode ausführen. Hauptsächlich wird dies bewerkstelligt, indem man ein Iframe- oder Browserelement in der Sidebar erstellt und dort die Inhalte lädt. Gebe dem Inhalt ein type="content" Attribut, welches den Code im Wesentlichen sandboxed und alle Rückrufe direkt nach chrome blockiert.</p>
+
+<h2 id="eval()_in_einer_Erweiterung_nutzen">eval() in einer Erweiterung nutzen</h2>
+
+<p>Das Nutzen der eingebauten JavaScript Funktion {{jsxref("eval")}} ist im Kontext von Erweiterungen verpönt. Während es einige Fälle gibt, in denen die Nutzung legitim ist, gibt es meist sicherere Alternativen. <a class="external" href="http://adblockplus.org/blog/five-wrong-reasons-to-use-eval-in-an-extension" title="http://adblockplus.org/blog/five-wrong-reasons-to-use-eval-in-an-extension">Dieser Blogeintrag</a> bietet einige exzellente Beispiele, warum man eval() <strong>nicht </strong>nutzen sollte.</p>
+
+<h2 id="Gesandboxte_HTTP_Verbindungen">Gesandboxte HTTP Verbindungen</h2>
+
+<p>Der Hauptzweck von gesandboxten HTTP Verbindungen ist es, mit einem Webdienst zu kommunizieren, ohne mit im Browser zu der Website/dem Service gesetzten Cookies zu interferieren. Wenn Du zum Beispiel Fotos oder andere Daten von einer photo sharing Seite lädst, kannst du die Verbindungen sandboxen, sodass normales Surfen des Nutzers auf der Webseite nicht beeinflusst wird. Für einen echten Anwendungsfall, siehe <a class="external" href="http://weblogs.mozillazine.org/doron/archives/2006/06/creating_sandboxed_http_connec.html" title="http://weblogs.mozillazine.org/doron/archives/2006/06/creating_sandboxed_http_connec.html">diesen Blogeintrag</a>.</p>
+
+<h2 id="Umgang_mit_Logins_und_Passwörtern">Umgang mit Logins und Passwörtern</h2>
+
+<p>Es gibt viele Möglichkeiten, Daten in Firefox zu speichern, aber für Logins und Passwörter, solltest Du den <a class="internal" href="/en/XPCOM_Interface_Reference/Using_nsILoginManager" title="en/Using nsILoginManager">Login Manager</a> nutzen. Das ist der gleiche Speicher, welcher Logins von Webseiten beinhaltet und Passwörter können nur abgerufen werden, indem die Kombination von Seite/Username dem Author bekannt sind. Die Gepflogenheit für Erweiterungen ist es, eine chrome URL als den Seitenidentifikator zu nutzen, um Konflikte mit Logins für Seiten zu verhindern. Es könnte der Fall sein, dass deine Erweiterung ein anderes Werkzeug oder andere Werkzeuge für Dienste auf deiner Seite anbietet.</p>
+
+<p>Diese Herangehensweise ist vorzuziehen, da es den Nutzern eine gewohnte Oberfläche für die Interaktion mit Logins über den <a class="external" href="https://support.mozilla.org/de/kb/passworter-verwalten-speichern-loeschen-aendern" title="http://support.mozilla.com/en-US/kb/Remembering+passwords">Firefox Passwort Manager</a> bietet. Wenn Nutzer Logins über die "Neueste Chronik löschen" Option säubern, wird das die Daten deiner Erweiterung miteinbeziehen.</p>
+
+<h2 id="APIs_und_Umgang_mit_anderen_Daten">APIs und Umgang mit anderen Daten</h2>
+
+<p>Web Inhalte sind mehr als nur Seiten, und mehr und mehr Add-Ons interagieren über das Application Programming Interfae (API) mit Webdiensten.</p>
+
+<ul>
+ <li>API Provider sollten das HTTPS Protokoll nutzen, welches besseren Schutz für Daten über das Netzwerk bietet.</li>
+ <li>JSON ist ein beliebtes Datenformat für Antwortenformate von Webdienste geworden. Gehe sicher, <a class="internal" href="https://developer.mozilla.org/de/docs/Web/JavaScript/Reference/Global_Objects/JSON" title="En/Using native JSON">Natives JSON nutzen</a> zu lesen, um den richten Umgang damit herauszufinden.</li>
+ <li>APIs können nicht mit selbst-signierten Zertifikaten genutzt werden.</li>
+</ul>
+
+<h2 id="Remote_Javascript_und_-Inhalte">Remote Javascript und -Inhalte</h2>
+
+<p>Es gibt eine Zahl von Arten, wie Remotescripte in Erweiterungen genutzt werden können. Sie können in Inhalten eingebettet oder in Intervallen heruntergeladen werden.</p>
+
+<p>Nicht-chrome URLs in chrome XUL oder HTML, so wie im folgenden Beispiel sind <strong>nicht</strong> erlaubt:</p>
+
+<p><code>&lt;script type="text/javascript" src="<span class="nowiki">http://mysite.greatsite.com/js/wow-content.js</span>" /&gt;</code></p>
+
+<p>Im Allgemeinen sind Skripte von Remotequellen, die im Kontext von chrome laufen, nicht akzeptabel, da die Quelle der Skripte nie zu 100% garantiert werden kann und sie für Man-In-The-Middle Attacken empfindlich sind. Die einzig legitime Umgebung für Remoteskripte ist es, in einer Sandbox zu laufen. Für mehr Informationen, siehe die Sektion <a class="internal" href="#evalInSandbox" title="en/Security best practices in extensions#evalInSandbox"><code>evalInSandbox()</code></a>.</p>
+
+<h2 id="evalInSandbox">evalInSandbox</h2>
+
+<p>Das <a class="internal" href="/en/Components.utils.evalInSandbox" title="en/Components.utils.evalInSandbox">evalInSandbox Dokument</a> erklärt die Funktion ziemlich gut, also wird es hier keine Wiederholung geben. Die Nützlichkeit und Kraft der Funktionsweise wird von der beliebten Erweiterung <a class="link-https" href="https://addons.mozilla.org/de/firefox/addon/748" title="https://addons.mozilla.org/de/firefox/addon/748">Greasemonkey</a> veranschaulich, welche unter der Prämisse arbeitet, dass Skripte heruntergeladen und gespeichert werden, um im Kontext von Webinhalten via der Sandbox injiziert zu werden. Viele Erweiterungen nutzen den <a class="external external-icon" href="http://arantius.com/misc/greasemonkey/script-compiler" title="http://arantius.com/misc/greasemonkey/script-compiler">Greasemonkey compiler</a>, um die Funktion aus Bequemlichkeit in ihrer Erweiterung zu bündeln. Wenn Du dich entscheidest das zu tun, sei vorsichtig beim Editieren von gebündelten Dateien, insofern als, gut durchdachte Sicherheitsarchitekturen nicht zu verletzen.</p>
+
+<h2 id="Drittanbieter_JavaScript">Drittanbieter JavaScript</h2>
+
+<p>Im Kontext von Webseiten, ist das Nutzen von JavaScripten, welche von anderen geschrieben wurden sehr geläufig. Auch in Add-Ons ist es nicht unbekannt und kann einen nützlichen Weg darstellen, um Codewiederholungen zu vermeiden und die Entwicklung zu beschleunigen. <a class="external" href="http://adblockplus.org/blog/third-party-javascript-yes-it-is-a-security-risk">Dieser Artikel</a> ist über Webseiten, aber liefert einige Einsichten in generelle Risiken. Wenn Du andere Skripte einbettest, gibt es eine Reihe von Dingen, die du tun kannst, um ihre Integrität und Sicherheit für Nutzer zu gewährleisten. Als erstes, es immer von einer glaubwürdigen Quelle zu beziehen. Eine andere Sache, die du tun solltest, ist das Namespacen, nur für den Fall, dass andere Add-Ons es inkludieren. Zum Beispiel, wenn Du jQuery nutzt, gibt es da <a class="external external-icon" href="http://docs.jquery.com/Using_jQuery_with_Other_Libraries" title="http://docs.jquery.com/Using_jQuery_with_Other_Libraries"><code>jQuery.noConflict()</code></a>.</p>
+
+<h2 id="Fazit">Fazit</h2>
+
+<p>Sicherheit kann nicht als selbstverständlich angesehen werden und jede Veröffentlichung deines Add-Ons, sollte es eine neue Sicherheitsprüfung geben. Ein guter Ort, um mit Mozillas Sicherheitsmeldungen und Sicherheitsdiskussionen mitzuhalten, ist im  <a class="external external-icon" href="http://blog.mozilla.com/security/" title="http://blog.mozilla.com/security/">Mozilla Security Blog</a>.</p>
diff --git a/files/de/mozilla/add-ons/themes/obsolete/index.html b/files/de/mozilla/add-ons/themes/obsolete/index.html
new file mode 100644
index 0000000000..d420b6ebf0
--- /dev/null
+++ b/files/de/mozilla/add-ons/themes/obsolete/index.html
@@ -0,0 +1,10 @@
+---
+title: Obsolete
+slug: Mozilla/Add-ons/Themes/Obsolete
+tags:
+ - NeedsTranslation
+ - TopicStub
+translation_of: Mozilla/Add-ons/Themes/Obsolete
+---
+<p>This page collects theme docs that we don't expect will ever be updated, but which we're keeping for the time being as potential source material for updated docs.</p>
+<p>{{ ListSubPages ("/en-US/Add-ons/Themes/Obsolete", 5) }}</p>
diff --git a/files/de/mozilla/add-ons/webextensions/anatomy_of_a_webextension/index.html b/files/de/mozilla/add-ons/webextensions/anatomy_of_a_webextension/index.html
new file mode 100644
index 0000000000..04bd9d08b5
--- /dev/null
+++ b/files/de/mozilla/add-ons/webextensions/anatomy_of_a_webextension/index.html
@@ -0,0 +1,133 @@
+---
+title: Aufbau einer WebExtension
+slug: Mozilla/Add-ons/WebExtensions/Anatomy_of_a_WebExtension
+translation_of: Mozilla/Add-ons/WebExtensions/Anatomy_of_a_WebExtension
+---
+<div>{{AddonSidebar}}</div>
+
+<p>Eine Extension (Erweiterung) beinhaltet eine Sammlung von Dateien, gepackt für die Verbreitung and Installation. In diesem Artikel, gehen wir kurz auf Dateien ein, die vorhanden sein könnten.</p>
+
+<h2 id="manifest.json">manifest.json</h2>
+
+<p>"manifest.json" ist die einzige Datei, die in jeder Extension vorhanden sein muss. Sie enthält die grundlegenden Metadaten wie Name, Version und benötigte Genehmigungen. Außerdem verweist sie auf andere Dateien der Extension.</p>
+
+<p>Dieses Manifest kann auch Zeiger zu mehreren anderen Dateitypen haben:</p>
+
+<ul>
+ <li><a href="/en-US/Add-ons/WebExtensions/Anatomy_of_a_WebExtension#Background_scripts">Hintergrundseiten</a>: führen Langzeitprozesse aus</li>
+ <li>Icons für die Extension und jegliche Buttons können festgelegt werden.</li>
+ <li><a href="https://developer.mozilla.org/en-US/Add-ons/WebExtensions/Anatomy_of_a_WebExtension#Sidebars_popups_options_pages">Sidebars, Pop-ups und Options-Pages</a>: HTML-Dokumente, die Inhalte für unterschiedliche Komponenten der Benutzeroberfläche bereitstellen.</li>
+ <li><a href="/en-US/Add-ons/WebExtensions/Anatomy_of_a_WebExtension#Content_scripts">Content-Scripts</a>: JavaScript in Ihrer Erweiterung, das in Webseiten eingefügt wird.</li>
+</ul>
+
+<p><img alt="" src="https://mdn.mozillademos.org/files/13669/webextension-anatomy.png" style="display: block; height: 581px; margin-left: auto; margin-right: auto; width: 600px;"></p>
+
+<p>Für weitere Einzelheiten gehe auf <a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/manifest.json">manifest.json</a>.</p>
+
+<p>Neben den vom Manifest referenzierten Seiten, kann eine Extension zusätzlche <a href="https://developer.mozilla.org/en-US/Add-ons/WebExtensions/Anatomy_of_a_WebExtension#Extension_pages">Extension pages</a> mit unterstützenden Dateien enthalten.</p>
+
+<h2 id="Hintergrundskripte">Hintergrundskripte</h2>
+
+<p>Extensions müssen oft langzeitig ihren Zustand aufrechterhalten oder Operationen, unabhängig der Lebensdauer von irgendwelchen speziellen Webseiten oder Browserfenstern, durchführen. Dafür gibt es Hintergrundskripte (background scripts).</p>
+
+<p>Hintergrundskripte werden geladen, sobald die Extension geladen ist und laufen bis die Extension deaktiviert oder deinstalliert wird. Du kannst alles aus den <a href="/en-US/Add-ons/WebExtensions/API">WebExtension APIs</a> im Skript benutzen, solange du die notwendigen <a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/manifest.json/permissions">Berechtigungen</a> abgefragt hast.</p>
+
+<h3 id="Hintergrundskripte_festlegen">Hintergrundskripte festlegen</h3>
+
+<p>Du kannst ein Hintergrundskript einbinden in dem du den <code>background</code>-Key in "manifest.json" benutzt:</p>
+
+<pre class="brush: json">// manifest.json
+
+"background": {
+ "scripts": ["background-script.js"]
+}</pre>
+
+<p>Du kannst mehrere background scripts angeben: wenn du sie im selben Kontext laufen lässt, so wie mehrere Skripts, die in eine einzelne Seite geladen werden.</p>
+
+<h3 id="Hintergrundskript-Umgebung">Hintergrundskript-Umgebung</h3>
+
+<h4 id="DOM_APIs">DOM APIs</h4>
+
+<p>Hintergrundskripte laufen im Rahmen spezieller Seiten genannt 'background pages' (Hintergrundseiten). Diese geben ihnen ein globales <code><a href="/en-US/docs/Web/API/Window">window</a></code>, samt der vollständigen Standard DOM APIs, die von diesem Objekt bereitgestellt werden.</p>
+
+<p>Du musst deine Hintergrundseite nicht bereitstellen. Wenn du dein Hintergrundskript hinzufügst, wird eine leere Hintergrundseite für dich erstellt.</p>
+
+<p>Dennoch kannst du deine Hintergrundseite auch als separate HTML-Datei erstellen:</p>
+
+<pre class="brush: json">// manifest.json
+
+"background": {
+ "page": "background-page.html"
+}</pre>
+
+<h4 id="WebExtension_APIs">WebExtension APIs</h4>
+
+<p>Hintergrundskripte können alles aus den <a href="/en-US/Add-ons/WebExtensions/API">WebExtension APIs</a> im Skript nutzen, solange deren Extension die notwendigen <a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/manifest.json/permissions">Berechtigungen</a> hat.</p>
+
+<h4 id="Cross-origin_access">Cross-origin access</h4>
+
+<p>Hintergrundskripte können XHR-Anfragen an alle Hosts machen, für die sie <a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/manifest.json/permissions">host permissions</a> haben.</p>
+
+<h4 id="Web_content">Web content</h4>
+
+<p>Hintergrundskripte haben keinen direkten Zugriff auf Webseiten. Sie können jedoch <a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/Content_scripts">Content-Scripts</a> in Webseiten laden und <a href="/en-US/Add-ons/WebExtensions/Content_scripts#Communicating_with_background_scripts">mit ihnen über message-passing API kommunizieren</a>.</p>
+
+<h4 id="Content_security_policy">Content security policy</h4>
+
+<p>Hintergrundskripte sind beschränkt in einigen potenziell gefährlichen Operationen, wie dem Benutzen von <code><a href="/en-US/docs/Web/JavaScript/Reference/Global_Objects/eval">eval()</a></code>, durch ein Sicherheitskonzept. Für mehr Informationen siehe <a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/Content_Security_Policy">Content Security Policy</a>.</p>
+
+<h2 id="Sidebars_Pop-ups_Options-Pages">Sidebars, Pop-ups, Options-Pages</h2>
+
+<p>Deine Extension kann unterschiedliche Benutzeroberflächenkomponenten enthalten, deren Inhalt wird durch ein HTML-Dokument festgelegt:</p>
+
+<ul>
+ <li>eine <a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/user_interface/Sidebars">Sidebar</a> ist ein Element, das auf der linken Seite des Browserfensters neben der Webseite angezeigt wird</li>
+ <li>ein <a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/user_interface/Popups">Pop-up</a> ist ein Dialogfenster, dass du anzeigen kannst, wenn der Benutzer auf einen <a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/user_interface/Browser_action">Button der Werkzeugleiste</a> oder der <a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/user_interface/Page_actions">Adressleiste </a>klickt</li>
+ <li>eine <a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/user_interface/Options_pages">Options-Page</a> ist eine Seite, die gezeigt wird, wenn der Benutzer deine Add-on-Einstellungen im browser-eigenen Add-ons-Manager abruft.</li>
+</ul>
+
+<p>Für jeden dieser Komponenten, erstellst du eine HTML-Datei und verweist auf sie über ein spezielles Attribut in <a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/manifest.json">manifest.json</a>. Die HTML-Datei kann, wie eine normale Webseite, CSS- und JavaScript-Dateien einbinden.</p>
+
+<p>Sie alle sind Arten von <a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/user_interface/Extension_pages">Extension pages</a>, und nicht wie eine normale Webseite, dein JavaScript kann dieselben WebExtension APIs wie dein Hintergrundskript benutzen. Sie können sogar direkt Variabeln aus der Hintergrundseite, mit {{WebExtAPIRef("runtime.getBackgroundPage()")}}, abrufen.</p>
+
+<h2 id="Extension_pages">Extension pages</h2>
+
+<p>Du kannst außerdem HTML-Dokumente in deine Extension mit einbeziehen, die nicht vordefinierten Benutzeroberflächenkomponenten beigefügt wurden. Anders als die Dokumente, die du für Sidebars, Pop-ups, oder Option-Pages bereitstellen könntest, haben diese keinen Zugang zu "manifest.json". Dennoch haben sie Zugriff auf dieselben WebExtension APIs wie dein Hintergrundskript.</p>
+
+<p>Du lädst eine solche Seite normalerweise mit {{WebExtAPIRef("windows.create()")}} oder {{WebExtAPIRef("tabs.create()")}}.</p>
+
+<p>Siehe <a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/user_interface/Extension_pages">Extension pages</a> um mehr zu lernen.</p>
+
+<h2 id="Content_scripts">Content scripts</h2>
+
+<p>Benutze Content-Scripts um Webseiten abzurufen und zu manipulieren. Content-Scripts werden in Webseiten geladen und laufen im Rahmen der jeweiligen Seite.</p>
+
+<p>Content-Scripts sind von der Erweiterung bereitgestellte Skripts, die im Kontext einer Webseite laufen; das unterscheidet sie von Skripts, die von der Seite selber geladen werden, einschließlich derer, die in {{HTMLElement("script")}}-Elementen innerhalb der Seite bereitgestellt werden.</p>
+
+<p>Content-Scripts können das Seiten-DOM sehen und manipulieren, so wie normale, von der Seite geladene Skripte.</p>
+
+<p>Im Gegensatz zu normalen Skripten können sie:</p>
+
+<ul>
+ <li>domainübergreifende XHR-Anfragen machen.</li>
+ <li>eine kleine Teilmenge der <a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/API">WebExtension APIs</a> benutzen.</li>
+ <li>Nachrichten mit ihren Hintergrundskripten austauschen und auf diesem Web indirekt die gesamten WebExtension APIs abrufen.</li>
+</ul>
+
+<p>Content-Scripts können nicht direkt normale Skripte der Seite abrufen, aber mit ihnen Nachrichten austauschen über die übliche <code><a href="/en-US/docs/Web/API/Window/postMessage">window.postMessage()</a></code> API.</p>
+
+<p>Wenn wir gewöhnlich über Content-Scripts sprechen, dann im Bezug auf JavaScript. Du kannst jedoch auch CSS zu einer Webseite über das selbe System hinzufügen.</p>
+
+<p>Sieh dir <a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/Content_scripts">content scripts</a> an um mehr zu erfahren.</p>
+
+<h2 id="Web_accessible_resources">Web accessible resources</h2>
+
+<p>Zugängliche Webressourcen(Web accessible resources) sind Ressourcen wie Bilder, HTML, CSS, und JavaScript, die du in die Extension einbindest und für Content-Scripts und Skripten der Seite zugänglich machen möchtest. Ressourcen, die web-zugänglich gemacht werden, können von Skripten der Seite und Content-Scripts über ein spezielles URI-Schema referenziert werden.</p>
+
+<p>Wenn zum Beispiel ein Content-Script Bilder in eine Webseite einfügen will, kannst du sie in der Extension beifügen und web-zugänglich machen. Dann könnte das Content-Script <code><a href="/en-US/docs/Web/HTML/Element/img">img</a></code>-Tags erzeugen und hinzufügen, die über das <code>src</code>-Attribut auf die Bilder verweisen.</p>
+
+<p>Um mehr zu lernen, sieh die Dokumentation für den <a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/manifest.json/web_accessible_resources">web_accessible_resources</a> manifest.json key.</p>
+
+<p> </p>
+
+<p> </p>
diff --git a/files/de/mozilla/add-ons/webextensions/api/browseraction/index.html b/files/de/mozilla/add-ons/webextensions/api/browseraction/index.html
new file mode 100644
index 0000000000..184dccf3d6
--- /dev/null
+++ b/files/de/mozilla/add-ons/webextensions/api/browseraction/index.html
@@ -0,0 +1,135 @@
+---
+title: browserAction
+slug: Mozilla/Add-ons/WebExtensions/API/browserAction
+tags:
+ - API
+ - Add-ons
+ - Extensions
+ - Interface
+ - NeedsTranslation
+ - Non-standard
+ - Reference
+ - TopicStub
+ - WebExtensions
+ - browserAction
+translation_of: Mozilla/Add-ons/WebExtensions/API/browserAction
+---
+<div>{{AddonSidebar}}</div>
+
+<p>Adds a button to the browser's toolbar.</p>
+
+<p>A <a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/Browser_action">browser action</a> is a button in the browser's toolbar.</p>
+
+<p>You can associate a popup with the button. The popup is specified using HTML, CSS and JavaScript, just like a normal web page. JavaScript running in the popup gets access to all the same WebExtension APIs as your background scripts, but its global context is the popup, not the current page displayed in the browser. To affect web pages you need to communicate with them via <a href="/en-US/Add-ons/WebExtensions/Modify_a_web_page#Messaging">messages</a>.</p>
+
+<p>If you specify a popup, it will be shown — and the content will be loaded — when the user clicks the icon. If you do not specify a popup, then when the user clicks the icon an event is dispatched to your extension.</p>
+
+<p>You can define most of a browser action's properties declaratively using the <code><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/manifest.json/browser_action">browser_action</a></code> key in the manifest.json.</p>
+
+<p>With the <code>browserAction</code> API, you can:</p>
+
+<ul>
+ <li>use {{WebExtAPIRef("browserAction.onClicked")}} to listen for clicks on the icon.</li>
+ <li>get and set the icon's properties — icon, title, popup, and so on. You can get and set these globally across all tabs, or for a specific tab by passing the tab ID as an additional argument.</li>
+</ul>
+
+<h2 id="Types">Types</h2>
+
+<dl>
+ <dt>{{WebExtAPIRef("browserAction.ColorArray")}}</dt>
+ <dd>An array of four integers in the range 0-255 defining an RGBA color.</dd>
+ <dt>{{WebExtAPIRef("browserAction.ImageDataType")}}</dt>
+ <dd>Pixel data for an image. Must be an <code><a href="/en-US/docs/Web/API/ImageData">ImageData</a></code> object (for example, from a {{htmlelement("canvas")}} element).</dd>
+</dl>
+
+<h2 id="Functions">Functions</h2>
+
+<dl>
+ <dt>{{WebExtAPIRef("browserAction.setTitle()")}}</dt>
+ <dd>Sets the browser action's title. This will be displayed in a tooltip.</dd>
+ <dt>{{WebExtAPIRef("browserAction.getTitle()")}}</dt>
+ <dd>Gets the browser action's title.</dd>
+ <dt>{{WebExtAPIRef("browserAction.setIcon()")}}</dt>
+ <dd>Sets the browser action's icon.</dd>
+ <dt>{{WebExtAPIRef("browserAction.setPopup()")}}</dt>
+ <dd>Sets the HTML document to be opened as a popup when the user clicks on the browser action's icon.</dd>
+ <dt>{{WebExtAPIRef("browserAction.getPopup()")}}</dt>
+ <dd>Gets the HTML document set as the browser action's popup.</dd>
+ <dt>{{WebExtAPIRef("browserAction.openPopup()")}}</dt>
+ <dd>Open the browser action's popup.</dd>
+ <dt>{{WebExtAPIRef("browserAction.setBadgeText()")}}</dt>
+ <dd>Sets the browser action's badge text. The badge is displayed on top of the icon.</dd>
+ <dt>{{WebExtAPIRef("browserAction.getBadgeText()")}}</dt>
+ <dd>Gets the browser action's badge text.</dd>
+ <dt>{{WebExtAPIRef("browserAction.setBadgeBackgroundColor()")}}</dt>
+ <dd>Sets the badge's background color.</dd>
+ <dt>{{WebExtAPIRef("browserAction.getBadgeBackgroundColor()")}}</dt>
+ <dd>Gets the badge's background color.</dd>
+ <dt>{{WebExtAPIRef("browserAction.setBadgeTextColor()")}}</dt>
+ <dd>Sets the badge's text color.</dd>
+ <dt>{{WebExtAPIRef("browserAction.getBadgeTextColor()")}}</dt>
+ <dd>Gets the badge's text color.</dd>
+ <dt>{{WebExtAPIRef("browserAction.enable()")}}</dt>
+ <dd>Enables the browser action for a tab. By default, browser actions are enabled for all tabs.</dd>
+ <dt>{{WebExtAPIRef("browserAction.disable()")}}</dt>
+ <dd>Disables the browser action for a tab, meaning that it cannot be clicked when that tab is active.</dd>
+ <dt>{{WebExtAPIRef("browserAction.isEnabled()")}}</dt>
+ <dd>Checks whether the browser action is enabled or not.</dd>
+</dl>
+
+<h2 id="Events">Events</h2>
+
+<dl>
+ <dt>{{WebExtAPIRef("browserAction.onClicked")}}</dt>
+ <dd>Fired when a browser action icon is clicked. This event will not fire if the browser action has a popup.</dd>
+</dl>
+
+<h2 id="Browser_compatibility">Browser compatibility</h2>
+
+<p>{{Compat("webextensions.api.browserAction")}}</p>
+
+<div class="hidden note">
+<p>The "Chrome incompatibilities" section is included from <a href="https://developer.mozilla.org/en-US/Add-ons/WebExtensions/Chrome_incompatibilities"> https://developer.mozilla.org/en-US/Add-ons/WebExtensions/Chrome_incompatibilities</a> using the <a href="/en-US/docs/Template:WebExtChromeCompat">WebExtChromeCompat</a> macro.</p>
+
+<p>If you need to update this content, edit <a href="https://developer.mozilla.org/en-US/Add-ons/WebExtensions/Chrome_incompatibilities">https://developer.mozilla.org/en-US/Add-ons/WebExtensions/Chrome_incompatibilities</a>, then shift-refresh this page to see your changes.</p>
+</div>
+
+<p>{{WebExtExamples("h2")}}</p>
+
+<div class="note"><strong>Acknowledgements</strong>
+
+<p>This API is based on Chromium's <a href="https://developer.chrome.com/extensions/browserAction"><code>chrome.browserAction</code></a> API. This documentation is derived from <a href="https://chromium.googlesource.com/chromium/src/+/master/chrome/common/extensions/api/browser_action.json"><code>browser_action.json</code></a> in the Chromium code.</p>
+
+<p>Microsoft Edge compatibility data is supplied by Microsoft Corporation and is included here under the Creative Commons Attribution 3.0 United States License.</p>
+</div>
+
+<div class="hidden">
+<pre>// Copyright 2015 The Chromium Authors. All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+</pre>
+</div>
diff --git a/files/de/mozilla/add-ons/webextensions/api/browseraction/setpopup/index.html b/files/de/mozilla/add-ons/webextensions/api/browseraction/setpopup/index.html
new file mode 100644
index 0000000000..2a4a40e794
--- /dev/null
+++ b/files/de/mozilla/add-ons/webextensions/api/browseraction/setpopup/index.html
@@ -0,0 +1,136 @@
+---
+title: browserAction.setPopup()
+slug: Mozilla/Add-ons/WebExtensions/API/browserAction/setPopup
+translation_of: Mozilla/Add-ons/WebExtensions/API/browserAction/setPopup
+---
+<div>{{AddonSidebar()}}</div>
+
+<p>Sets the HTML document that will be opened as a popup when the user clicks on the browser action's icon. Tabs without a specific popup will inherit the global popup, which defaults to the <a href="https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/manifest.json/browser_action"><code>default_popup</code></a> specified in the manifest.</p>
+
+<h2 id="Syntax">Syntax</h2>
+
+<pre class="syntaxbox brush:js">browser.browserAction.setPopup(
+ details // object
+)
+</pre>
+
+<h3 id="Parameters">Parameters</h3>
+
+<dl>
+ <dt><code>details</code></dt>
+ <dd><code>object</code>.</dd>
+ <dd>
+ <dl class="reference-values">
+ <dt><code>tabId</code>{{optional_inline}}</dt>
+ <dd><code>integer</code>. Sets the popup only for a specific tab. The popup is reset when the user navigates this tab to a new page.</dd>
+ <dt><code>windowId</code>{{optional_inline}}</dt>
+ <dd><code>integer</code>. Sets the popup only for the specified window.</dd>
+ </dl>
+
+ <dl class="reference-values">
+ <dt><code>popup</code></dt>
+ <dd>
+ <p><code>string</code> or <code>null</code>. The HTML file to show in a popup, specified as a URL.</p>
+
+ <p>This can point to a file packaged within the extension (for example, created using {{WebExtAPIRef("extension.getURL")}}), or a remote document (e.g. <code>https://example.org/</code>).</p>
+
+ <p>If an empty string (<code>""</code>) is passed here, the popup is disabled, and the extension will receive {{WebExtAPIRef("browserAction.onClicked")}} events.</p>
+
+ <p>If <code>popup</code> is <code>null</code>:</p>
+
+ <p>If <code>tabId</code> is specified, removes the tab-specific popup so that the tab inherits the global popup.</p>
+
+ <p>If <code>windowId</code> is specified, removes the window-specific popup so that the window inherits the global popup.</p>
+
+ <p>Otherwise it reverts the global popup to the default value.</p>
+ </dd>
+ </dl>
+ </dd>
+</dl>
+
+<ul>
+ <li>If <code>windowId</code> and <code>tabId</code> are both supplied, the function fails and the popup is not set.</li>
+ <li>If <code>windowId</code> and <code>tabId</code> are both omitted, the global popup is set.</li>
+</ul>
+
+<h2 id="Browser_compatibility">Browser compatibility</h2>
+
+<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p>
+
+<p>{{Compat("webextensions.api.browserAction.setPopup",2)}}</p>
+
+<h2 id="Examples">Examples</h2>
+
+<p>This code adds a pair of context menu items that you can use to switch between two popups. Note that you'll need the "contextMenus" <a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/manifest.json/permissions">permission</a> set in the extension's manifest to create context menu items.</p>
+
+<pre class="brush: js">function onCreated() {
+ if (browser.runtime.lastError) {
+ console.log("error creating item:" + browser.runtime.lastError);
+ } else {
+ console.log("item created successfully");
+ }
+}
+
+browser.contextMenus.create({
+ id: "popup-1",
+ type: "radio",
+ title: "Popup 1",
+ contexts: ["all"],
+ checked: true
+}, onCreated);
+
+browser.contextMenus.create({
+ id: "popup-2",
+ type: "radio",
+ title: "Popup 2",
+ contexts: ["all"],
+ checked: false
+}, onCreated);
+
+browser.contextMenus.onClicked.addListener(function(info, tab) {
+ if (info.menuItemId == "popup-1") {
+ browser.browserAction.setPopup({popup: "/popup/popup1.html"})
+ } else if (info.menuItemId == "popup-2") {
+ browser.browserAction.setPopup({popup: "/popup/popup2.html"})
+ }
+});</pre>
+
+<p>{{WebExtExamples}}</p>
+
+<div class="note"><strong>Acknowledgements</strong>
+
+<p>This API is based on Chromium's <a href="https://developer.chrome.com/extensions/browserAction#method-setPopup"><code>chrome.browserAction</code></a> API. This documentation is derived from <a href="https://chromium.googlesource.com/chromium/src/+/master/chrome/common/extensions/api/browser_action.json"><code>browser_action.json</code></a> in the Chromium code.</p>
+
+<p>Microsoft Edge compatibility data is supplied by Microsoft Corporation and is included here under the Creative Commons Attribution 3.0 United States License.</p>
+</div>
+
+<div class="hidden">
+<pre>// Copyright 2015 The Chromium Authors. All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+</pre>
+</div>
diff --git a/files/de/mozilla/add-ons/webextensions/api/commands/index.html b/files/de/mozilla/add-ons/webextensions/api/commands/index.html
new file mode 100644
index 0000000000..af45cea002
--- /dev/null
+++ b/files/de/mozilla/add-ons/webextensions/api/commands/index.html
@@ -0,0 +1,83 @@
+---
+title: commands
+slug: Mozilla/Add-ons/WebExtensions/API/commands
+translation_of: Mozilla/Add-ons/WebExtensions/API/commands
+---
+<div>{{AddonSidebar}}</div>
+
+<p>Verwenden Sie die Ausführungsbefehle der Benutzer, die Sie mit Hilfe des <a href="https://developer.mozilla.org/en-US/Add-ons/WebExtensions/manifest.json/commands"><code>Schlüssels commands</code> der manifest.json</a> registriert haben.</p>
+
+<h2 id="Typen">Typen</h2>
+
+<dl>
+ <dt>{{WebExtAPIRef("commands.Command")}}</dt>
+ <dd>Objekt, das einen Befehl repräsentiert. Es enthält die für den Befehl im <a href="https://developer.mozilla.org/en-US/Add-ons/WebExtensions/manifest.json/commands"><code>Schlüssel commands der </code>manifest.json</a> festgelegten Informationen.</dd>
+</dl>
+
+<h2 id="Funktionen">Funktionen</h2>
+
+<dl>
+ <dt>{{WebExtAPIRef("commands.getAll")}}</dt>
+ <dd>
+ <p>Stellt alle registrierten Befehle für diese Erweiterung zur Verfügung.</p>
+ </dd>
+ <dt>{{WebExtAPIRef("commands.reset")}}</dt>
+ <dd>
+ <p>Angegebene Befehlsbeschreibung und das Tastaturkürzel auf die im Manifest-Schlüssel angegebenen Werte zurücksetzen.</p>
+ </dd>
+ <dt>{{WebExtAPIRef("commands.update")}}</dt>
+ <dd>
+ <p>Beschreibung oder Tastenkürzel des angegebenen Befehls ändern.</p>
+ </dd>
+</dl>
+
+<h2 id="Ereignisse">Ereignisse</h2>
+
+<dl>
+ <dt>{{WebExtAPIRef("commands.onCommand")}}</dt>
+ <dd>
+ <div>Wird ausgelöst, wenn ein Befehl mit Hilfe seines zugewiesenen Tastenkürzels ausgeführt wird.</div>
+ </dd>
+</dl>
+
+<h2 id="Browserkompatibilität">Browserkompatibilität</h2>
+
+<p>{{Compat("webextensions.api.commands")}} {{WebExtExamples("h2")}}</p>
+
+<div class="note"><strong>Danksagungen</strong>
+
+<p>Diese API basiert auf der API <a href="https://developer.chrome.com/extensions/commands"><code>chrome.commands</code></a> von Chromium.</p>
+
+<p>Die Kompatibilitätsdaten von Microsoft Edge werden von der Microsoft Corporation bereitgestellt und stehen hier unter der Lizenz Creative Commons Attribution 3.0 United States.</p>
+</div>
+
+<div class="hidden">
+<pre>// Copyright 2015 The Chromium Authors. All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+</pre>
+</div>
diff --git a/files/de/mozilla/add-ons/webextensions/api/downloads/index.html b/files/de/mozilla/add-ons/webextensions/api/downloads/index.html
new file mode 100644
index 0000000000..7363cde811
--- /dev/null
+++ b/files/de/mozilla/add-ons/webextensions/api/downloads/index.html
@@ -0,0 +1,123 @@
+---
+title: downloads
+slug: Mozilla/Add-ons/WebExtensions/API/downloads
+translation_of: Mozilla/Add-ons/WebExtensions/API/downloads
+---
+<div>0ü</div>
+
+<p>Enables extensions to interact with the browser's download manager. You can use this API module to download files, cancel, pause, resume downloads, and show downloaded files in the file manager.</p>
+
+<p>To use this API you need to have the "downloads" <a href="/en-US/Add-ons/WebExtensions/manifest.json/permissions#API_permissions">API permission</a> specified in your <a href="https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/manifest.json">manifest.json</a> file.</p>
+
+<h2 id="Types">Types</h2>
+
+<dl>
+ <dt>{{WebExtAPIRef("downloads.FilenameConflictAction")}}</dt>
+ <dd>Defines options for what to do if the name of a downloaded file conflicts with an existing file.</dd>
+ <dt>{{WebExtAPIRef("downloads.InterruptReason")}}</dt>
+ <dd>Defines a set of possible reasons why a download was interrupted.</dd>
+ <dt>{{WebExtAPIRef("downloads.DangerType")}}</dt>
+ <dd>Defines a set of common warnings of possible dangers associated with downloadable files.</dd>
+ <dt>{{WebExtAPIRef("downloads.State")}}</dt>
+ <dd>Defines different states that a current download can be in.</dd>
+ <dt>{{WebExtAPIRef("downloads.DownloadItem")}}</dt>
+ <dd>Represents a downloaded file.</dd>
+ <dt>{{WebExtAPIRef("downloads.StringDelta")}}</dt>
+ <dd>Represents the difference between two strings.</dd>
+ <dt>{{WebExtAPIRef("downloads.DoubleDelta")}}</dt>
+ <dd>Represents the difference between two doubles.</dd>
+ <dt>{{WebExtAPIRef("downloads.BooleanDelta")}}</dt>
+ <dd>Represents the difference between two booleans.</dd>
+ <dt>{{WebExtAPIRef("downloads.DownloadTime")}}</dt>
+ <dd>Represents the time a download took to complete.</dd>
+ <dt>{{WebExtAPIRef("downloads.DownloadQuery")}}</dt>
+ <dd>Defines a set of parameters that can be used to search the downloads manager for a specific set of downloads.</dd>
+</dl>
+
+<h2 id="Functions">Functions</h2>
+
+<dl>
+ <dt>{{WebExtAPIRef("downloads.download()")}}</dt>
+ <dd>Downloads a file, given its URL and other optional preferences.</dd>
+ <dt>{{WebExtAPIRef("downloads.search()")}}</dt>
+ <dd>Queries the {{WebExtAPIRef("downloads.DownloadItem", "DownloadItems")}} available in the browser's downloads manager, and returns those that match the specified search criteria.</dd>
+ <dt>{{WebExtAPIRef("downloads.pause()")}}</dt>
+ <dd>Pauses a download.</dd>
+ <dt>{{WebExtAPIRef("downloads.resume()")}}</dt>
+ <dd>Resumes a paused download.</dd>
+ <dt>{{WebExtAPIRef("downloads.cancel()")}}</dt>
+ <dd>Cancels a download.</dd>
+ <dt>{{WebExtAPIRef("downloads.getFileIcon()")}}</dt>
+ <dd>Retrieves an icon for the specified download.</dd>
+ <dt>{{WebExtAPIRef("downloads.open()")}}</dt>
+ <dd>Opens the downloaded file with its associated application.</dd>
+ <dt>{{WebExtAPIRef("downloads.show()")}}</dt>
+ <dd>Opens the platform's file manager application to show the downloaded file in its containing folder.</dd>
+ <dt>{{WebExtAPIRef("downloads.showDefaultFolder()")}}</dt>
+ <dd>Opens the platform's file manager application to show the default downloads folder.</dd>
+ <dt>{{WebExtAPIRef("downloads.erase()")}}</dt>
+ <dd>Erases matching {{WebExtAPIRef("downloads.DownloadItem", "DownloadItems")}} from the browser's download history, without deleting the downloaded files from disk.</dd>
+ <dt>{{WebExtAPIRef("downloads.removeFile()")}}</dt>
+ <dd>Removes a downloaded file from disk, but not from the browser's download history.</dd>
+ <dt>{{WebExtAPIRef("downloads.acceptDanger()")}}</dt>
+ <dd>Prompts the user to accept or cancel a dangerous download.</dd>
+ <dt>{{WebExtAPIRef("downloads.drag()")}}</dt>
+ <dd>Initiates dragging the downloaded file to another application.</dd>
+ <dt>{{WebExtAPIRef("downloads.setShelfEnabled()")}}</dt>
+ <dd>Enables or disables the gray shelf at the bottom of every window associated with the current browser profile. The shelf will be disabled as long as at least one extension has disabled it.</dd>
+</dl>
+
+<h2 id="Events">Events</h2>
+
+<dl>
+ <dt>{{WebExtAPIRef("downloads.onCreated")}}</dt>
+ <dd>Fires with the {{WebExtAPIRef("downloads.DownloadItem", "DownloadItem")}} object when a download begins.</dd>
+ <dt>{{WebExtAPIRef("downloads.onErased")}}</dt>
+ <dd>Fires with the <code>downloadId</code> when a download is erased from history.</dd>
+ <dt>{{WebExtAPIRef("downloads.onChanged")}}</dt>
+ <dd>When any of a {{WebExtAPIRef("downloads.DownloadItem", "DownloadItem")}}'s properties except <code>bytesReceived</code> changes, this event fires with the <code>downloadId</code> and an object containing the properties that changed.</dd>
+</dl>
+
+<h2 id="Browser_compatibility">Browser compatibility</h2>
+
+<p>{{Compat("webextensions.api.downloads")}}</p>
+
+<p>{{WebExtExamples("h2")}}</p>
+
+<div class="note"><strong>Acknowledgements</strong>
+
+<p>This API is based on Chromium's <a href="https://developer.chrome.com/extensions/downloads"><code>chrome.downloads</code></a> API.</p>
+
+<p>Microsoft Edge compatibility data is supplied by Microsoft Corporation and is included here under the Creative Commons Attribution 3.0 United States License.</p>
+</div>
+
+<div class="hidden">
+<pre>// Copyright 2015 The Chromium Authors. All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+</pre>
+</div>
diff --git a/files/de/mozilla/add-ons/webextensions/api/index.html b/files/de/mozilla/add-ons/webextensions/api/index.html
new file mode 100644
index 0000000000..1a500cdc0c
--- /dev/null
+++ b/files/de/mozilla/add-ons/webextensions/api/index.html
@@ -0,0 +1,51 @@
+---
+title: JavaScript APIs
+slug: Mozilla/Add-ons/WebExtensions/API
+tags:
+ - NeedsTranslation
+ - TopicStub
+ - WebExtensions
+translation_of: Mozilla/Add-ons/WebExtensions/API
+---
+<div>{{AddonSidebar}}</div>
+
+<div>
+<p>JavaScript APIs for WebExtensions can be used inside the extension's <a href="https://developer.mozilla.org/en-US/Add-ons/WebExtensions/Anatomy_of_a_WebExtension#Background_scripts">background scripts</a> and in any other documents bundled with the extension, including <a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/Browser_action">browser action</a> or <a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/Page_actions">page action</a> popups, <a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/Sidebars">sidebars</a>, <a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/Options_pages">options pages</a>, or <a href="/en-US/Add-ons/WebExtensions/manifest.json/chrome_url_overrides">new tab pages</a>. A few of these APIs can also be accessed by an extension's <a href="https://developer.mozilla.org/en-US/Add-ons/WebExtensions/Anatomy_of_a_WebExtension#Content_scripts">content scripts</a> (see the <a href="https://developer.mozilla.org/en-US/Add-ons/WebExtensions/Content_scripts#WebExtension_APIs">list in the content script guide</a>).</p>
+
+<p>To use the more powerful APIs you need to <a href="https://developer.mozilla.org/en-US/Add-ons/WebExtensions/manifest.json/permissions">request permission</a> in your extension's manifest.json.</p>
+
+<p>You can access the APIs using the <code>browser</code> namespace:</p>
+
+<pre class="brush: js line-numbers language-js"><code class="language-js"><span class="keyword token">function</span> <span class="function token">logTabs</span><span class="punctuation token">(</span>tabs<span class="punctuation token">)</span> <span class="punctuation token">{</span>
+ console<span class="punctuation token">.</span><span class="function token">log</span><span class="punctuation token">(</span>tabs<span class="punctuation token">)</span><span class="punctuation token">;</span>
+<span class="punctuation token">}</span>
+
+browser<span class="punctuation token">.</span>tabs<span class="punctuation token">.</span><span class="function token">query</span><span class="punctuation token">(</span><span class="punctuation token">{</span>currentWindow<span class="punctuation token">:</span> <span class="keyword token">true</span><span class="punctuation token">}</span><span class="punctuation token">,</span> logTabs<span class="punctuation token">)</span><span class="punctuation token">;</span></code></pre>
+</div>
+
+<div>
+<p>Many of the APIs are asynchronous, returning a <code><a href="/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise">Promise</a></code>:</p>
+
+<pre class="brush: js line-numbers language-js"><code class="language-js"><span class="keyword token">function</span> <span class="function token">logCookie</span><span class="punctuation token">(</span>c<span class="punctuation token">)</span> <span class="punctuation token">{</span>
+ console<span class="punctuation token">.</span><span class="function token">log</span><span class="punctuation token">(</span>c<span class="punctuation token">)</span><span class="punctuation token">;</span>
+<span class="punctuation token">}</span>
+
+<span class="keyword token">function</span> <span class="function token">logError</span><span class="punctuation token">(</span>e<span class="punctuation token">)</span> <span class="punctuation token">{</span>
+ console<span class="punctuation token">.</span><span class="function token">error</span><span class="punctuation token">(</span>e<span class="punctuation token">)</span><span class="punctuation token">;</span>
+<span class="punctuation token">}</span>
+
+<span class="keyword token">var</span> setCookie <span class="operator token">=</span> browser<span class="punctuation token">.</span>cookies<span class="punctuation token">.</span><span class="keyword token">set</span><span class="punctuation token">(</span>
+ <span class="punctuation token">{</span>url<span class="punctuation token">:</span> <span class="string token">"https://developer.mozilla.org/"</span><span class="punctuation token">}</span>
+<span class="punctuation token">)</span><span class="punctuation token">;</span>
+setCookie<span class="punctuation token">.</span><span class="function token">then</span><span class="punctuation token">(</span>logCookie<span class="punctuation token">,</span> logError<span class="punctuation token">)</span><span class="punctuation token">;</span></code></pre>
+</div>
+
+<div>
+<p>Note that this is different from Google Chrome's extension system, which uses the <code>chrome</code> namespace instead of <code>browser</code>, and which uses callbacks instead of promises for asynchronous functions. As a porting aid, the Firefox implementation of WebExtensions APIs supports <code>chrome</code> and callbacks as well as <code>browser</code> and promises. Mozilla has also written a polyfill which enables code that uses <code>browser</code> and promises to work unchanged in Chrome: <a class="external external-icon" href="https://github.com/mozilla/webextension-polyfill">https://github.com/mozilla/webextension-polyfill</a>.</p>
+
+<p>Microsoft Edge uses the <code>browser</code> namespace, but doesn't yet support promise-based asynchronous APIs. In Edge, for the time being, asynchronous APIs must use callbacks.</p>
+
+<p>Not all browsers support all the APIs: for the details, see <a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/Browser_support_for_JavaScript_APIs">Browser support for JavaScript APIs</a>.</p>
+</div>
+
+<div>{{SubpagesWithSummaries}}</div>
diff --git a/files/de/mozilla/add-ons/webextensions/api/lesezeich/index.html b/files/de/mozilla/add-ons/webextensions/api/lesezeich/index.html
new file mode 100644
index 0000000000..7c43bda2af
--- /dev/null
+++ b/files/de/mozilla/add-ons/webextensions/api/lesezeich/index.html
@@ -0,0 +1,121 @@
+---
+title: Lesezeichen
+slug: Mozilla/Add-ons/WebExtensions/API/Lesezeich.
+translation_of: Mozilla/Add-ons/WebExtensions/API/bookmarks
+---
+<div>{{AddonSidebar}}</div>
+
+<p>Die <a href="/en-US/docs/Mozilla/Add-ons/WebExtensions">WebExtensions</a> {{WebExtAPIRef("bookmarks")}} API erlaubt es einer Erweiterung mit dem Lesezeichensystem des Browsers interagieren und dieses zu manipulieren. Sie können die API verwenden, um für Seiten Lesezeichen zu setzen, vorhandene Lesezeichen abzurufen und Lesezeichen zu bearbeiten, zu entfernen und zu organisieren.</p>
+
+<p>Um diese API zu verwenden, muss die Erweiterung die <a href="https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/manifest.json/permissions">Berechtigung</a> "Lesezeichen" in der <code><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/manifest.json">manifest.json</a></code> Datei besitzen.</p>
+
+<h2 id="Types">Types</h2>
+
+<dl>
+ <dt>{{WebExtAPIRef("bookmarks.BookmarkTreeNodeUnmodifiable")}}</dt>
+ <dd>Ein {{jsxref("String")}} enum, das angibt, warum ein Lesezeichen oder ein Ordner unmodifizierbar ist.</dd>
+ <dt>{{WebExtAPIRef("bookmarks.BookmarkTreeNode")}}</dt>
+ <dd>Stellt ein Lesezeichen oder einen Ordner im Lesezeichenbaum dar.</dd>
+ <dt>{{WebExtAPIRef("bookmarks.CreateDetails")}}</dt>
+ <dd>Enthält Informationen, die bei der Erstellung eines neuen Lesezeichens an die {{WebExtAPIRef("bookmarks.create()")}} Funktion übergeben werden.</dd>
+</dl>
+
+<h2 id="Functions">Functions</h2>
+
+<dl>
+ <dt>{{WebExtAPIRef("bookmarks.create()")}}</dt>
+ <dd>Erstellt ein Lesezeichen oder Ordner.</dd>
+ <dt>{{WebExtAPIRef("bookmarks.get()")}}</dt>
+ <dd>Ruft eine oder mehrere {{WebExtAPIRef("bookmarks.BookmarkTreeNode", "BookmarkTreeNode")}} ab und übergibt eine Lesezeichen-ID oder ein Array von Lesezeichen ID.</dd>
+ <dt>{{WebExtAPIRef("bookmarks.getChildren()")}}</dt>
+ <dd>Ruft die Kinder des angegebenen {{WebExtAPIRef("bookmarks.BookmarkTreeNode", "BookmarkTreeNode")}} ab.</dd>
+ <dt>{{WebExtAPIRef("bookmarks.getRecent()")}}</dt>
+ <dd>Ruft eine angeforderte Anzahl von zuletzt hinzugefügten Lesezeichen ab.</dd>
+ <dt>{{WebExtAPIRef("bookmarks.getSubTree()")}}</dt>
+ <dd>Ruft einen Teil des Lesezeichenbaums ab und beginnt am angegebenen Knoten.</dd>
+ <dt>{{WebExtAPIRef("bookmarks.getTree()")}}</dt>
+ <dd>Ruft den gesamten Lesezeichenbaum in ein Array von {{WebExtAPIRef("bookmarks.BookmarkTreeNode", "BookmarkTreeNode")}} Objekte auf.</dd>
+ <dt>{{WebExtAPIRef("bookmarks.move()")}}</dt>
+ <dd>Moves the specified {{WebExtAPIRef("bookmarks.BookmarkTreeNode", "BookmarkTreeNode")}} to a new location in the bookmark tree.</dd>
+ <dt>{{WebExtAPIRef("bookmarks.remove()")}}</dt>
+ <dd>Removes a bookmark or an empty bookmark folder, given the node's ID.</dd>
+ <dt>{{WebExtAPIRef("bookmarks.removeTree()")}}</dt>
+ <dd>Recursively removes a bookmark folder; that is, given the ID of a folder node, removes that node and all its descendants.</dd>
+ <dt>{{WebExtAPIRef("bookmarks.search()")}}</dt>
+ <dd>Searches for {{WebExtAPIRef("bookmarks.BookmarkTreeNode", "BookmarkTreeNode")}}s matching a specified set of criteria.</dd>
+ <dt>{{WebExtAPIRef("bookmarks.update()")}}</dt>
+ <dd>Updates the title and/or URL of a bookmark, or the name of a bookmark folder, given the bookmark's ID.</dd>
+</dl>
+
+<h2 id="Events">Events</h2>
+
+<dl>
+ <dt>{{WebExtAPIRef("bookmarks.onCreated")}}</dt>
+ <dd>Fired when a bookmark or folder is created.</dd>
+ <dt>{{WebExtAPIRef("bookmarks.onRemoved")}}</dt>
+ <dd>Fired when a bookmark or folder is removed. When a folder is removed recursively, a single notification is fired for the folder, and none for its contents.</dd>
+ <dt>{{WebExtAPIRef("bookmarks.onChanged")}}</dt>
+ <dd>Fired when a bookmark or folder changes. Currently, only <code>title</code> and <code>url</code> changes trigger this.</dd>
+ <dt>{{WebExtAPIRef("bookmarks.onMoved")}}</dt>
+ <dd>Fired when a bookmark or folder is moved to a different parent folder or to a new offset within its folder.</dd>
+ <dt>{{WebExtAPIRef("bookmarks.onChildrenReordered")}}</dt>
+ <dd>Fired when the user has sorted the children of a folder in the browser's UI. This is not called as a result of a {{WebExtAPIRef("bookmarks.move", "move()")}}.</dd>
+ <dt>{{WebExtAPIRef("bookmarks.onImportBegan")}}</dt>
+ <dd>Fired when a bookmark import session is begun. Expensive observers should ignore {{WebExtAPIRef("bookmarks.onCreated")}} updates until {{WebExtAPIRef("bookmarks.onImportEnded")}} is fired. Observers should still handle other notifications immediately.</dd>
+ <dt>{{WebExtAPIRef("bookmarks.onImportEnded")}}</dt>
+ <dd>Fired when a bookmark import session has finished.</dd>
+</dl>
+
+<h2 id="Browser_compatibility">Browser compatibility</h2>
+
+<p>{{Compat("webextensions.api.bookmarks")}}</p>
+
+<div class="hidden note">
+<p>The "Chrome incompatibilities" section is included from <a href="https://developer.mozilla.org/en-US/Add-ons/WebExtensions/Chrome_incompatibilities"> https://developer.mozilla.org/en-US/Add-ons/WebExtensions/Chrome_incompatibilities</a> using the <a href="/en-US/docs/Template:WebExtChromeCompat">WebExtChromeCompat</a> macro.</p>
+
+<p>If you need to update this content, edit <a href="https://developer.mozilla.org/en-US/Add-ons/WebExtensions/Chrome_incompatibilities">https://developer.mozilla.org/en-US/Add-ons/WebExtensions/Chrome_incompatibilities</a>, then shift-refresh this page to see your changes.</p>
+</div>
+
+<h3 id="Edge_incompatibilities">Edge incompatibilities</h3>
+
+<p>Promises are not supported in Edge. Use callbacks instead.</p>
+
+<p>{{WebExtExamples("h2")}}</p>
+
+<div class="note"><strong>Acknowledgements</strong>
+
+<p>This API is based on Chromium's <a href="https://developer.chrome.com/extensions/bookmarks"><code>chrome.bookmarks</code></a> API. This documentation is derived from <a href="https://chromium.googlesource.com/chromium/src/+/master/chrome/common/extensions/api/bookmarks.json"><code>bookmarks.json</code></a> in the Chromium code.</p>
+
+<p>Microsoft Edge compatibility data is supplied by Microsoft Corporation and is included here under the Creative Commons Attribution 3.0 United States License.</p>
+</div>
+
+<div class="hidden">
+<pre>// Copyright 2015 The Chromium Authors. All rights reserved.
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+</pre>
+</div>
diff --git a/files/de/mozilla/add-ons/webextensions/arbeiten_mit_taps_api/index.html b/files/de/mozilla/add-ons/webextensions/arbeiten_mit_taps_api/index.html
new file mode 100644
index 0000000000..39498fa606
--- /dev/null
+++ b/files/de/mozilla/add-ons/webextensions/arbeiten_mit_taps_api/index.html
@@ -0,0 +1,608 @@
+---
+title: Arbeiten mit Taps API
+slug: Mozilla/Add-ons/WebExtensions/Arbeiten_mit_Taps_API
+tags:
+ - tabs
+translation_of: Mozilla/Add-ons/WebExtensions/Working_with_the_Tabs_API
+---
+<p>{{AddonSidebar}}</p>
+
+<p>Tabs lassen einen Benutzer mehrere Webseiten in seinem Browserfenster öffnen und wechseln dann zwischen diesen Webseiten. Mit der Tabs API können Sie mit diesen Tabs arbeiten und diese manipulieren, um Programme zu erstellen, die Nutzern neue Möglichkeiten bieten, mit Tabs zu arbeiten oder die Funktionen Ihrer Erweiterung zu liefern.</p>
+
+<p>In diesem "how-to"-Artikel schauen wir uns an:</p>
+
+<ul>
+ <li>Berechtigungen, die für die Verwendung der Tabs API benötigt werden.</li>
+ <li>Mehr über Tabs und ihre Eigenschaften erfahren Sie mit {{WebExtAPIRef("tabs.query")}}.</li>
+ <li>Tabs erstellen, duplizieren, verschieben, aktualisieren, neu laden und entfernen.</li>
+ <li>Manipulationen des Zoomniveaus eines Tab.</li>
+ <li>Manipulationen eines Tabs CSS.</li>
+</ul>
+
+<p>Wir schließen dann mit Blick auf einige andere, andere Funktionen, die von der API angeboten werden.</p>
+
+<div class="blockIndicator note">
+<p><strong>Hinweis:</strong> Es gibt einige Tab-API-Funktionen, die an anderer Stelle abgedeckt sind. Dies sind die Methoden, die Sie verwenden können, um den Inhalt der Registerkarten mit Skripten zu manipulieren  ({{WebExtAPIRef("tabs.connect")}},  {{WebExtAPIRef("tabs.sendMessage")}} und  {{WebExtAPIRef("tabs.executeScript")}}). Wenn Sie mehr Informationen über diese Methoden wünschen, lesen Sie die <a href="https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/Content_scripts">Artikelinhaltskripte</a> Concepts und die Anleitung ändern Sie<a href="https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/Modify_a_web_page">eine Webseite</a>.</p>
+</div>
+
+<p><strong>Berechtigungen und die Tabs API</strong></p>
+
+<p>Für die meisten Tabs API-Funktionen benötigen Sie keine Berechtigungen; Es gibt jedoch einige Ausnahmen:</p>
+
+<ul>
+ <li>Für den Zugriff auf die Eigenschaften <code>Tab.url</code>, <code>Tab.title </code>und <code>Tab.favIconUrl</code> des Tab-Objekts ist die Erlaubnis "Tabs" erforderlich. In Firefox benötigen Sie auch "Tabs", um eine <a href="https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/tabs/query">Abfrage</a> per URL durchzuführen.</li>
+ <li><a href="https://developer.mozilla.org/en-US/Add-ons/WebExtensions/manifest.json/permissions#Host_permissions">Die Host-Berechtigung</a> ist für die {{WebExtAPIRef("tabs.executeScript")}} oder  {{WebExtAPIRef("tabs.insertCSS")}}. erforderlich.</li>
+</ul>
+
+<p>Im Folgenden können Sie in der manifest.json-Datei Ihrer Erweiterung die Erlaubnis "Tabs " beantragen :</p>
+
+<pre class="brush: json line-numbers language-json"><code class="language-json"><span class="property token">"permissions"</span><span class="operator token">:</span> <span class="punctuation token">[</span>
+ <span class="string token">"&lt;all_urls&gt;"</span><span class="punctuation token">,</span>
+ <span class="string token">"tabs"</span>
+<span class="punctuation token">]</span><span class="punctuation token">,</span></code></pre>
+
+<p>Diese Anfrage gibt Ihnen die Nutzung aller Tabs API-Funktion auf allen Websites, die Ihr Nutzer besucht. Es gibt auch einen alternativen Ansatz für die Anforderung von Berechtigungen zur Verwendung von {{WebExtAPIRef("tabs.executeScript")}} or {{WebExtAPIRef("tabs.insertCSS")}}, bei dem Sie keine Host-Erlaubnis benötigen, in Form von <a href="https://developer.mozilla.org/en-US/Add-ons/WebExtensions/manifest.json/permissions#activeTab_permission">"activeTab"</a>. Diese Erlaubnis bietet die gleichen Rechte wie "Tabs" mit&lt; all _ urls &gt;,aber mit zwei Einschränkungen:</p>
+
+<ul>
+ <li>Der Benutzer muss mit der Erweiterung über seine Browser-oder Seiten-Aktion, Kontextmenü oder Tastenkombination interagieren.</li>
+ <li>Es erteilt nur die Erlaubnis innerhalb der aktiven Registerkarte.</li>
+</ul>
+
+<p>Der Vorteil dieses Ansatzes ist, dass der Benutzer keine Berechtigung erhält, die besagt, dass Ihre Erweiterung "Zugriff auf Ihre Daten für alle Websites" kann. Das liegt daran , dass &lt; all _ urls &gt; Erlaubnis einer Erweiterung die Möglichkeit gibt, Skripte in jedem Tab auszuführen, zu jeder Zeit, die sie mag, während <a href="https://developer.mozilla.org/en-US/Add-ons/WebExtensions/manifest.json/permissions#activeTab_permission">"activeTab"</a> darauf beschränkt ist, der Erweiterung zu erlauben, eine vom Benutzer angeforderte Aktion in der Aktuelle Registerkarte.</p>
+
+<p><strong>Mehr über Tabs und ihre Eigenschaften entdecken</strong></p>
+
+<p>Es wird Gelegenheiten geben, in denen Sie eine Liste aller Tabs in allen Browser-Fenstern erhalten wollen. Zu anderen Zeiten möchten Sie vielleicht eine Untergruppe von Tabs finden, die bestimmten Kriterien entsprechen, wie zum Beispiel solchen, die von einem bestimmten Tab geöffnet werden oder Seiten aus einer bestimmten Domain anzeigen. Und wenn Sie Ihre Liste der Tabs haben, werden Sie wahrscheinlich mehr über ihre Eigenschaften wissen wollen.</p>
+
+<p>Hier kommt die {{WebExtAPIRef("tabs.query")}} in den Fall. Wird allein verwendet, um alle Tabs zu erhalten oder das queryInfo-Objekt zu nehmen —, um Abfragekriterien anzugeben, wie zum Beispiel, ob die Registerkarte im aktuellen Fenster aktiv ist, oder eines oder mehrere von 17 Kriterien —  {{WebExtAPIRef("tabs.query")}} gibt ein Array von  {{WebExtAPIRef("tabs.Tab")}} Objekte, die Informationen über die Registerkarten enthalten.</p>
+
+<p>Wenn Sie nur Informationen über den aktuellen Reiter wünschen, können Sie eine {{WebExtAPIRef("tabs.Tab")}} erhalten. Objekt für diese Registerkarte mit {{WebExtAPIRef("tabs.getCurrent")}}. Wenn Sie eine Tab-ID haben, können Sie die  {{WebExtAPIRef("tabs.Tab")}} Objekt mit {{WebExtAPIRef("tabs.get")}}.</p>
+
+<div class="blockIndicator note">
+<p><strong>notiz:</strong></p>
+
+<ul>
+ <li><strong>In Chrome</strong> kann der Benutzer mehrere Tabs in einem Fenster auswählen, und die Tabs API sieht diese als hervorgehobene Tabs.</li>
+ <li><strong>In Firefox</strong> kann der Benutzer mehrere Tabs nicht auswählen, daher sind "hervorgehoben" und "aktiv" synonym.</li>
+</ul>
+</div>
+
+<h3 id="Wie_man_mit_dem_Beispiel_geht">Wie man mit dem Beispiel geht</h3>
+
+<p>Um zu sehen, wie  {{WebExtAPIRef("tabs.query")}} und  {{WebExtAPIRef("tabs.Tab")}} werden verwendet, lassen Sie uns durch, wie  das <a href="https://github.com/mdn/webextensions-examples/tree/master/tabs-tabs-tabs">Tabs-Tabs-Tabs </a>Beispiel fügt die Liste von" Schalter auf Tabs "zu seiner Toolbar-Taste Popup.</p>
+
+<p><a href="https://mdn.mozillademos.org/files/15723/Switch_to_tab.png"><img alt="" src="https://mdn.mozillademos.org/files/15723/Switch_to_tab.png" style="height: 645px; width: 369px;"></a></p>
+
+<h3 id="manifest.json"><strong>manifest.json</strong></h3>
+
+<p>Hier ist das <a href="https://github.com/mdn/webextensions-examples/blob/master/tabs-tabs-tabs/manifest.json">manifest.json</a>:</p>
+
+<pre class="brush: json line-numbers language-json"><code class="language-json"><span class="punctuation token">{</span>
+ <span class="property token">"browser_action"</span><span class="operator token">:</span> <span class="punctuation token">{</span>
+ <span class="property token">"browser_style"</span><span class="operator token">:</span> <span class="boolean token">true</span><span class="punctuation token">,</span>
+ <span class="property token">"default_title"</span><span class="operator token">:</span> <span class="string token">"Tabs, tabs, tabs"</span><span class="punctuation token">,</span>
+ <span class="property token">"default_popup"</span><span class="operator token">:</span> <span class="string token">"tabs.html"</span>
+ <span class="punctuation token">}</span><span class="punctuation token">,</span>
+ <span class="property token">"description"</span><span class="operator token">:</span> <span class="string token">"A list of methods you can perform on a tab."</span><span class="punctuation token">,</span>
+ <span class="property token">"homepage_url"</span><span class="operator token">:</span> <span class="string token">"https://github.com/mdn/webextensions-examples/tree/master/tabs-tabs-tabs"</span><span class="punctuation token">,</span>
+ <span class="property token">"manifest_version"</span><span class="operator token">:</span> <span class="number token">2</span><span class="punctuation token">,</span>
+ <span class="property token">"name"</span><span class="operator token">:</span> <span class="string token">"Tabs, tabs, tabs"</span><span class="punctuation token">,</span>
+ <span class="property token">"permissions"</span><span class="operator token">:</span> <span class="punctuation token">[</span>
+ <span class="string token">"tabs"</span>
+ <span class="punctuation token">]</span><span class="punctuation token">,</span>
+ <span class="property token">"version"</span><span class="operator token">:</span> <span class="string token">"1.0"</span>
+<span class="punctuation token">}</span></code></pre>
+
+<div class="blockIndicator note">
+<p>Hinweis:</p>
+
+<ul>
+ <li><strong>Tabs.html wird als Standard </strong><strong>_ Popup in</strong> browser<strong> _ </strong><strong>action</strong><strong>definiert.</strong>Es wird angezeigt, wenn der Benutzer auf das Symbollei-Symbol der Erweiterung klickt.</li>
+ <li><strong>Die Berechtigungen beinhalten Registerkarten. </strong>Dies ist notwendig, um die Tabelliste zu unterstützen, da die Erweiterung den Titel der Registerkarten für die Anzeige im Popup liest.</li>
+</ul>
+</div>
+
+<h3 id="Tabs.html">Tabs.html</h3>
+
+<p>Tabs.html definiert den Inhalt des Popups der Erweiterung:</p>
+
+<pre class="brush: html line-numbers language-html"><code class="language-html"><span class="doctype token">&lt;!DOCTYPE html&gt;</span>
+
+<span class="tag token"><span class="tag token"><span class="punctuation token">&lt;</span>html</span><span class="punctuation token">&gt;</span></span>
+
+ <span class="tag token"><span class="tag token"><span class="punctuation token">&lt;</span>head</span><span class="punctuation token">&gt;</span></span>
+ <span class="tag token"><span class="tag token"><span class="punctuation token">&lt;</span>meta</span> <span class="attr-name token">charset</span><span class="attr-value token"><span class="punctuation token">=</span><span class="punctuation token">"</span>utf-8<span class="punctuation token">"</span></span><span class="punctuation token">&gt;</span></span>
+ <span class="tag token"><span class="tag token"><span class="punctuation token">&lt;</span>link</span> <span class="attr-name token">rel</span><span class="attr-value token"><span class="punctuation token">=</span><span class="punctuation token">"</span>stylesheet<span class="punctuation token">"</span></span> <span class="attr-name token">href</span><span class="attr-value token"><span class="punctuation token">=</span><span class="punctuation token">"</span>tabs.css<span class="punctuation token">"</span></span><span class="punctuation token">/&gt;</span></span>
+ <span class="tag token"><span class="tag token"><span class="punctuation token">&lt;/</span>head</span><span class="punctuation token">&gt;</span></span>
+
+<span class="tag token"><span class="tag token"><span class="punctuation token">&lt;</span>body</span><span class="punctuation token">&gt;</span></span>
+
+ <span class="tag token"><span class="tag token"><span class="punctuation token">&lt;</span>div</span> <span class="attr-name token">class</span><span class="attr-value token"><span class="punctuation token">=</span><span class="punctuation token">"</span>panel<span class="punctuation token">"</span></span><span class="punctuation token">&gt;</span></span>
+ <span class="tag token"><span class="tag token"><span class="punctuation token">&lt;</span>div</span> <span class="attr-name token">class</span><span class="attr-value token"><span class="punctuation token">=</span><span class="punctuation token">"</span>panel-section panel-section-header<span class="punctuation token">"</span></span><span class="punctuation token">&gt;</span></span>
+ <span class="tag token"><span class="tag token"><span class="punctuation token">&lt;</span>div</span> <span class="attr-name token">class</span><span class="attr-value token"><span class="punctuation token">=</span><span class="punctuation token">"</span>text-section-header<span class="punctuation token">"</span></span><span class="punctuation token">&gt;</span></span>Tabs-tabs-tabs<span class="tag token"><span class="tag token"><span class="punctuation token">&lt;/</span>div</span><span class="punctuation token">&gt;</span></span>
+ <span class="tag token"><span class="tag token"><span class="punctuation token">&lt;/</span>div</span><span class="punctuation token">&gt;</span></span>
+
+ <span class="tag token"><span class="tag token"><span class="punctuation token">&lt;</span>a</span> <span class="attr-name token">href</span><span class="attr-value token"><span class="punctuation token">=</span><span class="punctuation token">"</span>#<span class="punctuation token">"</span></span> <span class="attr-name token">id</span><span class="attr-value token"><span class="punctuation token">=</span><span class="punctuation token">"</span>tabs-move-beginning<span class="punctuation token">"</span></span><span class="punctuation token">&gt;</span></span>Move active tab to the beginning of the window<span class="tag token"><span class="tag token"><span class="punctuation token">&lt;/</span>a</span><span class="punctuation token">&gt;</span></span><span class="tag token"><span class="tag token"><span class="punctuation token">&lt;</span>br</span><span class="punctuation token">&gt;</span></span>
+
+
+…
+
+Define the other menu items
+…
+
+ <span class="tag token"><span class="tag token"><span class="punctuation token">&lt;</span>div</span> <span class="attr-name token">class</span><span class="attr-value token"><span class="punctuation token">=</span><span class="punctuation token">"</span>switch-tabs<span class="punctuation token">"</span></span><span class="punctuation token">&gt;</span></span>
+
+ <span class="tag token"><span class="tag token"><span class="punctuation token">&lt;</span>p</span><span class="punctuation token">&gt;</span></span>Switch to tab<span class="tag token"><span class="tag token"><span class="punctuation token">&lt;/</span>p</span><span class="punctuation token">&gt;</span></span>
+
+ <span class="tag token"><span class="tag token"><span class="punctuation token">&lt;</span>div</span> <span class="attr-name token">id</span><span class="attr-value token"><span class="punctuation token">=</span><span class="punctuation token">"</span>tabs-list<span class="punctuation token">"</span></span><span class="punctuation token">&gt;</span></span><span class="tag token"><span class="tag token"><span class="punctuation token">&lt;/</span>div</span><span class="punctuation token">&gt;</span></span>
+
+ <span class="tag token"><span class="tag token"><span class="punctuation token">&lt;/</span>div</span><span class="punctuation token">&gt;</span></span>
+ <span class="tag token"><span class="tag token"><span class="punctuation token">&lt;/</span>div</span><span class="punctuation token">&gt;</span></span>
+
+ <span class="tag token"><span class="tag token"><span class="punctuation token">&lt;</span>script</span> <span class="attr-name token">src</span><span class="attr-value token"><span class="punctuation token">=</span><span class="punctuation token">"</span>tabs.js<span class="punctuation token">"</span></span><span class="punctuation token">&gt;</span></span><span class="tag token"><span class="tag token"><span class="punctuation token">&lt;/</span>script</span><span class="punctuation token">&gt;</span></span>
+
+<span class="tag token"><span class="tag token"><span class="punctuation token">&lt;/</span>body</span><span class="punctuation token">&gt;</span></span>
+
+<span class="tag token"><span class="tag token"><span class="punctuation token">&lt;/</span>html</span><span class="punctuation token">&gt;</span></span></code></pre>
+
+<p>Hier ist eine Zusammenfassung der oben genannten tut:</p>
+
+<ol>
+ <li>Die Menüpunkte werden deklariert.</li>
+ <li>Ein leerer <code>Div </code>mit der ID-<code>Tabs-Liste</code> wird deklariert, um die Liste der Tabs zu enthalten.</li>
+ <li>Tabs.js heißt.</li>
+</ol>
+
+<h3 id="Tabs.js">Tabs.js</h3>
+
+<p>In <a href="https://github.com/mdn/webextensions-examples/blob/master/tabs-tabs-tabs/tabs.js">tabs.js</a>werdenwir sehen, wie die Liste der Tabs aufgebaut und zum Popup hinzugefügt wird.  </p>
+
+<p><strong>Das Popup schaffen</strong></p>
+
+<p>Zunächst wird ein Event-Handler hinzugefügt, um ListTabs () auszuführen , wenn tabs.html geladen wird:</p>
+
+<pre>document.addEventListener ("DOMContentLoaded", hört Tabs);</pre>
+
+<p>Das erste, was <code>listTabs ()</code> tut, ist <code>getCurrentWindowTabs ()</code>zu nennen. Hier wird ein {{WebExtAPIRef("tabs.query")}} verwendet, um eine  {{WebExtAPIRef("tabs.Tab")}} zu erhalten. Objekt für die Tabs im aktuellen Fenster:</p>
+
+<pre class="brush: js line-numbers language-js"><code class="language-js"><span class="keyword token">function</span> <span class="function token">getCurrentWindowTabs</span><span class="punctuation token">(</span><span class="punctuation token">)</span> <span class="punctuation token">{</span>
+ <span class="keyword token">return</span> browser<span class="punctuation token">.</span>tabs<span class="punctuation token">.</span><span class="function token">query</span><span class="punctuation token">(</span><span class="punctuation token">{</span>currentWindow<span class="punctuation token">:</span> <span class="boolean token">true</span><span class="punctuation token">}</span><span class="punctuation token">)</span><span class="punctuation token">;</span>
+<span class="punctuation token">}</span></code></pre>
+
+<p>Jetzt ist <code>listTabs()</code> bereit , den Inhalt für das Popup zu erstellen.</p>
+
+<p>Zunächst:</p>
+
+<ol>
+ <li>Schnappen Sie sich die <code>tabs-list div</code>.</li>
+ <li>Erstellen Sie ein Dokumentenfragment (in das die Liste eingebaut wird).</li>
+ <li>Setzen Sie Zähler.</li>
+ <li>Klären Sie den Inhalt der <code>Tabs-Liste div</code>.</li>
+</ol>
+
+<pre class="brush: js line-numbers language-js"><code class="language-js"><span class="keyword token">function</span> <span class="function token">listTabs</span><span class="punctuation token">(</span><span class="punctuation token">)</span> <span class="punctuation token">{</span>
+<span class="function token"> getCurrentWindowTabs</span><span class="punctuation token">(</span><span class="punctuation token">)</span><span class="punctuation token">.</span><span class="function token">then</span><span class="punctuation token">(</span><span class="punctuation token">(</span><span class="parameter token">tabs</span><span class="punctuation token">)</span> <span class="operator token">=&gt;</span> <span class="punctuation token">{</span>
+ <span class="keyword token">let</span> tabsList <span class="operator token">=</span> document<span class="punctuation token">.</span><span class="function token">getElementById</span><span class="punctuation token">(</span><span class="string token">'tabs-list'</span><span class="punctuation token">)</span><span class="punctuation token">;</span>
+ <span class="keyword token">let</span> currentTabs <span class="operator token">=</span> document<span class="punctuation token">.</span><span class="function token">createDocumentFragment</span><span class="punctuation token">(</span><span class="punctuation token">)</span><span class="punctuation token">;</span>
+ <span class="keyword token">let</span> limit <span class="operator token">=</span> <span class="number token">5</span><span class="punctuation token">;</span>
+ <span class="keyword token">let</span> counter <span class="operator token">=</span> <span class="number token">0</span><span class="punctuation token">;</span>
+
+ tabsList<span class="punctuation token">.</span>textContent <span class="operator token">=</span> <span class="string token">''</span><span class="punctuation token">;</span></code></pre>
+
+<p>Als nächstes werden wir die Links für jeden Tab erstellen:</p>
+
+<ol>
+ <li>Schleifen Sie sich durch die ersten 5 Elemente aus der   {{WebExtAPIRef("tabs.Tab")}} Objekt.</li>
+ <li>Fügen Sie für jeden Artikel einen Hyperlink zum Dokumentenfragment hinzu.
+ <ul>
+ <li>Das Etikett des Links — das heißt, sein Text — wird mit dem Titel des Tab gesetzt (oder mit der ID, wenn er keinen Titel hat).</li>
+ <li>Die Adresse des Links wird mit der Personalausweis des Tabs gesetzt.</li>
+ </ul>
+ </li>
+</ol>
+
+<pre class="brush: js line-numbers language-js"><code class="language-js"> <span class="keyword token">for</span> <span class="punctuation token">(</span><span class="keyword token">let</span> tab <span class="keyword token">of</span> tabs<span class="punctuation token">)</span> <span class="punctuation token">{</span>
+ <span class="keyword token">if</span> <span class="punctuation token">(</span><span class="operator token">!</span>tab<span class="punctuation token">.</span>active <span class="operator token">&amp;&amp;</span> counter <span class="operator token">&lt;=</span> limit<span class="punctuation token">)</span> <span class="punctuation token">{</span>
+ <span class="keyword token">let</span> tabLink <span class="operator token">=</span> document<span class="punctuation token">.</span><span class="function token">createElement</span><span class="punctuation token">(</span><span class="string token">'a'</span><span class="punctuation token">)</span><span class="punctuation token">;</span>
+
+ tabLink<span class="punctuation token">.</span>textContent <span class="operator token">=</span> tab<span class="punctuation token">.</span>title <span class="operator token">||</span> tab<span class="punctuation token">.</span>id<span class="punctuation token">;</span>
+
+ tabLink<span class="punctuation token">.</span><span class="function token">setAttribute</span><span class="punctuation token">(</span><span class="string token">'href'</span><span class="punctuation token">,</span> tab<span class="punctuation token">.</span>id<span class="punctuation token">)</span><span class="punctuation token">;</span>
+ tabLink<span class="punctuation token">.</span>classList<span class="punctuation token">.</span><span class="function token">add</span><span class="punctuation token">(</span><span class="string token">'switch-tabs'</span><span class="punctuation token">)</span><span class="punctuation token">;</span>
+ currentTabs<span class="punctuation token">.</span><span class="function token">appendChild</span><span class="punctuation token">(</span>tabLink<span class="punctuation token">)</span><span class="punctuation token">;</span>
+ <span class="punctuation token">}</span>
+
+ counter <span class="operator token">+=</span> <span class="number token">1</span><span class="punctuation token">;</span>
+
+ <span class="punctuation token">}</span></code></pre>
+
+<p>Schließlich wird das Dokumentenfragment auf die Tabs-Liste div geschrieben:</p>
+
+<pre class="brush: js line-numbers language-js"><code class="language-js"> tabsList<span class="punctuation token">.</span><span class="function token">appendChild</span><span class="punctuation token">(</span>currentTabs<span class="punctuation token">)</span><span class="punctuation token">;</span>
+ <span class="punctuation token">}</span><span class="punctuation token">)</span><span class="punctuation token">;</span>
+<span class="punctuation token">}</span></code></pre>
+
+<p><strong>Arbeiten mit dem aktiven Reiter</strong></p>
+
+<p>Ein weiteres verwandtes Beispielmerkmal ist die Info-Option "Alert active tab", die alle Registerkarten [{WebExtAPIRef ("-Register) ablegt. Tab ")} Objekteigenschaften für die aktive Registerkarte in einen Alarm:</p>
+
+<pre class="brush: js line-numbers language-js"><code class="language-js"> <span class="keyword token">else</span> <span class="keyword token">if</span> <span class="punctuation token">(</span>e<span class="punctuation token">.</span>target<span class="punctuation token">.</span>id <span class="operator token">===</span> <span class="string token">"tabs-alertinfo"</span><span class="punctuation token">)</span> <span class="punctuation token">{</span>
+<span class="function token"> callOnActiveTab</span><span class="punctuation token">(</span><span class="punctuation token">(</span><span class="parameter token">tab</span><span class="punctuation token">)</span> <span class="operator token">=&gt;</span> <span class="punctuation token">{</span>
+ <span class="keyword token">let</span> props <span class="operator token">=</span> <span class="string token">""</span><span class="punctuation token">;</span>
+ <span class="keyword token">for</span> <span class="punctuation token">(</span><span class="parameter token"><span class="keyword token">let</span> item <span class="keyword token">in</span> tab</span><span class="punctuation token">)</span> <span class="punctuation token">{</span>
+ props <span class="operator token">+=</span> <span class="template-string token"><span class="string token">`</span><span class="interpolation token"><span class="interpolation-punctuation punctuation token">${</span> item <span class="interpolation-punctuation punctuation token">}</span></span><span class="string token"> = </span><span class="interpolation token"><span class="interpolation-punctuation punctuation token">${</span> tab<span class="punctuation token">[</span>item<span class="punctuation token">]</span> <span class="interpolation-punctuation punctuation token">}</span></span><span class="string token"> \n`</span></span><span class="punctuation token">;</span>
+ <span class="punctuation token">}</span>
+<span class="function token"> alert</span><span class="punctuation token">(</span>props<span class="punctuation token">)</span><span class="punctuation token">;</span>
+ <span class="punctuation token">}</span><span class="punctuation token">)</span><span class="punctuation token">;</span>
+ <span class="punctuation token">}</span></code></pre>
+
+<p>Wobei <code>callOnActiveTab() </code>das aktive Tab-Objekt findet, indem man sich durch die Registerkarten {{WebExtAPIRef("tabs.Tab")}} schlodert. Tab ")} Objekte, die nach dem Gegenstand mit aktivem Satz suchen:</p>
+
+<pre class="brush: js line-numbers language-js"><code class="language-js">document<span class="punctuation token">.</span><span class="function token">addEventListener</span><span class="punctuation token">(</span><span class="string token">"click"</span><span class="punctuation token">,</span> <span class="keyword token">function</span><span class="punctuation token">(</span><span class="parameter token">e</span><span class="punctuation token">)</span> <span class="punctuation token">{</span>
+ <span class="keyword token">function</span> <span class="function token">callOnActiveTab</span><span class="punctuation token">(</span><span class="parameter token">callback</span><span class="punctuation token">)</span> <span class="punctuation token">{</span>
+<span class="function token"> getCurrentWindowTabs</span><span class="punctuation token">(</span><span class="punctuation token">)</span><span class="punctuation token">.</span><span class="function token">then</span><span class="punctuation token">(</span><span class="punctuation token">(</span><span class="parameter token">tabs</span><span class="punctuation token">)</span> <span class="operator token">=&gt;</span> <span class="punctuation token">{</span>
+ <span class="keyword token">for</span> <span class="punctuation token">(</span><span class="parameter token"><span class="keyword token">var</span> tab <span class="keyword token">of</span> tabs</span><span class="punctuation token">)</span> <span class="punctuation token">{</span>
+ <span class="keyword token">if</span> <span class="punctuation token">(</span><span class="parameter token">tab<span class="punctuation token">.</span>active</span><span class="punctuation token">)</span> <span class="punctuation token">{</span>
+<span class="function token"> callback</span><span class="punctuation token">(</span>tab<span class="punctuation token">,</span> tabs<span class="punctuation token">)</span><span class="punctuation token">;</span>
+ <span class="punctuation token">}</span>
+ <span class="punctuation token">}</span>
+ <span class="punctuation token">}</span><span class="punctuation token">)</span><span class="punctuation token">;</span>
+ <span class="punctuation token">}</span>
+<span class="punctuation token">}</span></code></pre>
+
+<p><strong>Tabs erstellen, duplizieren, verschieben, aktualisieren, neu laden und entfernen</strong></p>
+
+<p>Nachdem Sie Informationen über die Registerkarten gesammelt haben, werden Sie höchstwahrscheinlich etwas mit ihnen machen wollen — entweder den Benutzern Funktionen für die Manipulation und Verwaltung von Registern bieten oder Funktionen in Ihrer Erweiterung implementieren.</p>
+
+<p>Folgende Funktionen stehen zur Verfügung:</p>
+
+<ul>
+ <li>Erstellen Sie eine neue Registerkarte ({{WebExtAPIRef("tabs.create")}}).</li>
+ <li>Duplizieren sie eine neue Registerkarte ({{WebExtAPIRef("tabs.duplicate")}}).</li>
+ <li>Entfernen Sie eine Registerkarte ({{WebExtAPIRef("tabs.remove")}}).</li>
+ <li>Verschieben Sie eine Registerkarte ({{WebExtAPIRef("tabs.move")}}).</li>
+ <li>Aktualisieren Sie die URL der Registerkarte, um — effektiv auf eine neue Seite — ({{WebExtAPIRef("tabs.update")}}).</li>
+ <li>Die Seite der Registerkarte neu Laden ({{WebExtAPIRef("tabs.reload")}}).</li>
+</ul>
+
+<div class="blockIndicator note">
+<p><strong>notiz:</strong></p>
+
+<p>Diese Funktionen erfordern alle die ID (oder IDs) der Registerkarte, die sie manipulieren:</p>
+
+<ul>
+ <li>{{WebExtAPIRef ("tabs.duplicate")}}</li>
+ <li>{{WebExtAPIRef("tabs.remove")}})</li>
+ <li>{{WebExtAPIRef ("tabs.move")}}</li>
+</ul>
+
+<p>Während die folgenden Funktionen auf dem aktiven Tab (sofern keine Tab-ID zur Verfügung gestellt wird) wirken:</p>
+
+<ul>
+ <li>{{WebExtAPIRef("tabs.update")}}</li>
+ <li>{{WebExtAPIRef("tabs.reload")}}</li>
+</ul>
+</div>
+
+<p><strong>Wie man mit dem Beispiel geht</strong></p>
+
+<p>Das Beispiel <a href="https://github.com/mdn/webextensions-examples/tree/master/tabs-tabs-tabs">Tabs-Tabs</a> übt all diese Funktionen aus, bis hin zur Aktualisierung der URL eines Tabs. Die Art und Weise, in der diese APIs verwendet werden, ist ähnlich, so dass wir uns eine der am meisten involvierten Implementierungen ansehen werden, die des "Move active tab to the beginning of the the. Option "Option der Fensterliste.</p>
+
+<p>Aber zunächst ist hier eine Demonstration des Features in Aktion:</p>
+
+<p>{{EmbedYouTube("-lJRzTIvhxo")}}</p>
+
+<p><a href="https://github.com/mdn/webextensions-examples/blob/master/tabs-tabs-tabs/manifest.json"><strong>manifest.json</strong></a></p>
+
+<p>Keine der Funktionen benötigt eine Betriebsgenehmigung, so dass es keine Funktionen in der manifest.json-Datei gibt, die hervorgehoben werden müssen.</p>
+
+<p><a href="https://github.com/mdn/webextensions-examples/blob/master/tabs-tabs-tabs/tabs.html"><strong>Tabs.html</strong></a></p>
+
+<p>Tabs.html definiert das "Menü", das im Popup angezeigt wird, das die Option "Aktive Registerkarte zum Anfang der Fensterliste verschieben" enthält, mit einer Reihe von<code> &lt;a&gt; </code>Tags, die von einem visuellen Separator gruppiert sind. Jeder Menüpunkt erhält eine ID, die in tabs.js verwendet wird, um festzustellen, welcher Menüpunkt angefordert wird.</p>
+
+<pre class="brush: html line-numbers language-html"><code class="language-html"> <span class="tag token"><span class="tag token"><span class="punctuation token">&lt;</span>a</span> <span class="attr-name token">href</span><span class="attr-value token"><span class="punctuation token">=</span><span class="punctuation token">"</span>#<span class="punctuation token">"</span></span> <span class="attr-name token">id</span><span class="attr-value token"><span class="punctuation token">=</span><span class="punctuation token">"</span>tabs-move-beginning<span class="punctuation token">"</span></span><span class="punctuation token">&gt;</span></span>Move active tab to the beginning of the window<span class="tag token"><span class="tag token"><span class="punctuation token">&lt;/</span>a</span><span class="punctuation token">&gt;</span></span><span class="tag token"><span class="tag token"><span class="punctuation token">&lt;</span>br</span><span class="punctuation token">&gt;</span></span>
+ <span class="tag token"><span class="tag token"><span class="punctuation token">&lt;</span>a</span> <span class="attr-name token">href</span><span class="attr-value token"><span class="punctuation token">=</span><span class="punctuation token">"</span>#<span class="punctuation token">"</span></span> <span class="attr-name token">id</span><span class="attr-value token"><span class="punctuation token">=</span><span class="punctuation token">"</span>tabs-move-end<span class="punctuation token">"</span></span><span class="punctuation token">&gt;</span></span>Move active tab to the end of the window<span class="tag token"><span class="tag token"><span class="punctuation token">&lt;/</span>a</span><span class="punctuation token">&gt;</span></span><span class="tag token"><span class="tag token"><span class="punctuation token">&lt;</span>br</span><span class="punctuation token">&gt;</span></span>
+
+ <span class="tag token"><span class="tag token"><span class="punctuation token">&lt;</span>div</span> <span class="attr-name token">class</span><span class="attr-value token"><span class="punctuation token">=</span><span class="punctuation token">"</span>panel-section-separator<span class="punctuation token">"</span></span><span class="punctuation token">&gt;</span></span><span class="tag token"><span class="tag token"><span class="punctuation token">&lt;/</span>div</span><span class="punctuation token">&gt;</span></span>
+
+
+ <span class="tag token"><span class="tag token"><span class="punctuation token">&lt;</span>a</span> <span class="attr-name token">href</span><span class="attr-value token"><span class="punctuation token">=</span><span class="punctuation token">"</span>#<span class="punctuation token">"</span></span> <span class="attr-name token">id</span><span class="attr-value token"><span class="punctuation token">=</span><span class="punctuation token">"</span>tabs-duplicate<span class="punctuation token">"</span></span><span class="punctuation token">&gt;</span></span>Duplicate active tab<span class="tag token"><span class="tag token"><span class="punctuation token">&lt;/</span>a</span><span class="punctuation token">&gt;</span></span><span class="tag token"><span class="tag token"><span class="punctuation token">&lt;</span>br</span><span class="punctuation token">&gt;</span></span>
+
+ <span class="tag token"><span class="tag token"><span class="punctuation token">&lt;</span>a</span> <span class="attr-name token">href</span><span class="attr-value token"><span class="punctuation token">=</span><span class="punctuation token">"</span>#<span class="punctuation token">"</span></span> <span class="attr-name token">id</span><span class="attr-value token"><span class="punctuation token">=</span><span class="punctuation token">"</span>tabs-reload<span class="punctuation token">"</span></span><span class="punctuation token">&gt;</span></span>Reload active tab<span class="tag token"><span class="tag token"><span class="punctuation token">&lt;/</span>a</span><span class="punctuation token">&gt;</span></span><span class="tag token"><span class="tag token"><span class="punctuation token">&lt;</span>br</span><span class="punctuation token">&gt;</span></span>
+ <span class="tag token"><span class="tag token"><span class="punctuation token">&lt;</span>a</span> <span class="attr-name token">href</span><span class="attr-value token"><span class="punctuation token">=</span><span class="punctuation token">"</span>#<span class="punctuation token">"</span></span> <span class="attr-name token">id</span><span class="attr-value token"><span class="punctuation token">=</span><span class="punctuation token">"</span>tabs-alertinfo<span class="punctuation token">"</span></span><span class="punctuation token">&gt;</span></span>Alert active tab info<span class="tag token"><span class="tag token"><span class="punctuation token">&lt;/</span>a</span><span class="punctuation token">&gt;</span></span><span class="tag token"><span class="tag token"><span class="punctuation token">&lt;</span>br</span><span class="punctuation token">&gt;</span></span></code></pre>
+
+<p><a href="https://github.com/mdn/webextensions-examples/blob/master/tabs-tabs-tabs/tabs.js"><strong>Tabs.js</strong></a></p>
+
+<p>Um das in tabs.html definierte "Menü" zu implementieren, enthält tabs.js einen Hörer für Klicks in tabs.html:</p>
+
+<pre class="brush: js line-numbers language-js"><code class="language-js">document<span class="punctuation token">.</span><span class="function token">addEventListener</span><span class="punctuation token">(</span><span class="string token">"click"</span><span class="punctuation token">,</span> <span class="keyword token">function</span><span class="punctuation token">(</span><span class="parameter token">e</span><span class="punctuation token">)</span> <span class="punctuation token">{</span>
+ <span class="keyword token">function</span> <span class="function token">callOnActiveTab</span><span class="punctuation token">(</span><span class="parameter token">callback</span><span class="punctuation token">)</span> <span class="punctuation token">{</span>
+
+<span class="function token"> getCurrentWindowTabs</span><span class="punctuation token">(</span><span class="punctuation token">)</span><span class="punctuation token">.</span><span class="function token">then</span><span class="punctuation token">(</span><span class="punctuation token">(</span><span class="parameter token">tabs</span><span class="punctuation token">)</span> <span class="operator token">=&gt;</span> <span class="punctuation token">{</span>
+ <span class="keyword token">for</span> <span class="punctuation token">(</span><span class="parameter token"><span class="keyword token">var</span> tab <span class="keyword token">of</span> tabs</span><span class="punctuation token">)</span> <span class="punctuation token">{</span>
+ <span class="keyword token">if</span> <span class="punctuation token">(</span><span class="parameter token">tab<span class="punctuation token">.</span>active</span><span class="punctuation token">)</span> <span class="punctuation token">{</span>
+<span class="function token"> callback</span><span class="punctuation token">(</span>tab<span class="punctuation token">,</span> tabs<span class="punctuation token">)</span><span class="punctuation token">;</span>
+ <span class="punctuation token">}</span>
+ <span class="punctuation token">}</span>
+ <span class="punctuation token">}</span><span class="punctuation token">)</span><span class="punctuation token">;</span>
+<span class="punctuation token">}</span>
+<span class="punctuation token">}</span></code></pre>
+
+<p>Eine Reihe von <code>if</code>Anweisungen dann schauen, um die ID des Artikels geklickt.</p>
+
+<p>Dieser Code-Snippet ist für die Option "Aktive Registerkarte zum Anfang der Fensterliste verschieben":</p>
+
+<pre class="brush: js line-numbers language-js"><code class="language-js"> <span class="keyword token">if</span> <span class="punctuation token">(</span>e<span class="punctuation token">.</span>target<span class="punctuation token">.</span>id <span class="operator token">===</span> <span class="string token">"tabs-move-beginning"</span><span class="punctuation token">)</span> <span class="punctuation token">{</span>
+<span class="function token"> callOnActiveTab</span><span class="punctuation token">(</span><span class="punctuation token">(</span><span class="parameter token">tab<span class="punctuation token">,</span> tabs</span><span class="punctuation token">)</span> <span class="operator token">=&gt;</span> <span class="punctuation token">{</span>
+ <span class="keyword token">var</span> index <span class="operator token">=</span> <span class="number token">0</span><span class="punctuation token">;</span>
+ <span class="keyword token">if</span> <span class="punctuation token">(</span><span class="parameter token"><span class="operator token">!</span>tab<span class="punctuation token">.</span>pinned</span><span class="punctuation token">)</span> <span class="punctuation token">{</span>
+ index <span class="operator token">=</span> <span class="function token">firstUnpinnedTab</span><span class="punctuation token">(</span>tabs<span class="punctuation token">)</span><span class="punctuation token">;</span>
+ <span class="punctuation token">}</span>
+ console<span class="punctuation token">.</span><span class="function token">log</span><span class="punctuation token">(</span><span class="template-string token"><span class="string token">`moving </span><span class="interpolation token"><span class="interpolation-punctuation punctuation token">${</span>tab<span class="punctuation token">.</span>id<span class="interpolation-punctuation punctuation token">}</span></span><span class="string token"> to </span><span class="interpolation token"><span class="interpolation-punctuation punctuation token">${</span>index<span class="interpolation-punctuation punctuation token">}</span></span><span class="string token">`</span></span><span class="punctuation token">)</span>
+ browser<span class="punctuation token">.</span>tabs<span class="punctuation token">.</span><span class="function token">move</span><span class="punctuation token">(</span><span class="punctuation token">[</span>tab<span class="punctuation token">.</span>id<span class="punctuation token">]</span><span class="punctuation token">,</span> <span class="punctuation token">{</span>index<span class="punctuation token">}</span><span class="punctuation token">)</span><span class="punctuation token">;</span>
+ <span class="punctuation token">}</span><span class="punctuation token">)</span><span class="punctuation token">;</span>
+ <span class="punctuation token">}</span></code></pre>
+
+<p>Es ist erwähnenswert, die Verwendung von <code>console.log ()</code>. Auf diese Weise können Sie Informationen an die <a href="https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/Debugging">Debugger-Konsole</a> ausgeben , was bei der Lösung von Problemen, die während der Entwicklung gefunden wurden, nützlich sein kann.</p>
+
+<p><img alt="" src="https://mdn.mozillademos.org/files/15722/console.png"></p>
+
+<p>Der Bewegungscode ruft zunächst <code>callOnActiveTab ()</code> an , der wiederum <code>getCurrentWindowTabs ()</code> anruft, um eine {{WebExtAPIRef("tabs.Tab")}} Objekt, das die Registerkarten des aktiven Fensters enthält. Es schleift sich dann durch das Objekt, um das aktive Tab-Objekt zu finden und zurückzugeben:</p>
+
+<pre class="brush: js line-numbers language-js"><code class="language-js"><span class="keyword token">function</span> <span class="function token">callOnActiveTab</span><span class="punctuation token">(</span><span class="parameter token">callback</span><span class="punctuation token">)</span> <span class="punctuation token">{</span>
+<span class="function token"> getCurrentWindowTabs</span><span class="punctuation token">(</span><span class="punctuation token">)</span><span class="punctuation token">.</span><span class="function token">then</span><span class="punctuation token">(</span><span class="punctuation token">(</span><span class="parameter token">tabs</span><span class="punctuation token">)</span> <span class="operator token">=&gt;</span> <span class="punctuation token">{</span>
+ <span class="keyword token">for</span> <span class="punctuation token">(</span><span class="parameter token"><span class="keyword token">var</span> tab <span class="keyword token">of</span> tabs</span><span class="punctuation token">)</span> <span class="punctuation token">{</span>
+ <span class="keyword token">if</span> <span class="punctuation token">(</span><span class="parameter token">tab<span class="punctuation token">.</span>active</span><span class="punctuation token">)</span> <span class="punctuation token">{</span>
+<span class="function token"> callback</span><span class="punctuation token">(</span>tab<span class="punctuation token">,</span> tabs<span class="punctuation token">)</span><span class="punctuation token">;</span>
+ <span class="punctuation token">}</span>
+ <span class="punctuation token">}</span>
+ <span class="punctuation token">}</span><span class="punctuation token">)</span><span class="punctuation token">;</span>
+ <span class="punctuation token">}</span></code></pre>
+
+<p><strong>Gepinnte Tabs</strong></p>
+
+<p>Eine Besonderheit von Registern ist, dass  der Benutzer Tabs in ein Fenster einfügen kann. Gepinnte Tabs werden am Anfang der Tab-Liste platziert und können nicht verschoben werden. Das bedeutet, dass die früheste Position, in die sich ein Tab bewegen kann, die erste Position nach einem gefiederten Tabs ist. Also , <code>firstUnpinnedTab ()</code> wird aufgerufen, um die Position des ersten ungepasten Tab zu finden, indem man durch das <code>Tabs</code>-Objekt Looping:</p>
+
+<pre class="brush: js line-numbers language-js"><code class="language-js"><span class="keyword token">function</span> <span class="function token">firstUnpinnedTab</span><span class="punctuation token">(</span><span class="parameter token">tabs</span><span class="punctuation token">)</span> <span class="punctuation token">{</span>
+ <span class="keyword token">for</span> <span class="punctuation token">(</span><span class="parameter token"><span class="keyword token">var</span> tab <span class="keyword token">of</span> tabs</span><span class="punctuation token">)</span> <span class="punctuation token">{</span>
+ <span class="keyword token">if</span> <span class="punctuation token">(</span><span class="parameter token"><span class="operator token">!</span>tab<span class="punctuation token">.</span>pinned</span><span class="punctuation token">)</span> <span class="punctuation token">{</span>
+ <span class="keyword token">return</span> tab<span class="punctuation token">.</span>index<span class="punctuation token">;</span>
+ <span class="punctuation token">}</span>
+ <span class="punctuation token">}</span>
+<span class="punctuation token">}</span></code></pre>
+
+<p>Wir haben jetzt alles, was zum Verschieben des Tab notwendig ist: Das aktive Tab-Objekt, von dem wir die Reiter-ID erhalten können und die Position, in die der Reiter verschoben werden soll. So können wir den Schritt umsetzen:</p>
+
+<pre>browser.tabs.move ([tab.id], {index});</pre>
+
+<p>Die restlichen Funktionen zum Duplizieren, Laden, Erstellen und Entfernen von Tabs werden ähnlich implementiert.</p>
+
+<h4 id="Manipulationen_eines_Tab"><strong>Manipulationen eines Tab</strong></h4>
+
+<p>Die nächste Reihe von Funktionen ermöglicht es Ihnen, die Zoomstufe in einem Tab zu erhalten  ({{WebExtAPIRef("tabs.getZoom")}}) und zu setzen ({{WebExtAPIRef("tabs.setZoom")}}) . Sie können auch die Zoom-Einstellungen abrufen ({{WebExtAPIRef("tabs.getZoomSettings")}}) , aber zum Zeitpunkt des Schreibens war die Möglichkeit, die Einstellungen zu setzen ({{WebExtAPIRef("tabs.setZoomSettings")}}) , war in Firefox nicht verfügbar.</p>
+
+<p>Der Zoomwert kann zwischen 30% und 300% liegen (dargestellt als Dezimalzahl <code>0,3 bis 3</code>).</p>
+
+<p>In Firefox sind die Standard-Zoom-Einstellungen:</p>
+
+<ul>
+ <li><strong>Standard-Zoom-Level: </strong>100%.</li>
+ <li><strong>Zoommodus:</strong> Automatik (so verwaltet der Browser, wie Zoomstufen gesetzt werden).</li>
+ <li><strong>Umfang der Zoomwechsel</strong> : "pro-origin",was bedeutet, dass, wenn Sie eine Website wieder besuchen, es die Zoomstufe, die in Ihrem letzten Besuch eingestellt wird, benötigt.</li>
+</ul>
+
+<h3 id="Wie_man_mit_dem_Beispiel_geht_2">Wie man mit dem Beispiel geht</h3>
+
+<p>Das  Beispiel der Tabs-Tabs-Tabs enthält drei Vorführungen der Zoom-Funktion: Zoomen, Zoomen und Zoom zurücksetzen. Hier ist das Feature in Aktion:</p>
+
+<p>{{EmbedYouTube("RFr3oYBCg28")}}</p>
+
+<p>Schauen wir uns an, wie der Zoom-In umgesetzt wird.</p>
+
+<p><a href="https://github.com/mdn/webextensions-examples/blob/master/tabs-tabs-tabs/manifest.json"><strong>manifest.json</strong></a></p>
+
+<p>Keine der Zoom-Funktionen benötigt Berechtigungen, so dass es keine Funktionen in der manifest.json-Datei gibt, die hervorgehoben werden müssen.</p>
+
+<p><a href="https://github.com/mdn/webextensions-examples/blob/master/tabs-tabs-tabs/tabs.html"><strong>Tabs.html</strong></a></p>
+
+<p>Wir haben bereits darüber diskutiert, wie der tabs.html die Optionen für diese Erweiterung definiert, nichts Neues oder Einzigartiges wird getan, um die Zoom-Optionen zur Verfügung zu stellen.</p>
+
+<p><a href="https://github.com/mdn/webextensions-examples/blob/master/tabs-tabs-tabs/tabs.js"><strong>Tabs.js</strong></a></p>
+
+<p>Tabs.js beginnt mit der Definition mehrerer Konstanten, die im Zoom-Code verwendet werden:</p>
+
+<pre class="brush: js line-numbers language-js"><code class="language-js"><span class="keyword token">const</span> <span class="constant token">ZOOM_INCREMENT</span> <span class="operator token">=</span> <span class="number token">0.2</span><span class="punctuation token">;</span>
+<span class="keyword token">const</span> <span class="constant token">MAX_ZOOM</span> <span class="operator token">=</span> <span class="number token">3</span><span class="punctuation token">;</span>
+<span class="keyword token">const</span> <span class="constant token">MIN_ZOOM</span> <span class="operator token">=</span> <span class="number token">0.3</span><span class="punctuation token">;</span>
+<span class="keyword token">const</span> <span class="constant token">DEFAULT_ZOOM</span> <span class="operator token">=</span> <span class="number token">1</span><span class="punctuation token">;</span></code></pre>
+
+<p>Es verwendet dann den gleichen Hörer, den wir zuvor besprochen haben, so dass es auf Klicks in tabs.html wirken kann.</p>
+
+<p>Für den Zoom in der Funktion läuft das:</p>
+
+<pre class="brush: js line-numbers language-js"><code class="language-js"><span class="keyword token">else</span> <span class="keyword token">if</span> <span class="punctuation token">(</span>e<span class="punctuation token">.</span>target<span class="punctuation token">.</span>id <span class="operator token">===</span> <span class="string token">"tabs-add-zoom"</span><span class="punctuation token">)</span> <span class="punctuation token">{</span>
+<span class="function token"> callOnActiveTab</span><span class="punctuation token">(</span><span class="punctuation token">(</span><span class="parameter token">tab</span><span class="punctuation token">)</span> <span class="operator token">=&gt;</span> <span class="punctuation token">{</span>
+ <span class="keyword token">var</span> gettingZoom <span class="operator token">=</span> browser<span class="punctuation token">.</span>tabs<span class="punctuation token">.</span><span class="function token">getZoom</span><span class="punctuation token">(</span>tab<span class="punctuation token">.</span>id<span class="punctuation token">)</span><span class="punctuation token">;</span>
+ gettingZoom<span class="punctuation token">.</span><span class="function token">then</span><span class="punctuation token">(</span><span class="punctuation token">(</span><span class="parameter token">zoomFactor</span><span class="punctuation token">)</span> <span class="operator token">=&gt;</span> <span class="punctuation token">{</span>
+ <span class="comment token">//the maximum zoomFactor is 3, it can't go higher</span>
+ <span class="keyword token">if</span> <span class="punctuation token">(</span><span class="parameter token">zoomFactor <span class="operator token">&gt;=</span> <span class="constant token">MAX_ZOOM</span></span><span class="punctuation token">)</span> <span class="punctuation token">{</span>
+<span class="function token"> alert</span><span class="punctuation token">(</span><span class="string token">"Tab zoom factor is already at max!"</span><span class="punctuation token">)</span><span class="punctuation token">;</span>
+ <span class="punctuation token">}</span> <span class="keyword token">else</span> <span class="punctuation token">{</span>
+ <span class="keyword token">var</span> newZoomFactor <span class="operator token">=</span> zoomFactor <span class="operator token">+</span> <span class="constant token">ZOOM_INCREMENT</span><span class="punctuation token">;</span>
+ <span class="comment token">//if the newZoomFactor is set to higher than the max accepted</span>
+ <span class="comment token">//it won't change, and will never alert that it's at maximum</span>
+ newZoomFactor <span class="operator token">=</span> newZoomFactor <span class="operator token">&gt;</span> <span class="constant token">MAX_ZOOM</span> <span class="operator token">?</span> <span class="constant token">MAX_ZOOM</span> <span class="punctuation token">:</span> newZoomFactor<span class="punctuation token">;</span>
+ browser<span class="punctuation token">.</span>tabs<span class="punctuation token">.</span><span class="function token">setZoom</span><span class="punctuation token">(</span>tab<span class="punctuation token">.</span>id<span class="punctuation token">,</span> newZoomFactor<span class="punctuation token">)</span><span class="punctuation token">;</span>
+ <span class="punctuation token">}</span>
+ <span class="punctuation token">}</span><span class="punctuation token">)</span><span class="punctuation token">;</span>
+ <span class="punctuation token">}</span><span class="punctuation token">)</span><span class="punctuation token">;</span>
+ <span class="punctuation token">}</span></code></pre>
+
+<p>Dieser Code verwendet <code>callOnActiveTab ()</code> , um die Details des aktiven Tab zu erhalten, dann wird {{WebExtAPIRef("tabs.getZoom")}} den aktuellen Zoom-Faktor der Registerkarte erhalten. Der aktuelle Zoom wird mit dem definierten Maximum (MAX _ ZOOM)und einem Alarm verglichen, der ausgegeben wird, wenn sich der Tab bereits im Maximalzoom befindet. Andernfalls wird der Zoom-Level erhöht, aber auf den maximalen Zoom beschränkt, dann wird der Zoom mit {{WebExtAPIRef("tabs.getZoom")}}. gesetzt .</p>
+
+<h4 id="Manipulationen_eines_Tabs_CSS"><strong>Manipulationen eines Tabs CSS</strong></h4>
+
+<p>Eine weitere wichtige Fähigkeit, die die Tabs API bietet, ist die Möglichkeit, die CSS innerhalb eines Tab zu manipulieren — neue CSS zu einem Tab hinzufügen ({{WebExtAPIRef ("tabu Die [[Datei]] der [[Datei]] der [[Datei]] der [[Datei]] der [[Datei]] ist (" tabs.removeCSS ")).</p>
+
+<p>Dies kann zum Beispiel nützlich sein, wenn Sie bestimmte Seitenelemente markieren oder das Standardlayout der Seite ändern wollen.</p>
+
+<h3 id="Wie_man_mit_dem_Beispiel_geht_3">Wie man mit dem Beispiel geht</h3>
+
+<p>Das <a href="https://github.com/mdn/webextensions-examples/tree/master/apply-css">Apply-css-Beispiel</a> nutzt diese Funktionen, um der Webseite im aktiven Tab einen roten Rand hinzuzufügen. Hier ist das Feature in Aktion:</p>
+
+<p>{{EmbedYouTube ("bcK-GT2Dyhs")}</p>
+
+<p>Gehen wir durch, wie es aufgebaut ist.</p>
+
+<p><a href="https://github.com/mdn/webextensions-examples/blob/master/apply-css/manifest.json"><strong>manifest.json</strong></a></p>
+
+<p>Um die CSS-Funktionen nutzen zu können, benötigen Sie entweder:</p>
+
+<ul>
+ <li><code>"Tabs "</code> -Erlaubnis und <a href="https://developer.mozilla.org/en-US/Add-ons/WebExtensions/manifest.json/permissions#Host_permissions">Host-Erlaubnis</a> oder</li>
+ <li><code>"activeTab"</code>-Erlaubnis .</li>
+</ul>
+
+<p>Letzteres ist das nützlichste, da es einer Erweiterung erlaubt,  {{WebExtAPIRef("tabs.insertCSS")}} und  {{WebExtAPIRef("tabs.removeCSS")}} in der aktiven Registerkarte zu verwenden, wenn sie von der Browser-oder Seitenaktion, dem Kontextmenü oder einem Shortcut der Erweiterung ausgeführt wird.</p>
+
+<pre class="brush: json line-numbers language-json"><code class="language-json"><span class="punctuation token">{</span>
+ <span class="property token">"description"</span><span class="operator token">:</span> <span class="string token">"Adds a page action to toggle applying CSS to pages."</span><span class="punctuation token">,</span>
+
+ <span class="property token">"manifest_version"</span><span class="operator token">:</span> <span class="number token">2</span><span class="punctuation token">,</span>
+ <span class="property token">"name"</span><span class="operator token">:</span> <span class="string token">"apply-css"</span><span class="punctuation token">,</span>
+ <span class="property token">"version"</span><span class="operator token">:</span> <span class="string token">"1.0"</span><span class="punctuation token">,</span>
+ <span class="property token">"homepage_url"</span><span class="operator token">:</span> <span class="string token">"https://github.com/mdn/webextensions-examples/tree/master/apply-css"</span><span class="punctuation token">,</span>
+
+ <span class="property token">"background"</span><span class="operator token">:</span> <span class="punctuation token">{</span>
+
+ <span class="property token">"scripts"</span><span class="operator token">:</span> <span class="punctuation token">[</span><span class="string token">"background.js"</span><span class="punctuation token">]</span>
+ <span class="punctuation token">}</span><span class="punctuation token">,</span>
+
+ <span class="property token">"page_action"</span><span class="operator token">:</span> <span class="punctuation token">{</span>
+
+ <span class="property token">"default_icon"</span><span class="operator token">:</span> <span class="string token">"icons/off.svg"</span><span class="punctuation token">,</span>
+ <span class="property token">"browser_style"</span><span class="operator token">:</span> <span class="boolean token">true</span>
+ <span class="punctuation token">}</span><span class="punctuation token">,</span>
+
+ <span class="property token">"permissions"</span><span class="operator token">:</span> <span class="punctuation token">[</span>
+ <span class="string token">"activeTab"</span><span class="punctuation token">,</span>
+ <span class="string token">"tabs"</span>
+ <span class="punctuation token">]</span>
+
+<span class="punctuation token">}</span></code></pre>
+
+<p>Sie werden darauf hinweisen, dass zusätzlich zu "<code>activeTab</code>" die Erlaubnis " Tabs"angefordert wird. Diese zusätzliche Erlaubnis ist erforderlich, um das Skript der Erweiterung in die Lage zu versetzen, auf die URL des Registers zuzugreifen, deren Bedeutung wir gleich sehen werden.</p>
+
+<p>Die anderen Hauptmerkmale in der manifest.json-Datei sind die Definition von:</p>
+
+<ul>
+ <li><strong>Ein Hintergrundskript</strong>, das gestartet wird, sobald die Erweiterung geladen wird.</li>
+ <li><strong>Eine "Seitenaktion</strong>", die ein Symbol definiert, das in die Adressleiste des Browsers aufgenommen werden soll.</li>
+</ul>
+
+<p><a href="https://github.com/mdn/webextensions-examples/blob/master/apply-css/background.js"><strong>Background.js</strong></a></p>
+
+<p>Beim Start setzt background.js einige Konstanten, um die zu bewendenden CSS zu definieren, Titel für die "Seitenaktion", und eine Liste von Protokollen, in denen die Erweiterung funktioniert:</p>
+
+<pre class="brush: js line-numbers language-js"><code class="language-js"><span class="keyword token">const</span> <span class="constant token">CSS</span> <span class="operator token">=</span> <span class="string token">"body { border: 20px solid red; }"</span><span class="punctuation token">;</span>
+<span class="keyword token">const</span> <span class="constant token">TITLE_APPLY</span> <span class="operator token">=</span> <span class="string token">"Apply CSS"</span><span class="punctuation token">;</span>
+<span class="keyword token">const</span> <span class="constant token">TITLE_REMOVE</span> <span class="operator token">=</span> <span class="string token">"Remove CSS"</span><span class="punctuation token">;</span>
+<span class="keyword token">const</span> <span class="constant token">APPLICABLE_PROTOCOLS</span> <span class="operator token">=</span> <span class="punctuation token">[</span><span class="string token">"http:"</span><span class="punctuation token">,</span> <span class="string token">"https:"</span><span class="punctuation token">]</span><span class="punctuation token">;</span></code></pre>
+
+<p>Wenn die Erweiterung zum ersten Mal geladen wird, verwendet sie {{WebExtAPIRef("tabs.query")}}, um eine Liste aller Tabs im aktuellen Browserfenster zu erhalten. Es schleit sich dann durch die Tabs, die <code>InitializePageAction()</code>rufen.</p>
+
+<pre class="brush: js line-numbers language-js"><code class="language-js"><span class="keyword token">var</span> gettingAllTabs <span class="operator token">=</span> browser<span class="punctuation token">.</span>tabs<span class="punctuation token">.</span><span class="function token">query</span><span class="punctuation token">(</span><span class="punctuation token">{</span><span class="punctuation token">}</span><span class="punctuation token">)</span><span class="punctuation token">;</span>
+
+gettingAllTabs<span class="punctuation token">.</span><span class="function token">then</span><span class="punctuation token">(</span><span class="punctuation token">(</span><span class="parameter token">tabs</span><span class="punctuation token">)</span> <span class="operator token">=&gt;</span> <span class="punctuation token">{</span>
+ <span class="keyword token">for</span> <span class="punctuation token">(</span><span class="parameter token"><span class="keyword token">let</span> tab <span class="keyword token">of</span> tabs</span><span class="punctuation token">)</span> <span class="punctuation token">{</span>
+<span class="function token"> initializePageAction</span><span class="punctuation token">(</span>tab<span class="punctuation token">)</span><span class="punctuation token">;</span>
+ <span class="punctuation token">}</span>
+<span class="punctuation token">}</span><span class="punctuation token">)</span><span class="punctuation token">;</span></code></pre>
+
+<p><code>InitializePageAction</code> verwendet protokolIsApplicable () , um festzustellen, ob die URL der aktiven Registerkarte eine ist, auf die die CSS angewendet werden kann:</p>
+
+<pre class="brush: js line-numbers language-js"><code class="language-js"><span class="keyword token">function</span> <span class="function token">protocolIsApplicable</span><span class="punctuation token">(</span><span class="parameter token">url</span><span class="punctuation token">)</span> <span class="punctuation token">{</span>
+ <span class="keyword token">var</span> anchor <span class="operator token">=</span> document<span class="punctuation token">.</span><span class="function token">createElement</span><span class="punctuation token">(</span><span class="string token">'a'</span><span class="punctuation token">)</span><span class="punctuation token">;</span>
+ anchor<span class="punctuation token">.</span>href <span class="operator token">=</span> url<span class="punctuation token">;</span>
+ <span class="keyword token">return</span> <span class="constant token">APPLICABLE_PROTOCOLS</span><span class="punctuation token">.</span><span class="function token">includes</span><span class="punctuation token">(</span>anchor<span class="punctuation token">.</span>protocol<span class="punctuation token">)</span><span class="punctuation token">;</span>
+<span class="punctuation token">}</span></code></pre>
+
+<p>Wenn das Beispiel dann auf der Registerkarte wirken kann, setzt <code>initializePageAction ()</code> das <code>PageAction</code>-Symbol und den Titel des Tab, um die "Off"-Versionen zu verwenden, bevor die <code>PageAction</code>-Version sichtbar gemacht wird:</p>
+
+<pre class="brush: js line-numbers language-js"><code class="language-js"><span class="keyword token">function</span> <span class="function token">initializePageAction</span><span class="punctuation token">(</span><span class="parameter token">tab</span><span class="punctuation token">)</span> <span class="punctuation token">{</span>
+
+ <span class="keyword token">if</span> <span class="punctuation token">(</span><span class="parameter token"><span class="function token">protocolIsApplicable</span><span class="punctuation token">(</span>tab<span class="punctuation token">.</span>url<span class="punctuation token">)</span></span><span class="punctuation token">)</span> <span class="punctuation token">{</span>
+ browser<span class="punctuation token">.</span>pageAction<span class="punctuation token">.</span><span class="function token">setIcon</span><span class="punctuation token">(</span><span class="punctuation token">{</span>tabId<span class="punctuation token">:</span> tab<span class="punctuation token">.</span>id<span class="punctuation token">,</span> path<span class="punctuation token">:</span> <span class="string token">"icons/off.svg"</span><span class="punctuation token">}</span><span class="punctuation token">)</span><span class="punctuation token">;</span>
+ browser<span class="punctuation token">.</span>pageAction<span class="punctuation token">.</span><span class="function token">setTitle</span><span class="punctuation token">(</span><span class="punctuation token">{</span>tabId<span class="punctuation token">:</span> tab<span class="punctuation token">.</span>id<span class="punctuation token">,</span> title<span class="punctuation token">:</span> <span class="constant token">TITLE_APPLY</span><span class="punctuation token">}</span><span class="punctuation token">)</span><span class="punctuation token">;</span>
+ browser<span class="punctuation token">.</span>pageAction<span class="punctuation token">.</span><span class="function token">show</span><span class="punctuation token">(</span>tab<span class="punctuation token">.</span>id<span class="punctuation token">)</span><span class="punctuation token">;</span>
+ <span class="punctuation token">}</span>
+<span class="punctuation token">}</span></code></pre>
+
+<p>Als Nächstes wartet ein Zuhörer auf der <code>pageAction.onClicked</code> darauf, dass das <code>PageAction</code>-Symbol angeklickt wird  , und ruft toggleCSS an , wenn es ist.</p>
+
+<pre>browser.pageAction.onClicked.addListener (toggleCSS);</pre>
+
+<p><code>ToggleCSS ()</code> erhält den Titel der <code>PageAction</code> und nimmt dann die beschriebene Aktion auf:</p>
+
+<ul>
+ <li><strong>Für "Apply CSS":</strong>
+
+ <ul>
+ <li>Das <code>PageAction</code>-Symbol und den Titel in die "Entfernen"-Versionen.</li>
+ <li>Es ist eine sehr gut. {{WebExtAPIRef("tabs.insertCSS")}}.</li>
+ </ul>
+ </li>
+ <li><strong>Für "Remove CSS":</strong>
+ <ul>
+ <li>Das <code>PageAction</code>-Symbol und den Titel in die "Anwendung"-Versionen.</li>
+ <li>Entfernt die CSS mit {{WebExtAPIRef("tabs.removeCSS")}}.</li>
+ </ul>
+ </li>
+</ul>
+
+<pre class="brush: js line-numbers language-js"><code class="language-js"><span class="keyword token">function</span> <span class="function token">toggleCSS</span><span class="punctuation token">(</span><span class="parameter token">tab</span><span class="punctuation token">)</span> <span class="punctuation token">{</span>
+
+
+ <span class="keyword token">function</span> <span class="function token">gotTitle</span><span class="punctuation token">(</span><span class="parameter token">title</span><span class="punctuation token">)</span> <span class="punctuation token">{</span>
+
+ <span class="keyword token">if</span> <span class="punctuation token">(</span>title <span class="operator token">===</span> <span class="constant token">TITLE_APPLY</span><span class="punctuation token">)</span> <span class="punctuation token">{</span>
+ browser<span class="punctuation token">.</span>pageAction<span class="punctuation token">.</span><span class="function token">setIcon</span><span class="punctuation token">(</span><span class="punctuation token">{</span>tabId<span class="punctuation token">:</span> tab<span class="punctuation token">.</span>id<span class="punctuation token">,</span> path<span class="punctuation token">:</span> <span class="string token">"icons/on.svg"</span><span class="punctuation token">}</span><span class="punctuation token">)</span><span class="punctuation token">;</span>
+ browser<span class="punctuation token">.</span>pageAction<span class="punctuation token">.</span><span class="function token">setTitle</span><span class="punctuation token">(</span><span class="punctuation token">{</span>tabId<span class="punctuation token">:</span> tab<span class="punctuation token">.</span>id<span class="punctuation token">,</span> title<span class="punctuation token">:</span> <span class="constant token">TITLE_REMOVE</span><span class="punctuation token">}</span><span class="punctuation token">)</span><span class="punctuation token">;</span>
+ browser<span class="punctuation token">.</span>tabs<span class="punctuation token">.</span><span class="function token">insertCSS</span><span class="punctuation token">(</span><span class="punctuation token">{</span>code<span class="punctuation token">:</span> <span class="constant token">CSS</span><span class="punctuation token">}</span><span class="punctuation token">)</span><span class="punctuation token">;</span>
+ <span class="punctuation token">}</span> <span class="keyword token">else</span> <span class="punctuation token">{</span>
+ browser<span class="punctuation token">.</span>pageAction<span class="punctuation token">.</span><span class="function token">setIcon</span><span class="punctuation token">(</span><span class="punctuation token">{</span>tabId<span class="punctuation token">:</span> tab<span class="punctuation token">.</span>id<span class="punctuation token">,</span> path<span class="punctuation token">:</span> <span class="string token">"icons/off.svg"</span><span class="punctuation token">}</span><span class="punctuation token">)</span><span class="punctuation token">;</span>
+ browser<span class="punctuation token">.</span>pageAction<span class="punctuation token">.</span><span class="function token">setTitle</span><span class="punctuation token">(</span><span class="punctuation token">{</span>tabId<span class="punctuation token">:</span> tab<span class="punctuation token">.</span>id<span class="punctuation token">,</span> title<span class="punctuation token">:</span> <span class="constant token">TITLE_APPLY</span><span class="punctuation token">}</span><span class="punctuation token">)</span><span class="punctuation token">;</span>
+ browser<span class="punctuation token">.</span>tabs<span class="punctuation token">.</span><span class="function token">removeCSS</span><span class="punctuation token">(</span><span class="punctuation token">{</span>code<span class="punctuation token">:</span> <span class="constant token">CSS</span><span class="punctuation token">}</span><span class="punctuation token">)</span><span class="punctuation token">;</span>
+ <span class="punctuation token">}</span>
+ <span class="punctuation token">}</span>
+
+ <span class="keyword token">var</span> gettingTitle <span class="operator token">=</span> browser<span class="punctuation token">.</span>pageAction<span class="punctuation token">.</span><span class="function token">getTitle</span><span class="punctuation token">(</span><span class="punctuation token">{</span>tabId<span class="punctuation token">:</span> tab<span class="punctuation token">.</span>id<span class="punctuation token">}</span><span class="punctuation token">)</span><span class="punctuation token">;</span>
+
+ gettingTitle<span class="punctuation token">.</span><span class="function token">then</span><span class="punctuation token">(</span>gotTitle<span class="punctuation token">)</span><span class="punctuation token">;</span>
+<span class="punctuation token">}</span></code></pre>
+
+<p>Um sicherzustellen, dass die PageAction nach jedem Update auf den Tab gültig ist, ruft ein Zuhörer auf  {{WebExtAPIRef("tabs.onUpdated")}} jedes Mal, wenn der Tab aktualisiert wird, auf initializePageAction () , um zu überprüfen, ob der Reiter immer noch ein Protokoll, auf das das CSS angewendet werden kann.</p>
+
+<pre class="brush: js line-numbers language-js"><code class="language-js">browser<span class="punctuation token">.</span>tabs<span class="punctuation token">.</span>onUpdated<span class="punctuation token">.</span><span class="function token">addListener</span><span class="punctuation token">(</span><span class="punctuation token">(</span><span class="parameter token">id<span class="punctuation token">,</span> changeInfo<span class="punctuation token">,</span> tab</span><span class="punctuation token">)</span> <span class="operator token">=&gt;</span> <span class="punctuation token">{</span>
+<span class="function token"> initializePageAction</span><span class="punctuation token">(</span>tab<span class="punctuation token">)</span><span class="punctuation token">;</span>
+<span class="punctuation token">}</span><span class="punctuation token">)</span><span class="punctuation token">;</span></code></pre>
+
+<h4 id="Einige_weitere_interessante_Fähigkeiten"><strong>Einige weitere interessante Fähigkeiten</strong></h4>
+
+<p>Es gibt noch ein paar andere Tabs API-Funktionen, die nicht in einen der früheren Abschnitte passen:</p>
+
+<ul>
+ <li>Erfassen Sie den sichtbaren Tab-Inhalt mit {{WebExtAPIRef("tabs.captureVisibleTab")}}.</li>
+ <li>Erkennen Sie die Hauptsprache des Inhalts in einem Tab mit {{WebExtAPIRef("tabs.detectLanguage")}} . Dies könnte zum Beispiel verwendet werden, um die Sprache in Ihrem UI mit der Seite, in der sie läuft, zu vergleichen.</li>
+</ul>
+
+<p><strong>Weitere Informationen</strong></p>
+
+<p>Wenn Sie mehr über die Tabs API erfahren möchten, schauen Sie sich an:</p>
+
+<ul>
+ <li><a href="https://developer.mozilla.org/en-US/Add-ons/WebExtensions/API/tabs">Tabs API-Referenz</a></li>
+ <li><a href="https://developer.mozilla.org/en-US/Add-ons/WebExtensions/Examples">Beispielerweiterungen</a> (von denen viele die Tabs API verwenden)<a name="_GoBack"></a></li>
+</ul>
+
+<p> </p>
diff --git a/files/de/mozilla/add-ons/webextensions/beispiele/index.html b/files/de/mozilla/add-ons/webextensions/beispiele/index.html
new file mode 100644
index 0000000000..627dbe559d
--- /dev/null
+++ b/files/de/mozilla/add-ons/webextensions/beispiele/index.html
@@ -0,0 +1,22 @@
+---
+title: Beispiele für Erweiterungen
+slug: Mozilla/Add-ons/WebExtensions/Beispiele
+tags:
+ - WebExtensions
+translation_of: Mozilla/Add-ons/WebExtensions/Examples
+---
+<div>{{AddonSidebar}}</div>
+
+<p><span id="result_box" lang="de"><span>Um zu veranschaulichen, wie Erweiterungen entwickelt werden, gibt es von uns ein Repository mit einfachen Beispielerweiterungen unter https://github.com/mdn/webextensions-examples.</span></span> <span id="result_box" lang="de"><span>Dieser Artikel beschreibt die WebExtension-APIs, die in diesem Repository verwendet werden.</span></span></p>
+
+<p><span lang="de"><span>Diese Beispiele funktionieren in Firefox Nightly: Die meisten funktionieren in früheren Versionen von Firefox, aber überprüfen Sie zur Sicherheit den Schlüssel <a href="https://developer.mozilla.org/en-US/Add-ons/WebExtensions/manifest.json/applications">strict_min_version</a> in der Datei manifest.json der Erweiterung.</span><br>
+ <br>
+ <span>Wenn Sie diese Beispiele ausprobieren möchten, haben Sie drei Möglichkeiten:</span><br>
+ <br>
+ 1.  <span>Klonen Sie das Repository, und laden Sie die Erweiterung direkt aus dem Quellverzeichnis mit der Funktion <a href="https://developer.mozilla.org/en-US/Add-ons/WebExtensions/Temporary_Installation_in_Firefox">"Load Temporary Add-on"</a>.</span> <span>Die Erweiterung bleibt solange geladen, bis Sie Firefox neu starten.</span></span><br>
+ <span lang="de"><span>2. Klonen Sie das Repository und verwenden Sie dann das <a href="https://developer.mozilla.org/en-US/Add-ons/WebExtensions/Getting_started_with_web-ext">web-ext</a> Befehlszeilentool, um Firefox mit der installierten Erweiterung auszuführen.</span><br>
+ 3. <span>Klonen Sie das Repository und gehen Sie dann zum <a href="https://developer.mozilla.org/en-US/Add-ons/WebExtensions/Temporary_Installation_in_Firefox">Build</a>-Verzeichnis.</span> <span>Dieses enthält "Build"- und "Signed"-Versionen aller Beispiele; Sie können sie also einfach in Firefox öffnen (mit Datei / Datei öffnen) und sie dauerhaft installieren, genau wie eine Erweiterung, die Sie von <a href="https://addons.mozilla.org/">addons.mozilla.org</a> installieren würden.</span><br>
+ <br>
+ <span>Wenn Sie einen Beitrag zum Repository leisten möchten, senden Sie uns ein <a href="https://github.com/mdn/webextensions-examples/blob/master/CONTRIBUTING.md">Pull-Request</a>!</span></span></p>
+
+<p>{{WebExtAllExamples}}</p>
diff --git a/files/de/mozilla/add-ons/webextensions/browser_support_for_javascript_apis/index.html b/files/de/mozilla/add-ons/webextensions/browser_support_for_javascript_apis/index.html
new file mode 100644
index 0000000000..1dffe19399
--- /dev/null
+++ b/files/de/mozilla/add-ons/webextensions/browser_support_for_javascript_apis/index.html
@@ -0,0 +1,15 @@
+---
+title: Browser support for JavaScript APIs
+slug: Mozilla/Add-ons/WebExtensions/Browser_support_for_JavaScript_APIs
+translation_of: Mozilla/Add-ons/WebExtensions/Browser_support_for_JavaScript_APIs
+---
+<div>{{AddonSidebar}}</div>
+
+<div>{{WebExtAllCompatTables}}</div>
+
+<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p>
+
+<div class="note"><strong>Acknowledgements</strong>
+
+<p>Microsoft Edge compatibility data is supplied by Microsoft Corporation and is included here under the Creative Commons Attribution 3.0 United States License.</p>
+</div>
diff --git a/files/de/mozilla/add-ons/webextensions/deine_erste_weberweiterung/index.html b/files/de/mozilla/add-ons/webextensions/deine_erste_weberweiterung/index.html
new file mode 100644
index 0000000000..b48b805b98
--- /dev/null
+++ b/files/de/mozilla/add-ons/webextensions/deine_erste_weberweiterung/index.html
@@ -0,0 +1,155 @@
+---
+title: Deine erste Erweiterung
+slug: Mozilla/Add-ons/WebExtensions/Deine_erste_WebErweiterung
+tags:
+ - Anleitung
+ - Erweiterung
+ - Weberweiterung
+translation_of: Mozilla/Add-ons/WebExtensions/Your_first_WebExtension
+---
+<div>{{AddonSidebar}}</div>
+
+<p>In diesem Artikel wird die Erstellung einer Erweiterung (Extension) für Firefox komplett beschrieben. Diese Erweiterung soll einen roten Rand zu jeder Seite, die von "mozilla.org" oder einer Subdomain geladen wurde, hinzufügen.</p>
+
+<p>Der Quellcode für dieses Beispiel ist auf GitHub auffindbar: <a href="https://github.com/mdn/webextensions-examples/tree/master/borderify">https://github.com/mdn/webextensions-examples/tree/master/borderify</a>.</p>
+
+<p>Als Erstes benötigst du Firefox Version 45 oder neuer.</p>
+
+<h2 id="Schreiben_der_Erweiterung">Schreiben der Erweiterung</h2>
+
+<p>Erstelle ein neues Verzeichnis und navigiere zu diesem:</p>
+
+<pre class="brush: bash">mkdir borderify
+cd borderify</pre>
+
+<h3 id="manifest.json">manifest.json</h3>
+
+<p>Jetzt erstelle eine Datei namens "manifest.json" direkt in dem "borderify" -Verzeichnis mit dem folgenden Inhalt:</p>
+
+<pre class="brush: json">{
+
+ "manifest_version": 2,
+ "name": "Borderify",
+ "version": "1.0",
+
+ "description": "Adds a 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>Die ersten drei <em>Keys</em>: <code><a href="/en-US/Add-ons/WebExtensions/manifest.json/manifest_version">manifest_version</a></code>, <code><a href="/en-US/Add-ons/WebExtensions/manifest.json/name">name</a></code> und <code><a href="/en-US/Add-ons/WebExtensions/manifest.json/version">version</a></code> sind verpflichtend und beinhalten grundlegende Metadaten für die Erweiterung.</li>
+ <li><code><a href="/en-US/Add-ons/WebExtensions/manifest.json/description">description</a></code> ist optional, aber empfehlenswert: diese wird dann im Add-ons Manager angezeigt.</li>
+ <li><code><a href="/en-US/Add-ons/WebExtensions/manifest.json/icons">icons</a></code> ist optional, aber empfehlenswert: es erlaubt es dir ein Icon für deine Erweiterung festzulegen, welches ebenfalls im Add-ons Manager angezeigt wird.</li>
+</ul>
+
+<p>Der interessanteste <em>Key</em> hier ist  <code><a href="/en-US/Add-ons/WebExtensions/manifest.json/content_scripts">content_scripts</a></code>, welcher Firefox auffordert, ein Skript in allen Webseiten zu laden, deren URLs einem spezifischen Muster zuzuordnen sind. In diesem Fall fragen wir Firefox nach dem Skript namens "borderify.js", um es in allen HTTP oder HTTPS Seiten von "mozilla.org" oder einer Subdomain zu laden.</p>
+
+<ul>
+ <li><a href="/en-US/Add-ons/WebExtensions/Content_scripts">Lerne mehr über content scripts.</a></li>
+ <li><a href="/en-US/Add-ons/WebExtensions/Match_patterns">Lerne mehr über übereinstimmende Muster</a>.</li>
+</ul>
+
+<div class="warning">
+<p><a href="/en-US/Add-ons/WebExtensions/WebExtensions_and_the_Add-on_ID#When_do_you_need_an_Add-on_ID">In manchen Situation musst eine ID für deine Erweiterung festlegen</a>. Wenn du eine Add-on ID festlegen musst, schreibe den  <code><a href="/en-US/Add-ons/WebExtensions/manifest.json/applications">applications</a></code> key in <code>manifest.json</code> und setze die <code>gecko.id</code>-Eigenschaft:</p>
+
+<pre class="brush: json">"applications": {
+ "gecko": {
+ "id": "borderify@example.com"
+ }
+}</pre>
+</div>
+
+<h3 id="iconsborder-48.png">icons/border-48.png</h3>
+
+<p>Die Erweiterung sollte ein Icon haben. Dieses wird neben dem Erweiterungseintrag in dem Add-ons manager angezeigt. Unsere manifest.json gibt den Ort des Icons unter "icons/border-48.png" an.</p>
+
+<p>Erstelle das "icons" Verzeichnis direkt in dem "borderify" Verzeichnis. Speichere dort ein Icon namens "border-48.png".  Du kannst dazu das <a href="https://github.com/mdn/webextensions-examples/blob/master/borderify/icons/border-48.png">von unserem Beispiel benutzen</a>, welches von der Google Material Design Iconsammlung stammt und unter den Richtlinien der <a href="https://creativecommons.org/licenses/by-sa/3.0/">Creative Commons Attribution-ShareAlike</a> Lizenz steht.</p>
+
+<p>Wenn du dich entscheidest ein eigenes Icon zu verwenden, dann sollte dieses 48x48 Pixel groß sein. Du kannst ebenfalls ein 96x96 Pixel großes Icon für hochauflösende Bildschirme, übergeben, welches dann als die <code>96</code> Property des <code>icons</code>-Objekts in der manifest.json festgelegt wird:</p>
+
+<pre class="brush: json">"icons": {
+ "48": "icons/border-48.png",
+ "96": "icons/border-96.png"
+}</pre>
+
+<p>Alternativ kannst du auch eine SVG-Datei übergeben, welche dann automatisch korrekt skaliert wird.<br>
+ (Beachte: Wenn du SVG verwendest und dein Symbol Text enthält, kannst du das Werkzeug "convert to path" deines SVG-Editors verwenden, um den Text zu verflachen, so dass er mit einer einheitlichen Größe/Position skaliert wird.</p>
+
+<ul>
+ <li><a href="/en-US/Add-ons/WebExtensions/manifest.json/icons">Lerne mehr über das festlegen von Icons.</a></li>
+</ul>
+
+<h3 id="borderify.js">borderify.js</h3>
+
+<p>Schließlich erstelle eine Datei namens "borderify.js" direkt in dem "borderify"-Verzeichnis mit diesem Inhalt:</p>
+
+<pre class="brush: js">document.body.style.border = "5px solid red";</pre>
+
+<p>Dieses Skript wird in Seiten geladen, welche mit dem Muster des  <code>content_scripts</code>-Keys in der manifest.json Datei übereinstimmen. Das Skript hat direkten Zugriff auf das Dokument, genauso wie die Skripte, die von der Seite selbst geladen werden.</p>
+
+<ul>
+ <li><a href="/en-US/Add-ons/WebExtensions/Content_scripts">Lerne mehr über content scripts.</a></li>
+</ul>
+
+<h2 id="Probiere_es_aus">Probiere es aus:</h2>
+
+<p>Als Erstes stelle sicher, dass du die richtigen Dateien an den richtigen Orten hast:</p>
+
+<pre>borderify/
+ icons/
+ border-48.png
+ borderify.js
+ manifest.json</pre>
+
+<h3 id="Installiere_nun_das_Plugin">Installiere nun das Plugin</h3>
+
+<p>Öffne "about:debugging" in Firefox, klicke "Add-on temporär laden" und wähle eine beliebige Datei aus deinem Erweiterungsverzeichnis:</p>
+
+<p>{{EmbedYouTube("cer9EUKegG4")}}</p>
+
+<p>Die Erweiterung wird nun ausgeführt und ist solange aktiv, bis du Firefox neustartest.</p>
+
+<p>Alternativ kannst du Erweiterung auch von der Kommandozeile mit dem <a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/Getting_started_with_web-ext">web-ext</a> Tool ausführen.</p>
+
+<h3 id="Teste_es_nun_aus">Teste es nun aus</h3>
+
+<p>Nun besuche eine Seite von "mozilla.org". Du solltest jetzt einen roten Rand um die Seite erkennen:</p>
+
+<p>{{EmbedYouTube("rxBQl2Z9IBQ")}}</p>
+
+<div class="note">
+<p>Versuche es allerdings nicht auf addons.mozilla.org! Content Scripts werden zurzeit auf dieser Domain geblockt.</p>
+</div>
+
+<p>Experimentiere nun ein bisschen. Bearbeite das "content script", um die Farbe des Randes zu ändern oder mache etwas anderes mit dem Seiteninhalt. Speichere das "content script", lade die Erweiterungsdateien in about:debugging neu mit Hilfe des "Neu laden"-Knopfs. Du kannst die Änderungen sofort sehen:</p>
+
+<p>{{EmbedYouTube("NuajE60jfGY")}}</p>
+
+<ul>
+ <li><a href="/en-US/Add-ons/WebExtensions/Temporary_Installation_in_Firefox">Lerne mehr über das Laden von Erweiterungen</a></li>
+</ul>
+
+<h2 id="Verpacken_und_Veröffentlichen">Verpacken und Veröffentlichen</h2>
+
+<p>Damit andere Personen deine Erweiterung benutzen können musst du deine Erweiterung verpacken und zum Signieren an Mozilla senden. Um mehr darüber zu lernen, siehe  <a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/Publishing_your_WebExtension">"Deine Erweiterung veröffentlichen"</a>.</p>
+
+<h2 id="Was_nun">Was nun?</h2>
+
+<p>Jetzt hast du eine Vorstellung vom Prozess der WebExtension-Entwicklung für Firefox erhalten. Versuche:</p>
+
+<ul>
+ <li><a href="/en-US/Add-ons/WebExtensions/Anatomy_of_a_WebExtension">mehr über die Anatomie von Erweiterungen zu lesen</a></li>
+ <li><a href="/en-US/Add-ons/WebExtensions/Your_second_WebExtension">eine komplexere Erweiterung zu schreiben</a></li>
+ <li><a href="/en-US/Add-ons/WebExtensions/API">über die verfügbaren JavaScript APIs für Erweiterungen zu lesen.</a></li>
+</ul>
diff --git a/files/de/mozilla/add-ons/webextensions/deine_zweite_erweiterung/index.html b/files/de/mozilla/add-ons/webextensions/deine_zweite_erweiterung/index.html
new file mode 100644
index 0000000000..cc002d0b24
--- /dev/null
+++ b/files/de/mozilla/add-ons/webextensions/deine_zweite_erweiterung/index.html
@@ -0,0 +1,357 @@
+---
+title: Deine zweite Erweiterung
+slug: Mozilla/Add-ons/WebExtensions/Deine_zweite_Erweiterung
+translation_of: Mozilla/Add-ons/WebExtensions/Your_second_WebExtension
+---
+<p>{{AddonSidebar}}</p>
+
+<p>Wenn du den Artikel "<a href="https://developer.mozilla.org/de/Add-ons/WebExtensions/Deine_erste_WebErweiterung">Deine erste Erweiterung</a>" gelesen hast, hast du schon eine Vorstellung, wie man eine Erweiterung schreibt. In diesem Artikel werden wir eine komplexere Erweiterung schreiben, die mehr APIs benutzt.</p>
+
+<p>Die Erweiterung fügt eine neue Schaltfläche zu Firefox hinzu. Wenn der Nutzer diese anklickt, wird ihm ein Popup angezeigt auf dem er ein Tier auswählen kann. Sobald er eines ausgewählt hat, wird der aktulle Inhalt der Website mit dem Bild des ausgewählten Tieres ersetzt.</p>
+
+<p>Um das zu implementieren werden wir:</p>
+
+<ul>
+ <li><strong>eine <a href="https://developer.mozilla.org/en-US/Add-ons/WebExtensions/user_interface/Browser_action">Browser-Aktion</a> definieren, die zur Firefox-Toolbar hinzugefügt werden wird.</strong><br>
+ Für die Schaltfläche benötigen wir:
+ <ul>
+ <li>ein Icon namens "beasts-32.png"</li>
+ <li>Ein Popup welches sich öffnet, sobald der Nutzer auf die Schaltfläche klickt. Das Popup wird <a href="https://developer.mozilla.org/de/docs/Glossary/HTML">HTML</a>, <a href="https://developer.mozilla.org/de/docs/Glossary/CSS">CSS</a>, und <a href="https://developer.mozilla.org/de/docs/Glossary/JavaScript">JavaScript</a> beinhalten.</li>
+ </ul>
+ </li>
+ <li><strong>ein Icon festlegen</strong>, genannt "beasts-48.png". Dieses wird im Addon-Manager angezeigt werden.</li>
+ <li><strong>Ein content-script "beastify.js" schreiben, welches auf Webseiten angezeigt werden wird.</strong><br>
+ Das ist der Code, der letztendlich die Webseite verändert.</li>
+ <li><strong>Einige Tier-Bilder einfügen, um die Bilder auf der Webseite zu ersetzen</strong><br>
+ Die Bilder werden "web-abrufbare Ressourcen" werden, sodass die Webseite sie abrufen kann.</li>
+</ul>
+
+<p>Man kann die Struktur der Erweiterung wie folgt darstellen:</p>
+
+<p><img alt="" src="https://mdn.mozillademos.org/files/13671/Untitled-1.png" style="display: block; height: 1200px; margin-left: auto; margin-right: auto; width: 860px;"></p>
+
+<p>Es ist eine einfache Erweiterung, aber es zeigt viele der Grundkonzepte der WebExtensions API:</p>
+
+<ul>
+ <li>Hinzufügen einer Schaltfläche zur Toolbar</li>
+ <li>Erstellen eines Popup-Menüs mit HTML, CSS, und JavaScript</li>
+ <li>Verändern des Webseiteninhalts</li>
+ <li>Kommunikation zwischen dem content-script und dem Rest der Erweiterung</li>
+ <li>Verpacken von Ressourcen, die später auf der Webseite genutzt werden können.</li>
+</ul>
+
+<p>Der <a href="https://github.com/mdn/webextensions-examples/tree/master/beastify">komplette Quellcode der Erweiterung</a> ist auf GitHub zu finden.</p>
+
+<p>Um die Erweiterung zu erstellen, brauchst du mindestens Firefox 45.</p>
+
+<h2 id="Die_Erweiterung_schreiben">Die Erweiterung schreiben</h2>
+
+<p>Erstelle einen neuen Ordner und öffne ihn:</p>
+
+<pre class="brush: bash">mkdir beastify
+cd beastify</pre>
+
+<h3 id="manifest.json">manifest.json</h3>
+
+<p>Erstelle jetzt eine Datei namens "manifest.json" und füge den folgenden Inhalt ein:</p>
+
+<pre class="brush: json">{
+
+ "manifest_version": 2,
+ "name": "Beastify",
+ "version": "1.0",
+
+ "description": "Erstellt eine Schaltfläche in der Toolbar. Klicke auf eine der Schaltflächen, um ein Tier auszuwählen. Der Inhalt des gerade geöffneten Tabs wird dann mit dem Bild des ausgewählten Tieres ersetzt. Nachschlagen: https://developer.mozilla.org/en-US/Add-ons/WebExtensions/Examples#beastify",
+ "homepage_url": "https://github.com/mdn/webextensions-examples/tree/master/beastify",
+ "icons": {
+ "48": "icons/beasts-48.png"
+ },
+
+ "permissions": [
+ "activeTab"
+ ],
+
+ "browser_action": {
+ "default_icon": "icons/beasts-32.png",
+ "default_title": "Beastify",
+ "default_popup": "popup/choose_beast.html"
+ },
+
+ "web_accessible_resources": [
+ "beasts/frog.jpg",
+ "beasts/turtle.jpg",
+ "beasts/snake.jpg"
+ ]
+
+}
+</pre>
+
+<ul>
+ <li>Die ersten drei Eigenschaften <code><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/manifest.json/manifest_version">manifest_version</a></code>, <code><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/manifest.json/name">name</a></code>, und <code><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/manifest.json/version">version</a></code> sind erforderlich und enthalten Basismetadaten.</li>
+ <li><code><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/manifest.json/description">description</a></code> und <code><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/manifest.json/homepage_url">homepage_url</a></code> sind optional aber empfohlen, sie erhalten nützliche Informationen.</li>
+ <li><code><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/manifest.json/icons">icons</a></code> ist optional aber empfohlen, hier kannst du ein Icon festlegen, welches im Addon-Manager angezeigt werden wird.</li>
+ <li><code><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/manifest.json/permissions">permissions</a></code> listet die Berechtigungen auf, die die Erweiterung benötigt. Hier brauchen wir nur die <a href="https://developer.mozilla.org/en-US/Add-ons/WebExtensions/manifest.json/permissions#activeTab_permission">activeTab Berechtigung</a>.</li>
+ <li><code><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/manifest.json/browser_action">browser_action</a></code> spezifiziert die Schaltfläche. Hier übergeben wir drei Informationen:
+ <ul>
+ <li><code>default_icon</code> ist notwendig, und gibt das Icon der Schaltfläche an</li>
+ <li><code>default_title</code> ist optional und wird unter dem Icon angezeigt</li>
+ <li><code>default_popup</code> wird verwendet, wenn ein Popup angezeigt werden soll, sobald der Nutzer auf die Schaltfläche klickt. Das soll so sein, deshalb wird hier die Eigenschaft mit einer HTML-Datei belegt.</li>
+ </ul>
+ </li>
+ <li><code><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/manifest.json/web_accessible_resources">web_accessible_resources</a></code> listet die Dateien auf, die auf Webseiten verwendet werden solllen. Weil die Erweiterung den Inhalt der Webseite mit den Bilder, die der Erweiterung hinzugefügt wurden, verändern soll, müssen die Bilder hier aufgelistet werden.</li>
+</ul>
+
+<p>Beachte, dass alle Pfade relativ zur manifest.json angegeben werden.</p>
+
+<h3 id="Das_Icon">Das Icon</h3>
+
+<p>Die Erweiterung soll ein Icon beinhalten, das neben dem Eintrag der Erweiterung in der Add-ons-Verwaltung angezeigt wird (diese kannst du durch Aufrufen der URL "about:addons" öffnen). In manifest.json haben wir festgelegt, dass wir ein Icon für die Toolbar unter "icons/beasts-48.png" bereitstellen.</p>
+
+<p>Erstelle das "icons"-Verzeichnis and speichere dort das Icon namens "beasts-48.png".  Du kannst das <a href="https://github.com/mdn/webextensions-examples/blob/master/beastify/icons/beasts-48.png">Icon aus unserem Beispiel</a> verwenden, welches aus dem <a href="https://www.iconfinder.com/iconsets/free-retina-icon-set">Aha-Soft’s Free Retina Icon-Set</a> stammt und gemäß seiner <a href="http://www.aha-soft.com/free-icons/free-retina-icon-set/">Lizenzbestimmungen</a> genutzt wird.</p>
+
+<p>Wenn du dich entscheidest, ein eigenes Icon zu verwenden, sollte es eine Auflösung von 48x48 Pixeln besitzen. Zusätzlich kannst du ein 96x96 Pixel großes Icon für hochaufgelöste Bildschirme bereitstellen. In diesem Fall wird es unter der Eigenschaft <code>96</code> des <code>icons</code> Objekts in manifest.json aufgeführt:</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/beasts-48.png"</span><span class="punctuation token">,</span>
+ <span class="key token">"96":</span> <span class="string token">"icons/beasts-96.png"</span>
+<span class="punctuation token">}</span></code></pre>
+
+<h3 id="Die_Toolbar-Schaltfläche">Die Toolbar-Schaltfläche</h3>
+
+<p>Die Toolbar-Schaltfläche benötigt ebenfalls ein Icon, das laut unserer manifest.json unter "icons/beasts-32.png" bereitsteht.</p>
+
+<p>Speichere ein Icon namens "beasts-32.png" im Verzeichnis "icons".Du kannst das <a href="https://github.com/mdn/webextensions-examples/blob/master/beastify/icons/beasts-32.png">Icon aus unserem Beispiel</a> verwenden, welches aus dem <a href="http://www.iconbeast.com/free">IconBeast Lite Icon-Set</a> stammt und gemäß seiner <a href="http://www.iconbeast.com/faq/">Lizenzbestimmungen</a> genutzt wird.</p>
+
+<p>Wenn du kein Popup einsetzt, dann wird ein Klick-Event zur Erweiterung gesendet, sobald der Benutzer die Schaltfläche anklickt. Wenn du hingegen ein Popup einsetzt, wird dieses Klick-Event nicht gesendet, sondern das Popup wird geöffnet. Da wir ein Popup verwenden wollen, soll dieses im nächsten Schritt erstellt werden.</p>
+
+<h3 id="Das_Popup">Das Popup</h3>
+
+<p>Mithilfe des Popups soll der Benutzer eines von drei Tieren auswählen können.</p>
+
+<p>Erstelle ein neues Verzeichnis namens "popup" in der obersten Ebene des Erweiterungsverzeichnisses. Dieses Verzeichnis wird den Code für das Popup enthalten. Das Popup besteht aus drei Dateien:</p>
+
+<ul>
+ <li><strong><code>choose_beast.html</code></strong> legt den Inhalt des Fensters fest</li>
+ <li><strong><code>choose_beast.css</code></strong> legt das Styling des Fensters fest</li>
+ <li><strong><code>choose_beast.js</code></strong> verarbeitet die Auswahl des Benutzers, indem es im aktiven Tab ein Content Script ausführt</li>
+</ul>
+
+<h4 id="choose_beast.html">choose_beast.html</h4>
+
+<p>Die HTML-Datei sieht folgendermaßen aus:</p>
+
+<pre class="brush: html">&lt;!DOCTYPE html&gt;
+
+&lt;html&gt;
+ &lt;head&gt;
+ &lt;meta charset="utf-8"&gt;
+ &lt;link rel="stylesheet" href="choose_beast.css"/&gt;
+ &lt;/head&gt;
+
+ &lt;body&gt;
+ &lt;div class="button beast"&gt;Frog&lt;/div&gt;
+ &lt;div class="button beast"&gt;Turtle&lt;/div&gt;
+ &lt;div class="button beast"&gt;Snake&lt;/div&gt;
+ &lt;div class="button clear"&gt;Reset&lt;/div&gt;
+
+ &lt;script src="choose_beast.js"&gt;&lt;/script&gt;
+ &lt;/body&gt;
+
+&lt;/html&gt;</pre>
+
+<p>Es gibt ein Element für jedes Tier. Beachte, dass in dieser Datei auch die CSS- und JavaScript-Dateien verlinkt werden, genau wie auf einer Website.</p>
+
+<h4 id="choose_beast.css">choose_beast.css</h4>
+
+<p>Die CSS-Datei legt die Größe des Popups fest, stellt sicher, dass die drei Auswahlmöglichkeiten, den verfügbaren Platz ausfüllen und legt das grundlegende Styling fest:</p>
+
+<pre class="brush: css">html, body {
+ width: 100px;
+}
+
+.button {
+ margin: 3% auto;
+ padding: 4px;
+ text-align: center;
+ font-size: 1.5em;
+ cursor: pointer;
+}
+
+.beast:hover {
+ background-color: #CFF2F2;
+}
+
+.beast {
+ background-color: #E5F2F2;
+}
+
+.clear {
+ background-color: #FBFBC9;
+}
+
+.clear:hover {
+ background-color: #EAEAC9;
+}
+</pre>
+
+<h4 id="choose_beast.js">choose_beast.js</h4>
+
+<p>In der JavaScript-Datei des Popups empfangen wir Klick-Events. Wenn ein Klick auf eines der Tiere erfolgte, wird das Content Script zum aktiven Tab hinzugefügt. Sobald das Content Script geladen wird, übergeben wir ihm eine Nachricht mit der Auswahl des Tieres:</p>
+
+<pre class="brush: js">/*
+Given the name of a beast, get the URL to the corresponding image.
+*/
+function beastNameToURL(beastName) {
+ switch (beastName) {
+ case "Frog":
+ return browser.extension.getURL("beasts/frog.jpg");
+ case "Snake":
+ return browser.extension.getURL("beasts/snake.jpg");
+ case "Turtle":
+ return browser.extension.getURL("beasts/turtle.jpg");
+ }
+}
+
+/*
+Listen for clicks in the popup.
+
+If the click is on one of the beasts:
+ Inject the "beastify.js" content script in the active tab.
+
+ Then get the active tab and send "beastify.js" a message
+ containing the URL to the chosen beast's image.
+
+If it's on a button which contains class "clear":
+ Reload the page.
+ Close the popup. This is needed, as the content script malfunctions after page reloads.
+*/
+
+document.addEventListener("click", (e) =&gt; {
+ if (e.target.classList.contains("beast")) {
+ var chosenBeast = e.target.textContent;
+ var chosenBeastURL = beastNameToURL(chosenBeast);
+
+ browser.tabs.executeScript(null, {
+ file: "/content_scripts/beastify.js"
+ });
+
+ var gettingActiveTab = browser.tabs.query({active: true, currentWindow: true});
+ gettingActiveTab.then((tabs) =&gt; {
+ browser.tabs.sendMessage(tabs[0].id, {beastURL: chosenBeastURL});
+ });
+ }
+ else if (e.target.classList.contains("clear")) {
+ browser.tabs.reload();
+ window.close();
+ }
+});
+</pre>
+
+<p>It uses three WebExtensions API functions:</p>
+
+<ul>
+ <li><code><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/API/tabs/executeScript">browser.tabs.executeScript</a></code> to inject a content script found at "content_scripts/beastify.js" into the active tab</li>
+ <li><code><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/API/tabs/query">browser.tabs.query</a></code> to get the active tab</li>
+ <li><code><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/API/tabs/sendMessage">browser.tabs.sendMessage</a></code> to send a message to content scripts running in the active tab. The message contains the URL to an image of the chosen beast.</li>
+</ul>
+
+<h3 id="The_content_script">The content script</h3>
+
+<p>Create a new directory, under the extension root, called "content_scripts" and create a new file in it called "beastify.js", with the following contents:</p>
+
+<pre class="brush: js">/*
+beastify():
+* removes every node in the document.body,
+* then inserts the chosen beast
+* then removes itself as a listener
+*/
+function beastify(request, sender, sendResponse) {
+ removeEverything();
+ insertBeast(request.beastURL);
+ browser.runtime.onMessage.removeListener(beastify);
+}
+
+/*
+Remove every node under document.body
+*/
+function removeEverything() {
+ while (document.body.firstChild) {
+ document.body.firstChild.remove();
+ }
+}
+
+/*
+Given a URL to a beast image, create and style an IMG node pointing to
+that image, then insert the node into the document.
+*/
+function insertBeast(beastURL) {
+ var beastImage = document.createElement("img");
+ beastImage.setAttribute("src", beastURL);
+ beastImage.setAttribute("style", "width: 100vw");
+ beastImage.setAttribute("style", "height: 100vh");
+ document.body.appendChild(beastImage);
+}
+
+/*
+Assign beastify() as a listener for messages from the extension.
+*/
+browser.runtime.onMessage.addListener(beastify);
+</pre>
+
+<p>The content script adds a listener to messages from the extension (specifically, from "choose_beast.js" above). In the listener, it:</p>
+
+<ul>
+ <li>removes every element in the <code>document.body</code></li>
+ <li>creates an <code>&lt;img&gt;</code> element pointing to the given URL, and inserts it into the DOM</li>
+ <li>removes the message listener.</li>
+</ul>
+
+<h3 id="The_beasts">The beasts</h3>
+
+<p>Finally, we need to include the images of the animals.</p>
+
+<p>Create a new directory called "beasts", and add the three images in that directory, with the appropriate names. You can get the images from <a href="https://github.com/mdn/webextensions-examples/tree/master/beastify/beasts">the GitHub repository</a>, or from here:</p>
+
+<p><img alt="" src="https://mdn.mozillademos.org/files/11459/frog.jpg" style="display: inline-block; height: 200px; margin: 20px; width: 200px;"><img alt="" src="https://mdn.mozillademos.org/files/11461/snake.jpg" style="display: inline-block; height: 200px; margin: 20px; width: 200px;"><img alt="" src="https://mdn.mozillademos.org/files/11463/turtle.jpg" style="display: inline-block; height: 200px; margin: 20px; width: 200px;"></p>
+
+<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>beastify/
+
+ beasts/
+ frog.jpg
+ snake.jpg
+ turtle.jpg
+
+ content_scripts/
+ beastify.js
+
+ icons/
+ beasts-32.png
+ beasts-48.png
+
+ popup/
+ choose_beast.css
+ choose_beast.html
+ choose_beast.js
+
+ manifest.json</pre>
+
+<p>Starting in Firefox 45, you can install extensions temporarily from disk.</p>
+
+<p>Open "about:debugging" in Firefox, click "Load Temporary Add-on", and select your manifest.json file. You should then see the extension's icon appear in the Firefox toolbar:</p>
+
+<p>{{EmbedYouTube("sAM78GU4P34")}}</p>
+
+<p>Open a web page, then click the icon, select a beast, and see the web page change:</p>
+
+<p>{{EmbedYouTube("YMQXyAQSiE8")}}</p>
+
+<h2 id="Developing_from_the_command_line">Developing from the command line</h2>
+
+<p>You can automate the temporary installation step by using the <a href="/en-US/Add-ons/WebExtensions/Getting_started_with_web-ext">web-ext</a> tool. Try this:</p>
+
+<pre class="brush: bash">cd beastify
+web-ext run</pre>
diff --git a/files/de/mozilla/add-ons/webextensions/extending_the_developer_tools/index.html b/files/de/mozilla/add-ons/webextensions/extending_the_developer_tools/index.html
new file mode 100644
index 0000000000..688d48f544
--- /dev/null
+++ b/files/de/mozilla/add-ons/webextensions/extending_the_developer_tools/index.html
@@ -0,0 +1,143 @@
+---
+title: Extending the developer tools
+slug: Mozilla/Add-ons/WebExtensions/Extending_the_developer_tools
+tags:
+ - Deutsch Guide
+ - DevTools
+ - Extentions
+ - german
+translation_of: Mozilla/Add-ons/WebExtensions/Extending_the_developer_tools
+---
+<div class="note">
+<p>Das heißt Folgendes wird nicht unterstützt , sie können Änderungen an der Seite sehen, die von Seitenskripten vorgenommen wurden.Diese Seite beschreibt devtools-APIs, wie sie in Firefox 55 vorhanden sind. Obwohl die APIs auf den Chrome devtools APIs basieren, gibt es noch viele Funktionen, die in Firefox noch nicht implementiert sind und daher hier nicht dokumentiert sind. Informationen zu den derzeit fehlenden Funktionen finden Sie unter Einschränkungen der devtools-APIs.</p>
+</div>
+
+<ul>
+ <li>Sie können WebExtensions-APIs verwenden, um die integrierten Entwicklertools des Browsers zu erweitern. Um eine devtools-Erweiterung zu erstellen, geben Sie den Schlüssel "devtools_Seite" in manifest.json ein:</li>
+ <li>
+ <pre class="brush: json">"devtools_seite": "devtools/devtools-seite.html"</pre>
+ </li>
+ <li><span style="font-size: 1rem; letter-spacing: -0.00278rem;">Der Wert dieses Schlüssels ist eine URL, die auf eine HTML-Datei verweist, die mit Ihrer Erweiterung gebündelt wurde . Die URL sollte relativ zur manifest.json-Datei selbst sein.</span></li>
+ <li>Die HTML-Datei definiert eine spezielle Seite in der Verlängerung, Seite der devtools ResourceHinzufügen
+ <h3 id="Devtools_Seite">Devtools Seite</h3>
+ </li>
+ <li><span style="font-size: 1rem; letter-spacing: -0.00278rem;">Die davetool Seite wird beim Öffnen der Browser Devtools geladen und beim Schließen entladen. Beachten Sie, dass, weil die devtools Fenster mit einem einzigen Register zugeordnet ist, es für mehr als ein devtools Fenster durchaus möglich ist - also mehr als eine devtools Seite - zur gleichen Zeit existieren.</span></li>
+</ul>
+
+<p><span style="font-size: 1rem; letter-spacing: -0.00278rem;">Die devtools-Seite hat kein sichtbares DOM, kann aber JavaScript-Quellen mit &lt;script&gt; -Tags enthalten. Die Quellen müssen mit der Erweiterung selbst gebündelt werden. Die normalen DOM-APIs, auf die über das globale Fensterobjekt zugegriffen werden kann Die gleichen WebExtension-APIs wie in Inhaltsskripten Die devtools-APIs: Devtools </span>inspiziertes Fenster devtools.network devtools.panels Beachten Sie, dass die devtools-Seite keinen Zugriff auf andere Web Extensions-APIs erhält und die Hintergrundseite keinen Zugriff auf die devtools-APIs erhält. Stattdessen müssen die davetool-Seite und die Hintergrundseite definiert werden. Verwenden der Laufzeit-Messeging-APIs. Hier ist ein Beispiel:</p>
+
+<div class="twocolumns">
+<ul>
+ <li>
+ <pre class="syntaxbox">&lt;!DOCTYPE html&gt; &lt;html&gt;   &lt;head&gt;     &lt;meta charset="utf-8"&gt;   &lt;/head&gt;   &lt;body&gt;     &lt;script sec="devtools.js"&gt;&lt;/script&gt;   &lt;/body&gt; &lt;/html&gt;The devtools.js file will hold the actual code creating your dev tools extensions.</pre>
+ </li>
+ <li>
+ <h3 id="Erstellen_von_panel">Erstellen von panel </h3>
+ </li>
+ <li>Das devtools-Fenster enthält eine Reihe separater Tools - den JavaScript-Debugger, den Netzwerkmonitor usw.  Über eine Reihe von Registerkarten am oberen Rand kann der Benutzer zwischen den verschiedenen Werkzeugen wechseln.  Das Fenster, in dem sich die Benutzeroberfläche jedes Tools befindet, wird als "Panel" bezeichnet.</li>
+ <li><code><font face="Arial, x-locale-body, sans-serif"><span style="background-color: #ffffff;">Gebrauche der </span></font>devtools.panels.create()</code> API,,  um Ihren eigenen  Panel Herzustellen in devtools Fenster(Window)</li>
+ <li>
+ <pre class="brush: js">browser.devtools.panels.create(
+ "My Panel", // title
+ "icons/star.png", // icon
+ "devtools/panel/panel.html" // content
+).then((newPanel) =&gt; {
+ newPanel.onShown.addListener(initialisePanel);
+ newPanel.onHidden.addListener(unInitialisePanel);
+});</pre>
+ </li>
+ <li>
+ <p>Hierfür sind drei Argumente erforderlich: Titel, Symbol und Inhalt des Panels.  Es wird ein Versprechen zurück gegeben, das devtool panel ExtensionPanel-Objekt aufgelöst wird, das in neue Panel darstellt.</p>
+ </li>
+ <li><code>devtools.panels.ExtensionPanel</code> dieser obieckt reprsentiert das neue Panel</li>
+ <li>
+ <h3 id="Interaktion_mit_dem_Zielfenster">Interaktion mit dem Zielfenster</h3>
+ </li>
+ <li>Die Entwicklertools sind immer an eine bestimmte Browserregisterkarte angehängt.  Dies wird als "Ziel" für die Entwicklertools oder als "inspiziertes Fenster" bezeichnet, damit können Sie inspizierten Fenster mit der Sie interagieren</li>
+ <li><code><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/API/devtools.inspectedWindow">devtools.inspectedWindow</a></code> API.</li>
+</ul>
+</div>
+
+<dl>
+ <dt>
+ <h3 id="Code_im_Zielfenster_ausführen">Code im Zielfenster ausführen</h3>
+ </dt>
+</dl>
+
+<p>Der<code><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/API/devtools.inspectedWindow/eval">devtools.inspectedWindow.eval()</a></code> bereitgestellt in einfacher weisen um den Code auszuführen in den lnspector Fensten </p>
+
+<div class="blockIndicator note">
+<p class="syntaxbox">Arbeiten mit Inhaltsskripten Dies entspricht in etwa der Verwendung von {{WebExtAPIRef ("tabs.executeScript ()")}} zum Einfügen eines Inhaltsskripts, mit einem wichtigen Unterschied nommen wurden.Beachten Sie, dass eine saubere Ansicht des DOM eine Sicherheitsfunktion ist, mit der verhindert werden soll, dass feindliche Seiten Erweiterungen austricksen, indem das Verhalten nativer DOM-Funktionen neu definiert wird.  Das bedeutet, dass Sie mit eval () sehr vorsichtig sein müssen und ein normales Inhaltsskript verwenden sollten, wenn Sie können.</p>
+</div>
+
+<p>Mit devtools.inspectedWindow.eval () geladene Skripte sehen auch keine von c definierten JavaJavaScript-Variablen</p>
+
+<h3 id="Arbeiten_mit_Inhaltsskripten">Arbeiten mit Inhaltsskripten</h3>
+
+<p>devtools document hat keinen direkten Zugrif Beachten Sie, dass eine saubere Ansicht des DOM eine Sicherheitsfunktion ist, mit der verhindert werden soll, dass feindliche Seiten Erweiterungen austricksen, indem das Verhalten nativer DOM-Funktionen neu definiert wird.  Das bedeutet, dass Sie mit eval () sehr vorsichtig sein müssen und ein normales Inhaltsskript verwenden sollten, wenn Sie können.&lt;</p>
+
+<p>Bei einem Skript muss das devtools5-Dokument eine Nachricht senden, in der es aufgefordert wird, das Skript einzufügen.  Die devtools.inspectedWindow.table gibt die ID der Zielregisterkarte an:</p>
+
+<p>Wenn Sie Nachrichten zwischen den im Zielfenster ausgeführten Inhaltsskripten und einem devtools-Dokument austauschen müssen, sollten Sie {{WebExtAPIRef ("runtime.connect ()")} und {{WebExtAPIRef ("runtime.onConnect") verwenden  ")}}, um eine Verbindung zwischen der Hintergrundseite und dem devtools-Dokument herzustellen.  Die Hintergrundseite kann dann eine Zuordnung zwischen Registerkarten-IDs und {{WebExtAPIRef ("runtime.Port")}} -Objekten verwalten und diese verwenden, um Nachrichten zwischen den beiden Bereichen weiterzuleiten.</p>
+
+<p>Diese APIs basieren auf den Chrome devtools-APIs, aber im Vergleich zu Chrome fehlen noch viele Funktionen.  In diesem Abschnitt werden die Funktionen aufgeführt, die ab Firefox 54 noch nicht implementiert sind. Beachten Sie, dass sich die devtools-APIs in der aktiven Entwicklung befinden und wir erwarten, dass die meisten davon in zukünftigen Versionen unterstützt werden.</p>
+
+<ul>
+ <li>
+ <pre class="brush: js">// devtools-panel.js
+
+const scriptToAttach = "document.body.innerHTML = 'Hi from the devtools';";
+
+window.addEventListener("click", () =&gt; {
+ browser.runtime.sendMessage({
+ tabId: browser.devtools.inspectedWindow.tabId,
+ script: scriptToAttach
+ });
+});</pre>
+ </li>
+ <li>
+ <pre class="brush: js">// background.js
+
+function handleMessage(request, sender, sendResponse) {
+ browser.tabs.executeScript(request.tabId, {
+ code: request.script
+ });
+}
+
+browser.runtime.onMessage.addListener(handleMessage);</pre>
+ </li>
+ <li><img alt="" src="https://mdn.mozillademos.org/files/14923/devtools-content-scripts.png" style="display: block; height: 416px; margin-left: auto; margin-right: auto; width: 600px;"></li>
+ <li>
+ <h2 id="Einschränkungen_der_devtools_APIs">Einschränkungen der devtools APIs</h2>
+ </li>
+ <li>
+ <h3 id="devtools_inspizierte_Window">devtools inspizierte Window</h3>
+ </li>
+ <li>Folgendes wird nicht unterstüzt</li>
+ <li><code>inspectedWindow.getResources()</code></li>
+ <li><code>inspectedWindow.onResourceAdded</code></li>
+ <li><code>inspectedWindow.onResourceContentCommitted</code></li>
+ <li>None of the options to <code>inspectedWindow.eval()</code> are supported.</li>
+ <li>Scripts injected using <code>inspectedWindow.eval()</code> can't use all the Console's command-line helper functions, but <code>$0</code> and <code>inspect(...)</code> are both supported (starting from Firefox 55).</li>
+ <li>
+ <h3 id="devtools.panele">devtools.panele</h3>
+ </li>
+ <li>The following are not supported:</li>
+ <li><code>panels.elements</code></li>
+ <li><code>panels.sources</code></li>
+ <li><code>panels.setOpenResourceHandler()</code></li>
+ <li><code>panels.openResource()</code></li>
+ <li><code>panels.ExtensionPanel.createStatusBarButton()</code></li>
+ <li><code>panels.Button</code></li>
+ <li><code>panels.ElementsPanel</code></li>
+ <li><code>panels.SourcesPanel</code></li>
+ <li>
+ <h3 id="Beispielsweise">Beispielsweise</h3>
+ </li>
+ <li>Das <a href="https://github.com/mdn/webextensions-examples">webextensions-examples</a> bericht an GitHub, enthält einige Beispiele für Erweiterungen, die devtools-Panels verwenden:</li>
+ <li>
+ <p><a href="https://github.com/mdn/webextensions-examples/blob/master/devtools-panels/">devtools-panels</a> benutzen Sie dentools Panels</p>
+ </li>
+</ul>
+
+<p><span style="display: none;"> </span></p>
diff --git a/files/de/mozilla/add-ons/webextensions/index.html b/files/de/mozilla/add-ons/webextensions/index.html
new file mode 100644
index 0000000000..bb1b68b2de
--- /dev/null
+++ b/files/de/mozilla/add-ons/webextensions/index.html
@@ -0,0 +1,86 @@
+---
+title: WebExtensions
+slug: Mozilla/Add-ons/WebExtensions
+translation_of: Mozilla/Add-ons/WebExtensions
+---
+<div>{{AddonSidebar}}</div>
+
+<p>WebExtensions sind ein Cross-Browser-System zur Entwicklung von Browser-Add-ons. Das System ist in weiten Teilen kompatibel mit der <a class="external-icon external" href="https://developer.chrome.com/extensions">extension API</a>, welche von Google Chrome und Opera unterstützt wird. Erweiterungen, welche für diese Browser geschrieben wurden, werden in den meisten Fällen mit <a href="https://developer.mozilla.org/en-US/Add-ons/WebExtensions/Porting_from_Google_Chrome">nur wenigen Anpassungen</a> auch in Firefox oder <a href="https://developer.microsoft.com/en-us/microsoft-edge/platform/documentation/extensions/">Microsoft Edge</a> lauffähig sein. Die API ist außerdem vollständig kompatibel mit <a href="https://developer.mozilla.org/en-US/Firefox/Multiprocess_Firefox">Multiprozess-Firefox</a>.</p>
+
+<p>Wir beabsichtigen auch, die APIs zu erweitern, um die Unterstützung für Add-on-Entwickler zu verbessern. Sollten Sie Vorschläge dazu haben, würden wir uns über Ihre Mitteilung freuen. Sie erreichen uns über die englischsprachige <a href="https://mail.mozilla.org/listinfo/dev-addons">Mailingliste für Add-on-Entwickler</a> oder auf <a href="irc://irc.mozilla.org/webextensions">#webextensions</a> im <a href="https://wiki.mozilla.org/IRC">IRC</a>.</p>
+
+<div class="row topicpage-table">
+<div class="section">
+<h3 id="Erste_Schritte">Erste Schritte</h3>
+
+<ul>
+ <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/What_are_WebExtensions_">Was sind WebExtensions?</a></li>
+ <li><a href="/en-US/Add-ons/WebExtensions/Your_first_WebExtension">Deine erste WebExtension</a></li>
+ <li><a href="/en-US/Add-ons/WebExtensions/Your_second_WebExtension">Deine zweite WebExtension</a></li>
+ <li><a href="/en-US/Add-ons/WebExtensions/Anatomy_of_a_WebExtension">Anatomie einer WebExtension</a></li>
+ <li><a href="/en-US/Add-ons/WebExtensions/Examples">Beispiel-WebExtensions</a></li>
+</ul>
+
+<h3 id="Kurzanleitungen">Kurzanleitungen</h3>
+
+<ul>
+ <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/Intercept_HTTP_requests">Abfangen von HTTP-Anfragen</a></li>
+ <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/Modify_a_web_page">Eine Web-Seite verändern</a></li>
+ <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/Add_a_button_to_the_toolbar">Eine Schaltfläche zu einer Werkzeugleiste hinzufügen</a></li>
+ <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/Implement_a_settings_page">Eine Einstellungen-Seite erstellen</a></li>
+ <li>Browser-Tabs beeinflussen</li>
+ <li>Zugreifen auf und verändern von Lesezeichen</li>
+ <li>Zugreifen auf und verändern von Cookies</li>
+</ul>
+
+<h3 id="Konzepte">Konzepte</h3>
+
+<ul>
+ <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/Using_the_JavaScript_APIs">Verwendung der 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">Internationalisierung</a></li>
+ <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/Content_Security_Policy">Content Security Policy</a></li>
+ <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/Native_messaging">Native messaging</a></li>
+</ul>
+
+<h3 id="Portieren">Portieren</h3>
+
+<ul>
+ <li><a href="/en-US/Add-ons/WebExtensions/Porting_from_Google_Chrome">Portieren einer Google Chrome-Erweiterung</a></li>
+ <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/Porting_a_legacy_Firefox_add-on">Portieren eines veralteten Firefox Add-ons</a></li>
+ <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/Embedded_WebExtensions">Eingebettete WebExtensions</a></li>
+ <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/Comparison_with_the_Add-on_SDK">Vergleich mit dem Add-on SDK</a></li>
+ <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/Comparison_with_XUL_XPCOM_extensions">Vergleich mit XUL/XPCOM-Erweiterungen</a></li>
+ <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/Chrome_incompatibilities">Inkompatibilitäten mit Chrome</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">Einstieg in Web-Ext</a></li>
+ <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/web-ext_command_reference">Web-Ext Befehlsreferenz</a></li>
+ <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/WebExtensions_and_the_Add-on_ID">WebExtensions und die Add-On-ID</a></li>
+ <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/Publishing_your_WebExtension">Veröffentlichen deiner WebExtension</a></li>
+</ul>
+</div>
+
+<div class="section">
+<h3 id="Referenz">Referenz</h3>
+
+<ul>
+ <li><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/API">JavaScript-API-Überblick</a></li>
+ <li><a href="/en-US/Add-ons/WebExtensions/Browser_support_for_JavaScript_APIs">Tabellen zur Browser-Kompatibilität zu 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/de/mozilla/add-ons/webextensions/manifest.json/commands/index.html b/files/de/mozilla/add-ons/webextensions/manifest.json/commands/index.html
new file mode 100644
index 0000000000..6222b35145
--- /dev/null
+++ b/files/de/mozilla/add-ons/webextensions/manifest.json/commands/index.html
@@ -0,0 +1,184 @@
+---
+title: commands
+slug: Mozilla/Add-ons/WebExtensions/manifest.json/commands
+tags:
+ - Add-ons Erweiterungen WebExtensions
+translation_of: Mozilla/Add-ons/WebExtensions/manifest.json/commands
+---
+<div>{{AddonSidebar}}</div>
+
+<table class="fullwidth-table standard-table">
+ <tbody>
+ <tr>
+ <th scope="row" style="width: 30%;">Typ</th>
+ <td><code>Objekt</code></td>
+ </tr>
+ <tr>
+ <th scope="row">Obligatorisch</th>
+ <td>Nein</td>
+ </tr>
+ <tr>
+ <th scope="row">Beispiel</th>
+ <td>
+ <pre class="brush: json no-line-numbers">
+"commands": {
+ "toggle-feature": {
+ "suggested_key": {
+ "default": "Ctrl+Shift+Y",
+ "linux": "Ctrl+Shift+U"
+ },
+ "description": "Ereignis 'toggle-feature' senden"
+ }
+}</pre>
+ </td>
+ </tr>
+ </tbody>
+</table>
+
+<p>Verwenden Sie den<code>commands-Schlüssel, um für Ihre Erweiterung eine oder mehrere Tastenkürzel zu definieren</code>.</p>
+
+<p>Jedes Tastenkürzel wird mit einem Namen, eine Kombination von Tasten und einer Beschreibung definiert. Sobald Sie einige Befehle in der manifest.json definiert haben, können Sie die zugewiesenen Tastenkombinationen mittels der JavaScript-API  {{WebExtAPIRef("commands")}} verwenden.</p>
+
+<h2 id="Syntax">Syntax</h2>
+
+<p>Der <code>commands-Schlüssel</code>ist ein Objekt, und jedes Tastenkürzel ist eine Eigenschaft von ihm. Der Name der Eigenschaft ist der Name des Tastenkürzels.</p>
+
+<p>Jedes Tastenkürzel ist selbst ein Objekt, das bis zu zwei Eigenschaften hat:</p>
+
+<ul>
+ <li><code>suggested_key</code>: diese definiert die Tastenkombination</li>
+ <li><code>description</code>: eine Zeichenkette, die dieses Tastenkürzel beschreibt</li>
+</ul>
+
+<p>Die Eigenschaft <code>suggested_key</code> ist selbst ein Objekt, das folgende Eigenschaften haben kann, die alle Zeichenketten sind:</p>
+
+<ul>
+ <li><code>"default"</code>, <code>"mac"</code>, <code>"linux"</code>, <code>"windows"</code>, <code>"chromeos"</code>, <code>"android"</code>, <code>"ios"</code></li>
+</ul>
+
+<p>Der Wert jeder Eigenschaft ist das Tastenkürzel für den Befehl auf der angegebenen Plattform, der als Zeichenkette angegeben wird, die die durch ein „+“ voneinander getrennten Tasten enthält. Der Wert für <code>„default“</code> wird auf allen Plattformen verwendet, die nicht ausdrücklich angegeben sind.</p>
+
+<p>Beispiel:</p>
+
+<pre class="brush: json no-line-numbers">"commands": {
+ "toggle-feature": {
+ "suggested_key": {
+ "default": "Alt+Shift+U",
+ "linux": "Ctrl+Shift+U"
+ },
+ "description": "'toggle-feature'-Ereignis an die Erweiterung senden"
+ },
+ "do-another-thing": {
+ "suggested_key": {
+ "default": "Ctrl+Shift+Y"
+ }
+ }
+}</pre>
+
+<p>Dies definiert zwei Tastenkürzel:</p>
+
+<ul>
+ <li>eine mit dem Namen "toggle-feature", auf die mit Hilfe von <kbd>Ctrl</kbd>+<kbd>Shift</kbd>+<kbd>U</kbd> auf Linux und <kbd>Alt</kbd>+<kbd>Shift</kbd>+<kbd>U</kbd> auf allen anderen Plattformen zugegriffen wird</li>
+ <li>eine mit dem Namen "do-another-thing", auf die mit Hilfe von <kbd>Ctrl</kbd>+<kbd>Shift</kbd>+<kbd>Y</kbd> auf allen Plattformen zugegriffen wird.</li>
+</ul>
+
+<p>Sie könnten dann den ersten dieser Befehle mit einem Code wie diesen verwenden:</p>
+
+<pre class="brush: js no-line-numbers">browser.commands.onCommand.addListener(function(command) {
+ if (command == "toggle-feature") {
+ console.log("toggling the feature!");
+ }
+});</pre>
+
+<h3 id="Besondere_Tastenkürzel">Besondere Tastenkürzel</h3>
+
+<p>Es gibt drei besondere Tastenkürzel:</p>
+
+<ul>
+ <li>_execute_browser_action: funktioniert wie ein Klick auf die <a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/Browser_action">Browseraktion</a> der Erweiterung.</li>
+ <li>_execute_page_action: funktioniert wie ein Klick auf die <a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/Page_actions">Seitenaktion</a> der Erweiterung.</li>
+ <li>_execute_sidebar_action: öffnet die <a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/Sidebars">Seitenleiste</a> der Erweiterung. Wird nur in Firefox unterstützt und erst ab Firefox Version 54.</li>
+</ul>
+
+<p>Dies definiert zum Beispiel eine Tastenkombination, um auf die Browseraktion der Erweiterung zu klicken:</p>
+
+<pre class="brush: js no-line-numbers">"commands": {
+ "_execute_browser_action": {
+ "suggested_key": {
+ "default": "Ctrl+Shift+Y"
+ }
+ }
+}</pre>
+
+<h2 id="Tastenkürzel-Werte">Tastenkürzel-Werte</h2>
+
+<p>Es gibt zwei gültige Formate für Tastenkürzel: als Tastenkombination oder als Medien-Taste.</p>
+
+<h3 id="Tastenkombinationen">Tastenkombinationen</h3>
+
+<div class="pull-aside">
+<div class="moreinfo">Auf Macs wird "Ctrl" als  "Command"-Taste interpretiert, geben Sie also "MacCrtl" an, wenn Sie eigentlich "Ctrl" brauchen.</div>
+</div>
+
+<p>Tastenkombinationen müssen aus zwei oder mehr Tasten bestehen:</p>
+
+<ul>
+ <li><strong>Modifikator </strong>(obligatorisch, mit Ausnahme der Funktionstasten). Dieser kann sein: "Ctrl", "Alt", "Command", "MacCtrl".</li>
+ <li><strong>zweiter Modifikator</strong> (optional). Wenn angegeben, muss dieser entweder "Shift" oder (für Firefox ≥ 63)  "Ctrl", "Alt", "Command" und "MacCtrl" sein, wenn sie nicht als Hauptmodifikator verwendet werden.</li>
+ <li><strong>Taste </strong>(obligatorisch). Die kann sein:
+ <ul>
+ <li>die Buchstaben A-Z</li>
+ <li>die Zahlen 0-9</li>
+ <li>die Funktionstasten F1-F12</li>
+ <li>Comma (Komma), Period (Punkt), Home (Pos1), End (Ende), PageUp (Bild hoch) , PageDown (Bild runter), Space (Leertaste), Insert (Einfg), Delete (Entf), Up (Pfeil hoch), Down (Pfeil runter), Left (Pfeil links), Right (Pfeil rechts)</li>
+ </ul>
+ </li>
+</ul>
+
+<p>Die Taste wird dann als Zeichenkette angegeben, die den Satz an Tastenwerten enthält, in der oben angegebenen Reihenfolge, getrennt durch "+": zum Beispiel "Ctrl+Shift+Z".</p>
+
+<p>Wenn eine Tastenkombination bereits vom Browser (zum Beispiel "Ctrl+P") oder durch ein bestehendes Add-on verwendet wird, können Sie sie nicht überschreiben. Sie dürfen sie definieren, aber Ihr Eventhandler wird nicht aufgerufen, wenn der Benutzer sie eingibt.</p>
+
+<h3 id="Medientasten">Medientasten</h3>
+
+<p>Alternativ kann das Tastenkürzel als eine der folgenden Medientasten angegeben werden:</p>
+
+<ul>
+ <li>"MediaNextTrack", "MediaPlayPause", "MediaPrevTrack", "MediaStop"</li>
+</ul>
+
+<h2 id="Beispiel">Beispiel</h2>
+
+<p>Definieren Sie ein einzelnes Tastenkürzel, das nur standardmäßig verwendet wird:</p>
+
+<pre class="brush: json no-line-numbers">"commands": {
+ "toggle-feature": {
+ "suggested_key": {
+ "default": "Ctrl+Shift+Y"
+ },
+ "description": "Ereignis'toggle-feature' senden"
+ }
+}</pre>
+
+<p>Definieren Sie zwei Tastenkürzel, eins mit einer plattformspezifischen Tastenkombination:</p>
+
+<pre class="brush: json no-line-numbers">"commands": {
+ "toggle-feature": {
+ "suggested_key": {
+ "default": "Alt+Shift+U",
+ "linux": "Ctrl+Shift+U"
+ },
+ "description": "Ereignis 'toggle-feature' senden"
+ },
+ "do-another-thing": {
+ "suggested_key": {
+ "default": "Ctrl+Shift+Y"
+ }
+ }
+}</pre>
+
+<h2 id="Browserkompatibilität">Browserkompatibilität</h2>
+
+<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p>
+
+<p>{{Compat("webextensions.manifest.commands")}}</p>
diff --git a/files/de/mozilla/add-ons/webextensions/manifest.json/devtools_page/index.html b/files/de/mozilla/add-ons/webextensions/manifest.json/devtools_page/index.html
new file mode 100644
index 0000000000..1b4afb1cfa
--- /dev/null
+++ b/files/de/mozilla/add-ons/webextensions/manifest.json/devtools_page/index.html
@@ -0,0 +1,42 @@
+---
+title: devtools_page
+slug: Mozilla/Add-ons/WebExtensions/manifest.json/devtools_page
+translation_of: Mozilla/Add-ons/WebExtensions/manifest.json/devtools_page
+---
+<div>{{AddonSidebar}}</div>
+
+<table class="fullwidth-table standard-table">
+ <tbody>
+ <tr>
+ <th scope="row" style="width: 30%;">Type</th>
+ <td><code>String</code></td>
+ </tr>
+ <tr>
+ <th scope="row">Mandatory</th>
+ <td>No</td>
+ </tr>
+ <tr>
+ <th scope="row">Example</th>
+ <td>
+ <pre class="brush: json no-line-numbers">
+"devtools_page": "devtools/my-page.html"</pre>
+ </td>
+ </tr>
+ </tbody>
+</table>
+
+<p>Use this key to enable your extension to extend the browser's built-in devtools.</p>
+
+<p>This key is defined as a URL to an HTML file. The HTML file must be bundled with the extension, and the URL is relative to the extension's root.</p>
+
+<p>See <a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/Extending_the_developer_tools">Extending the developer tools</a> to learn more.</p>
+
+<h2 id="Example">Example</h2>
+
+<pre class="brush: json no-line-numbers">"devtools_page": "devtools/my-page.html"</pre>
+
+<h2 id="Browser_compatibility">Browser compatibility</h2>
+
+<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p>
+
+<p>{{Compat("webextensions.manifest.devtools_page")}}</p>
diff --git a/files/de/mozilla/add-ons/webextensions/manifest.json/index.html b/files/de/mozilla/add-ons/webextensions/manifest.json/index.html
new file mode 100644
index 0000000000..10a4fd8597
--- /dev/null
+++ b/files/de/mozilla/add-ons/webextensions/manifest.json/index.html
@@ -0,0 +1,105 @@
+---
+title: manifest.json
+slug: Mozilla/Add-ons/WebExtensions/manifest.json
+tags:
+ - Add-ons
+ - Extensions
+ - NeedsTranslation
+ - TopicStub
+ - WebExtensions
+translation_of: Mozilla/Add-ons/WebExtensions/manifest.json
+---
+<div>{{AddonSidebar}}</div>
+
+<p>Die Datei manifest.json ist eine <a href="/en-US/docs/Glossary/JSON">JSON</a>-formatierte Datei, und die einzige Datei, die eine Erweiterung, die das WebExtensions API verwendet, unterstützt.</p>
+
+<p>Durch das Verwenden von manifest.json, legst du Metadaten, wie zum Beispiel Name und Version, für deine Erweiterung fest, und kannst auch einige Aspekte der Funktionalität deiner Erweiterung,wie zum Beispiel Hintergrundskripte, Inhaltsskripte und Browserationen.</p>
+
+<p>Manifest.json keys sind unten gelistet:</p>
+
+<div class="twocolumns">{{ ListSubpages ("/en-US/Add-ons/WebExtensions/manifest.json") }}</div>
+
+<div class="twocolumns"> </div>
+
+<p><code>"manifest_version"</code>, <code>"version"</code>, und <code>"name"</code> sind die einzigen verpflichtenden Keys. <code>"default_locale"</code> muss vorhanden sein, wenn der "_locales"-Ordner vorhanden ist und darf sonst nicht vorhanden sein. <code>"applications"</code> wird von Google Chrome nicht unterstützt, und ist verpflichtend in Firefox vor Firefox 48 und Firefox für Android.</p>
+
+<h2 id="Browserkompatiblität">Browserkompatiblität</h2>
+
+<p>{{Compat("webextensions.manifest")}}</p>
+
+<h2 id="Beispiel">Beispiel</h2>
+
+<p>Hier ein kurzes Syntax-Beispiel für manifest.json:</p>
+
+<pre class="brush: json">{
+ "applications": {
+ "gecko": {
+ "id": "addon@example.com",
+ "strict_min_version": "42.0"
+ }
+ },
+
+ "background": {
+ "scripts": ["jquery.js", "my-background.js"],
+ "page": "my-background.html"
+ },
+
+ "browser_action": {
+ "default_icon": {
+ "19": "button/geo-19.png",
+ "38": "button/geo-38.png"
+ },
+ "default_title": "Whereami?",
+ "default_popup": "popup/geo.html"
+ },
+
+ "commands": {
+ "toggle-feature": {
+  "suggested_key": {
+    "default": "Ctrl+Shift+Y",
+    "linux": "Ctrl+Shift+U"
+  },
+     "description": "Send a 'toggle-feature' event"
+ }
+ },
+
+ "content_security_policy": "script-src 'self' https://example.com; object-src 'self'",
+
+ "content_scripts": [
+ {
+ "exclude_matches": ["*://developer.mozilla.org/*"],
+ "matches": ["*://*.mozilla.org/*"],
+ "js": ["borderify.js"]
+ }
+ ],
+
+ "default_locale": "en",
+
+ "description": "...",
+
+ "icons": {
+ "48": "icon.png",
+ "96": "icon@2x.png"
+ },
+
+ "manifest_version": 2,
+
+ "name": "...",
+
+ "page_action": {
+ "default_icon": {
+ "19": "button/geo-19.png",
+ "38": "button/geo-38.png"
+ },
+ "default_title": "Whereami?",
+ "default_popup": "popup/geo.html"
+ },
+
+ "permissions": ["webNavigation"],
+
+ "version": "0.1",
+
+ "web_accessible_resources": ["images/my-image.png"]
+}</pre>
+
+<p> </p>
diff --git a/files/de/mozilla/add-ons/webextensions/manifest.json/theme/index.html b/files/de/mozilla/add-ons/webextensions/manifest.json/theme/index.html
new file mode 100644
index 0000000000..30825db592
--- /dev/null
+++ b/files/de/mozilla/add-ons/webextensions/manifest.json/theme/index.html
@@ -0,0 +1,1361 @@
+---
+title: theme
+slug: Mozilla/Add-ons/WebExtensions/manifest.json/theme
+translation_of: Mozilla/Add-ons/WebExtensions/manifest.json/theme
+---
+<div>{{AddonSidebar}}</div>
+
+<table class="fullwidth-table standard-table">
+ <tbody>
+ <tr>
+ <th scope="row" style="width: 30%;">Type</th>
+ <td><code>Object</code></td>
+ </tr>
+ <tr>
+ <th scope="row">Mandatory</th>
+ <td>No</td>
+ </tr>
+ <tr>
+ <th scope="row">Example</th>
+ <td>
+ <pre class="brush: json notranslate">
+"theme": {
+ "images": {
+ "theme_frame": "images/sun.jpg"
+ },
+ "colors": {
+ "frame": "#CF723F",
+ "tab_background_text": "#000"
+ }
+}</pre>
+ </td>
+ </tr>
+ </tbody>
+</table>
+
+<p>Use the theme key to define a static theme to apply to Firefox.</p>
+
+<div class="note">
+<p><strong>Note</strong>: If you want to include a theme with an extension, please see the {{WebExtAPIRef("theme")}} API.</p>
+</div>
+
+<div class="note">
+<p><strong>Note</strong>: Since May 2019, themes need to be signed to be installed ({{bug(1545109)}}).  See <a href="/en-US/docs/Mozilla/Add-ons/Distribution">Signing and distributing your add-on</a> for more details.</p>
+</div>
+
+<div class="note">
+<p><strong>Theme support in Firefox for Android</strong>: A new version of Firefox for Android, based on GeckoView, is under development. A <a href="https://play.google.com/store/apps/details?id=org.mozilla.fenix" rel="noreferrer nofollow">pre-release version</a> is available. The pre-release version does not support themes.</p>
+</div>
+
+<h2 id="Image_formats">Image formats</h2>
+
+<p>The following image formats are supported in all theme image properties:</p>
+
+<ul>
+ <li>JPEG</li>
+ <li>PNG</li>
+ <li>APNG</li>
+ <li>SVG (animated SVG is supported from Firefox 59)</li>
+ <li>GIF (animated GIF isn’t supported)</li>
+</ul>
+
+<h2 id="Syntax">Syntax</h2>
+
+<p>The theme key is an object that takes the following properties:</p>
+
+<table class="fullwidth-table standard-table">
+ <thead>
+ <tr>
+ <th scope="col">Name</th>
+ <th scope="col">Type</th>
+ <th scope="col">Description</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td><code>images</code></td>
+ <td><code>Object</code></td>
+ <td>
+ <p>Optional as of Firefox 60. Mandatory before Firefox 60.</p>
+
+ <p>A JSON object whose properties represent the images to display in various parts of the browser. See <code><a href="/en-US/Add-ons/WebExtensions/manifest.json/theme#images">images</a></code> for details on the properties that this object can contain.</p>
+ </td>
+ </tr>
+ <tr>
+ <td><code>colors</code></td>
+ <td><code>Object</code></td>
+ <td>
+ <p>Mandatory.</p>
+
+ <p>A JSON object whose properties represent the colors of various parts of the browser. See <code><a href="/en-US/Add-ons/WebExtensions/manifest.json/theme#colors">colors</a></code> for details on the properties that this object can contain.</p>
+ </td>
+ </tr>
+ <tr>
+ <td><code>properties</code></td>
+ <td><code>Object</code></td>
+ <td>
+ <p>Optional</p>
+
+ <p>This object has two properties that affect how the <code>"additional_backgrounds"</code> images are displayed. See <code><a href="/en-US/Add-ons/WebExtensions/manifest.json/theme#properties">properties</a></code> for details on the properties that this object can contain.</p>
+
+ <ul>
+ <li><code>"additional_backgrounds_alignment":</code> an array of enumeration values defining the alignment of the corresponding <code>"additional_backgrounds":</code> array item.<br>
+ The alignment options include: <code>"bottom"</code>, <code>"center"</code>, <code>"left"</code>, <code>"right"</code>, <code>"top"</code>, <code>"center bottom"</code>, <code>"center center"</code>, <code>"center top"</code>, <code>"left bottom"</code>, <code>"left center"</code>, <code>"left top"</code>, <code>"right bottom"</code>, <code>"right center"</code>, and <code>"right top"</code>. If not specified, defaults to <code>"right top"</code>.<br>
+ Optional</li>
+ <li><code>"additional_backgrounds_tiling":</code> an array of enumeration values defining how the corresponding <code>"additional_backgrounds":</code> array item repeats, with support for <code>"no-repeat"</code>, <code>"repeat"</code>, <code>"repeat-x"</code>, and <code>"repeat-y"</code>. If not specified, defaults to <code>"no-repeat"</code>.<br>
+ Optional</li>
+ </ul>
+ </td>
+ </tr>
+ </tbody>
+</table>
+
+<h3 id="images">images</h3>
+
+<p dir="ltr">All URLs are relative to the manifest.json file and cannot reference an external URL.</p>
+
+<p dir="ltr">Images should be 200 pixels high to ensure they always fill the header space vertically.</p>
+
+<table class="fullwidth-table standard-table">
+ <thead>
+ <tr>
+ <th scope="col">Name</th>
+ <th scope="col">Type</th>
+ <th scope="col">Description</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td><code>headerURL </code> <code>{{Deprecated_Inline}}</code></td>
+ <td><code>String</code></td>
+ <td>
+ <div class="blockIndicator warning">
+ <p><code>headerURL</code> has been removed in Firefox 70. You will begin to get warnings in Firefox 65 and later if you load a theme that uses this property. Use <code>theme_frame</code> instead.</p>
+ </div>
+
+ <p>The URL of a foreground image to be added to the header area and anchored to the upper right corner of the header area.</p>
+
+ <p>Optional in desktop Firefox from Firefox 60 onwards. One of <code>theme_frame</code> or <code>headerURL</code> had to be specified before Firefox 60. Note also that in Firefox 60 onwards, any {{cssxref("text-shadow")}} applied to the header text is removed if no <code>headerURL</code> is specified (see {{bug(1404688)}}).</p>
+
+ <p>In Firefox for Android, <code>headerURL</code> or <code>theme_frame</code>  must be specified.</p>
+ </td>
+ </tr>
+ <tr>
+ <td><code>theme_frame</code></td>
+ <td><code>String</code></td>
+ <td>
+ <p>The URL of a foreground image to be added to the header area and anchored to the upper right corner of the header area.</p>
+
+ <div class="blockIndicator note">
+ <p>Chrome anchors the image to the top left of the header and if the image doesn’t fill the header area tile the image.</p>
+ </div>
+
+ <p>Optional in desktop Firefox 60 onwards. One of <code>theme_frame</code> or <code>headerURL</code> had to be specified before Firefox 60.</p>
+
+ <p>In Firefox for Android, <code>headerURL</code> or <code>theme_frame</code>  must be specified.</p>
+ </td>
+ </tr>
+ <tr>
+ <td><code>additional_backgrounds</code></td>
+ <td><code>Array </code>of <code>String</code></td>
+ <td>
+ <div class="warning">
+ <p>The <code>additional_backgrounds</code> property is experimental. It is currently accepted in release versions of Firefox, but its behavior is subject to change. It is not supported in Firefox for Android.</p>
+ </div>
+
+ <p>An array of URLs for additional background images to be added to the header area and displayed behind the <code>"theme_frame":</code> image. These images layer the first image in the array on top, the last image in the array at the bottom.</p>
+
+ <p>Optional.</p>
+
+ <p>By default all images are anchored to the upper right corner of the header area, but their alignment and repeat behavior can be controlled by properties of <code>"properties":</code>.</p>
+ </td>
+ </tr>
+ </tbody>
+</table>
+
+<h3 id="colors">colors</h3>
+
+<p>These properties define the colors used for different parts of the browser. They are all optional (but note that <code>"accentcolor"</code> and <code>"textcolor"</code> were mandatory in Firefox before version 63).  How these properties affect the Firefox UI  is shown here:</p>
+
+<table class="fullwidth-table standard-table">
+ <tbody>
+ <tr>
+ <td style="background-color: white;">
+ <p><img alt="Overview of the color properties and how they apply to Firefox UI components" src="https://mdn.mozillademos.org/files/16855/Themes_components_annotations.png" style="height: 1065px; width: 1521px;"></p>
+ </td>
+ </tr>
+ </tbody>
+</table>
+
+<div class="blockIndicator note">
+<p>Where a component is affected by multiple color properties, the properties are listed in order of precedence.</p>
+</div>
+
+<p>All these properties can be specified as either a string containing any valid <a href="/en-US/docs/Web/CSS/color_value">CSS color string</a> (including hexadecimal), or an RGB array, such as <code>"tab_background_text": [ 107 , 99 , 23 ]</code>.</p>
+
+<div class="blockIndicator note">
+<p><a href="https://developer.mozilla.org/en-US/Add-ons/WebExtensions/manifest.json/theme#Chrome_compatibility">In Chrome, colors may only be specified as RGB arrays</a>.</p>
+
+<p>In Firefox for Android colors can be specified using:</p>
+
+<ul>
+ <li>full hexadecimal notation, that is #RRGGBB only. <em>alpha</em> and shortened syntax, as in #RGB[A], are not supported.</li>
+ <li><a href="/en-US/docs/Web/CSS/color_value#Syntax_2">Functional notation</a> (RGB arrays) for themes targeting Firefox 68.2 or later.</li>
+</ul>
+
+<p>Colors for Firefox for Android themes cannot be specified using color names.</p>
+</div>
+
+<table class="fullwidth-table standard-table">
+ <thead>
+ <tr>
+ <th scope="col">Name</th>
+ <th scope="col">Description</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>
+ <p><code>accentcolor</code><code> {{Deprecated_Inline}}</code></p>
+ </td>
+ <td>
+ <div class="blockIndicator warning">
+ <p><code>accentcolor</code> has been removed in Firefox 70. You will begin to get warnings in Firefox 65 and later if you load a theme that uses this property. Use the <code>frame</code> property instead.</p>
+ </div>
+
+ <p>The color of the header area background, displayed in the part of the header not covered or visible through the images specified in <code>"headerURL"</code> and <code>"additional_backgrounds"</code>.</p>
+
+ <details open><summary>See example</summary>
+
+ <pre class="brush: json notranslate">
+"theme": {
+  "colors": {
+     "accentcolor": "red",
+     "tab_background_text": "white"
+  }
+}</pre>
+ </details>
+
+ <p><img alt="" src="https://mdn.mozillademos.org/files/15871/theme-accentcolor.png" style="height: 302px; width: 738px;"></p>
+ </td>
+ </tr>
+ <tr>
+ <td><code>bookmark_text</code></td>
+ <td>
+ <p>The color of text and icons in the bookmark and find bars. Also, if <code>tab_text</code> isn't defined it sets the color of the active tab text and if <code>icons</code> isn't defined the color of the toolbar icons. Provided as Chrome compatible alias for <code>toolbar_text</code>.</p>
+
+ <div class="blockIndicator note">
+ <p>Ensure any color used contrasts well with those used in <code>frame</code> and <code>frame_inactive</code> or <code>toolbar</code> if you're using that property.</p>
+
+ <p>Where <code>icons</code> isn't defined, also ensure good contrast with<code> button_background_active</code> and <code>button_background_hover</code>.</p>
+ </div>
+
+ <details open><summary>See example</summary>
+
+ <pre class="brush: json notranslate">
+"theme": {
+  "colors": {
+    "frame": "black",
+ "tab_background_text": "white",
+    "tab_text": "white",
+    "toolbar": "black",
+    "bookmark_text": "red"
+  }
+}</pre>
+ </details>
+
+ <p><img alt="Example use of the bookmark_text color property" src="https://mdn.mozillademos.org/files/16668/theme-bookmark_text.png"></p>
+ </td>
+ </tr>
+ <tr>
+ <td><code>button_background_active</code></td>
+ <td>
+ <p>The color of the background of the pressed toolbar buttons.</p>
+
+ <details open><summary>See example</summary>
+
+ <pre class="brush: json notranslate">
+"theme": {
+  "colors": {
+     "frame": "black",
+     "tab_background_text": "white",
+     "button_background_active": "red"
+  }
+}</pre>
+ </details>
+
+ <p><img alt="" src="https://mdn.mozillademos.org/files/15872/theme-button_background_active.png" style="height: 302px; width: 738px;"></p>
+ </td>
+ </tr>
+ <tr>
+ <td><code>button_background_hover</code></td>
+ <td>
+ <p>The color of the background of the toolbar buttons on hover.</p>
+
+ <details open><summary>See example</summary>
+
+ <pre class="brush: json notranslate">
+"theme": {
+  "colors": {
+     "frame": "black",
+     "tab_background_text": "white",
+     "button_background_hover": "red"
+  }
+}</pre>
+ </details>
+
+ <p><img alt="" src="https://mdn.mozillademos.org/files/15873/theme-button_background_hover.png" style="height: 302px; width: 738px;"></p>
+ </td>
+ </tr>
+ <tr>
+ <td><code>icons</code></td>
+ <td>
+ <p>The color of toolbar icons, excluding those in the find toolbar.</p>
+
+ <div class="blockIndicator note">
+ <p>Ensure the color used contrasts well with those used in <code>frame</code>,  <code>frame_inactive</code>, <code>button_background_active</code>, and <code>button_background_hover</code>.</p>
+ </div>
+
+ <details open><summary>See example</summary>
+
+ <pre class="brush: json notranslate">
+"theme": {
+  "colors": {
+     "frame": "black",
+     "tab_background_text": "white",
+     "icons": "red"
+  }
+}</pre>
+ </details>
+
+ <p><img alt="" src="https://mdn.mozillademos.org/files/15874/theme-icons.png" style="height: 302px; width: 738px;"></p>
+ </td>
+ </tr>
+ <tr>
+ <td><code>icons_attention</code></td>
+ <td>
+ <p>The color of toolbar icons in attention state such as the starred bookmark icon or finished download icon.</p>
+
+ <div class="blockIndicator note">
+ <p>Ensure the color used contrasts well with those used in <code>frame</code>,  <code>frame_inactive</code>, <code>button_background_active</code>, and <code>button_background_hover</code>.</p>
+ </div>
+
+ <details open><summary>See example</summary>
+
+ <pre class="brush: json notranslate">
+"theme": {
+  "colors": {
+     "frame": "black",
+     "tab_background_text": "white",
+     "icons_attention": "red"
+  }
+}</pre>
+ </details>
+
+ <p><img alt="" src="https://mdn.mozillademos.org/files/15875/theme-icons_attention.png" style="height: 324px; width: 738px;"></p>
+ </td>
+ </tr>
+ <tr>
+ <td><code>frame</code></td>
+ <td>
+ <p>The color of the header area background, displayed in the part of the header not covered or visible through the images specified in <code>"theme_frame"</code> and <code>"additional_backgrounds"</code>.</p>
+
+ <details open><summary>See example</summary>
+
+ <pre class="brush: json notranslate">
+"theme": {
+  "colors": {
+     "frame": "red",
+     "tab_background_text": "white"
+  }
+}</pre>
+ </details>
+
+ <p><img alt="" src="https://mdn.mozillademos.org/files/15871/theme-accentcolor.png" style="height: 302px; width: 738px;"></p>
+ </td>
+ </tr>
+ <tr>
+ <td><code>frame_inactive</code></td>
+ <td>
+ <p>The color of the header area background when the browser window is inactive, displayed in the part of the header not covered or visible through the images specified in <code>"theme_frame"</code> and <code>"additional_backgrounds"</code>.</p>
+
+ <details open><summary>See example</summary>
+
+ <pre class="brush: json notranslate">
+"theme": {
+  "colors": {
+     "frame": "red",
+ "frame_inactive": "gray",
+     "tab_text": "white"
+  }
+}</pre>
+ </details>
+
+ <p><img alt="Example use of the frame_inactive color property" src="https://mdn.mozillademos.org/files/16669/theme-frame_inactive.png" style="height: 193px; width: 752px;"></p>
+ </td>
+ </tr>
+ <tr>
+ <td><code>ntp_background</code></td>
+ <td>
+ <p>The new tab page background color.</p>
+
+ <details open><summary>See example</summary>
+
+ <pre class="brush: json notranslate">
+"theme": {
+  "colors": {
+     "ntp_background": "red",
+     "ntp_text": "white"
+  }
+}</pre>
+ </details>
+
+ <p><img alt="" src="https://mdn.mozillademos.org/files/16175/ntp_colors.png" style="display: block; height: 190px; margin: 0 auto;"></p>
+ </td>
+ </tr>
+ <tr>
+ <td><code>ntp_text</code></td>
+ <td>
+ <p>The new tab page text color.</p>
+
+ <div class="blockIndicator note">
+ <p>Ensure the color used contrasts well with that used in <code>ntp_background</code>.</p>
+ </div>
+
+ <details open><summary>See example</summary>
+
+ <pre class="brush: json notranslate">
+"theme": {
+  "colors": {
+     "ntp_background": "red",
+ "ntp_text": "white"
+  }
+}</pre>
+ </details>
+
+ <p><img alt="" src="https://mdn.mozillademos.org/files/16175/ntp_colors.png" style="display: block; height: 190px; margin: 0 auto;"></p>
+ </td>
+ </tr>
+ <tr>
+ <td><code>popup</code></td>
+ <td>
+ <p>The background color of popups (such as the url bar dropdown and the arrow panels).</p>
+
+ <details open><summary>See example</summary>
+
+ <pre class="brush: json notranslate">
+"theme": {
+  "colors": {
+     "frame": "black",
+     "tab_background_text": "white",
+     "popup": "red"
+  }
+}</pre>
+ </details>
+
+ <p><img alt="" src="https://mdn.mozillademos.org/files/15876/theme-popup.png" style="height: 324px; width: 738px;"></p>
+ </td>
+ </tr>
+ <tr>
+ <td><code>popup_border</code></td>
+ <td>
+ <p>The border color of popups.</p>
+
+ <details open><summary>See example</summary>
+
+ <pre class="brush: json notranslate">
+"theme": {
+  "colors": {
+     "frame": "black",
+     "tab_background_text": "white",
+     "popup": "black",
+     "popup_text": "white",
+     "popup_border": "red"
+  }
+}</pre>
+ </details>
+
+ <p><img alt="" src="https://mdn.mozillademos.org/files/15877/theme-popup_border.png" style="height: 324px; width: 738px;"></p>
+ </td>
+ </tr>
+ <tr>
+ <td><code>popup_highlight</code></td>
+ <td>
+ <p>The background color of items highlighted using the keyboard inside popups (such as the selected url bar dropdown item).</p>
+
+ <div class="blockIndicator note">
+ <p>It's recommended to define <code>popup_highlight_text</code> to override the browser default text color on various platforms.</p>
+ </div>
+
+ <details open><summary>See example</summary>
+
+ <pre class="brush: json notranslate">
+"theme": {
+  "colors": {
+     "frame": "black",
+     "tab_background_text": "white",
+     "popup_highlight": "red",
+ "popup_highlight_text": "white"
+  }
+}</pre>
+ </details>
+
+ <p><img alt="" src="https://mdn.mozillademos.org/files/15878/theme-popup_highlight.png" style="height: 490px; width: 738px;"></p>
+ </td>
+ </tr>
+ <tr>
+ <td><code>popup_highlight_text</code></td>
+ <td>
+ <p>The text color of items highlighted inside popups.</p>
+
+ <div class="blockIndicator note">
+ <p>Ensure the color used contrasts well with that used in <code>popup_highlight</code>.</p>
+ </div>
+
+ <details open><summary>See example</summary>
+
+ <pre class="brush: json notranslate">
+"theme": {
+  "colors": {
+     "frame": "black",
+     "tab_background_text": "white",
+     "popup_highlight": "black",
+     "popup_highlight_text": "red"
+  }
+}</pre>
+ </details>
+
+ <p><img alt="" src="https://mdn.mozillademos.org/files/15879/theme-popup_highlight_text.png" style="height: 490px; width: 738px;"></p>
+ </td>
+ </tr>
+ <tr>
+ <td><code>popup_text</code></td>
+ <td>
+ <p>The text color of popups.</p>
+
+ <div class="blockIndicator note">
+ <p>Ensure the color used contrasts well with that used in <code>popup</code>.</p>
+ </div>
+
+ <details open><summary>See example</summary>
+
+ <pre class="brush: json notranslate">
+"theme": {
+  "colors": {
+     "frame": "black",
+     "tab_background_text": "white",
+     "popup": "black",
+     "popup_text": "red"
+  }
+}</pre>
+ </details>
+
+ <p><img alt="" src="https://mdn.mozillademos.org/files/15880/popup_text.png" style="height: 490px; width: 738px;"></p>
+ </td>
+ </tr>
+ <tr>
+ <td><code>sidebar</code></td>
+ <td>
+ <p>The background color of the sidebar.</p>
+
+ <details open><summary>See example</summary>
+
+ <pre class="brush: json notranslate">
+"theme": {
+  "colors": {
+     "sidebar": "red",
+     "sidebar_highlight": "white",
+     "sidebar_highlight_text": "green",
+ "sidebar_text": "white"
+  }
+}</pre>
+ </details>
+
+ <p><img alt="" src="https://mdn.mozillademos.org/files/16176/sidebar_colors.png" style="display: block; margin: 0 auto; width: 250px;"></p>
+ </td>
+ </tr>
+ <tr>
+ <td><code>sidebar_border</code></td>
+ <td>
+ <p>The border and splitter color of the browser sidebar</p>
+
+ <details open><summary>See example</summary>
+
+ <pre class="brush: json notranslate">
+"theme": {
+  "colors": {
+     "sidebar_border": "red"
+  }
+}</pre>
+ </details>
+
+ <p><img alt="" src="https://mdn.mozillademos.org/files/16177/Screen_Shot_2018-09-16_at_6.13.31_PM.png" style="display: block; height: 286px; margin: 0px auto; width: 300px;"></p>
+ </td>
+ </tr>
+ <tr>
+ <td><code>sidebar_highlight</code></td>
+ <td>
+ <p>The background color of highlighted rows in built-in sidebars</p>
+
+ <details open><summary>See example</summary>
+
+ <pre class="brush: json notranslate">
+"theme": {
+  "colors": {
+     "sidebar_highlight": "red",
+ "sidebar_highlight_text": "white"
+  }
+}</pre>
+ </details>
+
+ <p><img alt="" src="https://mdn.mozillademos.org/files/16223/Screen_Shot_2018-10-04_at_11.15.46_AM.png" style="display: block; height: 357px; margin: 0px auto; width: 269px;"></p>
+ </td>
+ </tr>
+ <tr>
+ <td><code>sidebar_highlight_text</code></td>
+ <td>
+ <p>The text color of highlighted rows in sidebars.</p>
+
+ <div class="blockIndicator note">
+ <p>Ensure the color used contrasts well with that used in <code>sidebar_highlight</code>.</p>
+ </div>
+
+ <details open><summary>See example</summary>
+
+ <pre class="brush: json notranslate">
+"theme": {
+  "colors": {
+ "sidebar_highlight": "pink",
+ "sidebar_highlight_text": "red",
+  }
+}</pre>
+ </details>
+
+ <p><img alt="" src="https://mdn.mozillademos.org/files/16224/Screen_Shot_2018-10-04_at_11.22.41_AM.png" style="display: block; height: 363px; margin: auto; width: 262px;"></p>
+ </td>
+ </tr>
+ <tr>
+ <td><code>sidebar_text</code></td>
+ <td>
+ <p>The text color of sidebars.</p>
+
+ <div class="blockIndicator note">
+ <p>Ensure the color used contrasts well with that used in <code>sidebar</code>.</p>
+ </div>
+
+ <details open><summary>See example</summary>
+
+ <pre class="brush: json notranslate">
+"theme": {
+  "colors": {
+     "sidebar": "red",
+     "sidebar_highlight": "white",
+     "sidebar_highlight_text": "green",
+ "sidebar_text": "white"
+  }
+}</pre>
+ </details>
+
+ <p><img alt="" src="https://mdn.mozillademos.org/files/16176/sidebar_colors.png" style="display: block; margin: 0 auto; width: 250px;"></p>
+ </td>
+ </tr>
+ <tr>
+ <td><code>tab_background_separator</code></td>
+ <td>
+ <p>The color of the vertical separator of the background tabs.</p>
+
+ <details open><summary>See example</summary>
+
+ <pre class="brush: json notranslate">
+"theme": {
+  "colors": {
+     "frame": "black",
+     "tab_background_text": "white",
+     "tab_background_separator": "red"
+  }
+}</pre>
+ </details>
+
+ <p><img alt="A closeup of browser tabs to highlight the separator." src="https://mdn.mozillademos.org/files/16048/theme-tab-background-separator.png" style="height: 356px; width: 738px;"></p>
+ </td>
+ </tr>
+ <tr>
+ <td><code>tab_background_text</code></td>
+ <td>
+ <p>The color of the text displayed in the inactive page tabs. If <code>tab_text</code> or <code>bookmark_text</code> isn't specified, applies to the active tab text.</p>
+
+ <div class="blockIndicator note">
+ <p>Ensure the color used contrasts well with those used in <code>tab_selected</code> or <code>frame</code> and  <code>frame_inactive</code>.</p>
+ </div>
+
+ <details open><summary>See example</summary>
+
+ <pre class="brush: json notranslate">
+"theme": {
+  "colors": {
+    "frame": "black",
+    "toolbar": "white",
+    "tab_background_text": "red"
+  }
+}</pre>
+ </details>
+
+ <p><img alt="" src="https://mdn.mozillademos.org/files/15885/theme-textcolor.png" style="height: 302px; width: 738px;"></p>
+ </td>
+ </tr>
+ <tr>
+ <td><code>tab_line</code></td>
+ <td>
+ <p>The color of the selected tab line.</p>
+
+ <details open><summary>See example</summary>
+
+ <pre class="brush: json notranslate">
+"theme": {
+  "colors": {
+     "frame": "black",
+     "tab_background_text": "white",
+     "tab_line": "red"
+  }
+}</pre>
+ </details>
+
+ <p><img alt="" src="https://mdn.mozillademos.org/files/15881/theme-tab_line.png" style="height: 302px; width: 738px;"></p>
+ </td>
+ </tr>
+ <tr>
+ <td><code>tab_loading</code></td>
+ <td>
+ <p>The color of the tab loading indicator and the tab loading burst.</p>
+
+ <details open><summary>See example</summary>
+
+ <pre class="brush: json notranslate">
+"theme": {
+  "colors": {
+     "frame": "black",
+     "tab_background_text": "white",
+     "tab_loading": "red"
+  }
+}</pre>
+ </details>
+
+ <p><img alt="" src="https://mdn.mozillademos.org/files/15882/theme-tab_loading.gif" style="height: 186px; width: 618px;"></p>
+ </td>
+ </tr>
+ <tr>
+ <td><code>tab_selected</code></td>
+ <td>
+ <p>The background color of the selected tab. When not in use selected tab color is set by <code>frame</code> and the <code>frame_inactive</code>.</p>
+
+ <details open><summary>See example</summary>
+
+ <pre class="brush: json notranslate">
+"theme": {
+  "images": {
+  "theme_frame": "weta.png"
+},
+  "colors": {
+     "frame": "black",
+     "tab_background_text": "white",
+     "tab_selected": "red"
+  }
+}</pre>
+ </details>
+
+ <p><img alt="" src="https://mdn.mozillademos.org/files/15883/theme-tab_selected.png" style="height: 302px; width: 738px;"></p>
+ </td>
+ </tr>
+ <tr>
+ <td><code>tab_text</code></td>
+ <td>
+ <p>From Firefox 59, it represents the text color for the selected tab. If <code>tab_line</code> isn't specified, it also defines the color of the selected tab line.</p>
+
+ <div class="blockIndicator note">
+ <p>Ensure the color used contrasts well with those used in <code>tab_selected</code> or <code>frame</code> and  <code>frame_inactive</code>.</p>
+ </div>
+
+ <p>From Firefox 55 to 58, it is incorrectly implemented as alias for <code>"textcolor"</code></p>
+
+ <details open><summary>See example</summary>
+
+ <pre class="brush: json notranslate">
+"theme": {
+  "images": {
+  "theme_frame": "weta.png"
+},
+  "colors": {
+     "frame": "black",
+     "tab_background_text": "white",
+     "tab_selected": "white",
+     "tab_text": "red"
+  }
+}</pre>
+ </details>
+
+ <p><img alt="" src="https://mdn.mozillademos.org/files/15884/theme-tab_text.png" style="height: 302px; width: 738px;"></p>
+ </td>
+ </tr>
+ <tr>
+ <td><code>textcolor {{Deprecated_Inline}}</code></td>
+ <td>
+ <div class="blockIndicator warning">
+ <p><code>textcolor</code> has been removed in Firefox 70. You will begin to get warnings in Firefox 65 and later if you load a theme that uses this property. Use <code>tab_background_text</code> instead.</p>
+ </div>
+
+ <p>The color of the text displayed in the header area.</p>
+
+ <details open><summary>See example</summary>
+
+ <pre class="brush: json notranslate">
+"theme": {
+  "colors": {
+    "frame": "black",
+    "toolbar": "white",
+    "textcolor": "red"
+  }
+}</pre>
+ </details>
+
+ <p><img alt="" src="https://mdn.mozillademos.org/files/15885/theme-textcolor.png" style="height: 302px; width: 738px;"></p>
+ </td>
+ </tr>
+ <tr>
+ <td><code>toolbar</code></td>
+ <td>
+ <p>The background color for the navigation bar, the bookmarks bar, and the selected tab.</p>
+
+ <p>This also sets the background color of the "Find" bar.</p>
+
+ <details open><summary>See example</summary>
+
+ <pre class="brush: json notranslate">
+"theme": {
+  "colors": {
+    "frame": "black",
+    "toolbar": "red",
+    "tab_background_text": "white"
+  }
+}</pre>
+ </details>
+
+ <p><img alt="" src="https://mdn.mozillademos.org/files/15966/toolbar.png" style="height: 335px; width: 738px;"></p>
+ </td>
+ </tr>
+ <tr>
+ <td><code>toolbar_bottom_separator</code></td>
+ <td>
+ <p>The color of the line separating the bottom of the toolbar from the region below.</p>
+
+ <details open><summary>See example</summary>
+
+ <pre class="brush: json notranslate">
+"theme": {
+  "colors": {
+    "frame": "black",
+    "tab_background_text": "white",
+    "toolbar_bottom_separator": "red"
+  }
+}</pre>
+ </details>
+
+ <p><img alt="" src="https://mdn.mozillademos.org/files/15887/theme-toolbar_bottom_separator.png" style="height: 302px; width: 738px;"></p>
+ </td>
+ </tr>
+ <tr>
+ <td><code>toolbar_field</code></td>
+ <td>
+ <p>The background color for fields in the toolbar, such as the URL bar.</p>
+
+ <p>This also sets the background color of the <strong>Find in page</strong> field.</p>
+
+ <details open><summary>See example</summary>
+
+ <pre class="brush: json notranslate">
+"theme": {
+  "colors": {
+    "frame": "black",
+    "tab_background_text": "white",
+    "toolbar_field": "red"
+  }
+}</pre>
+ </details>
+
+ <p><img alt="" src="https://mdn.mozillademos.org/files/15967/toolbar-field.png" style="height: 335px; width: 738px;"></p>
+ </td>
+ </tr>
+ <tr>
+ <td><code>toolbar_field_border</code></td>
+ <td>
+ <p>The border color for fields in the toolbar.</p>
+
+ <p>This also sets the border color of the <strong>Find in page</strong> field.</p>
+
+ <details open><summary>See example</summary>
+
+ <pre class="brush: json notranslate">
+"theme": {
+  "colors": {
+    "frame": "black",
+    "toolbar": "black",
+    "tab_background_text": "white",
+    "toolbar_field": "black",
+    "toolbar_field_text": "white",
+    "toolbar_field_border": "red"
+  }
+}</pre>
+ </details>
+
+ <p><img alt="" src="https://mdn.mozillademos.org/files/15968/toolbar-field-border.png" style="height: 335px; width: 738px;"></p>
+ </td>
+ </tr>
+ <tr>
+ <td><code>toolbar_field_border_focus</code></td>
+ <td>
+ <p>The focused border color for fields in the toolbar.</p>
+
+ <details open><summary>See example</summary>
+
+ <pre class="brush: json notranslate">
+"theme": {
+  "colors": {
+    "frame": "black",
+    "toolbar": "black",
+    "tab_background_text": "white",
+    "toolbar_field": "black",
+    "toolbar_field_text": "white",
+    "toolbar_field_border_focus": "red"
+  }
+}</pre>
+ </details>
+
+ <p><img alt="" src="https://mdn.mozillademos.org/files/15890/theme-toolbar_field_border_focus.png" style="height: 302px; width: 738px;"></p>
+ </td>
+ </tr>
+ <tr>
+ <td><code>toolbar_field_focus</code></td>
+ <td>
+ <p>The focused background color for fields in the toolbar, such as the URL bar.</p>
+
+ <details open><summary>See example</summary>
+
+ <pre class="brush: json notranslate">
+"theme": {
+  "colors": {
+    "frame": "black",
+    "toolbar": "black",
+    "tab_background_text": "white",
+    "toolbar_field": "black",
+    "toolbar_field_text": "white",
+    "toolbar_field_focus": "red"
+  }
+}</pre>
+ </details>
+
+ <p><img alt="" src="https://mdn.mozillademos.org/files/15891/theme-toolbar_field_focus.png" style="height: 302px; width: 738px;"></p>
+ </td>
+ </tr>
+ <tr>
+ <td><code>toolbar_field_highlight</code></td>
+ <td>The background color used to indicate the current selection of text in the URL bar (and the search bar, if it's configured to be separate).
+ <details open><summary>See example</summary>
+ <pre class="brush: json notranslate">
+"theme": {
+ "colors": {
+ "toolbar_field": "rgba(255, 255, 255, 0.91)",
+ "toolbar_field_text": "rgb(0, 100, 0)",
+ "toolbar_field_highlight": "rgb(180, 240, 180, 0.9)",
+ "toolbar_field_highlight_text": "rgb(0, 80, 0)"
+ }
+}</pre>
+ </details>
+
+ <p><img alt="Example showing customized text and highlight colors in the URL bar" src="https://mdn.mozillademos.org/files/16632/toolbar_field_highlight.png" style="height: 289px; width: 738px;"></p>
+
+ <p>Here, the <code>toolbar_field_highlight</code> field specifies that the highlight color is a light green, while the text is set to a dark-to-medium green using <code>toolbar_field_highlight_text</code>.</p>
+ </td>
+ </tr>
+ <tr>
+ <td><code>toolbar_field_highlight_text</code></td>
+ <td>
+ <p>The color used to draw text that's currently selected in the URL bar (and the search bar, if it's configured to be separate box).</p>
+
+ <div class="blockIndicator note">
+ <p>Ensure the color used contrasts well with those used in <code>toolbar_field_highlight</code>.</p>
+ </div>
+
+ <details open><summary>See example</summary>
+
+ <pre class="brush: json notranslate">
+"theme": {
+ "colors": {
+ "toolbar_field": "rgba(255, 255, 255, 0.91)",
+ "toolbar_field_text": "rgb(0, 100, 0)",
+ "toolbar_field_highlight": "rgb(180, 240, 180, 0.9)",
+ "toolbar_field_highlight_text": "rgb(0, 80, 0)"
+ }
+}</pre>
+ </details>
+
+ <p><img alt="Example showing customized text and highlight colors in the URL bar" src="https://mdn.mozillademos.org/files/16632/toolbar_field_highlight.png" style="height: 289px; width: 738px;"></p>
+
+ <p>Here, the <code>toolbar_field_highlight_text</code> field is used to set the text color to a dark medium-dark green, while the highlight color is  a light green.</p>
+ </td>
+ </tr>
+ <tr>
+ </tr>
+ <tr>
+ <td><code>toolbar_field_separator</code></td>
+ <td>
+ <p>The color of separators inside the URL bar. In Firefox 58 this was implemented as <code>toolbar_vertical_separator</code>.</p>
+
+ <details open><summary>See example</summary>
+
+ <pre class="brush: json notranslate">
+"theme": {
+  "colors": {
+    "frame": "black",
+    "toolbar": "black",
+    "tab_background_text": "white",
+    "toolbar_field_separator": "red"
+  }
+}</pre>
+ </details>
+
+ <p><img alt="" src="https://mdn.mozillademos.org/files/15895/theme-toolbar_field_separator.png" style="height: 302px; width: 738px;"></p>
+
+ <p>In this screenshot, <code>"toolbar_vertical_separator"</code> is the white vertical line in the URL bar dividing the Reader Mode icon from the other icons.</p>
+ </td>
+ </tr>
+ <tr>
+ <td><code>toolbar_field_text</code></td>
+ <td>
+ <p>The color of text in fields in the toolbar, such as the URL bar. This also sets the color of text in the <strong>Find in page</strong> field.</p>
+
+ <div class="blockIndicator note">
+ <p>Ensure the color used contrasts well with those used in <code>toolbar_field</code>.</p>
+ </div>
+
+ <details open><summary>See example</summary>
+
+ <pre class="brush: json notranslate">
+"theme": {
+  "colors": {
+    "frame": "black",
+    "toolbar": "black",
+    "tab_background_text": "white",
+    "toolbar_field": "black",
+    "toolbar_field_text": "red"
+  }
+}</pre>
+ </details>
+
+ <p><img alt="" src="https://mdn.mozillademos.org/files/15969/toolbar-field-text.png" style="height: 335px; width: 738px;"></p>
+ </td>
+ </tr>
+ <tr>
+ <td><code>toolbar_field_text_focus</code></td>
+ <td>
+ <p>The color of text in focused fields in the toolbar, such as the URL bar.</p>
+
+ <div class="blockIndicator note">
+ <p>Ensure the color used contrasts well with those used in <code>toolbar_field_focus</code>.</p>
+ </div>
+
+ <details open><summary>See example</summary>
+
+ <pre class="brush: json notranslate">
+"theme": {
+  "colors": {
+    "frame": "black",
+    "toolbar": "black",
+    "tab_background_text": "white",
+    "toolbar_field": "black",
+    "toolbar_field_text": "white",
+    "toolbar_field_text_focus": "red"
+  }
+}</pre>
+ </details>
+
+ <p><img alt="" src="https://mdn.mozillademos.org/files/15893/theme-toolbar_field_text_focus.png" style="height: 302px; width: 738px;"></p>
+ </td>
+ </tr>
+ <tr>
+ <td><code>toolbar_text </code></td>
+ <td>
+ <p>The color of toolbar text. This also sets the color of  text in the "Find" bar.</p>
+
+ <div class="blockIndicator note">
+ <p>For compatibility with Chrome, use the alias <code>bookmark_text</code>.</p>
+ </div>
+
+ <details open><summary>See example</summary>
+
+ <pre class="brush: json notranslate">
+"theme": {
+  "colors": {
+    "frame": "black",
+    "tab_background_text": "white",
+    "toolbar": "black",
+    "toolbar_text": "red"
+  }
+}</pre>
+ </details>
+
+ <p><img alt="" src="https://mdn.mozillademos.org/files/15970/toolbar-text.png" style="height: 335px; width: 738px;"></p>
+ </td>
+ </tr>
+ <tr>
+ <td><code>toolbar_top_separator</code></td>
+ <td>
+ <p>The color of the line separating the top of the toolbar from the region above.</p>
+
+ <details open><summary>See example</summary>
+
+ <pre class="brush: json notranslate">
+"theme": {
+  "colors": {
+    "frame": "black",
+    "tab_background_text": "white",
+    "toolbar": "black",
+    "toolbar_top_separator": "red"
+  }
+}</pre>
+ </details>
+
+ <p><img alt="" src="https://mdn.mozillademos.org/files/15897/theme-toolbar_top_separator.png" style="height: 302px; width: 738px;"></p>
+ </td>
+ </tr>
+ <tr>
+ <td><code>toolbar_vertical_separator</code></td>
+ <td>
+ <p>The color of the separator next to the application menu icon. In Firefox 58, it corresponds to the color of separators inside the URL bar.</p>
+
+ <details open><summary>See example</summary>
+
+ <pre class="brush: json notranslate">
+"theme": {
+  "colors": {
+    "frame": "black",
+    "tab_background_text": "white",
+    "toolbar": "black",
+    "toolbar_vertical_separator": "red"
+  }
+}</pre>
+ </details>
+
+ <p><img alt="" src="https://mdn.mozillademos.org/files/15898/theme-toolbar_vertical_separator.png" style="height: 302px; width: 738px;"></p>
+ </td>
+ </tr>
+ </tbody>
+</table>
+
+<h4 id="Aliases">Aliases</h4>
+
+<p>Additionally, this key accepts various properties that are aliases for one of the properties above. These are provided for compatibility with Chrome. If an alias is given, and the non-alias version is also given, then the value will be taken from the non-alias version.</p>
+
+<div class="blockIndicator warning">
+<p>Beginning Firefox 70, the following properties are removed: <code>accentcolor</code> and <code>textcolor</code>. Use <code>frame</code> and <code>tab_background_text</code> instead. Using these values in themes loaded into Firefox 65 or later will raise warnings.</p>
+</div>
+
+<table class="fullwidth-table standard-table">
+ <thead>
+ <tr>
+ <th scope="col">Name</th>
+ <th scope="col">Alias for</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td><code>bookmark_text</code></td>
+ <td><code>toolbar_text</code></td>
+ </tr>
+ <tr>
+ <td><code>frame</code></td>
+ <td><code>accentcolor</code> <code>{{Deprecated_Inline}}</code></td>
+ </tr>
+ <tr>
+ <td><code>frame_inactive</code></td>
+ <td><code>accentcolor</code> <code>{{Deprecated_Inline}}</code></td>
+ </tr>
+ <tr>
+ <td><code>tab_background_text</code></td>
+ <td><code>textcolor</code> <code>{{Deprecated_Inline}}</code></td>
+ </tr>
+ </tbody>
+</table>
+
+<h3 id="properties">properties</h3>
+
+<table class="fullwidth-table standard-table">
+ <thead>
+ <tr>
+ <th scope="col">Name</th>
+ <th scope="col">Type</th>
+ <th scope="col">Description</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td><code>additional_backgrounds_alignment</code></td>
+ <td>
+ <p><code>Array</code> of <code>String</code></p>
+ </td>
+ <td>
+ <p>Optional.</p>
+
+ <p>An array of enumeration values defining the alignment of the corresponding <code>"additional_backgrounds":</code> array item.<br>
+ The alignment options include:</p>
+
+ <ul>
+ <li><code>"bottom"</code></li>
+ <li><code>"center"</code></li>
+ <li><code>"left"</code></li>
+ <li><code>"right"</code></li>
+ <li><code>"top"</code></li>
+ <li><code>"center bottom"</code></li>
+ <li><code>"center center"</code></li>
+ <li><code>"center top"</code></li>
+ <li><code>"left bottom"</code></li>
+ <li><code>"left center"</code></li>
+ <li><code>"left top"</code></li>
+ <li><code>"right bottom"</code></li>
+ <li><code>"right center"</code></li>
+ <li><code>"right top"</code>.</li>
+ </ul>
+
+ <p>If not specified, defaults to <code>"right top"</code>.</p>
+ </td>
+ </tr>
+ <tr>
+ <td><code>additional_backgrounds_tiling</code></td>
+ <td>
+ <p><code>Array</code> of <code>String</code></p>
+ </td>
+ <td>
+ <p>Optional.</p>
+
+ <p>An array of enumeration values defining how the corresponding <code>"additional_backgrounds":</code> array item repeats. Options include:</p>
+
+ <ul>
+ <li><code>"no-repeat"</code></li>
+ <li><code>"repeat"</code></li>
+ <li><code>"repeat-x"</code></li>
+ <li><code>"repeat-y"</code></li>
+ </ul>
+
+ <p>If not specified, defaults to <code>"no-repeat"</code>.</p>
+ </td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Examples">Examples</h2>
+
+<p dir="ltr" id="docs-internal-guid-f85f22a2-6854-24d7-769b-8a47c376e2f2">A basic theme must define an image to add to the header, the accent color to use in the header, and the color of text used in the header:</p>
+
+<pre class="brush: json notranslate" dir="ltr"> "theme": {
+ "images": {
+ "theme_frame": "images/sun.jpg"
+ },
+ "colors": {
+ "frame": "#CF723F",
+ "tab_background_text": "#000"
+ }
+ }</pre>
+
+<p dir="ltr">Multiple images can be used to fill the header. Before Firefox version 60, use a blank or transparent header image to gain control over the placement of each additional image:</p>
+
+<pre class="brush: json notranslate" dir="ltr"> "theme": {
+ "images": {
+ "additional_backgrounds": [ "images/left.png" , "images/middle.png", "images/right.png"]
+ },
+ "properties": {
+ "additional_backgrounds_alignment": [ "left top" , "top", "right top"]
+ },
+ "colors": {
+ "frame": "blue",
+ "tab_background_text": "#ffffff"
+ }
+ }</pre>
+
+<p dir="ltr">You can also fill the header with a repeated image, or images, in this case a single image anchored in the middle top of the header and repeated across the rest of the header:</p>
+
+<pre class="brush: json notranslate" dir="ltr"> "theme": {
+ "images": {
+ "additional_backgrounds": [ "images/logo.png"]
+ },
+ "properties": {
+ "additional_backgrounds_alignment": [ "top" ],
+ "additional_backgrounds_tiling": [ "repeat" ]
+ },
+ "colors": {
+ "frame": "green",
+ "tab_background_text": "#000"
+ }
+ }</pre>
+
+<p><a id="example-screenshot" name="example-screenshot">The following example uses most of the different values for <code>theme.colors</code>:</a></p>
+
+<pre class="brush: json notranslate">  "theme": {
+    "images": {
+      "theme_frame": "weta.png"
+    },
+
+    "colors": {
+       "frame": "darkgreen",
+       "tab_background_text": "white",
+       "toolbar": "blue",
+       "bookmark_text": "cyan",
+       "toolbar_field": "orange",
+ "toolbar_field_border": "white",
+       "toolbar_field_text": "green",
+       "toolbar_top_separator": "red",
+       "toolbar_bottom_separator": "white",
+       "toolbar_vertical_separator": "white"
+    }
+  }</pre>
+
+<p>It will give you a browser that looks like this:</p>
+
+<p><img alt="" src="https://mdn.mozillademos.org/files/15789/theme.png" style="display: block; height: 652px; margin-left: auto; margin-right: auto; width: 1446px;"></p>
+
+<p>In this screenshot, <code>"toolbar_vertical_separator"</code> is the white vertical line in the URL bar dividing the Reader Mode icon from the other icons.</p>
+
+<h2 id="Browser_compatibility">Browser compatibility</h2>
+
+<p class="hidden">The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a> and send us a pull request.</p>
+
+<p>{{Compat("webextensions.manifest.theme")}}</p>
+
+<h3 id="Colors">Colors</h3>
+
+<p>{{Compat("webextensions.manifest.theme.colors", 10)}}</p>
+
+<h3 id="Images">Images</h3>
+
+<p>{{Compat("webextensions.manifest.theme.images", 10)}}</p>
+
+<h3 id="Properties">Properties</h3>
+
+<p>{{Compat("webextensions.manifest.theme.properties", 10)}}</p>
+
+<h3 id="Chrome_compatibility">Chrome compatibility</h3>
+
+<p>In Chrome:</p>
+
+<ul>
+ <li><code>colors/toolbar_text</code> is not used, use <code>colors/bookmark_text</code> instead.</li>
+ <li><code>images/theme_frame</code> anchors the image to the top left of the header and if the image doesn’t fill the header area tile the image.</li>
+ <li>all colors must be specified as an array of RGB values, like this:
+ <pre class="brush: json notranslate">"theme": {
+  "colors": {
+     "frame": [255, 0, 0],
+     "tab_background_text": [0, 255, 0],
+     "bookmark_text": [0, 0, 255]
+  }
+}</pre>
+
+ <p>From Firefox 59 onward, both the array form and the CSS color form are accepted for all properties. Before that, <code>colors/frame</code> and <code>colors/tab_background_text</code> required the array form, while other properties required the CSS color form.</p>
+ </li>
+</ul>
diff --git a/files/de/mozilla/add-ons/webextensions/match_patterns/index.html b/files/de/mozilla/add-ons/webextensions/match_patterns/index.html
new file mode 100644
index 0000000000..6c4694c922
--- /dev/null
+++ b/files/de/mozilla/add-ons/webextensions/match_patterns/index.html
@@ -0,0 +1,430 @@
+---
+title: Match patterns in extension manifests
+slug: Mozilla/Add-ons/WebExtensions/Match_patterns
+translation_of: Mozilla/Add-ons/WebExtensions/Match_patterns
+---
+<div>{{AddonSidebar}}</div>
+
+<p>Match patterns are a way to specify groups of URLs: a match pattern matches a specific set of URLs. They are used in WebExtensions APIs in a few places, most notably to specify which documents to load <a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/Content_scripts">content scripts</a> into, and to specify which URLs to add <code><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/API/webRequest">webRequest</a></code> listeners to.</p>
+
+<p>APIs that use match patterns usually accept a list of match patterns, and will perform the appropriate action if the URL matches any of the patterns. See, for example, the <code><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/manifest.json/content_scripts">content_scripts</a></code> key in manifest.json.</p>
+
+<h2 id="Match_pattern_structure">Match pattern structure</h2>
+
+<div class="note">
+<p><strong>Note:</strong> Some browsers don’t support certain schemes.<br>
+ Check the <a href="#Browser_compatibility">Browser compatibility table</a> for details.</p>
+</div>
+
+<p>All match patterns are specified as strings. Apart from the special <code><a href="/en-US/Add-ons/WebExtensions/Match_patterns#%3Call_urls%3E">&lt;all_urls&gt;</a></code> pattern, match patterns consist of three parts: <em>scheme</em>, <em>host</em>, and <em>path</em>. The scheme and host are separated by <code>://</code>.</p>
+
+<pre>&lt;scheme&gt;://&lt;host&gt;&lt;path&gt;</pre>
+
+<h3 id="scheme">scheme</h3>
+
+<p>The <em>scheme</em> component may take one of two forms:</p>
+
+<table class="fullwidth-table standard-table">
+ <thead>
+ <tr>
+ <th scope="col" style="width: 50%;">Form</th>
+ <th scope="col">Matches</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td><code>*</code></td>
+ <td>Only "http" and "https" and in some browsers also <a href="/en-US/docs/Web/API/WebSockets_API">"ws" and "wss"</a>.</td>
+ </tr>
+ <tr>
+ <td>One of <code>http</code>, <code>https</code>, <code>ws</code>, <code>wss</code>, <code>ftp</code>, <code>ftps</code>, <code>data</code> or <code>file</code>.</td>
+ <td>Only the given scheme.</td>
+ </tr>
+ </tbody>
+</table>
+
+<h3 id="host">host</h3>
+
+<p>The <em>host</em> component may take one of three forms:</p>
+
+<table class="fullwidth-table standard-table">
+ <thead>
+ <tr>
+ <th scope="col" style="width: 50%;">Form</th>
+ <th scope="col">Matches</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td><code>*</code></td>
+ <td>Any host.</td>
+ </tr>
+ <tr>
+ <td><code>*.</code> followed by part of the hostname.</td>
+ <td>The given host and any of its subdomains.</td>
+ </tr>
+ <tr>
+ <td>A complete hostname, without wildcards.</td>
+ <td>Only the given host.</td>
+ </tr>
+ </tbody>
+</table>
+
+<p><em>host</em> must not include a port number.</p>
+
+<p><em>host</em> is optional only if the <em>scheme</em> is "file".</p>
+
+<p>Note that the wildcard may only appear at the start.</p>
+
+<h3 id="path">path</h3>
+
+<p>The <em>path</em> component must begin with a <code>/</code>.</p>
+
+<p>After that, it may subsequently contain any combination of the <code>*</code> wildcard and any of the characters that are allowed in URL paths or query strings. Unlike <em>host</em>, the <em>path</em> component may contain the <code>*</code> wildcard in the middle or at the end, and the <code>*</code> wildcard may appear more than once.</p>
+
+<p>The value for the <em>path</em> matches against the string which is the URL path plus the <a href="https://en.wikipedia.org/wiki/Query_string">URL query string</a>. This includes the <code>?</code> between the two, if the query string is present in the URL. For example, if you want to match URLs on any domain where the URL path ends with <code>foo.bar</code>, then you need to use an array of Match Patterns like <code>['*://*/*foo.bar', '*://*/*foo.bar?*']</code>. The <code>?*</code> is needed, rather than just <code>bar*</code>, in order to anchor the ending <code>*</code> as applying to the URL query string and not some portion of the URL path.</p>
+
+<p>Neither the <a href="https://en.wikipedia.org/wiki/Fragment_identifier">URL fragment identifier</a>, nor the <code>#</code> which precedes it, are considered as part of the <em>path</em>.</p>
+
+<div class="blockIndicator note">
+<p><strong>Note</strong>: The path pattern string should not include a port number. Adding a port, as in: <em>"http://localhost:1234/*" </em>causes the match pattern to be ignored. However, "<em>http://localhost:1234</em>" will match with "<em>http://localhost/*</em>"</p>
+</div>
+
+<h3 id="&lt;all_urls>">&lt;all_urls&gt;</h3>
+
+<p>The special value <code>&lt;all_urls&gt;</code> matches all URLs under any of the supported schemes: that is "http", "https", "ws", "wss", "ftp", "data", and "file".</p>
+
+<h2 id="Examples">Examples</h2>
+
+<table class="fullwidth-table standard-table">
+ <thead>
+ <tr>
+ <th scope="col" style="width: 33%;">Pattern</th>
+ <th scope="col" style="width: 33%;">Example matches</th>
+ <th scope="col" style="width: 33%;">Example non-matches</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>
+ <p><code>&lt;all_urls&gt;</code></p>
+
+ <p>Match all URLs.</p>
+ </td>
+ <td>
+ <p><code>http://example.org/</code></p>
+
+ <p><code>https://a.org/some/path/</code></p>
+
+ <p><code>ws://sockets.somewhere.org/</code></p>
+
+ <p><code>wss://ws.example.com/stuff/</code></p>
+
+ <p><code>ftp://files.somewhere.org/</code></p>
+
+ <p><code>ftps://files.somewhere.org/</code></p>
+ </td>
+ <td>
+ <p><code>resource://a/b/c/</code><br>
+ (unsupported scheme)</p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p><code>*://*/*</code></p>
+
+ <p>Match all HTTP, HTTPS and WebSocket URLs.</p>
+ </td>
+ <td>
+ <p><code>http://example.org/</code></p>
+
+ <p><code>https://a.org/some/path/</code></p>
+
+ <p><code>ws://sockets.somewhere.org/</code></p>
+
+ <p><code>wss://ws.example.com/stuff/</code></p>
+ </td>
+ <td>
+ <p><code>ftp://ftp.example.org/</code><br>
+ (unmatched scheme)</p>
+
+ <p><code>ftps://ftp.example.org/</code><br>
+ (unmatched scheme)</p>
+
+ <p><code>file:///a/</code><br>
+ (unmatched scheme)</p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p><code>*://*.mozilla.org/*</code></p>
+
+ <p>Match all HTTP, HTTPS and WebSocket URLs that are hosted at "mozilla.org" or one of its subdomains.</p>
+ </td>
+ <td>
+ <p><code>http://mozilla.org/</code></p>
+
+ <p><code>https://mozilla.org/</code></p>
+
+ <p><code>http://a.mozilla.org/</code></p>
+
+ <p><code>http://a.b.mozilla.org/</code></p>
+
+ <p><code>https://b.mozilla.org/path/</code></p>
+
+ <p><code>ws://ws.mozilla.org/</code></p>
+
+ <p><code>wss://secure.mozilla.org/something</code></p>
+ </td>
+ <td>
+ <p><code>ftp://mozilla.org/</code><br>
+ (unmatched scheme)</p>
+
+ <p><code>http://mozilla.com/</code><br>
+ (unmatched host)</p>
+
+ <p><code>http://firefox.org/</code><br>
+ (unmatched host)</p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p><code>*://mozilla.org/</code></p>
+
+ <p>Match all HTTP, HTTPS and WebSocket URLs that are hosted at exactly "mozilla.org/".</p>
+ </td>
+ <td>
+ <p><code>http://mozilla.org/</code></p>
+
+ <p><code>https://mozilla.org/</code></p>
+
+ <p><code>ws://mozilla.org/</code></p>
+
+ <p><code>wss://mozilla.org/</code></p>
+ </td>
+ <td>
+ <p><code>ftp://mozilla.org/</code><br>
+ (unmatched scheme)</p>
+
+ <p><code>http://a.mozilla.org/</code><br>
+ (unmatched host)</p>
+
+ <p><code>http://mozilla.org/a</code><br>
+ (unmatched path)</p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p><code>ftp://mozilla.org/</code></p>
+
+ <p>Match only "ftp://mozilla.org/".</p>
+ </td>
+ <td><code>ftp://mozilla.org</code></td>
+ <td>
+ <p><code>http://mozilla.org/</code><br>
+ (unmatched scheme)</p>
+
+ <p><code>ftp://sub.mozilla.org/</code><br>
+ (unmatched host)</p>
+
+ <p><code>ftp://mozilla.org/path</code><br>
+ (unmatched path)</p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p><code>https://*/path</code></p>
+
+ <p>Match HTTPS URLs on any host, whose path is "path".</p>
+ </td>
+ <td>
+ <p><code>https://mozilla.org/path</code></p>
+
+ <p><code>https://a.mozilla.org/path</code></p>
+
+ <p><code>https://something.com/path</code></p>
+ </td>
+ <td>
+ <p><code>http://mozilla.org/path</code><br>
+ (unmatched scheme)</p>
+
+ <p><code>https://mozilla.org/path/</code><br>
+ (unmatched path)</p>
+
+ <p><code>https://mozilla.org/a</code><br>
+ (unmatched path)</p>
+
+ <p><code>https://mozilla.org/</code><br>
+ (unmatched path)</p>
+
+ <p><code>https://mozilla.org/path?foo=1</code><br>
+ (unmatched path due to URL query string)</p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p><code>https://*/path/</code></p>
+
+ <p>Match HTTPS URLs on any host, whose path is "path/" and which has no URL query string.</p>
+ </td>
+ <td>
+ <p><code>https://mozilla.org/path/</code></p>
+
+ <p><code>https://a.mozilla.org/path/</code></p>
+
+ <p><code>https://something.com/path</code>/</p>
+ </td>
+ <td>
+ <p><code>http://mozilla.org/path/</code><br>
+ (unmatched scheme)</p>
+
+ <p><code>https://mozilla.org/path</code><br>
+ (unmatched path)</p>
+
+ <p><code>https://mozilla.org/a</code><br>
+ (unmatched path)</p>
+
+ <p><code>https://mozilla.org/</code><br>
+ (unmatched path)</p>
+
+ <p><code>https://mozilla.org/path/</code><code>?foo=1</code><br>
+ (unmatched path due to URL query string)</p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p><code>https://mozilla.org/*</code></p>
+
+ <p>Match HTTPS URLs only at "mozilla.org", with any URL path and URL query string.</p>
+ </td>
+ <td>
+ <p><code>https://mozilla.org/</code></p>
+
+ <p><code>https://mozilla.org/path</code></p>
+
+ <p><code>https://mozilla.org/another</code></p>
+
+ <p><code>https://mozilla.org/path/to/doc</code></p>
+
+ <p><code>https://mozilla.org/path/to/doc?foo=1</code></p>
+ </td>
+ <td>
+ <p><code>http://mozilla.org/path</code><br>
+ (unmatched scheme)</p>
+
+ <p><code>https://mozilla.com/path</code><br>
+ (unmatched host)</p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p><code>https://mozilla.org/a/b/c/</code></p>
+
+ <p>Match only this URL, or this URL with any URL fragment.</p>
+ </td>
+ <td>
+ <p><code>https://mozilla.org/a/b/c/</code></p>
+
+ <p><code>https://mozilla.org/a/b/c/#section1</code></p>
+ </td>
+ <td>Anything else.</td>
+ </tr>
+ <tr>
+ <td>
+ <p><code>https://mozilla.org/*/b/*/</code></p>
+
+ <p>Match HTTPS URLs hosted on "mozilla.org", whose path contains a component "b" somewhere in the middle. Will match URLs with query strings, if the string ends in a <code>/</code>.</p>
+ </td>
+ <td>
+ <p><code>https://mozilla.org/a/b/c/</code></p>
+
+ <p><code>https://mozilla.org/d/b/f/</code></p>
+
+ <p><code>https://mozilla.org/a/b/c/d/</code></p>
+
+ <p><code>https://mozilla.org/a/b/c/d/#section1</code></p>
+
+ <p><code>https://mozilla.org/a/b/c/d/?foo=/</code></p>
+
+ <p><code>https://mozilla.org/a?foo=21314&amp;bar=/b/&amp;extra=c/</code></p>
+ </td>
+ <td>
+ <p><code>https://mozilla.org/b/*/</code><br>
+ (unmatched path)</p>
+
+ <p><code>https://mozilla.org/a/b/</code><br>
+ (unmatched path)</p>
+
+ <p><code>https://mozilla.org/a/b/c/d/?foo=bar</code><br>
+ (unmatched path due to URL query string)</p>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <p><code>file:///blah/*</code></p>
+
+ <p>Match any FILE URL whose path begins with "blah".</p>
+ </td>
+ <td>
+ <p><code>file:///blah/</code></p>
+
+ <p><code>file:///blah/bleh</code></p>
+ </td>
+ <td><code>file:///bleh/</code><br>
+ (unmatched path)</td>
+ </tr>
+ </tbody>
+</table>
+
+<h3 id="Invalid_match_patterns">Invalid match patterns</h3>
+
+<table class="fullwidth-table standard-table">
+ <thead>
+ <tr>
+ <th scope="col">Invalid pattern</th>
+ <th scope="col">Reason</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td><code>resource://path/</code></td>
+ <td>Unsupported scheme.</td>
+ </tr>
+ <tr>
+ <td><code>https://mozilla.org</code></td>
+ <td>No path.</td>
+ </tr>
+ <tr>
+ <td><code>https://mozilla.*.org/</code></td>
+ <td>"*" in host must be at the start.</td>
+ </tr>
+ <tr>
+ <td><code>https://*zilla.org/</code></td>
+ <td>"*" in host must be the only character or be followed by ".".</td>
+ </tr>
+ <tr>
+ <td><code>http*://mozilla.org/</code></td>
+ <td>"*" in scheme must be the only character.</td>
+ </tr>
+ <tr>
+ <td><code>https://mozilla.org:80/</code></td>
+ <td>Host must not include a port number.</td>
+ </tr>
+ <tr>
+ <td><code>*://*</code></td>
+ <td>Empty path: this should be "<code>*://*/*</code>".</td>
+ </tr>
+ <tr>
+ <td><code>file://*</code></td>
+ <td>Empty path: this should be "<code>file:///*</code>".</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Browser_compatibility">Browser compatibility</h2>
+
+<h3 id="scheme_2">scheme</h3>
+
+
+
+<p>{{Compat("webextensions.match_patterns.scheme",10)}}</p>
diff --git a/files/de/mozilla/add-ons/webextensions/what_are_webextensions/index.html b/files/de/mozilla/add-ons/webextensions/what_are_webextensions/index.html
new file mode 100644
index 0000000000..85498e8b30
--- /dev/null
+++ b/files/de/mozilla/add-ons/webextensions/what_are_webextensions/index.html
@@ -0,0 +1,24 @@
+---
+title: Was sind WebExtensions?
+slug: Mozilla/Add-ons/WebExtensions/What_are_WebExtensions
+tags:
+ - WebExtensions
+translation_of: Mozilla/Add-ons/WebExtensions/What_are_WebExtensions
+---
+<div>{{AddonSidebar}}</div>
+
+<p>WebExtensions erweitern und modifizieren die Funktionen eines Web-Browsers. Sie werden unter Verwendung von Standard-Webtechnologien - JavaScript, HTML und CSS - sowie zusätzlichen speziell dafür vorgesehenen JavaScript APIs erstellt. Unter anderem können mit so einer Erweiterung neue Funktionen zum Browser hinzufügt, das Erscheinungsbild oder der Inhalt bestimmter Webseiten verändert werden.</p>
+
+<p>Erweiterungen für Firefox werden mit Hilfe von WebExtensions APIs erstellt, einem Cross-Browser-System zum Entwickeln von Browsererweiterungen. Zum größten Teil ist die API kompatibel mit der <a class="external external-icon" href="https://developer.chrome.com/extensions">extension API</a> für Google Chrome und Opera. Erweiterungen, die für diese Browser erstellt wurden, laufen in den meisten Fällen mit <a href="/de/docs/Mozilla/Add-ons/WebExtensions/Porting_a_Google_Chrome_extension">wenigen Änderungen</a> in Firefox oder Microsoft Edge. Die API ist ebenfalls vollständig mit <a href="/de/Firefox/Multiprocess_Firefox">Multiprozess-Firefox</a> kompatibel.</p>
+
+<p>Vor WebExtensions gab es drei unterschiedliche Möglichkeiten, Erweiterungen für Firefox zu erstellen: <a href="/de/Add-ons/überliegende_Erweiterungen">XUL/XPCOM overlays</a>, <a href="/de/Add-ons/Bootstrapped_extensions">bootstrapped extensions</a> und das <a href="/de/Add-ons/SDK">Add-on SDK</a>. Seit Ende November 2017 sind WebExtensions APIs die einzige Möglichkeit, Firefox-Erweiterungen zu entwickeln, die vorherigen Systeme gelten als veraltet.</p>
+
+<p>Wir sind stets bemüht, die API ständig zu erweitern, um den Anforderungen der Add-on-Entwickler gerecht zu werden. Sollten Sie Anregungen dazu haben, würden wir uns über Ihre Mitteilung auf der englischsprachigen <a class="external external-icon" href="https://mail.mozilla.org/listinfo/dev-addons">Mailingliste für Add-on-Entwickler</a> oder auf <a href="irc://irc.mozilla.org/webextensions">#webextensions</a> im <a class="external external-icon" href="https://wiki.mozilla.org/IRC">IRC</a> freuen.</p>
+
+<h2 id="Nächste_Schritte">Nächste Schritte?</h2>
+
+<ul>
+ <li><a href="/de/Add-ons/WebExtensions/Examples">WebExtensions Beispiele</a>.</li>
+ <li><a href="/de/Add-ons/WebExtensions/Anatomy_of_a_WebExtension">Aufbau einer WebExtension</a>.</li>
+ <li><a href="/de/Add-ons/WebExtensions/Your_first_WebExtension">Schritt-für-Schritt Entwicklung einer einfachen WebExtension</a>.</li>
+</ul>
diff --git a/files/de/mozilla/add-ons/überliegende_erweiterungen/index.html b/files/de/mozilla/add-ons/überliegende_erweiterungen/index.html
new file mode 100644
index 0000000000..0214de4021
--- /dev/null
+++ b/files/de/mozilla/add-ons/überliegende_erweiterungen/index.html
@@ -0,0 +1,54 @@
+---
+title: Legacy-Erweiterungen
+slug: Mozilla/Add-ons/überliegende_Erweiterungen
+tags:
+ - Add-ons
+ - Erweiterungen
+translation_of: Archive/Add-ons/Overlay_Extensions
+---
+<p>Diese Seite enthält Links zu der Dokumentation für die approach für Entwickeln von Erweiterungen für Gecko-basierte Applikationen welche benutzen:</p>
+
+<ul>
+ <li>XUL Überliegungen um das Interface zu spezialisieren</li>
+ <li>APIs, welche auf privilegiertem Code, solchem wie <a href="/en-US/docs/XUL/tabbrowser"><code>tabbrowser</code></a> und <a href="/en-US/docs/Mozilla/JavaScript_code_modules">JavaScript modules</a>,verfügbar sind, um mit der Applikation und dem Inhalt zu interagieren.</li>
+</ul>
+
+<p>Priorität zu Firefox 4, und der Gecko-2- Engine welche es ermöglicht, dies war die einzige Möglichkeit Erweiterungen zu entwickeln. Diese Methode wurde sehr übertroffen von <a href="/en-US/docs/Extensions/Bootstrapped_extensions">Neustartlosen Erweiterungen</a>, und der <a href="/en-US/Add-ons/SDK">Add-on SDK</a>, welche an ihrer Spitze gebaut ist. Die privilegierten JavaScript APIs, welche hier beschrieben wurden, können in diesen neueren Typen von Add-ons immer noch benutzt werden.</p>
+
+<h2 id="XUL-Schule">XUL-Schule</h2>
+
+<p><a href="/en-US/Add-ons/Overlay_Extensions/XUL_School">XUL-Schule</a> ist ein verständliches Addonentwicklungstutorial, fokussierend auf die Entwicklung von Firefoxerweiterungen, aber ist meistens übertragbar auf andere Gecko-basierte Applikationen.</p>
+
+<h2 id="Mehr_Ressourcen">Mehr Ressourcen</h2>
+
+<div class="column-container">
+<div class="column-half">
+<dl>
+ <dt><a href="/en-US/Mozilla/Add-ons/Setting_up_extension_development_environment">Setting up your environment</a></dt>
+ <dd>Setting up the application for extension development.</dd>
+ <dt><a href="/en-US/docs/XUL">XUL</a></dt>
+ <dd>Tutorials and reference for the user interface language used by XUL extensions.</dd>
+ <dt><a href="/en-US/Mozilla/Add-ons/Code_snippets">Code snippets</a></dt>
+ <dd>Sample code for many of the things you'll want to do.</dd>
+ <dt><a href="/en-US/Mozilla/Add-ons/Installing_extensions">Installing extensions</a></dt>
+ <dd>How to install an extension by copying the extension files into the application's install directory.</dd>
+ <dt><a href="/en-US/Add-ons/Overlay_extensions/Firefox_addons_developer_guide">Firefox add-ons developer guide</a></dt>
+ <dd>A guide to developing overlay extensions.</dd>
+</dl>
+</div>
+
+<div class="column-half">
+<dl>
+ <dt><a href="/en-US/docs/Mozilla/JavaScript_code_modules">JavaScript code modules</a></dt>
+ <dd>JavaScript modules available to extension developers.</dd>
+ <dt><a href="/en-US/Mozilla/Add-ons/Inline_Options">Extension preferences</a></dt>
+ <dd>How to specify the preferences for your extension that will appear in the Add-ons Manager.</dd>
+ <dt><a href="/en-US/Mozilla/Add-ons/Extension_Packaging">Extension packaging</a></dt>
+ <dd>How extensions are packaged and installed.</dd>
+ <dt><a href="/en-US/Mozilla/Add-ons/Creating_Custom_Firefox_Extensions_with_the_Mozilla_Build_System">Binary Firefox extensions</a></dt>
+ <dd>Creating binary extensions for Firefox.</dd>
+</dl>
+</div>
+</div>
+
+<p> </p>
diff --git a/files/de/mozilla/chrome_registration/index.html b/files/de/mozilla/chrome_registration/index.html
new file mode 100644
index 0000000000..44fb60e26f
--- /dev/null
+++ b/files/de/mozilla/chrome_registration/index.html
@@ -0,0 +1,48 @@
+---
+title: Chrome registration
+slug: Mozilla/Chrome_Registration
+translation_of: Mozilla/Chrome_Registration
+---
+<h2 id="What_is_Chrome.3F" name="What_is_Chrome.3F">Was ist chrome?</h2>
+
+<p><a href="/en/Chrome" title="en/Chrome">Chrome</a> <span id="result_box" lang="de"><span style="background-color: transparent;">ist eine Gruppe von Benutzeroberflächenelementen des Anwendungsfensters, die sich außerhalb des Inhaltsbereichs des Fensters befinden.</span> <span style="background-color: transparent;">Symbolleisten, Menüleisten, Fortschrittsleisten und Fenstertitelleisten sind Beispiele für Elemente, die normalerweise zum Chrom gehören.</span></span></p>
+
+<p><span id="result_box" lang="de"><span style="background-color: transparent;">Mozilla sucht und liest die root-Datei </span></span><code>chrome.manifest</code> <span id="result_box" lang="de"><span style="background-color: transparent;">nach Erweiterungen und Designs.</span></span></p>
+
+<div class="note">
+<p><strong>Note:</strong> With {{Gecko("1.9.2")}} and older, Mozilla reads <code>chrome/*.manifest</code> files from applications. Starting with {{Gecko("2.0")}}, the root <code>chrome.manifest</code> is the only manifest used; you can add <a href="/en/Chrome_Registration#manifest" title="en/Chrome Registration#manifest"><code>manifest</code></a> commands to that file to load secondary manifests.</p>
+</div>
+
+<h2 id="Chrome_Providers" name="Chrome_Providers">Chrome Anbieter</h2>
+
+<p><span id="result_box" lang="de"><span title="A supplier of chrome for a given window type (e.g., for the browser window) is called a chrome provider.">Ein Anbieter von Chrom für einen bestimmten Fenstertyp (z. B. für das Browserfenster) wird als Chromanbieter bezeichnet. </span><span title="The providers work together to supply a complete set of chrome for a particular window, from the images on the toolbar buttons to the files that describe the text, content, and appearance of the window itself.
+
+">Die Anbieter arbeiten zusammen, um einen vollständigen Chromsatz für ein bestimmtes Fenster bereitzustellen, von den Bildern auf den Symbolleistenschaltflächen bis zu den Dateien, die den Text, den Inhalt und das Erscheinungsbild des Fensters selbst beschreiben.</span><br>
+ <br>
+ <span title="There are three basic types of chrome providers:
+
+">Es gibt drei grundlegende Arten von Chromanbietern:</span><br>
+ <br>
+ <span title="Content
+    "><strong>Inhalt</strong><br>
+     </span><span title="The main source file for a window description comes from the content provider, and it can be any file type viewable from within Mozilla.">Die Hauptquelldatei für eine Fensterbeschreibung stammt vom Inhaltsanbieter und kann von jedem Dateityp sein, der in Mozilla angezeigt werden kann. </span><span title="It will typically be a XUL file, since XUL is designed for describing the contents of windows and dialogs.">Normalerweise handelt es sich um eine XUL-Datei, da XUL zur Beschreibung des Inhalts von Fenstern und Dialogen gedacht ist. </span><span title='The JavaScript files that define the user interface are also contained within the content packages, as well as most {{Glossary("XBL")}} binding files.
+'>Die JavaScript-Dateien, die die Benutzeroberfläche definieren, sind auch in den Inhaltspaketen sowie in den meisten {{Glossary ("XBL")}} - Bindungsdateien enthalten.</span></span></p>
+
+<p><span lang="de"><span title="Locale
+    "><strong>Gebietsschema</strong><br>
+     </span><span title="Localizable applications keep all their localized information in locale providers.">Lokalisierbare Anwendungen speichern alle lokalisierten Informationen in Gebietsschemaanbietern. </span><span title="This allows translators to plug in a different chrome package to translate an application without altering the rest of the source code.">Dadurch können Übersetzer ein anderes Chrome-Paket zum Übersetzen einer Anwendung einstecken, ohne den Rest des Quellcodes zu ändern. </span><span title='The two main types of localizable files are {{Glossary("DTD")}} files and Java-style properties files.
+'>Die zwei Haupttypen von lokalisierbaren Dateien sind {{Glossary ("DTD")}} - Dateien und Java-Eigenschaftendateien.</span></span></p>
+
+<p><span lang="de"><span title="Skin
+    "><strong>Skin</strong><br>
+     </span><span title="A skin provider is responsible for providing a complete set of files that describe the visual appearance of the chrome.">Ein Skin-Anbieter ist dafür verantwortlich, einen vollständigen Satz von Dateien bereitzustellen, der das optische Erscheinungsbild des Chroms beschreibt. </span><span title='Typically a skin provider will provide {{Glossary("CSS")}} files and images.
+
+'>Normalerweise stellt ein Skin-Provider Dateien und Bilder {{Glossary ("CSS")}} bereit.</span></span></p>
+
+<p> </p>
+
+<div class="note">
+<p><strong>Hinweis:</strong> <span id="result_box" lang="de"><span style="background-color: transparent;" title="Note: Scripts (including those found in XBL) loaded from skin packages will not execute.">Aus Skin-Paketen geladene Skripts </span></span> ( <span id="result_box" lang="de"><span style="background-color: transparent;" title="Note: Scripts (including those found in XBL) loaded from skin packages will not execute.">einschließlich der in </span></span> <a href="/en/XBL" title="en/XBL">XBL</a> gefundenen) werden nicht ausgeführt.</p>
+</div>
+
+<p> </p>
diff --git a/files/de/mozilla/creating_a_spell_check_dictionary_add-on/index.html b/files/de/mozilla/creating_a_spell_check_dictionary_add-on/index.html
new file mode 100644
index 0000000000..6fea30e835
--- /dev/null
+++ b/files/de/mozilla/creating_a_spell_check_dictionary_add-on/index.html
@@ -0,0 +1,105 @@
+---
+title: >-
+ Auf dieser Seite wird beschrieben, wie Sie ein Wörterbuch für die
+ Rechtschreibprüfung von Hunspell als Firefox-Add-On
+slug: Mozilla/Creating_a_spell_check_dictionary_add-on
+tags:
+ - Deutsch
+ - German Translation
+ - Lesen Sie die Tagging-Anleitung.
+ - Übersetzung
+translation_of: Mozilla/Creating_a_spell_check_dictionary_add-on
+---
+<div class="blockIndicator note">
+<p dir="rtl">This paDieserge describes how to package a Hunspell spell check dictionary as a Firefox add-on, or how to update your existing add-on, so that it can be installed, uninstalled and updated without a restart.</p>
+</div>
+
+<h2 id="Parts_neededdictionary_add-on_you_first_need_two_things">Parts neededdictionary add-on, you first need two things:</h2>
+
+<ul>
+ <li>A spell check dictionary in Hunspell or Myspell format, with a license which allows you to use it. Such a dictionary consists of two files, one with a <code>.dic</code> and one with an <code>.aff</code> file extension.</li>
+ <li>A locale code to describe the language of the dictionary. For example <code>en-US</code>, <code>de-DE</code> or <code>da</code>. It is important to choose the right locale code, or the spell checker will not be able to match the language of your dictionary against the language of a web page in order to select the right dictionary to use.</li>
+</ul>
+
+<p>If you are creating a new dictionary, as opposed to updating an existing one, please make sure that there is not already a <a href="https://addons.mozilla.org/en-US/firefox/language-tools/" title="https://addons.mozilla.org/en-US/firefox/language-tools/">dictionary available</a> for your locale. If there already is one, try contacting the author to get it updated, or contact <a href="https://wiki.mozilla.org/AMO:Editors" title="https://wiki.mozilla.org/AMO:Editors">AMO editors</a> if the author does not respond.</p>
+
+<h2 id="Packaging">Packaging</h2>
+
+<p>A Firefox add-on is a ZIP file renamed to use an <code>.xpi</code> file extension instead of the normal <code>.zip</code> file extension. To create a dictionary add-on, simply create a ZIP file which contains the following files and folders:</p>
+
+<p><code>my-dictionary.xpi</code></p>
+
+<ul>
+ <li><code>install.rdf</code></li>
+ <li><code>dictionaries/</code>
+ <ul>
+ <li><em>locale-code</em><code>.dic</code></li>
+ <li><em>locale-code</em><code>.aff</code></li>
+ </ul>
+ </li>
+</ul>
+
+<p>The <code>.dic</code> and <code>.aff</code> files must be placed in a subfolder named <code>dictionaries</code> within the ZIP file. Both files must have the locale code as their file name. You also have to add a file named <code>install.rdf</code> to the root of the ZIP file. This file contains information about your add-on such as name and version number (see below). In addition to these required files, you may add optional files, for example to give your add-on an <a href="/en-US/docs/Install_Manifests#iconURL" title="/en-US/docs/Install_Manifests#iconURL">icon</a> or to describe the license of the dictionary.</p>
+
+<p>Here is an example of the <code>install.rdf</code> file. You can create and edit it with a plain text editor such as Notepad.</p>
+
+<p><code>&lt;?xml version="1.0"?&gt;<br>
+ &lt;RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#"<br>
+      xmlns:em="http://www.mozilla.org/2004/em-rdf#"&gt;<br>
+   &lt;Description about="urn:mozilla:install-manifest"&gt;<br>
+     &lt;em:id&gt;<span style="color: #ff0000;"><strong><em>locale-code</em></strong></span>@dictionaries.addons.mozilla.org&lt;/em:id&gt;<br>
+     &lt;em:version&gt;<em><strong><span style="color: #ff0000;">version number</span></strong></em>&lt;/em:version&gt;<br>
+     &lt;em:type&gt;64&lt;/em:type&gt;<br>
+     &lt;em:unpack&gt;true&lt;/em:unpack&gt;<br>
+     &lt;em:name&gt;<span style="color: #ff0000;"><em><strong>Name</strong></em></span>&lt;/em:name&gt;<br>
+     <em><strong>&lt;!--<br>
+       Other <a href="/en-US/docs/Install_Manifests" title="/en-US/docs/Install_Manifests">install.rdf metadata</a> such as em:localized, em:description, em:creator,<br>
+       em:developer, em:translator, em:contributor or em:homepageURL<br>
+     --&gt;</strong></em><br>
+ <br>
+     &lt;!-- Firefox --&gt;<br>
+     &lt;em:targetApplication&gt;<br>
+       &lt;Description&gt;<br>
+         &lt;em:id&gt;{ec8030f7-c20a-464f-9b0e-13a3a9e97384}&lt;/em:id&gt;<br>
+         &lt;em:minVersion&gt;18.0a1&lt;/em:minVersion&gt;<br>
+         &lt;em:maxVersion&gt;46.0&lt;/em:maxVersion&gt;<br>
+       &lt;/Description&gt;<br>
+     &lt;/em:targetApplication&gt;<br>
+ <br>
+     &lt;!-- Thunderbird --&gt;<br>
+     &lt;em:targetApplication&gt;<br>
+       &lt;Description&gt;<br>
+         &lt;em:id&gt;{3550f703-e582-4d05-9a08-453d09bdfdc6}&lt;/em:id&gt;<br>
+         &lt;em:minVersion&gt;18.0a1&lt;/em:minVersion&gt;<br>
+         &lt;em:maxVersion&gt;22.0&lt;/em:maxVersion&gt;<br>
+       &lt;/Description&gt;<br>
+     &lt;/em:targetApplication&gt;<br>
+ <br>
+     &lt;!-- SeaMonkey --&gt;<br>
+     &lt;em:targetApplication&gt;<br>
+       &lt;Description&gt;<br>
+         &lt;em:id&gt;{92650c4d-4b8e-4d2a-b7eb-24ecf4f6b63a}&lt;/em:id&gt;<br>
+         &lt;em:minVersion&gt;2.15a1&lt;/em:minVersion&gt;<br>
+         &lt;em:maxVersion&gt;2.49&lt;/em:maxVersion&gt;<br>
+       &lt;/Description&gt;<br>
+     &lt;/em:targetApplication&gt;<br>
+   &lt;/Description&gt;<br>
+ &lt;/RDF&gt;</code></p>
+
+<p>There are some rules about how you should adapt the <code>install.rdf</code> file:</p>
+
+<ul>
+ <li>If you are creating a new dictionary add-on, we recommend that the <code>em:id</code> consists of your locale code followed by <code>@dictionaries.addons.mozilla.org</code>, but if there is more than one dictionary for your language (for example the German "old spelling" versus "new spelling" dictionaries), you may need to choose another ID, that follows the <a href="/en-US/docs/Install_Manifests#id" title="/en-US/docs/Install_Manifests#id">rules of em:id</a>. If you update an existing dictionary add-on, you must keep the existing <code>em:id</code>, or your users will not be updated to the latest version.</li>
+ <li>The <code>em:version</code> should follow the <a href="/en-US/docs/Toolkit_version_format" title="/en-US/docs/Toolkit_version_format">rules of Mozilla add-on version numbers</a>, and if you update an existing dictionary add-on, the new version number must be greater than the old one.</li>
+ <li>Don't change <code>em:type</code> or <code>em:unpack</code>, and don't add a <code>em:bootstrap</code> element. Type = 64 indicates that the add-on is in the restartless format, and unpack is required for Hunspell to read the dictionary.</li>
+ <li>Although the restartless format for dictionary add-ons were introduced in Gecko 10, dictionary updates only works starting from Gecko 18. The <code>em:minVersion</code> should therefore be the same as in the example above (or greater). If you set <code>em:minVersion</code> to a lower value, Gecko 10-17 will not be able to update your dictionary add-on once the restartless dictionary is installed (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=782118">bug 782118</a>), and Gecko 10-16 may warn the user that your dictionary is not compatible, when users try to update to a newer version of Firefox/Thunderbird (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=782115" title="https://bugzilla.mozilla.org/show_bug.cgi?id=782115">bug 782115</a>).</li>
+ <li>Update the <code>em:maxVersion</code> to the <a href="https://addons.mozilla.org/en-us/firefox/pages/appversions/" title="https://addons.mozilla.org/en-us/firefox/pages/appversions/">greatest versions available</a>.</li>
+</ul>
+
+<p>Once you have added these files to your ZIP file and renamed the file to have the <code>.xpi</code> extension, you can install your add-on in Firefox and test it. After a successful test, you can upload your add-on to <a href="https://addons.mozilla.org/" title="https://addons.mozilla.org/">addons.mozilla.org</a> and ask for it to be included in the <a href="https://addons.mozilla.org/en-US/firefox/language-tools/" title="https://addons.mozilla.org/en-US/firefox/language-tools/">Dictionaries &amp; Language Packs</a> page.</p>
+
+<h2 id="Reference">Reference</h2>
+
+<ul>
+ <li><a href="http://www.suares.com/index.php?page_id=25&amp;news_id=233">Creating a hunspell dictionary</a></li>
+</ul>
diff --git a/files/de/mozilla/css/index.html b/files/de/mozilla/css/index.html
new file mode 100644
index 0000000000..52ff0c90d6
--- /dev/null
+++ b/files/de/mozilla/css/index.html
@@ -0,0 +1,11 @@
+---
+title: Mozilla internal-only CSS
+slug: Mozilla/CSS
+tags:
+ - NeedsTranslation
+ - TopicStub
+translation_of: Mozilla/Gecko/Chrome/CSS
+---
+<p>This set of pages details CSS features that are only available internally in the Firefox browser — i.e. only inside the US stylesheet.</p>
+
+<p>{{SubpagesWithSummaries}}</p>
diff --git a/files/de/mozilla/developer_guide/firefox_erfolgreich_erstellt/index.html b/files/de/mozilla/developer_guide/firefox_erfolgreich_erstellt/index.html
new file mode 100644
index 0000000000..1734710732
--- /dev/null
+++ b/files/de/mozilla/developer_guide/firefox_erfolgreich_erstellt/index.html
@@ -0,0 +1,14 @@
+---
+title: 'So, Du hast Firefox erfolgreich erstellt'
+slug: Mozilla/Developer_guide/firefox_erfolgreich_erstellt
+translation_of: Mozilla/Developer_guide/So_you_just_built_Firefox
+---
+<p>Ein Link zu dieser Seite wird nach dem erfolgreichen Erstellen von Firefox angezeigt. Diese Seite sollte nützliche nächste Schritte enthalten, wie Links wie man Test laufen lassen kann, Build packen kann, etc. Der Inhalt hier sollte kurz gehalten werden, genauere Informationen sollten in den verlinkten Seiten hinzugefügt werden. Die Zielgruppe sind Besucher, die gerade Firefox zum ersten mal gebaut haben.</p>
+
+<p>Ein paar interessante Links:</p>
+
+<p><a href="/en-US/docs/Running_automated_tests" title="Running automated tests">Tests laufen lassen</a></p>
+
+<p><a href="/en-US/docs/Mozilla/Debugging" title="Debugging">Debuggen</a></p>
+
+<p><a href="/en-US/docs/Mozilla/QA/Bug_writing_guidelines" title="Bug writing guidelines">Fehler melden</a></p>
diff --git a/files/de/mozilla/developer_guide/index.html b/files/de/mozilla/developer_guide/index.html
new file mode 100644
index 0000000000..82603e44bc
--- /dev/null
+++ b/files/de/mozilla/developer_guide/index.html
@@ -0,0 +1,108 @@
+---
+title: Entwicklerhandbuch
+slug: Mozilla/Developer_guide
+tags:
+ - Entwicklerhandbuch
+translation_of: Mozilla/Developer_guide
+---
+<p>Egal, ob Sie ein alter Hase sind oder gerade erst anfangen, von dieser Seite aus finden Sie Artikel, die Ihnen während der Entwicklung von Mozilla Hilfestellung bieten können.</p>
+<h2 id="Zum_ersten_Mal_hier">Zum ersten Mal hier?</h2>
+<dl>
+ <dt>
+ <a href="/en-US/docs/Introduction" title="Introduction (Englisch)">Getting Started (auf Englisch)</a></dt>
+ <dd>
+ Eine Schritt-für-Schritt-Anleitung für Anfänger darüber, wie man sich an Mozilla beteiligen kann.</dd>
+</dl>
+<div class="row topicpage-table">
+ <div class="section">
+ <h2 id="Dokumentation">Dokumentation</h2>
+ <dl>
+ <dt>
+ <a href="/de/Entwicklerhandbuch/Quelltexte" title="de/Entwicklerhandbuch/Quelltexte">Mit dem Mozilla-Quellcode arbeiten</a></dt>
+ <dd>
+ Ein Überblick über den Code, wie man den Code bekommt und der Code-Stilführer.</dd>
+ <dt>
+ <a href="/de/Entwicklerhandbuch/Build_Anweisungen" title="de/Entwicklerhandbuch/Build_Anweisungen">Build-Anweisungen</a></dt>
+ <dd>
+ Wie man Firefox, Thunderbird, SeaMonkey, oder andere Mozilla-Applikationen kompiliert.</dd>
+ <dt>
+ <a href="/de/Entwicklerhandbuch/Überblick_über_den_Entwicklugsprozess" title="de/Entwicklerhandbuch/Überblick_über_den_Entwicklugsprozess">Überblick über den Entwicklungsprozess</a></dt>
+ <dd>
+ Ein Überblick über den kompletten Entwicklungsprozess von Mozilla</dd>
+ <dt>
+ <a href="/de/Automatisiertes_Testen" title="de/Automatisiertes_Testen">Automatisiertes Testen</a></dt>
+ <dd>
+ Wie man Mozillas automatisierte Tests ausführt und wie neue Tests hinzugefügt werden können.</dd>
+ <dt>
+ <a href="/de/Entwicklerhandbuch/Wie_ein_Patch_eingereicht_werden_kann" title="de/Entwicklerhandbuch/Wie_ein_Patch_eingereicht_werden_kann">Wie Sie Ihren Patch einreichen können</a></dt>
+ <dd>
+ Wenn Sie Ihren Patch geschrieben haben, muss dieser im Tree eingereicht werden. Dieser Artikel erklärt den Review-Prozess und wie Sie es schaffen, dass Ihr Patch angenommen wird.</dd>
+ <dt>
+ <a href="/de/Mozilla_Module_und_Modul_Ownership" title="de/Mozilla_Module_und_Modul_Ownership">Mozilla-Module und "Eigentum" an Modulen</a></dt>
+ <dd>
+ Dieser Artikel enthält Informationen über Mozillas Module, was die Rolle eines Modul-Eigentümers ist und wie Modul-Eigentümer ausgewählt werden.</dd>
+ <dt>
+ <a href="/de/Hacking_Firefox" title="de/Hacking_Firefox">Arbeit an der Firefox-Benutzeroberfläche</a></dt>
+ <dd>
+ Wie man in die Entwicklung der Firefox Benutzerschnittstelle und Front-End-Software beteiligt werden kann.</dd>
+ <dt>
+ <a href="/de/Codeschnipsel" title="de/Codeschnipsel">Codeschnipsel</a></dt>
+ <dd>
+ Nützliche Code-Beispiele für weit gestreute Anwendungsgebiete.</dd>
+ <dt>
+ <a href="/de/Mozilla_Entwicklundsstrategien" title="de/Mozilla_Entwicklundsstrategien">Mozilla Entwicklungsstrategien</a></dt>
+ <dd>
+ Tipps wie man das meiste aus seiner Arbeit am Mozilla Projekt herausholen kann.</dd>
+ <dt>
+ <a href="/de/Debugging" title="de/Debugging">Debugging</a></dt>
+ <dd>
+ Hilfsreiche Tipps und Anleitungen für das Debugging von Mozilla Code.</dd>
+ <dt>
+ <a href="/de/Die_Mozilla_Plattform" title="de/Die_Mozilla_Plattform">Die Mozilla Plattform</a></dt>
+ <dd>
+ Informationen über die Arbeit mit der Mozilla Plattform.</dd>
+ <dt>
+ <a href="/de/Entwicklerhandbuch/Interface_Kompatibilität">Interface Kompatibilität</a></dt>
+ <dd>
+ Hinweise zu Änderungen an skriptbaren und binären APIs in Mozilla</dd>
+ </dl>
+ </div>
+ <div class="section">
+ <h2 id="Tools">Tools</h2>
+ <dl>
+ <dt>
+ <a class="link-https" href="https://bugzilla.mozilla.org/">Bugzilla</a></dt>
+ <dd>
+ Die <a href="/de/Bugzilla" title="de/Bugzilla">Bugzilla</a>-Datenbank wird verwendet, um Fehler in Mozilla-Produkten aufzuzeichnen.</dd>
+ <dt>
+ <a class="external" href="http://mxr.mozilla.org/">MXR</a></dt>
+ <dd>
+ Durchsuchen des Mozilla-Quellcodes im Web.</dd>
+ <dt>
+ <a class="external" href="http://bonsai.mozilla.org/cvsqueryform.cgi">Bonsai</a></dt>
+ <dd>
+ Mit dem <a href="/de/Bonsai" title="de/Bonsai">Bonsai</a> Tool lässt sich heraus finden, wer wann welche Datei verändert hat.</dd>
+ <dt>
+ <a href="/de/Mercurial" title="de/Mercurial">Mercurial</a></dt>
+ <dd>
+ Das Versions-Kontrollsystem, das Mozillas Quellcode verwaltet.</dd>
+ <dt>
+ <a class="external" href="http://tinderbox.mozilla.org/showbuilds.cgi">Tinderbox</a></dt>
+ <dd>
+ <a href="/de/Tinderbox" title="de/Tinderbox">Tinderbox</a> zeigt den Status des Trees (ob aktuell erfolgreich kompliliert werden kann oder nicht). Überprüfen Sie den Status bevor Sie Code einreichen, um sicher zu gehen, dass Sie nicht an einem arbeiten Tree arbeiten.</dd>
+ <dt>
+ <a href="/de/Crash_Reporting" title="de/Crash_Reporting">Crash tracking</a></dt>
+ <dd>
+ Informationen über die <a class="link-https" href="https://crash-reports.mozilla.com/reports">Socorro</a> und <a class="external" href="http://talkback-public.mozilla.org/search/start.jsp">Talkback</a> Crash Report Systeme.</dd>
+ <dt>
+ <a class="external" href="http://graphs.mozilla.org/">Performance Aufzeichnung</a></dt>
+ <dd>
+ Siehe Performance Informationen für Mozilla Projekte.</dd>
+ <dt>
+ <a class="external" href="http://www.mozilla.org/community/developer-forums.html">Entwicklerforen</a></dt>
+ <dd>
+ Eine Themen-spezifische Liste von Forendiskussionen, in denen Sie sich über die Entwicklung von Mozilla austauschen können.</dd>
+ </dl>
+ </div>
+</div>
+<p>{{ languages( { "en": "en/Developer_Guide", "zh-cn": "Cn/Developer_Guide", "ja": "ja/Developer_Guide" } ) }}</p>
diff --git a/files/de/mozilla/developer_guide/quelltexte/index.html b/files/de/mozilla/developer_guide/quelltexte/index.html
new file mode 100644
index 0000000000..b5cc6c79bb
--- /dev/null
+++ b/files/de/mozilla/developer_guide/quelltexte/index.html
@@ -0,0 +1,46 @@
+---
+title: Mit Mozilla Quellcode arbeiten
+slug: Mozilla/Developer_guide/Quelltexte
+translation_of: Mozilla/Developer_guide/Source_Code
+---
+<p>Die unten aufgeführten Artikel helfen Ihnen dabei mit dem Mozilla Quelltext umgehen zu können, zu lernen wie man durch den Code navigiert und wie Änderungen in Projekte einfließen können.</p>
+
+<table class="mainpage-table">
+ <tbody>
+ <tr>
+ <td colspan="2">
+ <h2 id="Dokumentation">Dokumentation</h2>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <dl>
+ <dt><a href="/de/Entwicklerhandbuch/Quelltexte/Mercurial" title="de/Entwicklerhandbuch/Quelltexte/Mercurial">Code aus der Mercurial Repository erhalten</a></dt>
+ <dd>Falls Sie vorhaben sich am Mozilla Projekt zu beteiligen, bietet es sich an den Quelltext über die Mercurial Repository zu erhalten. Lesen Sie hier wie Sie das am Besten machen.</dd>
+ <dt><a href="/de/Entwicklerhandbuch/Quelltexte/Mozilla_Quelltexte_herunterladen">Mozilla Quelltexte herunterladen</a></dt>
+ <dd>Wenn Sie den Quelltext für eine bestimmte Version eines Mozilla Produkts suchen, können Sie ein Archiv herunterladen.</dd>
+ <dt><a href="/de/Mozilla_Quelltexte_online_durchsuchen" title="de/Mozilla_Quelltexte_online_durchsuchen">Mozilla Quelltexte online durchsuchen</a></dt>
+ <dd>Lernen Sie wie man MXR, Mozillas online Code-Suchwerkzeug, bedient.  Das ist kein guter Weg um Code herunterzuladen, aber um ihn zu durchsuchen.</dd>
+ <dt><a href="/de/Mozilla_Quelltext_Verzeichnisstrukturen" title="de/Mozilla_Quelltext_Verzeichnisstrukturen">Mozilla Verzeichnisstrukturen für Quelltexte</a></dt>
+ <dd>Lernen Sie mehr über die unterschiedlichen Verzeichnisse in Mozillas Verzeichnisstrukturen und finden Sie schnell das, was Sie suchen.</dd>
+ <dt><a class="external" href="http://www.mozilla.org/contribute/hacking/first-bugs/" title="http://www.mozilla.org/contribute/hacking/first-bugs/">Anfänger Bugs</a></dt>
+ <dd>Wenn Sie neu dabei sind und an etwas arbeiten möchten, schauen Sie sich mal diese Bugs an.</dd>
+ </dl>
+ </td>
+ <td>
+ <dl>
+ <dt><a href="/de/Entwicklerhandbuch/Coding_Style" title="de/Entwicklerhandbuch/Coding_Style">Mozilla Coding Style</a></dt>
+ <dd>Dieser Code Style Guide liefert Information über das korrekte Format der Quelltexte, damit Reviewers Sie nicht direkt verspotten, wenn Sie Ihren Code einreichen.</dd>
+ <dt><a class="link-https" href="https://wiki.mozilla.org/Build:TryServer" title="https://wiki.mozilla.org/Build:TryServer">Try Servers</a></dt>
+ <dd>Mozilla Produkte werden auf mindestens drei Plattformen kompiliert. Wenn Sie nicht Zugang zu allen haben, können Sie diese Testserver nutzen, um zu überprüfen, ob Ihr Patch auf allen Plattformen funktioniert.</dd>
+ <dt><a href="/de/Einen_Patch_erstellen" title="de/Einen_Patch_erstellen">Einen Patch erstellen</a></dt>
+ <dd>Sobald Sie den Mozilla Code verändert haben und sicher sind, dass alles funktioniert, erstellen Sie einen Patch und reichen diesen zur Überprüfung ein<em>.</em></dd>
+ <dt><a class="external" href="http://www.mozilla.org/hacking/committer/" title="http://www.mozilla.org/hacking/committer/">Commit Zugang zum Quelltext erhalten</a></dt>
+ <dd>Sind Sie bereit den wenigen Committers beizutreten? Finden Sie heraus, wie Sie Check-in Zugang zum Mozilla Code erhalten.</dd>
+ <dt><a href="/de/Entwicklerhandbuch/Quelltexte/CVS" title="de/Entwicklerhandbuch/Quelltexte/CVS">Ältere Mozilla Codes über CVS erhalten</a></dt>
+ <dd>Ältere Versionen des Mozilla Quelltexts und auch Versionen von NSS und NSPR werden in einer CVS Repository aufbewahrt. Lernen Sie hier mehr darüber.</dd>
+ </dl>
+ </td>
+ </tr>
+ </tbody>
+</table>
diff --git a/files/de/mozilla/firefox/developer_edition/index.html b/files/de/mozilla/firefox/developer_edition/index.html
new file mode 100644
index 0000000000..41bacac01d
--- /dev/null
+++ b/files/de/mozilla/firefox/developer_edition/index.html
@@ -0,0 +1,57 @@
+---
+title: Developer Edition
+slug: Mozilla/Firefox/Developer_Edition
+translation_of: Mozilla/Firefox/Developer_Edition
+---
+<div>{{FirefoxSidebar}}</div><p><img alt="" src="https://mdn.mozillademos.org/files/9069/firefox-dev-ed_logo-only_1024.png" style="display: block; height: 256px; margin-left: auto; margin-right: auto; width: 256px;"></p>
+
+<p style="text-align: center;">Eine Version von Firefox, maßgeschneidert für Webentwickler.</p>
+
+<p><a href="https://www.mozilla.org/de-DE/firefox/developer/" style="width: 270px; display: block; margin-left: auto; margin-right: auto; padding: 10px; text-align: center; border-radius: 4px; background-color: #81BC2E; white-space: nowrap; color: white; text-shadow: 0px 1px 0px rgba(0, 0, 0, 0.25); box-shadow: 0px 1px 0px 0px rgba(0, 0, 0, 0.2), 0px -1px 0px 0px rgba(0, 0, 0, 0.3) inset;">Firefox Developer Edition herunterladen</a></p>
+
+<hr>
+<div class="column-container">
+<div class="column-half">
+<h3 id="Die_neuesten_Firefox-Features"><strong>Die neuesten Firefox-Features</strong></h3>
+
+<p>Firefox Developer Edition ersetzt den Aurora-Kanal im <a href="https://wiki.mozilla.org/Release_Management/Release_Process">Firefox Release-Prozess</a>. Wie bei Aurora werden Features alle sechs Wochen in die Developer Edition einfließen, nachdem sie in den Nightly-Builds stabilisiert wurden.</p>
+
+<p>Indem Sie die Developer Edition nutzen, erhalten Sie Zugriff auf Tools und Plattform-Features mindestens 12 Wochen, bevor sie den Firefox Release-Kanal erreichen.</p>
+
+<p><a href="/en-US/Firefox/Releases/35">Finden Sie heraus, was neu in der Developer Edition ist</a>.</p>
+</div>
+
+<div class="column-half">
+<h3 id="Experimentelle_Entwickler-Tools"><strong>Experimentelle Entwickler-Tools</strong></h3>
+
+<p>Wir binden experimentelle Tools ein, die noch nicht für eine allgemeine Veröffentlichung bereit sind.</p>
+
+<p>Zum Beispiel enthält die Developer Edition den <a href="/en-US/docs/Tools/Firefox_Tools_Adapter">Firefox Tools-Adapter</a>, mit dem Sie die <a href="/en-US/docs/Tools">Firefox Tools für Webentwickler</a> mit anderen Browsern verbinden können, wie Chrome auf Android und Safari auf iOS.</p>
+</div>
+</div>
+
+<div class="column-container">
+<div class="column-half">
+<h3 id="Ein_unabhängiges_Profil"><strong>Ein unabhängiges Profil</strong></h3>
+
+<p>Firefox Developer Edition benutzt ein eigenes Profil, unabhängig von anderen Firefox-Versionen auf Ihrem Gerät. Das bedeutet, dass Sie die Developer Edition leicht neben Ihrer Release- oder Beta-Version von Firefox verwenden können.</p>
+</div>
+
+<div class="column-half">
+<h3 id="Für_Webentwickler_eingestellt"><strong>Für Webentwickler eingestellt</strong></h3>
+
+<p>Wir haben die Standard-Einstellungswerte für Webentwickler zugeschnitten. Zum Beispiel sind Chrome- und Remote-Debugging standardmäßig aktiviert.</p>
+</div>
+</div>
+
+<div class="column-container">
+<div class="column-half">
+<h3 id="Ein_eigenständiges_Theme"><strong>Ein eigenständiges Theme</strong></h3>
+
+<p>Dies beinhaltet schnelleren Zugriff auf die Entwicklertools.</p>
+</div>
+
+<div class="column-half"> </div>
+</div>
+
+<p> </p>
diff --git a/files/de/mozilla/firefox/developer_edition/zurückkehren/index.html b/files/de/mozilla/firefox/developer_edition/zurückkehren/index.html
new file mode 100644
index 0000000000..7e5b838c6c
--- /dev/null
+++ b/files/de/mozilla/firefox/developer_edition/zurückkehren/index.html
@@ -0,0 +1,25 @@
+---
+title: Zurückkehren
+slug: Mozilla/Firefox/Developer_Edition/Zurückkehren
+translation_of: Mozilla/Firefox/Developer_Edition/Reverting
+---
+<div>{{FirefoxSidebar}}</div><h2 id="Vom_Developer_Edition_Theme_zurück_wechseln">Vom Developer Edition Theme zurück wechseln</h2>
+
+<p><br>
+ Wenn Sie die Developer Edition nutzen wollen, aber das 'Australis'-Aussehen von Firefox und Firefox Beta bevorzugen, können Sie auf das normale Firefox Design umschalten: Öffnen Sie dazu lediglich das "Anpassen"-Feld und klicken sie die Schaltfläche "Use Firefox Developer Edition Theme" an.</p>
+
+<p>{{EmbedYouTube("OvJwofTjsNg")}}</p>
+
+<p>Bitte beachten Sie, dass das Developer Edition Design noch nicht mit minimalistischen Designs kompatibel ist. Wenn Sie also ein minimalistisches Theme verwenden wollen, so werden Sie zum Australis-Design zurück wechseln müssen.</p>
+
+<h2 id="Zurückkehren_zu_Firefox_Aurora">Zurückkehren zu Firefox Aurora</h2>
+
+<p><br>
+ Wenn Sie alle vor-Beta Funktionen in Firefox Developer Edition nutzen wollen, aber keine der anderen Änderungen, dann können Sie zu einer Art Firefox Aurora zurückkehren. Das ist ein Prozess in zwei Schritten, es ist wichtig, dass Sie die Reihenfolge der Anweisungen befolgen:</p>
+
+<ol>
+ <li>Öffnen Sie die Einstellungen der Developer Edition und entfernen Sie den Haken bei "Allow Firefox Developer Edition and Firefox to run at the same time". Sie werden aufgefordert, den Browser neu zu starten.</li>
+ <li>Nach dem Neustart können Sie vom Developer Edition Design zurückkehren, indem Sie das "Anpassen"-Feld öffnen und die Schaltfläche "Use Firefox Developer Edition Theme" anklicken.</li>
+</ol>
+
+<p>{{EmbedYouTube("0Ofq-vlw8Qw")}}</p>
diff --git a/files/de/mozilla/firefox/headless-mode/index.html b/files/de/mozilla/firefox/headless-mode/index.html
new file mode 100644
index 0000000000..a2c3c424ee
--- /dev/null
+++ b/files/de/mozilla/firefox/headless-mode/index.html
@@ -0,0 +1,237 @@
+---
+title: Headless mode
+slug: Mozilla/Firefox/Headless-Mode
+tags:
+ - Automaisierung
+ - Firefox
+ - Flag
+ - Flagge
+ - Headless Modus
+ - Kopflos
+ - Mozilla
+ - QA
+ - Testautomatisierung
+ - Testen
+ - headless
+ - headless mode
+ - node.js
+translation_of: Mozilla/Firefox/Headless_mode
+---
+<div>{{FirefoxSidebar}}</div>
+
+<p class="summary">Der Headless-Mode ist eine sehr nützliche Weise auf dem der Firefox betrieben werden kann —  dabei funktioniert Firefox normal, nur dass die Oberfläche nicht sichtbar ist. Das erscheint nicht besonder sinnvoll, wenn man im Web surfen möchte, aber es ist sehr nützlich für automatisierte Tests. Dieser Artikel gibt dir alle Infos, die du brauchst um Firefox im Headless-Mode laufen zu lassen.</p>
+
+<h2 id="Den_Headless-Mode_verwenden">Den Headless-Mode verwenden</h2>
+
+<p>Dieser Bereich bietet eine grunsätzliche Anleitung wie man den Headless-Mode verwendet.</p>
+
+<h3 id="Grundsätzliche_Verwendung">Grundsätzliche Verwendung</h3>
+
+<p>Auf der Komandozeile kannst du Firefox im Headless-Mode starten indem du das <code>-headless</code> Flag anhängst. Zum Beispiel:</p>
+
+<pre class="brush: bash">/path/to/firefox -headless</pre>
+
+<h3 id="Screenshots_aufnehmen">Screenshots aufnehmen</h3>
+
+<p>Seit Firefox 57 ermöglicht es das <code>-screenshot</code> Flag auf Webseiten im Headless-Mode Screenshots aufzunehmen. Grundsätzlich sieht das dann so aus:</p>
+
+<pre class="brush: bash">/path/to/firefox -headless -screenshot https://developer.mozilla.org/</pre>
+
+<p>Das erzeugt einen Screenshot in voller Höhe von <code>https://developer.mozilla.com</code> in das aktuelle Verzeichnis mit dem Dateinamen <code>screenshot.png</code>, mit einer Viewport-Breite von 800px.</p>
+
+<p>Beachte, dass du <code>-headless</code>  weg lassen kannst, wenn du <code>-screenshot</code> angibst— es ist implizit enthalten.</p>
+
+<pre class="brush: bash">/path/to/firefox -screenshot https://developer.mozilla.org/</pre>
+
+<p>Um die Default-Werte, die oben angegeben sind, zu überschreiben,kannst du folgende <code>Flags/Features</code> verwenden<code>:</code></p>
+
+<ul>
+ <li><code>-screenshot name url</code> — Setze einen beliebigen Dateinamen für den Screenshot indem du zwischen dem <code>-screenshot</code> Flag und der URL diesen angibst. Beachte, dass du auch weitere web-kompatible Bildformate wie z.B. <code>.jpg</code>, <code>.bmp</code>, etc.</li>
+ <li><code>--window-size=x,y</code> — Setze eine beliebige Bildbreite und -höhe für den Screenshot.</li>
+</ul>
+
+<p>Zum Beispiel erzeugt der folgende Befehl einen Screenshot von <code>https://developer.mozilla.com </code>im aktuellen Verzeichnis mit Dateinamen <code>test.jpg</code>, mit einer Breite von 800px und einer Höhe von 1000px:</p>
+
+<pre class="brush: bash">/path/to/firefox -screenshot test.jpg https://developer.mozilla.org/ --window-size=480,1000</pre>
+
+<h3 id="Browser_support">Browser support</h3>
+
+<p>Headless Firefox works on Fx55+ on Linux, and 56+ on Windows/Mac.</p>
+
+<h2 id="Automated_testing_with_headless_mode">Automated testing with headless mode</h2>
+
+<p>The most useful way to use headless Firefox is to run automated tests with it, meaning that you can make your testing process much more efficient.</p>
+
+<h3 id="Selenium_in_Node.js">Selenium in Node.js</h3>
+
+<p>Here we'll create a <a href="http://www.seleniumhq.org/">Selenium</a> test using <a href="https://nodejs.org/">Node.js</a> and the <code><a href="https://www.npmjs.com/package/selenium-webdriver">selenium-webdriver</a></code> package. For this guide we'll assume that you already have basic familiarity with Selenium, Webdriver, and Node, and that you already have a testing environment set up. If you don't, work through our <a href="https://developer.mozilla.org/en-US/docs/Learn/Tools_and_testing/Cross_browser_testing/Your_own_automation_environment#Setting_up_Selenium_in_Node">Setting up Selenium in Node</a> guide first, then come back.</p>
+
+<p>First, of all, make sure you've got Node installed on your system, and the <code>selenium-webdriver</code> package installed, then create a new file called <code>selenium-test.js</code> and follow the steps below to populate it with test code.</p>
+
+<div class="note">
+<p><strong>Note</strong>: Alternatively, you could clone our <a href="https://github.com/mdn/headless-examples">headless-examples repo</a>; this also includes a package file so you can just use <code>npm install</code> to install necessary dependencies.</p>
+</div>
+
+<ol>
+ <li>
+ <p>Let's add some code. Inside this file, start by importing the main <code>selenium-webdriver</code> module, and the <code>firefox</code> submodule:</p>
+
+ <pre class="brush: js">var webdriver = require('selenium-webdriver'),
+ By = webdriver.By,
+ until = webdriver.until;
+
+var firefox = require('selenium-webdriver/firefox');</pre>
+ </li>
+ <li>
+ <p>Next, we will create a new <code>binary</code> object representing Firefox Nightly, and add the <code>-headless</code> argument to it so that it will be run in headless mode:</p>
+
+ <pre class="brush: js">var binary = new firefox.Binary(firefox.Channel.NIGHTLY);
+binary.addArguments("-headless");</pre>
+ </li>
+ <li>
+ <p>Now let's create a new driver instance for Firefox, and use <code>setFirefoxOptions()</code> to include an options object that specifies that we want to run the test using the binary we created above (this step will be unnecessary on Linux, and after headless mode lands in the release channel on Windows/Mac, but it is still useful if you want to test a Nightly-specific feature):</p>
+
+ <pre class="brush: js">var driver = new webdriver.Builder()
+    .forBrowser('firefox')
+    .setFirefoxOptions(new firefox.Options().setBinary(binary))
+    .build();</pre>
+ </li>
+ <li>
+ <p>Finally, add the following code, which performs a simple test on the Google search homepage:</p>
+
+ <pre class="brush: js">driver.get('https://www.google.com');
+driver.findElement(By.name('q')).sendKeys('webdriver');
+
+driver.sleep(1000).then(function() {
+ driver.findElement(By.name('q')).sendKeys(webdriver.Key.TAB);
+});
+
+driver.findElement(By.name('btnK')).click();
+
+driver.sleep(2000).then(function() {
+ driver.getTitle().then(function(title) {
+ if(title === 'webdriver - Google Search') {
+ console.log('Test passed');
+ } else {
+ console.log('Test failed');
+ }
+ });
+});
+
+driver.quit();</pre>
+ </li>
+ <li>
+ <p>Finally, run your test with following command:</p>
+
+ <pre class="brush: bash">node selenium-test</pre>
+ </li>
+</ol>
+
+<p>That's it! After a few seconds, you should see the message "Test passed" returned in the console.</p>
+
+<p><a href="https://mykzilla.org/2017/08/30/headless-firefox-in-node-js-with-selenium-webdriver/">Headless Firefox in Node.js with selenium-webdriver</a> by Myk Melez contains additional useful tips and tricks for running Node.js Selenium tests with headless mode.</p>
+
+<h3 id="Selenium_in_Java">Selenium in Java</h3>
+
+<div class="note">
+<p><strong>Note</strong>: Thanks a lot to nicholasdipiazza for writing these instructions!</p>
+</div>
+
+<p>This guide assumes that you already have Geckodriver on your machine, as explained in our <a href="https://developer.mozilla.org/en-US/docs/Learn/Tools_and_testing/Cross_browser_testing/Your_own_automation_environment#Setting_up_Selenium_in_Node">Setting up Selenium in Node</a> guide, and that you have an IDE set up that supports Gradle projects.</p>
+
+<ol>
+ <li>
+ <p>Download our <a href="https://github.com/mdn/headless-examples/blob/master/headlessfirefox-gradle.zip">headlessfirefox-gradle.zip</a> archive (<a href="https://github.com/mdn/headless-examples/tree/master/headlessfirefox-gradle">see the source here</a>), extract it, and import the headlessfirefox folder into your IDE as a gradle project.</p>
+ </li>
+ <li>
+ <p>Edit the <code>build.gradle</code> file to set selenium to a later version if needed. At the time of writing, we used 3.5.3.</p>
+
+ <pre class="brush: java">group 'com.mozilla'
+version '1.0'
+
+apply plugin: 'java'
+
+sourceCompatibility = 1.8
+
+repositories {
+ mavenCentral()
+}
+
+dependencies {
+ compile('org.seleniumhq.selenium:selenium-api:3.5.3')
+ compile('org.seleniumhq.selenium:selenium-remote-driver:3.5.3')
+ compile('org.seleniumhq.selenium:selenium-server:3.5.3')
+
+ testCompile group: 'junit', name: 'junit', version: '4.12'
+}</pre>
+ </li>
+ <li>
+ <p>Edit the <code>webdriver.gecko.driver</code> property in the HeadlessFirefoxSeleniumExample.java file to equal the path where you installed geckodriver (see line 15 below).</p>
+
+ <pre class="brush: java">package com.mozilla.example;
+
+import org.openqa.selenium.By;
+import org.openqa.selenium.WebElement;
+import org.openqa.selenium.firefox.FirefoxBinary;
+import org.openqa.selenium.firefox.FirefoxDriver;
+import org.openqa.selenium.firefox.FirefoxOptions;
+
+import java.util.concurrent.TimeUnit;
+
+public class HeadlessFirefoxSeleniumExample {
+ public static void main(String [] args) {
+ FirefoxBinary firefoxBinary = new FirefoxBinary();
+ firefoxBinary.addCommandLineOptions("--headless");
+ System.setProperty("webdriver.gecko.driver", "/opt/geckodriver");
+ FirefoxOptions firefoxOptions = new FirefoxOptions();
+ firefoxOptions.setBinary(firefoxBinary);
+ FirefoxDriver driver = new FirefoxDriver(firefoxOptions);
+ try {
+ driver.get("http://www.google.com");
+ driver.manage().timeouts().implicitlyWait(4,
+ TimeUnit.SECONDS);
+ WebElement queryBox = driver.findElement(By.name("q"));
+ queryBox.sendKeys("headless firefox");
+ WebElement searchBtn = driver.findElement(By.name("btnK"));
+ searchBtn.click();
+ WebElement iresDiv = driver.findElement(By.id("ires"));
+ iresDiv.findElements(By.tagName("a")).get(0).click();
+ System.out.println(driver.getPageSource());
+ } finally {
+ driver.quit();
+ }
+ }
+}</pre>
+ </li>
+ <li>
+ <p>Run the java class and you should see the HTML content of this page printed in your console/terminal.</p>
+ </li>
+</ol>
+
+<h3 id="Other_testing_solutions">Other testing solutions</h3>
+
+<ul>
+ <li>Slimerjs has Firefox support built in on Linux, with Mac and Windows support coming soon. See <a href="https://adriftwith.me/coding/2017/04/21/headless-slimerjs-with-firefox/">Headless SlimerJS with Firefox</a> by Brendan Dahl for more details.</li>
+ <li><a href="https://github.com/DevExpress/testcafe">TestCafe</a> (v.0.18.0 and higher) also supports testing in headless Firefox out of the box. See <a href="https://devexpress.github.io/testcafe/blog/testcafe-v0-18-0-released.html#testing-in-headless-firefox">the documentation</a> for the details.</li>
+</ul>
+
+<p>In addition, you will be able to use headless Firefox to run automated tests written in most other popular testing apps, as long as they allow you to set environment variables.</p>
+
+<h2 id="Troubleshooting_and_further_help">Troubleshooting and further help</h2>
+
+<p>If you are having trouble getting headless mode to work, then do not worry — we are here to help. This section is designed to be added to as more questions arise and answers are found.</p>
+
+<ul>
+ <li>On Linux, certain libraries are currently required on your system even though headless mode doesn't use them — because Firefox links against them. See {{bug(1372998)}} for more details and progress towards a fix.</li>
+</ul>
+
+<p>If you want to ask the engineers a question, the best place to go is the <code>#headless</code> channel on <a href="https://wiki.mozilla.org/IRC">Mozilla IRC</a>. If you are pretty sure you've found a bug, file it on <a href="https://bugzilla.mozilla.org/">Mozilla Bugzilla</a>.</p>
+
+<h2 id="See_also">See also</h2>
+
+<ul>
+ <li><a href="https://intoli.com/blog/running-selenium-with-headless-firefox/">Using Selenium with Headless Firefox (on Windows)</a> by Andre Perunicic (uses Python)</li>
+ <li><a href="https://mykzilla.org/2017/08/30/headless-firefox-in-node-js-with-selenium-webdriver/">Headless Firefox in Node.js with selenium-webdriver</a> by Myk Melez</li>
+ <li><a href="https://adriftwith.me/coding/2017/04/21/headless-slimerjs-with-firefox/">Headless SlimerJS with Firefox</a> by Brendan Dahl</li>
+ <li><a href="http://blog.rousek.name/2017/09/08/going-headless-with-firefox-since-55/">Using Selenium with Headless Firefox on Travis-CI</a> by Josef Rousek</li>
+</ul>
diff --git a/files/de/mozilla/firefox/index.html b/files/de/mozilla/firefox/index.html
new file mode 100644
index 0000000000..57b51632bf
--- /dev/null
+++ b/files/de/mozilla/firefox/index.html
@@ -0,0 +1,60 @@
+---
+title: Firefox
+slug: Mozilla/Firefox
+tags:
+ - Firefox
+ - Mozilla
+translation_of: Mozilla/Firefox
+---
+<div>{{FirefoxSidebar}}</div>
+
+<p><a class="external external-icon" href="https://www.mozilla.org/firefox/">Firefox</a> ist Mozillas beliebter Webbrowser, der für viele Betriebssysteme verfügbar ist, insbesondere Windows, OS X, Linux auf dem Desktop und mobilen Endgeräten mit Android. Durch seine umfassende Kompatibilität, den aktuellsten Web-Technologien und mächtigen Entwicklerwerkzeugen ist Firefox eine großartige Wahl für Webentwickler wie Anwender.</p>
+
+<p>Firefox ist ein Open-Source-Projekt. Der größte Teil des Quellcodes wird von unserer riesigen Gemeinschaft aus Freiwilligen hinzugefügt. Hier lernen Sie wie Sie zum Firefox-Projekt beitragen können und dazu finden Sie Links zu Informationen über die Entwicklung von Firefix-Add-ons, wie man die Entwickler-Werkzeuge benutzt und andere Aufgaben.</p>
+
+<div class="summary">
+<p>Lernen Sie, wie man Add-ons für <a class="external external-icon" href="https://www.mozilla.org/firefox/">Firefox</a> erstellt, wie man Firefox selbst entwickelt und wie die Kernelemente von Firefox und seine Unterprojekte funktionieren.</p>
+</div>
+
+<ul class="card-grid">
+ <li><span>Details zu Veröffentlichungen für Entwickler</span>
+
+ <p><a href="/de/Firefox/Releases">Informationen zu </a><a href="/de/Firefox/Releases">Veröffentlichungen für Entwickler</a>; lernen Sie welche Fähigkeiten sowohl für Websites als auch für Add-Ons mit jeder weiteren Firefoxversion entstehen.</p>
+ </li>
+ <li><span>Projektdokumentation</span>
+ <p>Die neuesten informationen zu den <a href="/de/docs/Mozilla">internen Abläufen bei Firefox</a> und zum Aufbau des Systems, sodass Sie einen Zugang zum Code bekommen.</p>
+ </li>
+ <li><span>Entwickleranleitung</span>
+ <p>Unsere <a href="/de/docs/Developer_Guide">Anleitung für Entwickler</a> liefert Antworten, wie man an den Code von Firefox kommt, wie man ihn kompiliert, wie man sich zurechtfindet und wie man zum Projekt beitragen kann.</p>
+ </li>
+</ul>
+
+<h2 id="Firefox_Entwicklungskanäle">Firefox Entwicklungskanäle</h2>
+
+<p>Firefox ist verfügbar in vier <strong>Kanälen</strong>.</p>
+
+<h3 id="Firefox_Nightly">Firefox Nightly</h3>
+
+<p>Jede Nacht arbeiten wir von der <a href="/de/docs/mozilla-central">Mozilla Zentrale</a> an Firefox mit dem neuesten Code. Diese Builds sind für alle Firefox Entwickler und für diejenigen die die neuesten innovativen Features ausprobieren wollen, während sie noch entwickelt werden.</p>
+
+<p><a class="external external-icon" href="https://www.mozilla.org/de/firefox/developer/" style="width: 250px; display: block; margin-left: auto; margin-right: auto; padding: 10px; text-align: center; border-radius: 4px; background-color: #81BC2E; white-space: nowrap; color: white; text-shadow: 0px 1px 0px rgba(0, 0, 0, 0.25); box-shadow: 0px 1px 0px 0px rgba(0, 0, 0, 0.2), 0px -1px 0px 0px rgba(0, 0, 0, 0.3) inset;">Firefox Nightly herunterladen</a></p>
+
+<h3 id="Firefox_Developer_Edition">Firefox Developer Edition</h3>
+
+<p>Diese Version von Firefox ist speziell für Entwickler gedacht. Alle sechs Wochen werden die stabilsten Features von Firefox Nightly in der Firefox Developer Edition veröffentlicht. Wir veröffentlichen auch ein paar Features die nur für Entwickler in diesem Kanal verfügbar sein werden.</p>
+
+<p><a href="/de/Firefox/Developer_Edition">Mehr zur Developer Edition von Firefox erfahren</a>.</p>
+
+<p><a class="external external-icon" href="https://www.mozilla.org/firefox/developer/" style="width: 250px; display: block; margin-left: auto; margin-right: auto; padding: 10px; text-align: center; border-radius: 4px; background-color: #81BC2E; white-space: nowrap; color: white; text-shadow: 0px 1px 0px rgba(0, 0, 0, 0.25); box-shadow: 0px 1px 0px 0px rgba(0, 0, 0, 0.2), 0px -1px 0px 0px rgba(0, 0, 0, 0.3) inset;">Firefox für Entwickler herunterladen</a></p>
+
+<h3 id="Firefox_Beta">Firefox Beta</h3>
+
+<p>Nach sechs Wochen in der Firefox Developer Edition, werden die stabilsten Features in die neue Firefox Beta-Version übertragen. Firefox Beta ist für Firefoxenthusiasten, die gerne die neusten Features von der nächsten Firefox-Version vorab testen möchten.</p>
+
+<p><a class="external external-icon" href="https://www.mozilla.org/firefox/channel/#beta" style="width: 250px; display: block; margin-left: auto; margin-right: auto; padding: 10px; text-align: center; border-radius: 4px; background-color: #81BC2E; white-space: nowrap; color: white; text-shadow: 0px 1px 0px rgba(0, 0, 0, 0.25); box-shadow: 0px 1px 0px 0px rgba(0, 0, 0, 0.2), 0px -1px 0px 0px rgba(0, 0, 0, 0.3) inset;">Firefox Beta herunterladen</a></p>
+
+<h3 id="Firefox">Firefox</h3>
+
+<p>Nachdem die Features der Firefox Beta-Version nocheinmal sechs Wochen lange stabilisiert wurden, wird eine neue Firefox-Version für die Hunderte von Millionen Nutzer in Form einer neuen Version veröffentlicht.</p>
+
+<p><a class="external external-icon" href="https://www.mozilla.org/firefox/channel/#firefox" style="width: 250px; display: block; margin-left: auto; margin-right: auto; padding: 10px; text-align: center; border-radius: 4px; background-color: #81BC2E; white-space: nowrap; color: white; text-shadow: 0px 1px 0px rgba(0, 0, 0, 0.25); box-shadow: 0px 1px 0px 0px rgba(0, 0, 0, 0.2), 0px -1px 0px 0px rgba(0, 0, 0, 0.3) inset;">Firefox herunterladen</a></p>
diff --git a/files/de/mozilla/firefox/multiprocess_firefox/index.html b/files/de/mozilla/firefox/multiprocess_firefox/index.html
new file mode 100644
index 0000000000..b21a7228c1
--- /dev/null
+++ b/files/de/mozilla/firefox/multiprocess_firefox/index.html
@@ -0,0 +1,80 @@
+---
+title: Multiprozess-Firefox
+slug: Mozilla/Firefox/Multiprocess_Firefox
+tags:
+ - NeedsTranslation
+ - TopicStub
+translation_of: Mozilla/Firefox/Multiprocess_Firefox
+---
+<div>{{FirefoxSidebar}}</div><p>In den aktuellen Desktop-Versionen des Firefox läuft der gesamte Browser in einem einzigen Betriebssystem-Prozess. Insbesondere läuft der JavaScript-Code, welcher die Browser-Benutzeroberfläche (auch "chrome code" bekannt) ausführt, im selben Prozess wie der Code von Webseiten (auch  "Content" oder "Web Content" genannt).</p>
+
+<p>Zukünftige Versionen von Firefox werden die Browser-Benutzeroberfläche in einem vom Web Content separaten Prozess ausführen. In der ersten Iteration dieser Architektur werden alle Browser-Tabs im selben Prozess laufen, getrennt vom Prozess, in dem die Browser-Benutzeroberfläche ausgeführt wird. In zukünftigen Iterationen wollen wir mehr als einen Prozess verwenden, um die Inhalte von Webseiten darzustellen. Das Projekt, welches den Multiprozess-Firefox abliefern soll, nennt sich Electrolysis (manchmal abgekürzt als e10s).</p>
+
+<p>Normale Webseiten bleiben vom Multiprozess-Firefox unberührt. Die Menschen, die an Firefox selbst arbeiten sowie die Add-On-Entwickler werden von der Änderung nur beeinflusst sein, wenn ihr Code auf der Fähigkeit basiert, direkt auf Web Content zuzugreifen.</p>
+
+<p>Anstatt direkt auf Content zuzugreifen, muss das chrome JavaScript den <a href="/en-US/Firefox/Multiprocess_Firefox/The_message_manager">message manager</a> nutzen, um auf Content zuzugreifen. Um den Übergang zu erleichtern, haben wir <a href="/en-US/Firefox/Multiprocess_Firefox/Cross_Process_Object_Wrappers">Cross Process Object Wrappers</a> implementiert und einige <a href="/en-US/Firefox/Multiprocess_Firefox/Compatibility_shims">Kompabilitäts-Shims für Add-On-Entwickler</a> zur Verfügung gestellt. Falls du ein Add-On-Entwickler bist und dich fragst, ob du davon betroffen bist, siehe auch den <a href="/en-US/Add-ons/Working_with_multiprocess_Firefox">Guide zur Arbeit mit dem Multiprozess-Firefox</a>.</p>
+
+<p>Multiprozess-Firefox ist momentan in der <a class="external external-icon" href="https://www.mozilla.org/firefox/developer/">Developer Edition</a> standardmäßig aktiviert.</p>
+
+<hr>
+<div class="column-container">
+<div class="column-half">
+<dl>
+ <dt><a href="/en-US/Firefox/Multiprocess_Firefox/Technical_overview">Technische Übersicht</a></dt>
+ <dd>Ein sehr abstrakter Überbllick über die Implementierung des Multiprozess-Firefox.</dd>
+ <dt><a href="https://developer.mozilla.org/en-US/Firefox/Multiprocess_Firefox/Web_content_compatibility">Web Content Kompatibilitätsanleitung</a></dt>
+ <dd>Leitlinien und details zu potentiellen Web-Seiten-Kompatibilitätsproblemen, die durch den Übergang entstehen könnten. Tip: Es gibt nicht sehr viele!</dd>
+ <dt><a href="/en-US/Firefox/Multiprocess_Firefox/Glossary">Glossar</a></dt>
+ <dd>Ein Nachschlagewerk für den Jargon, der in Multiprozess-Firefox benutzt wird.</dd>
+ <dt><a href="https://developer.mozilla.org/Firefox/Multiprocess_Firefox/Message_Manager">Message manager</a></dt>
+ <dd>Vollständiger Guide zu den Objekten, die für die Kommunikation zwischen Chrome (Benutzeroberfläche) und Content (Webseiten Code) benutzt werden.</dd>
+ <dt><a href="https://developer.mozilla.org/en-US/Mozilla/Add-ons/SDK/Guides/Multiprocess_Firefox_and_the_SDK">SDK basierte Add-ons</a></dt>
+ <dd>Wie Add-ons, die mit dem Add-on SDK entwickelt wurden, migriert werden können.</dd>
+ <dt><a href="https://developer.mozilla.org/Firefox/Multiprocess_Firefox/Which_URIs_load_where">Welche URIs laden wo</a></dt>
+ <dd>Eine schnelle Einführung darüber, welche URIs (chrome:, about:, file:, resource:), in welchem prozess laden.</dd>
+</dl>
+</div>
+
+<div class="column-half">
+<dl>
+ <dt><a href="/en-US/Firefox/Multiprocess_Firefox/Motivation">Motivation</a></dt>
+ <dd>Die Gründe, wieso wir den Multiprozess-Firefox implementieren: Performanz, Sicherheit und Stabilität.</dd>
+ <dt><a href="https://developer.mozilla.org/Mozilla/Add-ons/Working_with_multiprocess_Firefox">Add-on migrations Anleitung</a></dt>
+ <dd>Wenn du ein Add-on-Entwickler bist, finde heraus, ob du betroffen bist und wie du deinen Code aktuallisieren kannst.</dd>
+ <dt><a href="https://developer.mozilla.org/Firefox/Multiprocess_Firefox/Cross_Process_Object_Wrappers">Cross Process Object Wrappers</a></dt>
+ <dd>Cross Process Object Wrappers sind eine Migrationshilfe, die Chrome Code synchronen zugriff auf Content erlaubt.</dd>
+ <dt><a href="https://developer.mozilla.org/Firefox/Multiprocess_Firefox/Debugging_frame_scripts">Debugging von Content-Prozessen</a></dt>
+ <dd>Wie Code, der im Content-Prozess läuft (einschließlich Frame- und Prozessskripte), debugt werden kann.</dd>
+ <dt><a href="https://developer.mozilla.org/docs/Mozilla/Firefox/Multiprocess_Firefox/Tab_selection_in_multiprocess_Firefox">Tab auswahl in Multiprozess-Firefox</a></dt>
+ <dd>Wie Tab-Wechsel funktioniert in Multiprozess-Firefox.</dd>
+</dl>
+</div>
+</div>
+
+<hr>
+<div class="column-container">
+<div class="column-half">
+<dl>
+ <dt><a href="https://developer.mozilla.org/Firefox/Multiprocess_Firefox/Limitations_of_chrome_scripts">Einschränkungen von Chrome-Skripten</a></dt>
+ <dd>Praktiken, die in Chrome-Code nicht mehr funktionieren und wie man dies behebt.</dd>
+</dl>
+</div>
+
+<div class="column-half">
+<dl>
+ <dt><a href="https://developer.mozilla.org/Firefox/Multiprocess_Firefox/Limitations_of_frame_scripts">Einschränkungen von Frame-Skripten</a></dt>
+ <dd>Praktiken, die innerhalb von Frame-Skripten nicht funktionieren werden und was stattdessen zutun ist.</dd>
+</dl>
+</div>
+</div>
+
+<hr>
+<h2 id="Kontaktiere_uns">Kontaktiere uns</h2>
+
+<p>Finde mehr über das Projekt heraus, mach mit oder frag uns etwas.</p>
+
+<ul>
+ <li><strong>Electrolysis Projektseite</strong>: <a href="https://wiki.mozilla.org/Electrolysis">https://wiki.mozilla.org/Electrolysis</a></li>
+ <li><strong>IRC</strong>: #e10s auf <a href="https://wiki.mozilla.org/IRC">irc.mozilla.org</a></li>
+ <li><strong>Mailing-List</strong>: <a href="https://groups.google.com/forum/#!forum/mozilla.dev.tech.electrolysis">dev.tech.electrolysis</a></li>
+</ul>
diff --git a/files/de/mozilla/firefox/multiprocess_firefox/technical_overview/index.html b/files/de/mozilla/firefox/multiprocess_firefox/technical_overview/index.html
new file mode 100644
index 0000000000..f0de7c5457
--- /dev/null
+++ b/files/de/mozilla/firefox/multiprocess_firefox/technical_overview/index.html
@@ -0,0 +1,164 @@
+---
+title: Technical overview
+slug: Mozilla/Firefox/Multiprocess_Firefox/Technical_overview
+translation_of: Mozilla/Firefox/Multiprocess_Firefox/Technical_overview
+---
+<div>{{FirefoxSidebar}}</div><div class="note">
+<p>Diese Seite ist ein bearbeiteter Auszug aus Bill McCloskey's Blogbeitrag Multiprozess Firefox:(engl) <a class="external external-icon" href="http://billmccloskey.wordpress.com/2013/12/05/multiprocess-firefox/">http://billmccloskey.wordpress.com/2013/12/05/multiprocess-firefox/</a></p>
+</div>
+
+<p><span id="result_box" lang="de"><span class="hps">Auf einer sehr hohen</span> <span class="hps">Ebene arbeitet</span> <span class="hps">Multiprozess</span> <span class="hps">Firefox</span> <span class="hps">wie folgt.</span> <span class="hps">Der</span> <span class="alt-edited hps">Prozess, der</span> <span class="hps">beginnt, wenn</span> <span class="hps">Firefox</span> <span class="hps">startet</span><span class="alt-edited"> wird </span><span class="alt-edited hps">übergeordneter Prozess</span><span> genannt.</span> <span class="hps">Zunächst</span> <span class="hps">arbeitet</span> <span class="hps">dieses Verfahren</span> <span class="hps">ähnlich wie</span> <span class="alt-edited hps">Einzelprozess.</span> <span class="alt-edited hps">Es</span> <span class="alt-edited hps">wird ein Firefox Fenster geöffnet</span><span class="alt-edited">, das</span> <span class="hps">alle wichtigen</span> <span class="hps">Elemente der Benutzeroberfläche für</span> <span class="hps">Firefox</span> <span class="hps">enthält</span> (</span> <span id="result_box" lang="de"><span class="hps">browser.xul</span></span><span lang="de">)<span class="alt-edited hps">.</span> <span class="hps">Firefox</span> <span class="hps">hat eine flexibles</span> <span class="hps">GUI</span>-<span class="hps">Toolkit namens</span> <span class="hps">XUL</span><span>, das </span><span class="hps">GUI-Elemente</span> <span class="hps">deklarativ</span> <span class="hps">beschreibt</span><span>, ähnlich wie bei</span> <span class="hps">Web-Content</span><span>.</span> <span class="hps">Genau wie</span> <span class="hps">Web-Inhalte</span><span>, hat das</span> <span class="hps">Firefox</span><span>-UI</span> <span class="hps">ein Fenster</span><span>-Objekt, das</span> <span class="hps">eine Dokumenteigenschaft</span> <span class="hps">hat</span><span>,</span> <span class="hps">und dieses Dokument</span> <span class="hps">enthält alle</span> <span class="hps">XML-Elemente</span> <span class="hps">aus</span> der <span class="hps">browser.xul</span><span>.</span> <span class="hps">Alle</span> <span class="hps">Firefox</span> <span class="hps">Menüs, Symbolleisten</span><span>, Seitenleisten</span> <span class="hps">und</span> <span class="hps">Tabs sind</span> <span class="hps">XML-Elemente</span> <span class="hps">in diesem Dokument.</span> <span class="hps">Jedes Register</span> <span class="hps">enthält ein</span> <span class="hps">&lt;browser</span><span>&gt; -Element</span> um<span class="hps"> Web-Inhalte</span> <span class="hps">anzuzeigen.</span><br>
+ <br>
+ <span class="hps">Die erste Stelle</span><span class="hps">, an der</span> <span class="hps">Multiprozess</span> <span class="hps">Firefox</span> <span class="alt-edited hps">von</span> <span class="atn hps">Single-</span><span class="alt-edited">Prozess</span> <span class="hps">Firefox</span> <span class="alt-edited hps">abweicht ist, dass jedes</span> <span class="hps">&lt;browser</span><span>&gt;</span> <span class="alt-edited hps">Element ein</span> <span class="alt-edited hps">remote</span> <span class="hps">= "true"</span> <span class="alt-edited hps">-Attribut besitzt.</span> <span class="alt-edited hps">Wenn ein solches</span> <span class="hps">Browser</span> <span class="hps">Element</span> <span class="hps">in das Dokument eingefügt</span> <span class="alt-edited hps">wird, wird ein</span> <span class="alt-edited hps">neuer Inhaltsprozess</span> <span class="hps">gestartet</span><span>.</span> <span class="hps">Dieser Prozess wird als</span> <span class="alt-edited hps">ein untergeordneter Prozess bezeichnet</span><span>.</span> <span class="hps">Ein</span> <span class="hps">IPC-Kanal</span> <span class="alt-edited hps">erstellt, der die</span> <span class="atn hps">Eltern-Kind-</span><span class="alt-edited">Prozesse</span> <span class="hps">verknüpft</span><span>.</span> <span class="hps">Anfangs zeigt</span> <span class="hps">das Kind</span> <span class="hps">about: blank</span><span>, aber die</span> <span class="hps">Eltern können</span> <span class="hps">dem Kind einen</span> <span class="hps">Befehl</span> <span class="hps">senden, um</span> <span class="hps">an anderer Stelle</span> <span class="hps">zu navigieren.</span></span></p>
+
+<h2 id="Zeichnen"><span class="short_text" id="result_box" lang="de"><span class="alt-edited hps">Zeichnen</span></span></h2>
+
+<p>Somehow, displayed web content needs to get from the child process to the parent and then to the screen. Multiprocess Firefox depends on a new Firefox feature called <a href="http://benoitgirard.wordpress.com/2012/05/15/off-main-thread-compositing-omtc-and-why-it-matters/"><em>off main thread compositing</em></a> (OMTC). In brief, each Firefox window is broken into a series of <em>layers</em>, somewhat similar to layers in Photoshop. Each time Firefox draws, these layers are submitted to a compositor thread that clips and translates the layers and combines them together into a single image that is then drawn.</p>
+
+<p>Layers are structured as a tree. The root layer of the tree is responsible for the entire Firefox window. This layer contains other layers, some of which are responsible for drawing the menus and tabs. One subtree displays all the web content. Web content itself may be broken into multiple layers, but they’re all rooted at a single “content” layer.</p>
+
+<p>In multiprocess Firefox, the content layer subtree is actually a shim. Most of the time, it contains a placeholder node that simply keeps a reference to the IPC link with the child process. The content process retains the actual layer tree for web content. It builds and draws to this layer tree. When it’s done, it sends the structure of its layer tree to the parent process via IPC. Backing buffers are shared with the parent either through shared memory or GPU memory. References to this memory are sent as part of the layer tree. When the parent receives the layer tree, it removes its placeholder content node and replaces it with the actual tree from content. Then it composites and draws as normal. When it’s done, it puts the placeholder back.</p>
+
+<p>The basic architecture of how OMTC works with multiple processes has existed for some time, since it is needed for Firefox OS. However, Matt Woodrow and David Anderson have done a lot of work to get everything working properly on Windows, Mac, and Linux. One of the big challenges for multiprocess Firefox will be getting OMTC enabled on all platforms. Right now, only Macs use it by default.</p>
+
+<h2 id="User_input"><strong id="input">User input</strong></h2>
+
+<p>Events in Firefox work the same way as they do on the web. Namely, there is a DOM tree for the entire window, and events are threaded through this tree in capture and bubbling phases. Imagine that the user clicks on a button on a web page. In single-process Firefox, the root DOM node of the Firefox window gets the first chance to process the event. Then, nodes lower down in the DOM tree get a chance. The event handling proceeds down through to the XUL <code>&lt;browser&gt;</code> element. At this point, nodes in the web page’s DOM tree are given a chance to handle the event, all the way down to the button. The bubble phase follows, running in the opposite order, all the way back up to the root node of the Firefox window.</p>
+
+<p>With multiple processes, event handling works the same way until the <code>&lt;browser&gt;</code> element is hit. At that point, if the event hasn’t been handled yet, it gets sent to the child process by IPC, where handling starts at the root of the content DOM tree. The parent process then waits to run its bubbling phase until the content process has finished handling the event.</p>
+
+<h2 id="Inter-process_communication"><strong id="ipc">Inter-process communication</strong></h2>
+
+<p>All IPC happens using the Chromium IPC libraries. Each child process has its own separate IPC link with the parent. Children cannot communicate directly with each other. To prevent deadlocks and to ensure responsiveness, the parent process is not allowed to sit around waiting for messages from the child. However, the child is allowed to block on messages from the parent.</p>
+
+<p>Rather than directly sending packets of data over IPC as one might expect, we use code generation to make the process much nicer. The IPC protocol is defined in <a href="https://wiki.mozilla.org/IPDL">IPDL</a>, which sort of stands for “inter-* protocol definition language”. A typical IPDL file is <code><a href="http://mxr.mozilla.org/mozilla-central/source/netwerk/ipc/PNecko.ipdl">PNecko.ipdl</a></code>. It defines a set messages and their parameters. Parameters are serialized and included in the message. To send a message <code>M</code>, C++ code just needs to call the method <code>SendM</code>. To receive the message, it implements the method <code>RecvM</code>.</p>
+
+<p>IPDL is used in all the low-level C++ parts of Gecko where IPC is required. In many cases, IPC is just used to forward actions from the child to the parent. This is a common pattern in Gecko:</p>
+
+<pre class="brush: cpp">void AddHistoryEntry(param) {
+ if (XRE_GetProcessType() == GeckoProcessType_Content) {
+ // If we're in the child, ask the parent to do this for us.
+ SendAddHistoryEntry(param);
+ return;
+ }
+
+ // Actually add the history entry...
+}
+
+bool RecvAddHistoryEntry(param) {
+ // Got a message from the child. Do the work for it.
+ AddHistoryEntry(param);
+ return true;
+}
+</pre>
+
+<p>When <code>AddHistoryEntry</code> is called in the child, we detect that we’re inside the child process and send an IPC message to the parent. When the parent receives that message, it calls <code>AddHistoryEntry</code> on its side.</p>
+
+<p>For a more realistic illustration, consider the Places database, which stores visited URLs for populating the awesome bar. Whenever the user visits a URL in the content process, we call <a href="http://mxr.mozilla.org/mozilla-central/source/toolkit/components/places/History.cpp?rev=8b9687f6c602#2326">this code</a>. Notice the content process check followed by the <code>SendVisitURI</code> call and an immediate return. The message is received <a href="http://mxr.mozilla.org/mozilla-central/source/dom/ipc/ContentParent.cpp?rev=fecda5f4a0df#2666">here</a>; this code just calls <code>VisitURI</code> in the parent.</p>
+
+<p>The code for IndexedDB, the places database, and HTTP connections all runs in the parent process, and they all use roughly the same proxying mechanism in the child.</p>
+
+<h2 id="Frame_scripts"><strong id="contentscripts">Frame scripts</strong></h2>
+
+<p>IPDL takes care of passing messages in C++, but much of Firefox is actually written in JavaScript. Instead of using IPDL directly, JavaScript code relies on <a href="/en-US/Firefox/Multiprocess_Firefox/The_message_manager">the message manager</a> to communicate between processes. To use the message manager in JS, you need to get hold of a message manager object. There is a global message manager, message managers for each Firefox window, and message managers for each <code>&lt;browser&gt;</code> element. A message manager can be used to load JS code into the child process and to exchange messages with it.</p>
+
+<p>As a simple example, imagine that we want to be informed every time a <code>load</code> event triggers in web content. We’re not interested in any particular browser or window, so we use the global message manager. The basic process is as follows:</p>
+
+<pre class="brush: js">// Get the global message manager.
+let mm = Cc["@<span class="skimlinks-unlinked">mozilla.org/globalmessagemanager;1</span>"].
+ getService(Ci.nsIMessageListenerManager);
+
+// Wait for load event.
+mm.addMessageListener("GotLoadEvent", function (msg) {
+ dump("Received load event: " + <span class="skimlinks-unlinked">msg.data.url</span> + "\n");
+});
+
+// Load code into the child process to listen for the event.
+mm.loadFrameScript("chrome://content/<span class="skimlinks-unlinked">content-script.js</span>", true);
+</pre>
+
+<p>For this to work, we also need to have a file <code>content-script.js</code>:</p>
+
+<pre class="brush: js">// Listen for the load event.
+addEventListener("load", function (e) {
+ // Inform the parent process.
+ let docURL = content.document.documentURI;
+ sendAsyncMessage("GotLoadEvent", {url: docURL});
+}, false);
+</pre>
+
+<p>This file is called a <em>frame script</em>. When the <code>loadFrameScript</code> function call runs, the code for the script is run once for each <code>&lt;browser&gt;</code> element. This includes both remote browsers and regular ones. If we had used a per-window message manager, the code would only be run for the browser elements in that window. Any time a new browser element is added, the script is run automatically (this is the purpose of the <code>true</code> parameter to <code>loadFrameScript</code>). Since the script is run once per browser, it can access the browser’s window object and docshell via the <code>content</code> and <code>docShell</code> globals.</p>
+
+<p>The great thing about frame scripts is that they work in both single-process and multiprocess Firefox. To learn more about the message manager, see the <a href="/en-US/Firefox/Multiprocess_Firefox/The_message_manager">message manager guide</a>.</p>
+
+<h2 id="Cross-process_APIs"><strong id="shims">Cross-process APIs</strong></h2>
+
+<p>There are a lot of APIs in Firefox that cross between the parent and child processes. An example is the <code>webNavigation</code> property of XUL <code>&lt;browser&gt;</code> elements. The <code>webNavigation</code> property is an object that provides methods like <code>loadURI</code>, <code>goBack</code>, and <code>goForward</code>. These methods are called in the parent process, but the actions need to happen in the child. First I’ll cover how these methods work in single-process Firefox, and then I’ll describe how we adapted them for multiple processes.</p>
+
+<p>The <code>webNavigation</code> property is defined using the XML Binding Language (XBL). XBL is a declarative language for customizing how XML elements work. Its syntax is a combination of XML and JavaScript. Firefox uses XBL extensively to customize XUL elements like <code>&lt;browser&gt;</code> and <code>&lt;tabbrowser&gt;</code>. The <code>&lt;browser&gt;</code> customizations reside in <code><a href="http://mxr.mozilla.org/mozilla-central/source/toolkit/content/widgets/browser.xml?rev=754cf7fc84cd">browser.xml</a></code>. <a href="http://mxr.mozilla.org/mozilla-central/source/toolkit/content/widgets/browser.xml?rev=754cf7fc84cd#262">Here</a> is how <code>browser.webNavigation</code> is defined:</p>
+
+<pre class="brush: xml">&lt;field name="_webNavigation"&gt;null&lt;/field&gt;
+
+&lt;property name="webNavigation" readonly="true"&gt;
+ &lt;getter&gt;
+ &lt;![CDATA[
+ if (!this._webNavigation)
+ this._webNavigation = this.docShell.QueryInterface(Components.interfaces.nsIWebNavigation);
+ return this._webNavigation;
+ ]]&gt;
+ &lt;/getter&gt;
+&lt;/property&gt;
+</pre>
+
+<p>This code is invoked whenever JavaScript code in Firefox accesses <code>browser.webNavigation</code>, where <code>browser</code> is some <code>&lt;browser&gt;</code> element. It checks if the result has already been cached in the <code>browser._webNavigation</code> field. If it hasn’t been cached, then it fetches the navigation object based off the browser’s <em>docshell</em>. The docshell is a Firefox-specific object that encapsulates a lot of functionality for loading new pages, navigating back and forth, and saving page history. In multiprocess Firefox, the docshell lives in the child process. Since the <code>webNavigation</code> accessor runs in the parent process, <code>this.docShell</code> above will just return null. As a consequence, this code will fail completely.</p>
+
+<p>One way to fix this problem would be to create a fake docshell in C++ that could be returned. It would operate by sending IPDL messages to the real docshell in the child to get work done. We may eventually take this route in the future. We decided to do the message passing in JavaScript instead, since it’s easier and faster to prototype things there. Rather than change every docshell-using accessor to test if we’re using multiprocess browsing, we decided to create a new XBL binding that applies only to remote <code>&lt;browser&gt;</code> elements. It is called <a href="http://mxr.mozilla.org/mozilla-central/source/toolkit/content/widgets/remote-browser.xml?rev=9583bd3099ae"><code>remote-browser.xml</code></a>, and it extends the existing <code>browser.xml</code> binding.</p>
+
+<p>The <code>remote-browser.xml</code> binding returns a JavaScript <em>shim object</em> whenever anyone uses <code>browser.webNavigation</code> or other similar objects. The shim object is implemented <a href="http://mxr.mozilla.org/mozilla-central/source/toolkit/modules/RemoteWebNavigation.jsm">in its own JavaScript module</a>. It uses the message manager to send messages like <code>"WebNavigation:LoadURI"</code> to <a href="http://mxr.mozilla.org/mozilla-central/source/toolkit/content/browser-child.js?rev=9583bd3099ae#107">a content script loaded by <code>remote-browser.xml</code></a>. The content script performs the actual action.</p>
+
+<p>The shims we provide emulate their real counterparts imperfectly. They offer enough functionality to make Firefox work, but add-ons that use them may find them insufficient. I’ll discuss strategies for making add-ons work in more detail later.</p>
+
+<h2 id="Cross-process_object_wrappers"><strong id="cpows">Cross-process object wrappers</strong></h2>
+
+<p>The message manager API does not allow the parent process to call <code>sendSyncMessage</code>; that is, the parent is not allowed to wait for a response from the child. It’s detrimental for the parent to wait on the child, since we don’t want the browser UI to be unresponsive because of slow content. However, converting Firefox code to be asynchronous (i.e., to use <code>sendAsyncMessage</code> instead) can sometimes be onerous. As an expedient, we’ve introduced a new primitive that allows code in the parent process to access objects in the child process synchronously.</p>
+
+<p>These objects are called cross-process object wrappers, frequently abbreviated to CPOWs. They’re created using the message manager. Consider this example content script:</p>
+
+<pre class="brush: js">addEventListener("load", function (e) {
+ let doc = content.document;
+ sendAsyncMessage("GotLoadEvent", <strong>{}, {document: doc}</strong>);
+}, false);
+</pre>
+
+<p>In this code, we want to be able to send a reference to the document to the parent process. We can’t use the second parameter to <code>sendAsyncMessage</code> to do this: that argument is converted to JSON before it is sent up. The optional third parameter allows us to send object references. Each property of this argument becomes accessible in the parent process as a CPOW. Here’s what the parent code might look like:</p>
+
+<pre class="brush: js">let mm = Cc["@<span class="skimlinks-unlinked">mozilla.org/globalmessagemanager;1</span>"].
+ getService(Ci.nsIMessageListenerManager);
+
+mm.addMessageListener("GotLoadEvent", function (msg) {
+ let uri = <strong>msg.objects.document.documentURI</strong>;
+ dump("Received load event: " + uri + "\n");
+});
+mm.loadFrameScript("chrome://content/<span class="skimlinks-unlinked">content-script.js</span>", true);
+</pre>
+
+<p>It’s important to realize that we’re send object <em>references</em>. The <code>msg.objects.document</code> object is only a wrapper. The access to its <code>documentURI</code> property sends a synchronous message down to the child asking for the value. The dump statement only happens after a reply has come back from the child.</p>
+
+<p>Because every property access sends a message, CPOWs can be slow to use. There is no caching, so 1,000 accesses to the same property will send 1,000 messages.</p>
+
+<p>Another problem with CPOWs is that they violate some assumptions people might have about message ordering. Consider this code:</p>
+
+<pre class="brush: js">mm.addMessageListener("GotLoadEvent", function (msg) {
+ mm.sendAsyncMessage("ChangeDocumentURI", {newURI: "<span class="skimlinks-unlinked">hello.com</span>"});
+ let uri = <strong>msg.objects.document.documentURI</strong>;
+ dump("Received load event: " + uri + "\n");
+});
+</pre>
+
+<p>This code sends a message asking the child to change the current document URI. Then it accesses the current document URI via a CPOW. You might expect the value of <code>uri</code> to come back as <code>"hello.com"</code>. But it might not. In order to avoid deadlocks, CPOW messages can bypass normal messages and be processed first. It’s possible that the request for the <code>documentURI</code> property will be processed before the <code>"ChangeDocumentURI"</code> message, in which case <code>uri</code> will have some other value.</p>
+
+<p>For this reason, it’s best not to mix CPOWs with normal message manager messages. It’s also a bad idea to use CPOWs for anything security-related, since you may not get results that are consistent with surrounding code that might use the message manager.</p>
+
+<p>Despite these problems, we’ve found CPOWs to be useful for converting certain parts of Firefox to be multiprocess-compatible. It’s best to use them in cases where users are less likely to notice poor responsiveness. As an example, we use CPOWs to implement the context menu that pops up when users right-click on content elements. Whether this code is asynchronous or synchronous, the menu cannot be displayed until content has responded with data about the element that has been clicked. The user is unlikely to notice if, for example, tab animations don’t run while waiting for the menu to pop up. Their only concern is for the menu to come up as quickly as possible, which is entirely gated on the response time of the content process. For this reason, we chose to use CPOWs, since they’re easier than converting the code to be asynchronous.</p>
+
+<p>It’s possible that CPOWs will be phased out in the future. Asynchronous messaging using the message manager gives a user experience that is at least as good as, and often strictly better than, CPOWs. We strongly recommend that people use the message manager over CPOWs when possible. Nevertheless, CPOWs are sometimes useful.</p>
diff --git a/files/de/mozilla/firefox/multiprocess_firefox/web_content_compatibility/index.html b/files/de/mozilla/firefox/multiprocess_firefox/web_content_compatibility/index.html
new file mode 100644
index 0000000000..1a25906f9e
--- /dev/null
+++ b/files/de/mozilla/firefox/multiprocess_firefox/web_content_compatibility/index.html
@@ -0,0 +1,32 @@
+---
+title: Web content compatibility
+slug: Mozilla/Firefox/Multiprocess_Firefox/Web_content_compatibility
+tags:
+ - Electrolysis
+ - Firefox
+ - Guide
+ - Multiprocess
+ - e10s
+translation_of: Mozilla/Firefox/Multiprocess_Firefox/Web_content_compatibility
+---
+<div>{{FirefoxSidebar}}</div><p><span class="seoSummary">While the introduction of multi-process capabilities to Firefox should be seamless and invisible to Web content, there are some exceptions and subtle changes from past behavior. This article discusses the known differences you may encounter.</span></p>
+
+<h2 id="Events">Events</h2>
+
+<p>Here you'll find information about events whose behaviors have changed due to multiprocess Firefox's implementation.</p>
+
+<h3 id="No_bubbling_of_events_from_&lt;option>_to_&lt;select>">No bubbling of events from <code>&lt;option&gt;</code> to <code>&lt;select&gt;</code></h3>
+
+<p>Historically, Firefox has allowed keyboard and mouse events to bubble up from the <code>&lt;option&gt;</code> element to the parent {{HTMLElement("select")}} element. This doesn't happen in Chrome, however, although this behavior is inconsistent across many browsers. For better Web compatibility (and for technical reasons), when Firefox is in multi-process mode and the <code>&lt;select&gt;</code> element is displayed as a drop-down list. This behavior is unchanged if the <code>&lt;select&gt;</code> is presented inline and it has either the <code>multiple</code> attribute defined or a <code>size</code> attribute set to more than 1.</p>
+
+<p>Rather than watching <code>&lt;option&gt;</code> elements for events, you should watch for {event("change")}} events on {{HTMLElement("select")}}. See {{bug(1090602)}} for details.</p>
+
+<h2 id="See_also">See also</h2>
+
+<ul>
+ <li>Multiprocess Firefox</li>
+ <li>{{HTMLElement("option")}}</li>
+ <li>{{HTMLElement("select")}}</li>
+ <li>{{domxref("HTMLOptionElement")}}</li>
+ <li>{{domxref("HTMLSelectElement")}}</li>
+</ul>
diff --git a/files/de/mozilla/firefox/nutzung_in_unternehmen/index.html b/files/de/mozilla/firefox/nutzung_in_unternehmen/index.html
new file mode 100644
index 0000000000..bb01035bad
--- /dev/null
+++ b/files/de/mozilla/firefox/nutzung_in_unternehmen/index.html
@@ -0,0 +1,142 @@
+---
+title: Firefox in einem Unternehmen nutzen
+slug: Mozilla/Firefox/Nutzung_in_Unternehmen
+tags:
+ - Administratoren
+ - Anleitung
+ - Bereitstellung
+ - Firefox
+ - Unternehmen
+translation_of: Mozilla/Firefox/Enterprise_deployment_before_60
+---
+<div>{{FirefoxSidebar}}</div>
+
+<p>Diese Seite versucht zu dokumentieren, wie Mozilla Firefox für Windows und Mac in einem Unternehmen genutzt werden kann. Falls Sie Fragen haben, kontaktieren Sie bitte <a href="https://mail.mozilla.org/listinfo/enterprise">enterprise@mozilla.org</a>.</p>
+
+<h2 id="Die_richtige_Variante">Die richtige Variante</h2>
+
+<h3 id="RR_(Rapid_Release)">RR (Rapid Release)</h3>
+
+<p>Mozilla veröffentlicht alle sechs Wochen (und, je nach Bedarf, weitere Sicherheitsupdates dazwischen) neue Versionen mit höheren Versionsnummern, neuen Features und Fehlerbehebungen. Am Tag, an dem ein großes Update veröffentlicht wird, wird Mozilla in den meisten Fällen (Ausnahme, siehe unten) die Veröffentlichung von Fehlerbehebungen für die vorherige Version einstellen.</p>
+
+<p>Die geplanten Veröffentlichungen finden Sie in der Spalte "release date" in der  <a href="https://wiki.mozilla.org/RapidRelease/Calendar#Future_branch_dates">Future branch dates</a> tabelle in der Mozilla wiki (Englisch).</p>
+
+<h3 id="ESR_(Extended_Support_Release)">ESR (Extended Support Release)</h3>
+
+<p>Jede siebte veröffentlichte Hauptversion von Firefox ist ein Extended Support Release. Diese Versionen werden für 54 Wochen (neun der sechswöchigen Veröffentlichungszyklen) sehr stark auf Probleme hin überprüft. Es überlappen sich 12 Wochen (zwei Veröffentlichungszyklen)  zwischen zwei aufeinanderfolgenden ESR-Veröffentlichungen, in denen beide ESR-Versionen gleichzeitig überprüft werden.</p>
+
+<p>Die ESR-Veröffentlichungen waren bisher die Versionen 10, 17, 24, und 31. </p>
+
+<p>Viele Unternehmen und Organisationen mit zentral organisierten Netzwerksystemen bevorzugen die ESR-Version von Firefox, weil sie dann nicht alle 6 Wochen sondern nur noch alle 42 Wochen die Kompatibilität prüfen müssen. Desweiteren haben sie 12 Wochen mehr Zeit (der Überlappungszeitraum zwischen zwei ESR-Veröffentlichungen) eine Lösung für Probleme zu finden (zusätzlich zu den 6 Wochen die sie bekommen indem sie die Betaversion testen), falls Probleme auftreten.</p>
+
+<p>Nehmen Sie zur Kenntnis, dass unerwünschte Nebeneffekte auftreten können wenn Sie von einer RR-Version zu einer früheren ESR-Version wechseln, wie zum Beispiel von Version 26-RR zurück zu Version 24.2-ESR, selbst wenn sie am gleichen Tag veröffentlicht wurden. Der Grund dafür ist, dass oft neue Features in die RR-Versionen eingebaut werden, auch wenn sie noch unvollendet und deshalb deaktiviert sind. Schlussendlich entscheidet Mozilla die Features in einer bestimmten Version zu aktivieren. Wenn Sie dann auf eine vorherige, ältere Version wechseln, behalten alle Nutzer ihre letzten Einstellungen in ihren Profilordnern. So bleibt die Option nun angestellt, obwohl das Feature noch nicht komplett fehlerfrei läuft. Wenn Sie also von RR auf ESR wechsel wollen, sollten Sie auf eine neue ESR-Version warten.</p>
+
+<h2 id="Installation">Installation</h2>
+
+<ol>
+ <li>Den kompletten, weiterverteilbaren Installer bekommen Sie von  <a href="http://www.mozilla.org/firefox/all/">http://www.mozilla.org/firefox/all/</a> (RR) oder <a href="https://www.mozilla.org/firefox/organizations/all.html">https://www.mozilla.org/firefox/organizations/all.html</a> (ESR).</li>
+ <li>Installieren Sie ihre Version, in dem Sie die Softwareverteilungsmethode ihrer Wahl nutzen. Die Kommand-Zeile für eine stille Installation ist <code>-ms</code>. </li>
+ <li>Optional können Sie eine INI-Datei spezifizieren, um beispielsweise die Nutzung von Tastenkürzeln und die Installation vom MaintenanceService zu verhindern. Nutzen Sie dafür <a href="https://wiki.mozilla.org/Installer:Command_Line_Arguments">Installer Command Line Arguments</a>.</li>
+</ol>
+
+<h2 id="Konfiguration">Konfiguration</h2>
+
+<ol>
+ <li>Finden Sie den Firefox <strong>Programmverzeichnis</strong> in dem Firefox' ausführende Datei liegt. In Windows7x64 ist er meist <code>C:\Program Files (x86)\Mozilla Firefox</code>; in OSX 10.8 zumeist <code>/Applications/Firefox.app/Contents/MacOS</code>. Unterordner die unten genannt werden sind abhängig von diesem Pfad. </li>
+ <li>Erstellen Sie eine Javascript Datei in <code>defaults/pref</code> (für gewöhlich, <code>autoconfig.js</code> - andere Dateinamen funktionieren gleicherweise, doch um beste Resultate zu erzielen sollte es am Anfang des Alphabets stehen.) Der Inhalt dieser Datei zeigt Firefox, wo die konfigurierende Datei zu finden ist (siehe auch <a href="http://mike.kaply.com/2012/03/15/customizing-firefox-default-preference-files/">Customizing Firefox default preference files/</a>).
+ <p>Die zwei Zeilen die Sie brauchen sind:</p>
+
+ <pre class="brush: js">pref("general.config.obscure_value", 0);
+pref("general.config.filename", "mozilla.cfg");</pre>
+ </li>
+ <li>Erstellen Sie eine .cfg Datei (für gewöhlich, <code>mozilla.cfg</code> — es kann wirklich jeder Name sein; es muss nur zu dem passen, was in  <code>general.config.filename</code> zuvor spezifiziert wurde) im Programmverzeichnis. Überspringen Sie die erste Zeile oder kommentieren Sie sie aus und fangen Sie an ihre Einstellungen vorzunehmen. Um herauszufinden welche Einstellungen Sie nutzen müssen, nutzen Sie about:config in einer Kopie von Firefox, die Sie korrekt eingestellt haben und suchen Sie alle Einstellungen die vom Nutzer eingestellt sind, oder sehen Sie sich das folgende Beispiel an. Jede Einstellung die in about:config auftaucht (und noch einige andere) können mit eine der folgenden Funktionen eingestellt werden:
+ <dl>
+ <dt><strong>pref </strong></dt>
+ <dd>nimmt eine Einstellung vor, als hätte der Benutzer sie eingestellt, jedes Mal wenn der Browser gestartet wird. Nutzer können zwar Änderungen an den Einstellungen vornehmen, jedoch werden diese beim nächsten Start überschrieben. Wenn Sie auf diese Weise Einstellungen vornehmen, wird die Einstellung in about:config als "<strong>vom Benutzer eingestellt</strong>" angezeigt.</dd>
+ <dt><strong>defaultPref</strong></dt>
+ <dd>wird gebraucht um die Standardeinstellung zu ändern, jedoch kann jeder Nutzer die Einstellungen ändern. Die Einstellungen werden zwischen Sitzungen gespeichert. Sollten alle Werte auf ihren Ursprung zurückgesetzt werden, werden die so geänderten Einstellungen auf den von Ihnen gesetzten Wert geändert. Taucht in about:config als "standard" auf.</dd>
+ <dt><strong>lockPref</strong></dt>
+ <dd>wird genutzt um Einstellungen zu blockieren, sodass sie nicht mehr vom Nutzer umgestellt werden können, weder über die Einstellungen, noch über about:config. Das Fenster mit den Einstellungen wird sich ändern um dies zu reflektieren, indem es nicht verstellbare Optionen weglässt oder grau färbt.Taucht in about:config auf als "<strong>blockiert</strong>". <span class="author-g-fer323ku83ypu55t">Manche Einstellungen benötigen <strong>lockPref</strong> um geändert zu werden, wie beispielsweise <strong>app.update.enabled</strong>. Es funktioniert nicht, wenn es nur mit <strong>pref</strong> geändert wird.</span></dd>
+ <dt><span class="author-g-fer323ku83ypu55t">clearPref</span></dt>
+ <dd><span class="author-g-fer323ku83ypu55t">kann benutzt werden um einige Einstellungen auszublenden. Dies kann nützlich sein, um einige Funktionen zu deaktivieren, die darauf basieren Versionsnummern zu vergleichen.</span></dd>
+ </dl>
+ </li>
+</ol>
+
+<p>Sehen Sie sich auch <a href="http://mike.kaply.com/2012/03/16/customizing-firefox-autoconfig-files/">Firefox' autoconfig-Dateien ändern</a> und <a href="http://mike.kaply.com/2012/03/20/customizing-firefox-autoconfig-files-continued/">Firefox' autoconfig-Dateien ändern (Fortführung)</a> an, um mehr zu erfahren. Für tiefergehende Einstellungen, wie beispielsweise das Ausschalten bestimmter Elemente der graphischen Benutzeroberfläche, können Sie die <a href="http://mike.kaply.com/cck2/">CCK2</a>-Extension nutzen.</p>
+
+<h3 id="Beispiel_für_eine_config-Datei">Beispiel für eine config-Datei</h3>
+
+<p>Ihnen mag der Bezug auf "komplexe Einstellungen" auffallen, die in einer anderen Art und Weise eingestellt werden müssen; seit FF31 scheinen alle Einstellungen auf normalem Wege änderbar zu sein, ähnlich wie im folgenden Beispiel.  Für genauere Informationen zu individuellen Einstellungen, durchsuchen Sie die <a href="http://kb.mozillazine.org/Knowledge_Base">Wissensdatenbank</a>.</p>
+
+<pre class="brush: js"><span class="brush: js">// Deaktiviert den Updater
+lockPref("app.update.enabled", false);
+// Stellt sicher dass er tatsächlich abgestellt ist
+lockPref("app.update.auto", false);
+lockPref("app.update.mode", 0);
+lockPref("app.update.service.enabled", false);
+
+// Deaktiviert die Kompatbilitätsprüfung der Add-ons
+clearPref("extensions.lastAppVersion");
+
+// Deaktiviert 'Kenne deine Rechte' beim ersten Start
+pref("browser.rights.3.shown", true);
+
+// Versteckt 'Was ist neu?' beim ersten Start nach jedem Update
+pref("browser.startup.homepage_override.mstone","ignore");
+
+// Stellt eine Standard-Homepage ein - Nutzer können sie ändern
+defaultPref("browser.startup.homepage", "http://home.example.com");
+
+// Deaktiviert den internen PDF-Viewer
+pref("pdfjs.disabled", true);
+
+// Deaktiviert den Flash zu JavaScript Converter
+pref("shumway.disabled", true);
+
+// Verhindert die Frage nach der Installation des Flash Plugins
+pref("plugins.notifyMissingFlash", false);
+
+//Deaktiviert das 'plugin checking'
+lockPref("plugins.hide_infobar_for_outdated_plugin", true);
+clearPref("plugins.update.url");
+
+// Deaktiviert den 'health reporter'
+lockPref("datareporting.healthreport.service.enabled", false);
+
+</span>// Disable all data upload (Telemetry and FHR)
+lockPref("datareporting.policy.dataSubmissionEnabled", false);
+<span class="brush: js">
+// Deaktiviert den 'crash reporter'
+lockPref("toolkit.crashreporter.enabled", false);
+Components.classes["@mozilla.org/toolkit/crash-reporter;1"].getService(Components.interfaces.nsICrashReporter).submitReports = false;</span><em> </em>
+</pre>
+
+<h2 id="Packaging_Extensions">Packaging Extensions</h2>
+
+<ol>
+ <li>Installieren Sie die Erweiterung auf einem Rechner zu Testzwecken. Sehen Sie in about:support unter Extensions nach um die GUID zu fnden. </li>
+ <li>Sehen Sie im <a href="https://support.mozilla.org/en-US/kb/profiles-where-firefox-stores-user-data">Profilverzeichnis</a> (z.B.: <code>%APPDATA%\Mozilla\Firefox\Profiles</code> auf Win7; um diesen zu finden, klicken Sie auf <strong>Ordner anzeigen</strong> in about:support), dann unter "extensions" nach dem Add-On dass Sie suchen. Beachten Sie dass es entweder eine einzelne .xpi Datei (wie eine zip Datei) oder extrahiert zu einem Ordner mit mehreren Dateien.</li>
+ <li>Entscheiden Sie wie Sie sie nutzen wollen. Die einfachste Methode ist, die .xpi Datei oder den Ordner in <strong>Programm<code>verzeichnis</code></strong><code>/distribution/extensions</code> zu legen, jedoch funktioniert dies nur für Profile die Installiert wurden nachdem die Erweiterung installiert wurde. Außerdem, wenn Sie Firefox manuell updaten indem Sie das Programm erneut installieren, wird dieser Programmverzeichnis gelöscht. Vergewissern SIe sich dann, ob Sie die Erweiterung ebenfalls manuell erneut installiert haben. Sehen Sie sich auch <a href="http://mike.kaply.com/2012/02/09/integrating-add-ons-into-firefox/">Integrating add-ons into Firefox/</a> (Englisch) an, um alternative Methoden zu lernen.</li>
+</ol>
+
+<p>Beachten Sie auch: <a href="http://mike.kaply.com/2013/05/03/add-on-scopes-redux/">Add-on scopes redux/</a> (Englisch)</p>
+
+<h2 id="Änderungen_mit_der_Zeit">Änderungen mit der Zeit</h2>
+
+<h3 id="Änderungen_in_der_Verzeichnisstruktur">Änderungen in der Verzeichnisstruktur</h3>
+
+<p>Die Verzeichnisstruktur des Programmpfades wurde zweimal geändert. Sollten Sie einer Anleitung für eine Firefox-Version <strong>vor</strong> Version 21 folgen, dann müssen Sie vermutlich diese Änderungen beachten:</p>
+
+<ul>
+ <li>Seit Version 14, funktionieren einige der pref Einstellungen nicht mehr wenn sie in einer Datei geändert werden, die im Pfad <code>defaults/pref</code> liegt. Sie können das Problem beheben, indem Sie den Pfad <code>defaults/preferences</code> erstellen und die Datei dort ablegen.</li>
+ <li>Seit Version 21 wurde der neue Ordner <code>browser</code> erstellt. Die Datei <code>override.ini</code> und die Pfade <code>defaults/preferences</code>, <code>defaults/profile</code>, <code>extensions</code>, <code>plugins</code>, und <code>searchplugins</code> wurden dorthinein verlegt. Plug-ins im Ordner <code>plugins</code> können reaktiviert werden, indem die Einstellung <code>plugins.load_appdir_plugins</code> zu <strong>true</strong> geändert wird.</li>
+</ul>
+
+<p>Die Einstellungen preferences <code>general.config.filename</code> und <code>general.config.obscure_value</code> zur AutoConfiguration können immer noch in <code>defaults/pref</code> vorgenommen werden, jedoch sollte der Dateiname mit dem Buchstaben 'a' beginnen, wie zum Beispiel <code>autoconfig.js</code>.</p>
+
+<p>Sollte es in <code>defaults/pref</code> in einer zuünftigen Version von Firefox nicht mehr funktionieren, probieren Sie <code>browser/defaults/preferences</code> als den wahrscheinlichsten Platz für die Datei.</p>
+
+<h3 id="Änderungen_in_ESR_24.x_mit_Adobe_PDF_Files">Änderungen in ESR 24.x mit Adobe PDF Files</h3>
+
+<p>Firefox RR 19.x änderte den Standard-Viewer für Adobe PDF Dateien zu dem internen PDF Viewer. Diese Änderung betrifft nun die ESR Versionen seit 24.x, und wird (auf Windows) angewandt, wenn von 17.x auf eine höhere Version geupgradet wird, <em>selbst wenn ein externer Viewer bereits eingestellt wurde</em>. Der Name des Dateitypes wurde von <strong>Adobe Acrobat Document</strong> zu <strong>Portable Document Format (PDF)</strong> geändert, was die Lokalisierung durch die Tools-, Options- oder Applications-Tabs erschwert. Um dies abzustellen, ändern Sie <code>pdfjs.disabled</code> zu true wie auch im oben genannten Beispiel.</p>
diff --git a/files/de/mozilla/firefox/privacy/index.html b/files/de/mozilla/firefox/privacy/index.html
new file mode 100644
index 0000000000..c6a9e69b09
--- /dev/null
+++ b/files/de/mozilla/firefox/privacy/index.html
@@ -0,0 +1,9 @@
+---
+title: Privacy
+slug: Mozilla/Firefox/Privacy
+tags:
+ - NeedsTranslation
+ - TopicStub
+translation_of: Mozilla/Firefox/Privacy
+---
+<div>{{FirefoxSidebar}}</div><p>{{ ListSubpages () }}</p>
diff --git a/files/de/mozilla/firefox/privacy/tracking_protection/index.html b/files/de/mozilla/firefox/privacy/tracking_protection/index.html
new file mode 100644
index 0000000000..7ebf5f19da
--- /dev/null
+++ b/files/de/mozilla/firefox/privacy/tracking_protection/index.html
@@ -0,0 +1,88 @@
+---
+title: Verfolgungsschutz
+slug: Mozilla/Firefox/Privacy/Tracking_Protection
+tags:
+ - Privacy
+ - Privat
+ - Private browsing
+ - Privates Surfen
+ - blocking
+ - tracker
+ - tracking
+translation_of: Mozilla/Firefox/Privacy/Tracking_Protection
+---
+<div>{{FirefoxSidebar}}</div>
+
+<h2 id="Was_ist_Verfolgungsschutz">Was ist Verfolgungsschutz?</h2>
+
+<p>Beginnend mit Version 42 beinhalten Firefox Desktop und Firefox für Android einen eingebauten Schutz gegen Verfolgung. In privaten Browserfenstern (Tabs, in Firefox für Android) wird Firefox Inhalte, die von Domains geladen werden, die Nutzer über Seiten verfolgen, blockieren.</p>
+
+<p>Einige dieser blockierten Inhalte sind Teil des Seitenlayouts, weswegen Nutzer Probleme mit diesem haben können. Ist das Seitenraster so angepasst, dass andere Elemente die Lücken der blockierten Inhalte füllen, merken Nutzer keinen Unterschied.</p>
+
+<p>Wenn Firefox Inhalte blockiert, wird die folgende Nachricht ausgegeben:</p>
+
+<pre><span class="message-body-wrapper"><span class="message-flex-body"><span class="devtools-monospace message-body">Die Ressource auf "https://some/url" wurde blockiert, weil das Blockieren von Seitenelementen aktiviert ist.</span></span></span></pre>
+
+<div class="blockIndicator note">
+<p>Die Ausgaben auf der Konsole in Firefox für Android können über den Remote Debugger angezeigt werden.</p>
+</div>
+
+<p>Das Firefox Benutzerinterface zeigt Nutzern an wenn Inhalte blockiert wurden und ermöglicht es ihnen diese für die Dauer der Sitzung zu entblocken. Nutzer können sich auch entscheiden, den Trackingschutz auch dauerthaft abzuschalten.</p>
+
+<h2 id="Wie_entscheidet_Firefox_was_blockiert_wird">Wie entscheidet Firefox was blockiert wird?</h2>
+
+<p>Inhalte werden auf Basis der Domain blockiert, von der sie geladen werden.</p>
+
+<p>Firefox kommt mit einer Liste von Seiten, die Nutzer über Seiten hinweg verfolgen. Wenn der Verfolgungschutz aktiv ist, wird Firefox Inhalte von Seiten auf dieser Liste blockieren</p>
+
+<p>Seiten die User tracken sind hauptsächlich externe Werbe- und Analyseseiten</p>
+
+<h2 id="Was_bedeutet_das_für_deine_Webseite">Was bedeutet das für deine Webseite?</h2>
+
+<p>Zuerst einmal bedeutet das offensichtlich, dass wenn der Trackingschutz aktiviert ist:</p>
+
+<ul>
+ <li>Inhalte die von externen Trackern bereit gestellt werden sind für User nicht sichtbar</li>
+ <li>deine Seite wird externe Werbe- und Analyseservices, die tracken, nicht nutzen können</li>
+</ul>
+
+<p>Weniger offensichtlich, falls Teile deiner Seite davon abhänging sind, dass Tracker geladen werden, werden diese Teile nicht funktionieren, wenn der Trackingschutz aktiv is. Beinhaltet deine Seite beispielsweise einen Callback, der ausgeführt wird, wenn Inhalte von einer Trackingseite geladen wurde, so wird dieser Callback nicht ausgeführt.</p>
+
+<p>Zum Beispiel solltest du Google Analytics nicht so verwenden:</p>
+
+<pre class="brush:html example-bad">&lt;a href="http://www.example.com" onclick="trackLink('http://www.example.com', event);"&gt;Visit example.com&lt;/a&gt;
+&lt;script&gt;
+function trackLink(url,event) {
+ event.preventDefault();
+ ga('send', 'event', 'outbound', 'click', url, {
+     'transport': 'beacon',
+     'hitCallback': function() {
+ document.location = url;
+ }
+   });
+}
+&lt;/script&gt;</pre>
+
+<p>Stattdessen solltest  du den Fall berücksichtigen, dass Google Analytics fehlt, in dem du überprüftst ob das <code>ga</code> Objekt initialisiert wurde.</p>
+
+<pre class="brush:html example-good">&lt;a href="http://www.example.com" onclick="trackLink('http://www.example.com', event);"&gt;Visit example.com&lt;/a&gt;
+&lt;script&gt;
+function trackLink(url,event) {
+ event.preventDefault();
+ if (window.ga &amp;&amp; <span class="pl-smi">ga</span>.loaded) {
+ ga('send', 'event', 'outbound', 'click', url, {
+     'transport': 'beacon',
+      'hitCallback': function() { document.location = url; }
+    });
+ } else {
+ document.location = url;
+ }
+}
+&lt;/script&gt;
+</pre>
+
+<p>Mehr Informationen zu dieser Technik ist verfügbar auf <a href="https://hacks.mozilla.org/2016/01/google-analytics-privacy-and-event-tracking/">Google Analytics, Privacy, and Event Tracking</a>.</p>
+
+<div class="blockIndicator note">
+<p>Sich auf externe Services zu verlassen ist so oder so kein guter Stil: Es bedeutet deine Seite funktioniert nicht, wenn der Service langsam oder nicht verfügbar ist oder der Tracker von einem Addon blockiert wird.</p>
+</div>
diff --git a/files/de/mozilla/firefox/releases/16/index.html b/files/de/mozilla/firefox/releases/16/index.html
new file mode 100644
index 0000000000..1f341acc1e
--- /dev/null
+++ b/files/de/mozilla/firefox/releases/16/index.html
@@ -0,0 +1,104 @@
+---
+title: Firefox 16 für Entwickler
+slug: Mozilla/Firefox/Releases/16
+tags:
+ - Firefox
+ - Firefox 16
+translation_of: Mozilla/Firefox/Releases/16
+---
+<div>{{FirefoxSidebar}}</div><p>Firefox 16 erschien am 9. Oktober 2012. Dieser Artikel listet die hauptsächlichen Änderungen auf, welche nicht nur für Web-Entwickler gedacht sind, aber auch Firefox- , Gecko- und AddOn-Entwickler.</p>
+
+<p>Möchten Sie helfen Firefox 16 zu dokumentieren? Schauen Sie auf die <a href="http://beta.elchi3.de/doctracker/#list=fx&amp;version=16.0">Liste von Bugs, über die geschrieben werden sollte</a> und schreibe Sie dazu.</p>
+
+<h2 id="Änderungen_für_Web-Entwickler">Änderungen für Web-Entwickler</h2>
+
+<h3 id="HTML">HTML</h3>
+
+<ul>
+ <li>Das {{HTMLElement("meter")}}-Element ist nun verfügbar.</li>
+
+ <li>Die HTML Microdata API kann nun genutzt werden. (<a class="link-https" href="https://bugzilla.mozilla.org/show_bug.cgi?id=591467">bug 591467</a>)</li>
+ <li>{{HTMLElement("canvas")}} ist nun für alle CSS <code>currentColor</code> verfügbar. ({{bug("629882")}})</li>
+ <li>{{HTMLElement("input")}} erlaubt nun Filterung durch verschiedene Mimetypes in <code>accept</code>. ({{bug("565274")}})</li>
+ <li>Die Attribute <code>width</code> and <code>height</code> wurden zum Element {{HTMLElement("input")}} hinzugefügt. (<a class="link-https" href="https://bugzilla.mozilla.org/show_bug.cgi?id=683855">bug 683855</a>)</li>
+</ul>
+
+<h3 id="CSS">CSS</h3>
+
+<ul>
+ <li>Support for the standard, unprefixed version of <a href="/en-US/docs/CSS/Using_CSS_animations" title="CSS/Using_CSS_transforms">CSS Animations</a> has been landed. (<a class="link-https" href="https://bugzilla.mozilla.org/show_bug.cgi?id=762302">bug 762302</a>)</li>
+ <li>Support for reverse animation direction (keywords <code>reverse</code> and <code>alternate-reverse</code> on the {{cssxref("animation-direction")}} property) has been added. (<a class="link-https" href="https://bugzilla.mozilla.org/show_bug.cgi?id=655920">bug 655920</a>)</li>
+ <li>You can now animate the CSS {{cssxref("height")}} and {{cssxref("width")}} properties.</li>
+ <li>The {{cssxref("animation-duration")}} and {{cssxref("transition-duration")}} CSS properties now reject negative values (and do not handle them as <code>0s</code> anymore) (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=773102" title="https://bugzilla.mozilla.org/show_bug.cgi?id=773102">bug 773102</a>)</li>
+ <li>Support for the standard, unprefixed version of <a href="/en-US/docs/CSS/Using_CSS_transforms" title="CSS/Using_CSS_transforms">CSS Transforms</a> has been landed. (<a class="link-https" href="https://bugzilla.mozilla.org/show_bug.cgi?id=745523">bug 745523</a>)</li>
+ <li>Support for the standard, unprefixed version of <a href="/en-US/docs/CSS/Using_CSS_gradients" title="CSS/Using_CSS_gradients">CSS Gradients</a> has been landed. Note that the syntax has changed significantly since the prefixed version, so you should read up on this. (<a class="link-https" href="https://bugzilla.mozilla.org/show_bug.cgi?id=752187">bug 752187</a>)</li>
+ <li>The {{cssxref("box-sizing", "-moz-box-sizing")}} implementation has been updated to apply to table cells too. (<a class="link-https" href="https://bugzilla.mozilla.org/show_bug.cgi?id=338554">bug 338554</a>)</li>
+ <li>Support for the standard, unprefixed version of {{cssxref("calc")}} has been landed. (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=771678" title="https://bugzilla.mozilla.org/show_bug.cgi?id=771678">bug 771678</a>)</li>
+ <li>The {{cssxref("&lt;resolution&gt;")}} CSS data type has been extended to support the <code>dppx</code>. (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=741644" title="https://bugzilla.mozilla.org/show_bug.cgi?id=741644">bug 741644</a>)</li>
+ <li>On screen, for <a href="/en-US/docs/CSS/Media_queries" title="CSS/Media_queries">media queries</a>, <code>dppx</code>, <code>dpi</code>, and <code>dpcm</code> are now representing values based on CSS pixels and no more with the physical units. (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=771390" title="https://bugzilla.mozilla.org/show_bug.cgi?id=771390">bug 771390</a>)</li>
+ <li>Three new pseudo-classes <code>:-moz-meter-optimum</code>, <code>:-moz-meter-sub-optimum</code>, and <code>:-moz-meter-sub-sub-optimum</code> have been added for accessing/styling a {{HTMLElement("meter")}} element in a paraticular state. (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=660238" title="https://bugzilla.mozilla.org/show_bug.cgi?id=660238">bug 660238</a>)</li>
+ <li>The {{cssxref("-moz-appearance")}} property gains two new values: <code>meterbar</code> and <code>meterchunk</code>. They represent components inside the {{HTMLElement("meter")}} element. (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=659999" title="https://bugzilla.mozilla.org/show_bug.cgi?id=659999">bug 659999</a>)</li>
+ <li>The {{cssxref("min-width")}} and {{cssxref("min-height")}} now supports the <code>auto</code> keyword for flex items (and resolves to <code>0</code> for other items). ({{bug("763689")}})</li>
+</ul>
+
+<h3 id="DOM">DOM</h3>
+
+<ul>
+ <li>Two new properties <code>width</code> and <code>height</code> have been added to the {{domxref("HTMLInputElement")}} interface (<a class="link-https" href="https://bugzilla.mozilla.org/show_bug.cgi?id=683855">bug 683855</a>).</li>
+ <li>IndexedDB properties and methods have been unprefixed. (<a class="link-https" href="https://bugzilla.mozilla.org/show_bug.cgi?id=726378">bug 726378</a>)</li>
+ <li>The <a href="/en-US/docs/DOM/window.navigator.battery" title="DOM/window.navigator.battery">Battery API</a> is now unprefixed.</li>
+ <li>The Vibration API has been unprefixed.</li>
+ <li>The {{domxref("Keyboard")}} interface, still prefixed as <code>mozKeyboard</code>, now has the {{domxref("Keyboard.setSelectedOption()")}} and {{domxref("Keyboard.setValue()")}} methods, as well as the {{domxref("Keyboard.onfocuschange")}} property.</li>
+ <li>The <a href="/en-US/docs/LiveConnect_Reference/java" title="/en-US/docs/LiveConnect_Reference/java"><code>java</code></a> and <a href="/en-US/docs/LiveConnect_Reference/Packages" title="/en-US/docs/LiveConnect_Reference/Packages"><code>Packages</code></a> global objects have been removed. See <a href="/en-US/docs/LiveConnect" title="/en-US/docs/LiveConnect">LiveConnect</a>.</li>
+ <li>The <code>CSSRule.type</code> associated with {{domxref("CSSNamespaceRule")}} has been updated from <code>UNKNOWN_RULE</code> (<code>0</code>) to <code>NAMESPACE_RULE</code> (<code>10</code>). (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=765590" title="https://bugzilla.mozilla.org/show_bug.cgi?id=765590">bug 765590</a>)</li>
+ <li>WebSMS API: {{domxref("SmsRequest")}} has been superseded by the more general {{domxref("DOMRequest")}}.</li>
+</ul>
+
+<h3 id="JavaScript">JavaScript</h3>
+
+<ul>
+ <li><a href="/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number" title="JavaScript/Reference/Global_Objects/Number"><code>Number</code></a> objects now offer <code><a href="/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/isFinite">isFinite</a>()</code>, <code><a href="/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/toInteger">toInteger</a>()</code>, and <code><a href="/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/isInteger">isInteger</a>()</code> methods. (<a class="link-https" href="https://bugzilla.mozilla.org/show_bug.cgi?id=761480">bug 761480</a>, <a class="link-https" href="https://bugzilla.mozilla.org/show_bug.cgi?id=761495">bug 761495</a>)</li>
+ <li>The Harmony <a href="http://wiki.ecmascript.org/doku.php?id=harmony:spread" title="http://wiki.ecmascript.org/doku.php?id=harmony:spread">spread operator</a> is now supported in <a href="/en-US/docs/JavaScript/Reference/Global_Objects/Array" title="JavaScript/Reference/Global_Objects/Array"><code>Array</code></a> initializers (<a class="link-https" href="https://bugzilla.mozilla.org/show_bug.cgi?id=574130">bug 574130</a>). Note it is not yet supported in calls (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=762363" title="https://bugzilla.mozilla.org/show_bug.cgi?id=762363">bug 762363</a>).</li>
+</ul>
+
+<h3 id="WebGL">WebGL</h3>
+
+<h3 id="SVG">SVG</h3>
+
+<h3 id="MathML">MathML</h3>
+
+<ul>
+ <li>The <code>lspace</code> and <code>rspace</code> attributes of {{MathMLElement("mo")}} now correctly default to <code>thickmathspace</code>.</li>
+</ul>
+
+<h3 id="Network">Network</h3>
+
+<h3 id="Developer_tools">Developer tools</h3>
+
+<ul>
+ <li>There's now a handy developer toolbar you can access by going to Tools &gt; Web Developer &gt; Developer Toolbar, or by pressing Ctrl-Shift-V (Cmd-Opt-V on Mac OS X). This toolbar offers a command line interface as well as buttons for quickly accessing useful tools. The graphical command line interface (<a href="/en-US/docs/Tools/GCLI" title="Tools/GCLI">GCLI</a>) is easy to expand and additional commands are expected in the future. Type "help" to get a list of supported commands.</li>
+ <li>The Web Console now displays an error count so you can quickly see how much work you have ahead of you.</li>
+ <li>The Scratchpad now offers a list of recently opened files.</li>
+</ul>
+
+<h2 id="Changes_for_Open_Web_App_developers">Changes for Open Web App developers</h2>
+
+<ul>
+ <li>Initial <a href="https://developer.mozilla.org/en-US/docs/Apps/Getting_Started">Open Web App support</a> has been implemented in the desktop versions of Firefox (that is, on Windows, Mac OS X, and Linux).</li>
+</ul>
+
+<h2 id="Changes_for_add-on_and_Mozilla_developers">Changes for add-on and Mozilla developers</h2>
+
+<h3 id="Interface_changes">Interface changes</h3>
+
+<p>{{interface("nsIPrivateDOMEvent")}} has been merged into {{interface("nsIDOMEvent")}}. ({{bug("761613")}})</p>
+
+<h4 id="New_interfaces">New interfaces</h4>
+
+<h4 id="Removed_interfaces">Removed interfaces</h4>
+
+<p>The following interfaces have been removed.</p>
+
+<h2 id="See_also">See also</h2>
+
+<div>{{Firefox_for_developers('15')}}</div>
diff --git a/files/de/mozilla/firefox/releases/27/index.html b/files/de/mozilla/firefox/releases/27/index.html
new file mode 100644
index 0000000000..cb671b3b3c
--- /dev/null
+++ b/files/de/mozilla/firefox/releases/27/index.html
@@ -0,0 +1,56 @@
+---
+title: Firefox 27 für Entwickler
+slug: Mozilla/Firefox/Releases/27
+tags:
+ - Firefox
+translation_of: Mozilla/Firefox/Releases/27
+---
+<div>{{FirefoxSidebar}}</div><div class="overheadIndicator draft draftHeader"><strong>Diese Seite ist noch nicht fertig.</strong>
+<div>Firefox 27 ist noch keine vollständige Version. Neue Features werden demnächst hinzugefügt.</div>
+</div>
+
+<p>Möchten Sie helfen Firefox 27 zu dokumentieren? Schauen Sie auf die <a href="http://beta.elchi3.de/doctracker/#list=fx&amp;version=27.0"><span class="external">Liste von Bugs, über die geschrieben werden sollte</span></a> und schreibe Sie dazu.</p>
+
+<h2 id="Änderungen_für_Web-Entwickler">Änderungen für Web-Entwickler</h2>
+
+<h3 id="HTML">HTML</h3>
+
+<p><em>Keine Änderung.</em></p>
+
+<h3 id="CSS">CSS</h3>
+
+<ul>
+ <li>Die Element <code>grab</code> und <code>grabbing</code> der Eigenschaft {{cssxref("cursor")}} sind nunmehr ohne Präfix (<code>-moz-grab</code> und <code>-moz-grabbing</code>).</li>
+</ul>
+
+<h3 id="JavaScript">JavaScript</h3>
+
+<p><a href="/en-US/docs/Web/JavaScript/ECMAScript_6_support_in_Mozilla" title="/en-US/docs/Web/JavaScript/ECMAScript_6_support_in_Mozilla">EcmaScript 6</a> (Harmony)<span class="short_text" id="result_box" lang="de"><span class="alt-edited hps"> Implementierung</span></span> wird fortgeführt!</p>
+
+<ul>
+ <li>Der Harmony <a href="http://wiki.ecmascript.org/doku.php?id=harmony:spread">Spread Operator</a> ist nun in der Funktion calls verfügbar. ({{bug("762363")}})</li>
+</ul>
+
+<h3 id="InterfacesAPIsDOM">Interfaces/APIs/DOM</h3>
+
+<p><em>Keine Änderung.</em></p>
+
+<h3 id="MathML">MathML</h3>
+
+<p><em>Keine Änderung.</em></p>
+
+<h3 id="SVG">SVG</h3>
+
+<p><em>Keine Änderung.</em></p>
+
+<h2 id="Veränderungen_für_AddOn-_und_Mozilla-Entwickler">Veränderungen für AddOn- und Mozilla-Entwickler</h2>
+
+<ul>
+ <li>Der <code>downloads-indicator</code>-Button wurde entfernt. Das Element <code>downloads-button</code> sollte nun verwendet werden. <span id="result_box" lang="de"><span class="alt-edited hps">Wenn Sie prüfen möchten</span><span>, dass es seine</span> <span class="hps">Overlay</span> <span class="alt-edited hps">geladen hat</span><span>,</span> <span class="alt-edited hps">überprüfen Sie das <code>indicator</code></span>-<span class="hps">Attribut</span> <span class="alt-edited hps">auf diesen Button</span> <span class="alt-edited hps">.</span></span></li>
+ <li>Das <code>chrome://browser/skin/downloads/indicator.css-</code>Stylesheet ist nicht länger in Firefox referenziert.</li>
+ <li><a href="https://developer.mozilla.org/de/docs/Mozilla/Firefox/Releases/27/Site_Compatibility"><span class="short_text" id="result_box" lang="de"><span class="alt-edited hps">Seiten-</span><span>Kompatibilität</span> <span class="hps">für</span> <span class="hps">Firefox</span> <span class="hps">27</span></span></a></li>
+</ul>
+
+<h3 id="Ältere_Versionen">Ältere Versionen</h3>
+
+<p>{{Firefox_for_developers('26')}}</p>
diff --git a/files/de/mozilla/firefox/releases/28/index.html b/files/de/mozilla/firefox/releases/28/index.html
new file mode 100644
index 0000000000..64f7d7796e
--- /dev/null
+++ b/files/de/mozilla/firefox/releases/28/index.html
@@ -0,0 +1,116 @@
+---
+title: Firefox 28 for developers
+slug: Mozilla/Firefox/Releases/28
+translation_of: Mozilla/Firefox/Releases/28
+---
+<div>{{FirefoxSidebar}}</div>
+
+<p>Firefox 28 wurde am 18. März 2014 veröffentlicht. Dieser Artikel listet wichtige Änderungen, die sowohl für Webentwickler, als auch für Firefox-, Gecko- und AddOn-Entwickler nützlich sind.</p>
+
+<h2 id="Änderungen_für_Web-Entwickler">Änderungen für Web-Entwickler</h2>
+
+<h3 id="Developer_Tools">Developer Tools</h3>
+
+<ul>
+ <li>Die {{domxref("console.exception")}} Eigenschaft wurde hinzugefügt ({{bug("922214")}}).</li>
+ <li>Die {{domxref("console.assert")}} Eigenschaft wurde hinzugefügt ({{bug("760193")}}).</li>
+ <li>App Manager: ein neuer Manifest-Texteditor wurde hinzugefügt.</li>
+ <li>App-Manager: die Toolbox für die Fehlersuche von Apps ist jetzt in die Benutzeroberfläche des App Managers integriert.</li>
+ <li>Web-Konsole: ein "split console"-Modus wurde hinzugefügt - drücken Sie die Abbruchtaste, um die Konsole in anderen Tools schnell zu öffnen.</li>
+ <li>Web-Konsole: ein dunkles Theme wurde für den Output hinzugefügt.</li>
+ <li>Fehlersuche: lesbares minifiziertes JavaScript.</li>
+ <li>Fehlersuche: einfach den Mauszeiger über eine Variable bewegen oder diese anklicken, um ein Popup für den derzeitigen Wert anzuzeigen.</li>
+ <li>Inspector: ein Farbwähler und diverse Tooltips wurden der Regel-Ansicht hinzugefügt.</li>
+ <li>Browser Toolbox: erlaubt AddOn- und Platformentwicklern die Benutzung von fast allen Entwickler-Tools während der Erfassung des Browsers.</li>
+</ul>
+
+<p>Mehr Einzelheiten in <a href="https://hacks.mozilla.org/2013/12/split-console-pretty-print-minified-js-and-more-firefox-developer-tools-episode-28/" title="Split console, pretty-print minified JS and more – Firefox Developer Tools Episode 28">diesem Beitrag</a>.</p>
+
+<h3 id="CSS">CSS</h3>
+
+<ul>
+ <li>Support for multi-line <a href="/en-US/docs/Web/Guide/CSS/Flexible_boxes">flexbox</a> has been added ({{bug("939901")}}).</li>
+ <li><span id="summary_alias_container"><span id="short_desc_nonedit_display">Longhand East Asian <a href="/en-US/docs/Web/CSS/list-style-type">counter styles</a></span></span> have been implemented ({{bug("934072")}}).</li>
+ <li><span id="summary_alias_container"><span id="short_desc_nonedit_display">Experimental support for the {{cssxref("background-blend-mode")}} property has been added, but is disabled by default</span></span> ({{bug("841601")}}).</li>
+ <li>The <code>none</code> value has been added to {{cssxref("font-variant-ligatures")}} ({{bug("913264")}}).</li>
+ <li>Support for the {{cssxref(":hover")}} user action pseudo-class on pseudo-elements has been implemented ({{bug("922669")}}).</li>
+</ul>
+
+<h3 id="HTML">HTML</h3>
+
+<ul>
+ <li><code>&lt;input type=color&gt;</code> and <code>&lt;input type=number&gt;</code> have been implemented, disabled by default.</li>
+</ul>
+
+<h3 id="JavaScript">JavaScript</h3>
+
+<ul>
+ <li><a href="/en-US/docs/Web/JavaScript/ECMAScript_6_support_in_Mozilla" title="/en-US/docs/Web/JavaScript/ECMAScript_6_support_in_Mozilla">ECMAScript 2015</a> implementation continues:
+
+ <ul>
+ <li>New <code>Array</code> methods have been implemented: {{jsxref("Array.prototype.entries()")}} and {{jsxref("Array.prototype.keys()")}} ({{bug("894658")}}).</li>
+ </ul>
+ </li>
+ <li>A bug causing that {{jsxref("Object.getOwnPropertyNames()")}} did not see unresolved properties of {{jsxref("Error")}} objects has been fixed ({{bug("724768")}}).</li>
+</ul>
+
+<h3 id="InterfacesAPIsDOM">Interfaces/APIs/DOM</h3>
+
+<ul>
+ <li><span id="summary_alias_container"><span id="short_desc_nonedit_display"><code>HTMLVideoElement.canPlayType('video/webm')</code> now reports <code>maybe</code>.</span></span> ({{bug("884275")}}).</li>
+ <li>The {{domxref("DocumentFragment.getElementById()")}} method has been implemented. E.g. <code>document.createDocumentFragment().getElementById()</code> ({{bug("933193")}}).</li>
+ <li>The {{domxref("KeyboardEvent.repeat")}} attribute has been implemented ({{bug("600117")}}).</li>
+ <li>The {{domxref("File")}} constructor, e.g. <code>new File(["foo"], "foo.txt")</code> has been implemented. ({{bug("819900")}}).</li>
+ <li>The {{domxref("NavigatorPlugins.plugins", "navigator.plugins")}} is no more enumerable, for privacy reasons ({{bug(757726)}}).</li>
+ <li>The two attributes {{domxref("Window.screenX")}} and {{domxref("Window.screenY")}} now return CSS pixels (and no more device pixels) ({{bug(943668)}}).</li>
+ <li>The two methods {{domxref("CanvasRenderingContext2D.drawSystemFocusRing()")}} and {{domxref("CanvasRenderingContext2D.drawCustomFocusRing()")}} have been implemented. The preference <code>canvas.focusring.enabled</code> must be set to <code>true</code> to activate both ({{bug(540456)}}).</li>
+ <li>The <code>willReadFrequently</code> context attribute for "<code>2d</code>" canvas contexts has been implemented (see {{domxref("HTMLCanvasElement.getContext()")}}) ({{bug(884226)}}).</li>
+ <li>The following attributes and methods of {{domxref("NavigatorID")}} have been implemented on {{domxref("WorkerNavigator")}} to allow their use in workers: {{domxref("NavigatorID.appCodeName", "appCodeName")}}, {{domxref("NavigatorID.product", "product")}}, and {{domxref("NavigatorID.taintEnabled", "taintEnabled()")}} ({{bug(925847)}}).</li>
+ <li>The {{domxref("NonDocumentTypeChildNode.previousElementSibling" , "previousElementSibling")}} and {domxref("NonDocumentTypeChildNode.nextElementSibling" , "nextElementSibling")}} properties has been removed from {{domxref("DocumentType")}}, because of compatibility problems ({{bug(932501)}}).</li>
+</ul>
+
+<h3 id="MathML">MathML</h3>
+
+<ul>
+ <li>Support of <span id="summary_alias_container"><span id="short_desc_nonedit_display">the </span></span><code>mathvariant</code> attribute has been added ({{bug("114365")}}).</li>
+</ul>
+
+<h3 id="SVG">SVG</h3>
+
+<p><em>No change.</em></p>
+
+<h3 id="AudioVideo">Audio/Video</h3>
+
+<ul>
+ <li><span id="summary_alias_container"><span id="short_desc_nonedit_display">Opus in WebM</span></span> is now supported ({{bug("887978")}}).</li>
+ <li><span id="summary_alias_container"><span id="short_desc_nonedit_display">The VP9 video decoder</span></span> is now supported ({{bug("833023")}}).</li>
+</ul>
+
+<h3 id="Network">Network</h3>
+
+<ul>
+ <li>Support of <code>SPDY/2</code> has been removed.</li>
+</ul>
+
+<h2 id="Changes_for_addon_and_Mozilla_developers">Changes for addon and Mozilla developers</h2>
+
+<ul>
+ <li>The interface of <a href="/en-US/docs/Mozilla/JavaScript_code_modules/DeferredTask.jsm">DeferredTask.jsm</a> has been changed, and the <code>isPending()</code>, <code>start()</code>, <code>flush()</code>, and <code>cancel()</code> methods have been removed ({{bug("940408")}}).</li>
+</ul>
+
+<h2 id="Security">Security</h2>
+
+<ul>
+ <li>CSP was not enforced in sandboxed iframes. This has been fixed ({{bug(886164)}}).</li>
+ <li>The CSP 1.1 experimental <code>script-nonce</code> directive has been implemented. The preference <code>security.csp.experimentalEnabled</code> should be set to <code>true</code> to enable this functionality ({{bug(855326)}}).</li>
+</ul>
+
+<h2 id="See_also">See also</h2>
+
+<ul>
+ <li><a href="https://www.fxsitecompat.com/en-US/versions/28/">Site Compatibility for Firefox 28</a></li>
+</ul>
+
+<h3 id="Older_versions">Older versions</h3>
+
+<p>{{Firefox_for_developers('27')}}</p>
diff --git a/files/de/mozilla/firefox/releases/3.6/index.html b/files/de/mozilla/firefox/releases/3.6/index.html
new file mode 100644
index 0000000000..dcd0edcee8
--- /dev/null
+++ b/files/de/mozilla/firefox/releases/3.6/index.html
@@ -0,0 +1,301 @@
+---
+title: Firefox 3.6 for developers
+slug: Mozilla/Firefox/Releases/3.6
+translation_of: Mozilla/Firefox/Releases/3.6
+---
+<div><section class="Quick_links" id="Quick_Links">
+ <ol>
+ <li class="toggle">
+ <details>
+ <summary>Firefox developer release notes</summary>
+ <ol>
+ <li><a href="/de/docs/Mozilla/Firefox/Releases">Firefox developer release notes</a></li>
+ </ol>
+ </details>
+ </li>
+ <li class="toggle">
+ <details>
+ <summary>Add-ons</summary>
+ <ol>
+ <li><a href="/de/Add-ons/WebExtensions">Browser extensions</a></li>
+ <li><a href="/de/Add-ons/Themes">Themes</a></li>
+ </ol>
+ </details>
+ </li>
+ <li class="toggle">
+ <details>
+ <summary>Firefox internals</summary>
+ <ol>
+ <li><a href="/de/docs/Mozilla/">Mozilla project</a></li>
+ <li><a href="/de/docs/Mozilla/Gecko">Gecko</a></li>
+ <li><a href="/de/docs/Mozilla/Firefox/Headless_mode">Headless mode</a></li>
+ <li><a href="/de/docs/Mozilla/JavaScript_code_modules">JavaScript code modules</a></li>
+ <li><a href="/de/docs/Mozilla/js-ctypes">JS-ctypes</a></li>
+ <li><a href="/de/docs/Mozilla/MathML_Project">MathML project</a></li>
+ <li><a href="/de/docs/Mozilla/MFBT">MFBT</a></li>
+ <li><a href="/de/docs/Mozilla/Projects">Mozilla projects</a></li>
+ <li><a href="/de/docs/Mozilla/Preferences">Preference system</a></li>
+ <li><a href="/de/docs/Mozilla/WebIDL_bindings">WebIDL bindings</a></li>
+ <li><a href="/de/docs/Mozilla/Tech/XPCOM">XPCOM</a></li>
+ <li><a href="/de/docs/Mozilla/Tech/XUL">XUL</a></li>
+ </ol>
+ </details>
+ </li>
+ <li class="toggle">
+ <details>
+ <summary>Building and contributing</summary>
+ <ol>
+ <li><a href="/de/docs/Mozilla/Developer_guide/Build_Instructions">Build instructions</a></li>
+ <li><a href="/de/docs/Mozilla/Developer_guide/Build_Instructions/Configuring_Build_Options">Configuring build options</a></li>
+ <li><a href="/de/docs/Mozilla/Developer_guide/Build_Instructions/How_Mozilla_s_build_system_works">How the build system works</a></li>
+ <li><a href="/de/docs/Mozilla/Developer_guide/Source_Code/Mercurial">Mozilla source code</a></li>
+ <li><a href="/de/docs/Mozilla/Localization">Localization</a></li>
+ <li><a href="/de/docs/Mozilla/Mercurial">Mercurial</a></li>
+ <li><a href="/de/docs/Mozilla/QA">Quality assurance</a></li>
+ <li><a href="/de/docs/Mozilla/Using_Mozilla_code_in_other_projects">Using Mozilla code in other projects</a></li>
+ </ol>
+ </details>
+ </li>
+ </ol>
+</section></div><p><a class="external" href="http://www.firefox.com/" title="http://www.firefox.com/">Firefox 3.6</a> offers support for new and developing web standards, increased performance, and an overall better experience for web users and developers. This page provides links to articles covering the new capabilities of Firefox 3.6.</p>
+
+<h2 id="For_web_site_and_application_developers">For web site and application developers</h2>
+
+<h3 id="CSS">CSS</h3>
+
+<dl>
+ <dt><a href="/en-US/docs/CSS/Using_CSS_gradients" title="en-US/docs/Using gradients">Using gradients</a></dt>
+ <dd>Firefox 3.6 adds support for the proposed <a href="/de/docs/Web/CSS/-moz-linear-gradient" title="Die Beschreibung hierüber wurde bisher noch nicht geschrieben. Bitte überlege, mitzuwirken!"><code>-moz-linear-gradient</code></a> and <a href="/de/docs/Web/CSS/-moz-radial-gradient" title="Die Beschreibung hierüber wurde bisher noch nicht geschrieben. Bitte überlege, mitzuwirken!"><code>-moz-radial-gradient</code></a> properties for <a href="/de/docs/Web/CSS/background" title="Die background CSS Eigenschaft ist eine Kurzschreibweise, um die verschiedenen Hintergrundwerte an einer einzigen Stelle im Stylesheet zu setzen. background kann dazu verwendet werden, einen oder mehrere der folgenden Werte zu setzen: background-clip, background-color, background-image, background-origin, background-position, background-repeat, background-size und background-attachment."><code>background</code></a>.</dd>
+ <dt><a href="/en-US/docs/CSS/Multiple_backgrounds" title="en-US/docs/CSS/Multiple backgrounds">Multiple backgrounds</a></dt>
+ <dd>The <a href="/de/docs/Web/CSS/background" title="Die background CSS Eigenschaft ist eine Kurzschreibweise, um die verschiedenen Hintergrundwerte an einer einzigen Stelle im Stylesheet zu setzen. background kann dazu verwendet werden, einen oder mehrere der folgenden Werte zu setzen: background-clip, background-color, background-image, background-origin, background-position, background-repeat, background-size und background-attachment."><code>background</code></a> property (as well as <a href="/de/docs/Web/CSS/background-color" title="Die background-color CSS Eigenschaft setzt die Hintergrundfarbe eines Elements, entweder durch einen Farbwert oder das Schlüsselwort transparent."><code>background-color</code></a>, <a href="/de/docs/Web/CSS/background-image" title="Die background-image-Eigenschaft legt ein oder mehrere Hintergrundbilder für ein Element fest. Die einzelnen Bilder werden übereinander gestapelt, wobei die erste Schicht so dargestellt wird, dass sie dem Benutzer am nächsten erscheint. Hintergrundbilder werden immer über Hintergrundfarben gelegt."><code>background-image</code></a>, <a href="/de/docs/Web/CSS/background-position" title="Die background-position Eigenschaft bestimmt die Position des Hintergrundbildes"><code>background-position</code></a>, <a href="/de/docs/Web/CSS/background-repeat" title="Die background-repeat Eigenschaft bestimmt, ob und wie Hintergrundbilder wiederholt werden."><code>background-repeat</code></a>, and <a href="/de/docs/Web/CSS/background-attachment" title="Die background-attachment Eigenschaft bestimmt, ob, das über background-image festgelegte Hintergrundbild beim Scrollen mit wandert oder an einem festen Ort fixiert ist."><code>background-attachment</code></a>) now supports multiple backgrounds. This lets you specify multiple backgrounds that are rendered atop one another in layers.</dd>
+ <dt><a href="/en-US/docs/CSS/Media_queries#Mozilla-specific_media_features" title="en-US/docs/CSS/Media queries#Mozilla-specific media features">Mozilla-specific media features</a></dt>
+ <dd>Media features have been added for Mozilla-specific system metrics, so that <a href="/en-US/docs/CSS/Media_queries" title="en-US/docs/CSS/Media queries">media queries</a> can be used to more safely check on the availability of features such as touch support.</dd>
+ <dt><a href="/en-US/docs/CSS/Scaling_background_images" title="en-US/docs/CSS/Scaling background images">Scaling background images</a></dt>
+ <dd>The <code>background-size </code>property from the <a class="external" href="http://dev.w3.org/csswg/css3-background/" title="http://dev.w3.org/csswg/css3-background/#the-background-size-property">CSS 3 Backgrounds and Borders draft</a> is now supported under the name <a href="/de/docs/Web/CSS/-moz-background-size" title="Die Beschreibung hierüber wurde bisher noch nicht geschrieben. Bitte überlege, mitzuwirken!"><code>-moz-background-size</code></a>.</dd>
+ <dt><a href="/en-US/docs/WOFF" title="en-US/docs/About WOFF">WOFF font support</a></dt>
+ <dd><a href="/de/docs/Web/CSS/@font-face" title="Die @font-face CSS at-Regel erlaubt Web-Autoren, Texte mit spezifischen Schriftarten (Fonts), die auf dem jeweiligen Webserver abgelegt sind,  darzustellen. Durch die @font-face Regel sind Web-Autoren nicht mehr länger auf die eingeschränkte Zahl an Fonts angewiesen, die auf den Computern von Usern installiert ist. Die @font-face at Regel lässt sich nicht nur in der oberen CSS-Ebene einbinden, sondern auch in irgendeiner CSS conditional-group at-Regel."><code>@font-face</code></a> now supports the WOFF downloadable font file format.</dd>
+ <dt><a href="/en-US/docs/CSS/pointer-events" title="en-US/docs/CSS/pointer-events">Pointer events</a></dt>
+ <dd>The <a href="/de/docs/Web/CSS/pointer-events" title="Die CSS-Eigenschaft pointer-events erlaubt es dem Autor zu steuern, unter welchen Umständen (wenn überhaupt) ein spezifisches grafisches Element target eines Mouse-Events wird. Wenn die Eigenschaft nicht gesetzt ist, werden die Eigenschaften von visiblePainted auf den SVG Inhalt angewandt."><code>pointer-events</code></a> property lets content specify whether or not an element may be the target of mouse pointer events.</dd>
+</dl>
+
+<h4 id="Miscellaneous_CSS_changes">Miscellaneous CSS changes</h4>
+
+<ul>
+ <li>The <a href="/en-US/docs/CSS/length#Relative_length_units" title="en-US/docs/CSS/length#Relative length units"><code>rem</code></a> length unit from <a class="external" href="http://www.w3.org/TR/css3-values/#lengths" title="http://www.w3.org/TR/css3-values/#lengths">CSS3 Values and Units</a> is now supported. <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=472195" title="FIXED: support css3 root em ('rem' or 're') units">Bug 472195</a></li>
+ <li><a href="/de/docs/Web/CSS/image-rendering" title="Die Beschreibung hierüber wurde bisher noch nicht geschrieben. Bitte überlege, mitzuwirken!"><code>image-rendering</code></a> is supported for images, background images, videos and canvases. <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=423756" title="FIXED: Request: Switch for authors to turn on/off bilinear filtering when enlarging images">Bug 423756</a></li>
+ <li><a href="/de/docs/Web/CSS/text-align" title="Die CSS Eigenschaft text-align beschreibt, wie Inlineinhalte wie Text in ihrem Elternblockelement ausgerichtet werden. text-align steuert nicht die Ausrichtung von Blockelementen selbst, nur deren Inlineinhalte."><code>text-align</code></a>:end is now supported. <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=299837" title="FIXED: [FIX]add support for text-align: end">Bug 299837</a></li>
+ <li>DOM changes to elements using the table <a href="/de/docs/Web/CSS/display" title="Die display Eigenschaft legt den Typ einer Rendering-Box eines Elements fest. Für HTML sind die standardmäßigen display Werte in der HTML-Spezifikation beschrieben und in den User- bzw. Browser-Stylesheets angegeben. Für XML-Dokumente ist der voreingestellte Wert inline."><code>display</code></a> types now work much better.</li>
+ <li>Added <a href="/de/docs/Web/CSS/:-moz-locale-dir(ltr)" title='Die :-moz-locale-dir(ltr) CSS Pseudoklasse matcht ein Element, falls die Benutzerschnittstelle von links nach rechts angezeigt wird. Dies wird durch das Setzen der Einstellung intl.uidirection.locale (wobei locale die aktuelle Sprachumgebung ist) auf "ltr" bestimmt.'><code>:-moz-locale-dir(ltr)</code></a> and <a href="/de/docs/Web/CSS/:-moz-locale-dir(rtl)" title='Die :-moz-locale-dir(rtl) CSS Pseudoklasse matcht ein Element, falls die Benutzerschnittstelle von rechts nach links angezeigt wird. Dies wird durch das Setzen der Einstellung intl.uidirection.locale (wobei locale die aktuelle Sprachumgebung ist) auf "rtl" bestimmt.'><code>:-moz-locale-dir(rtl)</code></a> to make it easier to customize layouts based on whether the user interface is being displayed using a left-to-right or a right-to-left locale. <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=478416" title="FIXED: Replace chromedir with something more sane">Bug 478416</a></li>
+ <li>Added support for the <a href="/de/docs/Web/CSS/:indeterminate" title='Die :indeterminate CSS Pseudoklasse repräsentiert alle &amp;lt;input type="checkbox"> Elements, deren indeterminate DOM Eigenschaft durch JavaScript auf true gesetzt wurde. Darüber hinaus wird sie in manchen Browsern dazu verwendet, &amp;lt;progress> Elemente in einem Zwischenstatus zu finden.'><code>:indeterminate</code></a> pseudo-class, which matches <code>checkbox</code> <a class="internal" href="/en-US/docs/HTML/Element/Input" title="en-US/docs/HTML/Element/input"><code>input</code></a> elements whose <code>indeterminate</code> attribute is <code>true</code>.</li>
+ <li>Windowed plugins are no longer displayed in CSS transforms, because they can't be transformed properly by the compositor.</li>
+</ul>
+
+<h3 id="HTML">HTML</h3>
+
+<dl>
+ <dt><a href="/en-US/docs/Using_files_from_web_applications" title="en-US/docs/Using files from web applications">Using files from web applications</a></dt>
+ <dd>Support for the new HTML5 File API has been added to Gecko, making it possible for web applications to access local files selected by the user. This includes support for selecting multiple files using the <code>input type="file"</code> HTML element's new <code>multiple</code> attribute.</dd>
+ <dt>HTML5 video supports poster frames</dt>
+ <dd>The <code>poster</code> attribute is now supported for the <a class="internal" href="/en-US/docs/HTML/Element/Video" title="en-US/docs/HTML/Element/Video"><code>video</code></a> element, allowing content to specify a poster frame to be displayed until the video begins to play.</dd>
+ <dt>Checkboxes and radio buttons support the <code>indeterminate</code> property</dt>
+ <dd>HTML <a class="internal" href="/en-US/docs/HTML/Element/Input" title="en-US/docs/HTML/Element/input"><code>input</code></a> elements of types <code>checkbox</code> and <code>radio</code> now support the indeterminate property, which allows a third, "indeterminate" state.</dd>
+ <dt>Canvas image smoothing can be controlled</dt>
+ <dd>The new <a class="internal" href="/en-US/docs/Canvas_tutorial/Using_images#Controlling_image_scaling_behavior" title="en-US/docs/Canvas tutorial/Using images#Controlling image scaling behavior"><code>mozImageSmoothingEnabled</code></a> property can be used to turn on and off image smoothing when scaling in <a class="internal" href="/en-US/docs/HTML/Element/canvas" title="en-US/docs/HTML/Element/canvas"><code>canvas</code></a> elements.</dd>
+ <dt>Asynchronous script execution</dt>
+ <dd>By setting the <code>async</code> attribute on a <a href="/en-US/docs/HTML/Element/Script" title="en-US/docs/HTML/Element/Script"><code>script</code></a> element, the <code>script</code> will not block loading or display of the rest of the page. Instead the <code>script</code> executes as soon as it is downloaded.</dd>
+</dl>
+
+<h3 id="JavaScript">JavaScript</h3>
+
+<p>Gecko 1.9.2 introduces JavaScript 1.8.2, which adds a number of language features from the <a href="/en-US/docs/JavaScript/ECMAScript_5_support_in_Mozilla" title="https://developer.mozilla.org/en-US/docs/JavaScript/ECMAScript_5_support_in_Mozilla">ECMAScript 5 standard</a>:</p>
+
+<ul>
+ <li><a href="/en-US/docs/JavaScript/Reference/Global_Objects/Date/parse" title="en-US/docs/Core JavaScript 1.5 Reference/Global Objects/Date/parse"><code>Date.parse()</code></a> can now parse ISO 8601 dates like YYYY-MM-DD.</li>
+ <li>
+ <p>The <a href="/en-US/docs/JavaScript/Reference/Global_Objects/Function/prototype" title="en-US/docs/Core JavaScript 1.5 Reference/Global Objects/Function/prototype"><code>prototype</code></a> property of function instances is no longer enumerable.</p>
+ </li>
+</ul>
+
+<dl>
+</dl>
+
+<h3 id="DOM">DOM</h3>
+
+<dl>
+ <dt>Web workers can now self-terminate</dt>
+ <dd><a href="/en-US/docs/DOM/Using_web_workers" title="en-US/docs/Using web workers">Workers</a> now support the <code><a href="https://developer.mozilla.org/de/docs/XPCOM_Interface_Reference/nsIWorkerScope#close()">nsIWorkerScope.close()</a></code> method, which allows them to terminate themselves.</dd>
+ <dt>Drag and drop now supports files</dt>
+ <dd>The <a href="/en-US/docs/DragDrop/DataTransfer" title="en-US/docs/DragDrop/DataTransfer"><code>DataTransfer</code></a> object provided to drag listeners now includes a list of files that were dragged.</dd>
+ <dt>Checking to see if an element matches a specified CSS selector</dt>
+ <dd>The new <a href="/de/docs/Web/API/Node/mozMatchesSelector" title="Die Beschreibung hierüber wurde bisher noch nicht geschrieben. Bitte überlege, mitzuwirken!"><code>element.mozMatchesSelector</code></a> method lets you determine whether or not an element matches a specified CSS selector. See <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=518003" title="FIXED: implement function to check whether element matches a CSS selector">Bug 518003</a>.</dd>
+ <dt><a href="/en-US/docs/Detecting_device_orientation" title="en-US/docs/Detecting device orientation">Detecting device orientation</a></dt>
+ <dd>Content can now detect the orientation of the device if it has a supported accelerometer, using the <a href="/en-US/docs/DOM/MozOrientation" title="en-US/docs/DOM/MozOrientation"><code>MozOrientation</code></a> event. Firefox 3.6 supports the accelerometer in Mac laptops.</dd>
+ <dt><a href="/en-US/docs/DOM/Detecting_document_width_and_height_changes" title="en-US/docs/DOM/Detecting document width and height changes">Detecting document width and height changes</a></dt>
+ <dd>The new <code>MozScrollAreaChanged</code> event is dispatched whenever the document's <code>scrollWidth</code> and/or <code>scrollHeight</code> properties change.</dd>
+</dl>
+
+<h4 id="Miscellaneous_DOM_changes">Miscellaneous DOM changes</h4>
+
+<ul>
+ <li>The <code>getBoxObjectFor()</code> method has been <strong>removed</strong>, as it was non-standard and exposed even more non-standard stuff to the web. See <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=340571" title="FIXED: getBoxObjectFor leaking-onto-the-Web disaster">Bug 340571</a>. Also affects <a class="external" href="http://mootools.net/" title="http://mootools.net/">MooTools</a> which uses this call for Gecko detection; this has been fixed in the latest version of MooTools, so be sure to update.</li>
+ <li>The new <a class="internal" href="/en-US/docs/DOM/window.mozInnerScreenX" title="en-US/docs/DOM/window.mozInnerScreenX"><code>mozInnerScreenX</code></a> and <a class="internal" href="/en-US/docs/DOM/window.mozInnerScreenY" title="en-US/docs/DOM/window.mozInnerScreenY"><code>mozInnerScreenY</code></a> properties on DOM windows have been added; these return the screen coordinates of the top-left corner of the window's viewport.</li>
+ <li>The new <code>mozScreenPixelsPerCSSPixel</code> attribute on the <code><a href="/de/docs/XPCOM_Interface_Referenz/nsIDOMWindowUtils" title="">nsIDOMWindowUtils</a></code> interface, accessible only to chrome, provides a conversion factor between CSS pixels and screen pixels; this value can vary based on the zoom level of the content.</li>
+ <li>When the page's URI's document fragment identifier (the part after the "#" (hash) character) changes, a new <code>hashchange</code> event is sent to the page. See <a class="internal" href="/en-US/docs/DOM/window.onhashchange" title="window.onhashchange">window.onhashchange</a> for more information. <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=385434" title="FIXED: Add support for HTML5 onhashchange (event for named anchor changes)">Bug 385434</a></li>
+ <li>The attribute <a class="internal" href="/en-US/docs/DOM/document.readyState" title="en-US/docs/DOM/document.readyState"><code>document.readyState</code></a> is now supported. <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=347174" title='FIXED: Implement document.readystate == "complete"'>Bug 347174</a></li>
+ <li>Support for HTML5's <code><a class="internal" href="/en-US/docs/DOM/element.classList" title="element.classList">element.classList</a></code> to allow easier handling of the class attribute. <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=501257" title="FIXED: Implement HTML 5's HTMLElement.classList property">Bug 501257</a></li>
+ <li><code>localName</code> and <code>namespaceURI</code> in HTML documents now behave like they do in XHTML documents: <code>localName</code> returns in lower case and <code>namespaceURI</code> for HTML elements is <code>"<a class="external" href="http://www.w3.org/1999/xhtml" rel="freelink">http://www.w3.org/1999/xhtml</a>"</code>.</li>
+ <li><a href="/en-US/docs/DOM/element.getElementsByTagNameNS" title="en-US/docs/DOM/element.getElementsByTagNameNS"><code>element.getElementsByTagNameNS</code></a> no longer lowercases its argument, so upper-case ASCII letters in the argument make matches against HTML elements fail. The same is true for <a href="/en-US/docs/DOM/document.getElementsByTagNameNS" title="en-US/docs/DOM/document.getElementsByTagNameNS"><code>document.getElementsByTagNameNS</code></a>.</li>
+ <li>Support has been added for addresses in geolocation via the <code><a href="/de/docs/XPCOM_Interface_Referenz/nsIDOMGeoPositionAddress" title="">nsIDOMGeoPositionAddress</a></code> interface and a new field added to <code><a href="/de/docs/XPCOM_Interface_Referenz/nsIDOMGeoPosition" title="">nsIDOMGeoPosition</a></code>.</li>
+ <li>The <a href="/de/docs/Web/API/Window/getComputedStyle" title="Die Methode Window.getComputedStyle() gibt ein Objekt zurück, das alle CSS-Eigenschaften eines Elements enthält; und zwar nachdem alle aktiven Stylesheets geladen und Basisberechungen ausgeführt wurden."><code>window.getComputedStyle</code></a> function now returns quotes within <code>url()</code> values.</li>
+</ul>
+
+<h3 id="XPath">XPath</h3>
+
+<dl>
+ <dt>The choose() XPath method is now supported</dt>
+ <dd>The <a href="/en-US/docs/XPath/Functions/choose" title="en-US/docs/XPath/Functions/choose"><code>choose()</code></a> method is now supported by our implementation of <a href="/en-US/docs/XPath" title="en-US/docs/XPath">XPath</a>.</dd>
+</dl>
+
+<h2 id="For_XUL_and_add-on_developers">For XUL and add-on developers</h2>
+
+<p>If you're an extension developer, you should start by reading <a class="internal" href="/en-US/docs/Updating_extensions_for_Firefox_3.6" title="en-US/docs/Updating extensions for Firefox 3.6">Updating extensions for Firefox 3.6</a>, which offers a helpful overview of what changes may affect your extension. Plug-in developers should read <a class="internal" href="/en-US/docs/Updating_plug-ins_for_Firefox_3.6" title="en-US/docs/Updating plug-ins for Firefox 3.6">Updating plug-ins for Firefox 3.6</a>.</p>
+
+<h3 id="New_features">New features</h3>
+
+<dl>
+ <dt><a href="/en-US/docs/Detecting_device_orientation" title="en-US/docs/Detecting device orientation">Detecting device orientation</a></dt>
+ <dd>Content can now detect the orientation of the device if it has a supported accelerometer, using the <a href="/en-US/docs/DOM/MozOrientation" title="en-US/docs/DOM/MozOrientation"><code>MozOrientation</code></a> event. Firefox 3.6 supports the accelerometer in Mac laptops.</dd>
+ <dt><a href="/en-US/docs/Monitoring_HTTP_activity" title="en-US/docs/Monitoring HTTP activity">Monitoring HTTP activity</a></dt>
+ <dd>You can now monitor HTTP transactions to observe requests and responses in real time.</dd>
+ <dt><a href="/en-US/docs/Working_with_the_Windows_taskbar" title="en-US/docs/Working with the Windows taskbar">Working with the Windows taskbar</a></dt>
+ <dd>It's now possible to customize the appearance of windows in the taskbar in Windows 7 or later. <em>This has been disabled by default in Firefox 3.6.</em></dd>
+</dl>
+
+<h3 id="Places">Places</h3>
+
+<ul>
+ <li>Places queries can now use the <code>redirectsMode</code> attribute on the <code><a href="/de/docs/XPCOM_Interface_Referenz/nsINavHistoryQueryOptions" title="">nsINavHistoryQueryOptions</a></code> interface to specify whether or not to include redirected pages in results.</li>
+ <li>Added the new <code><a href="https://developer.mozilla.org/de/docs/XPCOM_Interface_Reference/nsIFaviconService#expireAllFavicons()">nsIFaviconService.expireAllFavicons()</a></code> method to the <code><a href="/de/docs/XPCOM_Interface_Referenz/nsIFaviconService" title="">nsIFaviconService</a></code> interface.</li>
+</ul>
+
+<h3 id="Storage">Storage</h3>
+
+<dl>
+ <dt><a href="/en-US/docs/Storage#Collation_(sorting)" title="en-US/docs/Storage#Collation (sorting)">Locale-aware collation of data is now supported by the Storage API</a></dt>
+ <dd>Gecko 1.9.2 added several new collation methods to provide optimized collation (sorting) of results using locale-aware techniques.</dd>
+ <dt><a href="/en-US/docs/mozIStorageStatementParams#Enumeration_of_properties" title="en-US/docs/mozIStorageStatementParams#Enumeration of properties">Properties on a statement can now be enumerated</a></dt>
+ <dd>You can now use a <code><a class="internal" href="/en-US/docs/JavaScript/Reference/Statements/for...in" title="en-US/docs/Core JavaScript 1.5 Reference/Statements/For...in">for..in</a></code> enumeration to enumerate all the properties on a statement.</dd>
+ <dt>mozIStorageStatement's getParameterIndex changed behavior between 3.5 and 3.6.</dt>
+ <dd>See <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=528166" title="mozIStorageStatement getParameterIndex causes NS_ERROR_ILLEGAL_VALUE">Bug 528166</a> for details.</dd>
+ <dt>Asynchronously bind multiple sets of parameters and execute a statement.</dt>
+ <dd>See <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=490085" title="FIXED: Add ability to bind multiple sets of parameters and execute asynchronously">Bug 490085</a> for details. Documentation coming soon.</dd>
+</dl>
+
+<h3 id="Preferences">Preferences</h3>
+
+<ul>
+ <li>The <code><a href="/de/docs/XPCOM_Interface_Referenz/nsIContentPrefService" title="">nsIContentPrefService</a></code> interface has two new methods: <code><a href="https://developer.mozilla.org/de/docs/XPCOM_Interface_Reference/nsIContentPrefService#getPrefsByName()">nsIContentPrefService.getPrefsByName()</a></code> and <code><a href="https://developer.mozilla.org/de/docs/XPCOM_Interface_Reference/nsIContentPrefService#removePrefsByName()">nsIContentPrefService.removePrefsByName()</a></code>.</li>
+</ul>
+
+<h3 id="Themes">Themes</h3>
+
+<p>See <a class="internal" href="/en-US/docs/Updating_themes_for_Firefox_3.6" title="en-US/docs/Updating themes for Firefox 3.6">Updating themes for Firefox 3.6</a> for a list of changes related to themes.</p>
+
+<dl>
+ <dt><a href="/en-US/docs/Themes/Lightweight_themes" title="en-US/docs/Themes/Lightweight themes">Lightweight themes</a></dt>
+ <dd>Firefox 3.6 supports lightweight themes; these are easy-to-create themes that simply apply a background to the top (URL bar and button bar) and bottom (status bar) of browser windows. This is an integration of the existing <a class="external" href="http://www.getpersonas.com/" title="http://www.getpersonas.com/">Personas</a> theme architecture into Firefox.</dd>
+</dl>
+
+<h3 id="Miscellaneous">Miscellaneous</h3>
+
+<ul>
+ <li>Firefox will no longer load third-party components installed in its internal components directory. This helps to ensure stability by preventing buggy third-party components from being executed. Developers that install components this way must <a href="/en-US/docs/Migrating_raw_components_to_add-ons" title="en-US/docs/Migrating raw components to add-ons">repackage their components as XPI packages</a> so they can be installed as standard add-ons.</li>
+ <li><code>contents.rdf</code> is no longer supported for registering chrome in extensions. You must now use the <a class="internal" href="/en-US/docs/Install_Manifests" title="en-US/docs/Install manifests"><code>chrome.manifest</code></a> file instead. See <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=492008" title="FIXED: Drop support for contents.rdf chrome registrations">Bug 492008</a>.</li>
+ <li>Added support for hiding the menu bar automatically. See <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=477256" title="FIXED: Implement menubar auto-hiding in toolkit">Bug 477256</a>.</li>
+ <li>Added support for the <code>container-live-role</code> attribute to objects. See <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=391829" title="FIXED: Add support for container-live-role to object attributes">Bug 391829</a>.</li>
+ <li>The <code>tabs-closebutton</code> binding has been removed. See <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=500971" title="FIXED: Remove obsolete tabs-closebutton binding">Bug 500971</a>.</li>
+ <li>Added support to <code><a href="/de/docs/XPCOM_Interface_Referenz/nsISound" title="">nsISound</a></code> for playing sounds based on events that have occurred. See <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=502799" title="FIXED: add new nsISound method for the event sounds">Bug 502799</a>.</li>
+ <li>The syntax for the <code><a href="/de/docs/XPCOM_Interface_Referenz/nsITreeView" title="">nsITreeView</a></code> methods <code><a href="https://developer.mozilla.org/de/docs/XPCOM_Interface_Reference/nsITreeView#canDrop()">nsITreeView.canDrop()</a></code> and <code><a href="https://developer.mozilla.org/de/docs/XPCOM_Interface_Reference/nsITreeView#drop()">nsITreeView.drop()</a></code> has changed to support the new drag &amp; drop API introduced in Gecko 1.9. See <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=455590" title="FIXED: Allow new dnd api with tree views">Bug 455590</a>.</li>
+ <li>Added support to snap the mouse cursor to the default button of dialog or wizard on Windows, see <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=76053" title='FIXED: Windows mouse integration: "Snap to default button in dialog boxes"'>Bug 76053</a>. This is processed automatically by dialog and wizard element. But if a XUL application creates a window using the <code>window</code> element and it has a default button, it needs to call <code><a href="https://developer.mozilla.org/de/docs/XPCOM_Interface_Reference/nsIDOMChromeWindow#notifyDefaultButtonLoaded()">nsIDOMChromeWindow.notifyDefaultButtonLoaded()</a></code> during the window's <code>onload</code> event handler.</li>
+ <li>The <code><a href="/de/docs/XPCOM_Interface_Referenz/nsILocalFileMac" title="">nsILocalFileMac</a></code> interface has had two methods removed: <code>setFileTypeAndCreatorFromMIMEType()</code> and <code>setFileTypeAndCreatorFromExtension()</code>.</li>
+ <li>The new <a class="internal" href="/en-US/docs/JavaScript_code_modules/NetUtil.jsm" title="en-US/docs/JavaScript code modules/NetUtil.jsm"><code>NetUtils.jsm</code></a> code module provides an easy-to-use method for asynchronously copying data from an input stream to an output stream.</li>
+ <li>The new <a class="internal" href="/en-US/docs/JavaScript_code_modules/openLocationLastURL.jsm" title="en-US/docs/JavaScript code modules/openLocationLastURL.jsm"><code>openLocationLastURL.jsm</code></a> code module makes it easy to read and change the value of the "Open Location" dialog box's remembered URL while properly taking private browsing mode into account.</li>
+ <li>On Windows, the <code><a href="/de/docs/XPCOM_Interface_Referenz/nsIScreen" title="">nsIScreen</a></code> interface now reports 24 bit per pixel color depths when the graphics driver claims 32 bits, since 24 more accurately represents the actual number of color pixels in use.</li>
+ <li>Menu bars can now be hidden on Windows, using the new <code id="a-autohide"><a href="https://developer.mozilla.org/de/docs/Mozilla/Tech/XUL/Attribute/autohide">autohide</a></code> attribute on the <code><a href="/de/docs/Mozilla/Tech/XUL/toolbar" title="toolbar">toolbar</a></code> XUL element.</li>
+ <li>The <span id="m-loadOneTab"><code><a href="https://developer.mozilla.org/de/docs/Mozilla/Tech/XUL/Methoden/loadOneTab">loadOneTab</a></code></span> and <span id="m-addTab"><code><a href="https://developer.mozilla.org/de/docs/Mozilla/Tech/XUL/Methoden/addTab">addTab</a></code></span> methods now accept a new <code>relatedToCurrent</code> parameter and, in addition, allow the parameters to be specified by name, since nearly all of the parameters are optional.</li>
+ <li>The "<a href="/en-US/docs/Install_Manifests#hidden" title="en-US/docs/Install Manifests#hidden">hidden</a>" property is no longer supported in install manifests; it's no longer possible to prevent the user from seeing add-ons in the add-on manager window.</li>
+ <li>The <code>@mozilla.org/webshell;1</code> component no longer exists; you need to use <code>@mozilla.org/docshell;1</code> instead.</li>
+ <li>You can now register with the update-timer category to schedule timer events without having to instantiate the object that the timer will eventually call into; it will instead be instantiated when it's needed. See <code><a href="https://developer.mozilla.org/de/docs/XPCOM_Interface_Reference/nsIUpdateTimerManager#registerTimer()">nsIUpdateTimerManager.registerTimer()</a></code> for details.</li>
+ <li>The <a href="/en-US/docs/NPN_GetValue" title="en-US/docs/NPN GetValue"><code>NPN_GetValue()</code></a> function no longer provides access to XPCOM through the variable values <code>NPNVserviceManager</code>, <code>NPNVDOMelement</code>, and <code>NPNVDOMWindow</code>. This is part of the work toward making plugins run in separate processes in a future version of Gecko.</li>
+ <li>Plugins are no longer scriptable through XPCOM (IDL) interfaces, <a href="/en-US/docs/Gecko_Plugin_API_Reference/Scripting_plugins" title="en-US/docs/Gecko Plugin API Reference:Scripting plugins">NPRuntime</a> is the API to use for making plugins scriptable, and <a href="/en-US/docs/NPP_GetValue" title="en-US/docs/NPP GetValue"><code>NPP_GetValue()</code></a> is no longer called to with the value <code>NPPVpluginScriptableInstance</code> or <code>NPPVpluginScriptableIID</code>. This is part of the work toward making plugins run in separate processes in a future version of Gecko.</li>
+</ul>
+
+<h2 id="For_FirefoxGecko_developers">For Firefox/Gecko developers</h2>
+
+<p>Certain changes are only really interesting if you work on the internals of Firefox itself.</p>
+
+<h3 id="Interfaces_merged">Interfaces merged</h3>
+
+<p>The following interfaces have been combined together:</p>
+
+<ul>
+ <li><code>nsIPluginTagInfo2</code> has been merged into <code>nsIPluginTagInfo</code>.</li>
+ <li><code>nsIPluginInstanceInternal</code>, <code>nsIPPluginInstancePeer</code>, <code>nsIPluginInstancePeer1</code>, <code>nsIPluginInstancePeer2</code>, and <code>nsIPluginInstancePeer3</code> have all been merged into <code>nsIPluginInstance</code>.</li>
+ <li><code>nsIWindowlessPlugInstPeer</code> has been merged into <code>nsIPluginInstance</code>.</li>
+ <li><code>nsIPluginManager</code> and <code>nsIPluginManager2</code> have been merged into <code>nsIPluginHost</code>.</li>
+</ul>
+
+<h3 id="Interfaces_removed">Interfaces removed</h3>
+
+<p>The following interfaces have been removed entirely because they were unused, unimplemented, or obsolete:</p>
+
+<ul>
+ <li><code>nsIFullScreen</code></li>
+ <li><code>nsIDOMSVGListener</code></li>
+ <li><code>nsIDOMSVGZoomListener</code></li>
+ <li><code>nsIInternetConfigService</code></li>
+ <li><code>nsIDKey</code></li>
+ <li><code>nsIEventHandler</code></li>
+ <li><code>nsIJRILiveConnectPIPeer</code></li>
+ <li><code>nsIJRILiveConnectPlugin</code></li>
+ <li><code>nsIScriptablePlugin</code></li>
+ <li><code>nsIClassicPluginFactory</code></li>
+ <li><code>nsIFileUtilities</code></li>
+</ul>
+
+<h3 id="Interfaces_moved">Interfaces moved</h3>
+
+<p>The following interfaces have been relocated from their previous IDL files into new ones:</p>
+
+<ul>
+ <li><code>nsIDOMNSCSS2Properties</code> is now located in its own IDL file (<code>dom/interfaces/css/nsIDOMCSS2Properties.idl</code>).</li>
+ <li><code><a href="/de/docs/XPCOM_Interface_Referenz/nsIUpdateTimerManager" title="">nsIUpdateTimerManager</a></code> is now located in its own IDL file.</li>
+</ul>
+
+<p>A large number of interfaces have been moved. See <a href="/en-US/docs/Interfaces_moved_in_Firefox_3.6" title="en-US/docs/Interfaces moved in Firefox 3.6">Interfaces moved in Firefox 3.6</a> for a complete list.</p>
+
+<h3 id="Other_interface_changes">Other interface changes</h3>
+
+<p>The following assorted changes have been made:</p>
+
+<ul>
+ <li>The <code>nsIPlugin</code> interface now inherits from <code><a href="/de/docs/XPCOM_Interface_Referenz/nsISupports" title="">nsISupports</a></code> instead of <code><a href="/de/docs/XPCOM_Interface_Referenz/nsIFactory" title="">nsIFactory</a></code>.</li>
+ <li>The <code>nsIPluginHost</code> interface now inherits from <code><a href="/de/docs/XPCOM_Interface_Referenz/nsISupports" title="">nsISupports</a></code> instead of <code><a href="/de/docs/XPCOM_Interface_Referenz/nsIFactory" title="">nsIFactory</a></code>.</li>
+ <li>The <code>nsIFrame</code> interface now inherits from <code>nsQueryFrame</code> instead of <code><a href="/de/docs/XPCOM_Interface_Referenz/nsISupports" title="">nsISupports</a></code>.</li>
+ <li>The <code><a href="/de/docs/XPCOM_Interface_Referenz/nsIDeviceContext" title="">nsIDeviceContext</a></code> method <code>getPaletteInfo()</code> has been removed, as it was never implemented.</li>
+ <li>The <code><a href="/de/docs/XPCOM_Interface_Referenz/nsIScriptContext" title="">nsIScriptContext</a></code> method <code>reportPendingException()</code> has been removed, since it was no longer being used.</li>
+</ul>
+
+<h3 id="Changes_in_accessibility_code">Changes in accessibility code</h3>
+
+<ul>
+ <li>The <span style="font-family: monospace;">EVENT</span><code>_REORDER</code> <a href="/en-US/docs/XPCOM_Interface_Reference/nsIAccessibleEvent" title="en-US/docs/XPCOM Interface Reference/nsIAccessibleEvent">accessibility event</a> is now sent when the children of frames and iframes change, as well as when the main document's children change. See <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=420845" title="FIXED: Fire event_reorder on any embedded frames/iframes whos document has just loaded.">Bug 420845</a>.</li>
+ <li>The <code><a href="https://developer.mozilla.org/de/docs/XPCOM_Interface_Reference/nsIAccessibleTable#selectRow()">nsIAccessibleTable.selectRow()</a></code> now correctly removes any current selection before selecting the specified row.</li>
+</ul>
+
+<h2 id="See_also">See also</h2>
+
+<div><div class="multiColumnList">
+<ul>
+<li><a href="/de/docs/Mozilla/Firefox/Releases/3.5">Firefox 3.5 for developers</a></li><li><a href="/de/docs/Mozilla/Firefox/Releases/3">Firefox 3 for developers</a></li><li><a href="/de/docs/Mozilla/Firefox/Releases/2">Firefox 2 for developers</a></li><li><a href="/de/docs/Mozilla/Firefox/Releases/1.5">Firefox 1.5 for developers</a></li></ul>
+</div></div>
diff --git a/files/de/mozilla/firefox/releases/34/index.html b/files/de/mozilla/firefox/releases/34/index.html
new file mode 100644
index 0000000000..b0fcd927ab
--- /dev/null
+++ b/files/de/mozilla/firefox/releases/34/index.html
@@ -0,0 +1,107 @@
+---
+title: Firefox 34 für Entwickler
+slug: Mozilla/Firefox/Releases/34
+tags:
+ - Firefox
+ - Releases
+translation_of: Mozilla/Firefox/Releases/34
+---
+<div>{{FirefoxSidebar}}</div><p>Möchtest du helfen Firefox 34 zu dokumentieren? Schaue dir die <a href="http://beta.elchi3.de/doctracker/#list=fx&amp;version=34.0">Liste der Bugs an, über die noch geschrieben werden muss</a>.</p>
+
+<h2 id="Änderungen_für_Webentwickler">Änderungen für Webentwickler</h2>
+
+<h3 id="Entwickler_Werkzeuge">Entwickler Werkzeuge</h3>
+
+<p>Höhepunkte:</p>
+
+<ul>
+ <li><a href="https://developer.mozilla.org/en-US/docs/Tools/Storage_Inspector">Storage Inspector: a new tool enabling you to view data stored by web pages</a></li>
+ <li><a href="https://developer.mozilla.org/en-US/docs/Tools/Performance">Performance tool: revamped Profiler UI and frame rate timeline</a></li>
+ <li><a href="https://developer.mozilla.org/en-US/docs/tools/Working_with_iframes">Frame switching: point the developer tools at a specific iframe in the page</a></li>
+ <li><a href="https://developer.mozilla.org/en-US/docs/Web/API/Console.table">console.table support</a></li>
+ <li><a href="https://developer.mozilla.org/en-US/docs/Tools/Page_Inspector#Examining_event_listeners">jQuery events are visible in the Page Inspector</a></li>
+</ul>
+
+<p><a class="external-icon external" href="https://bugzilla.mozilla.org/buglist.cgi?resolution=FIXED&amp;chfieldto=2014-09-02&amp;chfield=resolution&amp;query_format=advanced&amp;chfieldfrom=2014-07-21&amp;chfieldvalue=FIXED&amp;component=Developer%20Tools&amp;component=Developer%20Tools%3A%203D%20View&amp;component=Developer%20Tools%3A%20Canvas%20Debugger&amp;component=Developer%20Tools%3A%20Console&amp;component=Developer%20Tools%3A%20Debugger&amp;component=Developer%20Tools%3A%20Framework&amp;component=Developer%20Tools%3A%20Graphic%20Commandline%20and%20Toolbar&amp;component=Developer%20Tools%3A%20Inspector&amp;component=Developer%20Tools%3A%20Memory&amp;component=Developer%20Tools%3A%20Netmonitor&amp;component=Developer%20Tools%3A%20Object%20Inspector&amp;component=Developer%20Tools%3A%20Profiler&amp;component=Developer%20Tools%3A%20Responsive%20Mode&amp;component=Developer%20Tools%3A%20Scratchpad&amp;component=Developer%20Tools%3A%20Source%20Editor&amp;component=Developer%20Tools%3A%20Storage%20Inspector&amp;component=Developer%20Tools%3A%20Style%20Editor&amp;component=Developer%20Tools%3A%20Timeline&amp;component=Developer%20Tools%3A%20User%20Stories&amp;component=Developer%20Tools%3A%20Web%20Audio%20Editor&amp;component=Developer%20Tools%3A%20WebGL%20Shader%20Editor&amp;component=Developer%20Tools%3A%20WebIDE&amp;component=Simulator&amp;product=Firefox&amp;product=Firefox%20OS&amp;list_id=11184176">All devtools bugs fixed between Firefox 33 and Firefox 34</a>.</p>
+
+<h3 id="CSS">CSS</h3>
+
+<ul>
+ <li>Unsere experimentelle Implementierung der CSS Schriftarten Level 3 schreitet voran. Neu implementierte Funktionen sind:
+ <ul>
+ <li>Der Fallback Algorithmus von {{cssxref("font-variant-position")}}, erstellt synthetische Alternativen für fehlende Glyphen, basierend auf den subscript and superscript metrics supplied by the font ({{bug(1024804)}}).</li>
+ <li>Das <code>layout.css.font-features.enabled</code> wurde entfernt, was beudeutet, dass die folgenden Eigenschaften standartmäßig aktiviert sind :
+ <ul>
+ <li>The CSS Font Level 3 version of {{cssxref("font-variant")}} which is now a shorthand property.</li>
+ <li>The longhand properties {{cssxref("font-variant-caps")}}, {{cssxref("font-variant-numeric")}}, {{cssxref("font-variant-position")}}, {{cssxref("font-variant-east-asian")}}, {{cssxref("font-variant-ligatures")}}, and {{cssxref("font-variant-alternates")}}.</li>
+ <li>The properties {{cssxref("font-kerning")}} and {{cssxref("font-synthesis")}}</li>
+ <li>The properties {{cssxref("font-feature-settings")}} and {{cssxref("font-language-override")}} are unprefixed. The prefixed version are still available for some time to ease transition.</li>
+ </ul>
+ </li>
+ </ul>
+ </li>
+ <li>To reflect the latest specification changes, the value <code>auto</code> has been renamed in <code>main-size</code> on the {{cssxref("flex-basis")}} property. The shorthand {{cssxref("flex")}} keep an <code>auto</code> value, but it is a synonym of <code>1 1 main-size</code> ({{bug(1032922)}}). The value used for the longhand {{cssxref("flex-basis")}} when omitted in the shorthand is now  <code>0%</code>, and the one for {{cssxref("flex-growth")}} is now <code>1</code>, both different than their initial value.</li>
+ <li>The value <code>auto</code> has been added to {{cssxref("min-width")}} and {{cssxref("min-height")}} with a different behavior than the last time ({{bug(984711)}} and {{bug(1015474)}}).</li>
+ <li>An experimental implementation, disabled by default, of the filter functional values of the {{cssxref("filter")}} property have been implemented. It is controlled by the <code>layout.css.filters.enabled</code> pref. ({{bug(948265)}})</li>
+</ul>
+
+<h3 id="HTML">HTML</h3>
+
+<p><em>Keine Veränderungen.</em></p>
+
+<h3 id="JavaScript">JavaScript</h3>
+
+<ul>
+ <li>The ES6 syntax for <a href="/en-US/docs/Web/JavaScript/Reference/Operators/Object_initializer#Computed_property_names">computed property names on object literals</a> has been implemented ({{bug(924688)}}).
+
+ <ul>
+ <li>This includes <a href="/en-US/docs/Web/JavaScript/Reference/Functions/get">getter</a> and <a href="/en-US/docs/Web/JavaScript/Reference/Functions/set">setter</a> method names as well ({{bug(1048384)}}) and can also be used with <a href="/en-US/docs/Web/JavaScript/Reference/Operators/Destructuring_assignment#Computed_object_property_names_and_destructuring">destructuring</a>.</li>
+ </ul>
+ </li>
+ <li>The ES6<a href="/en-US/docs/Web/JavaScript/Reference/Functions/Method_definitions"> shorthand syntax for defining methods</a> on objects has been implemented ({{bug(924672)}}).</li>
+ <li>The ES6 <code>Object</code> method {{jsxref("Object.assign", "Object.assign()")}} has been implemented ({{bug(937855)}}).</li>
+ <li>ES6 <a href="/en-US/docs/Web/JavaScript/Reference/template_strings">template strings</a> and the {{jsxref("String.raw()")}} method are now supported ({{bug(1038259)}}, {{bug(1039774)}}).</li>
+ <li>A new ES6 object {{jsxref("WeakSet")}} has been added ({{bug(792439)}}).</li>
+ <li>ES6 <a href="/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol">Symbols</a> (only available in the Nightly channel) have been updated to conform with recent specification changes ({{bug(1042602)}}):
+ <ul>
+ <li>When trying to convert a symbol to a number, a <a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypeError" title="The TypeError object represents an error when a value is not of the expected type."><code>TypeError</code></a> will be thrown now.</li>
+ <li>When using loose equality, <code>Object(sym) == sym</code> returns <code>true</code> now.</li>
+ </ul>
+ </li>
+ <li>The experimental {{jsxref("TypedArray.prototype.move()")}} method (only available in former Nightly and Aurora channels) has been replaced with the now implemented standard ES6 {{jsxref("TypedArray.prototype.copyWithin()")}} method ({{bug(1021379)}}).</li>
+ <li>In <a href="/en-US/docs/Web/JavaScript/Reference/Strict_mode">strict mode</a>, setting a <a href="/en-US/docs/Web/JavaScript/Reference/Operators/Object_initializer#Duplicate_property_names">duplicate property name in object literals</a> will no longer throw a <code>SyntaxError</code> as per ES6 specification ({{bug(1041128)}}).</li>
+</ul>
+
+<h3 id="InterfacesAPIsDOM">Interfaces/APIs/DOM</h3>
+
+<ul>
+ <li>The {{domxref("Element.matches()")}} method has been added; it does what the non-standard <code>mozMatchesSelector()</code> was doing ({{bug(886308)}}).</li>
+ <li>The {{domxref("URLUtils.searchParams", "searchParams")}} property has been added to the {{domxref("Location")}} interface, available via the {{domxref("document.location")}} and {{domxref("window.location")}} properties ({{bug(1037715)}}).</li>
+ <li>The {{domxref("Performance.now()")}} method is now available to Web workers ({{bug(908390)}}).</li>
+ <li>The non-standard interface <code>MozNamedAttrMap</code> has been renamed to the standard {{domxref("NamedNodeMap")}} and {{domxref("Element.attributes")}} has been adapted to use it ({{bug(1055467)}}).</li>
+ <li>The non-standard methods and properties of {{domxref("Window.crypto")}} have been removed ({{bug(1030963)}}). Only methods and properties defined in the standard WebCrypto API are left.</li>
+</ul>
+
+<h3 id="MathML">MathML</h3>
+
+<p><em>Keine Veränderungen.</em></p>
+
+<h3 id="SVG">SVG</h3>
+
+<p><em>Keine Veränderungen.</em></p>
+
+<h3 id="AudioVideo">Audio/Video</h3>
+
+<p><em>Keine Veränderungen</em><em>.</em></p>
+
+<h2 id="Sicherheit">Sicherheit</h2>
+
+<p><em>Keine Veränderungen</em><em>.</em></p>
+
+<h2 id="Änderungen_für_Add-on_und_Mozilla_Entwickler">Änderungen für Add-on und Mozilla Entwickler</h2>
+
+<p><em>Keine Veränderungen</em><em>.</em></p>
+
+<h2 id="Ältere_Versionen">Ältere Versionen</h2>
+
+<p>{{Firefox_for_developers('33')}}</p>
diff --git a/files/de/mozilla/firefox/releases/47/index.html b/files/de/mozilla/firefox/releases/47/index.html
new file mode 100644
index 0000000000..cf76445536
--- /dev/null
+++ b/files/de/mozilla/firefox/releases/47/index.html
@@ -0,0 +1,174 @@
+---
+title: Firefox 47 for developers
+slug: Mozilla/Firefox/Releases/47
+translation_of: Mozilla/Firefox/Releases/47
+---
+<div>{{FirefoxSidebar}}</div><p> </p>
+
+<p><a href="https://www.mozilla.org/firefox/developer/" style="float: right; margin-bottom: 20px; padding: 10px; text-align: center; border-radius: 4px; display: inline-block; background-color: #81BC2E; white-space: nowrap; color: white; text-shadow: 0px 1px 0px rgba(0, 0, 0, 0.25); box-shadow: 0px 1px 0px 0px rgba(0, 0, 0, 0.2), 0px -1px 0px 0px rgba(0, 0, 0, 0.3) inset;">To test the latest developer features of Firefox,<br>
+ install Firefox Developer Edition</a>Firefox 47 was released on June 6, 2016. This article lists key changes that are useful not only for web developers, but also Firefox and Gecko developers as well as add-on developers.</p>
+
+<h2 id="Changes_for_Web_developers">Changes for Web developers</h2>
+
+<h3 id="Developer_Tools">Developer Tools</h3>
+
+<ul>
+ <li><a href="https://developer.mozilla.org/en-US/docs/Browser_detection_using_the_user_agent">User-agent spoofing</a> from the <a href="https://developer.mozilla.org/en-US/docs/Tools/Responsive_Design_Mode">Responsive mode</a></li>
+ <li><a href="https://developer.mozilla.org/en-US/docs/Tools/Memory/Dominators_view#Retaining_Paths_panel">Retaining paths panel</a> in memory tool</li>
+ <li><a href="https://developer.mozilla.org/en-US/docs/Web/API/ServiceWorker">Service workers</a> and <a href="https://developer.mozilla.org/en-US/docs/Web/API/Push_API">Push API</a> debugging
+ <ul>
+ <li><a href="https://developer.mozilla.org/en-US/docs/Tools/about:debugging">about:debugging</a> dashboard for workers</li>
+ <li>Cached requests are now shown in <a href="https://developer.mozilla.org/en-US/docs/Tools/Network_Monitor">Network Monitor</a></li>
+ <li>Support for <a href="https://developer.mozilla.org/en-US/docs/Web/API/Cache">cache storage</a> in <a href="https://developer.mozilla.org/en-US/docs/Tools/Storage_Inspector">Storage Inspector</a></li>
+ </ul>
+ </li>
+ <li>Ability to filter <a href="https://developer.mozilla.org/en-US/docs/Tools/Storage_Inspector">Storage Inspector</a> entries</li>
+ <li><a href="https://developer.mozilla.org/en-US/docs/Tools/Web_Console">Console</a> now detects incomplete input and switches multi-line mode</li>
+ <li>Updated breakpoint style in <a href="https://developer.mozilla.org/en-US/docs/Tools/Debugger">Debugger</a></li>
+ <li>Prevent panels from hiding automatically using the <a href="https://developer.mozilla.org/en-US/docs/Tools/Browser_Toolbox">Browser Toolbox</a>, to aid browser and add-on debugging</li>
+ <li><a href="https://developer.mozilla.org/en-US/docs/Tools/Page_Inspector/UI_Tour#Fonts_view">Font inspector</a> has been disabled by default</li>
+ <li><a href="https://developer.mozilla.org/en-US/docs/Tools/3D_View">3D view</a> has been removed</li>
+ <li>Developer tools theme refresh</li>
+ <li>Disable the Font Panel ({{bug(1247723)}}).</li>
+</ul>
+
+<h3 id="HTML">HTML</h3>
+
+<p><em>No change.</em></p>
+
+<h3 id="CSS">CSS</h3>
+
+<ul>
+ <li>Support for the {{cssxref("::backdrop")}} pseudo-element has been added ({{bug(1064843)}}).</li>
+ <li>The case-insensitive modifier <code>i</code> (like in <code>[foo=bar i]</code>) for <a href="/en-US/docs/Web/CSS/Attribute_selectors">attribute selectors</a> has been implemented ({{bug(888190)}}).</li>
+ <li>An experimental implementation of CSS Mask Image properties landed. For the moment, this will only be available on Nightly versions of Firefox.y: shorthand version of {{cssxref("mask")}}, as well as {{cssxref("mask-repeat")}}, {{cssxref("mask-position")}}, {{cssxref("mask-size")}} are now available ({{bug(686281)}}).</li>
+ <li>The {{cssxref("clip-path")}} property now experimentally supports <code>polygon()</code>, <code>ellipse()</code>, and <code>circle()</code> on HTML elements (does not support <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1246762">inset()</a> and <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1246764">path()</a>), behind the pref <code>layout.css.clip-path-shapes.enabled</code> that defaults to <code>false</code> ({{bug(1075457)}}). Interpolation (and therefore animation) of these values is not yet supported.</li>
+ <li>Our still experimental grid implementation has been updated:
+ <ul>
+ <li>{{cssxref("align-content")}}: <code>normal</code> behaves now as <code>stretch</code> for grid containers ({{bug(1237754)}}).</li>
+ <li>The order of column/row values for {{cssxref('grid')}}, {{cssxref('grid-template')}}, and {{cssxref('grid-gap')}} properties has been swapped ({{bug(1251999)}}).</li>
+ </ul>
+ </li>
+ <li>The {{cssxref("@media/display-mode", "display-mode")}} media feature is now supported ({{bug("1104916")}}).</li>
+ <li>The value <code>true</code> of {{cssxref("text-align")}} and {{cssxref("text-align-last")}} has been renamed to <code>unsafe</code> ({{bug("1250342")}}).</li>
+</ul>
+
+<h3 id="JavaScript">JavaScript</h3>
+
+<ul>
+ <li>The new ES2017 {{jsxref("Object.values()")}} and {{jsxref("Object.entries()")}} methods have been implemented ({{bug(1232639)}}).</li>
+ <li>The deprecated <a href="/en-US/docs/Archive/Web/Old_Proxy_API">old Proxy API</a> (<code>Proxy.create</code> and <code>Proxy.createFunction</code>) now presents a deprecation warning in the console and will be removed in a future version. Use the standard {{jsxref("Proxy")}} object instead ({{bug(892903)}}).</li>
+ <li>Support for the deprecated non-standard <code>flags</code> argument of <code>String.prototype.</code>{{jsxref("String.prototype.match", "match")}}/{{jsxref("String.prototype.search", "search")}}/{{jsxref("String.prototype.replace", "replace")}} has been dropped in non-release builds ({{bug(1245801)}}).</li>
+ <li>As per the new ES2016 specification, the {{jsxref("Proxy")}} <a href="/en-US/docs/Web/JavaScript/Reference/Global_Objects/Proxy/handler/enumerate">enumerate</a> trap for <code><a href="/en-US/docs/Web/JavaScript/Reference/Statements/for...in">for...in</a></code> statements has been removed ({{bug(1246318)}}).</li>
+ <li>The {{jsxref("Array.prototype.indexOf()")}} and {{jsxref("Array.prototype.lastIndexOf()")}} methods (and their {{jsxref("TypedArray")}} equivalents) have been updated to never return <code>-0</code> as per the ECMAScript specification ({{bug(1242043)}}).</li>
+</ul>
+
+<h3 id="InterfacesAPIsDOM">Interfaces/APIs/DOM</h3>
+
+<h4 id="DOM_HTML_DOM">DOM &amp; HTML DOM</h4>
+
+<ul>
+ <li>The property {{domxref("Document.scrollingElement")}} has been implemented behind the pref <code>dom.document.scrollingElement.enabled</code> that defaults to <code>false</code> ({{bug(1153322)}}).</li>
+</ul>
+
+<h4 id="WebGL">WebGL</h4>
+
+<p><em>No change.</em></p>
+
+<h4 id="IndexedDB">IndexedDB</h4>
+
+<ul>
+ <li>The {{domxref("IDBKeyRange.includes()")}} method has been implemented ({{bug("1251498")}}).</li>
+</ul>
+
+<h4 id="Service_Worker_and_related_APIs">Service Worker and related APIs</h4>
+
+<ul>
+ <li>The {{domxref("Request.Request()")}} constructor can now accept a referrer option in its init object ({{bug(1251448)}}).</li>
+ <li>The {{domxref("Request.referrerPolicy")}} property is now supported ({{bug(1251872)}}).</li>
+ <li>
+ <p><a href="/en-US/docs/Web/API/Service_Worker_API">Service workers</a> and <a href="https://developer.mozilla.org/en-US/docs/Web/API/Push_API">Push</a> have been disabled in the <a class="external external-icon" href="https://www.mozilla.org/en-US/firefox/organizations/">Firefox 45 Extended Support Release</a> (ESR) ({{bug(1232029)}}).</p>
+ </li>
+</ul>
+
+<h4 id="WebRTC">WebRTC</h4>
+
+<ul>
+ <li>Support for the {{domxref("RTCIceServer")}} dictionary has been updated in keeping with revisions to the WebGL 1.0 specification by adding support for the {{domxref("RTCIceServer.credentialType", "credentialType")}} property. This property is a string which specifies whether the credential is a password or a token. Currently, Firefox only supports <code>"password"</code>.</li>
+</ul>
+
+<h4 id="New_APIs">New APIs</h4>
+
+<p><em>No change.</em></p>
+
+<h4 id="Others">Others</h4>
+
+<ul>
+ <li>{{domxref("Cache.add()")}} and {{domxref("Cache.addAll()")}} now raises a <code>TypeError</code> exception if the response status is not in the <code>200</code> range ({{bug(1244764)}}).</li>
+ <li>The <a href="/en-US/docs/Mozilla/Firefox_OS/API/App_installation_and_management_APIs">App installation and management APIs</a> (<code>navigator.mozApps.*</code>) are no longer exposed to non-Firefox OS platforms ({{bug("1238576")}}).</li>
+ <li><a href="/en-US/docs/Web/API/Web_Crypto_API">Web Crypto API</a> methods can now use the RSA-PSS cryptographic algorithm ({{bug (1191936)}}).</li>
+ <li>The <a href="/en-US/docs/Web/API/Permissions_API">Permissions API</a> has had the {{domxref("Permissions.revoke()")}} method added ({{bug("1197461")}}).</li>
+ <li>The <a href="/en-US/docs/Web/API/Browser_API">Browser API</a>, which extends the functionality of {{htmlelement("iframe")}}s to allow the creation of frames for displaying web content using HTML — and was previously only available in Firefox OS — is now available to desktop chrome code too ({{bug(1238160)}}).</li>
+ <li>The <a href="/en-US/docs/Web/API/notification">Notification API</a>'s {{domxref("Notification.requestPermission()","requestPermission()")}} method has been updated from a callback to a promised-based syntax ({{bug(1241278)}}).</li>
+ <li>The <a href="/en-US/docs/Web/API/Fullscreen_API">Fullscreen API</a> has been updated to the latest spec and unprefixed. Some methods have been renamed or have seen their capitalisation changed ({{bug(743198)}}). Note that this is not yet activated by default by behind the <code>full-screen-api.unprefix.enabled</code> preference ({{bug(1268749)}}).</li>
+</ul>
+
+<h3 id="AudioVideo">Audio/Video</h3>
+
+<ul>
+ <li>Now WAV file with u-law compression encoding can be played({{bug(851530)}}).</li>
+ <li><a href="https://www.widevine.com/">Widevine</a> Content Decryption Module provided by Google Inc. is available via the <a href="/en-US/docs/Web/API/Encrypted_Media_Extensions_API">Encrypted Media Extensions API</a> for use with MP4 (only; see {{bug(1257716)}} for EME-with-WebM support) on Windows Vista and later and on Mac OS X enabling migration off Silverlight ({{bug(1265270)}}).</li>
+</ul>
+
+<h2 id="HTTP">HTTP</h2>
+
+<p><em>No change.</em></p>
+
+<h2 id="Networking">Networking</h2>
+
+<p><em>No change.</em></p>
+
+<h2 id="Security">Security</h2>
+
+<ul>
+ <li>URL with the <code>view-source:</code> protocol don't open the <a href="/en-US/docs/Tools/View_source">View Source</a> tool anymore when used from a Web page ({{bug(1172165)}}).</li>
+ <li>The Firefox <a href="https://blog.mozilla.org/futurereleases/2013/09/24/plugin-activation-in-firefox/">click-to-activate plugin whitelist</a> has been removed: only Flash doesn't need to be clicked to be activated ({{bug(1263630)}}).</li>
+</ul>
+
+<h2 id="Changes_for_add-on_and_Mozilla_developers">Changes for add-on and Mozilla developers</h2>
+
+<h3 id="Interfaces">Interfaces</h3>
+
+<ul>
+ <li>The CSS tokenizer is now available in JavaScript for add-ons ({{bug(1152033)}}).</li>
+</ul>
+
+<h3 id="FUEL">FUEL</h3>
+
+<p>The <a href="/en-US/docs/Mozilla/Tech/Toolkit_API/FUEL">FUEL</a> JavaScript library, introduced back in Firefox 3, <strong>has been removed</strong>. This library was designed to aid in add-on development and with the introduction of the <a href="/en-US/docs/Mozilla/Add-ons/SDK">Add-on SDK</a> and, now, by <a href="/en-US/docs/Mozilla/Add-ons/WebExtensions">WebExtensions</a> support, is no longer useful. ({{bug(1090880)}})</p>
+
+<h3 id="XUL">XUL</h3>
+
+<p><em>No change.</em></p>
+
+<h3 id="JavaScript_code_modules">JavaScript code modules</h3>
+
+<p><em>No change.</em></p>
+
+<h3 id="XPCOM">XPCOM</h3>
+
+<p><em>No change.</em></p>
+
+<h3 id="Other">Other</h3>
+
+<p><em>No change.</em></p>
+
+<h2 id="See_also">See also</h2>
+
+<ul>
+ <li><a href="https://www.fxsitecompat.com/en-US/versions/47">Site Compatibility for Firefox 47</a></li>
+</ul>
+
+<h2 id="Older_versions">Older versions</h2>
+
+<p>{{Firefox_for_developers(46)}}</p>
diff --git a/files/de/mozilla/firefox/releases/5/index.html b/files/de/mozilla/firefox/releases/5/index.html
new file mode 100644
index 0000000000..febb262599
--- /dev/null
+++ b/files/de/mozilla/firefox/releases/5/index.html
@@ -0,0 +1,169 @@
+---
+title: Firefox 5 for developers
+slug: Mozilla/Firefox/Releases/5
+tags:
+ - Firefox
+ - Firefox 5
+ - Gecko 5.0
+ - NeedsTranslation
+ - TopicStub
+translation_of: Mozilla/Firefox/Releases/5
+---
+<div>{{FirefoxSidebar}}</div><p>Firefox 5, based on Gecko 5.0, was released on June 21, 2011. This article provides links to information about the changes that affect developers in this release.</p>
+
+<h2 id="Changes_for_web_developers">Changes for web developers</h2>
+
+<h3 id="HTML">HTML</h3>
+
+<ul>
+ <li>All HTML elements now have the {{ domxref("element.accessKey", "accessKey") }} attribute, as well as the {{ domxref("element.blur()", "blur()") }}, {{ domxref("element.click()", "click()") }}, and {{ domxref("element.focus()", "focus()") }} methods. These are specified in the {{ domxref("HTMLElement") }} interface.</li>
+ <li>In order to comply with the HTML5 specification, support for the UTF-7 and UTF-32 <a href="/en/Character_Sets_Supported_by_Gecko" title="en/Character Sets Supported by Gecko">character sets</a> has been removed.</li>
+ <li>When in quirks mode, empty {{ HTMLElement("map") }}s are no longer skipped over in favor of non-empty ones when matching. See the <a href="/en/HTML/Element/map#Gecko_notes" title="en/HTML/Element/map#Gecko notes">Gecko notes</a> on the {{ HTMLElement("map") }} element for details.</li>
+ <li>Firefox mobile on Android now supports WOFF fonts for {{ cssxref("@font-face") }}.</li>
+ <li>WebGL <a href="/en/WebGL/Cross-Domain_Textures" title="en/WebGL/Cross-Domain Textures">no longer loads textures from domains other than the originating domain</a>, as a security measure. <a href="/En/HTTP_access_control" title="en/HTTP access control">HTTP access control</a> support should be coming sometime in the future to make this possible more securely.</li>
+</ul>
+
+<h4 id="Canvas_improvements">Canvas improvements</h4>
+
+<ul>
+ <li>The {{ HTMLElement("canvas") }} 2D drawing context now supports specifying an <code>ImageData</code> object as the input to the <code>createImageData()</code> method; this <a href="/En/HTML/Canvas/Pixel_manipulation_with_canvas#Creating_an_ImageData_object" title="En/HTML/Canvas/Pixel manipulation with canvas#Creating an ImageData object">creates a new <code>ImageData</code> object</a> initialized with the same dimensions as the specified object, but still with all pixels preset to transparent black. This was documented as implemented already but was not.</li>
+ <li>Specifying non-finite values when adding color stops through a call to the {{ domxref("CanvasGradient") }} method <code>addColorStop()</code> now correctly throws <code>INDEX_SIZE_ERR</code> instead of <code>SYNTAX_ERR</code>.</li>
+ <li>The {{ domxref("HTMLCanvasElement") }} method <code>toDataURL()</code> now correctly lower-cases the specified MIME type before matching.</li>
+ <li><code>getImageData()</code> now correctly accepts rectangles that extend beyond the bounds of the canvas; pixels outside the canvas are returned as transparent black.</li>
+ <li><code>drawImage()</code> and <code>createImageData()</code> now handle negative arguments in accordance with the specification, by flipping the rectangle around the appropriate axis. <strong>We need an article about <a class="external" href="http://dev.w3.org/csswg/css3-images/#default-sizing" title="http://dev.w3.org/csswg/css3-images/#default-sizing">CSS sizing</a> and how this works.</strong></li>
+ <li>Specifying non-finite values when calling <code>createImageData()</code> now properly throws a <code>NOT_SUPPORTED_ERR</code> exception.</li>
+ <li><code>createImageData()</code> and <code>getImageData()</code> now correctly return at least one pixel's worth of image data if a rectangle smaller than one pixel is specified.</li>
+ <li>Specifying a negative radius when calling <code>createRadialGradient()</code> now correctly throws <code>INDEX_SIZE_ERR</code>.</li>
+ <li>Specifying a <code>null</code> or <code>undefined</code> image when calling <code>createPattern()</code> or <code>drawImage()</code> now correctly throws a <code>TYPE_MISMATCH_ERR</code> exception.</li>
+ <li>Specifying invalid values for <code>globalAlpha</code> no longer throws a <code>SYNTAX_ERR</code> exception; these are now correctly silently ignored.</li>
+ <li>Specifying invalid values when calling <code>translate()</code>, <code>transform()</code>, <code>rect()</code>, <code>clearRect()</code>, <code>fillRect()</code>, <code>strokeRect()</code>, <code>lineTo()</code>, <code>moveTo()</code>, <code>quadraticCurveTo()</code>, or <code>arc()</code> no longer throws an exception; these calls are now correctly silently ignored.</li>
+ <li>Setting the value of <code>shadowOffsetX</code>, <code>shadowOffsetY</code>, or <code>shadowBlur</code> to an invalid value is now silently ignored.</li>
+ <li>Setting the value of <code>rotate</code> or <code>scale</code> to an invalid value is now silently ignored.</li>
+</ul>
+
+<h3 id="CSS">CSS</h3>
+
+<dl>
+ <dt><a href="/en/CSS/CSS_animations" title="en/CSS/CSS animations">CSS animations</a></dt>
+ <dd>Support for CSS animations has been added, using the <code>-moz-</code> prefix for now.</dd>
+</dl>
+
+<h3 id="DOM">DOM</h3>
+
+<ul>
+ <li>The {{ domxref("selection") }} object's <a href="/en/DOM/Selection/modify" title="en/DOM/Selection/modify"><code>modify()</code></a> method has been changed so that the "word" selection granularity no longer includes trailing spaces; this makes it more consistent across platforms and matches the behavior of WebKit's implementation.</li>
+ <li>The {{ domxref("window.setTimeout()") }} method now clamps to send no more than one timeout per second in inactive tabs. In addition, it now clamps nested timeouts to the smallest value allowed by the HTML5 specification: 4 ms (instead of the 10 ms it used to clamp to).</li>
+ <li>Similarly, the {{ domxref("window.setInterval()") }} method now clamps to no more than one interval per second in inactive tabs.</li>
+ <li><a href="/en/DOM/XMLHttpRequest" title="en/XMLHttpRequest"><code>XMLHttpRequest</code></a> now <a href="/en/DOM/XMLHttpRequest/Using_XMLHttpRequest#Detecting_any_load_end_condition" title="en/XMLHttpRequest/Using XMLHttpRequest#Detecting any load end condition">supports the <code>loadend</code> event</a> for progress listeners. This is sent after any transfer is finished (that is, after the <code>abort</code>, <code>error</code>, or <code>load</code> event). You can use this to handle any tasks that need to be performed regardless of success or failure of a transfer.</li>
+ <li>The {{ domxref("Blob") }} and, by extension, the {{ domxref("File") }} objects' <code>slice()</code> method has been removed and replaced with a new, proposed syntax that makes it more consistent with <a href="/en/JavaScript/Reference/Global_Objects/Array/slice" title="en/JavaScript/Reference/Global Objects/Array/slice"><code>Array.slice()</code></a> and <a href="/en/JavaScript/Reference/Global_Objects/String/slice" title="en/JavaScript/Reference/Global Objects/String/slice"><code>String.slice()</code></a> methods in JavaScript. This method is named <a href="/en/DOM/Blob#mozSlice()" title="en/DOM/Blob#mozSlice()"><code>mozSlice()</code></a> for now.</li>
+ <li>The value of {{ domxref("window.navigator.language") }} is now determined by looking at the value of the <code>Accept-Language</code> <a href="/en/HTTP/Headers" title="en/HTTP/Headers">HTTP header</a>.</li>
+ <li>The {{ domxref("Node.prefix") }} property is now read only, as required by the DOM specification.</li>
+ <li>The {{ domxref("HTMLVideoElement") }} now supports experimental properties to get information about video paint statistics like frame rates.</li>
+</ul>
+
+<h3 id="JavaScript">JavaScript</h3>
+
+<ul>
+ <li>Regular expressions are no longer callable as if they were functions; this change has been made in concert with the WebKit team to ensure compatibility (see {{ WebkitBug(28285) }}. This feature had existed for a long time but was never documented (at least, not here on MDC).</li>
+ <li>The <a href="/en/JavaScript/Reference/Global_Objects/Function/isGenerator" title="en/JavaScript/Reference/Global Objects/Function/isGenerator"><code>Function.prototype.isGenerator()</code></a> method is now supported; this lets you determine if a function is a <a href="/en/JavaScript/Guide/Iterators_and_Generators#Generators.3a_a_better_way_to_build_Iterators" title="en/Core JavaScript 1.5 Guide/Iterators and Generators#Generators.3a a better way to build Iterators">generator</a>.</li>
+ <li>The following <a href="/en/JavaScript/Reference/Reserved_Words" title="en/JavaScript/Reference/Reserved Words">reserved words</a> were previously only treated as reserved when in strict mode; now they're always treated as reserved: <code>class</code>, <code>enum</code>, <code>export</code>, <code>extends</code>, <code>import</code>, and <code>super</code>.</li>
+ <li>DOM documents created in chrome code may no longer be exposed to sandboxed scripts.</li>
+ <li>The JSON parser has been re-written for improved speed and compliance. This includes a fix for {{ bug("572279") }}.</li>
+</ul>
+
+<h3 id="SVG">SVG</h3>
+
+<ul>
+ <li>The {{ SVGAttr("class") }} SVG attribute can now be animated.</li>
+ <li>The following SVG-related DOM interfaces representing lists of objects are now indexable and can be accessed like arrays; in addition, they have a <code>length</code> property indicating the number of items in the lists: {{ domxref("SVGLengthList") }}, {{ domxref("SVGNumberList") }}, {{ domxref("SVGPathSegList") }}, and {{ domxref("SVGPointList") }}.</li>
+</ul>
+
+<h3 id="HTTP">HTTP</h3>
+
+<ul>
+ <li>Firefox no longer sends the <code>Keep-Alive</code> HTTP header; we weren't formatting it correctly, and it was redundant since we were also sending the {{ httpheader("Connection") }} or {{ httpheader("Proxy-Connection") }} header with the value "keep-alive" anyway.</li>
+ <li>The HTTP transaction model has been updated to be more intelligent about reusing connections in the persistent connection pool; instead of treating the pool as a {{ interwiki("wikipedia", "FIFO") }} queue, Necko now attempts to sort the pool with connections with the largest {{ interwiki("wikipedia", "congestion window") }} (CWND) first. This can reduce the round-trip time (RTT) of HTTP transactions by avoiding the need to grow connections' windows in many cases.</li>
+ <li>Firefox now handles the <code>Content-Disposition</code> HTTP response header more effectively if both the <code>filename</code> and <code>filename*</code> parameters are provided; it looks through all provided names, using the <code>filename*</code> parameter if one is available, even if a <code>filename</code> parameter is included first. Previously, the first matching parameter would be used, thereby preventing a more appropriate name from being used. See {{ bug(588781) }}.</li>
+</ul>
+
+<h3 id="MathML">MathML</h3>
+
+<ul>
+ <li>Support for <a class="external" href="http://www.w3.org/TR/MathML3/chapter3.html#id.3.2.5.7.3" title="http://www.w3.org/TR/MathML3/chapter3.html#id.3.2.5.7.3">embellished operators</a></li>
+</ul>
+
+<h3 id="Developer_tools">Developer tools</h3>
+
+<ul>
+ <li>The <a href="/en/Using_the_Web_Console#The_console_object" title="en/Using the Web Console#The console object">Web Console's <code>Console</code> object</a> now has a <code>debug()</code> method, which is an alias for its <code>log()</code> method; this improves compatibility with certain existing sites.</li>
+</ul>
+
+<h2 id="Changes_for_Mozilla_and_add-on_developers">Changes for Mozilla and add-on developers</h2>
+
+<p>For a guide to updating your add-on for Firefox 5, please see <a href="/en/Firefox/Updating_add-ons_for_Firefox_5" title="en/Firefox/Updating add-ons for Firefox 5">Updating add-ons for Firefox 5</a>.</p>
+
+<div class="note"><strong>Note:</strong> Firefox 5 requires that binary components be recompiled, as do all major releases of Firefox. See <a href="/En/Developer_Guide/Interface_Compatibility#Binary_Interfaces" title="En/Developer Guide/Interface Compatibility#Binary Interfaces">Binary Interfaces</a> for details.</div>
+
+<h3 id="Changes_to_JavaScript_code_modules">Changes to JavaScript code modules</h3>
+
+<h4 id="New_JavaScript_code_modules">New JavaScript code modules</h4>
+
+<ul>
+ <li>The <a href="/en/JavaScript_code_modules/Dict.jsm" title="en/JavaScript code modules/Dict.jsm"><code>Dict.jsm</code></a> code module was added; it provides an API for dictionaries of key/value pairs.</li>
+</ul>
+
+<h4 id="NetUtil.jsm">NetUtil.jsm</h4>
+
+<ul>
+ <li>The <a href="/en/JavaScript_code_modules/NetUtil.jsm#asyncFetch()" title="en/JavaScript code modules/NetUtil.jsm#asyncFetch()"><code>asyncFetch()</code></a> method now supports specifying the input source as an {{ interface("nsIInputStream") }}.</li>
+</ul>
+
+<h3 id="Interface_changes">Interface changes</h3>
+
+<ul>
+ <li>The {{ interface("nsIHttpChannelInternal") }} interface has new attributes providing access to information about the channels' endpoints' addresses and ports. This information is provided primarily for debugging purposes.</li>
+ <li>The {{ HTMLElement("canvas") }} element's {{ htmlattrxref("width", "canvas") }} and {{ htmlattrxref("height", "canvas") }} attributes are now reflected in IDL as unsigned integers instead of signed (see <a href="/en/DOM/HTMLCanvasElement" title="en/DOM/HTMLCanvasElement"><code>HTMLCanvasElement</code></a>).</li>
+ <li>The <code>nsIAppStartup2</code> and {{ interface("nsIAppStartup_MOZILLA_2_0") }} interfaces have been merged into the {{ interface("nsIAppStartup") }} interface.</li>
+ <li>The <code>nsIDocShell_MOZILLA_2_0_BRANCH</code> interface has been merged into the {{ interface("nsIDocShell") }} interface.</li>
+ <li>The <code>nsIFocusManager_MOZILLA_2_0_BRANCH</code> interface has been merged into the {{ interface("<code><code>nsIFocusManager</code></code>") }} interface.</li>
+ <li>The <code>nsIHTMLEditor_MOZILLA_2_0_BRANCH</code> interface has been merged into the {{ interface("nsIHTMLEditor") }} interface.</li>
+</ul>
+
+<h4 id="New_interfaces">New interfaces</h4>
+
+<ul>
+ <li><code>nsIDOMAnimationEvent</code> added. {{domxref("AnimationEvent")}}</li>
+</ul>
+
+<h4 id="Removed_interfaces">Removed interfaces</h4>
+
+<p>The following interfaces were implementation details that are no longer needed:</p>
+
+<ul>
+ <li><code>nsICiter</code> (see {{ bug("633066") }})</li>
+ <li><code>nsIDOM3Document</code> (see {{ bug("639849") }})</li>
+ <li><code>nsIFIXptrEvaluator</code></li>
+ <li><code>nsISelectElement</code> (see {{ bug("619996") }})</li>
+</ul>
+
+<h3 id="Debugging_aids">Debugging aids</h3>
+
+<ul>
+ <li>The new <a href="/En/Namespace/Mozilla/DebugOnly%3CT%3E" title="En/Namespace/Mozilla/DebugOnly&lt;T>"><code>DebugOnly&lt;T&gt;</code></a> helper makes it possible to declare variables only for <code>DEBUG</code> builds.</li>
+</ul>
+
+<h3 id="JavaScript_API_(SpiderMonkey)">JavaScript API (SpiderMonkey)</h3>
+
+<ul>
+ <li><a href="/en/SpiderMonkey/JSAPI_Reference/JS_DoubleToInt32" title="en/SpiderMonkey/JSAPI Reference/JS DoubleToInt32"><code>JS_DoubleToInt32()</code></a> and <a href="/en/SpiderMonkey/JSAPI_Reference/JS_DoubleToInt32" title="en/SpiderMonkey/JSAPI Reference/JS DoubleToInt32"><code>JS_DoubleToUint32()</code></a> have been added, for converting <code><a href="/en/SpiderMonkey/JSAPI_Reference/jsdouble" title="en/jsdouble">jsdouble</a></code> values into C integers and unsigned integers.</li>
+</ul>
+
+<h3 id="Build_system_changes">Build system changes</h3>
+
+<ul>
+ <li>You can now build Firefox without a <code>mozconfig</code> file; the <a href="/en/Configuring_Build_Options#Choose_an_application" title="en/Configuring Build Options#Choose an application"><code>--enable-application</code> setting</a> now defaults to "browser". After pulling or downloading the code, you can simply <code>configure &amp;&amp; make</code> (or <code>make -f client.mk</code>) to build Firefox.</li>
+</ul>
+
+<h2 id="See_also">See also</h2>
+
+<div>{{Firefox_for_developers('4')}}</div>
diff --git a/files/de/mozilla/firefox/releases/56/index.html b/files/de/mozilla/firefox/releases/56/index.html
new file mode 100644
index 0000000000..0158450bdc
--- /dev/null
+++ b/files/de/mozilla/firefox/releases/56/index.html
@@ -0,0 +1,122 @@
+---
+title: Firefox 56 for developers
+slug: Mozilla/Firefox/Releases/56
+translation_of: Mozilla/Firefox/Releases/56
+---
+<div>{{FirefoxSidebar}}</div><article class="text-content" id="wikiArticle">
+<p>Dieser Artikel enthält Informationen über die Änderungen in Firefox 56, die Entwickler betreffen. Firefox 56 ist die aktuelle <a href="https://www.mozilla.org/en-US/firefox/channel/desktop/#beta">Beta-Version von Firefox</a> und wird am <a href="https://wiki.mozilla.org/RapidRelease/Calendar#Future_branch_dates">26. September 2017</a> veröffentlicht werden</p>
+
+<article class="text-content" id="wikiArticle">
+<h2 id="Änderungen_für_Web-Entwickler">Änderungen für Web-Entwickler</h2>
+
+<h3 id="Entwicklerwerkzeuge">Entwicklerwerkzeuge</h3>
+
+<p><em>Keine Änderungen.</em></p>
+
+<h3 id="HTML">HTML</h3>
+
+<ul>
+ <li>Implementiert die Label-Eigenschaft für beschreibbare Formular-Steuerelemente, zum Beispiel {{domxref("HTMLInputElement.labels")}} ({{bug(556743)}}).</li>
+ <li>Implementiert <code>&lt;link rel="preload"&gt;</code>; siehe <a href="/en-US/docs/Web/HTML/Preloading_content">Preloading content with rel="preload"</a> für mehr Details ({{bug(1222633)}}).</li>
+</ul>
+
+<h3 id="CSS">CSS</h3>
+
+<ul>
+ <li>Implementiert die propietären Mozilla-spezifischen Werte {{cssxref("&lt;color&gt;")}} <code>-moz-win-accentcolor</code> und <code>-moz-win-accentcolortext</code> (see {{bug(1344910)}}), und die propietäre Medienabfrage <code><a href="/en-US/docs/Web/CSS/Media_Queries/Using_media_queries#-moz-windows-accent-color-in-titlebar">-moz-windows-accent-color-in-titlebar</a></code> (see {{bug(1379938)}}).</li>
+</ul>
+
+<h3 id="SVG">SVG</h3>
+
+<p><em>Keine Änderungen.</em></p>
+
+<h3 id="JavaScript">JavaScript</h3>
+
+<ul>
+ <li>The <a href="/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl">Intl API</a> has been enabled on Firefox for Android ({{bug(1344625)}}).</li>
+</ul>
+
+<h3 id="APIs">APIs</h3>
+
+<h4 id="New_APIs">New APIs</h4>
+
+<p><em>Keine Änderungen.</em></p>
+
+<h4 id="DOM">DOM</h4>
+
+<ul>
+ <li>Auf Macist jetzt {{domxref("Document.hidden")}} wahr, wenn das Fenster hinter einer anderen nicht-lichtdurchlässigen Anwendung steht {{bug(1236512)}}.</li>
+ <li>Die Eigenschaft {{domxref("Gamepad.displayId")}} wurde implementiert ({{bug(1375816)}}).</li>
+ <li>Die Methode {{domxref("CanvasRenderingContext2D.drawImage()")}} wurde aktualisiert, so dass so dass die Glättung beim Downscaling erfolgt, auch wenn <code>imageSmoothingEnabled</code> ist <code>false</code>. Dies ist nicht obligatorisch wie pro Spezifikation, sondern folgt Chromes Verhalten. Siehe {{bug(1360415)}}.</li>
+ <li>Die Eigenschaft {{domxref("PerformanceTiming.secureConnectionStart")}} wurde implementiert ({{bug(772589)}}).</li>
+ <li>Firefox verwendet<code> iso-2022-jp-2</code>, um Sequenzen zu nehmen, wenn ein iso-2022-jp {{domxref ("TextDecoder.TextDecoder", "TextDecoder ()")}} instanziiert wurde. Dies wurde nun entfernt, um die API zu vereinfachen, da keine anderen Browser oder Webseiten es unterstützen. ({{bug(715833)}}).</li>
+ <li>Das 4ms- Klemmeverhalten von {{domxref("WindowOrWorkerGlobalScope.setTimeout","setTimeout()")}} und {{domxref("WindowOrWorkerGlobalScope.setInterval","setInterval()")}} wurde aktualisiert, um besser in Einklang mit anderen Browsern, wie in <a href="/en-US/docs/Web/API/WindowOrWorkerGlobalScope/setTimeout#Timeouts_throttled_to_%3E4ms">Timeouts throttled to &gt;=4ms</a> zu sein. ({{bug(1378586)}}).</li>
+ <li>Der <a href="/en-US/docs/Web/API/Page_Visibility_API">Page Visibility API's</a> {{domxref("Document.onvisibilitychange")}} handler wurde hinzugefügt ({{bug("1333912")}}).</li>
+</ul>
+
+<h4 id="DOM_events">DOM events</h4>
+
+<ul>
+ <li>{{domxref("GlobalEventHandlers.onwheel")}} ist ab sofort verfügbar {{domxref("HTMLElement")}} — es war nicht vorher ({{bug(1370550)}}).</li>
+</ul>
+
+<h4 id="WebRTC">WebRTC</h4>
+
+<ul>
+ <li>Firefox unterstützt nun die {{domxref("RTCPeerConnection")}} Eigenschaften, die Sie die aktuellen und ausstehenden Konfigurationen der lokalen und entfernten Enden der Verbindung untersuchen lassen, um zu helfen, Änderungen in der Konfiguration zu verwalten:{{domxref("RTCPeerConnection.currentLocalDescription", "currentLocalDescription")}}, {{domxref("RTCPeerConnection.pendingLocalDescription", "pendingLocalDescription")}}, {{domxref("RTCPeerConnection.currentRemoteDescription", "currentRemoteDescription")}}, and {{domxref("RTCPeerConnection.pendingRemoteDescription", "pendingRemoteDescription")}}.</li>
+</ul>
+
+<h3 id="Sicherheit">Sicherheit</h3>
+
+<p><em>Keine Änderungen.</em></p>
+
+<h3 id="Plugins">Plugins</h3>
+
+<p><em>Keine Änderungen.</em></p>
+
+<h3 id="Weiteres">Weiteres</h3>
+
+<ul>
+ <li>Gecko kodiert nun URLs intern als <a href="https://en.wikipedia.org/wiki/Punycode">punycode</a>, um URL-Codierungsprobleme zu vermeiden (siehe {{Bug ("945240")}}, siehe auch Diskussion in {{Bug ("942074")}}).</li>
+ <li>Firefox unter Windows und Mac OS X kann nun im <a href="/en-US/docs/Mozilla/Firefox/Headless_mode">headless Modus</a> mit der -headless-Flagge ausgeführt werden (siehe {{bug (1355150)}} und {{bug (1355147)}}).</li>
+</ul>
+
+<h2 id="Von_der_Web-Plattform_entfernt">Von der Web-Plattform entfernt</h2>
+
+<h3 id="HTML_2">HTML</h3>
+
+<ul>
+ <li>Das {{htmlelement("isindex")}} Element wurde vom HTML parser und aus der Formularvorlage entfernt. ({{bug(1266495)}}).</li>
+ <li>Das {{htmlelement("applet")}} Element wurde entfernt ({{bug(1279218)}}).</li>
+</ul>
+
+<h3 id="APIs_2">APIs</h3>
+
+<ul>
+ <li>Die {{domxref("KeyframeEffectReadOnly.spacing")}} Eigenschaft wurde von dem {{SpecName('Web Animations')}} spec entfernt, und deswegen wurde es auch von Gecko entfernt ({{bug(1339690)}}).</li>
+</ul>
+
+<h3 id="SVG_2">SVG</h3>
+
+<p><em>Keine Änderungen.</em></p>
+
+<h2 id="Änderungen_für_add-on_und_Mozilla-Entwickler">Änderungen für add-on und Mozilla-Entwickler</h2>
+
+<h3 id="WebExtensions">WebExtensions</h3>
+
+<p><em>Keine Änderungen.</em></p>
+
+<h2 id="Siehe_auch">Siehe auch</h2>
+
+<ul>
+ <li><a href="https://www.fxsitecompat.com/en-US/versions/56">Standortkompatibilität für Firefox 56</a></li>
+</ul>
+</article>
+
+<ul>
+</ul>
+
+<h2 id="Ältere_Versionen">Ältere Versionen</h2>
+
+<p>{{Firefox_for_developers(55)}},</p>
+</article>
diff --git a/files/de/mozilla/firefox/releases/57/index.html b/files/de/mozilla/firefox/releases/57/index.html
new file mode 100644
index 0000000000..dccbe85dea
--- /dev/null
+++ b/files/de/mozilla/firefox/releases/57/index.html
@@ -0,0 +1,99 @@
+---
+title: Firefox 57 für Entwickler
+slug: Mozilla/Firefox/Releases/57
+translation_of: Mozilla/Firefox/Releases/57
+---
+<div>{{FirefoxSidebar}}</div><div>{{draft}}</div>
+
+<p>Dieser Artikel enthält Informationen über die Änderungen in Firefox 57, die Entwicklern nützlich sind. Firefox 57 ist die aktuelle <a href="https://www.mozilla.org/en-US/firefox/channel/desktop/#nightly">Nightly-Version von Firefox</a> und wird am <a href="https://wiki.mozilla.org/RapidRelease/Calendar#Future_branch_dates">14. November 2017</a> veröffentlicht werden.</p>
+
+<article class="text-content" id="wikiArticle">
+<h2 id="Firefox_57_Firefox_Quantum">Firefox 57 = Firefox Quantum</h2>
+
+<p>Firefox 57 wurde Quantum genannt, weil dies der passendste Name für "Stabilität, Performance, etc." ist.</p>
+
+<h2 id="Änderungen_für_Web-Entwickler">Änderungen für Web-Entwickler</h2>
+
+<h3 id="Entwickler-Tools">Entwickler-Tools</h3>
+
+<p><em>Keine Änderungen.</em></p>
+
+<h3 id="HTML">HTML</h3>
+
+<p><em>Keine Änderungen.</em></p>
+
+<h3 id="CSS">CSS</h3>
+
+<p><em>Keine Änderungen.</em></p>
+
+<h3 id="SVG">SVG</h3>
+
+<p><em>Keine Änderungen.</em></p>
+
+<h3 id="JavaScript">JavaScript</h3>
+
+<p><em>Keine Änderungen.</em></p>
+
+<h3 id="APIs">APIs</h3>
+
+<h4 id="Neue_APIs">Neue APIs</h4>
+
+<p><em>Keine Änderungen.</em></p>
+
+<h4 id="DOM">DOM</h4>
+
+<p><em>Keine Änderungen.</em></p>
+
+<h4 id="DOM_events">DOM events</h4>
+
+<p><em>Keine Änderungen.</em></p>
+
+<h4 id="WebRTC">WebRTC</h4>
+
+<p><em>Keine Änderungen.</em></p>
+
+<h3 id="Sicherheit">Sicherheit</h3>
+
+<p><em>Keine Änderungen.</em></p>
+
+<h3 id="Plugins">Plugins</h3>
+
+<p><em>Keine Änderungen.</em></p>
+
+<h3 id="Anderes">Anderes</h3>
+
+<p><em>Keine Änderungen.</em></p>
+
+<h2 id="Von_der_Web-Plattform_entfernt">Von der Web-Plattform entfernt</h2>
+
+<h3 id="HTML_2">HTML</h3>
+
+<p><em>Keine Änderungen.</em></p>
+
+<h3 id="APIs_2">APIs</h3>
+
+<p><em>Keine Änderungen.</em></p>
+
+<h3 id="SVG_2">SVG</h3>
+
+<p><em>Keine Änderungen.</em></p>
+
+<h2 id="Änderungen_für_add-on_und_Mozilla-Entwickler">Änderungen für add-on und Mozilla-Entwickler</h2>
+
+<h3 id="WebExtensions">WebExtensions</h3>
+
+<p><em>Keine Änderungen.</em></p>
+
+<h2 id="Siehe_auch">Siehe auch</h2>
+
+<ul>
+ <li><a href="https://www.fxsitecompat.com/en-US/versions/57">Standortkompatibilität für Firefox 57</a></li>
+</ul>
+</article>
+
+<ul>
+</ul>
+
+<h2 id="Ältere_Versionen">Ältere Versionen</h2>
+
+<p>{{Firefox_for_developers(56)}}</p>
diff --git a/files/de/mozilla/firefox/releases/58/index.html b/files/de/mozilla/firefox/releases/58/index.html
new file mode 100644
index 0000000000..ba03bbbc43
--- /dev/null
+++ b/files/de/mozilla/firefox/releases/58/index.html
@@ -0,0 +1,186 @@
+---
+title: Firefox 58 for developers
+slug: Mozilla/Firefox/Releases/58
+translation_of: Mozilla/Firefox/Releases/58
+---
+<div>{{FirefoxSidebar}}</div><article class="text-content" id="wikiArticle">
+<p class="summary">Dieser Artikel enthält Informationen zu den Änderungen in Firefox 58, die sich auf Entwickler auswirken. Firefox 58 ist die aktuelle <a href="https://www.mozilla.org/en-US/firefox/channel/desktop/#beta">Beta-Version von Firefox</a> und wird am <a href="https://wiki.mozilla.org/RapidRelease/Calendar#Future_branch_dates">16. Januar 2018</a> ausgeliefert.</p>
+
+<article class="text-content" id="wikiArticle">
+<h2 id="Änderungen_für_Web_Entwickler">Änderungen für Web Entwickler</h2>
+
+<h3 id="Developer_Tools">Developer Tools</h3>
+
+<ul>
+ <li>Der Code für den alten Responsive-Design-Modus (standardmäßig aktiviert vor Firefox 52) wurde jetzt aus den Devtools entfernt ({{bug (1305777)}}). Informationen zu den neuen Tools finden Sie im <a href="/en-US/docs/Tools/Responsive_Design_Mode">Responsive Design-Modus</a>.</li>
+ <li>Die Option zum Anzeigen von MDN-Dokumenten aus dem CSS-Bereich des Seiteninspektors wurde entfernt ({{bug (1382171)}}).</li>
+ <li>Der <a href="/en-US/docs/Tools/Page_Inspector/How_to/Edit_CSS_shapes">CSS-Formen-Textmarker</a> wurde standardmäßig für Formen aktiviert, die über {{cssxref ("clip-path")}} ({{bug (1405339)}}) erstellt wurden.</li>
+ <li>Der <a href="/en-US/docs/Tools/Network_Monitor">Netzwerkmonitor</a> verfügt jetzt über eine Schaltfläche zum <a href="/en-US/docs/Tools/Network_Monitor#Pausing_and_resume_network_traffic_recording">Anhalten / Wiedergeben der Aufzeichnung des Netzwerkverkehr</a>s ({{bug (1005755)}}).</li>
+ <li>Im <a href="/en-US/docs/Tools/Network_Monitor">Netzwerkmonitor </a>ist die Filterschaltfläche "Flash" nicht mehr verfügbar und Flash-Anforderungen sind im Filter "Others" enthalten ({{bug (1413540)}}).</li>
+</ul>
+
+<h3 id="HTML">HTML</h3>
+
+<p><em>Keine Änderungen.</em></p>
+
+<h3 id="CSS">CSS</h3>
+
+<ul>
+ <li>Der Deskriptor {{cssxref ("@ font-face / font-display", "font-display")}} ist jetzt standardmäßig auf allen Plattformen verfügbar ({{bug (1317445)}}).</li>
+</ul>
+
+<h3 id="SVG">SVG</h3>
+
+<p><em>Keine Änderungen</em> <em>.</em></p>
+
+<h3 id="JavaScript">JavaScript</h3>
+
+<ul>
+ <li>Das Objekt {{jsxref ("Global_Objects / DateTimeFormat", "Intl.DateTimeFormat")}} unterstützt jetzt die Option <code>hourCycle</code> und das <code>hc</code> Sprachen Tag ({{bug (1386146)}}).</li>
+</ul>
+
+<h3 id="APIs">APIs</h3>
+
+<h4 id="Neue_APIs">Neue APIs</h4>
+
+<ul>
+ <li>Die API {{domxref ("PerformanceNavigationTiming")}} wurde implementiert ({{bug (1263722)}}).
+ <ul>
+ <li>Gecko besitzt nun eine Pref Einstellung, die verwendet werden kann, um die Schnittstelle bei Bedarf zu deaktivieren — <code>dom.enable_performance_navigation_timing</code>, Standardwert ist <code>true</code> ({{bug(1403926)}}).</li>
+ </ul>
+ </li>
+</ul>
+
+<h4 id="DOM">DOM</h4>
+
+<ul>
+ <li>Fehler, die über Fehlerobjekte in bestimmten APIs gemeldet werden - z. B. in der <code>error</code> Eigenschaft von {{domxref ("FileReader")}}, {{domxref ("IDBRequest")}} und {{domxref ("IDBTransaction")}}, sowie wenn Anfragen über bestimmte Methoden von {{domxref ("RTCPeerConnection")}} nicht erfolgreich sind - werden jetzt durch {{domxref ("DOMException")}} Instanzen repräsentiert. {{domxref ("DOMError")}} ist veraltet und wurde aus der DOM4-Spezifikation ({{bug (1120178)}}) ​​entfernt.</li>
+ <li>Die <a href="/en-US/docs/Web/API/WebVR_API">WebVR-API</a> wurde standardmäßig unter macOS aktiviert ({{bug (1374399)}}).</li>
+ <li>Die Eigenschaft {{domxref ("PerformanceResourceTiming.workerStart")}} wird jetzt unterstützt ({{bug (1191943)}}).</li>
+ <li>Budget-basierte Timeout-Throttling-Regeln wurden implementiert - siehe <a href="/en-US/docs/Web/API/Page_Visibility_API#Policies_in_place_to_aid_background_page_performance">Richtlinien zur Unterstützung der Performance von Hintergrundseiten</a> für weitere Details ({{bug (1377766)}}).</li>
+</ul>
+
+<h4 id="DOM_Events">DOM Events</h4>
+
+<p><em>Keine Änderungen.</em></p>
+
+<h4 id="Media_and_WebRTC">Media and WebRTC</h4>
+
+<ul>
+ <li>Die vorangestellte Version von {{domxref ("HTMLMediaElement.srcObject")}} wurde entfernt. Es ist sicherzustellen, daß der Code aktualisiert wird, um das Standard-<code>srcObject</code> anstelle von <code>mozSrcObject</code> ({{bug (1183495)}}) zu verwenden.</li>
+</ul>
+
+<h4 id="Canvas_und_WebGL">Canvas und WebGL</h4>
+
+<p><em>Keine Änderungen.</em></p>
+
+<h3 id="HTTP">HTTP</h3>
+
+<ul>
+ <li><code><a href="/en-US/docs/Web/HTTP/Headers/Content-Security-Policy/frame-ancestors">frame-ancestors</a></code> wird nicht mehr ignoriert in {{httpheader ("Content-Security-Policy-Report-Only")}} ({{bug (1380755)}}).</li>
+ <li>Firefox implementiert jetzt ein TLS-Handshake-Timeout mit einem Standardwert von 30 Sekunden. Der Timeout-Wert kann durch Bearbeiten des Parameters <code>network.http.tls-handshake-timeout</code> in about:config ({{bug(1393691)}}).</li>
+ <li>Die <code><a href="/en-US/docs/Web/HTTP/Headers/Content-Security-Policy/worker-src">worker-src</a></code> CSP Richtlinie wurde implementiert ({{bug(1302667)}}).</li>
+</ul>
+
+<h3 id="Security">Security</h3>
+
+<p><em>Keine Änderungen.</em></p>
+
+<h3 id="Plugins">Plugins</h3>
+
+<p><em>Keine Änderungen.</em></p>
+
+<h3 id="Andere">Andere</h3>
+
+<p><em>Keine Änderungen.</em></p>
+
+<h2 id="Webplattform_Berichtigungen">Webplattform Berichtigungen</h2>
+
+<h3 id="HTML_2">HTML</h3>
+
+<ul>
+ <li>{{htmlelement ("a")}} -Elemente können nicht mehr in ein {{htmlelement ("map")}} -Element eingebettet werden, um einen Hotspot-Bereich zu erstellen - ein {{htmlelement ("area")}} -Element muss stattdessen verwendet werden ({{bug (1317937)}}).</li>
+</ul>
+
+<h3 id="CSS_2">CSS</h3>
+
+<ul>
+ <li>Die folgenden proprietären Mozilla-Systemmetrik-Pseudoklassen sind für Webinhalte nicht mehr verfügbar ({{bug(1396066)}}):
+ <ul>
+ <li>{{Cssxref(":-moz-system-metric(images-in-menus)")}}</li>
+ <li>{{Cssxref(":-moz-system-metric(mac-graphite-theme)")}}</li>
+ <li>{{Cssxref(":-moz-system-metric(scrollbar-end-backward)")}}</li>
+ <li>{{Cssxref(":-moz-system-metric(scrollbar-end-forward)")}}</li>
+ <li>{{Cssxref(":-moz-system-metric(scrollbar-start-backward)")}}</li>
+ <li>{{Cssxref(":-moz-system-metric(scrollbar-start-forward)")}}</li>
+ <li>{{Cssxref(":-moz-system-metric(scrollbar-thumb-proportional)")}}</li>
+ <li>{{Cssxref(":-moz-system-metric(touch-enabled)")}}</li>
+ <li>{{Cssxref(":-moz-system-metric(windows-default-theme)")}}</li>
+ </ul>
+ </li>
+ <li>Die folgenden proprietären Mozilla-Medienfunktionen stehen nicht mehr für Webinhalte zur Verfügung ({{bug(1396066)}}):
+ <ul>
+ <li><code>-moz-color-picker-available</code></li>
+ <li><code>-moz-is-glyph</code></li>
+ <li><a href="https://developer.mozilla.org/en-US/docs/Web/CSS/@media/-moz-mac-graphite-theme"><code>-moz-mac-graphite-theme</code></a></li>
+ <li><code>-moz-mac-yosemite-theme</code></li>
+ <li><a href="https://developer.mozilla.org/en-US/docs/Web/CSS/@media/-moz-os-version"><code>-moz-os-version</code></a></li>
+ <li><code>-moz-overlay-scrollbars</code></li>
+ <li><code>-moz-physical-home-button</code></li>
+ <li><a href="https://developer.mozilla.org/en-US/docs/Web/CSS/@media/-moz-scrollbar-end-backward"><code>-moz-scrollbar-end-backward</code></a></li>
+ <li><a href="https://developer.mozilla.org/en-US/docs/Web/CSS/@media/-moz-scrollbar-end-forward"><code>-moz-scrollbar-end-forward</code></a></li>
+ <li><a href="https://developer.mozilla.org/en-US/docs/Web/CSS/@media/-moz-scrollbar-start-backward"><code>-moz-scrollbar-start-backward</code></a></li>
+ <li><a href="https://developer.mozilla.org/en-US/docs/Web/CSS/@media/-moz-scrollbar-start-forward"><code>-moz-scrollbar-start-forward</code></a></li>
+ <li><a href="https://developer.mozilla.org/en-US/docs/Web/CSS/@media/-moz-scrollbar-thumb-proportional"><code>-moz-scrollbar-thumb-proportional</code></a></li>
+ <li><code>-moz-swipe-animation-enabled</code></li>
+ <li><a href="https://developer.mozilla.org/en-US/docs/Web/CSS/@media/-moz-windows-accent-color-in-titlebar"><code>-moz-windows-accent-color-in-titlebar</code></a></li>
+ <li><a href="https://developer.mozilla.org/en-US/docs/Web/CSS/@media/-moz-windows-classic"><code>-moz-windows-classic</code></a></li>
+ <li><a href="https://developer.mozilla.org/en-US/docs/Web/CSS/@media/-moz-windows-compositor"><code>-moz-windows-compositor</code></a></li>
+ <li><a href="https://developer.mozilla.org/en-US/docs/Web/CSS/@media/-moz-windows-default-theme"><code>-moz-windows-default-theme</code></a></li>
+ <li><a href="https://developer.mozilla.org/en-US/docs/Web/CSS/@media/-moz-windows-glass"><code>-moz-windows-glass</code></a></li>
+ <li><a href="https://developer.mozilla.org/en-US/docs/Web/CSS/@media/-moz-windows-theme"><code>-moz-windows-theme</code></a></li>
+ </ul>
+ </li>
+ <li>Die proprietäte Mozilla <code>:-moz-styleeditor-transitioning</code> steht nicht mehr für Webinhalte zur Verfügung ({{bug(1396099)}}).</li>
+</ul>
+
+<h3 id="JavaScript_2">JavaScript</h3>
+
+<ul>
+ <li>Die nicht standardmäßige Methode {{jsxref ("Date.prototype.toLocaleFormat ()")}} wurde entfernt ({{bug (818634)}}). <a href="/en-US/docs/Web/JavaScript/Guide/Working_with_Objects#Defining_getters_and_setters">Siehe Warnung: Date.prototype.toLocaleFormat ist für weitere Informationen und die Migrationshilfe veraltet</a>.</li>
+ <li>Die nicht standardmäßigen und veralteten Methoden {{jsxref ("Object.prototype.watch ()")}} und {{jsxref ("Object.prototype.unwatch", "unwatch ()")}} wurden entfernt und werden nicht mehr angezeigt ({{bug (638054)}}). Erwägen Sie stattdessen, <a href="/en-US/docs/Web/JavaScript/Guide/Working_with_Objects#Defining_getters_and_setters">Setter und Getter</a> Methoden oder Proxys zu verwenden.</li>
+ <li>Das <a href="/en-US/docs/Web/JavaScript/Reference/Deprecated_and_obsolete_features/The_legacy_Iterator_protocol">Legacy-Iterator-Protokoll</a>, das <code><a href="/en-US/docs/Archive/Web/StopIteration">StopIteration</a></code> Objekt, die <a href="/en-US/docs/Web/JavaScript/Reference/Statements/Legacy_generator_function">Legacy-Generator-Funktionen</a> und die nicht standardmäßige {{jsxref ("Function.prototype.isGenerator ()")}} - Methode wurden entfernt. Verwenden Sie stattdessen die ES2015-<a href="/en-US/docs/Web/JavaScript/Reference/Iteration_protocols">Iterationsprotokolle</a> und standardkonforme <a href="/en-US/docs/Web/JavaScript/Guide/Iterators_and_Generators">Iteratoren und Generatoren</a> ({{bug (1083482)}}, {{bug (1413867)}}, {{bug (1119777)}}).</li>
+</ul>
+
+<h3 id="APIs_2">APIs</h3>
+
+<ul>
+ <li>Die proprietären <code>moz-blob</code> und <code>moz-chunked-text</code> Werte der {{Domxref ("XMLHttpRequest.responseType")}} - Eigenschaft wurden in Firefox 58 vollständig entfernt ({{bug (1397145)}}, {{bug (1397151)}}, {{bug (1120171)}}).</li>
+ <li>Die Voreinstellungen <code>dom.abortController.enabled</code> und <code>dom.abortController.fetch.enabled</code>, die die Belichtung der Abort-API-Funktionalität kontrollierten, wurden nun entfernt, da diese Funktionen jetzt standardmäßig aktiviert sind ({{bug (1402317)}}).</li>
+ <li>Die proprietäre Eigenschaft <code>mozSrcObject</code> wurde in Firefox 58 entfernt ({{bug (1183495)}}). Verwenden Sie stattdessen die standardmäßige {{domxref ("HTMLMediaElement.srcObject")}} -Eigenschaft.</li>
+</ul>
+
+<h3 id="SVG_2">SVG</h3>
+
+<p><em>Keine Änderungen.</em></p>
+
+<h2 id="Änderungen_für_Add-On_und_Mozilla_Entwickler">Änderungen für Add-On und Mozilla Entwickler</h2>
+
+<h3 id="WebExtensions">WebExtensions</h3>
+
+<p><em>Keine Änderungen.</em></p>
+
+<h2 id="Siehe_auch">Siehe auch</h2>
+
+<ul>
+ <li><a href="https://www.fxsitecompat.com/en-US/versions/58">Site Compatibility for Firefox 58</a></li>
+</ul>
+</article>
+
+<ul>
+</ul>
+
+<h2 id="Ältere_Versionen">Ältere Versionen</h2>
+
+<p>{{Firefox_for_developers(57)}}</p>
+</article>
diff --git a/files/de/mozilla/firefox/releases/60/index.html b/files/de/mozilla/firefox/releases/60/index.html
new file mode 100644
index 0000000000..2d75e69ac2
--- /dev/null
+++ b/files/de/mozilla/firefox/releases/60/index.html
@@ -0,0 +1,146 @@
+---
+title: Firefox 60 for developers
+slug: Mozilla/Firefox/Releases/60
+translation_of: Mozilla/Firefox/Releases/60
+---
+<div>{{FirefoxSidebar}}</div><div>{{draft}}</div>
+
+<p class="summary">This article provides information about the changes in Firefox 60 that will affect developers. Firefox 60 is the current <a href="https://www.mozilla.org/en-US/firefox/channel/desktop/#nightly">Nightly version of Firefox</a>, and will ship on <a href="https://wiki.mozilla.org/RapidRelease/Calendar#Future_branch_dates">May 8, 2018</a>.</p>
+
+<h2 id="Stylo_comes_to_Firefox_for_Android_in_60">Stylo comes to Firefox for Android in 60</h2>
+
+<p><a href="https://hacks.mozilla.org/2017/08/inside-a-super-fast-css-engine-quantum-css-aka-stylo/">Firefox's new parallel CSS engine</a> — also known as <strong>Quantum CSS</strong> or <strong>Stylo</strong>, which was <a href="/en-US/Firefox/Releases/57#Firefox_57_Firefox_Quantum">first enabled by default in Firefox 57 for desktop</a>, has now been enabled in Firefox for Android.</p>
+
+<h2 id="Changes_for_web_developers">Changes for web developers</h2>
+
+<h3 id="Developer_tools">Developer tools</h3>
+
+<ul>
+ <li>In the CSS Pane rules view (see <a href="/en-US/docs/Tools/Page_Inspector/How_to/Examine_and_edit_CSS">Examine and edit CSS</a>), the keyboard shortcuts for precise value increments (increase/decrease by 0.1) have changed from <kbd>Alt</kbd> + <kbd>Up</kbd>/<kbd>Down</kbd> to <kbd>Ctrl</kbd> + <kbd>Up</kbd>/<kbd>Down</kbd> on Linux and Windows, to avoid clashes with default OS-level shortcuts (see {{bug("1413314")}}).</li>
+ <li>Also in the CSS Pane rules view, <a href="https://developer.mozilla.org/en-US/docs/Web/CSS/Using_CSS_variables">CSS variable names</a> will now auto-complete ({{bug(1422635)}}). If you enter <code>var(</code> into a property value and then type a dash (<code>-</code>), any variables you have declared in your CSS will then appear in an autocomplete list.</li>
+</ul>
+
+<h3 id="HTML">HTML</h3>
+
+<p>Pressing the Enter key in <code>designMode</code> and <code>contenteditable</code> now inserts <code>&lt;div&gt;</code> elements when the caret is in an inline element or text node which is a child of a block level editing host — instead of inserting <code>&lt;br&gt;</code> elements like it used to. If you want to use the old behavior on your app, you can do it with <code>document.execCommand()</code>. See <a href="/en-US/docs/Web/Guide/HTML/Editable_content#Differences_in_markup_generation">Differences in markup generation</a> for more details.</p>
+
+<h3 id="CSS">CSS</h3>
+
+<ul>
+ <li>The {{cssxref("align-content")}}, {{cssxref("align-items")}}, {{cssxref("align-self")}}, {{cssxref("justify-content")}}, and {{cssxref("place-content")}} property values have been updated as per the latest <a href="https://drafts.csswg.org/css-align-3/">CSS Box Alignment Module Level 3</a> spec ({{bug(1430817)}}).</li>
+ <li>The {{cssxref("paint-order")}} property has been implemented ({{bug(1426146)}}).</li>
+</ul>
+
+<h3 id="SVG">SVG</h3>
+
+<p><em>No changes.</em></p>
+
+<h3 id="JavaScript">JavaScript</h3>
+
+<p>The {{jsxref("Array.prototype.values()")}} method has been added again ({{bug(1420101)}}). It was disabled due to <a href="https://www.fxsitecompat.com/en-CA/docs/2016/array-prototype-values-breaks-some-legacy-apps/">compatibilty issues</a> in earlier versions. Make sure your code doesn't have any custom implementation of this method.</p>
+
+<h3 id="APIs">APIs</h3>
+
+<h4 id="New_APIs">New APIs</h4>
+
+<p><em>No changes.</em></p>
+
+<h4 id="DOM">DOM</h4>
+
+<ul>
+ <li>In the <a href="/en-US/docs/Web/API/Web_Authentication_API">Web Authentication API</a>, the <code>MakePublicKeyCredentialOptions</code> dictionary object has been renamed {{domxref("PublicKeyCredentialCreationOptions")}}; this change has been made in Firefox ({{bug(1436473)}}).</li>
+ <li>The <code>dom.workers.enabled</code> pref has been removed, meaning workers can no longer be disabled ({{bug(1434934)}}).</li>
+ <li>The {{domxref("Document.body","body")}} property is now implemented on the {{domxref("Document")}} interface, rather than the {{domxref("HTMLDocument")}} interface ({{bug(1276438)}}).</li>
+ <li>{{domxref("PerformanceResourceTiming")}} is now available in workers ({{bug(1425458)}}).</li>
+ <li>The {{domxref("PerformanceObserver.takeRecords()")}} method has been implemented ({{bug(1436692)}}).</li>
+ <li>The {{domxref("KeyboardEvent.keyCode")}} attribute of punctuation key becomes non-zero even if active keyboard layout doesn't produce ASCII character. See <a href="/en-US/docs/Web/API/KeyboardEvent/keyCode#keyCode_of_punctuation_keys_on_some_keyboard_layout">the detail</a>. Note that please do <strong>not</strong> use <code>KeyboardEvent.keyCode</code> in new applications. Please consider to use {{domxref("KeyboardEvent.key")}} or {{domxref("KeyboardEvent.code")}} instead.</li>
+ <li>The {{domxref("Animation.updatePlaybackRate()")}} method has been implemented ({{bug("1436659")}}).</li>
+ <li>New rules have been included for determining <a href="/en-US/docs/Web/API/KeyboardEvent/keyCode#keyCode_of_punctuation_keys_on_some_keyboard_layout">keyCode values of punctuation keys</a> ({{bug(1036008)}}).</li>
+</ul>
+
+<h4 id="DOM_events">DOM events</h4>
+
+<p><em>No changes.</em></p>
+
+<h4 id="Service_workers">Service workers</h4>
+
+<p><em>No changes.</em></p>
+
+<h4 id="Media_and_WebRTC">Media and WebRTC</h4>
+
+<ul>
+ <li>When recording or sharing media obtained using {{domxref("MediaDevices.getUserMedia", "getUserMedia()")}}, muting the camera by setting the corresponding track's {{domxref("MediaStreamTrack.enabled")}} property to <code>false</code> now turns off the camera's "in use" indicator light, to help the user more easily see that the camera is not in use ({{bug(1299515)}}).</li>
+ <li>Removing a track from an {{domxref("RTCPeerConnection")}} using {{domxref("RTCPeerConnection.removeTrack", "removeTrack()")}} no longer removes the track's {{domxref("RTCRtpSender")}} from the peer connection's list of senders as reported by {{domxref("RTCPeerConnection.getSenders", "getSenders()")}} ({{bug(1290949)}}).</li>
+ <li>The {{domxref("RTCRtpContributingSource")}} and {{domxref("RTCRtpSynchronizationSource")}} objects' timestamps were previously being reported based on values returned by {{jsxref("Date.getTime()")}}. In Firefox 60, these have been fixed to correctly use the <a href="/en-US/docs/Web/API/Performance_API">Performance Timing API</a> instead ({{bug(1433576)}}).</li>
+</ul>
+
+<h4 id="Canvas_and_WebGL">Canvas and WebGL</h4>
+
+<p><em>No changes.</em></p>
+
+<h3 id="CSSOM">CSSOM</h3>
+
+<p><em>No changes.</em></p>
+
+<h3 id="HTTP">HTTP</h3>
+
+<p><em>No changes.</em></p>
+
+<h3 id="Security">Security</h3>
+
+<p><em>No changes.</em></p>
+
+<h3 id="Plugins">Plugins</h3>
+
+<p><em>No changes.</em></p>
+
+<h3 id="Other">Other</h3>
+
+<p><em>No changes.</em></p>
+
+<h2 id="Removals_from_the_web_platform">Removals from the web platform</h2>
+
+<h3 id="HTML_2">HTML</h3>
+
+<p><em>No changes.</em></p>
+
+<h3 id="CSS_2">CSS</h3>
+
+<ul>
+ <li>The proprietary {{cssxref("-moz-user-input")}} property's <code>enabled</code> and <code>disabled</code> values are no longer available ({{bug("1405087")}}).</li>
+ <li>The proprietary {{cssxref("-moz-border-top-colors")}}, {{cssxref("-moz-border-right-colors")}}, {{cssxref("-moz-border-bottom-colors")}}, and {{cssxref("-moz-border-left-colors")}} properties have been removed from the platform completely ({{bug(1429723)}}).</li>
+</ul>
+
+<h3 id="JavaScript_2">JavaScript</h3>
+
+<p>The non-standard <a href="/en-US/docs/Web/JavaScript/Reference/Operators/Expression_closures">expression closure</a> syntax has been removed ({{bug(1426519)}}).</p>
+
+<h3 id="APIs_2">APIs</h3>
+
+<p><em>No changes.</em></p>
+
+<h3 id="SVG_2">SVG</h3>
+
+<p><em>No changes.</em></p>
+
+<h3 id="Other_2">Other</h3>
+
+<p><em>No changes.</em></p>
+
+<h2 id="Changes_for_add-on_and_Mozilla_developers">Changes for add-on and Mozilla developers</h2>
+
+<h3 id="WebExtensions">WebExtensions</h3>
+
+<p><em>No changes.</em></p>
+
+<h2 id="See_also">See also</h2>
+
+<ul>
+ <li>Site compatibility for Firefox 60</li>
+</ul>
+
+<h2 id="Older_versions">Older versions</h2>
+
+<p>{{Firefox_for_developers(58)}}</p>
+
+<p> </p>
diff --git a/files/de/mozilla/firefox/releases/68/index.html b/files/de/mozilla/firefox/releases/68/index.html
new file mode 100644
index 0000000000..8a5c4fa572
--- /dev/null
+++ b/files/de/mozilla/firefox/releases/68/index.html
@@ -0,0 +1,162 @@
+---
+title: Firefox 68 für Entwickler
+slug: Mozilla/Firefox/Releases/68
+translation_of: Mozilla/Firefox/Releases/68
+---
+<p>{{FirefoxSidebar}}{{Draft}}</p>
+
+<p class="summary">This article provides information about the changes in Firefox 68 that will affect developers. Firefox 68 is the current <a href="https://www.mozilla.org/en-US/firefox/channel/desktop/#beta" rel="noopener">Beta version of Firefox</a>, and will ship on <a href="https://wiki.mozilla.org/RapidRelease/Calendar#Future_branch_dates" rel="noopener">July 9, 2019</a>.</p>
+
+<h2 id="Changes_for_web_developers">Changes for web developers</h2>
+
+<h3 id="Developer_tools">Developer tools</h3>
+
+<ul>
+ <li>Die Einstellung, die die Sichtbarkeit interner Erweiterungen (System-Add-Ons und versteckte Erweiterungen) auf der <a href="/en-US/docs/Tools/about:debugging">about:debugging</a>-Seite kontrolliert, wurde von <code>devtools.aboutdebugging.showSystemAddons</code> zu  <code>devtools.aboutdebugging.showHiddenAddons</code> geändert ({{bug(1544372)}}).</li>
+ <li>Die Konsole zeigt jetzt <a href="/en-US/docs/Tools/Web_Console/Console_messages#CSS">mehr Informationen über CSS-Warnungen</a> inklusive einer Liste der Knoten der DOM-Elemente, die die Regel genutzt haben ({{bug(1093953)}}).</li>
+ <li>Über die <a href="/en-US/docs/Tools/Network_Monitor/request_list#Filtering_requests">Anfragen-Liste</a> der Netzwerkanalyse kann jetzt eine spezifische URL geblockt werden ({{bug(1151368)}}).</li>
+ <li>Es ist jetzt möglich, eine Netzwerkanfrage erneut zu senden, ohne das Verfahren, die URL, die Parameter oder die Überschrift ändern zu müssen, indem der <a href="/en-US/docs/Tools/Network_Monitor/request_list#Context_menu">Resend</a>-Befehl im Kontextmenü ausgeführt wird ({{bug(1422014)}}).</li>
+ <li>Es ist jetzt möglich, die <a href="/en-US/docs/Tools/Network_Monitor/request_list#Network_request_columns">Breite der Spalten</a> in der Netzwerkanalyse zu ändern, um dem Arbeitsalauf gerecht zu werden. ({{bug(1358414)}}).</li>
+ <li>The context menu of the <a href="/en-US/docs/Tools/Network_Monitor/request_details#Headers">Headers</a> tab now allows you to copy all or some of the header information to the clipboard in JSON format ({{bug(1442249)}}).</li>
+ <li>A button has been added to the <a href="/en-US/docs/Tools/Page_Inspector/How_to/Examine_and_edit_CSS#Examine_CSS_rules">rules panel</a> of the Page Inspector that allows you to toggle display of any print media queries ({{bug(1534984)}}).</li>
+ <li>An icon will be displayed next to invalid or unsupported <a href="/en-US/docs/Page_Inspector/How_to/Examine_and_edit_CSS#Examine_CSS_rules">CSS rules</a> in the Rules pane of the Page Inspector ({{bug(1306054)}}).</li>
+</ul>
+
+<h4 id="Removals">Removals</h4>
+
+<h3 id="HTML">HTML</h3>
+
+<p><em>No changes.</em></p>
+
+<h4 id="Removals_2"> Removals</h4>
+
+<h3 id="CSS">CSS</h3>
+
+<ul>
+ <li><a href="/en-US/docs/Web/CSS/CSS_Scroll_Snap">CSS Scroll Snapping</a> has been updated to the latest version of the specification ({{bug(1312163)}}) and ({{bug(1544136)}}), this includes:
+
+ <ul>
+ <li>The scroll-padding properties ({{bug(1373832)}})</li>
+ <li>The scroll-margin properties ({{bug(1373833)}})</li>
+ <li>{{CSSxRef("scroll-snap-align")}} ({{bug(1373835)}})</li>
+ </ul>
+ </li>
+ <li>The {{CSSxRef("-webkit-line-clamp")}} property has been implemented for compatibility with other browsers ({{bug(866102)}}).</li>
+ <li>Support {{CSSxRef("::marker")}} pseudo-element ({{bug(205202)}}) and animation for ::marker pseudos ({{bug(1538618)}})</li>
+ <li>Change {{CSSxRef("currentColor")}} to be a computed value (except for color property)  ({{bug(760345)}}).</li>
+ <li>Fix support for the 'ch' length unit to match spec (fallback for no '0' glyph, vertical metrics) ({{bug(282126)}})</li>
+ <li>The  {{CSSxRef("counter-set")}} property has been implemented. ({{bug(1518201)}})</li>
+ <li>Implement list numbering using a built-in 'list-item' counter - fixes list numbering bugs ({{bug(288704)}})</li>
+ <li>CSS Transforms are now supported in indirectly rendered things e.g.)  {{SVGElement("mask")}},  {{SVGElement("marker")}},  {{SVGElement("pattern")}},  {{SVGElement("clipPath")}} ({{bug(1323962)}}).</li>
+</ul>
+
+<h4 id="Removals_3">Removals</h4>
+
+<ul>
+ <li>{{CSSxRef("scroll-snap-coordinate")}}, {{CSSxRef("scroll-snap-destination")}}, {{CSSxRef("scroll-snap-type-x")}} and {{CSSxRef("scroll-snap-type-y")}} have been removed.</li>
+ <li>The {{CSSxRef("scroll-snap-type")}} property has become a longhand, so the old shorthand syntax like <code>scroll-snap-type:mandatory</code> will stop working. See the <a href="https://www.fxsitecompat.com/en-CA/docs/2019/legacy-css-scroll-snap-syntax-support-has-been-dropped/">Firefox Site Compatability</a> note.</li>
+</ul>
+
+<h3 id="SVG">SVG</h3>
+
+<p><em>No changes.</em></p>
+
+<h4 id="Removals_4">Removals</h4>
+
+<h3 id="JavaScript">JavaScript</h3>
+
+<p><em>No changes.</em></p>
+
+<h4 id="Removals_5">Removals</h4>
+
+<h3 id="APIs">APIs</h3>
+
+<p><em>No changes.</em></p>
+
+<h4 id="New_APIs">New APIs</h4>
+
+<ul>
+ <li>Implement Resize Observer API ({{bug(1272409)}}).</li>
+</ul>
+
+<h4 id="DOM">DOM</h4>
+
+<ul>
+ <li>The <a href="/en-US/docs/Web/API/Visual_Viewport_API">Visual Viewport API</a> has now been enabled by default on Android ({{bug(1512813)}}). Adding this API to desktop versions of Firefox is being tracked in {{bug(1551302)}}.</li>
+ <li>The {{domxref("HTMLImageElement.decode", "decode()")}} element on images is now implemented. this can be used to trigger loading and decoding of an image prior to adding it to the DOM ({{bug(1501794)}}).</li>
+ <li>The <a href="/en-US/docs/Web/API/Notifications_API">Notifications API</a> now requires that the user interact with the page before it can request permission to send notifications ({{bug(1524619)}}).</li>
+ <li>{{domxref("XMLHttpRequest")}} has been updated to no longer accept the non-standard <code>moz-chunked-arraybuffer</code> value for {{domxref("XMLHttpRequest.responseType", "responseType")}}. Code still using it should be updated to <a href="/en-US/docs/Web/API/Streams_API/Using_readable_streams#Consuming_a_fetch_as_a_stream">use the Fetch API as a stream</a> ({{bug(1120171)}}).</li>
+ <li><code>XMLHttpRequest</code> now outputs a warning to console if you perform a synchronous request while handling an {{domxref("Window.unload_event", "unload")}}, {{domxref("Window.beforeunload_event", "beforeunload")}}, or {{domxref("Window.pagehide_event", "pagehide")}} event ({{bug(980902)}}).</li>
+ <li>The {{domxref("Document.cookie", "cookie")}} property has moved from the {{domxref("HTMLDocument")}} interface to the {{domxref("Document")}} interface, allowing documents other than {{Glossary("HTML")}} to use cookies ({{bug(144795)}}).</li>
+</ul>
+
+<h4 id="DOM_events">DOM events</h4>
+
+<h4 id="Service_workers">Service workers</h4>
+
+<h4 id="Media_Web_Audio_and_WebRTC">Media, Web Audio, and WebRTC</h4>
+
+<ul>
+ <li>WebRTC has been updated to recognize that a <code>null</code> candidate passed into the {{domxref("RTCPeerConnection.icecandidate", "icecandidate")}} event handler, indicating the receipt of a candidate, instead indicates that there are no further candidates coming; when this happens the ICE gathering ({{domxref("RTCPeerConnection.iceGatheringState", "iceGatheringState")}}) state reaches <code>complete</code> ({{bug(1318167)}}).</li>
+ <li>The {{domxref("RTCRtpReceiver")}} methods {{domxref("RTCRtpReceiver.getContributingSources", "getContributingSources()")}} and {{domxref("RTCRtpReceiver.getSynchronizationSources", "getSynchronizationSources()")}} now support video tracks; previously they only worked on audio ({{bug(1534466)}}).</li>
+ <li>
+ <p>{{domxref("MediaDevices.getUserMedia", "getUserMedia()")}} may no longer be used from a non-secure context; attempting to do so now throws a <code>NotAllowedError</code> result. Secure contexts are those loaded using HTTPS, those located using the <code>file:///</code> scheme, and those loaded from <code>localhost</code>. For now, if you must, you can re-enable the ability to perform insecure calls to <code>getUserMedia()</code> by setting the preference <code>media.getusermedia.insecure.enabled</code> to <code>true</code> ({{bug(1335740)}}).</p>
+
+ <div class="blockIndicator note">
+ <p><strong>Note:</strong> In the future, Firefox will also remove the {{domxref("navigator.mediaDevices")}} property on insecure contexts, preventing all access to the {{domxref("MediaDevices")}} APIs; see {{bug()}} for the status of this work. <strong>This is already the case in Nightly builds.</strong></p>
+ </div>
+ </li>
+</ul>
+
+<h4 id="Canvas_and_WebGL">Canvas and WebGL</h4>
+
+<h4 id="Removals_6">Removals</h4>
+
+<ul>
+ <li>Removed the non-standard {{DOMxRef("XMLDocument.load()")}} method ({{bug(332175)}}).</li>
+ <li>Removed the non-standard {{DOMxRef("XMLDocument.async")}} property ({{bug(1328138)}}).</li>
+</ul>
+
+<h3 id="Security">Security</h3>
+
+<p><em>No changes.</em></p>
+
+<h4 id="Removals_7">Removals</h4>
+
+<h3 id="Plugins">Plugins</h3>
+
+<p><em>No changes.</em></p>
+
+<h4 id="Removals_8">Removals</h4>
+
+<h3 id="Other">Other</h3>
+
+<p><em>No changes.</em></p>
+
+<h4 id="Removals_9">Removals</h4>
+
+<h2 id="Changes_for_add-on_developers">Changes for add-on developers</h2>
+
+<h3 id="API_changes">API changes</h3>
+
+<ul>
+ <li>The The proxy.register() and proxy.unregister() functions have been deprecated and will be removed from Firefox 71 ({{bug(1545811)}}).</li>
+</ul>
+
+<h4 id="Removals_10">Removals</h4>
+
+<h3 id="Manifest_changes">Manifest changes</h3>
+
+<p><em>No changes.</em></p>
+
+<h4 id="Removals_11">Removals</h4>
+
+<h2 id="See_also">See also</h2>
+
+<ul>
+ <li><a href="https://www.fxsitecompat.com/en-CA/versions/68/">Site compatibility for Firefox 68</a></li>
+</ul>
+
+<h2 id="Older_versions">Older versions</h2>
+
+<p>{{Firefox_for_developers(67)}}</p>
diff --git a/files/de/mozilla/firefox/releases/index.html b/files/de/mozilla/firefox/releases/index.html
new file mode 100644
index 0000000000..e5af49da21
--- /dev/null
+++ b/files/de/mozilla/firefox/releases/index.html
@@ -0,0 +1,12 @@
+---
+title: Firefox developer release notes
+slug: Mozilla/Firefox/Releases
+tags:
+ - Firefox
+ - NeedsTranslation
+ - TopicStub
+translation_of: Mozilla/Firefox/Releases
+---
+<div>{{FirefoxSidebar}}</div><p>This page provides links to the "Firefox X for developers" articles for each Firefox release. These notes let you see what features were added and bugs eliminated in each version of Firefox.</p>
+
+<div class="multiColumnList">{{ListSubpages("",1,0,1)}}</div>
diff --git a/files/de/mozilla/firefox/the_about_protocol/index.html b/files/de/mozilla/firefox/the_about_protocol/index.html
new file mode 100644
index 0000000000..5225af8915
--- /dev/null
+++ b/files/de/mozilla/firefox/the_about_protocol/index.html
@@ -0,0 +1,190 @@
+---
+title: Firefox und das "about"-Protokoll
+slug: Mozilla/Firefox/The_about_protocol
+tags:
+ - Einstellungen
+ - Firefox
+ - Guide
+ - Protokolle
+ - Referenz
+ - 'about:'
+translation_of: Mozilla/Firefox/The_about_protocol
+---
+<div>{{FirefoxSidebar}}</div>
+
+<div class="syntaxbox">Es gibt eine Menge wichtiger Informationen über Firefox, die sich hinter dem <code>about:</code> URL-Protokoll verbergen. Am wichtigsten ist die URL <code>about:config</code>, die Einstellungen anzeigt, die sich dort betrachten und ändern lassen. Hier ist eine komplette Liste mit allen URLs  des <code>about:</code>-Pseudo-Protokolls::</div>
+
+<div class="syntaxbox"> </div>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col"><code>about:</code> Seite</th>
+ <th scope="col">Beschriebung</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td><code>about:</code></td>
+ <td>Zeigt die Versionsnummer, Buildinformationen, Links zu den Beitragenden, Lizenzinformationen und Einstellungen zur Build-Konfiguration an.</td>
+ </tr>
+ <tr>
+ <td><code>about:about</code></td>
+ <td>Zeigt einen Überblick über alle about:-Seiten an.</td>
+ </tr>
+ <tr>
+ <td><code>about:accounts</code></td>
+ <td>Zeigt Informationen zur <a href="https://www.mozilla.org/en-US/firefox/sync/">Sync-Funktion </a>an.</td>
+ </tr>
+ <tr>
+ <td><code>about:addons</code></td>
+ <td>Öffnet den Add-ons-Manager</td>
+ </tr>
+ <tr>
+ <td><code>about:app-manager</code></td>
+ <td>Öffnet den App-Manager</td>
+ </tr>
+ <tr>
+ <td><code>about:buildconfig</code></td>
+ <td>Zeigt die für die Version von Firefox verwendete Konfiguration und Plattform an.</td>
+ </tr>
+ <tr>
+ <td><code>about:cache</code></td>
+ <td>Zeigt Informationen zum Speicher, Speichermedium und Arbeitsspeicher an.</td>
+ </tr>
+ <tr>
+ <td><code>about:compartments</code></td>
+ <td>
+ <div class="note">
+ <p>Seit Firefox 26 können diese Informationen unter "Other Measurements" in about:memory gefunden werden.</p>
+ </div>
+
+ <p>Zeigt Informationen zu einzelnen "<a href="/en-US/docs/SpiderMonkey/SpiderMonkey_compartments">Compartments"</a>.</p>
+ </td>
+ </tr>
+ <tr>
+ <td><code>about:config</code></td>
+ <td>Bietet eine Möglichkeit, Einstellungen in Firefox zu untersuchen und zu ändern.</td>
+ </tr>
+ <tr>
+ <td><code>about:crashes</code></td>
+ <td>Listet alle Abstürze, die während der gesamten Lebenszeit von Firefox passierten, auf.</td>
+ </tr>
+ <tr>
+ <td><code>about:credits</code></td>
+ <td>Listet alle Ünterstützer und Mitwirkenden des Firefox-Projektes auf.</td>
+ </tr>
+ <tr>
+ <td><code>about:customizing</code></td>
+ <td>Wechselt zur Anpassungsseite, die Anpassungen der Benutzeroberfläche von Firefox erlaubt.</td>
+ </tr>
+ <tr>
+ <td><code>about:downloads</code></td>
+ <td>Listet alle Downloads von Firefox aus auf.</td>
+ </tr>
+ <tr>
+ <td><code>about:healthreport</code></td>
+ <td>Zeigt Leistungsinformationen von Firefox an (nur wenn der Nutzer dies aktiviert hat).</td>
+ </tr>
+ <tr>
+ <td><code>about:home</code></td>
+ <td>Öffnet die Startseite, die beim Öffnen eines neuen Fensters erscheint.</td>
+ </tr>
+ <tr>
+ <td><code>about:license</code></td>
+ <td>Zeigt Lizenzinformationen an.</td>
+ </tr>
+ <tr>
+ <td><code>about:logo</code></td>
+ <td>Zeigt das Firefox-Logo an.</td>
+ </tr>
+ <tr>
+ <td><a href="/en-US/docs/Mozilla/Performance/about%3Amemory">about:memory</a></td>
+ <td>Bietet eine Möglichkeit, die Speicherverwendung anzuzeigen, als Bericht zu speichern oder GC und CC auszuführen.</td>
+ </tr>
+ <tr>
+ <td><code>about:mozilla</code></td>
+ <td>Diese Sonderseite zeigt eine Nachricht aus dem "The Book of Mozilla".</td>
+ </tr>
+ <tr>
+ <td><code>about:networking</code></td>
+ <td>Zeigt Netzwerk-Informationen an.</td>
+ </tr>
+ <tr>
+ <td><code>about:newtab</code></td>
+ <td>Öffnet die Startseite für einen neuen Tab.</td>
+ </tr>
+ <tr>
+ <td><code>about:permissions</code></td>
+ <td>
+ <div class="warning">
+ <p>Wurde mit Firefox 45 entfernt. ({{bug(933917)}})</p>
+ </div>
+
+ <p>Bietet eine Möglichkeit, Berechtigungen anzuzeigen und verwalten zu lassen.</p>
+ </td>
+ </tr>
+ <tr>
+ <td><code>about:plugins</code></td>
+ <td>Zeigt Informationen zu installierten Plugins an.</td>
+ </tr>
+ <tr>
+ <td><code>about:preferences</code></td>
+ <td>Öffnet die Einstellungen zu Firefox (auch erreichbar über das Firefox-Menü &gt; <em>Optionen</em>)</td>
+ </tr>
+ <tr>
+ <td><code>about:privatebrowsing</code></td>
+ <td>Öffnet die Startseite, die beim Öffnen eines privaten Tabs angezeigt wird.</td>
+ </tr>
+ <tr>
+ <td><code>about:profiles</code></td>
+ <td>Zeigt und verwaltet Firefox-Profile.</td>
+ </tr>
+ <tr>
+ <td><code>about:rights</code></td>
+ <td>Zeigt rechtliche Informationen an.</td>
+ </tr>
+ <tr>
+ <td><code>about:robots</code></td>
+ <td>Diese Sonderseite zeigt Informationen zu Robots an.</td>
+ </tr>
+ <tr>
+ <td><code>about:serviceworkers</code></td>
+ <td>Zeigt aktuell laufende Service Workers an.</td>
+ </tr>
+ <tr>
+ <td><code>about:sessionrestore</code></td>
+ <td>Öffnet die Sitzungswiederherstellungsseite (wird nach einem Absturz angezeigt).</td>
+ </tr>
+ <tr>
+ <td><code>about:support</code></td>
+ <td>Öffnet die Fehlerbehebungsseite (auch erreichbar über das Firefox-Menü &gt; <em>? (Fragezeichen)</em> &gt; <em>Informationen zur Fehlerbehebung</em>)</td>
+ </tr>
+ <tr>
+ <td><code>about:sync-log</code></td>
+ <td>Zeigt ein Synchronisations-Protokoll bezogen auf die <a href="https://www.mozilla.org/en-US/firefox/sync/">Sync</a>-Funktion an.</td>
+ </tr>
+ <tr>
+ <td><code>about:sync-progress</code></td>
+ <td>Zeigt die Seite, die nach der Einrichtung der <a href="https://www.mozilla.org/en-US/firefox/sync/">Sync</a>-Funktion aufgerufen wird.</td>
+ </tr>
+ <tr>
+ <td><code>about:sync-tabs</code></td>
+ <td>Zeigt synchronisierbare Tabs an (für die <a href="https://www.mozilla.org/en-US/firefox/sync/">Sync</a>-Funktion).</td>
+ </tr>
+ <tr>
+ <td><code>about:telemetry</code></td>
+ <td>Zeigt die von Firefox gesammelten und an Mozilla gesendeten telemetrischen Daten an (nur wenn der Nutzer Telemetrie aktiviert hat).</td>
+ </tr>
+ <tr>
+ <td><code>about:webrtc</code></td>
+ <td>Zeigt Informationen zur Verwendung von WebRTC an.</td>
+ </tr>
+ <tr>
+ <td><code>about:welcomeback</code></td>
+ <td>Zeigt die Seite, die nach einer Zurücksetzung aufgerufen wird.</td>
+ </tr>
+ </tbody>
+</table>
+
+<p>Diese URLs wurden in {{source("docshell/base/nsAboutRedirector.cpp")}} innerhalb des <code>kRedirMap</code>-Arrays definiert. Der Array zeigt die meisten der URLs, wie <code>config</code> in URLs im <code>chrome:</code>-Pseudo-Protokoll, wie <code>chrome://global/content/config.xul an</code>.  Der Ort der about:-Informationen wurde aus {{source("docshell/build/nsDocShellModule.cpp")}} kopiert..</p>
diff --git a/files/de/mozilla/firefox/updating_add-ons_for_firefox_5/index.html b/files/de/mozilla/firefox/updating_add-ons_for_firefox_5/index.html
new file mode 100644
index 0000000000..f57ae8a1fc
--- /dev/null
+++ b/files/de/mozilla/firefox/updating_add-ons_for_firefox_5/index.html
@@ -0,0 +1,69 @@
+---
+title: Updating add-ons for Firefox 5
+slug: Mozilla/Firefox/Updating_add-ons_for_Firefox_5
+translation_of: Mozilla/Firefox/Releases/5/Updating_add-ons
+---
+<div>{{FirefoxSidebar}}</div><p>This article provides an overview of the changes you may need to make to your add-ons in order for them to work properly in Firefox 5. You can find a complete list of developer-related changes in Firefox 5 in <a href="/en/Firefox_5_for_developers" title="en/Firefox 5 for developers">Firefox 5 for developers</a>.</p>
+
+<h2 id="Do_you_need_to_do_anything_at_all">Do you need to do anything at all?</h2>
+
+<p>If your add-on is distributed on <a class="external" href="http://addons.mozilla.org" title="http://addons.mozilla.org/">addons.mozilla.org</a> (AMO), it's been checked by an automated compatibility verification tool. Add-ons that don't use APIs that changed in Firefox 5, and have no binary components (which <a href="/En/Developer_Guide/Interface_Compatibility#Binary_Interfaces" title="En/Developer Guide/Interface Compatibility#Binary Interfaces">need to be recompiled for every major Firefox release</a>), have automatically been updated on AMO to indicate that they work in Firefox 5.</p>
+
+<p>So you should start by visiting AMO and looking to see if your add-on needs any work done at all.</p>
+
+<div class="note"><strong>Note:</strong> You should still test your add-on on Firefox 5, even if it's been automatically upgraded. There are edge cases that may not be automatically detected.</div>
+
+<p>Once you've confirmed that you need to make changes, come on back to this page and read on.</p>
+
+<h2 id="User_interface_related_changes">User interface related changes</h2>
+
+<p>Due to the short development cycle (even for our rapid release cycle; Firefox 5 was on an extra-short schedule for timing reasons), there are very few UI related changes in Firefox 5.</p>
+
+<h3 id="Determining_the_UI_language">Determining the UI language</h3>
+
+<p>In the past, the {{ domxref("window.navigator.language") }} DOM property reflected the language of Firefox's user interface. This is no longer the case; instead, it reflects the value of the <code>Accept-Language</code> header for the current document. If you need to detect the UI language, you should instead look at the value of the <code>general.useragent.locale</code> preference.</p>
+
+<h2 id="DOM_changes">DOM changes</h2>
+
+<p>The behaviors of {{ domxref("window.setTimeout()") }} and {{ domxref("window.setInterval()") }} have changed; the minimum allowed time has changed, and <a href="/En/Window.setTimeout#Minimum_delay_and_timeout_nesting" title="En/Window.setTimeout#Minimum delay and timeout nesting">varies depending on the situation</a>. In addition, timeouts and intervals are clamped to one per second in inactive tabs (that is, tabs the user isn't currently looking at).</p>
+
+<h2 id="JavaScript_changes">JavaScript changes</h2>
+
+<p>The following keywords are now reserved in JavaScript, even when you're not in <a href="/en/JavaScript/Strict_mode" title="en/JavaScript/Strict mode">strict mode</a>:</p>
+
+<ul>
+ <li><code>class</code></li>
+ <li><code>enum</code></li>
+ <li><code>export</code></li>
+ <li><code>extends</code></li>
+ <li><code>import</code></li>
+ <li><code>super</code></li>
+</ul>
+
+<p>Don't use those keywords anywhere in your code, even as object property names.</p>
+
+<div class="note"><strong>Note:</strong> This is one of those things that AMO's automatically upgrade tool may not always catch, so check your code for these if your add-on was automatically upgraded but is still not working properly.</div>
+
+<h2 id="Interface_changes">Interface changes</h2>
+
+<p>Instantiating certain services, including the {{ interface("nsICertOverrideService") }}, at startup can make Firefox unusable ({{ bug(650858) }}. This happens only if you try to instantiate a service before the <code>load</code> event is fired.</p>
+
+<p>To fix this, simply move your instantiation of these services into your <code>load</code> event handler:</p>
+
+<pre class="brush: js">var MyObject = {
+ comp : null,
+ init: function() {
+ this.comp = Components.classes[...].getService(...);
+ },
+ ...
+}
+window.addEventListener("load", function() { MyObject.init(); }, false);
+</pre>
+
+<p>An even better solution, of course, is to follow <a href="/en/Extensions/Performance_best_practices_in_extensions" title="en/Extensions/Performance best practices in extensions">performance best practices</a> and to not instantiate services until you need to use them.</p>
+
+<h2 id="See_also">See also</h2>
+
+<ul>
+ <li><a href="/en/Firefox_5_for_developers" title="en/Firefox 5 for developers">Firefox 5 for developers</a></li>
+</ul>
diff --git a/files/de/mozilla/firefox_fuer_android/compatibility_testing/index.html b/files/de/mozilla/firefox_fuer_android/compatibility_testing/index.html
new file mode 100644
index 0000000000..e8c5b26907
--- /dev/null
+++ b/files/de/mozilla/firefox_fuer_android/compatibility_testing/index.html
@@ -0,0 +1,103 @@
+---
+title: Site Compatibility Testing for Firefox for Android
+slug: Mozilla/Firefox_fuer_Android/Compatibility_Testing
+translation_of: Mozilla/Firefox_for_Android/Compatibility_Testing
+---
+<h2 id="Overview">Overview</h2>
+<p>Our goal, is to <strong>open up the Web to all mobile browsers via promotion of standards and best practices</strong>.</p>
+<p>However, some websites serve content either that doesn't function well or that is different than that served to some specific popular mobile browsers of the moment. This content may be:</p>
+<ul>
+ <li>A basic mobile site</li>
+ <li>A traditional desktop site</li>
+ <li>A WAP (Wireless Application Protocol) site designed for a feature phone</li>
+ <li>A touch-optimized mobile site that is broken visibly or functionally</li>
+</ul>
+<p>We refer to this category of issues as <strong>Web compatibility issues</strong>. Web compatibility issues (for Firefox for Android, Firefox OS and other browsers with limited market share in one or more regions) typically result from one or more of several causes:</p>
+<dl>
+ <dt>
+ User-agent sniffing</dt>
+ <dd>
+ Identifying the browser by its user-agent string and sending different content.</dd>
+ <dt>
+ Use of non standard (typically Webkit) CSS properties</dt>
+ <dd>
+ Using non standard CSS properties that the browser does not recognize, causing layout or style issues</dd>
+ <dt>
+ Use of non standard (typically Webkit) DOM properties</dt>
+ <dd>
+ Using non standard DOM properties in JavaScript that the browser does not recognize, causing functional issues</dd>
+ <dt>
+ Browser limitations</dt>
+ <dd>
+ Using standard CSS and DOM properties that the browser does not currently implement or that have functional or performance issues</dd>
+</dl>
+<p>For <strong>Firefox</strong> specifically, we need your help to identify sites that do not work well by reporting the specific issues that you find in your investigation. Other browsers vendors have bug reporting systems, where you can report the issues as well for their specific browser.</p>
+<p>Outlined below are steps that you can follow to identify and report site issues.</p>
+<h2 id="Setup">Setup</h2>
+<p>To start, let's set up your hardware and software for compatibility testing.</p>
+<ol>
+ <li>An Android phone is a prerequisite for testing Firefox for Android. See our <a href="http://www.mozilla.org/firefox/mobile/platforms/" title="http://www.mozilla.org/firefox/mobile/platforms/">list of supported devices for Firefox for Android</a> to ensure that your phone is supported.</li>
+ <li>Install <a href="https://play.google.com/store/apps/details?id=org.mozilla.firefox" title="https://play.google.com/store/apps/details?id=org.mozilla.firefox">Firefox for Android from Google Play</a>.</li>
+ <li>Install the <a href="https://addons.mozilla.org/en-US/android/addon/phony/">Phony</a> Add-on for Firefox on Android. This add-on lets Firefox for Android pretend to be another browser by changing the <a href="https://developer.mozilla.org/en-US/docs/Browser_detection_using_the_user_agent" title="https://developer.mozilla.org/en-US/docs/Browser_detection_using_the_user_agent">user-agent</a> string that is sent with each HTTP request.</li>
+ <li><a href="https://bugzilla.mozilla.org/createaccount.cgi" title="https://bugzilla.mozilla.org/createaccount.cgi">Set up an account on bugzilla</a> so that you can report issues.</li>
+</ol>
+<p><strong>Optional steps:</strong></p>
+<ul>
+ <li>Install Firefox for Android for a different release channel: <a href="https://play.google.com/store/apps/details?id=org.mozilla.firefox_beta" title="https://play.google.com/store/apps/details?id=org.mozilla.firefox_beta">Beta</a>, <a href="http://www.mozilla.org/en-US/mobile/aurora/" title="http://www.mozilla.org/en-US/mobile/aurora/">Aurora</a>, or <a href="http://nightly.mozilla.org/" title="http://nightly.mozilla.org/">Nightly</a>.</li>
+ <li>You can try to reproduce and debug issues that you discover in Desktop Firefox. Install Desktop Firefox for Windows, Linux or Mac OS X and an <a href="https://addons.mozilla.org/en-US/firefox/addon/user-agent-switcher/?src=search" title="https://addons.mozilla.org/en-US/firefox/addon/user-agent-switcher/? data-cke-saved-src=search src=search">add-on like Phony for the desktop</a>.</li>
+</ul>
+<div class="note">
+ <p>Note: See the article<a href="https://developer.mozilla.org/en/Browser_detection_using_the_user_agent"> Browser detection using the user agent</a> for an in-depth explanation about browser user-agents.</p>
+</div>
+<h2 id="Compatibility_Testing">Compatibility Testing</h2>
+<p>The following steps walk you through the method that Mozilla QA uses for compatibility testing:</p>
+<ol>
+ <li>Select a site to test.
+ <ul>
+ <li>This may be a site that you already visited and saw that something is wrong in your daily browser usage.</li>
+ <li>Alternatively, you can select one of the top sites listed on the <a href="http://arewecompatibleyet.com" title="http://arewecompatibleyet.com">Are We Compatible Yet report</a>. Sites that have not yet been investigated are shown in white.</li>
+ </ul>
+ </li>
+ <li>Open the site that you selected in Firefox for Android. Test the functionality of the site by exploring different areas of the site. For example, if the site displays articles, pictures, and videos, you should explore all three areas of the site. Click on links, use forms, create accounts, sign in, and question:
+ <ol>
+ <li>Is the site a desktop site? If so, skip to #3 and #4 to determine if Safari on iPhone and the Android browser are served the same desktop content.</li>
+ <li>Does the site have obvious layout problems? Are elements positioned on top of one another? Is there missing content? Do menus display correctly? Are header background colors correct? Are areas of the page shown correctly? Does the site simply look bad?<br>
+  </li>
+ </ol>
+ </li>
+ <li>Visit the same website using your device’s Android browser, using the same exploration methods in #2, and question:
+ <ol>
+ <li>Is the site a desktop site? Does the content greatly differ than what you saw on Firefox for Android? If so, how is it different? Is it a mobile optimized site?</li>
+ <li>Are there any similar layout issues as seen in Firefox for Android? If so, what problems do you see with Firefox for Android that you do not see in the Android browser?<br>
+  </li>
+ </ol>
+ </li>
+ <li>Make Firefox for Android appear to the site as though it is Safari on iPhone by clicking Menu-&gt;Phony and selecting iPhone. After selecting iPhone click Menu-&gt;Reload. Visit the same site again and continue with the same exploration methods in #2 and question:
+ <ol>
+ <li>Is the site a desktop site? Does the content greatly differ than what you previously saw in Firefox for Android? If so, how is it different? Is it a mobile optimized site?</li>
+ <li>Does the site have any layout problems? If so, what are those problems?</li>
+ </ol>
+ </li>
+</ol>
+<h2 id="Reporting_Results">Reporting Results</h2>
+<p>For any site that looks or functions differently in Firefox for Android, the Android browser, or Safari on iPhone you should report each issue in Bugzilla. To report an issue, file a bug in the <a href="https://bugzilla.mozilla.org/enter_bug.cgi?product=Firefox%20for%20Android&amp;component=Evangelism&amp;rep_platform=ARM&amp;op_sys=Android">Firefox for Android Evangelism component</a> and provide as much information about the issue as you can. Here are some pieces of information that are typically helpful to submit with your report:</p>
+<dl>
+</dl>
+<dl>
+ <dt>
+ Summary</dt>
+ <dd>
+ Summarize the issue that you have identified with the site. It is helpful to include the domain name, such as mozilla.org, in the summary.</dd>
+ <dt>
+ Description</dt>
+ <dd>
+ Describe the issue as best as you can. Include details such as how the content differs between Firefox for Android, Android browser, and Safari on iPhone, the specific places (titles, article list, options menu) where the site does not look correct, and what parts of the site (articles are unreadable, videos don't play, can't click on links) that do not function as you expected that they would.<br>
+ <br>
+ If you have some knowledge of HTML, CSS, and JavaScript, it is also very helpful to have references to the lines of code that are the root cause of the issue.</dd>
+ <dt>
+ Attachments</dt>
+ <dd>
+ It is also valuable to attach a screen capture that shows the problem in Firefox for Android. How to take a screenshot on Android differs based on your version of the operating system.</dd>
+</dl>
+<h2 id="Contact_Information">Contact Information</h2>
+<p>If you have any questions about compatibility testing or want to become involved in Mozilla’s mobile web compatibility effort, please sign up for the <a href="https://lists.mozilla.org/listinfo/compatibility">compatibility@lists.mozilla.org</a> mailing list.</p>
diff --git a/files/de/mozilla/firefox_fuer_android/index.html b/files/de/mozilla/firefox_fuer_android/index.html
new file mode 100644
index 0000000000..1df1e939c9
--- /dev/null
+++ b/files/de/mozilla/firefox_fuer_android/index.html
@@ -0,0 +1,64 @@
+---
+title: Firefox für Android
+slug: Mozilla/Firefox_fuer_Android
+translation_of: Mozilla/Firefox_for_Android
+---
+<p>Für mehr und mehr Menschen sind Mobilgeräte der Hauptweg, oder sogar der einzige Weg, Zugang zum Web zu erlangen. <a class="link-https" href="https://www.mozilla.org/de/mobile/">Firefox für Android</a> (Codename Fennec) ist ein offener, hackbarer, auf Standards basierender Browser, genau wie Firefox für den Desktop.</p>
+
+<p>Firefox für Android erzeugt seine Benutzeroberfläche aus systemeigenen Android Widgets anstatt aus XUL: dies verbessert die Performanz außerordentlich, insbesondere die Zeit des Startvorgangs, und den Speicherbedarf.</p>
+
+<h2 id="Zu_Firefox_für_Android_beitragen">Zu Firefox für Android beitragen</h2>
+
+<p>Die Hauptbezugsquelle für Informationen über das Firefox für Android Projekt selbst ist die <a class="link-https" href="https://wiki.mozilla.org/Mobile">Wikiseite des Projekts</a>.</p>
+
+<p>Sie können uns helfen Firefox für Android zu gestalten und zu verbessern:</p>
+
+<ul>
+ <li>helfen Sie uns <a class="link-https" href="https://wiki.mozilla.org/Mobile/Testdrivers_Program">beim Testen</a>
+
+ <ul>
+ <li>testen Sie Top-Sites auf Kompatibilität mit mobile gecko – siehe <a href="/de/docs/Mozilla/Firefox_for_Android/Compatibility_Testing" title="https://developer-new.mozilla.org/en-US/docs/Mozilla/Firefox_for_Android/Compatibility_Testing">hier</a> für weitere Informationen</li>
+ </ul>
+ </li>
+ <li>wenden Sie sich über <a class="link-irc" href="irc://irc.mozilla.org/#mobile">IRC</a> an das Team oder nehmen Sie an unserem <a class="link-https" href="https://wiki.mozilla.org/Mobile/Notes">mittwöchigen Entwicklertreffen</a> teil</li>
+ <li>verfolgen Sie Projektneuigkeiten auf <a class="external" href="http://planet.firefox.com/mobile/">planet firefox</a> und <a class="link-https" href="https://twitter.com/#!/mozmobile" title="https://twitter.com/#!/mozmobile">Twitter</a></li>
+ <li><a href="https://wiki.mozilla.org/Mobile/Fennec/Android" title="https://wiki.mozilla.org/Mobile/Fennec/Android">build and hack on Firefox for Android</a> (Fennec)</li>
+</ul>
+
+<h2 id="Entwickeln_für_das_mobile_Web">Entwickeln für das mobile Web</h2>
+
+<p>Wir haben begonnen eine Anleitung zum <a href="/de/docs/Mozilla/Mobile" title="En/Mobile">Gestalten von Websites für Mobilgeräte</a> zusammenzuschreiben.</p>
+
+<p>Mit Firefox für Android erhalten Sie Zugang zu einer Reihe von APIs, die das unterliegende Leistungsvermögen des Gerätes zum Vorschein bringen und somit die Lücke zwischen Web und systemeigenen Anwendungen schließen:</p>
+
+<ul>
+ <li><a class="external external-icon" href="https://hacks.mozilla.org/2012/02/using-the-battery-api-part-of-webapi/">Akku</a></li>
+ <li><a href="/de/docs/Web/Guide/Introduction_to_the_Camera_API" title="Using the Camera API">Kamera</a></li>
+ <li><a href="/de/docs/Web/Guide/Telephony/Introduction_to_WebTelephony" title="Introduction to WebTelephony">WebTelefonie</a></li>
+ <li><a href="/de/docs/WebAPI/WebSMS/Introduction_to_WebSMS" title="Introduction to WebSMS">WebSMS</a></li>
+ <li><a href="/de/docs/WebAPI/Using_geolocation" title="Using geolocation">Ortung</a></li>
+ <li><a href="/de/docs/WebAPI/Detecting_device_orientation" title="https://developer.mozilla.org/en/detecting_device_orientation">Orientierung</a></li>
+</ul>
+
+<p>Um Ihre Website auf Firefox für Android zu testen, können Sie <a class="external external-icon" href="https://www.mozilla.org/de/firefox/">ihn auf Ihrem Android Gerät installieren</a> oder <a class="link-https" href="https://wiki.mozilla.org/Mobile/Fennec/Android/Emulator">ihn auf ihrem Desktop mithilfe des Android Emulators laufen lassen</a>.</p>
+
+<h2 id="Erstellen_mobiler_Add-ons">Erstellen mobiler Add-ons</h2>
+
+<p><a href="/de/docs/Extensions/Mobile" title="en/Extensions/Firefox_on_Android">Firefox für Android unterstützt Add-ons</a> durch genau das gleiche <a href="/en/Extensions" title="en/Extensions">Erweiterungssystem</a>, das auch alle anderen Gecko-basierten Anwendungen verwenden. Wir haben kein neues Add-on-System erfunden. Das bedeutet, dass beim Erstellen eines Add-ons für Firefox für Android <a href="/de/docs/Erweiterung_erstellen" title="en/Building_an_Extension">der gleiche Prozess</a> verwendet wird wie für den Desktop Firefox. Add-ons, die im Desktop Firefox laufen, laufen <strong>nicht</strong> automatisch im Firefox auf Android. Die Benutzeroberflächen sind einfach zu unterschiedlich.</p>
+
+<div class="note">Firefox auf Android hat eine eindeutige Anwendungskennung, die in <code>install.rdf</code> angegeben werden muss. Die Kennung ist <code>{aa3c5121-dab2-40e2-81ca-7ea25febc110}</code></div>
+
+<p>Sowohl die klassischen Add-on-Herangehensweisen, die einen Neustart erfordern, als auch die neueren Add-on-Herangehensweisen, die <a href="/de/docs/Extensions/Bootstrapped_extensions" title="en/Extensions/Bootstrapped_extensions">ohne Neustart</a> auskommen, werden unterstützt. Die Herangehensweise, die ohne Neustart auskommt, ist wann immer möglich die bevorzugte, weil gegenüber dem erzwungenen Anwendungsneustart beim Installieren und Entfernen von Add-ons das Nutzererlebnis hier weitaus besser ist.</p>
+
+<h3 id="Kurzer_Überblick">Kurzer Überblick</h3>
+
+<ul>
+ <li>Es gibt kein sichtbares XUL in der Benutzeroberfläche, deshalb ist die Verwendung von Overlays zum Hinzufügen von Oberflächen oder das Verändern der Oberfläche wirkungslos.</li>
+ <li>Interner Code und Objekte, wie <code>gBrowser</code>, existieren nicht. Schauen Sie sich die Datei <a class="external" href="http://mxr.mozilla.org/mozilla-central/source/mobile/android/chrome/content/browser.js" title="http://mxr.mozilla.org/mozilla-central/source/mobile/android/chrome/content/browser.js"><code>browser.js</code></a> von Firefox für Android an, um über Interna zu erfahren. Much of the same fundamental functionality exists.</li>
+ <li>Dienste wie <code>nsIPromptService</code> und <code>nsIAlertsService</code> sind implementiert um die systemeigene Android-Benutzeroberfläche benutzen zu können.</li>
+ <li>Es gibt ein einfaches JavaScript-Objekt namens <a href="/en/Extensions/Mobile/API/NativeWindow" title="en/Extensions/Mobile/NativeWindow"><code>NativeWindow</code></a>, das einem erlaubt Teile der systemeigenen Android-Benutzeroberfläche zu manipulieren.</li>
+</ul>
+
+<h2 id="Erhalten_Sie_Hilfe_zu_Firefox_für_Android">Erhalten Sie Hilfe zu Firefox für Android</h2>
+
+<p>Dokumentationen und Tutoriale zur Verwendung und Fehlerbehebung von Firefox für Android sind auf der <a class="external" href="http://support.mozilla.org/de/products/mobile" title="http://support.mozilla.org/mobile">Mozilla Support Website</a> verfügbar.</p>
diff --git a/files/de/mozilla/index.html b/files/de/mozilla/index.html
new file mode 100644
index 0000000000..64886b45c6
--- /dev/null
+++ b/files/de/mozilla/index.html
@@ -0,0 +1,12 @@
+---
+title: Mozilla
+slug: Mozilla
+tags:
+ - TopicStub
+translation_of: Mozilla
+---
+<div>
+ {{draft}}</div>
+<p>Das hier wird bald eine geniale Zielseite für internes von Mozilla sein. Aber momentan ist es das nicht.</p>
+<div>
+ {{ListSubpages}}</div>
diff --git a/files/de/mozilla/javascript_code_modules/deutsch/index.html b/files/de/mozilla/javascript_code_modules/deutsch/index.html
new file mode 100644
index 0000000000..361b8eaa94
--- /dev/null
+++ b/files/de/mozilla/javascript_code_modules/deutsch/index.html
@@ -0,0 +1,197 @@
+---
+title: Benutzung von JavaScript Code Modulen
+slug: Mozilla/JavaScript_code_modules/Deutsch
+tags:
+ - Anleitung
+ - Erweiterungen
+ - JavaScript
+ - XPCOM
+translation_of: Mozilla/JavaScript_code_modules/Using
+---
+<div>{{gecko_minversion_header("1.9")}}</div>
+
+<p>Das Konzept von JavaScript Code Modulen wurde in {{Gecko("1.9")}} eingeführt und dient der gemeinsamen Verwendung von Code in unterschiedlichen Anwendungsbereichen. Module können außerdem dazu genutzt werden, globale JavaScript Singletons anzulegen, wofür früher JavaScript XPCOM Objekte nötig waren. Ein javaScript Code Modul ist nichts weiter als eine Sammlung von JavaScript code, der an einem bestimmten Ort abgelegt ist. Solch ein Modul wird mit <code><a href="/en-US/docs/Components.utils.import">Components.utils.import()</a></code> oder <code><a href="/en-US/docs/Components.utils.import">Components.utils["import"]()</a></code> in einen bestimmten JavaScript Anwendungsbereich geladen, etwa ein XUL oder JavaScript XPCOM Script.</p>
+
+<h2 id="Erstellen_eines_JavaScript_Code_Moduls">Erstellen eines JavaScript Code Moduls</h2>
+
+<p>Ein sehr einfaches JavaScript Modul sieht so aus:</p>
+
+<pre class="brush: js">var EXPORTED_SYMBOLS = ["foo", "bar"];
+
+function foo() {
+ return "foo";
+}
+
+var bar = {
+ name : "bar",
+ size : 3
+};
+
+var dummy = "dummy";
+</pre>
+
+<p>Wie zu sehen ist, verwendet das Modul reguläres JavaScript, um Funktionen, Objekte, Konstanten und jeden anderen JavaScript Datentyp anzulegen. Das Modul definiert außerdem eine spezielle Variable namens <code>EXPORTED_SYMBOLS</code>. Alle JavaScript Objekte, die in <code>EXPORTED_SYMBOLS</code> angeführt sind, werden aus dem Modul exportiert und in den Anwendungsbereich geladen, der das Modul einbindet. Ein Beispiel:</p>
+
+<pre class="brush: js">Components.utils.import("resource://app/my_module.jsm");
+
+alert(foo()); // displays "foo"
+alert(bar.size + 3); // displays "6"
+alert(dummy); // displays "dummy is not defined" because 'dummy' was not exported from the module
+</pre>
+
+<div class="note"><strong>Hinweis:</strong> Wenn Änderungen an einem Modul getestet werden sollen, muss immer darauf geachtet werden, die Versionsnummer der Anwendung zu erhöhen. Andernfalls kann es passieren, dass die vorherige Version des Moduls verwendet wird.</div>
+
+<h3 id="Die_URL_eines_Code_Moduls">Die URL eines Code Moduls</h3>
+
+<p>Wie im obigen Beispiel ersichtlich ist, benötigt man für den Import eines Code Moduls eine URL. (Die URL im Beispielcode ist "resource://app/my_module.jsm".)</p>
+
+<p>Code Module können nur mit einer <strong>chrome:</strong> ({{gecko_minversion_inline("2")}}), <strong>resource:</strong>, oder <strong>file:</strong> URL geladen werden.</p>
+
+<ul>
+ <li>Wenn Du eine Erweiterung für Firefox 4 entwickelst und bereits ein <a href="/de/docs/Chrome_Registration">chrome.manifest</a> mit einer <code>content</code> Anweisung verwendest, kannst du das Modul einfach in den content Ordner legen und auf die selbe Art referenzieren wie andere content Dateien, mit <code>chrome://&lt;yourextension&gt;/content/&lt;yourmodule&gt;.jsm</code>.</li>
+ <li>Wenn deine Erweiterung Mozilla 1.9x (Firefox 3.x) unterstützen soll, muss eine neue Resourcen URL registriert werden. Wie das geht, wird weiter unten in <a href="#Extending_resource.3A_URLs">"Extending resource: URLs"</a> behandelt.</li>
+</ul>
+
+<h3 id="Gemeinsame_Verwendung_von_Objekten">Gemeinsame Verwendung von Objekten</h3>
+
+<p>Eine besonders wichtige Eigenschaft von <code><a href="/en-US/docs/Components.utils.import">Components.utils.import()</a></code> ist es, dass Module beim erstmaligen Importieren im Zwischenspeicher abgelegt werden und alle weiteren Importvorgänge diese gespeicherte Version verwenden anstatt das Modul neu zu laden. Das bedeutet, dass das Modul von allen Anwendungsbereichen die es importiert haben, gemeinsam verwendet wird. Alle Änderungen von Daten, Objekten oder Funktionen sind in jeden Anwendungsbereich, der das Modul benutzt, sichtbar. Wenn wir beispielsweise unser einfaches Modul in zwei JavaScript Bereichen importieren, können Änderungen aus einem Bereich auch im anderen Bereich beobachtet werden.</p>
+
+<p>Bereich 1:</p>
+
+<pre class="brush: js">Components.utils.import("resource://app/my_module.jsm");
+
+alert(bar.size + 3); // displays "6"
+
+bar.size = 10;
+</pre>
+
+<p>Bereich 2:</p>
+
+<pre class="brush: js">Components.utils.import("resource://app/my_module.jsm");
+
+alert(foo()); // displays "foo"
+alert(bar.size + 3); // displays "13"
+</pre>
+
+<p>Durch diese Eigenschaft können Module als Singleton Objekte verwendet werden um Daten zwischen verschiedenen Fenstern, oder auch zwischen XUL Scripten und XPCOM Objekten, auszutauschen.</p>
+
+<p>{{Note("Jeder Bereich, der ein Modul importiert, erhält eine Kopie (by-value) aller exportierten Symbole des Moduls. Änderungen der Werte in dieser Kopie werden nicht an andere Bereiche weitergeleitet (allerdings werden Objekteigenschaften per Referenz manipuliert).")}}</p>
+
+<p>Bereich 1:</p>
+
+<pre class="brush: js">Components.utils.import("resource://app/my_module.jsm");
+
+bar = "foo";
+alert(bar); // displays "foo"
+</pre>
+
+<p>Bereich 2:</p>
+
+<pre class="brush: js">Components.utils.import("resource://app/my_module.jsm");
+
+alert(bar); // displays "[object Object]"
+</pre>
+
+<p>Der Haupteffekt dieser by-value Kopie besteht darin, dass globale Variablen eines einfachen Typs nicht in allen Bereichen geteilt werden. Variablen sollten daher immer in eine Wrapper Klasse gehüllt werden (siehe <code>bar</code> im obigen Beispiel).</p>
+
+<p>{{h2_gecko_minversion("Code Module Entladen", "7.0")}}</p>
+
+<p>Mit <code><a href="https://wiki.developer.mozilla.org/en-US/docs/Components.utils.unload">Components.utils.unload()</a></code> kann ein zuvor importiertes Modul wieder entladen werden. Nach dem Aufruf dieser Funktion sind zwar alte Referenzen auf das Modul weiterhin gültig, aber ein nachträgliches Importieren wird das Modul neu laden und ihm auch eine neue Referenz zuweisen.</p>
+
+<h3 id="Beispiele">Beispiele</h3>
+
+<ul>
+ <li>Eine Vorlage zum Download gibt es auf <a href="https://gist.github.com/Noitidart/9045387">GitHub - Gists - _template-BootstrapJSM.xpi</a></li>
+</ul>
+
+<h2 id="Erweiterung_von_resource_URLs">Erweiterung von resource: URLs</h2>
+
+<p>Vor der Einführung von {{Gecko("2.0")}} war der übliche Weg, ein Modul einzubinden, die <strong>resource:</strong> URL. Die grundlegende Syntax sieht wie folgt aus:</p>
+
+<pre>resource://&lt;alias&gt;/&lt;relative-path&gt;/&lt;file.js|jsm&gt;
+</pre>
+
+<p><code>&lt;alias&gt;</code> bezeichnet einen Ort, üblicherweise einen physikalischen Ort relativ zur Anwendung oder der XUL Laufzeitumgebung. Die XUL Laufzeitumgebung bietet verschiedene vordefinierte Aliase:</p>
+
+<ul>
+ <li><code>app</code> - Speicherort der XUL Anwendung</li>
+ <li><code>gre</code> - Speicherort der XUL Laufzeitumgebung</li>
+</ul>
+
+<p>Der Pfad in <code>&lt;relative-path&gt;</code> kann beliebig tief sein und ist immer relativ zum in <code>&lt;alias&gt;</code> angegbenen Ort. Der übliche relative Pfad, der auch von XUL Runner und Firefox verwendet wird, ist "modules". Code Module sind einfache JavaScript Dateien mit einer .js oder .jsm Dateiendung.</p>
+
+<p>Das verwendete <code>&lt;alias&gt;</code> muss für jede Erweiterung einzigartig sein, da alle definierten Alias Werte aller Anwendungen und Erweiterungen in einem gemeinsamen Namespace gespeichert werden.</p>
+
+<h3 id="Mittels_chrome.manifest">Mittels chrome.manifest</h3>
+
+<p>Die einfachste Möglichkeit, ein neues Alias für eine Erweiterung oder XUL Anwendung anzulegen, besteht darin, eine Zeile wie die Folgende in <a href="/en-US/docs/Chrome_Registration">chrome manifest</a> einzufügen:</p>
+
+<pre>resource <em>aliasname</em> <em>uri/to/files/</em>
+</pre>
+
+<p>Wenn zum Beispiel die XPI deiner<em> foo</em> Erweiterung einen top-level Ordner namens modules/ besitzt, in dem sich das <em>bar.js</em> Modul befindet (das beudeutet, der modules/ Ordner liegt neben chrome.manifest und install.rdf), kann ein Alias etwa so angelegt werden:</p>
+
+<pre>resource foo modules/
+</pre>
+
+<p>(Beachte den Schrägstrich am Ende!) Danach kannst du das Modul wie folgt in deinen JavaScript Code importieren:</p>
+
+<pre class="brush: js">Components.utils.import("resource://foo/bar.js");
+</pre>
+
+<h3 id="Programmatisches_Hinzufügen_eines_Alias">Programmatisches Hinzufügen eines Alias</h3>
+
+<p>Aliase auf Pfade, die als {{interface("nsILocalFile")}} dargestellt werden können, können auch programmatisch angelegt werden. Zum Beispiel:</p>
+
+<pre class="brush: js">// Import Services.jsm unless in a scope where it's already been imported
+Components.utils.import("resource://gre/modules/Services.jsm");
+
+var resProt = Services.io.getProtocolHandler("resource")
+ .QueryInterface(Components.interfaces.nsIResProtocolHandler);
+
+var aliasFile = Components.classes["@mozilla.org/file/local;1"]
+ .createInstance(Components.interfaces.nsILocalFile);
+aliasFile.initWithPath("/some/absolute/path");
+
+var aliasURI = Services.io.newFileURI(aliasFile);
+resProt.setSubstitution("myalias", aliasURI);
+
+// assuming the code modules are in the alias folder itself
+</pre>
+
+<h2 id="Anmerkungen">Anmerkungen</h2>
+
+<h3 id="Eigene_Module_und_XPCOM_Komponenten">Eigene Module und XPCOM Komponenten</h3>
+
+<p>In früheren Versionen als {{Gecko("2.0")}} werden JavaScript XPCOM Komponenten bereits vor der Chrome Registrierung geladen. Das bedeutet, dass <code><a href="/en-US/docs/Components.utils.import">Components.utils.import()</a></code> nicht mit einer eigenen URL in einer Komponente verwendet werden kann. Eine mögliche Lösung des Problems besteht darin, den Aufruf von <code><a href="/en-US/docs/Components.utils.import">Components.utils.import()</a></code> in den Konstruktor der XPCOM Komponente zu legen (<a href="http://groups.google.com/group/mozilla.dev.apps.firefox/browse_thread/thread/e178d41afa2ccc87?hl=en#">Diskussion</a>).</p>
+
+<h3 id="Packaging_Anmerkungen">Packaging Anmerkungen</h3>
+
+<p>Unter normalen Umständen gibt es keinen guten Grund JavaScript Code Module in einer JAR Datei zu verpacken. Von Firefox 3.6 wird diese Form der Distribution gar nicht unterstützt. Nur in einem Anwendungsfall kann es sinnvoll sein, Module in JAR zu packen: In einer Erweiterung, die nur Firefox 4 unterstützt, und die ungepackt installiert werden muss. In allen anderen Fällen wird dadurch nur unnötigerweise die Kompatibilität zerstört.</p>
+
+<h2 id="CommonJS_Module_Importieren">CommonJS Module Importieren</h2>
+
+<p>Die hier beschriebenen JavaScript Code Module sind nicht zu verwechseln mit <a href="http://www.commonjs.org/specs/modules/1.0/">CommonJS modules</a>, aber auch CommonJS Module können in jeden Bereich importiert werden, der <a href="https://developer.mozilla.org/en-US/docs/Mozilla/Tech/XPCOM/Language_Bindings/Components.utils.import">Components.utils.import</a> unterstützt. Der folgende Aufruf wird <code>require()</code> in deinen Anwendungsbereich importieren:</p>
+
+<pre class="brush: js line-numbers language-js"><code class="language-js"><span class="keyword token">const</span> <span class="punctuation token">{</span> require <span class="punctuation token">}</span> <span class="operator token">=</span> Cu<span class="punctuation token">.</span><span class="keyword token">import</span><span class="punctuation token">(</span><span class="string token">"resource://gre/modules/commonjs/toolkit/require.js"</span><span class="punctuation token">,</span> <span class="punctuation token">{</span><span class="punctuation token">}</span><span class="punctuation token">)</span></code></pre>
+
+<p>Damit können danach andere CommonJS Module importiert werden. Auch <a href="/en-US/docs/Mozilla/Add-ons/SDK">Add-on SDK</a> Module können auf die selbe Art importiert werden, wie aus einem SDK Add-on:</p>
+
+<pre class="brush: js">// import the SDK's base64 module
+
+var base64 = require("sdk/base64");
+base64.encode("hello"); // "aGVsbG8="</pre>
+
+<p>Auch andere CommonJS Module können importiert werden, solange der Pfad bekannt ist:</p>
+
+<pre class="brush: js">// import my module
+
+var myModule = require("resource://path/to/my/module.js");</pre>
+
+<p>In diesem Fall kann es aber ratsam sein, <a href="/de/Add-ons/SDK/Low-Level_APIs/_loader">einen eigenen Loader</a> zu entwickeln, damit das <code><a href="/en-US/Add-ons/SDK/Low-Level_APIs/_loader#paths">paths</a></code> Attribut selbst gewählt werden kann.</p>
+
+<h2 id="See_also" name="See_also">Weiterführende Links</h2>
+
+<ul>
+ <li><a href="/de/docs/Mozilla/JavaScript_code_modules">JavaScript code modules</a> Themenseite</li>
+</ul>
diff --git a/files/de/mozilla/javascript_code_modules/index.html b/files/de/mozilla/javascript_code_modules/index.html
new file mode 100644
index 0000000000..1a977f72f2
--- /dev/null
+++ b/files/de/mozilla/javascript_code_modules/index.html
@@ -0,0 +1,102 @@
+---
+title: JavaScript code modules
+slug: Mozilla/JavaScript_code_modules
+tags:
+ - Add-ons
+ - Extensions
+ - JavaScript
+ - Landing
+ - Modules
+ - NeedsTranslation
+ - TopicStub
+ - XPCOM
+translation_of: Mozilla/JavaScript_code_modules
+---
+<p>JavaScript code modules let multiple privileged JavaScript scopes share code. For example, a module could be used by Firefox itself as well as by extensions, in order to avoid code duplication.</p>
+
+<h2 id="General_topics">General topics</h2>
+
+<dl style="-moz-columns: 2; columns: 2;">
+ <dt><a href="/en-US/docs/JavaScript_code_modules/Using" title="./Using">Using JavaScript code modules</a></dt>
+ <dd>An introduction to how to use JavaScript code modules.</dd>
+ <dt><a href="/en-US/docs/Components.utils.import" title="Components.utils.import">Components.utils.import</a></dt>
+ <dd>How to import a JavaScript code module.</dd>
+ <dt><a href="/en-US/docs/Components.utils.unload" title="Components.utils.unload">Components.utils.unload</a></dt>
+ <dd>How to unload a JavaScript code module.</dd>
+ <dt><a href="/en-US/docs/Code_snippets/Modules" title="Code_snippets/Modules">Code snippets: Modules</a></dt>
+ <dd>Examples of how to use code modules.</dd>
+ <dt><a class="external" href="http://wiki.mozilla.org/Labs/JS_Modules">Mozilla Labs JS Modules</a></dt>
+ <dd>This page features a list of JS modules, along with download links and documentation, that extension developers can use in their code.</dd>
+</dl>
+
+<dl>
+</dl>
+
+<h2 id="Standard_code_modules">Standard code modules</h2>
+
+<dl style="-moz-columns: 2; columns: 2;">
+ <dt><a href="/en-US/docs/Addons/Add-on_Manager" title="Addons/Add-on_Manager">AddonManager.jsm</a></dt>
+ <dd>Interface to install, manage, and uninstall add-ons.</dd>
+ <dt><a href="/en-US/docs/Addons/Add-on_Repository" title="Addons/Add-on Repository">AddonRepository.jsm</a></dt>
+ <dd>Allows searching of the add-ons repository.</dd>
+ <dt><a href="/en-US/docs/Mozilla/JavaScript_code_modules/Assert.jsm" title="./Assert.jsm">Assert.jsm</a></dt>
+ <dd>Implements the <a href="http://wiki.commonjs.org/wiki/Unit_Testing/1.1" title="http://wiki.commonjs.org/wiki/Unit_Testing/1.1">CommonJS Unit Testing specification version 1.1</a>, which provides a basic, standardized interface for performing in-code logical assertions with optional, customizable error reporting.</dd>
+ <dt>BookmarkHTMLUtils.jsm</dt>
+ <dd>Provides utility functions for importing and exporting bookmarks from the old-school "bookmarks.html" style bookmark files.</dd>
+ <dt><a href="/en-US/docs/Mozilla/js-ctypes" title="./ctypes.jsm">ctypes.jsm</a></dt>
+ <dd>Provides an interface that allows JavaScript code to call native libraries without requiring the development of an XPCOM component.</dd>
+ <dt><a href="/en-US/docs/Mozilla/JavaScript_code_modules/CustomizableUI.jsm" title="./ctypes.jsm">CustomizableUI.jsm</a></dt>
+ <dd>Allows you to interact with customizable buttons and items in Firefox's main window UI.</dd>
+ <dt><a href="/en-US/docs/Mozilla/JavaScript_code_modules/DeferredTask.jsm" title="./DeferredTask.jsm">DeferredTask.jsm</a></dt>
+ <dd>Run a task after a delay.</dd>
+ <dt><a href="/en-US/docs/Mozilla/JavaScript_code_modules/Dict.jsm" title="./Dict.jsm">Dict.jsm</a></dt>
+ <dd>Provides an API for key/value pair dictionaries.</dd>
+ <dt><a href="/en-US/docs/Mozilla/JavaScript_code_modules/DownloadLastDir.jsm" title="./DownloadLastDir.jsm">DownloadLastDir.jsm</a></dt>
+ <dd>Provides the path to the directory into which the last download occurred.</dd>
+ <dt><a href="/en-US/docs/Mozilla/JavaScript_code_modules/Downloads.jsm" title="./Downloads.jsm">Downloads.jsm</a></dt>
+ <dd>Provides a single entry point to interact with the downloading capabilities of the platform.</dd>
+ <dt><a href="/en-US/docs/Mozilla/JavaScript_code_modules/FileUtils.jsm" title="./FileUtils.jsm"><strong style="font-weight: bold;">FileUtils.jsm</strong></a></dt>
+ <dd>Provides helpers for dealing with files.</dd>
+ <dt><a href="/en-US/docs/Mozilla/JavaScript_code_modules/Geometry.jsm" title="./Geometry.jsm">Geometry.jsm</a></dt>
+ <dd>Provides routines for performing basic geometric operations on points and rectangles.</dd>
+ <dt><a href="/en-US/docs/Mozilla/JavaScript_code_modules/Http.jsm" title="./Geometry.jsm">HTTP.jsm</a></dt>
+ <dd>A wrapper for XMLHttpRequest that provides convenient and simplified API for dealing with HTTP requests.</dd>
+ <dt><a href="/en-US/docs/Mozilla/JavaScript_code_modules/JNI.jsm">JNI.jsm</a></dt>
+ <dd>Abstracts the js-ctypes to provide an interface that allows JavaScript code to call code running in native JVMs.</dd>
+ <dt><a href="/en-US/docs/Mozilla/JavaScript_code_modules/ISO8601DateUtils.jsm" title="./ISO8601DateUtils.jsm">ISO8601DateUtils.jsm</a></dt>
+ <dd>Provides routines to convert between JavaScript <a href="/en-US/docs/JavaScript/Reference/Global_Objects/Date" title="JavaScript/ Reference/Global Objects/Date"><code>Date</code></a> objects and ISO 8601 date strings.</dd>
+ <dt><a href="/en-US/docs/Mozilla/JavaScript_code_modules/Log.jsm">Log.jsm</a> (formerly log4moz)</dt>
+ <dd>Provides a <a href="https://en.wikipedia.org/wiki/Log4j">log4j</a> style API for logging log messages to various endpoints, such as the <a href="/en-US/docs/Tools/Browser_Console">Browser Console</a> or a file on disk. This module was formerly</dd>
+ <dt><a href="/en-US/docs/Mozilla/JavaScript_code_modules/NetUtil.jsm" title="./NetUtil.jsm"><strong style="font-weight: bold;">NetUtil.jsm</strong></a></dt>
+ <dd>Provides helpful networking utility functions, including the ability to easily copy data from an input stream to an output stream asynchronously.</dd>
+ <dt><a href="/en-US/docs/Mozilla/JavaScript_code_modules/openLocationLastURL.jsm" title="./openLocationLastURL.jsm">openLocationLastURL.jsm</a></dt>
+ <dd>Provides access to the last URL opened using the "Open Location" option in the File menu.</dd>
+ <dt><a href="/Mozilla/JavaScript_code_modules/OSFile.jsm" title="/en-US/docs/JavaScript_OS.File">OSFile.jsm</a></dt>
+ <dd>Provides routines to access files. Read, write, rename, create directories, ...</dd>
+ <dt><a href="/en-US/docs/Mozilla/JavaScript_code_modules/PerfMeasurement.jsm" title="./PerfMeasurement.jsm">PerfMeasurement.jsm</a></dt>
+ <dd>Provides access to low-level hardware and OS performance measurement tools.</dd>
+ <dt><a href="/en-US/docs/Localization_and_Plurals" title="Localization and Plurals">PluralForm.jsm</a></dt>
+ <dd>Provides an easy way to get the correct plural forms for the current locale, as well as ways to localize to a specific plural rule.</dd>
+ <dt><a href="/en-US/docs/Mozilla/JavaScript_code_modules/PopupNotifications.jsm" title="./PopupNotifications.jsm">PopupNotifications.jsm</a></dt>
+ <dd>Provides an easy way to present non-modal notifications to users.</dd>
+ <dt><a href="/en-US/docs/Mozilla/JavaScript_code_modules/Promise.jsm" title="./Promise.jsm">Promise.jsm</a></dt>
+ <dd>Implements the <a class="external" href="https://github.com/promises-aplus/promises-spec/blob/1.0.0/README.md" title="https://github.com/promises-aplus/promises-spec/blob/1.0.0/README.md">Promises/A+</a> proposal as known in April 2013.</dd>
+ <dt><a href="/en-US/docs/Mozilla/JavaScript_code_modules/PromiseWorker.jsm">PromiseWorker.jsm</a></dt>
+ <dd>A version of {{domxref("ChromeWorker")}} which uses promises to return the worker's result instead of using an event to do so.</dd>
+ <dt><a href="/en-US/docs/Mozilla/JavaScript_code_modules/Services.jsm" title="./Services.jsm">Services.jsm</a></dt>
+ <dd>Provides getters for conveniently obtaining access to commonly-used services.</dd>
+ <dt><a href="/en-US/docs/Mozilla/JavaScript_code_modules/source-editor.jsm" title="./source-editor.jsm">source-editor.jsm</a></dt>
+ <dd>The Source Editor is used by developer tools such as the Style Editor; this interface implements the editor and lets you interact with it.</dd>
+ <dt><a href="/en-US/docs/Mozilla/JavaScript_code_modules/Sqlite.jsm" title="./Sqlite.jsm">Sqlite.jsm</a></dt>
+ <dd>A Promise-based API to mozIStorage/SQLite.</dd>
+ <dt><a href="/en-US/docs/Mozilla/JavaScript_code_modules/Task.jsm" title="./Task.jsm">Task.jsm</a></dt>
+ <dd>Implements a subset of <a class="external" href="https://taskjs.org/">Task.js</a> to make sequential, asynchronous operations simple, using the power of JavaScript's <code>yield</code> operator.</dd>
+ <dt><a href="/en-US/docs/Mozilla/JavaScript_code_modules/Timer.jsm" title="/en-US/docs/Mozilla/JavaScript_code_modules/Timer.jsm">Timer.jsm</a></dt>
+ <dd>A pure JS implementation of <code>window.setTimeout</code>.</dd>
+ <dt><a href="/en-US/docs/Mozilla/JavaScript_code_modules/Webapps.jsm" title="/en-US/docs/Mozilla/JavaScript_code_modules/Timer.jsm">Webapps.jsm</a></dt>
+ <dd>Provides an interface to manager Open Web Apps.</dd>
+ <dt><a href="/en-US/docs/Mozilla/JavaScript_code_modules/WebRequest.jsm">WebRequest.jsm</a></dt>
+ <dd>Provides an API to add event listeners for the various stages of making an HTTP request. The event listener receives detailed information about the request, and can modify or cancel the request.</dd>
+ <dt><a href="/en-US/docs/Mozilla/JavaScript_code_modules/XPCOMUtils.jsm" title="./XPCOMUtils.jsm">XPCOMUtils.jsm</a></dt>
+ <dd>Contains utilities for JavaScript components loaded by the JS component loader.</dd>
+</dl>
diff --git a/files/de/mozilla/localization/index.html b/files/de/mozilla/localization/index.html
new file mode 100644
index 0000000000..54d427c2de
--- /dev/null
+++ b/files/de/mozilla/localization/index.html
@@ -0,0 +1,25 @@
+---
+title: Lokalisation bei Mozilla
+slug: Mozilla/Localization
+tags:
+ - Landing
+ - Localization
+ - Mozilla
+ - NeedsTranslation
+ - TopicStub
+ - Translation
+ - l10n
+translation_of: Mozilla/Localization
+---
+<p><span class="seoSummary"><strong>Localization</strong> (L10n) ist die Übersetzung der Benutzeroberfläche von einer Sprache in die andere, um diese so einer anderen Sprache und Kultur anzupassen. Diese Quellen stehen jedem zur Verfügung, der sich für die technischen Aspekte der L10n interessiert - Entwicklern und Helfern</span></p>
+
+<h2 id="Siehe_auch">Siehe auch</h2>
+
+<dl>
+ <dt><a href="/de/docs/MDN/Contribute/Localize">Lokalisieren von MDN</a></dt>
+ <dd>Diese Ressource beinhaltet die Lokalization der Dokumentation hier bei MDN.</dd>
+ <dt><a href="/en-US/Apps/Build/Localization">App localization</a></dt>
+ <dd>Diese Sammlung von Dokumenten bezieht sich genauer auf das Lokalisieren von Apps, inklusive Firefox OS apps.</dd>
+ <dt><a href="/en-US/docs/Web/API/L10n">L10n</a></dt>
+ <dd>Referenzdokumente für die L10n API, die Mozilla für das Lokalisieren von Firefox OS nutzt.</dd>
+</dl>
diff --git a/files/de/mozilla/localization/kodierung_fuer_lokalisierungs-dateien/index.html b/files/de/mozilla/localization/kodierung_fuer_lokalisierungs-dateien/index.html
new file mode 100644
index 0000000000..46b60bbf1f
--- /dev/null
+++ b/files/de/mozilla/localization/kodierung_fuer_lokalisierungs-dateien/index.html
@@ -0,0 +1,137 @@
+---
+title: Kodierungen für Lokalisierungsdateien
+slug: Mozilla/Localization/Kodierung_fuer_Lokalisierungs-Dateien
+tags:
+ - Internationalisierung
+ - Lokalisierung
+translation_of: Mozilla/Localization/Encodings_for_localization_files
+---
+<p>Beim Erstellen einer Lokalisierung für Mozilla Produkte ist es wichtig die Kodierung der Dateien zu beachten, die man generiert.</p>
+
+<p>Im Allgemeinen sind Dateien im Mozilla Repository UTF-8 kodiert. Es gibt allerdings einige wenige Ausnahmen.</p>
+
+<h3 id="Installer" name="Installer">Installer</h3>
+
+<p>Der Windows Installer unterstützt UTF-8 nicht, sondern nur die von Windows vorgegebenen Zeichensatztabellen. Die Einbindung in den Erstellungsprozess ist kompliziert, daher hier einige Hinweise:  </p>
+
+<table class="fullwidth-table">
+ <tbody>
+ <tr>
+ <td class="header">Datei</td>
+ <td class="header">Kodierung</td>
+ <td class="header">Hinweise</td>
+ </tr>
+ <tr>
+ <td>toolkit/installer/windows/charset.mk</td>
+ <td>ASCII</td>
+ <td>Die Variable WIN_INSTALLER_CHARSET muss eine Kodierung haben, die mit dem Parameter CHARSET= aus toolkit/installer/windows/install.it übereinstimmt. Geeignete Werte siehe in der Tabelle unten. </td>
+ </tr>
+ <tr>
+ <td>toolkit/installer/windows/install.it</td>
+ <td>
+ <p>Eine Zeichensatztabelle von Windows. Der Parameter CHARSET= in dieser Datei und der Parameter WIN_INSTALLER_CHARSET in der Datei charset.mk müssen mit dem Zeichensatz übereinstimmen.</p>
+ </td>
+ <td>Die Parameter FONTNAME/FONTSIZE/CHARSET in dieser Datei müssen geeigete Werte haben. Für die meisten westlichen Zeichensätze sind die Werte "MS Sans Serif" und "8" sinnvolle Standardwerte. Für östliche Schriftsätze müssen geeignete Schriftarten aus dem Lieferumfang von Windows ausgewählt werden. Geeignete Werte für den Parameter CHARSET= siehe in der Tabelle unten.</td>
+ </tr>
+ <tr>
+ <td>browser/installer/installer.inc</td>
+ <td>UTF-8</td>
+ <td> </td>
+ </tr>
+ <tr>
+ <td>toolkit/installer/unix/install.it</td>
+ <td>UTF-8</td>
+ <td>{{ Deprecated_inline() }}</td>
+ </tr>
+ </tbody>
+</table>
+
+<h4 id="Native_Windows_encodings" name="Native_Windows_encodings">Native Windows-Kodierungen</h4>
+
+<p>Die nachfolgende Tabelle beinhaltet native Windows-Kodierungen und die jeweiligen Werte für WIN_INSTALLER_CHARSET und CHARSET=:</p>
+
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <td class="header">Kodierungsbezeichnung</td>
+ <td class="header">WIN_INSTALLER_CHARSET (charset.mk)</td>
+ <td class="header">CHARSET= (windows/install.it)</td>
+ </tr>
+ <tr>
+ <td>ANSI_CHARSET</td>
+ <td>CP1252</td>
+ <td>0</td>
+ </tr>
+ <tr>
+ <td>BALTIC_CHARSET</td>
+ <td>CP1257</td>
+ <td>186</td>
+ </tr>
+ <tr>
+ <td>CHINESEBIG5_CHARSET</td>
+ <td>CP950</td>
+ <td>136</td>
+ </tr>
+ <tr>
+ <td>EASTEUROPE_CHARSET</td>
+ <td>CP1250</td>
+ <td>238</td>
+ </tr>
+ <tr>
+ <td>GB2312_CHARSET</td>
+ <td>CP936</td>
+ <td>134</td>
+ </tr>
+ <tr>
+ <td>GREEK_CHARSET</td>
+ <td>CP1253</td>
+ <td>161</td>
+ </tr>
+ <tr>
+ <td>HANGUL_CHARSET</td>
+ <td>CP949</td>
+ <td>129</td>
+ </tr>
+ <tr>
+ <td>RUSSIAN_CHARSET</td>
+ <td>CP1251</td>
+ <td>204</td>
+ </tr>
+ <tr>
+ <td>SHIFTJIS_CHARSET</td>
+ <td>CP932</td>
+ <td>128</td>
+ </tr>
+ <tr>
+ <td>TURKISH_CHARSET</td>
+ <td>CP1254</td>
+ <td>162</td>
+ </tr>
+ <tr>
+ <td>VIETNAMESE_CHARSET</td>
+ <td>CP1258</td>
+ <td>163</td>
+ </tr>
+ <tr>
+ <td colspan="3"><strong>Windows Sprachversionen Middle East</strong>:</td>
+ </tr>
+ <tr>
+ <td>ARABIC_CHARSET</td>
+ <td>CP1256</td>
+ <td>178</td>
+ </tr>
+ <tr>
+ <td>HEBREW_CHARSET</td>
+ <td>CP1255</td>
+ <td>177</td>
+ </tr>
+ <tr>
+ <td colspan="3"><strong>Windows Sprachversionen Thai</strong>:</td>
+ </tr>
+ <tr>
+ <td>THAI_CHARSET</td>
+ <td>CP874</td>
+ <td>222</td>
+ </tr>
+ </tbody>
+</table>
diff --git a/files/de/mozilla/localization/localization_content_best_practices/index.html b/files/de/mozilla/localization/localization_content_best_practices/index.html
new file mode 100644
index 0000000000..d5b4c70dfc
--- /dev/null
+++ b/files/de/mozilla/localization/localization_content_best_practices/index.html
@@ -0,0 +1,324 @@
+---
+title: Localization content best practices
+slug: Mozilla/Localization/Localization_content_best_practices
+translation_of: Mozilla/Localization/Localization_content_best_practices
+---
+<div class="summary">
+<p> </p>
+
+<p><span class="seoSummary">Dieses Dokument stellt Entwicklern bewährte Methoden zum Erstellen von standortabhängigem Code bereit und beschreibt wie man häufige Fehler, bei der Lokalisierbarkeit verhindert.</span></p>
+</div>
+
+<div class="blockIndicator note">
+<p><strong>Note</strong>: If you're a localizer and you want to contribute to the localization of Mozilla products, you might want to read our <a href="/en-US/docs/Mozilla/Localization/Quick_start_guide">Localization quick start guide</a> for information on localizing Mozilla code.</p>
+</div>
+
+<h2 id="Note_on_localizers">Note on localizers</h2>
+
+<p>Mozilla localizers a volunteers with very diverse technical skills: some of them rely exclusively on translation tools, others prefer to work directly with text editors and don't have problems working with VCS systems.</p>
+
+<p>It's important to consider this when adding strings, and especially localization comments for strings that contain references, or obscure technical details.</p>
+
+<h2 id="Localization_files">Localization files</h2>
+
+<h3 id="Choose_good_key_IDs">Choose good key IDs</h3>
+
+<p>The IDs (names) chosen for your keys, regardless of the file format, should always be descriptive of the string, and its role in the interface (button label, title, etc.). Think of them as long variable names. When you have to change a key ID, adding a progressive number to the existing key should always be used as a last resort. For example, suppose this string needs to be changed from "Event" to "Add New Event":</p>
+
+<pre>new-event-header = Event</pre>
+
+<p><code>add-new-event-header</code> is definitely a better choice for the new string than <code>new-event-header1</code>.</p>
+
+<p>If a string is tied to an accesskey or a tooltip, use string IDs that highlight this relation:</p>
+
+<pre>neweventbtn.label = Add event
+neweventbtn.accesskey = A
+neweventbtn.tooltip = Add a new event
+</pre>
+
+<h3 id="Don't_duplicate_IDs">Don't duplicate IDs</h3>
+
+<p>If you're adding new strings, check that you're not duplicating an existing ID. Depending on the parser logic, one of these two translations will be ignored.</p>
+
+<h3 id="Add_localization_notes">Add localization notes</h3>
+
+<p>Localizers usually work on the localizable files without the context of the source files including the localized strings; it is important to add comments to the localizable files themselves, too. These comments are generally referred to as localization notes.</p>
+
+<p>Don't forget to add a localization note when:</p>
+
+<ul>
+ <li>Part of the string is not supposed to be localized (for example, the name of an HTML attribute in a warning).</li>
+ <li>String includes variables: always explain what will be the value of these variables at run-time.</li>
+ <li>English could be ambiguous. For example: <code>bookmark</code>. Is this a noun or a verb? Using meaningful IDs could also help in these cases.</li>
+ <li>Strings are used in a specific context. For example accessibility (a11y) strings: in this case space is less important than clarity, since these strings are not displayed in the UI but used by tools like screen readers.</li>
+</ul>
+
+<p>There is an established format for localization comments: it's important to follow the format as closely as possible, since there are a number of automated tools that parse these comments for easier access and use by localizers.</p>
+
+<h4 id="DTD_files">DTD files</h4>
+
+<pre class="eval language-html">&lt;!-- LOCALIZATION NOTE (entity name): \{{privacy}} will be replaced at run-time by an
+ active link. the string 'privacy-link' will be used as text for this link. --&gt;
+</pre>
+
+<h4 id="Properties_files">Properties files</h4>
+
+<pre class="eval language-html"># LOCALIZATION NOTE(privacy-text): \{{privacy}} will be replaced at run-time by an
+# active link. the string 'privacy-link' will be used as text for this link.
+privacy-text = By proceeding you accept the \{{privacy}}.
+privacy-link = Privacy Terms
+</pre>
+
+<p>File-wide comments should use the same format, they should be at the top of the file (after the license header) and just drop the <em>(entity name/key)</em> reference.</p>
+
+<h3 id="Land_good_quality_strings">Land good quality strings</h3>
+
+<ul>
+ <li>Don't land temporary strings. If you already know that your strings are temporary, they shouldn't be exposed to the localization process. This would waste everybody's time and create unnecessary frustration: localizers have to translate strings that are destined to change, developers will need to <a href="#Changing_existing_strings">use new IDs</a> later to update them.</li>
+ <li>If you're reviewing a patch, check also strings for grammar errors, capitalization or inconsistencies. For example, use the single Unicode …, and not three dots. If you have any doubts about the quality of strings, ask a copywriter to do a copy review of this text. Ideally, all strings landing in code should originate from approved UX wireframes, any copy review should be part of the initial stage of creating these wireframes.</li>
+</ul>
+
+<h4 id="Use_Unicode_characters_over_their_ASCII_counterparts_when_possible">Use Unicode characters over their ASCII counterparts when possible</h4>
+
+<p>Strings should use directional quotation marks when possible.</p>
+
+<ul>
+ <li>U+2018 and U+2019 (\u2018 and \u2019 in JavaScript) are the left and right single quotation marks, respectively. The right single quotation mark should be used as an apostrophe.</li>
+ <li>U+201C and U+201D (\u201c and \u201d in JavaScript) are the left and right double quotation marks, respectively. The pair should be used to surround statements and references to user input.
+ <ul>
+ <li>Example:  You have chosen a keyword that is currently in use by “%S”. Please select another.</li>
+ <li>Example: Search %1$S for “%2$S”</li>
+ </ul>
+ </li>
+</ul>
+
+<p>Non-directional single, and double, quotation marks should be used in reference to HTML code, or other languages where ASCII character usage is required, such as HTML. <em>HTML does not prefer one over the other, and our codebase uses them interchangeably as of March 2016.</em></p>
+
+<ul>
+ <li>Example: This web page at &lt;span id='malware_sitename'/&gt; has been reported as an attack page and has been blocked based on your security preferences.</li>
+</ul>
+
+<p>U+2026 (\u2026) is the horizontal ellipsis character. This character should be used in place of three consecutive periods.</p>
+
+<h2 id="Create_localizable_strings">Create localizable strings</h2>
+
+<h3 id="Don't_assume_grammar_structures">Don't assume grammar structures</h3>
+
+<p>You need to consider the need for different grammar structures in different locales, and add switching mechanisms to present them appropriately. You shouldn't make assumptions as to what those structures will be: instead, let locales/localizers decide. When in doubt, ask the localizers.</p>
+
+<h4 id="Date_and_time_formats">Date and time formats</h4>
+
+<p>For example, you shouldn't hard code date formats into applications:</p>
+
+<pre>%A, %b %e
+// resulting in Wednesday, May 20</pre>
+
+<p>This is fine in English, but in Italian results in "Mercoledì, Mag 20", which sounds unnatural. Every time you use this kind of structure, you should have a localizable string behind it, and let localizers decide the best order for their language.</p>
+
+<h4 id="Units">Units</h4>
+
+<p>Another example is localizing percentages or units. Some locales use a space between the number and the % symbol, some don't, some use a non-breaking space.</p>
+
+<h4 id="Splitting">Splitting</h4>
+
+<p>Splitting sentences into several keys often inadvertently presumes a grammar, a sentence structure, and such composite strings are often very difficult to translate. When a composite string is needed, try to give the translators "room to move".</p>
+
+<h4 id="Word_Order">Word Order</h4>
+
+<p>If a string will contain a placeholder, always add the placeholder to the string to allow the localizer to change the word order if necessary. For example, it might seem ok in English to present the strings <code>[username] says: </code>to localizers simply as <code>says:</code> but this will cause serious issues in many other languages as the agent of an action often will not come in front of the verb, but some other position. For example in Irish/Gaelic the correct order is <code>be [username] at saying:</code>. If a placeholder is present, this can be correctly localized as <code>Tá %s ag rádh:</code> but not without.</p>
+
+<p>Similarly, if the UI string is <code>Flash Version</code>, do not simply present the translator with <code>Version </code>for translation. Present the whole string or, if there is a significant need for a placeholder, use a placeholder. the word Version may have to go before or after <code>Flash </code>and one or both may need to be inflected.</p>
+
+<h4 id="Idiom">Idiom</h4>
+
+<p>Idiom, in a loose sense, also has an impact on localization if it leads to strings being prepared in a way that renders them unlocalizable. For example, in English all the following begin with the same clause: <code>The URL of this feed is invalid; The URL of this feed cannot be reached; The URL of this feed cannot be parsed</code>. It might be tempting to 'save time' by presenting this as <code>The URL of this feed %s</code> and then <code>is invalid; cannot be reached</code> and <code>cannot be parsed</code>. However, linguistically these are different types of sentences and will be handled differently in other languages. This is usually not a case of translator choice but obligatory in the language. For example, in Gaelic these sentences must be translated as <code>Tha URL an inbhir seo mì-dhligheach;Cha ruig sinn URL an inbhir seo</code> and <code>Cha ghabh URL an inbhir seo a pharsadh</code>.</p>
+
+<div class="blockIndicator geckoVersionNote">
+<p>Unless there are significant savings of translation volume involved, it is usually easier and quicker for translators to handle these as fixed strings rather than composed strings, especially considering the time needed for locating, checking and potentially fixing composed strings.</p>
+</div>
+
+<h4 id="Case_and_inflections">Case and inflections</h4>
+
+<p>(Also see section on Placeholders)</p>
+
+<p>Many languages have features like noun classes (i.e. nouns belonging to different categories and are treated differently by the grammar), case and inflections (changes are made to a word to indicate differences in meaning or use) and so on. In modern English, such features are rare and are mainly restricted to plural <code>-s</code> and verb forms (e.g. <code>go &gt; went</code> is a form of inflection). Examples from other languages:</p>
+
+<ul>
+ <li>Gender in German: nouns can be either masculine, feminine or neuter. The most obvious impact is that the definite article which in English is always <code>the </code>can either be <code>der, die</code> or <code>das</code>. To complicate matters, if the grammatical context changes, the article will change: <code><span style="background-color: #add8e6;">Der</span> Text</code> 'the text' changes to <code>Wollen Sie <span style="background-color: #add8e6;">den</span> Text speichern?</code> 'Do you want to save the text?'</li>
+ <li>Suffixes in Basque: where English tends to use expressions such as 'to the' or 'from the', Basque adds an ending to a word to express the same concept. For example <code><span style="background-color: #add8e6;">From the</span> menu</code> in Basque is <code>Menu<span style="background-color: #add8e6;">tik</span> </code>and <code><span style="background-color: #add8e6;">To the</span></code><code> printers</code> is <code>Inprimagailu<span style="background-color: #add8e6;">ei</span></code>.</li>
+</ul>
+
+<div class="blockIndicator geckoVersionNote">
+<p><strong>Implication:</strong> Using placeholders for something like 'the text' or 'the file' works well in English but is likely to cause severe headaches for localizers if the placeholders cannot be inflected.</p>
+</div>
+
+<h3 id="Use_proper_plural_forms">Use proper plural forms</h3>
+
+<p>Firefox supports proper <a href="https://developer.mozilla.org/en-US/docs/Mozilla/Localization/Localization_and_Plurals">plural forms</a>. As a native English speaker, you might find it natural to use</p>
+
+<pre>delete-cookie = Delete cookie
+delete-cookies = Delete cookies
+</pre>
+
+<p>In Firefox this should be</p>
+
+<pre class="language-html"># LOCALIZATION NOTE (delete-cookies): Semi-colon list of plural forms.
+# See: http://developer.mozilla.org/en/docs/Localization_and_Plurals
+# #1 is the number of cookies to delete
+# example:
+delete-cookies = Delete #1 cookie;Delete #1 cookies</pre>
+
+<div class="blockIndicator geckoVersionNote">
+<p><strong>Important:</strong> always include the localization note with this format if you use a plural form in Firefox. This comment is used by tools to identify strings with plural forms.</p>
+</div>
+
+<p>One last advice: never use plural form as a replacement for single/multiple conditional. See {{ Bug("658191") }} for more details.</p>
+
+<h3 id="Use_ordered_variables_in_string_with_multiple_variables">Use ordered variables in string with multiple variables</h3>
+
+<p>Consider this string from /browser:</p>
+
+<pre>generalSiteIdentity=This website is owned by %S\nThis has been verified by %S</pre>
+
+<p>First thing: always add a localization comment explaining what these variables mean, even if it seems obvious. Using multiple <code>%S</code> give the impression that the order of variables if fixed, which is actually not.</p>
+
+<pre># LOCALIZATION NOTE(generalSiteIdentity): %1$S is the owner of the current website,
+# %2$S is the name of the Certification Authority signing the certificate.
+generalSiteIdentity=This website is owned by %1$S\nThis has been verified by %2$S</pre>
+
+<h3 id="Avoid_concatenations_use_placeholders_instead">Avoid concatenations, use placeholders instead</h3>
+
+<p>Consider this string:</p>
+
+<pre>tos-text = By proceeding you accept the
+tos-link = Terms of Services
+</pre>
+
+<p>Most developers would consider this a good solution and display the concatenation of <code>tos-text+tos-link</code>, with an active link on the second part. Unfortunately, this won't work at all: you need at least a third string to place after the link, without that some languages won't be able to create a natural sounding sentence.<br>
+ <br>
+ A much more flexible solution would be:</p>
+
+<pre># LOCALIZATION NOTE(tos-text): \{{link}} will be replaced at run-time
+# by an active link. String with ID 'tos-link' will be used as text
+# for this link.
+tos-text = By proceeding you accept the \{{link}}
+tos-link = Terms of Services</pre>
+
+<p>And then replace <code>\{{link}}</code> at run-time with the second string. Note also the localization comments and make sure it is clear to the localizer which placeholder string will appear in lieu of the placeholder as this may affect translation and/or inflection. For example, <code>By proceeding you accept the \{{Terms of Service}}</code> will result in the Gaelic translation <code>Ma leanas tu air adhart, bidh tu a' gabhail ri \{{teirmichean na seirbheise}}</code>. But in another grammatical context, <code>\{{Terms of Service}}</code> may require a different inflection, for example <code>\{{<span style="background-color: #add8e6;">th</span>eirmichean na seirbheise}}</code>. So if the localizer is left unsure as to which string goes into which placeholder, this may lead to bad translations.</p>
+
+<h3 id="Don't_reuse_strings_in_different_contexts">Don't reuse strings in different contexts</h3>
+
+<p>This is particularly important for mobile, where different context often means different font and available space for the string. For example, if you're adding a new menu item in Settings on Android, don't use the same string for the menu item and the following screen header.</p>
+
+<p>Another example, some locales use nouns for titles, and verbs for actions (for example button labels). Sometimes they coincide with English, but they rarely do in other languages. Take <code>Bookmark</code>: it can be both a noun and a verb in English. A developer could be tempted to reuse the same string "Bookmark" in the button to add a bookmark, and in the header for the next dialog. This won't work in some languages.</p>
+
+<h3 id="Avoid_unnecessary_complexity_in_strings">Avoid unnecessary complexity in strings</h3>
+
+<p>Consider this string:</p>
+
+<pre class="brush: html">privacy-link = &lt;p&gt;By proceeding you accept the &lt;a href="https://www.mozilla.org/privacy" class="external"&gt;Privacy Terms&lt;/a&gt;.&lt;/p&gt;</pre>
+
+<p>In this case, you shouldn't put the URL inside the localization string, unless you need it to be localizable. If you change the URL, you're going to need a new string ID; the same goes for the anchor's attributes, or the paragraph markup. Instead, you should use the following strings</p>
+
+<pre># LOCALIZATION NOTE(privacy-text): \{{link}} will be replaced at run-time
+# by an active link. String with ID 'privacy-link' will be used as text
+# for this link.
+privacy-text = By proceeding you accept the \{{link}}.
+privacy-link = Privacy Terms</pre>
+
+<p>And then replace <code><code>{</code>{link}}</code> at run-time with the link.</p>
+
+<h3 id="Don't_hardcode_characters">Don't hardcode characters</h3>
+
+<p>Typically white spaces, commas, or other separators (":", "|").</p>
+
+<p>If you need a trailing white space in a string, use the Unicode character \u0020 (that's usually a bad sign, you're concatenating it to another string). At some point, someone will accidentally trim that whitespace.</p>
+
+<h3 id="Remove_unused_strings">Remove unused strings</h3>
+
+<p>If you're removing features, don't leave around unused strings in the .properties file.</p>
+
+<h3 id="Tooltips">Tooltips</h3>
+
+<p>If a string is used as a tooltip, it should not end in a period (in English). Tooltips are never written in imperative mood but infinitive mood instead. Hence the proper absence of periods to indicate this isn't just a matter of consistency for en-US, as it is also vital info for localizers.</p>
+
+<h3 id="Menu_and_control_labels">Menu and control labels</h3>
+
+<p>The labels on controls and menu titles, menu option strings, and so forth should not end in periods (in English). These are generally not complete sentences, but instead, phrases that convey the idea of a concept or action. Therefore, for both correctness and consistency within en-US, please leave out the trailing periods for these items. This also helps with localization.</p>
+
+<h3 id="Developer_tools_key_shortcuts">Developer tools key shortcuts</h3>
+
+<p>When translating Firefox strings from /devtools/ folder, you may see some keys like this:</p>
+
+<pre class="sourcelines"><span class="difflineplus" id="l8.16">inspector.searchHTML.key=CmdOrCtrl+F</span></pre>
+
+<p>The first part of the string `<em>CmdOrCtrl</em>` should not be translated. You may only translate the letter to better match your locale. This key shortcut definition matches the <a href="https://github.com/electron/electron/blob/master/docs/api/accelerator.md">Electron key shortcut definition</a>.</p>
+
+<h2 id="Create_localizable_UI">Create localizable UI</h2>
+
+<h3 id="CSS_issues">CSS issues</h3>
+
+<p>Some CSS text/font properties may cause problems with text legibility when applied to certain language texts.</p>
+
+<ul>
+ <li>Avoid using Italic for CJKT. This acronym stands for: <span class="st">Chinese (Simplified and Traditional), Japanese, Korean, and Taiwanese</span>.</li>
+ <li>The {{ cssxref("text-transform") }} property is not reliable for some locales; for example, <code>text-transform: uppercase</code> won't work properly with languages such as Irish/Gaelic. For example, <code>App Size</code> in English may be capitalized via <code>text-transform: uppercase</code> to <code>APP SIZE</code> but in Gaelic this would change <code>Meud na h-aplacaid</code> to <code>MEUD NA H-APLACAID</code> which violates the locales orthographic rules, as it ought to be <code>MEUD NA hAPLACAID</code>. In general, localizers should make the decision about capitalization. If you want to display <code>WARNING</code>, add a string with that capitalization, and explain it in the localization note.</li>
+</ul>
+
+<h3 id="Design_for_50">Design for +50%</h3>
+
+<p>Bear in mind that English strings will likely be a lot shorter than their international equivalents, so you need to leave some space in your UI to allow for this. Some examples:</p>
+
+<ul>
+ <li><code>OK</code> in English becomes <code>Ceart ma-thà</code> in Gaelic.</li>
+ <li><code>Save document?</code> in English becomes <code>A bheil thu airson an sgrìobhainn a shàbhaladh</code> in Gaelic.</li>
+</ul>
+
+<p>Another good example is Yes/No. There are two types of languages, those that have Yes/No as a single word, and those that don't and work on mirroring the verb. For example, a <code>Do you want to open the page?</code> &gt; <code>Yes/No</code> dialog works in English, but in Gaelic/Irish/Welsh and several other languages the equivalent answer is <code>Want/Not want</code>.</p>
+
+<p>W3C has a good <a href="http://www.w3.org/International/articles/article-text-size">guide</a> on the length ratios a developer should be prepared for.</p>
+
+<h2 id="Test_localizability">Test localizability</h2>
+
+<p>As a developer, you should always test your patches not just for code errors, but also for localizability issues in case they involve string or UI changes.</p>
+
+<h3 id="Gecko_and_mozilla-central">Gecko and mozilla-central</h3>
+
+<p>First, make sure that there are no hard-coded strings, and all strings are available in localization files (.dtd, .properties). One possible way to test a patch for localizability issues is to alter the en-US localization files, adding extraneous characters to the original strings: this can help to identify both hard-coded strings and "flexibility issues" in the UI.</p>
+
+<h2 id="Changing_existing_strings">Changing existing strings</h2>
+
+<h3 id="Updating_Entity_Names">Updating Entity Names</h3>
+
+<p>If you are changing a string such that its meaning has changed, you must update the entity or property name for the string to match the new meaning. If your changes are relevant only for English — for example, to correct a typographical error or to make letter case consistent — then there is generally no need to update the entity name.</p>
+
+<p>Changing the string ID will invalidate the existing translation, the new string will be reported as missing in all tools, and localizers will have to retranslate it. Given the diversity of tools used by localization teams, this is the only reliable method to ensure that localizers update existing localizations.</p>
+
+<p>If you change the entity or property name of a string, you must also update all instances where that entity or property name is used in the source code, including localization comments.</p>
+
+<p>If you change the entity or property name of a string, and the string has an accompanying access key, command key, or tooltip, you should update their names as well for consistency. This change is fundamental for access keys, since many localization tools use the entity name to connect an access key to its label. For example, to check if it's using a character not available in the original string, given entities "useBookmark.label" and "useBookmark.accesskey", if you change to "chooseBookmark.label" due to a string change, change the access key entity to "chooseBookmark.accesskey" to match it.</p>
+
+<h3 id="String_freeze">String freeze</h3>
+
+<p>Some repositories are considered to be <em>string-frozen</em>. This means that string changes are not allowed to land, and each case must be evaluated before landing. As a general rule, it's recommended to fix strings on the trunk/master repository, and create ad-hoc patches for string frozen repositories that don't involve string changes. Note that even removing strings is considered a breakage.</p>
+
+<p>In the case of Firefox and Thunderbird, string frozen repositories are: mozilla-aurora, mozilla-beta, mozilla-release.</p>
+
+<h2 id="Bugzilla_and_l10n">Bugzilla and l10n</h2>
+
+<h3 id="Do_I_need_l10n_feedback">Do I need l10n feedback?</h3>
+
+<p>Feedback from <a href="https://wiki.mozilla.org/L10n:Mozilla_Team">l10n-drivers</a> is not necessary for each landing involving strings, as long as you're following the basic rules described in this document. If you have doubts about the localizability of some text or structure (not about the text itself, that would need copywriters), it's definitely good to ask feedback.</p>
+
+<h3 id="Keywords_l12y_late-l10n">Keywords: l12y, late-l10n</h3>
+
+<p>Two keywords are generally used on Bugzilla:</p>
+
+<ul>
+ <li>l12y: it's used to track "localizability" bugs. A bug marked with l12y describes an issue that prevents localizers to create a good quality localization. Some examples: hard-coded strings, implicit grammar structure in the code, lack of plural forms support, UI that breaks with long strings, etc.</li>
+ <li>late-l10n: it's used by release-drivers to identify bugs, involving new strings, that will land late in the cycle, typically after soft string freeze in Firefox OS.</li>
+</ul>
+
+<h3 id="Alias_l10n">Alias :l10n</h3>
+
+<p>The :l10n alias on Bugzilla (community@localization.bugs) is followed by some localizers and it could be CC'd to gather opinions from the wider l10n community (no point in opening NEEDINFO or requiring actions from this alias). There is also a <a href="https://lists.mozilla.org/listinfo/dev-l10n">dev-l10n mailing list</a> and a #l10n channel on IRC, they might be a good place to ask questions.</p>
diff --git a/files/de/mozilla/localization/lokalisierung_mit_mercurial/index.html b/files/de/mozilla/localization/lokalisierung_mit_mercurial/index.html
new file mode 100644
index 0000000000..6f7835ed1b
--- /dev/null
+++ b/files/de/mozilla/localization/lokalisierung_mit_mercurial/index.html
@@ -0,0 +1,252 @@
+---
+title: Lokalisierung mit Mercurial
+slug: Mozilla/Localization/Lokalisierung_mit_Mercurial
+translation_of: Mozilla/Localization/Localizing_with_Mercurial
+---
+<p>Für Mozillla verwenden wir das Versionskontrollsystem von <a href="../../../../en/Mercurial_basics" rel="internal">Mercurial</a> (Hg) zur Verwaltung des Quellcodes und der Lokalisierungen. Mit Mercurial können Lokalisierer lokal arbeiten (auf dem eigenen Rechner) und dann die Änderungen an ein Remote-Repository hochladen (<code style="font-size: 14px;">push</code>), das überlicherweise auf den Mozilla-Servern (<a class="external" href="http://hg.mozilla.org/" title="http://hg.mozilla.org/">hg.mozilla.org</a>) gehostet wird. Für die Lokalisierung aktueller Versionen von Firefox, Thunderbird und SeaMonkey wird Mercurial verwendet. Falls die Dokumentation unvollständig ist oder du Fragen hast, schau bitte bei den <a href="irc://irc.mozilla.org/l10n" title="irc://irc.mozilla.org/l10n">#l10n</a>- oder <a href="irc://irc.mozilla.org/hg" title="irc://irc.mozilla.org/hg">#hg</a>-Kanälen oder auf irc.mozilla.org vorbei. Es lohnt sich auch die <a class="internal" href="/en/Mercurial_FAQ" title="En/Mercurial FAQ">Mercurial FAQ</a> zu lesen, falls du auf ein Problem stoßen solltest.</p>
+
+<p>Für die Motivierten und Schnellen unter euch folgen hier Anweisungen zur Installation und Konfiguration von Mercurial, eine Anleitung dazu, wie man Hochlade-Rechte für seinen Hg-Account erhält und einige Aufgaben, die ohne Account-Rechte erfüllt werden können.</p>
+
+<h2 id="Mercurial_installieren">Mercurial installieren</h2>
+
+<p>Befolge die nachfolgenden Anweisungen um Mercurial auf deinem System zu installieren. Sobald du mit der Installation von Mercurial fertig bist, zeigen wir dir Schritt für Schritt wie man Mercurial <a href="/en/Mercurial_FAQ#Configuration" title="en/Mercurial FAQ#Configuration">konfiguriert</a>.</p>
+
+<h3 id="Mercurial_unter_Linux">Mercurial unter Linux</h3>
+
+<p>Mit einem der folgenden Befehle ist es ganz einfach möglich Mercurial aus der Befehlszeile  heraus zu installieren. Wähle den zu deiner Distribution passenden Befehl aus und stelle sicher, dass das Terminal als <em>root</em> läuft.</p>
+
+<pre># Debian/ubuntu
+$ apt-get install mercurial
+
+# Fedora
+$ yum install mercurial
+
+# Gentoo
+$ emerge mercurial
+
+# Arch Linux
+$ pacman -S mercurial
+
+# OpenSolaris
+$ pkg install SUNWmercurial
+</pre>
+
+<p>Wenn du eine grafische Oberfläche bevorzugst kannst du <a href="http://javaforge.com/project/HGE">MercurialEclipe hier herunterladen und istallieren</a>.</p>
+
+<h4 id="Hat_es_funktioniert">Hat es funktioniert?</h4>
+
+<p>Öffne ein Terminalfenster und gib folgenden Befehl ein: <code>hg --version</code>. Wenn eine Meldung mit der Version von Mercurial erscheint (z. B. <code>Mercurial Distributed SCM (version 1.3.1)</code>), war die Installation von Mercurial erfolgreich.</p>
+
+<h4 id="Weitere_Details">Weitere Details</h4>
+
+<p>Weitere Details zur Installation von Hg auf Linus-Systemen findest in den <a href="https://www.mercurial-scm.org/downloads">Anweisungen auf der Download-Seite von Mercurial</a>. </p>
+
+<h3 id="Mercurial_unter_Windows">Mercurial unter Windows</h3>
+
+<p>Unter Windows gibt es zwei Möglichkeiten zur Installation:</p>
+
+<ul>
+ <li>Herunterladen und installieren des {{ interwiki("wikimo", "MozillaBuild") }}-Paketes für eine <strong>Befehlszeilenschnittstelle</strong>. So wird nicht nur Hg installiert, sondern auch alle Tools, die für die Erstellung von Mozilla-Produkten unter Windows benötigt werden. trust us, you'll want this eventually.</li>
+ <li><a href="/@api/deki/files/3863/=TortoiseHg.png" title="TortoiseHg.png"><img alt="TortoiseHg.png" class="internal rwrap" src="/@api/deki/files/3863/=TortoiseHg.png?size=thumb" style="float: right; height: 115px; width: 160px;"></a>Installieren von <a class="external" href="http://tortoisehg.bitbucket.org/" title="http://tortoisehg.bitbucket.org/">TortoiseHg</a> für eine <strong>grafische Oberfläche</strong>. TurtoiseHg wird in die Windows Explorer-Shell integriert und installiert zusätzlich das Befehlszeilenprogramm.</li>
+</ul>
+
+<p><a href="/@api/deki/files/3861/=Mercurial_Installer.png" title="Mercurial Installer.png"><img alt="Mercurial Installer.png" class="internal rwrap" src="/@api/deki/files/3861/=Mercurial_Installer.png?size=thumb" style="float: right; height: 125px; width: 160px;"></a>Bei derr Befehlszeileninstallation von Hg unter Windows ist es wichtig sicherzustellen, dass sich die ausführbare Datei von <code>hg</code> in der Variable <code>%PATH%</code> des Systems befindet (für TortoiseHg is dieser Schritt nicht nötig). Verwende das Hilfsprogramm <code>add_path.exe</code>, das unter <code>C:\mozilla-build\hg</code> zu finden ist, um diesen Schritt auszuführen.</p>
+
+<pre>PS C:\Users\your_id&gt; cd C:\mozilla-build\hg
+PS C:\mozilla-build\hg&gt; .\add_path.exe /result .
+</pre>
+
+<p>Beachte, dass der Punkt ("<code>.</code>") am Ende des zweiten Befehl für das <em>aktuelle Verzeichnis</em> steht. Wenn das Hilfsprogramm <code><em>%PATH%</em></code> erfolgreich modifiziert hat, öffnet sich ein Dialog mit der Meldung "<em><code>%PATH%</code> wurde korrekt aktualisiert</em>".</p>
+
+<p>Alternativ kann die Variable <code><em>%PATH%</em></code> auch manuell bearbeitet werden. Klicke hierfür mit der rechten Maustaste auf den Eintrag Computer im Startmenü, gehe zu <code>Eigenschafte &gt; Erweitert &gt; Umgebungsvariablen</code>, wähle <code>PATH</code> und klicke auf <code>Bearbeiten</code>. Wenn xx in der Auswahl nicht angezeigt wird, musst du auf <code>Hinzufügen</code> klicken und die Bearbeitung innerhalb des Dialogs <strong>Hinzufügen</strong> vornehmen (Beispiel siehe Screenshot).<br>
+ <a href="/@api/deki/files/3862/=PATH.jpg" title="PATH.jpg"><img alt="PATH.jpg" class="internal rwrap" src="/@api/deki/files/3862/=PATH.jpg?size=thumb" style="float: right; height: 71px; width: 160px;"></a></p>
+
+<h4 id="Hat_es_funktioniert_2">Hat es funktioniert?</h4>
+
+<ol>
+ <li>Gehe zu <code>Start &gt; Ausführen...</code></li>
+ <li>Gib <code>cmd.exe</code> ein und klicke auf <code>OK</code>. Ein neues Shell-Fenster sollte erscheinen.</li>
+ <li>Gib im neuen Shell-Fenster <code>hg --version</code> ein. Wenn eine Meldung mit der Version von Mercurial erscheint (z. B. <code>Mercurial Distributed SCM (version 1.3.1)</code>), war die Installation von Mercurial erfolgreich.</li>
+</ol>
+
+<h4 id="Weitere_Details_2" style="font-size: 14px;">Weitere Details</h4>
+
+<p>Weitere Details zur Installation von Hg unter Windows findest in den <a href="https://www.mercurial-scm.org/downloads">Anweisungen auf der Download-Seite von Mercurial</a>.</p>
+
+<h3 id="Mercurial_unter_Mac_OSX">Mercurial unter Mac OSX</h3>
+
+<p>Die Installation von Hg unter Mac OSX ist sehr einfach. Mit Hilfe von <a class="external" href="http://www.macports.org/" title="http://www.macports.org/">MacPorts</a> kann Mercurial über das Terminal mit folgendem Befehl installiert werden:</p>
+
+<p><code>$ sudo port install mercurial</code></p>
+
+<p>Es ist außerdem möglich Mercurial über die dmg-Datei von der <a href="http://mercurial.selenic.com/wiki/Download#Mac_OS_X" title="http://mercurial.selenic.com/wiki/Download#Mac_OS_X">Hg Download-Seite</a> zu installieren. Hier wird man über einen Installations-Dialog Schritt für Schritt durch den Prozess geleitet.</p>
+
+<p>Wenn du eine grafische Oberfläche bevorzugst, kannst du <a href="http://javaforge.com/project/HGE">MercurialEclipse hier herunterladen und installieren</a>.</p>
+
+<h4 id="Hat_es_funktioniert_3">Hat es funktioniert?</h4>
+
+<p>Öffne ein Terminal-Fenster und gib folgenden Befehl ein: <code>hg --version</code>. Wenn eine Meldung mit der Version von Mercurial erscheint (z. B. <code>Mercurial Distributed SCM (version 1.3.1)</code>), war die Installation von Mercurial erfolgreich.</p>
+
+<h4 id="Weitere_Details_3" style="font-size: 14px;">Weitere Details</h4>
+
+<p>Weitere Details zur Installation von Hg unter Mac OSX findest in den <a href="https://www.mercurial-scm.org/downloads">Anweisungen auf der Download-Seite von Mercurial</a>.</p>
+
+<h2 id="Mercurial_konfigurieren">Mercurial konfigurieren</h2>
+
+<p>Sobald Mercurial installiert wurde, muss es konfiguriert werden, um genutzt werden zu können.</p>
+
+<p>Die Mercurial-Konfiguration befindet sich in einer config-Datei, die du selbst erstellen musst. Je nach Betriebssystem heißt die config-Datei entweder <code style="font-size: 14px; color: rgb(51, 51, 51);">~/.hgrc</code> (UNIX-Systeme) oder <code style="font-size: 14px; color: rgb(51, 51, 51);">Mercurial.ini</code> (Windows).</p>
+
+<p>Die config-Datei sollte die folgenden Einstellungen haben:</p>
+
+<pre class="eval">[ui]
+username = Your Real Name &lt;<a class="link-mailto" href="mailto:user@example.com" rel="external" title="mailto:user@example.com">user@example.com</a>&gt;
+merge = internal:merge
+
+[defaults]
+commit = -v
+
+[diff]
+git = 1
+showfunc = 1
+unified = 8</pre>
+
+<p>Befolge folgende Schritte für die Konfiguration von Hg: </p>
+
+<ol>
+ <li>Erstelle eine neue Datei in einem Texteditor deiner Wahl. </li>
+ <li>Kopiere die Einstellungen oben und füge sie in diese neue Datei ein. </li>
+ <li>Speichere die Datei entweder unter dem Namen <code>.hgrc</code> (UNIX-Systeme) oder <code>Mercurial.ini</code> (Windows) und lege Sie in unter <code>$HOME/</code> oder <code>C:\mozilla-build\hg\</code> or <code>C:\Program Files\Mercurial\</code> ab.</li>
+</ol>
+
+<p>Wenn die Installation und Konfiguration von Hg abgeschlossen ist, gibt es einige Aufgaben die ohne Upload-Rechte für Hg ausgeführt werden können. </p>
+
+<h2 id="Repositorys_klonen_und_aktualisieren">Repositorys klonen und aktualisieren</h2>
+
+<p>Es gibt ein paar Repositorys mit  en-US Quelldateien, die für die meisten Localea relevant sind:</p>
+
+<ul>
+ <li><a class="external" href="https://hg.mozilla.org/mozilla-central/" title="https://hg.mozilla.org/mozilla-central/">mozilla-central</a> beinhaltet Dateien für Firefox Nightly.</li>
+ <li><a class="external" href="https://hg.mozilla.org/comm-central/" title="https://hg.mozilla.org/comm-central">comm-central</a> beinhaltet Dateien für SeaMonkey und Thunderbird, die nicht auch schon Teil von Firefox sind. </li>
+ <li><a href="https://hg.mozilla.org/l10n-central/" title="https://hg.mozilla.org/l10n-central/">l10n-central</a> beinhaltet alle L10n-Repositrys für Firefox Nightly.</li>
+</ul>
+
+<div class="note">
+<p>Wenn man das comm-central Repository erstellt, beinhaltet dieses auch das mozilla-central repository. Es ist also möglich, das für die Entwicklung von Firefox, SeaMonkey und Thunderbird konfigurierte Repository zu verwenden, ohne mozilla-central ein weiteres Mal anlegen zu müssen. </p>
+</div>
+
+<p>So erstellt (oder klont) man die en-US Quelldateien beim ersten Mal:</p>
+
+<ul>
+ <li>Führe den folgenden Befehl in der Kommandozeile aus, um die en-US Quelldateien für Firefox zu erhalten:</li>
+</ul>
+
+<pre class="eval">hg clone https://hg.mozilla.org/mozilla-central/
+</pre>
+
+<p>So wird das mozilla-central Repository ins Verzeichnis mozilla-central geklont.</p>
+
+<ul>
+ <li>Führe die folgenden Befehle in der Kommandozeile aus, um die en-US Quelldateien für Firefox, SeaMonkey und/oder Thunderbird zu erhalten:</li>
+</ul>
+
+<pre>hg clone https://hg.mozilla.org/comm-central/
+cd comm-central
+python client.py checkout
+</pre>
+
+<p>Der erste Befehl erstellt einen Klon des comm-central Repositorys. Der zweite Befehl führt dich zu diesem Verzeichnis. Der dritte Befehl erstellt einen Klon von mozilla-central und legt einige weitere hg-Repositorys an. Die anderen Verzeichnisse werden für SeaMonkey und Thunderbird benötigt.</p>
+
+<ul>
+ <li>Das erstmalige Klonen des Lokalisierungs-Repositorys ist genauso einfach. Um beispielsweise das Firefox Nightly L10N Repository zu klonen, führe folgenden Befehl aus und ersetze ab-CD mit dem Code deiner Locale.</li>
+</ul>
+
+<pre class="eval" style="font-size: 14px;">hg clone https://hg.mozilla.org/l10n-central/ab-CD/</pre>
+
+<h3 id="Lokale_Repositorys_aktualisieren">Lokale Repositorys aktualisieren</h3>
+
+<ul>
+ <li>Um deine Arbeitskopie von mozilla-central zu aktualisieren, gehe zum lokalen mozilla-central Verzeichnis und führe folgenden Befehl aus:</li>
+</ul>
+
+<pre class="eval">hg pull -u
+</pre>
+
+<p>Dieser Befehl ruft neue Changesets von mozilla-central ab und wendet diese Änderungen auf deine Arbeitskopie an.</p>
+
+<ul>
+ <li>Um deine Arbeitskopie von comm-central zu aktualisieren, gehe zum lokalen comm-central Verzeichnis und führe folgenden Befehl aus:</li>
+</ul>
+
+<pre>python client.py checkout</pre>
+
+<p>Dieser Befehl ruft neue Changesets von comm-central, mozilla-central und anderen passenden Repositorys ab und wendet diese Änderungen auf deine Arbeitskopie an.</p>
+
+<ul>
+ <li>Um das lokale L10n Repository nach dem ersten Klonen zu aktualieren, führe folgenden Befehl aus dem lokalen L10n-Verzeichnis aus:</li>
+</ul>
+
+<pre style="font-size: 14px;">hg pull -u</pre>
+
+<h2 id="L10n-Patches_erstellen">L10n-Patches erstellen</h2>
+
+<p>Another thing you can do with Hg without needing account priviledges is creating L10n patches of your work for someone else to commit to your remote L10n repo on the Mozilla servers. Doing this ensures that your dashboards are always accurate, as they look at your remote repo.</p>
+
+<p>Here's how to create a L10n patch with Hg and the <a href="http://mercurial.selenic.com/wiki/MqExtension" title="http://mercurial.selenic.com/wiki/MqExtension">Mq extension</a>:</p>
+
+<ol>
+ <li>Enable Mq by adding <code>hg.ext = </code> to your Mercurial config file (<code>~/.hgrc</code> on Unix-like systems or <code>Mercurial.ini</code> on Windows) under the <code>[extensions]</code> section.</li>
+ <li>Open your command line tool and navigate to your L10n directory.</li>
+ <li>Inside your L10n directory, init your repo with Mq by running <code>hg init --mq</code>.</li>
+ <li>To create a new patch, run <code>hg qnew -m "Your commit message" patch-name.patch</code>. The commit message should take the form of "Bug 123456 - Change this thing to work better by doing something; r=reviewers" if you are to fix a bug.</li>
+ <li>Make your change.</li>
+ <li>Once you finish making your change, run <code>hg qrefresh</code> to commit your changes to the patch.</li>
+ <li>Navigate to your <code>&lt;repository&gt;/.hg/patches</code> to find your <code>.patch</code>.</li>
+ <li>You may repeat from step 4 to create another patch. Your patches will be incremental, i.e. new patches are created based on old patches. If you want to commit all the patches to the repository and cleanup the patch queue, run <code>hg qfinish</code>.</li>
+</ol>
+
+<p>Please refer to <a href="http://mercurial.selenic.com/wiki/MqTutorial" title="http://mercurial.selenic.com/wiki/MqTutorial">MqTutorial</a> and <a href="http://mercurial.selenic.com/wiki/MqExtension" title="http://mercurial.selenic.com/wiki/MqExtension">Mq documentation</a> for further uses of Mq extension to manage patches.</p>
+
+<h2 id="Mercurial_account_priviledges">Mercurial account priviledges</h2>
+
+<p>Eventually, you or your team leader will need Hg account priviledges. Let's face it, it's just more convenient to commit and push your work to the remote repo yourself, rather than creating patches and asking someone else to push them for you.</p>
+
+<p>To get write access to the l10n hg repositories on the Mozilla server,<a class="external" href="http://www.mozilla.org/hacking/commit-access-policy/" title="http://www.mozilla.org/hacking/commit-access-policy/"> there's a bit of paper work to be done</a>. The localization team owner needs to <a class="link-https" href="https://bugzilla.mozilla.org/enter_bug.cgi?product=mozilla.org&amp;component=Repository%20Account%20Requests&amp;rep_platform=All&amp;op_sys=All&amp;cc=l10n%40mozilla.com&amp;short_desc=l10n%20hg%20account%20for%20John%20Doe%20(ab-CD)" title="https://bugzilla.mozilla.org/enter_bug.cgi?product=mozilla.org&amp;component=Repository%20Account%20Requests&amp;rep_platform=All&amp;op_sys=All&amp;cc=l10n%40mozilla.com&amp;short_desc=l10n%20hg%20account%20for%20John%20Doe%20(ab-CD)">file a bug requesting an hg account</a>. This bug will request level 1 L10n priviledges. You need to follow the instructions regarding the <a class="external" href="http://www.mozilla.org/hacking/committer/" title="http://www.mozilla.org/hacking/committer/">contributor form</a>. Write access to the hg repositories requires a ''voucher'', which, for the owner, will be done based on the review by Mozilla. For peers of a localization, the owner can vouch (once she or he is registered).</p>
+
+<h2 id="Pull_your_locale" name="Pull_your_locale">Sending changes to Mozilla</h2>
+
+<p>Now that you have Hg account privileges, you can send your work to Mozilla all by yourself. Here are the steps to send your L10n work using Mercurial:</p>
+
+<ol>
+ <li>Since your L10n work takes place in your own local repository, you should ensure that there are no changes made to the remote repository before committing your work. To do this, <a href="https://developer.mozilla.org/en-US/docs/Localizing_with_Mercurial#Updating_your_local_repos" title="https://developer.mozilla.org/en-US/docs/Localizing_with_Mercurial#Updating_your_local_repos">update your locale, as per the section above</a>.</li>
+ <li>After finishing a change or set of changes and checking you have updated to the latest, you should commit by entering this command:</li>
+</ol>
+
+<pre class="eval">hg commit -m "your message identifying the change (bug 555)"</pre>
+
+<p>Committing won’t send your changes to Mozilla’s repository, but prepares them for it. The next step will send your changes to your remote repo via <code>push</code>.</p>
+
+<ol start="3">
+ <li>To push to mozilla-hosted repositories, you have to have committer access, and you must edit the file <code><em>(your-local-hg-root AKA the directory you pulled your locale into)</em>/.hg/hgrc</code> (note, this is <strong>NOT</strong> your <code>~/.hgrc</code>) to add these lines (replacing ab-CD with your locale code):</li>
+</ol>
+
+<pre class="eval">[paths]
+default = https://hg.mozilla.org/l10n-central/ab-CD/
+default-push = ssh://hg.mozilla.org/l10n-central/ab-CD/
+</pre>
+
+<ol start="4">
+ <li>You’ll also need to tell ssh which account to use for your pushes, too, by editing <code>~/.ssh/config</code> and adding these lines, where <code style="font-size: 14px; color: rgb(51, 51, 51);">user@host.domain</code> is your account:</li>
+</ol>
+
+<pre>Host hg.mozilla.org
+User user@host.domain
+</pre>
+
+<ol start="5">
+ <li>Now you can push your work to the repository (and check the result on the dashboard) by entering this command from your local directory:</li>
+</ol>
+
+<pre class="eval">hg push</pre>
+
+<p id="A_.mozconfig">And tah dah! You're done! Congratulations on finishing the tutorial. Take a break and grab a snack, you deserve it</p>
diff --git a/files/de/mozilla/localization/lokalisierung_von_pontoon/index.html b/files/de/mozilla/localization/lokalisierung_von_pontoon/index.html
new file mode 100644
index 0000000000..edd35eb17e
--- /dev/null
+++ b/files/de/mozilla/localization/lokalisierung_von_pontoon/index.html
@@ -0,0 +1,135 @@
+---
+title: Lokalisierung von Pontoon
+slug: Mozilla/Localization/Lokalisierung_von_Pontoon
+translation_of: Mozilla/Localization/Localizing_with_Pontoon
+---
+<p>Lokalisierung von <a href="https://pontoon.mozilla.org" title="https://pontoon.mozilla.org">Pontoon</a> is a web-based, What-You-See-Is-What-You-Get (WYSIWYG), localization (l10n) tool. At Mozilla, we use Pontoon to localize all Mozilla products and websites, ranging from Firefox to Mozilla.org. Pontoon is a very simple and intuitive tool that requires little to no technical skill to use in the l10n workflow. Here we'll discuss how to use Pontoon to localize projects, from first sign-in to finalizing your contributions. Along the way, we'll point out some sweet features that will make you more efficient and make your l10n contributions easier.</p>
+
+<div class="note">
+<p><strong>Are you a developer?</strong> Read about <a href="/en-US/docs/Implementing_Pontoon_Mozilla">implementing Pontoon in your project</a> or learn how to get involved on <a href="https://github.com/mozilla/pontoon">GitHub</a>.</p>
+</div>
+
+<h2 id="First_steps">First steps</h2>
+
+<p><a href="https://pontoon.mozilla.org" title="https://pontoon.mozilla.org">Pontoon's home page</a> is very easy to use. To begin localizing the project, click on the Persona icon and sign in. Next, simply select the project you want to work on and your locale from the dropdown menus. Pontoon will automatically open that locale's project for you to get started. Note that for our purposes here, we'll be using <a href="https://affiliates.mozilla.org/">Firefox Affiliates</a> website to demo Pontoon's functionality and workflow. And there it is, opened inside Pontoon:</p>
+
+<p><em><img alt="Browser app and workspace" src="https://mdn.mozillademos.org/files/8323/affiliates.png" style="height: 558px;"></em></p>
+
+<h3 id="Main_toolbar">Main toolbar</h3>
+
+<p>As you can see, most of the interface is taken by the website being translated. Only the toolbar on top belongs to Pontoon, containing the following items (from left to right):</p>
+
+<p><img alt="Main toolbar" src="https://mdn.mozillademos.org/files/8325/toolbar.png"></p>
+
+<h4 id="List_of_strings">List of strings</h4>
+
+<p>Opens a sidebar with a list of all strings to localize.</p>
+
+<h4 id="Project_selector_(Affiliates)"><span id="cke_bm_939S" style="display: none;"> </span>Project selector (Affiliates)</h4>
+
+<p>Switches between projects to localize.</p>
+
+<h4 id="Resource_selector_(Homepage)"><span id="cke_bm_940S" style="display: none;"> </span>Resource selector (Homepage)</h4>
+
+<p>Switches between project resources to localize, like subpages or localization files. Hidden if no resources available for project.</p>
+
+<h4 id="sect1"><span id="cke_bm_941S" style="display: none;"> </span></h4>
+
+<dl>
+</dl>
+
+<h4 id="Locale_selector_(Slovenian)">Locale selector (Slovenian)</h4>
+
+<p>Switches between languages to localize.</p>
+
+<h4 id="Go">Go</h4>
+
+<p>Opens project-resource-locale selection.</p>
+
+<h4 id="Progress_indicator">Progress indicator</h4>
+
+<p>Displays your progress on the resource being localized. More details are available in the popup.</p>
+
+<dl>
+</dl>
+
+<h4 id="User_menu"><span id="cke_bm_943S" style="display: none;"> </span>User menu</h4>
+
+<p>Allows for user-specific tasks, like commiting to repository, downloading files and signing out.</p>
+
+<h4 id="Info_menu">Info menu</h4>
+
+<p>Gives important information, like the anticipated project timeline and a list of keyboard shortcuts.</p>
+
+<dl>
+</dl>
+
+<p>Alright, how about we do some translating now?<span id="cke_bm_608E" style="display: none;"> </span></p>
+
+<dl>
+</dl>
+
+<h2 id="Translate_strings">Translate strings</h2>
+
+<p>When using Pontoon for localization, you have a couple of options to translate your strings. You can translate in-context, out-of-context, or a combination of the two. We'll start with looking at in-context translation.</p>
+
+<h3 id="In-context">In-context</h3>
+
+<p>Pontoon's in-context translation mode is what puts it above others. It opens a web page (or web app) and enables real-time editing of that page. Here's how you translate your first string:</p>
+
+<p><img alt="In-context localization" src="https://mdn.mozillademos.org/files/8331/in-context.png"></p>
+
+<ol>
+ <li>Hover over the text you want to translate with your mouse.</li>
+ <li>An edit button appears over that text. Click on it to enable the translate mode.</li>
+ <li>Replace the original text with its translation into your language.</li>
+ <li>Click the save button to save your translation.</li>
+</ol>
+
+<div>
+<h3 id="Out-of-context">Out-of-context</h3>
+
+<p>Some strings are impossible to translate in-context, e.g. the contents of the &lt;title&gt; tag in websites and strings with placeables or different plural forms. By clicking on the hamburger icon in the main toolbar, a list of all strings and available translations will open in the sidebar. You can also use the sidebar for out-of-context localization:</p>
+
+<p><img alt="Out-of-context localization: list" src="https://mdn.mozillademos.org/files/8337/out-of-context-1.png"> <img alt="Out-of-context localization: translate" src="https://mdn.mozillademos.org/files/8335/out-of-context-2.png"></p>
+
+<ol>
+ <li>Click on the string you'd like to translate.</li>
+ <li>Translation panel with original string and its details (e.g. comments) opens.</li>
+ <li>Translate the string in the translation area below.</li>
+ <li>Click the save button to save your translation.</li>
+</ol>
+
+<p>As you translate strings out-of-context, translations will also appear in website, if they could also be translated in-context.</p>
+
+<h3 id="Translation_helpers">Translation helpers</h3>
+</div>
+
+<p>As you can see, suggestions from history, translation memory, machine translation and other locales are also available in the out-of-context translation panel. We call all of these translation helpers and here's how each of them will help you as you translate strings:</p>
+
+<p><img alt="Translation helpers: History" src="https://mdn.mozillademos.org/files/8339/helpers-history.png"> <img alt="Translation helpers: Machinery" src="https://mdn.mozillademos.org/files/8341/helpers-machinery.png"> <img alt="Translation helpers: Other locales" src="https://mdn.mozillademos.org/files/8343/helpers-locales.png"> <img alt="Translation helpers: Search" src="https://mdn.mozillademos.org/files/8345/helpers-menu.png"></p>
+
+<h4 id="History">History</h4>
+
+<p>Displays previously suggested translations, including from other users.</p>
+
+<h4 id="Machinery">Machinery</h4>
+
+<p>Displays matches from various services: internal translation memory, <a href="http://transvision.mozfr.org/">Mozilla Transvision</a>, <a href="https://amagama-live.translatehouse.org/">open source translation memory</a>, <a href="http://www.microsoft.com/Language/">Microsoft terminology</a> and <a href="http://www.bing.com/translator">machine translation</a>.</p>
+
+<h4 id="Other_locales">Other locales</h4>
+
+<p>Displays matching translations from other locales.</p>
+
+<h4 id="Search">Search</h4>
+
+<p>Almost like machinery, but takes provided keyword as input parameter instead of the original string.</p>
+
+<p>By clicking a suggestion, it gets copied into translation area.</p>
+
+<dl>
+</dl>
+
+<h2 id="Publishing_your_localization">Publishing your localization</h2>
+
+<p>Suppose you now want to publish your l10n work by committing it to a repo. Pontoon lets you do that too! Actually, it does that for you by automatically syncing with repositories on hourly basis. You can now pat yourself on the back, do a little dance, go to sleep or do something else to celebrate your work!</p>
diff --git a/files/de/mozilla/localization/lokalisierung_von_xliff-dateien/index.html b/files/de/mozilla/localization/lokalisierung_von_xliff-dateien/index.html
new file mode 100644
index 0000000000..b11efae69b
--- /dev/null
+++ b/files/de/mozilla/localization/lokalisierung_von_xliff-dateien/index.html
@@ -0,0 +1,59 @@
+---
+title: Lokalisierung von XLIFF-Dateien für iOS
+slug: Mozilla/Localization/Lokalisierung_von_XLIFF-Dateien
+translation_of: Mozilla/Localization/Localizing_XLIFF_files
+---
+<p>Firefox für iOS verwendet das XML-basierte Dateiformat XLIFF zur Speicherung und Weitergabe von Lokalisierungsdaten. <a href="https://www.oasis-open.org/committees/xliff/">XLIFF (eXtensible Localisation Interchange File Format)</a> ist ein Lokaliserungsstandard, der von der Normungsorganisation OASIS verwaltet wird. Ziel dieses Standards ist ein XML-basiertes Dateiformat, das ohne das Risiko von Datenverlust oder -beschädigung zum Austausch von Lokaliserungsdaten zwischen verschiedenen Tools verwendet werden kann. Die meisten Übersetzungstools unterstützen den XLIFF-Standard, sodass die Lokalisierung von XLIFF-Dateien für Firefox für iOS einfach mit diesen Tools erfolgen kann. Die direkte Bearbeitung einer XLIFF-Datei ist recht simpel, besonders wenn man sich mit XML auskennt. Dieses Tutorial wird Schritt für Schritt zeigen wie Strings in einer XLIFF-Datei übersetzt werden. </p>
+
+<h3 id="String-Repository_für_Firefox_auf_iOS">String-Repository für Firefox auf iOS</h3>
+
+<p>Die Datei firefox-ios.xliff befindet sich im SVN.</p>
+
+<ol>
+ <li>Entscheiden Sie, wo auf Ihrem lokalen Computer Sie die Kopie aus dem github-Repository speichern möchten und navigieren Sie im Terminal dorthin.</li>
+ <li>Geben Sie folgenden Befehl ein: <code>git clone </code>https://github.com/mozilla-l10n/firefoxios-l10n<code>/your-locale-code/</code></li>
+ <li>Das Projekt firefox-os sollte sich nun zusammen mit der Datei <code>firefox-ios.xliff </code>in dem von Ihnen gewählten Ordner befinden.</li>
+</ol>
+
+<h3 id="Übersetzen_der_XLIFF-Datei">Übersetzen der XLIFF-Datei</h3>
+
+<ol>
+ <li>Öffnen Sie die Datei firefox-ios.xliff in einem Texteditor Ihrer Wahl.</li>
+ <li>Fügen Sie im <code>&lt;file&gt;</code>-Tag das Attribut <code>target-language</code> mit dem Code Ihrer Locale als Wert hinzu (z. B. <code>target-language="xx-XX"</code>). Beachten Sie, dass es innerhalb eines XLIFF-Dokuments viele <code>&lt;file&gt;</code>-Tags geben kann. Jedes <code>&lt;file&gt;</code>-Tag muss das Attribut <code>target-language</code> mit dem Code Ihrer Locale als Wert enthalten (z. B. <code>target-language="xx-XX"</code>).</li>
+ <li>Strings befinden sich zwischen <code>&lt;trans-unit&gt;</code>-Tags. Englische Quell-Strings befinden sich zwischen den Child-Tags <code>&lt;source&gt;</code>. Nachfolgend ein Beispiel einer solchen <code>&lt;trans-unit&gt;</code>.
+ <pre>&lt;trans-unit id="Add to Bookmarks"&gt;
+ &lt;source&gt;Add to Bookmarks&lt;/source&gt;
+&lt;/trans-unit&gt;</pre>
+ </li>
+ <li>Ihre Übersetzung muss sich zwischen den Child-Tags <code>&lt;target&gt;</code> befinden. Gehen Sie die gesamte XLIFF-Datei durch und fügen Sie unter jedem <code>&lt;source&gt;</code>-Tag das Tagpaar <code>&lt;target&gt;&lt;/target&gt;</code> hinzu. Dies wird Ihnen helfen, die Strings auszumachen, die übersetzt werden müssen. Das Tagpaar <code>&lt;source&gt;</code> darf nicht gelöscht werden.
+ <pre>&lt;trans-unit id="Add to Bookmarks"&gt;
+ &lt;source&gt;Add to Bookmarks&lt;/source&gt;
+ &lt;target&gt;YOUR_TRANSLATION_HERE&lt;/target&gt;
+&lt;/trans-unit&gt;
+</pre>
+ </li>
+ <li>Fügen Sie die Übersetzungen der Strings zwischen den <code>&lt;source&gt;</code>-Tags zwischen die <code>&lt;target&gt;</code>-Tags darunter ein. Bitte beachten Sie, dass folgende Zeichenfolgen nicht übersetzt werden dürfen.
+ <ol>
+ <li><code>$(SOME_TEXT_HERE)</code> ein Variablenformat,</li>
+ <li><code>%1$@</code> ist ein weiteres Variablenformat.</li>
+ <li>&lt;note&gt;-Tags beinhalten Hinweise der Entwickler zur Lokalisierung und sollten nicht übersetzt werden. </li>
+ </ol>
+
+ <pre>&lt;trans-unit id="Add to Bookmarks"&gt;
+ &lt;source&gt;Add to Bookmarks&lt;/source&gt;
+ &lt;target&gt;Agregar a marcadores&lt;/target&gt;
+ &lt;note&gt;No comment provided by engineer.&lt;/note&gt;
+&lt;/trans-unit&gt;
+</pre>
+ </li>
+ <li>Speichern Sie Ihre Übersetzungen regelmäßig.</li>
+ <li>Wenn Sie mit Ihrer Übersetzung fertig sind, ist es wichtig sicherzustellen, dass der XML-Code in der XLIFF-Datei valide ist (z. B. keine beschädigten Tagpaare enthält). Öffnen Sie die Datei in Firefoy, um eine Validitätsprüfung auszuführen und verbessern Sie alle Fehler, die gemeldet werden. </li>
+</ol>
+
+<h3 id="Hochladen_der_XLIFF-Datei">Hochladen der XLIFF-Datei</h3>
+
+<ol>
+ <li>Laden Sie mit dem folgenden Befehl die übersetzte XLIFF-Datei in das Verzeichnis Ihrer Locale hoch: <code>git commit -m "Commit message here"</code> .</li>
+ <li>Speichern Sie Ihre Version im github-Repository: <code>git push</code></li>
+ <li>Legen Sie die Füße hoch, gönnen Sie sich ein Bier (oder eine Limo) und seien Sie stolz darauf etwas Neues, Anderes und Aufregendes gemacht zu haben! </li>
+</ol>
diff --git a/files/de/mozilla/localization/programmübersetungen_mit_mercurial/index.html b/files/de/mozilla/localization/programmübersetungen_mit_mercurial/index.html
new file mode 100644
index 0000000000..f2dd7ac06d
--- /dev/null
+++ b/files/de/mozilla/localization/programmübersetungen_mit_mercurial/index.html
@@ -0,0 +1,284 @@
+---
+title: Programmübersetzungen mit Mercurial
+slug: Mozilla/Localization/Programmübersetungen_mit_Mercurial
+translation_of: Mozilla/Localization/Application_Translation_with_Mercurial
+---
+<h4 id="draft">{{draft}}</h4>
+
+<h2 id="Herausfinden_wo_Übersetzungen_fehlen">Herausfinden, wo Übersetzungen fehlen</h2>
+
+<ol>
+ <li>Herausfinden, für welche Ableger der Mozilla-Familie noch Übersetzungen fehlen. Dazu sollte die Übersetzungsseite des verantwortlichen Sprachteams gelesen werden (dazu <a href="https://l10n.mozilla.org/teams/">hier</a> den richtigen <a href="https://en.wikipedia.org/wiki/Language_code">Sprachcode</a> - z. B. "de" für Deutsch - anklicken). Das Lokalisationstem kennt die Ableger. Der <strong>Standard-Lokalisationsableger</strong> ist <strong>aurora</strong>.</li>
+ <li>Als nächstes muss überprüft werden, was noch unübersetzt ist, dazu zur <a href="https://l10n.mozilla.org/teams/">Lokalisations-Statusseite</a> gehen und die Seite der Zielsprache aufrufen.</li>
+ <li>Im Abschnitt "Applications &amp; Sign-offs" befinden sich verschiedene Produkte und deren Ableger, die noch nicht fertig übersetzt sind.
+ <ul>
+ <li>gaia-* bezeichnet Ableger von <a href="http://www.mozilla.org/en-US/firefox/os/">Firefox OS</a>, dem Betriebssystem für Mobilgeräte.</li>
+ <li>Firefox und fx-* beueichnen Ableger vom <a href="http://www.mozilla.org/firefox">Desktop-Firefox</a>, dem Browser für PCs und Laptops auf Windows, Mac OS oder Linux.</li>
+ <li>Fennec und fennec-* bezeichnen Ableger vom <a href="http://www.mozilla.org/en-US/firefox/fx/">mobilen Firefox</a>, dem Firefoxbrowser für Android.</li>
+ <li>Thunderbird und tb-* bezeichen Ableger von <a href="http://www.mozilla.org/thunderbird">Thunderbird</a>, dem E-Mail-Programm, Newsgroup- und Feedreader und Chatprogramm. Die Lokalisation des <a href="https://www.mozilla.org/en-US/projects/calendar/">Lightning Kalendar Add-Ons </a>findet auch hier statt.</li>
+ <li>SeaMonkey und sea-* bezeichnen Ableger von <a href="http://www.seamonkey-project.org/">SeaMonkey</a>, der All-in-One Internetsuite, die Browser, E-Mail- und Chatprogramm und mehr enthält.</li>
+ <li>Lightning und cal-* bezeichnen Ableger von Lightning, dem Kalender Add-On für Thunderbird. Die Lokalisation von Lightning findet inzwischen in Thunderbirds tb-*-Teil statt, der cal-*-Bereich wird nicht länger verwendet.</li>
+ </ul>
+ </li>
+ <li>In diesem Beispiel soll der Aurora-Ableger des Desktop-Firefox übersetzt werden. Deshalb zu<strong> fx_aurora</strong> scrollen.</li>
+ <li>Der Text daneben zeigt den Übersetzungsstatus an.
+ <ul>
+ <li>Wenn dort '<strong>Translated</strong>' steht, ist der Ableger schon fertig übersetzt. Nun können Sie entweder ein anderes Produkt übersetzen oder jemanden von der Lokalisationsseite (siehe oben) kontaktieren, damit er Sie informieren kann, wenn neue unübersetzte Texte vorhanden sind.</li>
+ <li>Wenn es ein roter Text ist, der aus einer <strong>Nummer</strong> und dem Wort '<strong>missing</strong>' besteht, sind unübersetzte Texte vorhanden und die Anleitung kann weiter ausgeführt werden.<br>
+  </li>
+ </ul>
+ </li>
+</ol>
+
+<h2 id="Required_Tools">Required Tools</h2>
+
+<h4 id="Build_pre-requisites">Build pre-requisites</h4>
+
+<p>First, get the required programs to compile Mozilla applications like Firefox and Thunderbird from <a href="/en-US/docs/Developer_Guide/Build_Instructions">Build Instructions</a>. This is only necessary once.</p>
+
+<div class="note">
+<p>Install MozillaBuild 1.9.0pre from <a href="https://groups.google.com/forum/#!topic/mozilla.dev.platform/aIFUKRrb3IY">https://groups.google.com/forum/#!topic/mozilla.dev.platform/aIFUKRrb3IY</a></p>
+</div>
+
+<div class="warning">
+<p>MozillaBuild must be installed into an absolute file path without whitespaces, else it will break.</p>
+</div>
+
+<h4 id="File_comparison_program">File comparison program</h4>
+
+<p>For the translation, it is recommend to use file comparison program to compare the English file (containing the new texts) with the file of your locale (which is still missing the new strings). This example uses <a href="http://winmerge.org/">WinMerge</a>: Download and install it. A comparison of alternatives (e.g. for Linux and Mac OS) is available on <a href="https://en.wikipedia.org/wiki/Comparison_of_file_comparison_tools">Wikipedia</a>.</p>
+
+<h4 id="File_and_text_editor">File and text editor</h4>
+
+<p>For editing individual files a text editor can be a better choice than a file comparion program, e.g. because the file is new and everything has to be translated, the file is too customized to compare it to the English one, or special functionality is required (e.g. bookmarking untranslated lines). Use a text editor you are comfortable with. This example uses <a href="http://notepad-plus-plus.org/">Notepad++</a>.</p>
+
+<h4 id="Progress_tracking_tool">Progress tracking tool</h4>
+
+<p>To track which strings and files already have been translated and later also to see which new strings have already been tested in the product as being a good translation for the functionality behind the translated strings and that the translated texts fit into the available, the translation progress should be tracked. This can be done in a text editor or word processor or any other tool in which you can attach different kind of states to the individual texts to translate. The Firefox extension <a href="https://addons.mozilla.org/firefox/addon/scrapbook/">Scrapbook</a> is used in this guide. Install it into your default Firefox profile (you will have more than one profile when following this guide).</p>
+
+<h2 id="Getting_the_current_Texts_in_English_and_your_Locale">Getting the current Texts in English and your Locale</h2>
+
+<h4 id="Obtaining_the_English_texts_with_the_source_code">Obtaining the English texts with the source code</h4>
+
+<p>Get the source code by downloading the following file:</p>
+
+<ul>
+ <li><strong>Firefox Desktop</strong> or <strong>Firefox for Android</strong>: Download the <strong>mozilla-&lt;branch&gt;.hg</strong> file (e.g. mozilla-aurora.hg) from <a href="https://ftp.mozilla.org/pub/mozilla.org/firefox/bundles/">https://ftp.mozilla.org/pub/mozilla.org/firefox/bundles/</a> The file is not small, but after initially downloading it, you only need to download the latest changes in the future.</li>
+ <li><strong>Thunderbird</strong>, <strong>Lightning</strong> or <strong>SeaMonkey</strong>: Download the <strong>comm-&lt;branch&gt;.hg</strong> file (e.g. comm-aurora.hg) from <a href="http://ftp.mozilla.org/pub/mozilla.org/thunderbird/bundles/">https://ftp.mozilla.org/pub/mozilla.org/thunderbird/bundles/</a></li>
+</ul>
+
+<p>In the next step, we will unpack the source code:</p>
+
+<ol>
+ <li>Open an input shell, e.g. by pressing the Windows key and R on the keyboard <img alt="Screenshot of Windows key + R key" src="https://mdn.mozillademos.org/files/7211/windows%20key%20plus%20r.png" style="width: 82px; height: 30px;"> or by calling the "<code>Run...</code>" command from the Windows "Start" button, and then typing <code><strong>cmd</strong></code> and pressing the Enter key.</li>
+ <li>Launch the installed MozillaBuild toolset by launching it with its path, e.g. <code>C:\Mozilla\Coding\Buildtools\MozillaBuild\start-shell-msvc2010.bat</code> You can autocomplete the file path after typing a few characters and then pressing the Tabulator key.<br>
+ If you launch the start-shell-l10n.bat, compiling features will be disabled. You can create translation patches, but creating language packs for the application, binary repacks of the application (changing the localization of the program), and compiling the application likely won't work.</li>
+ <li>You are now in the Mozilla development environment which emulates a Linux environment. Now go to the directory where you want to put the source code. It's highly recommended to put it onto the fastest hard drive in the device. File paths here work starting with a slash (/) followed by the drive letter, and then the directory structure like on Windows, but using slashes (/) instead of backslashes (\). So let's go to C:\Mozilla by typing<br>
+ <code>cd /c/Mozilla/</code></li>
+ <li>Create a new directory for the source code:<br>
+ <code>mkdir mozilla-aurora</code></li>
+ <li>Initialize the new directory as new repository:<br>
+ <code>hg init mozilla-aurora</code></li>
+ <li>Go into the new directory:<br>
+ <code>cd mozilla-aurora</code></li>
+ <li>Unpack the source code:<br>
+ <code>hg unbundle /path/to/the/downloaded/mozilla-aurora.hg</code><br>
+ This can take some time, mostly depending on the performance of the hard drive.</li>
+</ol>
+
+<h4 id="Obtaining_the_texts_of_your_localization">Obtaining the texts of your localization</h4>
+
+<ol>
+ <li>Go back to the parent folder of <code>mozilla-aurora</code>:<br>
+ <code>cd ..</code></li>
+ <li>Find the localization repository for your branch and language on <a href="http://hg.mozilla.org/">http://hg.mozilla.org/</a> E.g. for aurora and German (language code 'de'), it is <code>http://hg.mozilla.org/releases/l10n/mozilla-aurora/de/</code> Copy that url to the clipboard.</li>
+ <li>Copy the repository to your computer by running the following command:<br>
+ <code>hg clone http://hg.mozilla.org/releases/l10n/mozilla-aurora/de/ de-mozilla-aurora</code><br>
+ This should proceed pretty fast.<br>
+ On Windows, you can paste the url by calling the Paste command from the window menu in the upper left corner of the window.</li>
+</ol>
+
+<h2 id="Configuring_your_Mercurial_user_settings">Configuring your Mercurial user settings</h2>
+
+<p>Still in the command prompt, go to your home directory in the file system, e.g. for a Windows user, it looks like C:\Users\MyName , depending on your Windows version:</p>
+
+<p><code>cd /c/Users/MyName</code></p>
+
+<p>Now list all the files here:</p>
+
+<p><code>ls -l</code></p>
+
+<p>If there is no file called <code>.hgrc</code> , create it with</p>
+
+<p><code>&gt; .hgrc</code></p>
+
+<p>This file stores your general Mercurial settings (Mercurial is the tool which manages the source code and its history of changes).</p>
+
+<p>Now go in the file system to the file and open it in your favorite text editor. Windows users can use e.g. <a href="http://notepad-plus-plus.org/">Notepad++</a>.</p>
+
+<p>Paste the following content into the file:</p>
+
+<pre>[ui]
+username = Firstname Lastname &lt;mynick@example.com&gt;
+merge = internal:merge
+
+[alias]
+qexport = export -g -r qtip
+qexportall = diff -r qparent
+
+[defaults]
+commit = -v
+diff = -p -U 8
+qdiff = -p -U 8
+qnew = -U
+
+[diff]
+git = 1
+showfunc = 1
+unified = 8
+
+[extensions]
+hgext.mq =
+progress =
+
+[hooks]
+
+</pre>
+
+<p>Put in your name and email address which later will be public on the internet after your translation patch got accepted and uploaded. Save the file and close it.</p>
+
+<h2 id="Enabling_Mercurial_queues_(revertable_patches)">Enabling Mercurial queues (revertable patches)</h2>
+
+<p>Some time will pass between the moment in which you start the localization, finish it, test it, improve it, upload it for review and get review (maybe not approved on first try). Other localizers will likely have done changes to the translation, either adding new texts, removing obsolete ones or improving the current texts. This can cause conflicts between the changes you created and theirs. For this reason, updating patches kann be necessary so Mercurial is still able to find the lines in the files which it has to replace or where it has to add them. <a href="/en-US/docs/Mercurial_Queues">Mercurial queues</a> allow to revert changes and also pull changes and reapply your local changes.</p>
+
+<p>Go back to the localization directory:</p>
+
+<p><code>cd /c/Mozilla/de-mozilla-aurora</code></p>
+
+<p>Initiate Mercurial queues:</p>
+
+<p><code>hg qinit</code></p>
+
+<h2 id="Get_to_know_the_translation_style">Get to know the translation style</h2>
+
+<p>For having good chances that the translation suggestions get accepted, they should match the translation style of the texts in the application already translated. In general, the labels in the applications should have the same style like the operating system, e.g. use the same order of subject, verb and objects; decline verbs or not like the operating system does.</p>
+
+<p>The following resources can help figuring out the translation style and translate according to them:</p>
+
+<ul>
+ <li><a href="https://l10n.mozilla.org/teams/">Check your localization team's page</a> by clicking on the team with your <a href="https://en.wikipedia.org/wiki/Language_code">language code</a> (e.g. "de" for German) for a style guide (e.g. <a href="https://wiki.mozilla.org/L10n:Teams:de/Leitfaden_%C3%9Cbersetzung">style guide</a> for German).</li>
+ <li><a href="http://transvision.mozfr.org/">Transvision</a> offers searching for texts and text ids ("entities" or "keys"), allowing to quickly find translations for already translated texts.</li>
+ <li><a href="http://www.microsoft.com/language/de-de/default.aspx">Microsoft's terminology search</a> allows fast lookups of localized technical terms.</li>
+</ul>
+
+<h2 id="Choosing_what_to_translate">Choosing what to translate</h2>
+
+<p>Go to the <a href="https://l10n.mozilla.org/teams/">Localization status page</a> and click on the '&lt;number&gt; missing' label of the Firefox branch on which you want to translate, e.g. <strong>fx_aurora</strong>. The page which opens has a bar holding information about how many texts (strings) have already been translated, how many there are in English and your locale and have the same text, and how many are missing in your local. The interesting part follows below as list of missing texts.</p>
+
+<p><img alt="unchanged localization report" src="https://mdn.mozillademos.org/files/7303/mozilla%20-%20localization%20report%20-%20new.png" style="width: 483px; height: 396px;"></p>
+
+<p>The first line shows the locale for which the texts are bing translated (in this example: de - German). With the second line start the file paths of the files which require changes. The file paths follow the directory structure of the locale repository downloaded for translation. In this example, the file aboutDialog can be found in the folder browser/chrome/browser/. The text striked through are texts which have been removed in the English version and can also be removed from the locale being worked on. In this example we will translate the one new text with the id <strong>privatebrowsingpage.howToStart4</strong> in the file <strong>aboutPrivateBrowsing.dtd</strong>.</p>
+
+<p>Tips for finding files with usually easily translateable texts:</p>
+
+<ul>
+ <li>Look for files in browser/chrome/browser/</li>
+ <li>Look for a file with only a few changes</li>
+ <li>Suggestions
+ <ul>
+ <li>Files starting with <strong>about</strong>...</li>
+ <li>Files in the <strong>preferences</strong> directory (browser/chrome/browser/preferences/)</li>
+ <li>The <strong>browser.dtd</strong> and <strong>browser.properties</strong> files if there aren't too many new strings.</li>
+ </ul>
+ </li>
+</ul>
+
+<h2 id="Tracking_the_translation_progress">Tracking the translation progress</h2>
+
+<p>If you translate more than a few strings, you usually want to keep track of what has already been translated (and later if the text has been tested in the product as fitting into the available area and suiting the functionality it describes). This guide achieves this with the Firefox extension <a href="https://addons.mozilla.org/firefox/addon/scrapbook/">Scrapbook</a>.</p>
+
+<ol>
+ <li>You installed Scrapbook earlier, now open it in Firefox either by calling it from the Firefox menu bar (press the Alt key to show it if necessary) using "View" &gt; "Sidebar" &gt; "Scrapbook" or by clicking its toolbar button which you likely have to add by toolbar customization if you didn't do this before.</li>
+ <li>Drag the tab with the localization error showing missing and obsolete strings to the sidebar.</li>
+ <li>After Scrapbook has saved the web page to your local disk, click with the right mouse button on the page in the sidebar and choose "Properties" from the context menu which gets opened. Rename it something meaningful, e.g. "Firefox &lt;version number&gt; translation".</li>
+ <li>After you saved the dialog, click with the left mouse button on the page in the sidebar to open the locally saved copy.</li>
+</ol>
+
+<h2 id="Opening_English_files_and_the_target_locale_side-by-side">Opening English files and the target locale side-by-side</h2>
+
+<p>The localization report shows the IDs of added or removed texts, but the English text itself is still unknown. We get this by comparing the English version of the file with the one of the locale we are translating in. To do so,</p>
+
+<ol>
+ <li>Launch WinMerge.</li>
+ <li>From its "File" menu, choose "Save project".</li>
+ <li>For the file path of the left directory, go to the downloaded <code>mozilla-aurora</code> source code and then into its <strong><code>browser/locales/en-US/</code></strong> folder. In this example, the absolute file path is <code>C:\Mozilla\mozilla-aurora\browser\locales\en-US</code>.</li>
+ <li>Enable read-only mode for the left directory.</li>
+ <li>For the file path of the right directory, go to the downloaded translation directory <code>de-mozilla-aurora</code> and then into its <code>browser</code> folder. In this example, the absolute file path is <code>C:\Mozilla\de-mozilla-aurora\browser</code>.</li>
+ <li>Save this comparison as project so you can easily relaunch this comparision without selecting the directories again. A good name is e.g. <code>translation-mozilla-aurora-browser.winmerge</code></li>
+ <li>Open the comparison you just saved.</li>
+</ol>
+
+<h2 id="The_translation">The translation</h2>
+
+<ol>
+ <li>
+ <p>Bring the console with Mercurial to the front.</p>
+ </li>
+ <li>
+ <p class="brush: bash">Start tracking changes you make against the localization repository by telling it that with the <strong><code>qnew</code></strong> subcommand to save these changes as patch in a mercurial queue. This patch needs a name, choose something meaning full like "<code>Firefox-&lt;version number&gt;-more-details</code>". In this example, <code>Firefox-29-aboutPrivateBrowsing</code> will be used.<br>
+ <code>hg qnew Firefox-29-aboutPrivateBrowsing</code></p>
+ </li>
+ <li>Switch back to WinMerge and navigate to <code>browser/chrome/browser/</code> and open the <code>aboutPrivateBrowsing.dtd</code> file. You will see something like this:<br>
+ <img alt="single file comparision in WinMerge without changes by the user" src="https://mdn.mozillademos.org/files/7305/mozilla%20-%20compare%20-%20unchanged.png"><br>
+ On the left, you see an overview of the comparison of the English and the non-English file. Gray parts indicate blocks of texts which can't be found in that file, dark yellow represents changed lines and light yellow the parts of text in it which is different.</li>
+ <li>Below the license header which should never changed, the texts are organized in the following format:<br>
+ <code>&lt;!ENTITY stringid "Text which will be shown in Firefox"&gt;</code></li>
+ <li>As you can see there is a bigger block of text not recognized. This is due to the texts which have in the English versionmoved from below the string with the id <code>privatebrowsingpage.howToStart3</code> to a position above it. Cut and paste these strings in the localized file so their position corresponds to the on in the English file.</li>
+ <li>Press the F5 key or click the reload button in WinMerge's toolbar to re-compare the files.</li>
+ <li>Now copy the empty lines below <code>privatebrowsingpage.learnMore</code> and the line <code>&lt;!-- TO BE REMOVED POST-AUSTRALIS --&gt;</code> to the localized file. This text is a comment (which in .dtd files always can be found between <code>&lt;!--</code> and <code>--&gt;</code>). There is no need to translate this text.</li>
+ <li>Now we copy the two missing lines from the English file and insert them in the localized file:<br>
+ <code>&lt;!-- LOCALIZATION NOTE (privatebrowsingpage.howToStart4): please leave &amp;newPrivateWindow.label; intact in the translation --&gt;<br>
+ &lt;!ENTITY privatebrowsingpage.howToStart4               "To start Private Browsing, you can also select &amp;newPrivateWindow.label; from the menu."&gt;</code><br>
+ The first line is a comment providing information on the localization of the text in the following line. <code>&amp;newPrivateWindow.label;</code> has to be left unchanged so it can be replaced with the text of the string id <code>&amp;newPrivateWindow.label;</code> whis is stored elsewhere<code>.</code></li>
+ <li><strong>Translation time</strong>: Translate the text. Afterwars, the line should look somehow like this:<br>
+ <code>&lt;!ENTITY privatebrowsingpage.howToStart4               "Der private Modus kann auch über den Menü-Eintrag &amp;newPrivateWindow.label; gestartet werden."&gt;</code></li>
+ <li>Save the file.</li>
+</ol>
+
+<h2 id="Exporting_the_changes_as_patch">Exporting the changes as patch</h2>
+
+<p>A patch is a file containing recorded changes to a repository. It can be used to apply these changes to a copy of the repository yet without these changes.</p>
+
+<ol>
+ <li>Tell Mercurial to store the changes in the Mercurial queue with the <code>qref</code> command. We also create a commit message which will describe the changes in the patch and later get used when the patched gets checked in ('added') to the official repository with the localized files. For the commit message, we have to use the <code>-m</code> command line flag,<br>
+ <code>hg qref -m "Firefox 29: Localize missing string in aboutPrivateBrowsing.dtd"</code><br>
+ You can change the commit message in the Mercurial queue every time by calling <code>hg qref</code> again.</li>
+ <li>Now export the patch to the file system using the <code>qexport</code> command which is defined in the <code>.hgrc</code> file (see above):<br>
+ <code>hg qexport &gt; ../firefox-29-aboutPrivateBrowsing-v1.patch</code><br>
+ This creates a patch file called <code>firefox-29-aboutPrivateBrowsing-v1.patch</code> containing the changes in the parent directory of <code>de-mozilla-aurora</code> (in this example: <code>C:\Mozilla\</code>).</li>
+</ol>
+
+<h2 id="Proof-reading_and_altering_the_patch">Proof-reading and altering the patch</h2>
+
+<p>Now proof-read the patch. This detects often more than 90 percent of the possible reasons for the reviewer to not accept the patch. If you find that changes have to be done, edit the real aboutPrivateBrowsing.dtd file from the localization repository, save it and follow the steps from Exporting the changes as patch (see above).</p>
+
+<h2 id="Validating_the_translation_in_the_product">Validating the translation in the product</h2>
+
+<p>This guide hasn't yet a section about the validation of the translation. Please follow the instructions from the <a href="https://developer.mozilla.org/en-US/docs/Mozilla/Localization/Quick_start_guide/QA_phase">QA phase section of the Localization quick start guide</a>.</p>
+
+<h2 id="Submitting_the_patch_for_review">Submitting the patch for review</h2>
+
+<p>Now the patch has to be shared so the people currently trusted to change the official translation can review the suggested changes.</p>
+
+<ol>
+ <li>File a <a href="https://bugzilla.mozilla.org/enter_bug.cgi?product=Mozilla%20Localizations">bug ("ticket") in the Mozilla Localization product</a> and choose as component the localization for which you have translated.</li>
+ <li>Choose a meaningful bug summary which will be shown for searches etc. like in this example "Firefox 29: aboutPrivateBrowsing.dtd"</li>
+ <li>Fill any important and additional information into the description field.</li>
+ <li>Click the 'Add attachment' button.</li>
+ <li>Select the exported patch file with the file picker. The checkbox for 'patch' should get automatically checked.</li>
+ <li>Add a meaningful name for the attachment, e.g. aboutPrivateBrowsing.dtd, patch, v1</li>
+ <li>Go to the review 'Flags' category and set the one for <strong>review</strong> to <strong>?</strong>, meaning that you request review for the patch.</li>
+ <li>In the text field next to it, add the mail address of the person leading the translation of the locale. This information can be found on the <a href="https://l10n.mozilla.org/teams/">page of the localization team</a>.</li>
+ <li>Submit the bug report.</li>
+ <li>Now you have to wait for the review of that person. This can happen on the same day, on the next weekend or later, but should happen in the timeframe given for the localization of aurora. If the person requests changes, follow the instructions under <strong>Proof-reading and altering the patch</strong>. If the reviewer accepts the changes, the patch will get uploaded and your translation will officially be added to Firefox.</li>
+</ol>
diff --git a/files/de/mozilla/mathml_project/index.html b/files/de/mozilla/mathml_project/index.html
new file mode 100644
index 0000000000..b1f0bf57d0
--- /dev/null
+++ b/files/de/mozilla/mathml_project/index.html
@@ -0,0 +1,72 @@
+---
+title: Mozilla MathML Project
+slug: Mozilla/MathML_Project
+tags:
+ - MathML
+ - MathML Project
+ - TopicStub
+translation_of: Mozilla/MathML_Project
+---
+<p>Das Mozilla MathML Project ist Mozillas Projekt, um <a href="/en-US/docs/Web/MathML" title="/en-US/docs/Web/MathML">MathML</a>-Unterstützung mit Firefox und anderen Mozilla-basierten Applikationen zu erstellen und zu verbessern. Für einen schnellen Überblick, sehen Sie die <a href="https://fred-wang.github.io/MozSummitMathML/index.html">Aufgaben für die Entwickler bei Mozilla Summit 2013</a>.</p>
+
+<h2 id="Updates">Updates</h2>
+
+<p><img alt="Mathzilla" class="default internal" src="https://mdn.mozillademos.org/files/6281/mathzilla.svg" style="float: right; height: 150px; width: 150px;"></p>
+
+<ul>
+ <li><a href="/docs/Mozilla/MathML_Project/Status" title="Mozilla MathML Project/Status">Status von jedem Tag</a></li>
+ <li><a href="/docs/Mozilla/MathML_Project/MathML3Testsuite" title="Mozilla MathML Project/MathML3Testsuite">Resultat von der MathML 3 Testsuite</a></li>
+ <li><a class="external" href="https://www.wg9s.com/mozilla/firefox/">Unoffizielle nächtliche Gebilde mit MathML Patches</a> (maintained by Bill Gianopoulos)</li>
+ <li><a href="/docs/Mozilla/MathML_Project/Updates" title="Mozilla_MathML_Project/Updates">Mehr Inhalt und archivierter Inhalt</a></li>
+</ul>
+
+<h2 id="Community">Community</h2>
+
+<ul>
+ <li>Die Forma von Mozilla anschauen... {{DiscussionList("dev-tech-mathml", "mozilla.dev.tech.mathml")}}</li>
+ <li><a class="link-irc" href="irc://irc.mozilla.org/%23mathml" rel="external" title="irc://irc.mozilla.org/%23mathml">IRC channel</a></li>
+ <li><a class="link-https" href="https://wiki.mozilla.org/MathML:Home_Page">Wiki, welches von den Entwicklern benutzt wird</a> - schauen Sie sich die letzten Entwickelungen an und helfen Sie uns, MathML in Mozilla zu verbessern.</li>
+</ul>
+
+<h2 id="Links">Links</h2>
+
+<ul>
+ <li><a href="/docs/Mozilla/MathML_Project/Fonts" title="Mozilla MathML Project/Fonts">Fonts für Mozillas MathML - Engine</a> installieren</li>
+ <li><a class="external" href="https://www.w3.org/TR/MathML3/">MathML Version 3.0</a> - W3C Recommendation, 21 October 2010</li>
+ <li><a class="external" href="https://www.w3.org/Math/testsuite/"><abbr>W3C</abbr> <abbr>MathML</abbr> Test Suite</a> - Wurde erstellt, um die Implementation von jedem Element einem Attribut (oder eingebautem Rendering-Verhalten) bei der Zeit in einer ziemlich gründlichen Weise zu überprüfen.</li>
+ <li><a href="/docs/Web/MathML" title="MathML">MathML im Mozilla Developer Network</a></li>
+ <li><a href="/en-US/docs/Mozilla/MathML_Project/a11y">MathML - Zugänglichkeit in Mozilla</a></li>
+</ul>
+
+<h3 id="Beispiel-MathML-Dokumente">Beispiel-<abbr>MathML</abbr>-Dokumente</h3>
+
+<ul>
+ <li><a href="/docs/Mozilla/MathML_Project/Screenshots" title="Mozilla MathML Project/Screenshots">Screenshots</a></li>
+ <li><a href="/de/docs/Mozilla/MathML_Project/Start" title="Mozilla_MathML_Project/Start"><abbr>MathML</abbr> Startseite</a> - mit Übersetzungen in verschiedene Sprachen ( <a href="/ar/docs/Mozilla_MathML_Project/Start" title="/ar/Mozilla_MathML_Project/Start">Arabisch</a>, <a href="/zh-CN/docs/Mozilla_MathML_Project/Start" title="/zh-CN/Mozilla_MathML_Project/Start">Chinesisch</a>, <a href="/he/docs/Mozilla_MathML_Project/Start" title="/he/Mozilla_MathML_Project/Start">Hebräisch</a>, <a href="/th/docs/Mozilla_MathML_Project/Start" title="/th/Mozilla_MathML_Project/Start">Thai</a>)</li>
+ <li><a class="external" href="/docs/Mozilla/MathML_Project/Basics">MathML Basics</a> - Dokument zugeschnitten, mit nur dem Symbol Font, welcher auf den meisten OS-Konfigurationen vorinstalliert ist, richtig angezeigt zu werden.</li>
+ <li><a class="external" href="/de/docs/Mozilla/MathML_Project/MathML_Torture_Test"><abbr>MathML</abbr> Torture Test</a> - Test zum Vergleich von dem MathML - Rendering und TeX.</li>
+ <li>Demo von einigen MathML - Tags: <a class="external" href="/docs/Mozilla/MathML_Project/mfrac">mfrac</a>, <a class="external" href="/docs/Mozilla/MathML_Project/mo">mo</a>, <a class="external" href="/docs/Mozilla/MathML_Project/mtable">mtable</a>, <a class="external" href="/docs/Mozilla/MathML_Project/mspace">mspace</a>, <a class="external" href="/docs/Mozilla/MathML_Project/mmultiscripts">mmultiscripts</a>, <a class="external" href="/docs/Mozilla/MathML_Project/roots">msqrt-mroot</a>.</li>
+ <li><a class="external" href="/docs/Mozilla/MathML_Project/Extras">MathML Extras</a> - Technologiedemonstration von einigen interessanten Erscheinungen vor der Unterstützung des Browsers.</li>
+ <li><a href="/docs/Mozilla/MathML_Project/Various" title="Mozilla_MathML_Project/Various">Verschiedene MathML-Tests</a> - Diese Seiten wurden von <code>layout/mathml/tests/</code> importiert.</li>
+ <li><a class="external" href="https://golem.ph.utexas.edu/~distler/blog/archives/000104.html">Blog</a> mit Kommentaren, welche MathML enthalten.</li>
+</ul>
+
+<h3 id="MathML_Dokumente_erstellen"><abbr>MathML</abbr> Dokumente erstellen</h3>
+
+<ul>
+ <li><a href="/docs/Web/MathML/Authoring" title="Mozilla MathML Project/Authoring">MathML bearbeiten</a></li>
+ <li><a class="external" href="https://www.w3.org/Math/Software/mathml_software_cat_editors.html">Editors</a></li>
+ <li><a class="external" href="https://www.w3.org/Math/Software/mathml_software_cat_converters.html">Converter</a></li>
+ <li><a class="external" href="https://www.w3.org/Math/Software/mathml_software_cat_stylesheets.html">Stylesheets</a></li>
+</ul>
+
+<div class="originaldocinfo">
+<h2 id="Original_Document_Information" name="Original_Document_Information">Original Document Information</h2>
+
+<ul>
+ <li>Author(s): Roger B. Sidje</li>
+ <li>Other Contributors: Frédéric Wang</li>
+ <li>Last Updated Date: April 4, 2010</li>
+ <li>Copyright Information: Portions of this content are © 1999–2010 by individual mozilla.org contributors; content available under a Creative Commons license | <a class="external" href="http://www.mozilla.org/foundation/licensing/website-content.html">Details</a>.</li>
+</ul>
+</div>
diff --git a/files/de/mozilla/mathml_project/mathml_torture_test/index.html b/files/de/mozilla/mathml_project/mathml_torture_test/index.html
new file mode 100644
index 0000000000..f48515f89d
--- /dev/null
+++ b/files/de/mozilla/mathml_project/mathml_torture_test/index.html
@@ -0,0 +1,1323 @@
+---
+title: MathML Härtetest
+slug: Mozilla/MathML_Project/MathML_Torture_Test
+tags:
+ - Beispiel
+ - Intermediate
+ - MathML
+translation_of: Mozilla/MathML_Project/MathML_Torture_Test
+---
+<h2 id="MathML_Torture_Test" name="MathML_Torture_Test">MathML Härtetest</h2>
+
+<div style="display: none;">
+<h3 id="HTML_Content">HTML Content</h3>
+
+<pre class="brush: html">&lt;p&gt;
+ Render mathematics with:
+ &lt;select name="MathFont" id="MathFont"&gt;
+ &lt;option value="Default" selected="selected"&gt;Default fonts&lt;/option&gt;
+ &lt;option value="Asana"&gt;Asana&lt;/option&gt;
+ &lt;option value="Cambria"&gt;Cambria&lt;/option&gt;
+ &lt;option value="LatinModern"&gt;Latin Modern&lt;/option&gt;
+ &lt;option value="LucidaBright"&gt;Lucida Bright&lt;/option&gt;
+ &lt;option value="Minion"&gt;Minion&lt;/option&gt;
+ &lt;option value="STIX"&gt;STIX&lt;/option&gt;
+ &lt;option value="TeXGyreBonum"&gt;TeX Gyre Bonum&lt;/option&gt;
+ &lt;option value="TeXGyrePagella"&gt;TeX Gyre Pagella&lt;/option&gt;
+ &lt;option value="TeXGyreSchola"&gt;TeX Gyre Schola&lt;/option&gt;
+ &lt;option value="TeXGyreTermes"&gt;TeX Gyre Termes&lt;/option&gt;
+ &lt;option value="XITS"&gt;XITS&lt;/option&gt;
+ &lt;option value="XITSRTL"&gt;XITS RTL&lt;/option&gt;
+ &lt;/select&gt; &lt;br/&gt;
+&lt;/p&gt;
+
+&lt;table&gt;
+
+&lt;tr&gt;
+&lt;td&gt;&lt;/td&gt;
+&lt;th scope="col"&gt;As rendered by TeX&lt;/th&gt;
+&lt;th scope="col"&gt;As rendered by your browser&lt;/th&gt;&lt;/tr&gt;
+
+&lt;tr&gt;
+&lt;td&gt;1&lt;/td&gt;
+
+&lt;td&gt;&lt;img src="https://developer.mozilla.org/@api/deki/files/4578/=ex1.png" width="38" height="22"
+alt="TeXbook, 16.2-16.3" /&gt;&lt;/td&gt;
+&lt;td&gt;
+&lt;math display="block"&gt;
+&lt;mrow&gt;
+ &lt;msup&gt;
+ &lt;mi&gt;x&lt;/mi&gt;
+ &lt;mn&gt;2&lt;/mn&gt;
+ &lt;/msup&gt;
+ &lt;msup&gt;
+ &lt;mi&gt;y&lt;/mi&gt;
+
+ &lt;mn&gt;2&lt;/mn&gt;
+ &lt;/msup&gt;
+&lt;/mrow&gt;
+&lt;/math&gt;
+&lt;/td&gt;&lt;/tr&gt;
+
+&lt;tr&gt;
+&lt;td&gt;2&lt;/td&gt;
+&lt;td&gt;&lt;img src="https://developer.mozilla.org/@api/deki/files/4579/=ex2.png" width="30" height="17" alt="TeXbook, 16.2-16.3" /&gt;&lt;/td&gt;
+&lt;td&gt;
+&lt;math display="block"&gt;
+&lt;!--
+&lt;mrow&gt;
+ &lt;msub&gt;&lt;mi&gt;&lt;/mi&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msub&gt;
+ &lt;msub&gt;&lt;mi&gt;F&lt;/mi&gt;&lt;mn&gt;3&lt;/mn&gt;&lt;/msub&gt;
+&lt;/mrow&gt;
+--&gt;
+&lt;mrow&gt;
+
+ &lt;mmultiscripts&gt;
+ &lt;mi&gt;F&lt;/mi&gt;
+ &lt;mn&gt;3&lt;/mn&gt;&lt;none/&gt;
+ &lt;mprescripts/&gt;
+ &lt;mn&gt;2&lt;/mn&gt;&lt;none/&gt;
+ &lt;/mmultiscripts&gt;
+&lt;/mrow&gt;
+&lt;/math&gt;
+
+&lt;/td&gt;&lt;/tr&gt;
+
+&lt;tr&gt;
+&lt;td&gt;3&lt;/td&gt;
+&lt;td&gt;&lt;img src="https://developer.mozilla.org/@api/deki/files/4586/=ex21.png" width="58" height="47" alt="TeXbook, 17-17.1" /&gt;&lt;/td&gt;
+&lt;td&gt;
+&lt;math display="block"&gt;
+&lt;mrow&gt;
+ &lt;mfrac&gt;
+ &lt;mrow&gt;
+ &lt;mi&gt;x&lt;/mi&gt;
+ &lt;mo&gt;+&lt;/mo&gt;
+
+ &lt;msup&gt;
+ &lt;mi&gt;y&lt;/mi&gt;
+ &lt;mn&gt;2&lt;/mn&gt;
+ &lt;/msup&gt;
+ &lt;/mrow&gt;
+ &lt;mrow&gt;
+ &lt;mi&gt;k&lt;/mi&gt;
+
+ &lt;mo&gt;+&lt;/mo&gt;
+ &lt;mn&gt;1&lt;/mn&gt;
+ &lt;/mrow&gt;
+ &lt;/mfrac&gt;
+&lt;/mrow&gt;
+&lt;/math&gt;
+&lt;/td&gt;&lt;/tr&gt;
+
+&lt;tr&gt;
+&lt;td&gt;4&lt;/td&gt;
+
+&lt;td&gt;&lt;img src="https://developer.mozilla.org/@api/deki/files/4587/=ex22.png" width="76" height="25" alt="TeXbook, 17-17.1" /&gt;&lt;/td&gt;
+&lt;td&gt;
+&lt;math display="block"&gt;
+&lt;mrow&gt;
+ &lt;mi&gt;x&lt;/mi&gt;
+ &lt;mo&gt;+&lt;/mo&gt;
+ &lt;msup&gt;
+ &lt;mi&gt;y&lt;/mi&gt;
+ &lt;mfrac&gt;
+
+ &lt;mn&gt;2&lt;/mn&gt;
+ &lt;mrow&gt;
+ &lt;mi&gt;k&lt;/mi&gt;
+ &lt;mo&gt;+&lt;/mo&gt;
+ &lt;mn&gt;1&lt;/mn&gt;
+ &lt;/mrow&gt;
+ &lt;/mfrac&gt;
+
+ &lt;/msup&gt;
+&lt;/mrow&gt;
+&lt;/math&gt;
+&lt;/td&gt;&lt;/tr&gt;
+
+&lt;tr&gt;
+&lt;td&gt;5&lt;/td&gt;
+&lt;td&gt;&lt;img src="https://developer.mozilla.org/@api/deki/files/4588/=ex23.png" width="30" height="42" alt="TeXbook, 17-17.1" /&gt;&lt;/td&gt;
+&lt;td&gt;
+&lt;math display="block"&gt;
+&lt;mrow&gt;
+ &lt;mfrac&gt;
+ &lt;mi&gt;a&lt;/mi&gt;
+
+ &lt;mrow&gt;
+ &lt;mi&gt;b&lt;/mi&gt;
+ &lt;mo&gt;/&lt;/mo&gt;
+ &lt;mn&gt;2&lt;/mn&gt;
+ &lt;/mrow&gt;
+ &lt;/mfrac&gt;
+&lt;/mrow&gt;
+&lt;/math&gt;
+
+&lt;/td&gt;&lt;/tr&gt;
+
+&lt;tr&gt;
+&lt;td&gt;6&lt;/td&gt;
+&lt;td&gt;&lt;img src="https://developer.mozilla.org/@api/deki/files/4589/=ex24.png" width="220" height="138" alt="TeXbook, 17.5-17.6" /&gt;&lt;/td&gt;
+&lt;td&gt;
+&lt;math display="block"&gt;
+&lt;mrow&gt;
+ &lt;msub&gt;
+ &lt;mi&gt;a&lt;/mi&gt;
+ &lt;mn&gt;0&lt;/mn&gt;
+
+ &lt;/msub&gt;
+ &lt;mo&gt;+&lt;/mo&gt;
+ &lt;mfrac&gt;
+ &lt;mn&gt;1&lt;/mn&gt;
+ &lt;mstyle displaystyle="true" scriptlevel="0"&gt;
+ &lt;msub&gt;
+ &lt;mi&gt;a&lt;/mi&gt;
+
+ &lt;mn&gt;1&lt;/mn&gt;
+ &lt;/msub&gt;
+ &lt;mo&gt;+&lt;/mo&gt;
+ &lt;mfrac&gt;
+ &lt;mn&gt;1&lt;/mn&gt;
+ &lt;mstyle displaystyle="true" scriptlevel="0"&gt;
+ &lt;msub&gt;
+
+ &lt;mi&gt;a&lt;/mi&gt;
+ &lt;mn&gt;2&lt;/mn&gt;
+ &lt;/msub&gt;
+ &lt;mo&gt;+&lt;/mo&gt;
+ &lt;mfrac&gt;
+ &lt;mn&gt;1&lt;/mn&gt;
+ &lt;mstyle displaystyle="true" scriptlevel="0"&gt;
+
+ &lt;msub&gt;
+ &lt;mi&gt;a&lt;/mi&gt;
+ &lt;mn&gt;3&lt;/mn&gt;
+ &lt;/msub&gt;
+ &lt;mo&gt;+&lt;/mo&gt;
+ &lt;mfrac&gt;
+ &lt;mn&gt;1&lt;/mn&gt;
+
+ &lt;mstyle displaystyle="true" scriptlevel="0"&gt;
+ &lt;msub&gt;
+ &lt;mi&gt;a&lt;/mi&gt;
+ &lt;mn&gt;4&lt;/mn&gt;
+ &lt;/msub&gt;
+ &lt;/mstyle&gt;
+ &lt;/mfrac&gt;
+ &lt;/mstyle&gt;
+ &lt;/mfrac&gt;
+
+ &lt;/mstyle&gt;
+ &lt;/mfrac&gt;
+ &lt;/mstyle&gt;
+ &lt;/mfrac&gt;
+&lt;/mrow&gt;
+&lt;/math&gt;
+&lt;/td&gt;&lt;/tr&gt;
+
+&lt;tr&gt;
+&lt;td&gt;7&lt;/td&gt;
+&lt;td&gt;&lt;img src="https://developer.mozilla.org/@api/deki/files/4590/=ex25.png" width="200" height="85" alt="TeXbook, 17.5-17.6" /&gt;&lt;/td&gt;
+&lt;td&gt;
+
+&lt;math&gt;
+&lt;mrow&gt;
+ &lt;msub&gt;
+ &lt;mi&gt;a&lt;/mi&gt;
+ &lt;mn&gt;0&lt;/mn&gt;
+ &lt;/msub&gt;
+ &lt;mo&gt;+&lt;/mo&gt;
+ &lt;mfrac&gt;
+
+ &lt;mn&gt;1&lt;/mn&gt;
+ &lt;mrow&gt;
+ &lt;msub&gt;
+ &lt;mi&gt;a&lt;/mi&gt;
+ &lt;mn&gt;1&lt;/mn&gt;
+ &lt;/msub&gt;
+ &lt;mo&gt;+&lt;/mo&gt;
+
+ &lt;mfrac&gt;
+ &lt;mn&gt;1&lt;/mn&gt;
+ &lt;mrow&gt;
+ &lt;msub&gt;
+ &lt;mi&gt;a&lt;/mi&gt;
+ &lt;mn&gt;2&lt;/mn&gt;
+ &lt;/msub&gt;
+
+ &lt;mo&gt;+&lt;/mo&gt;
+ &lt;mfrac&gt;
+ &lt;mn&gt;1&lt;/mn&gt;
+ &lt;mrow&gt;
+ &lt;msub&gt;
+ &lt;mi&gt;a&lt;/mi&gt;
+ &lt;mn&gt;3&lt;/mn&gt;
+
+ &lt;/msub&gt;
+ &lt;mo&gt;+&lt;/mo&gt;
+ &lt;mfrac&gt;
+ &lt;mn&gt;1&lt;/mn&gt;
+ &lt;mrow&gt;
+ &lt;msub&gt;
+ &lt;mi&gt;a&lt;/mi&gt;
+
+ &lt;mn&gt;4&lt;/mn&gt;
+ &lt;/msub&gt;
+ &lt;/mrow&gt;
+ &lt;/mfrac&gt;
+ &lt;/mrow&gt;
+ &lt;/mfrac&gt;
+ &lt;/mrow&gt;
+ &lt;/mfrac&gt;
+
+ &lt;/mrow&gt;
+ &lt;/mfrac&gt;
+&lt;/mrow&gt;
+&lt;/math&gt;
+&lt;/td&gt;&lt;/tr&gt;
+
+&lt;tr&gt;
+&lt;td&gt;8&lt;/td&gt;
+&lt;td&gt;&lt;img src="https://developer.mozilla.org/@api/deki/files/4591/=ex26.png" width="54" height="50" alt="TeXbook, 17.5-17.6" /&gt;&lt;/td&gt;
+&lt;td&gt;
+&lt;math display="block"&gt;
+&lt;mrow&gt;
+ &lt;mo&gt;(&lt;/mo&gt;
+
+ &lt;mfrac linethickness="0px"&gt;
+ &lt;mi&gt;n&lt;/mi&gt;
+ &lt;mrow&gt;
+ &lt;mi&gt;k&lt;/mi&gt;
+ &lt;mo&gt;/&lt;/mo&gt;
+ &lt;mn&gt;2&lt;/mn&gt;
+ &lt;/mrow&gt;
+
+ &lt;/mfrac&gt;
+ &lt;mo&gt;)&lt;/mo&gt;
+&lt;/mrow&gt;
+&lt;/math&gt;
+&lt;/td&gt;&lt;/tr&gt;
+
+&lt;tr&gt;
+&lt;td&gt;9&lt;/td&gt;
+&lt;td&gt;&lt;img src="https://developer.mozilla.org/@api/deki/files/4592/=ex27.png" width="237" height="50" alt="TeXbook, 17.7" /&gt;&lt;/td&gt;
+&lt;td&gt;
+&lt;math display="block"&gt;
+&lt;mrow&gt;
+ &lt;mrow&gt;
+
+
+ &lt;mo&gt;(&lt;/mo&gt;
+ &lt;mfrac linethickness="0px"&gt;
+ &lt;mi&gt;p&lt;/mi&gt;
+ &lt;mn&gt;2&lt;/mn&gt;
+ &lt;/mfrac&gt;
+ &lt;mo&gt;)&lt;/mo&gt;
+ &lt;/mrow&gt;
+
+ &lt;msup&gt;
+ &lt;mi&gt;x&lt;/mi&gt;
+ &lt;mn&gt;2&lt;/mn&gt;
+ &lt;/msup&gt;
+ &lt;msup&gt;
+ &lt;mi&gt;y&lt;/mi&gt;
+ &lt;mrow&gt;
+
+ &lt;mi&gt;p&lt;/mi&gt;
+ &lt;mo&gt;-&lt;/mo&gt;
+ &lt;mn&gt;2&lt;/mn&gt;
+ &lt;/mrow&gt;
+ &lt;/msup&gt;
+ &lt;mo&gt;-&lt;/mo&gt;
+ &lt;mfrac&gt;
+
+ &lt;mn&gt;1&lt;/mn&gt;
+ &lt;mrow&gt;
+ &lt;mn&gt;1&lt;/mn&gt;
+ &lt;mo&gt;-&lt;/mo&gt;
+ &lt;mi&gt;x&lt;/mi&gt;
+ &lt;/mrow&gt;
+ &lt;/mfrac&gt;
+
+ &lt;mfrac&gt;
+ &lt;mn&gt;1&lt;/mn&gt;
+ &lt;mrow&gt;
+ &lt;mn&gt;1&lt;/mn&gt;
+ &lt;mo&gt;-&lt;/mo&gt;
+ &lt;msup&gt;
+ &lt;mi&gt;x&lt;/mi&gt;
+
+ &lt;mn&gt;2&lt;/mn&gt;
+ &lt;/msup&gt;
+ &lt;/mrow&gt;
+ &lt;/mfrac&gt;
+&lt;/mrow&gt;
+&lt;/math&gt;
+&lt;/td&gt;&lt;/tr&gt;
+
+&lt;tr&gt;
+&lt;td&gt;10&lt;/td&gt;
+&lt;td&gt;&lt;img src="https://developer.mozilla.org/@api/deki/files/4593/=ex29.png" width="116" height="63" alt="TeXbook, 17.7-17.8" /&gt;&lt;/td&gt;
+
+&lt;td&gt;
+&lt;math display="block"&gt;
+&lt;mrow&gt;
+ &lt;munder&gt;
+ &lt;mo&gt;&amp;sum;&lt;/mo&gt;
+ &lt;mrow&gt;
+ &lt;mfrac linethickness="0px"&gt;
+ &lt;mrow&gt;
+ &lt;mn&gt;0&lt;/mn&gt;
+ &lt;mo&gt;&amp;leq;&lt;/mo&gt;
+
+ &lt;mi&gt;i&lt;/mi&gt;
+ &lt;mo&gt;&amp;leq;&lt;/mo&gt;
+ &lt;mi&gt;m&lt;/mi&gt;
+ &lt;/mrow&gt;
+ &lt;mrow&gt;
+ &lt;mn&gt;0&lt;/mn&gt;
+ &lt;mo&gt;&amp;lt;&lt;/mo&gt;
+
+ &lt;mi&gt;j&lt;/mi&gt;
+ &lt;mo&gt;&amp;lt;&lt;/mo&gt;
+ &lt;mi&gt;n&lt;/mi&gt;
+ &lt;/mrow&gt;
+ &lt;/mfrac&gt;
+ &lt;/mrow&gt;
+ &lt;/munder&gt;
+ &lt;mi&gt;P&lt;/mi&gt;
+
+ &lt;mo stretchy="false"&gt;(&lt;/mo&gt;
+ &lt;mi&gt;i&lt;/mi&gt;
+ &lt;mo&gt;,&lt;/mo&gt;
+ &lt;mi&gt;j&lt;/mi&gt;
+ &lt;mo stretchy="false"&gt;)&lt;/mo&gt;
+&lt;/mrow&gt;
+&lt;/math&gt;
+
+&lt;/td&gt;&lt;/tr&gt;
+
+&lt;tr&gt;
+&lt;td&gt;11&lt;/td&gt;
+&lt;td&gt;&lt;img src="https://developer.mozilla.org/@api/deki/files/4580/=ex3.png" width="27" height="18" alt="TeXbook, 16.2-16.3" /&gt;&lt;/td&gt;
+&lt;td&gt;
+&lt;math display="block"&gt;
+&lt;mrow&gt;
+&lt;msup&gt;
+ &lt;mi&gt;x&lt;/mi&gt;
+ &lt;mrow&gt;
+ &lt;mn&gt;2&lt;/mn&gt;
+
+ &lt;mi&gt;y&lt;/mi&gt;
+ &lt;/mrow&gt;
+&lt;/msup&gt;
+&lt;/mrow&gt;
+&lt;/math&gt;
+&lt;/td&gt;&lt;/tr&gt;
+
+&lt;tr&gt;
+&lt;td&gt;12&lt;/td&gt;
+&lt;td&gt;&lt;img src="https://developer.mozilla.org/@api/deki/files/4594/=ex30.png" width="175" height="61" alt="TeXbook, 17.8" /&gt;&lt;/td&gt;
+&lt;td&gt;
+&lt;math display="block"&gt;
+&lt;mrow&gt;
+
+ &lt;munderover&gt;
+ &lt;mo&gt;&amp;sum;&lt;/mo&gt;
+ &lt;mrow&gt;
+ &lt;mi&gt;i&lt;/mi&gt;
+ &lt;mo&gt;=&lt;/mo&gt;
+ &lt;mn&gt;1&lt;/mn&gt;
+ &lt;/mrow&gt;
+
+ &lt;mi&gt;p&lt;/mi&gt;
+ &lt;/munderover&gt;
+ &lt;munderover&gt;
+ &lt;mo&gt;&amp;sum;&lt;/mo&gt;
+ &lt;mrow&gt;
+ &lt;mi&gt;j&lt;/mi&gt;
+ &lt;mo&gt;=&lt;/mo&gt;
+
+ &lt;mn&gt;1&lt;/mn&gt;
+ &lt;/mrow&gt;
+ &lt;mi&gt;q&lt;/mi&gt;
+ &lt;/munderover&gt;
+ &lt;munderover&gt;
+ &lt;mo&gt;&amp;sum;&lt;/mo&gt;
+ &lt;mrow&gt;
+ &lt;mi&gt;k&lt;/mi&gt;
+
+ &lt;mo&gt;=&lt;/mo&gt;
+ &lt;mn&gt;1&lt;/mn&gt;
+ &lt;/mrow&gt;
+ &lt;mi&gt;r&lt;/mi&gt;
+ &lt;/munderover&gt;
+ &lt;msub&gt;
+ &lt;mi&gt;a&lt;/mi&gt;
+
+ &lt;mrow&gt;
+ &lt;mi&gt;i&lt;/mi&gt;
+ &lt;mi&gt;j&lt;/mi&gt;
+ &lt;/mrow&gt;
+ &lt;/msub&gt;
+ &lt;msub&gt;
+ &lt;mi&gt;b&lt;/mi&gt;
+
+ &lt;mrow&gt;
+ &lt;mi&gt;j&lt;/mi&gt;
+ &lt;mi&gt;k&lt;/mi&gt;
+ &lt;/mrow&gt;
+ &lt;/msub&gt;
+ &lt;msub&gt;
+ &lt;mi&gt;c&lt;/mi&gt;
+
+ &lt;mrow&gt;
+ &lt;mi&gt;k&lt;/mi&gt;
+ &lt;mi&gt;i&lt;/mi&gt;
+ &lt;/mrow&gt;
+ &lt;/msub&gt;
+&lt;/mrow&gt;
+&lt;/math&gt;
+&lt;/td&gt;&lt;/tr&gt;
+
+&lt;tr&gt;
+
+&lt;td&gt;13&lt;/td&gt;
+&lt;td&gt;&lt;img src="https://developer.mozilla.org/@api/deki/files/4595/=ex31.png" width="405" height="100" alt="TeXbook, 17.9-17.10" /&gt;&lt;/td&gt;
+&lt;td&gt;
+&lt;math display="block"&gt;
+&lt;mrow&gt;
+ &lt;msqrt&gt;
+ &lt;mn&gt;1&lt;/mn&gt;
+ &lt;mo&gt;+&lt;/mo&gt;
+ &lt;msqrt&gt;
+ &lt;mn&gt;1&lt;/mn&gt;
+
+ &lt;mo&gt;+&lt;/mo&gt;
+ &lt;msqrt&gt;
+ &lt;mn&gt;1&lt;/mn&gt;
+ &lt;mo&gt;+&lt;/mo&gt;
+ &lt;msqrt&gt;
+ &lt;mn&gt;1&lt;/mn&gt;
+ &lt;mo&gt;+&lt;/mo&gt;
+
+ &lt;msqrt&gt;
+ &lt;mn&gt;1&lt;/mn&gt;
+ &lt;mo&gt;+&lt;/mo&gt;
+ &lt;msqrt&gt;
+ &lt;mn&gt;1&lt;/mn&gt;
+ &lt;mo&gt;+&lt;/mo&gt;
+ &lt;msqrt&gt;
+
+ &lt;mn&gt;1&lt;/mn&gt;
+ &lt;mo&gt;+&lt;/mo&gt;
+ &lt;mi&gt;x&lt;/mi&gt;
+ &lt;/msqrt&gt;
+ &lt;/msqrt&gt;
+ &lt;/msqrt&gt;
+ &lt;/msqrt&gt;
+
+ &lt;/msqrt&gt;
+ &lt;/msqrt&gt;
+ &lt;/msqrt&gt;
+&lt;/mrow&gt;
+&lt;/math&gt;
+&lt;/td&gt;&lt;/tr&gt;
+
+&lt;tr&gt;
+&lt;td&gt;14&lt;/td&gt;
+&lt;td&gt;&lt;img src="https://developer.mozilla.org/@api/deki/files/4596/=ex34.png" width="272" height="50" alt="TeXbook, 17.10" /&gt;&lt;/td&gt;
+&lt;td&gt;
+&lt;math display="block"&gt;
+&lt;mrow&gt;
+
+ &lt;mrow&gt;
+ &lt;mo&gt;(&lt;/mo&gt;
+ &lt;mfrac&gt;
+ &lt;msup&gt;
+ &lt;mo&gt;&amp;part;&lt;/mo&gt;
+ &lt;mn&gt;2&lt;/mn&gt;
+ &lt;/msup&gt;
+ &lt;mrow&gt;
+
+ &lt;mo&gt;&amp;part;&lt;/mo&gt;
+ &lt;msup&gt;
+ &lt;mi&gt;x&lt;/mi&gt;
+ &lt;mn&gt;2&lt;/mn&gt;
+ &lt;/msup&gt;
+ &lt;/mrow&gt;
+ &lt;/mfrac&gt;
+ &lt;mo&gt;+&lt;/mo&gt;
+
+ &lt;mfrac&gt;
+ &lt;msup&gt;
+ &lt;mo&gt;&amp;part;&lt;/mo&gt;
+ &lt;mn&gt;2&lt;/mn&gt;
+ &lt;/msup&gt;
+ &lt;mrow&gt;
+ &lt;mo&gt;&amp;part;&lt;/mo&gt;
+ &lt;msup&gt;
+
+ &lt;mi&gt;y&lt;/mi&gt;
+ &lt;mn&gt;2&lt;/mn&gt;
+ &lt;/msup&gt;
+ &lt;/mrow&gt;
+ &lt;/mfrac&gt;
+ &lt;mo&gt;)&lt;/mo&gt;
+ &lt;/mrow&gt;
+
+ &lt;msup&gt;
+ &lt;mrow&gt;
+ &lt;mo minsize="150%"&gt;|&lt;/mo&gt;
+ &lt;mi&gt;&amp;#x3C6; &lt;!-- \varphi --&gt;&lt;/mi&gt;
+ &lt;mo stretchy="false"&gt;(&lt;/mo&gt;
+ &lt;mi&gt;x&lt;/mi&gt;
+ &lt;mo&gt;+&lt;/mo&gt;
+
+ &lt;mi mathvariant="normal"&gt;i&lt;/mi&gt;
+ &lt;mi&gt;y&lt;/mi&gt;
+ &lt;mo stretchy="false"&gt;)&lt;/mo&gt;
+ &lt;mo minsize="150%"&gt;|&lt;/mo&gt;
+ &lt;/mrow&gt;
+ &lt;mn&gt;2&lt;/mn&gt;
+
+ &lt;/msup&gt;
+ &lt;mo&gt;=&lt;/mo&gt;
+ &lt;mn&gt;0&lt;/mn&gt;
+&lt;/mrow&gt;
+&lt;/math&gt;
+&lt;/td&gt;&lt;/tr&gt;
+
+&lt;tr&gt;
+&lt;td&gt;15&lt;/td&gt;
+&lt;td&gt;&lt;img src="https://developer.mozilla.org/@api/deki/files/4581/=ex4.png" width="31" height="22" alt="TeXbook, 16.2-16.3" /&gt;&lt;/td&gt;
+&lt;td&gt;
+
+&lt;math display="block"&gt;
+&lt;mrow&gt;
+ &lt;msup&gt;
+ &lt;mn&gt;2&lt;/mn&gt;
+ &lt;msup&gt;
+ &lt;mn&gt;2&lt;/mn&gt;
+ &lt;msup&gt;
+ &lt;mn&gt;2&lt;/mn&gt;
+
+ &lt;mi&gt;x&lt;/mi&gt;
+ &lt;/msup&gt;
+ &lt;/msup&gt;
+ &lt;/msup&gt;
+&lt;/mrow&gt;
+&lt;/math&gt;
+&lt;/td&gt;&lt;/tr&gt;
+
+&lt;tr&gt;
+&lt;td&gt;16&lt;/td&gt;
+&lt;td&gt;&lt;img src="https://developer.mozilla.org/@api/deki/files/4597/=ex40.png" width="55" height="49" alt="TeXbook, 18.10-18.11" /&gt;&lt;/td&gt;
+
+&lt;td&gt;
+&lt;math display="block"&gt;
+&lt;mrow&gt;
+ &lt;msubsup&gt;
+ &lt;mo stretchy="false"&gt;&amp;int;&lt;/mo&gt;
+ &lt;mn&gt;1&lt;/mn&gt;
+ &lt;mi&gt;x&lt;/mi&gt;
+ &lt;/msubsup&gt;
+ &lt;mfrac&gt;
+
+ &lt;mrow&gt;&lt;mi&gt;d&lt;/mi&gt;&lt;mi&gt;t&lt;/mi&gt;&lt;/mrow&gt;
+ &lt;mi&gt;t&lt;/mi&gt;
+ &lt;/mfrac&gt;
+&lt;/mrow&gt;
+&lt;/math&gt;
+&lt;/td&gt;&lt;/tr&gt;
+
+&lt;tr&gt;
+&lt;td&gt;17&lt;/td&gt;
+&lt;td&gt;&lt;img src="https://developer.mozilla.org/@api/deki/files/4599/=ex41.png" width="91" height="47" alt="TeXbook, 18.12-18.13" /&gt;&lt;/td&gt;
+&lt;td&gt;
+
+&lt;math display="block"&gt;
+&lt;mrow&gt;
+ &lt;msub&gt;
+ &lt;mo&gt;&amp;#x222C; &lt;!-- \iint --&gt;&lt;/mo&gt;
+ &lt;mi&gt;D&lt;/mi&gt;
+ &lt;/msub&gt;
+ &lt;mi&gt;d&lt;/mi&gt;&lt;mi&gt;x&lt;/mi&gt;
+ &lt;mspace width="thinmathspace"/&gt;
+
+ &lt;mi&gt;d&lt;/mi&gt;&lt;mi&gt;y&lt;/mi&gt;
+&lt;/mrow&gt;
+&lt;/math&gt;
+&lt;/td&gt;&lt;/tr&gt;
+
+&lt;tr&gt;
+&lt;td&gt;18&lt;/td&gt;
+&lt;td&gt;&lt;img src="https://developer.mozilla.org/@api/deki/files/4600/=ex43.png" width="250" height="66" alt="TeXbook, 18.23" /&gt;&lt;/td&gt;
+&lt;td&gt;
+&lt;math display="block"&gt;
+&lt;mrow&gt;
+ &lt;mi&gt;f&lt;/mi&gt;
+
+ &lt;mo stretchy="false"&gt;(&lt;/mo&gt;
+ &lt;mi&gt;x&lt;/mi&gt;
+ &lt;mo stretchy="false"&gt;)&lt;/mo&gt;
+ &lt;mo&gt;=&lt;/mo&gt;
+ &lt;mrow&gt;
+ &lt;mo&gt;{&lt;/mo&gt;
+
+ &lt;mtable&gt;
+ &lt;mtr&gt;
+ &lt;mtd columnalign="center"&gt;
+ &lt;mrow&gt;
+ &lt;mn&gt;1&lt;/mn&gt;
+ &lt;mo&gt;/&lt;/mo&gt;
+ &lt;mn&gt;3&lt;/mn&gt;
+
+ &lt;/mrow&gt;
+ &lt;/mtd&gt;
+ &lt;mtd columnalign="left"&gt;
+ &lt;mrow&gt;
+ &lt;mtext&gt;if&amp;nbsp;&lt;/mtext&gt;
+ &lt;mn&gt;0&lt;/mn&gt;
+ &lt;mo&gt;&amp;leq;&lt;/mo&gt;
+ &lt;mi&gt;x&lt;/mi&gt;
+
+ &lt;mo&gt;&amp;leq;&lt;/mo&gt;
+ &lt;mn&gt;1&lt;/mn&gt;
+ &lt;mo&gt;;&lt;/mo&gt;
+ &lt;/mrow&gt;
+ &lt;/mtd&gt;
+ &lt;/mtr&gt;
+ &lt;mtr&gt;
+ &lt;mtd columnalign="center"&gt;
+
+ &lt;mrow&gt;
+ &lt;mn&gt;2&lt;/mn&gt;
+ &lt;mo&gt;/&lt;/mo&gt;
+ &lt;mn&gt;3&lt;/mn&gt;
+ &lt;/mrow&gt;
+ &lt;/mtd&gt;
+ &lt;mtd columnalign="center"&gt;
+
+ &lt;mrow&gt;
+ &lt;mtext&gt;if&amp;nbsp;&lt;/mtext&gt;
+ &lt;mn&gt;3&lt;/mn&gt;
+ &lt;mo&gt;&amp;leq;&lt;/mo&gt;
+ &lt;mi&gt;x&lt;/mi&gt;
+ &lt;mo&gt;&amp;leq;&lt;/mo&gt;
+ &lt;mn&gt;4&lt;/mn&gt;
+
+ &lt;mo&gt;;&lt;/mo&gt;
+ &lt;/mrow&gt;
+ &lt;/mtd&gt;
+ &lt;/mtr&gt;
+ &lt;mtr&gt;
+ &lt;mtd columnalign="center"&gt;
+ &lt;mn&gt;0&lt;/mn&gt;
+ &lt;/mtd&gt;
+
+ &lt;mtd columnalign="left"&gt;
+ &lt;mtext&gt;elsewhere.&lt;/mtext&gt;
+ &lt;/mtd&gt;
+ &lt;/mtr&gt;
+ &lt;/mtable&gt;
+ &lt;/mrow&gt;
+&lt;/mrow&gt;
+&lt;/math&gt;
+&lt;/td&gt;&lt;/tr&gt;
+
+&lt;tr&gt;
+&lt;td&gt;19&lt;/td&gt;
+&lt;td&gt;&lt;img src="https://developer.mozilla.org/@api/deki/files/4601/=ex44.png" width="101" height="44" alt="TeXbook, 18.23-18.24" /&gt;&lt;/td&gt;
+&lt;td&gt;
+&lt;math display="block"&gt;
+&lt;mover&gt;
+ &lt;mrow&gt;
+ &lt;mi&gt;x&lt;/mi&gt;
+ &lt;mo&gt;+&lt;/mo&gt;
+ &lt;mo&gt;...&lt;/mo&gt;
+
+ &lt;mo&gt;+&lt;/mo&gt;
+ &lt;mi&gt;x&lt;/mi&gt;
+ &lt;/mrow&gt;
+ &lt;mover&gt;
+ &lt;mo&gt;&amp;OverBrace;&lt;/mo&gt;
+ &lt;mrow&gt;&lt;mi&gt;k&lt;/mi&gt; &lt;mspace width="thinmathspace"/&gt; &lt;mtext&gt;times&lt;/mtext&gt;&lt;/mrow&gt;
+ &lt;/mover&gt;
+
+&lt;/mover&gt;
+&lt;/math&gt;
+&lt;/td&gt;&lt;/tr&gt;
+
+&lt;tr&gt;
+&lt;td&gt;20&lt;/td&gt;
+&lt;td&gt;&lt;img src="https://developer.mozilla.org/@api/deki/files/4582/=ex5.png" width="25" height="13" alt="TeXbook, 16.2-16.3" /&gt;&lt;/td&gt;
+&lt;td&gt;
+&lt;math display="block"&gt;
+&lt;mrow&gt;
+ &lt;msub&gt;
+ &lt;mi&gt;y&lt;/mi&gt;
+ &lt;msup&gt;
+
+ &lt;mi&gt;x&lt;/mi&gt;
+ &lt;mn&gt;2&lt;/mn&gt;
+ &lt;/msup&gt;
+ &lt;/msub&gt;
+&lt;/mrow&gt;
+&lt;/math&gt;
+&lt;/td&gt;&lt;/tr&gt;
+
+&lt;tr&gt;
+&lt;td&gt;21&lt;/td&gt;
+
+&lt;td&gt;&lt;img src="https://developer.mozilla.org/@api/deki/files/4602/=ex51.png" width="253" height="56" alt="TeXbook, 18.40" /&gt;&lt;/td&gt;
+&lt;td&gt;
+&lt;math display="block"&gt;
+&lt;mrow&gt;
+ &lt;munder&gt;
+ &lt;mo&gt;&amp;sum;&lt;/mo&gt;
+ &lt;mrow&gt;
+ &lt;mi&gt;p&lt;/mi&gt;
+ &lt;mtext&gt;&amp;nbsp;prime&lt;/mtext&gt;
+ &lt;/mrow&gt;
+
+ &lt;/munder&gt;
+ &lt;mi&gt;f&lt;/mi&gt;
+ &lt;mo stretchy="false"&gt;(&lt;/mo&gt;
+ &lt;mi&gt;p&lt;/mi&gt;
+ &lt;mo stretchy="false"&gt;)&lt;/mo&gt;
+ &lt;mo&gt;=&lt;/mo&gt;
+
+ &lt;msub&gt;
+ &lt;mo stretchy="false"&gt;&amp;int;&lt;/mo&gt;
+ &lt;mrow&gt;
+ &lt;mi&gt;t&lt;/mi&gt;
+ &lt;mo&gt;&amp;gt;&lt;/mo&gt;
+ &lt;mn&gt;1&lt;/mn&gt;
+ &lt;/mrow&gt;
+ &lt;/msub&gt;
+
+ &lt;mi&gt;f&lt;/mi&gt;
+ &lt;mo stretchy="false"&gt;(&lt;/mo&gt;
+ &lt;mi&gt;t&lt;/mi&gt;
+ &lt;mo stretchy="false"&gt;)&lt;/mo&gt;
+ &lt;mspace width="thinmathspace"/&gt;
+ &lt;mi&gt;d&lt;/mi&gt;
+ &lt;mi&gt;&amp;pi;&lt;/mi&gt;
+ &lt;mo stretchy="false"&gt;(&lt;/mo&gt;
+ &lt;mi&gt;t&lt;/mi&gt;
+ &lt;mo stretchy="false"&gt;)&lt;/mo&gt;
+&lt;/mrow&gt;
+&lt;/math&gt;
+&lt;/td&gt;&lt;/tr&gt;
+
+&lt;tr&gt;
+&lt;td&gt;22&lt;/td&gt;
+
+&lt;td&gt;&lt;img src="https://developer.mozilla.org/@api/deki/files/4603/=ex52.png" width="159" height="81" alt="TeXbook, 18.41" /&gt;&lt;/td&gt;
+&lt;td&gt;
+&lt;math display="block"&gt;
+&lt;mrow&gt;
+ &lt;mo stretchy="false"&gt;{&lt;/mo&gt;
+ &lt;munder&gt;
+ &lt;mrow&gt;
+ &lt;mover&gt;
+ &lt;mrow&gt;
+ &lt;mpadded width="0em"&gt;&lt;mphantom&gt;&lt;mo&gt;(&lt;/mo&gt;&lt;/mphantom&gt;&lt;/mpadded&gt;
+ &lt;mi&gt;a&lt;/mi&gt;
+ &lt;mo&gt;,&lt;/mo&gt;
+ &lt;mo&gt;...&lt;/mo&gt;
+ &lt;mo&gt;,&lt;/mo&gt;
+ &lt;mi&gt;a&lt;/mi&gt;
+ &lt;/mrow&gt;
+
+ &lt;mover&gt;
+ &lt;mo&gt;&amp;OverBrace;&lt;/mo&gt;
+ &lt;mrow&gt;
+ &lt;mi&gt;k&lt;/mi&gt;
+ &lt;mtext&gt;&amp;nbsp;&lt;/mtext&gt;
+ &lt;mi&gt;a&lt;/mi&gt;
+ &lt;mtext&gt;'s&lt;/mtext&gt;
+
+ &lt;/mrow&gt;
+ &lt;/mover&gt;
+ &lt;/mover&gt;
+ &lt;mo&gt;,&lt;/mo&gt;
+ &lt;mover&gt;
+ &lt;mrow&gt;
+ &lt;mpadded width="0em"&gt;&lt;mphantom&gt;&lt;mo&gt;(&lt;/mo&gt;&lt;/mphantom&gt;&lt;/mpadded&gt;
+ &lt;mi&gt;b&lt;/mi&gt;
+ &lt;mo&gt;,&lt;/mo&gt;
+ &lt;mo&gt;...&lt;/mo&gt;
+ &lt;mo&gt;,&lt;/mo&gt;
+ &lt;mi&gt;b&lt;/mi&gt;
+ &lt;/mrow&gt;
+
+ &lt;mover&gt;
+ &lt;mo&gt;&amp;OverBrace;&lt;/mo&gt;
+ &lt;mrow&gt;
+ &lt;mi&gt;&amp;ell;&lt;/mi&gt;
+ &lt;mtext&gt;&amp;nbsp;&lt;/mtext&gt;
+ &lt;mi&gt;b&lt;/mi&gt;
+ &lt;mtext&gt;'s&lt;/mtext&gt;
+ &lt;/mrow&gt;
+
+ &lt;/mover&gt;
+ &lt;/mover&gt;
+ &lt;/mrow&gt;
+ &lt;munder&gt;
+ &lt;mo&gt;&amp;UnderBrace;&lt;/mo&gt;
+ &lt;mrow&gt;
+ &lt;mi&gt;k&lt;/mi&gt;
+ &lt;mo&gt;+&lt;/mo&gt;
+
+ &lt;mi&gt;&amp;ell;&lt;/mi&gt;
+ &lt;mtext&gt;&amp;nbsp;elements&lt;/mtext&gt;
+ &lt;/mrow&gt;
+ &lt;/munder&gt;
+ &lt;/munder&gt;
+ &lt;mo stretchy="false"&gt;}&lt;/mo&gt;
+&lt;/mrow&gt;
+&lt;/math&gt;
+&lt;/td&gt;&lt;/tr&gt;
+
+&lt;tr&gt;
+&lt;td&gt;23&lt;/td&gt;
+&lt;td&gt;&lt;img src="https://developer.mozilla.org/@api/deki/files/4604/=ex53.png" width="213" height="108" alt="TeXbook, 18.42" /&gt;&lt;/td&gt;
+&lt;td&gt;
+&lt;math display="block"&gt;
+&lt;mrow&gt;
+ &lt;mo&gt;(&lt;/mo&gt;
+ &lt;mtable&gt;
+ &lt;mtr&gt;
+ &lt;mtd columnalign="center"&gt;
+
+ &lt;mrow&gt;
+ &lt;mo&gt;(&lt;/mo&gt;
+ &lt;mtable&gt;
+ &lt;mtr&gt;
+ &lt;mtd columnalign="center"&gt;
+ &lt;mi&gt;a&lt;/mi&gt;
+ &lt;/mtd&gt;
+ &lt;mtd columnalign="center"&gt;
+
+ &lt;mi&gt;b&lt;/mi&gt;
+ &lt;/mtd&gt;
+ &lt;/mtr&gt;
+ &lt;mtr&gt;
+ &lt;mtd columnalign="center"&gt;
+ &lt;mi&gt;c&lt;/mi&gt;
+ &lt;/mtd&gt;
+ &lt;mtd columnalign="center"&gt;
+
+ &lt;mi&gt;d&lt;/mi&gt;
+ &lt;/mtd&gt;
+ &lt;/mtr&gt;
+ &lt;/mtable&gt;
+ &lt;mo&gt;)&lt;/mo&gt;
+ &lt;/mrow&gt;
+ &lt;/mtd&gt;
+ &lt;mtd columnalign="center"&gt;
+
+ &lt;mrow&gt;
+ &lt;mo&gt;(&lt;/mo&gt;
+ &lt;mtable&gt;
+ &lt;mtr&gt;
+ &lt;mtd columnalign="center"&gt;
+ &lt;mi&gt;e&lt;/mi&gt;
+ &lt;/mtd&gt;
+ &lt;mtd columnalign="center"&gt;
+
+ &lt;mi&gt;f&lt;/mi&gt;
+ &lt;/mtd&gt;
+ &lt;/mtr&gt;
+ &lt;mtr&gt;
+ &lt;mtd columnalign="center"&gt;
+ &lt;mi&gt;g&lt;/mi&gt;
+ &lt;/mtd&gt;
+ &lt;mtd columnalign="center"&gt;
+
+ &lt;mi&gt;h&lt;/mi&gt;
+ &lt;/mtd&gt;
+ &lt;/mtr&gt;
+ &lt;/mtable&gt;
+ &lt;mo&gt;)&lt;/mo&gt;
+ &lt;/mrow&gt;
+ &lt;/mtd&gt;
+ &lt;/mtr&gt;
+
+ &lt;mtr&gt;
+ &lt;mtd columnalign="center"&gt;
+ &lt;mn&gt;0&lt;/mn&gt;
+ &lt;/mtd&gt;
+ &lt;mtd columnalign="center"&gt;
+ &lt;mrow&gt;
+ &lt;mo&gt;(&lt;/mo&gt;
+ &lt;mtable&gt;
+
+ &lt;mtr&gt;
+ &lt;mtd columnalign="center"&gt;
+ &lt;mi&gt;i&lt;/mi&gt;
+ &lt;/mtd&gt;
+ &lt;mtd columnalign="center"&gt;
+ &lt;mi&gt;j&lt;/mi&gt;
+ &lt;/mtd&gt;
+ &lt;/mtr&gt;
+
+ &lt;mtr&gt;
+ &lt;mtd columnalign="center"&gt;
+ &lt;mi&gt;k&lt;/mi&gt;
+ &lt;/mtd&gt;
+ &lt;mtd columnalign="center"&gt;
+ &lt;mi&gt;l&lt;/mi&gt;
+ &lt;/mtd&gt;
+ &lt;/mtr&gt;
+
+ &lt;/mtable&gt;
+ &lt;mo&gt;)&lt;/mo&gt;
+ &lt;/mrow&gt;
+ &lt;/mtd&gt;
+ &lt;/mtr&gt;
+ &lt;/mtable&gt;
+ &lt;mo&gt;)&lt;/mo&gt;
+&lt;/mrow&gt;
+
+&lt;/math&gt;
+&lt;/td&gt;&lt;/tr&gt;
+
+&lt;tr&gt;
+&lt;td&gt;24&lt;/td&gt;
+&lt;td&gt;&lt;img src="https://developer.mozilla.org/@api/deki/files/4605/=ex54.png" width="344" height="130" alt="TeXbook, 18.43" /&gt;&lt;/td&gt;
+&lt;td&gt;
+&lt;math display="block"&gt;
+&lt;mrow&gt;
+ &lt;mi&gt;det&lt;/mi&gt;
+ &lt;mo&gt;|&lt;/mo&gt;
+ &lt;mtable&gt;
+
+ &lt;mtr&gt;
+ &lt;mtd columnalign="center"&gt;
+ &lt;msub&gt;
+ &lt;mi&gt;c&lt;/mi&gt;
+ &lt;mn&gt;0&lt;/mn&gt;
+ &lt;/msub&gt;
+ &lt;/mtd&gt;
+ &lt;mtd columnalign="center"&gt;
+
+ &lt;msub&gt;
+ &lt;mi&gt;c&lt;/mi&gt;
+ &lt;mn&gt;1&lt;/mn&gt;
+ &lt;/msub&gt;
+ &lt;/mtd&gt;
+ &lt;mtd columnalign="center"&gt;
+ &lt;msub&gt;
+ &lt;mi&gt;c&lt;/mi&gt;
+
+ &lt;mn&gt;2&lt;/mn&gt;
+ &lt;/msub&gt;
+ &lt;/mtd&gt;
+ &lt;mtd columnalign="center"&gt;
+ &lt;mo&gt;&amp;mldr;&lt;/mo&gt;
+ &lt;/mtd&gt;
+ &lt;mtd columnalign="center"&gt;
+ &lt;msub&gt;
+
+ &lt;mi&gt;c&lt;/mi&gt;
+ &lt;mi&gt;n&lt;/mi&gt;
+ &lt;/msub&gt;
+ &lt;/mtd&gt;
+ &lt;/mtr&gt;
+ &lt;mtr&gt;
+ &lt;mtd columnalign="center"&gt;
+ &lt;msub&gt;
+
+ &lt;mi&gt;c&lt;/mi&gt;
+ &lt;mn&gt;1&lt;/mn&gt;
+ &lt;/msub&gt;
+ &lt;/mtd&gt;
+ &lt;mtd columnalign="center"&gt;
+ &lt;msub&gt;
+ &lt;mi&gt;c&lt;/mi&gt;
+
+ &lt;mn&gt;2&lt;/mn&gt;
+ &lt;/msub&gt;
+ &lt;/mtd&gt;
+ &lt;mtd columnalign="center"&gt;
+ &lt;msub&gt;
+ &lt;mi&gt;c&lt;/mi&gt;
+ &lt;mn&gt;3&lt;/mn&gt;
+
+ &lt;/msub&gt;
+ &lt;/mtd&gt;
+ &lt;mtd columnalign="center"&gt;
+ &lt;mo&gt;&amp;mldr;&lt;/mo&gt;
+ &lt;/mtd&gt;
+ &lt;mtd columnalign="center"&gt;
+ &lt;msub&gt;
+ &lt;mi&gt;c&lt;/mi&gt;
+
+ &lt;mrow&gt;
+ &lt;mi&gt;n&lt;/mi&gt;
+ &lt;mo&gt;+&lt;/mo&gt;
+ &lt;mn&gt;1&lt;/mn&gt;
+ &lt;/mrow&gt;
+ &lt;/msub&gt;
+ &lt;/mtd&gt;
+
+ &lt;/mtr&gt;
+ &lt;mtr&gt;
+ &lt;mtd columnalign="center"&gt;
+ &lt;msub&gt;
+ &lt;mi&gt;c&lt;/mi&gt;
+ &lt;mn&gt;2&lt;/mn&gt;
+ &lt;/msub&gt;
+ &lt;/mtd&gt;
+
+ &lt;mtd columnalign="center"&gt;
+ &lt;msub&gt;
+ &lt;mi&gt;c&lt;/mi&gt;
+ &lt;mn&gt;3&lt;/mn&gt;
+ &lt;/msub&gt;
+ &lt;/mtd&gt;
+ &lt;mtd columnalign="center"&gt;
+ &lt;msub&gt;
+
+ &lt;mi&gt;c&lt;/mi&gt;
+ &lt;mn&gt;4&lt;/mn&gt;
+ &lt;/msub&gt;
+ &lt;/mtd&gt;
+ &lt;mtd columnalign="center"&gt;
+ &lt;mo&gt;&amp;mldr;&lt;/mo&gt;
+ &lt;/mtd&gt;
+ &lt;mtd columnalign="center"&gt;
+
+ &lt;msub&gt;
+ &lt;mi&gt;c&lt;/mi&gt;
+ &lt;mrow&gt;
+ &lt;mi&gt;n&lt;/mi&gt;
+ &lt;mo&gt;+&lt;/mo&gt;
+ &lt;mn&gt;2&lt;/mn&gt;
+ &lt;/mrow&gt;
+
+ &lt;/msub&gt;
+ &lt;/mtd&gt;
+ &lt;/mtr&gt;
+ &lt;mtr&gt;
+ &lt;mtd columnalign="center"&gt;
+ &lt;mo&gt;&amp;#x22EE;&lt;/mo&gt;
+ &lt;/mtd&gt;
+ &lt;mtd columnalign="center"&gt;
+ &lt;mo&gt;&amp;#x22EE;&lt;/mo&gt;
+
+ &lt;/mtd&gt;
+ &lt;mtd columnalign="center"&gt;
+ &lt;mo&gt;&amp;#x22EE;&lt;/mo&gt;
+ &lt;/mtd&gt;
+ &lt;mtd columnalign="center"&gt;
+ &lt;/mtd&gt;
+ &lt;mtd columnalign="center"&gt;
+ &lt;mo&gt;&amp;#x22EE;&lt;/mo&gt;
+ &lt;/mtd&gt;
+
+ &lt;/mtr&gt;
+ &lt;mtr&gt;
+ &lt;mtd columnalign="center"&gt;
+ &lt;msub&gt;
+ &lt;mi&gt;c&lt;/mi&gt;
+ &lt;mi&gt;n&lt;/mi&gt;
+ &lt;/msub&gt;
+ &lt;/mtd&gt;
+
+ &lt;mtd columnalign="center"&gt;
+ &lt;msub&gt;
+ &lt;mi&gt;c&lt;/mi&gt;
+ &lt;mrow&gt;
+ &lt;mi&gt;n&lt;/mi&gt;
+ &lt;mo&gt;+&lt;/mo&gt;
+ &lt;mn&gt;1&lt;/mn&gt;
+
+ &lt;/mrow&gt;
+ &lt;/msub&gt;
+ &lt;/mtd&gt;
+ &lt;mtd columnalign="center"&gt;
+ &lt;msub&gt;
+ &lt;mi&gt;c&lt;/mi&gt;
+ &lt;mrow&gt;
+ &lt;mi&gt;n&lt;/mi&gt;
+
+ &lt;mo&gt;+&lt;/mo&gt;
+ &lt;mn&gt;2&lt;/mn&gt;
+ &lt;/mrow&gt;
+ &lt;/msub&gt;
+ &lt;/mtd&gt;
+ &lt;mtd columnalign="center"&gt;
+ &lt;mo&gt;&amp;mldr;&lt;/mo&gt;
+ &lt;/mtd&gt;
+
+ &lt;mtd columnalign="center"&gt;
+ &lt;msub&gt;
+ &lt;mi&gt;c&lt;/mi&gt;
+ &lt;mrow&gt;
+ &lt;mn&gt;2&lt;/mn&gt;
+ &lt;mi&gt;n&lt;/mi&gt;
+ &lt;/mrow&gt;
+
+ &lt;/msub&gt;
+ &lt;/mtd&gt;
+ &lt;/mtr&gt;
+ &lt;/mtable&gt;
+ &lt;mo&gt;|&lt;/mo&gt;
+ &lt;mo&gt;&amp;gt;&lt;/mo&gt;
+ &lt;mn&gt;0&lt;/mn&gt;
+&lt;/mrow&gt;
+
+&lt;/math&gt;
+&lt;/td&gt;&lt;/tr&gt;
+
+&lt;tr&gt;
+&lt;td&gt;25&lt;/td&gt;
+&lt;td&gt;&lt;img src="https://developer.mozilla.org/@api/deki/files/4598/=ex6.png" width="25" height="14" alt="TeXbook, 16.2-16.3" /&gt;&lt;/td&gt;
+&lt;td&gt;
+&lt;math display="block"&gt;
+&lt;msub&gt;
+ &lt;mi&gt;y&lt;/mi&gt;
+ &lt;msub&gt;
+ &lt;mi&gt;x&lt;/mi&gt;
+
+ &lt;mn&gt;2&lt;/mn&gt;
+ &lt;/msub&gt;
+&lt;/msub&gt;
+&lt;/math&gt;
+&lt;/td&gt;&lt;/tr&gt;
+
+&lt;tr&gt;
+&lt;td&gt;26&lt;/td&gt;
+&lt;td&gt;&lt;img src="https://developer.mozilla.org/@api/deki/files/4583/=ex7.png" width="90" height="23" alt="TeXbook, 16.4-16.5" /&gt;&lt;/td&gt;
+&lt;td&gt;
+&lt;math display="block"&gt;
+&lt;mrow&gt;
+ &lt;msubsup&gt;
+
+ &lt;mi&gt;x&lt;/mi&gt;
+ &lt;mn&gt;92&lt;/mn&gt;
+ &lt;mn&gt;31415&lt;/mn&gt;
+ &lt;/msubsup&gt;
+ &lt;mo&gt;+&lt;/mo&gt;
+ &lt;mi&gt;&amp;pi;&lt;/mi&gt;
+&lt;/mrow&gt;
+
+&lt;/math&gt;
+&lt;/td&gt;&lt;/tr&gt;
+
+&lt;tr&gt;
+&lt;td&gt;27&lt;/td&gt;
+&lt;td&gt;&lt;img src="https://developer.mozilla.org/@api/deki/files/4584/=ex8.png" width="27" height="36" alt="TeXbook, 16.4-16.5" /&gt;&lt;/td&gt;
+&lt;td&gt;
+&lt;math display="block"&gt;
+&lt;msubsup&gt;
+ &lt;mi&gt;x&lt;/mi&gt;
+ &lt;msubsup&gt;
+ &lt;mi&gt;y&lt;/mi&gt;
+
+ &lt;mi&gt;b&lt;/mi&gt;
+ &lt;mi&gt;a&lt;/mi&gt;
+ &lt;/msubsup&gt;
+ &lt;msubsup&gt;
+ &lt;mi&gt;z&lt;/mi&gt;
+ &lt;mi&gt;c&lt;/mi&gt;
+ &lt;mi&gt;d&lt;/mi&gt;
+
+ &lt;/msubsup&gt;
+&lt;/msubsup&gt;
+&lt;/math&gt;
+&lt;/td&gt;&lt;/tr&gt;
+
+&lt;tr&gt;
+&lt;td&gt;28&lt;/td&gt;
+&lt;td&gt;&lt;img src="https://developer.mozilla.org/@api/deki/files/4585/=ex9.png" width="24" height="22" alt="TeXbook, 16.4-16.5" /&gt;&lt;/td&gt;
+&lt;td&gt;
+&lt;math display="block"&gt;
+&lt;msubsup&gt;
+ &lt;mi&gt;y&lt;/mi&gt;
+ &lt;mn&gt;3&lt;/mn&gt;
+ &lt;mo&gt;&amp;#x2034;&lt;/mo&gt;
+&lt;/msubsup&gt;
+&lt;/math&gt;
+
+&lt;/td&gt;&lt;/tr&gt;
+&lt;/table&gt;</pre>
+
+<h3 id="CSS_Content">CSS Content</h3>
+
+<pre class="brush: css"> /* Table style */
+
+ body {
+ text-align: center;
+ }
+
+ table
+ {
+ border: solid thin;
+ border-collapse: collapse;
+ margin-left: auto;
+ margin-right: auto;
+ }
+
+ th
+ {
+ background-color: #ddf;
+ border: solid thin;
+ color: black;
+ padding: 5px;
+ }
+
+ td
+ {
+ border: solid thin;
+ padding: 5px;
+ text-align: center;
+ }
+
+ .Asana math { font-family: Asana Math; }
+ .Cambria math { font-family: Cambria Math; }
+ .LatinModern math { font-family: Latin Modern Math; }
+ .LucidaBright math { font-family: Lucida Bright Math; }
+ .Minion math { font-family: Minion Math; }
+ .STIX math { font-family: STIX Math; }
+ .TeXGyreBonum math { font-family: TeX Gyre Bonum Math; }
+ .TeXGyrePagella math { font-family: TeX Gyre Pagella Math; }
+ .TeXGyreSchola math { font-family: TeX Gyre Schola Math; }
+ .TeXGyreTermes math { font-family: TeX Gyre Termes Math; }
+ .XITS math { font-family: XITS Math; }
+ .XITSRTL math { font-family: XITS Math; direction: rtl; }
+</pre>
+
+<h3 id="JavaScript_Content">JavaScript Content</h3>
+
+<pre class="brush: js"> function updateMathFont()
+ {
+ var mathFont = document.getElementById("MathFont").value;
+ if (mathFont == "Default") {
+ document.body.removeAttribute("class");
+ } else {
+ document.body.setAttribute("class", mathFont);
+ }
+ }
+
+ function load()
+ {
+ document.getElementById("MathFont").
+ addEventListener("change", updateMathFont, false)
+ }
+
+ window.addEventListener("load", load, false);
+
+</pre>
+</div>
+
+<p>Der folgende Test enthält TeX-Beispielformeln aus Knuths TeX book und vergleichbare MathML-Repräsentationen. Es vergleicht das Rendering von der XeTeX - Engine, die das standarte Latin Modern Font benutzt, und das MathML-Rendering von Ihrem Browser, welcher das standarte Math Font oder ein alternatives OpenType MATH Font benutzt. Um das beste Rendering zu erhalten, stellen Sie sicher, dass sie diese <a href="/en-US/docs/Mozilla_MathML_Project/Fonts">Mathematischen Fonts</a> auf Ihrem Betriebssystem installiert haben und einen Browser mit OpenType Math - Support, wie Gecko 31.0 {{GeckoRelease("31.0")}} oder höher, benutzen. Sie können sich auch diese <a href="http://fred-wang.github.io/MathFonts/">Seite für Tests von Mathematischen OpenType Fonts</a>, welche stattdessen auf Web Fonts basiert. Zuletzt können Sie sich <a href="/en-US/docs/Mozilla/MathML_Project/a11y#mathml_torture_test">diese Tabelle</a> anschauen wollen, die vergleicht, wie die Tests von verschiedenen Screen Readern für Mozilla-Browser gelesen werden.</p>
+
+<p>{{ EmbedLiveSample('MathML_Torture_Test', '100%', '2500px') }}</p>
+
+<div id="cke_pastebin" style="position: absolute; top: 74.6667px; width: 1px; height: 1px; overflow: hidden; left: -1000px;"> </div>
diff --git a/files/de/mozilla/mathml_project/start/index.html b/files/de/mozilla/mathml_project/start/index.html
new file mode 100644
index 0000000000..69d5538254
--- /dev/null
+++ b/files/de/mozilla/mathml_project/start/index.html
@@ -0,0 +1,95 @@
+---
+title: MathML in Aktion
+slug: Mozilla/MathML_Project/Start
+translation_of: Mozilla/MathML_Project/Start
+---
+<h2 id="MathML_in_Aktion">MathML in Aktion</h2>
+
+<p>Sehen Sie schlaue Formeln auf dieser Seite? Nicht? Zu schlecht. Hier ist ein <a href="https://developer.mozilla.org/@api/deki/files/5690/=start.png">Screenshot</a> von dem, was Sie verpassen. <a href="https://developer.mozilla.org/de/docs/Mozilla/MathML_Project">Downloaden</a> Sie einen Mozilla-Browser, der MathML untestützt, um diese traurige Situation zu ändern.</p>
+
+<p>You already have a MathML-enabled build but what you see on the screenshot is not what you get? In that case you are probably missing some crucial <a href="fonts/">MathML fonts</a>.</p>
+
+<p>Now that you are well-equipped, you should be able to see this inline equation with varying accents: <math> <mrow> <mover> <mi>x</mi> <mo>^</mo> </mover> <mo>+</mo> <mover> <mrow><mi>x</mi><mo>⁢</mo><mi>y</mi></mrow> <mo>^</mo> </mover> <mo>+</mo> <mover> <mrow><mi>x</mi><mo>⁢</mo><mi>y</mi><mo>⁢</mo><mi>z</mi></mrow> <mo>^</mo> </mover> <mo>.</mo> </mrow> </math> Next to it is this tiny formula, <math> <mrow> <mo>det</mo> <mo lspace="0" rspace="0" symmetric="false">|</mo> <mfrac linethickness="0"> <mi>a</mi> <mi>c</mi> </mfrac> <mfrac linethickness="0"> <mi>b</mi> <mi>d</mi> </mfrac> <mo lspace="0" rspace="0" symmetric="false">|</mo> <mo>=</mo> <mi>a</mi> <mi>d</mi> <mo>-</mo> <mi>b</mi> <mi>c</mi> <mo>,</mo> </mrow> </math> which can also be typeset in displaystyle as <math display="block"> <mrow> <mo>det</mo> <mo>|</mo> <mtable> <mtr> <mtd> <mi>a</mi> </mtd> <mtd> <mi>b</mi> </mtd> </mtr> <mtr> <mtd> <mi>c</mi> </mtd> <mtd> <mi>d</mi> </mtd> </mtr> </mtable> <mo>|</mo> <mo>=</mo> <mi>a</mi> <mi>d</mi> <mo>-</mo> <mi>b</mi> <mi>c</mi> <mo>.</mo> </mrow> </math></p>
+
+<p>Mathematical typesetting is picky. <a href="./">MathML in Mozilla</a> aims at complying with the <a href="http://www.w3.org/Math/">MathML specification</a> so that<em>What You See Is What You Markup</em>, or to put it another way<em>What You See Is What You Made</em>, or in short "WYSIWYM". The difference between these two is in the markup! <math display="block"> <msup> <mrow> <mo minsize="3" symmetric="false">(</mo> <mo>...</mo> <msup> <mrow> <mo minsize="2" symmetric="false">(</mo> <msup> <mrow> <mo symmetric="false">(</mo> <msub> <mi>a</mi> <mn>0</mn> </msub> <mo>+</mo> <msub> <mi>a</mi> <mn>1</mn> </msub> <mo symmetric="false">)</mo> </mrow> <msub> <mi>n</mi> <mn>1</mn> </msub> </msup> <mo>+</mo> <msub> <mi>a</mi> <mn>2</mn> </msub> <mo minsize="2" symmetric="false">)</mo> </mrow> <msub> <mi>n</mi> <mn>2</mn> </msub> </msup> <mo>+</mo> <mo>...</mo> <mo>+</mo> <msub> <mi>a</mi> <mi>p</mi> </msub> <mo minsize="3" symmetric="false">)</mo> </mrow> <msub> <mi>n</mi> <mi>p</mi> </msub> </msup> </math> <math display="block"> <msup> <mrow> <mo>(</mo> <mo>...</mo> <msup> <mrow> <mo>(</mo> <msup> <mrow> <mo>(</mo> <msub> <mi>a</mi> <mn>0</mn> </msub> <mo>+</mo> <msub> <mi>a</mi> <mn>1</mn> </msub> <mo>)</mo> </mrow> <msub> <mi>n</mi> <mn>1</mn> </msub> </msup> <mo>+</mo> <msub> <mi>a</mi> <mn>2</mn> </msub> <mo>)</mo> </mrow> <msub> <mi>n</mi> <mn>2</mn> </msub> </msup> <mo>+</mo> <mo>...</mo> <mo>+</mo> <msub> <mi>a</mi> <mi>p</mi> </msub> <mo>)</mo> </mrow> <msub> <mi>n</mi> <mi>p</mi> </msub> </msup> </math></p>
+
+<p>The roots of this bold equation <math> <mstyle mathvariant="bold"> <msup> <mi>y</mi> <mn>3</mn> </msup> <mo>+</mo> <mi>p</mi> <mi>y</mi> <mo>+</mo> <mi>q</mi> <mo>=</mo> <mn>0</mn> </mstyle> </math> are also bold <math display="block"> <mstyle mathvariant="bold"> <mi>y</mi> <mo>=</mo> <mroot> <mrow> <mo>-</mo> <mfrac> <mi>q</mi> <mn>2</mn> </mfrac> <mo>+</mo> <mroot> <mrow> <mfrac> <msup> <mi>q</mi> <mn>2</mn> </msup> <mn>4</mn> </mfrac> <mo>+</mo> <mfrac> <msup> <mi>p</mi> <mn>3</mn> </msup> <mn>27</mn> </mfrac> </mrow> <mn>2</mn> </mroot> </mrow> <mn>3</mn> </mroot> <mo>+</mo> <mroot> <mrow> <mo>-</mo> <mfrac> <mi>q</mi> <mn>2</mn> </mfrac> <mo>-</mo> <mroot> <mrow> <mfrac> <msup> <mi>q</mi> <mn>2</mn> </msup> <mn>4</mn> </mfrac> <mo>+</mo> <mfrac> <msup> <mi>p</mi> <mn>3</mn> </msup> <mn>27</mn> </mfrac> </mrow> <mn>2</mn> </mroot> </mrow> <mn>3</mn> </mroot> <mo>.</mo> </mstyle> </math></p>
+
+<p>As for the roots of the equation <math> <mrow> <mi>a</mi> <msup> <mi>x</mi> <mn>2</mn> </msup> <mo>+</mo> <mi>b</mi> <mi>x</mi> <mo>+</mo> <mi>c</mi> <mo>=</mo> <mn>0</mn> <mo>,</mo> </mrow> </math> click anywhere in the yellow area to zoom-in/zoom-out:</p>
+
+<div style="display: none;">
+<h2 id="Zoomable_Math" name="Zoomable_Math">Zoomable Math</h2>
+
+<h3 id="HTML_Content">HTML Content</h3>
+
+<pre class="brush: html"> &lt;p&gt;
+ &lt;math display="block"&gt;
+ &lt;mstyle id="zoomableMath" mathbackground="yellow"&gt;
+ &lt;mrow&gt;
+ &lt;mi&gt;x&lt;/mi&gt;
+ &lt;mo&gt;=&lt;/mo&gt;
+ &lt;mfrac&gt;
+ &lt;mrow&gt;
+ &lt;mrow&gt;
+ &lt;mo&gt;-&lt;/mo&gt;
+ &lt;mi&gt;b&lt;/mi&gt;
+ &lt;/mrow&gt;
+ &lt;mo&gt;&amp;#xB1;&lt;/mo&gt;
+ &lt;msqrt&gt;
+ &lt;mrow&gt;
+ &lt;msup&gt;
+ &lt;mi&gt;b&lt;/mi&gt;
+ &lt;mn&gt;2&lt;/mn&gt;
+ &lt;/msup&gt;
+ &lt;mo&gt;-&lt;/mo&gt;
+ &lt;mrow&gt;
+ &lt;mn&gt;4&lt;/mn&gt;
+ &lt;mi&gt;a&lt;/mi&gt;
+ &lt;mi&gt;c&lt;/mi&gt;
+ &lt;/mrow&gt;
+ &lt;/mrow&gt;
+ &lt;/msqrt&gt;
+ &lt;/mrow&gt;
+ &lt;mrow&gt;
+ &lt;mn&gt;2&lt;/mn&gt;
+ &lt;mi&gt;a&lt;/mi&gt;
+ &lt;/mrow&gt;
+ &lt;/mfrac&gt;
+ &lt;/mrow&gt;
+ &lt;/mstyle&gt;
+ &lt;/math&gt;
+ &lt;/p&gt;
+
+</pre>
+
+<h3 id="JavaScript_Content">JavaScript Content</h3>
+
+<pre class="brush: js"> function zoomToggle()
+ {
+ if (this.hasAttribute("mathsize")) {
+ this.removeAttribute("mathsize");
+ } else {
+ this.setAttribute("mathsize", "200%");
+ }
+ }
+
+ function load()
+ {
+ document.getElementById("zoomableMath").
+ addEventListener("click", zoomToggle, false);
+ }
+
+ window.addEventListener("load", load, false);</pre>
+</div>
+
+<p style="text-align: center;">{{ EmbedLiveSample('Zoomable_Math') }}</p>
+
+<p>Consider an interesting markup like this <math display="block"> <mrow> <mo>{</mo> <mtable> <mtr> <mtd> <mrow> <msub> <mi>u</mi> <mi>t</mi> </msub> <mo>+</mo> <msub> <mrow> <mi>f</mi> <mo>(</mo> <mi>u</mi> <mo>)</mo> </mrow> <mi>x</mi> </msub> <mo>=</mo> <mn>0</mn> </mrow> </mtd> </mtr> <mtr> <mtd> <mrow> <mi>u</mi> <mo stretchy="false">(</mo> <mn>0</mn> <mo>,</mo> <mi>x</mi> <mo stretchy="false">)</mo> <mo>=</mo> <mrow> <mo>{</mo> <mtable> <mtr> <mtd> <mrow> <msup> <mi>u</mi> <mo>-</mo> </msup> </mrow> </mtd> <mtd> <mrow> <mtext>if </mtext> <mi>x</mi> <mo>&lt;</mo> <mn>0</mn> </mrow> </mtd> </mtr> <mtr> <mtd> <mrow> <msup> <mi>u</mi> <mo>+</mo> </msup> </mrow> </mtd> <mtd> <mrow> <mtext>if </mtext> <mi>x</mi> <mo>&gt;</mo> <mn>0</mn> </mrow> </mtd> </mtr> </mtable> </mrow> </mrow> </mtd> </mtr> </mtable> </mrow> </math> or other complex markups like these <math display="block"> <mrow> <msub> <mover> <mi>Ell</mi> <mo>^</mo> </mover> <mi>Y</mi> </msub> <mo stretchy="false">(</mo> <mi>Z</mi> <mo>;</mo> <mi>z</mi> <mo>,</mo> <mi>τ</mi> <mo stretchy="false">)</mo> <mo>:=</mo> <msub> <mo>∫</mo> <mi>Y</mi> </msub> <mo>(</mo> <munder> <mo>∏</mo> <mi>l</mi> </munder> <mfrac> <mrow> <mrow> <mo>(</mo> <mfrac> <msub> <mi>y</mi> <mi>l</mi> </msub> <mrow> <mn>2</mn> <mi>π</mi> <mi mathvariant="normal">i</mi> </mrow> </mfrac> <mo>)</mo> </mrow> <mrow> <mi>θ</mi> <mo>(</mo> <mfrac> <msub> <mi>y</mi> <mi>l</mi> </msub> <mrow> <mn>2</mn> <mi>π</mi> <mi mathvariant="normal">i</mi> </mrow> </mfrac> <mo>-</mo> <mi>z</mi> <mo>)</mo> </mrow> <msup> <mi>θ</mi> <mo>′</mo> </msup> <mo stretchy="false">(</mo> <mn>0</mn> <mo stretchy="false">)</mo> </mrow> <mrow> <mi>θ</mi> <mo stretchy="false">(</mo> <mo>-</mo> <mi>z</mi> <mo stretchy="false">)</mo> <mrow> <mi>θ</mi> <mo>(</mo> <mfrac> <msub> <mi>y</mi> <mi>l</mi> </msub> <mrow> <mn>2</mn> <mi>π</mi> <mi mathvariant="normal">i</mi> </mrow> </mfrac> <mo>)</mo> </mrow> </mrow> </mfrac> <mo>)</mo> <mo>×</mo> <mo>(</mo> <munder> <mo>∏</mo> <mi>k</mi> </munder> <mfrac> <mrow> <mrow> <mi>θ</mi> <mo>(</mo> <mfrac> <msub> <mi>e</mi> <mi>k</mi> </msub> <mrow> <mn>2</mn> <mi>π</mi> <mi mathvariant="normal">i</mi> </mrow> </mfrac> <mo>-</mo> <mo stretchy="false">(</mo> <msub> <mi>α</mi> <mi>k</mi> </msub> <mo>+</mo> <mn>1</mn> <mo stretchy="false">)</mo> <mi>z</mi> <mo>)</mo> </mrow> <mi>θ</mi> <mo stretchy="false">(</mo> <mo>-</mo> <mi>z</mi> <mo stretchy="false">)</mo> </mrow> <mrow> <mrow> <mi>θ</mi> <mo>(</mo> <mfrac> <msub> <mi>e</mi> <mi>k</mi> </msub> <mrow> <mn>2</mn> <mi>π</mi> <mi mathvariant="normal">i</mi> </mrow> </mfrac> <mo>-</mo> <mi>z</mi> <mo>)</mo> </mrow> <mi>θ</mi> <mo stretchy="false">(</mo> <mo>-</mo> <mo stretchy="false">(</mo> <msub> <mi>α</mi> <mi>k</mi> </msub> <mo>+</mo> <mn>1</mn> <mo stretchy="false">)</mo> <mi>z</mi> <mo stretchy="false">)</mo> </mrow> </mfrac> <mo>)</mo> </mrow> </math> <math display="block"> <mrow> <mi>π</mi> <mo stretchy="false">(</mo> <mi>n</mi> <mo stretchy="false">)</mo> <mo>=</mo> <munderover> <mo>∑</mo> <mrow> <mi>m</mi> <mo>=</mo> <mn>2</mn> </mrow> <mi>n</mi> </munderover> <mrow> <mo>⌊</mo> <msup> <mrow> <mo>(</mo> <mrow> <munderover> <mo>∑</mo> <mrow> <mi>k</mi> <mo>=</mo> <mn>1</mn> </mrow> <mrow> <mi>m</mi> <mo>-</mo> <mn>1</mn> </mrow> </munderover> <mrow> <mo minsize="1.5">⌊</mo> <mo>(</mo> <mi>m</mi> <mo>/</mo> <mi>k</mi> <mo>)</mo> <mo minsize="2">/</mo> <mo>⌈</mo> <mi>m</mi> <mo>/</mo> <mi>k</mi> <mo>⌉</mo> <mo minsize="1.5">⌋</mo> </mrow> </mrow> <mo>)</mo> </mrow> <mrow> <mo>-</mo> <mn>1</mn> </mrow> </msup> <mo>⌋</mo> </mrow> </mrow> </math> <math display="block"> <mrow> <msub> <mrow> <mo>‖</mo> <mi>ϕ</mi> <mo>‖</mo> </mrow> <mrow> <msubsup> <mi>W</mi> <mi>s</mi> <mi>k</mi> </msubsup> <mo stretchy="false">(</mo> <msub> <mi>Ω</mi> <mi>g</mi> </msub> <mo stretchy="false">)</mo> </mrow> </msub> <mo>≝</mo> <msup> <mrow> <mo>(</mo> <munder> <mo>∑</mo> <mrow> <mo>|</mo> <mi>α</mi> <mo>|</mo> <mo>≦</mo> <mi>k</mi> </mrow> </munder> <msubsup> <mfenced close="‖" open="‖"> <mfrac> <mrow> <msup> <mo>∂</mo> <mi>α</mi> </msup> <mi>ϕ</mi> </mrow> <mrow> <mo>∂</mo> <msup> <mi>ξ</mi> <mi>α</mi> </msup> </mrow> </mfrac> </mfenced> <mrow> <msup> <mi>L</mi> <mi>s</mi> </msup> <mo stretchy="false">(</mo> <msub> <mi>Ω</mi> <mi>g</mi> </msub> <mo stretchy="false">)</mo> </mrow> <mi>s</mi> </msubsup> <mo>)</mo> </mrow> <mrow> <mn>1</mn> <mo>/</mo> <mi>s</mi> </mrow> </msup> </mrow> </math></p>
+
+<p>For more examples, refer to links on the <a href="./">MathML Project</a> page, and if you are <a href="build.html">building</a> your own Mozilla binary, see the directory<em>mozilla/layout/mathml/tests</em>.</p>
+
+<p>Now, what next? As you try out MathML in Mozilla, what to do with those few things that appear to you not to work as per the MathML spec? Or what about those things that just seem itchy, and that you wish could be done just a little better? Or what about those things that were working before and are not working anymore (a.k.a. regressions)? In either case, head over to <a href="../../quality/bug-writing-guidelines.html">Bugzilla</a> to report the discrepancies. Bugzilla has a big memory for these things, and besides, how would your problems be fixed if they are not reported?!</p>
+
+<p><a href="../../get-involved.html">Getting involved</a> is part of your contribution towards enriching <a href="../../newlayout/">Gecko</a> with an elegant standards-compliant MathML renderer. Your feedback can be manifested by <a href="authoring.html">putting MathML content on the web</a>, reporting bugs in <a href="../../quality/bug-writing-guidelines.html">Bugzilla</a>, and, if you can help with code, <a href="http://lxr.mozilla.org/seamonkey/source/layout/mathml/">inspecting/improving the current code</a>, and/or picking up an item in the <a href="update.html">ToDo</a> list.</p>
+
+<div id="cke_pastebin" style="position: absolute; top: 1775.63px; width: 1px; height: 1px; overflow: hidden; left: -1000px;"> </div>
diff --git a/files/de/mozilla/mobile/index.html b/files/de/mozilla/mobile/index.html
new file mode 100644
index 0000000000..b3a3dc1803
--- /dev/null
+++ b/files/de/mozilla/mobile/index.html
@@ -0,0 +1,25 @@
+---
+title: Mobil
+slug: Mozilla/Mobile
+tags:
+ - Mozilla
+ - mobil
+translation_of: Mozilla/Mobile
+---
+<h2 id="Firefox_OS" name="Firefox_OS"><a href="/en-US/docs/Archive/B2G_OS">Firefox OS</a></h2>
+
+<p>Firefox OS ist ein Open Source Betriebssystem, welches Linux und Mozilla's Gecko Rendering Engine verwendet um eine Benutzeroberfläche und viele Anwendungen bereit zu stellen, die komplett in HTML, CSS und JavaScript geschrieben sind.</p>
+
+<p>Informiere Dich darüber wie Firefox OS installiert wird und wie Apps für Firefox OS entwickelt werden.</p>
+
+<h2 id="Firefox_for_Android" name="Firefox_for_Android"><a href="/en-US/docs/Mozilla/Firefox_for_Android">Firefox für Android</a></h2>
+
+<p>Firefox für Android ist Mozilla's Web Browser für Android-Geräte. Firefox für Android wurde vor kurzem komplett überarbeitet um Android's natives User Interface zu nutzen und um es schneller, schlanker und besser anpassbar zu machen. Es unterstützt hardware-nahe APIs um z.B. auf die Kamera und die Telefonfunktionen zugreifen zu können.</p>
+
+<p>Informiere Dich darüber wie Du beim Aufbau von Firefox für Android helfen kannst, wie die APIs benutzt werden und wie mobile Add Ons entwickelt werden.</p>
+
+<h2 id="Mobile_web_development" name="Mobile_web_development"><a href="/en-US/docs/Web/Guide/Mobile">Mobile Web Entwicklung</a></h2>
+
+<p>Mobile Geräte haben deutlich andere Hardware-Voraussetzungen als PCs oder Laptops und viele der genutzen APIs sind noch nicht standardisiert.</p>
+
+<p>Informiere Dich darüber wie Web-Seiten entwickelt werden, die auf Mobil-Geräten gut aussehen und erfahre mehr über die neuen Möglichkeiten dieser Technologien. Lerne wie Du sicherstellen kannst, dass Deine Web-Seiten auf verschiedenen Browsern gut funktionieren.</p>
diff --git a/files/de/mozilla/mobile/viewport_meta_tag/index.html b/files/de/mozilla/mobile/viewport_meta_tag/index.html
new file mode 100644
index 0000000000..c17554471a
--- /dev/null
+++ b/files/de/mozilla/mobile/viewport_meta_tag/index.html
@@ -0,0 +1,86 @@
+---
+title: Using the viewport meta tag to control layout on mobile browsers
+slug: Mozilla/Mobile/Viewport_meta_tag
+translation_of: Mozilla/Mobile/Viewport_meta_tag
+---
+<h2 id="Hintergrund">Hintergrund</h2>
+
+<p> </p>
+
+<p>Der {{glossary("viewport")}} des Browsers ist der Bereich des Fensters, in dem Webinhalte zu sehen sind. Dies ist oft nicht die gleiche Größe wie die komplette gerenderte Seite. In diesem Fall stellt der Browser Scrollbars zur Verfügung, mit denen der Benutzer umherscrollen und auf alle Inhalte zugreifen kann.</p>
+
+<p>Geräte mit schmalem Display (z.B. Handys) rendern Seiten in einem virtuellen Fenster oder Ansichtsfenster, das normalerweise breiter als der Bildschirm ist, und verkleinern dann das gerenderte Ergebnis, so dass es auf einmal zu sehen ist. Die Benutzer können dann schwenken und zoomen, um verschiedene Bereiche der Seite zu sehen. Wenn beispielsweise ein mobiler Bildschirm eine Breite von 640px hat, können Seiten mit einem virtuellen Ansichtsfenster von 980px gerendert und dann verkleinert werden, um in den 640px-Bereich zu passen.</p>
+
+<p>Dies geschieht, weil viele Seiten nicht mobil optimiert sind und bei einer kleinen Ansichtsfensterbreite brechen (oder zumindest schlecht aussehen). Dieses virtuelle Ansichtsfenster ist eine Möglichkeit, nicht-mobile optimierte Seiten auf schmalen Bildschirmen besser aussehen zu lassen.</p>
+
+<h3 id="Enter_viewport_meta_tag">Enter viewport meta tag</h3>
+
+<p>However, this mechanism is not so good for pages that are optimized for narrow screens using <a href="/en-US/docs/Web/CSS/Media_Queries">media queries</a> — if the virtual viewport is 980px for example, media queries that kick in at 640px or 480px or less will never be used, limiting the effectiveness of such responsive design techniques.</p>
+
+<p>To mitigate this problem, Apple introduced the "viewport meta tag" in Safari iOS to let web developers control the viewport's size and scale. Many other mobile browsers now support this tag, although it is not part of any web standard. Apple's <a class="external" href="https://developer.apple.com/library/content/documentation/AppleApplications/Reference/SafariWebContent/UsingtheViewport/UsingtheViewport.html">documentation</a> does a good job explaining how web developers can use this tag, but we had to do some detective work to figure out exactly how to implement it in Fennec. For example, Safari's documentation says the content is a "comma-delimited list," but existing browsers and web pages use any mix of commas, semicolons, and spaces as separators.</p>
+
+<p>Learn more about viewports in different mobile browsers in <a class="external" href="http://www.quirksmode.org/mobile/viewports2.html" title="http://www.quirksmode.org/mobile/viewports2.html">A Tale of Two Viewports</a> at quirksmode.org.</p>
+
+<h2 id="Viewport_basics">Viewport basics</h2>
+
+<p>A typical mobile-optimized site contains something like the following:</p>
+
+<pre>&lt;meta name="viewport" content="width=device-width, initial-scale=1"&gt;</pre>
+
+<p>The <code>width</code> property controls the size of the viewport. It can be set to a specific number of pixels like <code>width=600</code> or to the special value <code>device-width</code>, which is the width of the screen in CSS pixels at a scale of 100%. (There are corresponding <code>height</code> and <code>device-height</code> values, which may be useful for pages with elements that change size or position based on the viewport height.)</p>
+
+<p>The <code>initial-scale</code> property controls the zoom level when the page is first loaded. The <code>maximum-scale</code>, <code>minimum-scale</code>, and <code>user-scalable</code> properties control how users are allowed to zoom the page in or out.</p>
+
+<h2 id="A_pixel_is_not_a_pixel">A pixel is not a pixel</h2>
+
+<p>In recent years, screen resolutions have risen to the size that individual pixels are hard to distinguish with the human eye. For example, recent smartphones generally have a 5-inch screens with resolutions upwards of 1920—1080 pixels (~400 dpi). Because of this, many browsers can display their pages in a smaller physical size by translating multiple hardware pixels for each CSS "pixel". Initially this caused usability and readability problems on many touch-optimized web sites. Peter-Paul Koch wrote about this problem in <a class="external" href="http://www.quirksmode.org/blog/archives/2010/04/a_pixel_is_not.html">A pixel is not a pixel</a>.</p>
+
+<p>On high dpi screens, pages with <code>initial-scale=1</code> will effectively be zoomed by browsers. Their text will be smooth and crisp, but their bitmap images will probably not take advantage of the full screen resolution. To get sharper images on these screens, web developers may want to design images – or whole layouts – at a higher scale than their final size and then scale them down using CSS or viewport properties. This is consistent with the <a class="external" href="http://www.w3.org/TR/CSS2/syndata.html#length-units">CSS 2.1 specification</a>, which says:</p>
+
+<blockquote>
+<p>If the pixel density of the output device is very different from that of a typical computer display, the user agent should rescale pixel values. It is recommended that the pixel unit refer to the whole number of device pixels that best approximates the reference pixel. It is recommended that the reference pixel be the visual angle of one pixel on a device with a pixel density of 96dpi and a distance from the reader of an arm's length.</p>
+</blockquote>
+
+<p>For web developers, this means that the size of a page is much smaller than the actual pixel count and browsers may size their layouts and images accordingly. But remember that not all mobile devices are the same width; you should make sure that your pages work well in a large variation of screen sizes and orientations.</p>
+
+<p>The default pixel ratio depends on the display density. On a display with density less than 200dpi, the ratio is 1.0. On displays with density between 200 and 300dpi, the ratio is 1.5. For displays with density over 300dpi, the ratio is the integer floor(<em>density</em>/150dpi). Note that the default ratio is true only when the viewport scale equals 1. Otherwise, the relationship between CSS pixels and device pixels depends on the current zoom level.</p>
+
+<h2 id="Viewport_width_and_screen_width">Viewport width and screen width</h2>
+
+<p>Sites can set their viewport to a specific size. For example, the definition <code>"width=320, initial-scale=1"</code> can be used to fit precisely onto a small phone display in portrait mode. This can cause <a class="external" href="http://starkravingfinkle.org/blog/2010/01/perils-of-the-viewport-meta-tag/">problems</a> when the browser doesn't render a page at a larger size. To fix this, browsers will expand the viewport width if necessary to fill the screen at the requested scale. This is especially useful on large-screen devices like the iPad. (Allen Pike's <a class="external" href="http://www.antipode.ca/2010/choosing-a-viewport-for-ipad-sites/">Choosing a viewport for iPad sites</a> has a good explanation for web developers.)</p>
+
+<p>For pages that set an initial or maximum scale, this means the <code>width</code> property actually translates into a <em>minimum</em> viewport width. For example, if your layout needs at least 500 pixels of width then you can use the following markup. When the screen is more than 500 pixels wide, the browser will expand the viewport (rather than zoom in) to fit the screen:</p>
+
+<pre>&lt;meta name="viewport" content="width=500, initial-scale=1"&gt;</pre>
+
+<p>Other <a href="https://developer.mozilla.org/en-US/docs/Web/HTML/Element/meta#Attributes">attributes</a> that are available are <code>minimum-scale</code>, <code>maximum-scale</code>, and <code>user-scalable</code>. These properties affect the initial scale and width, as well as limiting changes in zoom level.</p>
+
+<p>Not all mobile browsers handle orientation changes in the same way. For example, Mobile Safari often just zooms the page when changing from portrait to landscape, instead of laying out the page as it would if originally loaded in landscape. If web developers want their scale settings to remain consistent when switching orientations on the iPhone, they must add a <code>maximum-scale</code> value to prevent this zooming, which has the sometimes-unwanted side effect of preventing users from zooming in:</p>
+
+<pre>&lt;meta name="viewport" content="initial-scale=1, maximum-scale=1"&gt;
+</pre>
+
+<h2 id="Common_viewport_sizes_for_mobile_and_tablet_devices">Common viewport sizes for mobile and tablet devices</h2>
+
+<p>If you want to know what mobile and tablet devices have which viewport widths, there is a comprehensive list of <a href="http://viewportsizes.com/" title="http://viewportsizes.com/">mobile and tablet viewport sizes here</a>. This gives information such as viewport width on portrait and landscape orientation as well as physical screen size, operating system and the pixel density of the device.</p>
+
+<h2 id="Specifications">Specifications</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">Specification</th>
+ <th scope="col">Status</th>
+ <th scope="col">Comment</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('CSS3 Device', '#viewport-meta', '&lt;meta name="viewport"&gt;')}}</td>
+ <td>{{Spec2('CSS3 Device')}}</td>
+ <td>Non-normatively describes the Viewport META element</td>
+ </tr>
+ </tbody>
+</table>
+
+<p>There is clearly demand for the viewport meta tag, since it is supported by most popular mobile browsers and used by thousands of web sites. It would be good to have a true standard for web pages to control viewport properties. As the standardization process proceeds, we at Mozilla will work to keep up to date with any changes.</p>
diff --git a/files/de/mozilla/performance/index.html b/files/de/mozilla/performance/index.html
new file mode 100644
index 0000000000..1127358db7
--- /dev/null
+++ b/files/de/mozilla/performance/index.html
@@ -0,0 +1,145 @@
+---
+title: Performance
+slug: Mozilla/Performance
+tags:
+ - Add-ons
+ - Debugging
+ - Development
+ - Mozilla
+ - NeedsTranslation
+ - Performance
+ - TopicStub
+translation_of: Mozilla/Performance
+---
+<p>The articles linked to from here will help you improve performance, whether you're developing core Mozilla code or an add-on.</p>
+
+<table class="topicpage-table">
+ <tbody>
+ <tr>
+ <td>
+ <h3 id="Documentation">Documentation</h3>
+
+ <dl>
+ <dt><a href="/en/Performance/Reporting_a_Performance_Problem" title="en/Performance/Reporting_a_Performance_Problem">Reporting a Performance Problem</a></dt>
+ <dd>A user friendly guide to reporting a performance problem. A development environment is not required.</dd>
+ <dt><a href="Benchmarking" title="Performance/Benchmarking advice">Benchmarking</a></dt>
+ <dd>Tips on generating valid performance metrics.</dd>
+ <dt><a href="/en/Extensions/Performance_best_practices_in_extensions" title="en/Extensions/Performance best practices in extensions">Performance best practices in extensions</a></dt>
+ <dd>A performance "best practices" guide for extension developers.</dd>
+ <dt><a href="/en/Performance/Measuring_add-on_startup_performance" title="en/Measuring Add-on Startup Performance">Measuring Add-on Startup Performance</a></dt>
+ <dd>A guide for add-on developers on how to set up a performance testing environment.</dd>
+ <dt><a href="/en/XUL_School/Appendix_A:_Add-on_Performance" title="en/XUL School/Appendix A: Add-on Performance">XUL School: Add-on Performance</a></dt>
+ <dd>Tips for add-on developers to help them avoid impairing application performance.</dd>
+ <dt><a href="/en/Performance/GPU_performance" title="en/GPU performance">GPU performance</a></dt>
+ <dd>Tips for profiling and improving performance when using a GPU.</dd>
+ <dt><a href="/en-US/docs/Mozilla/Performance/ScrollLinkedEffects">Scroll-Linked Effects</a></dt>
+ <dd>Information on scroll-linked effects, their effect on performance, related tools, and possible mitigation techniques.</dd>
+ <dt><a href="/en-US/docs/Mozilla/Performance/Automated_Performance_Testing_and_Sheriffing">Automated Performance Testing and Sheriffing</a></dt>
+ <dd>Information on automated performance testing and sheriffing at Mozilla.</dd>
+ <dt><a href="/en-US/docs/Mozilla/Firefox/Performance_best_practices_for_Firefox_fe_engineers">Best practices for Front-end Engineers</a></dt>
+ <dd>Tips for reducing impacts on browser performance in front-end code.</dd>
+ </dl>
+
+ <p><span class="alllinks"><a class="internal" href="/Special:Tags?tag=Performance" title="Special:Tags?tag=Performance">View all pages tagged with "Performance"...</a></span></p>
+
+ <h3 id="Memory_profiling_and_leak_detection_tools">Memory profiling and leak detection tools</h3>
+
+ <dl>
+ <dt><a href="https://developer.mozilla.org/en-US/docs/Tools/Memory" title="en/Performance/Profiling with the Built-in Profiler">The Developer Tools "Memory" panel</a></dt>
+ <dd>The memory panel in the devtools supports taking heap snapshots, diffing them, computing dominator trees to surface "heavy retainers", and recording allocation stacks.</dd>
+ </dl>
+
+ <dl>
+ <dt><a href="/en-US/docs/Mozilla/Performance/about:memory">about:memory</a></dt>
+ <dd>about:memory is the easiest-to-use tool for measuring memory usage in Mozilla code, and is the best place to start. It also lets you do other memory-related operations like trigger GC and CC, dump GC &amp; CC logs, and dump DMD reports. about:memory is built on top of Firefox's <a href="/en-US/docs/Mozilla/Performance/Memory_reporting">memory reporting</a> infrastructure.</dd>
+ <dt><a href="/en-US/docs/Mozilla/Performance/DMD">DMD</a></dt>
+ <dd>DMD is a tool that identifies shortcomings in about:memory's measurements, and can also do multiple kinds of general heap profiling.</dd>
+ <dt><a href="/en-US/docs/Mozilla/Performance/AWSY">Are We Slim Yet</a></dt>
+ <dd>areweslimyet.com (a.k.a. AWSY) is a memory usage and regression tracker.</dd>
+ <dt><a href="https://developer.mozilla.org/en-US/docs/Mozilla/Performance/BloatView">BloatView</a></dt>
+ <dd>BloatView prints per-class statistics on allocations and refcounts, and provides gross numbers on the amount of memory being leaked broken down by class. It is used as part of Mozilla's continuous integration testing.</dd>
+ <dt><a href="https://developer.mozilla.org/en-US/docs/Mozilla/Performance/Refcount_tracing_and_balancing">Refcount tracing and balancing</a></dt>
+ <dd>Refcount tracing and balancing are ways to track down leaks caused by incorrect uses of reference counting. They are slow and not particular easy to use, and thus most suitable for use by expert developers.</dd>
+ <dt><a href="/en-US/docs/Mozilla/Performance/GC_and_CC_logs">GC and CC logs</a></dt>
+ <dd>GC and CC logs can be generated and analyzed to in various ways. In particular, they can help you understand why a particular object is being kept alive.</dd>
+ <dt><a href="/en-US/docs/Mozilla/Testing/Valgrind">Valgrind</a></dt>
+ <dd><a class="external text" href="http://valgrind.org/" rel="nofollow">Valgrind</a> is a tool that detects various memory-related problems at runtime, including leaks. Valgrind is used as <a class="external text" href="/en-US/docs/Valgrind_test_job" rel="nofollow">part</a> of Mozilla's continuous integration testing, though the coverage is limited because Valgrind is slow.</dd>
+ <dt><a href="https://developer.mozilla.org/en-US/docs/Mozilla/Testing/Firefox_and_Address_Sanitizer#LeakSanitizer">LeakSanitizer</a></dt>
+ <dd><span class="external text">LeakSanitizer</span> (a.k.a. LSAN) is similar to Valgrind, but it runs faster because it uses static source code instrumentation. LSAN is part of Mozilla's continuous integration testing, with most tests running through it as part of the AddressSanitizer (a.k.a. ASAN) test jobs.</dd>
+ <dt><a href="https://developer.apple.com/documentation/Performance/Conceptual/ManagingMemory/Articles/FindingLeaks.html">Apple tools</a></dt>
+ <dd>Apple provides <span class="external text">some tools</span> for Mac OS X that report similar problems to those reported by LSAN and Valgrind. The "leaks" tool is not recommended for use with SpiderMonkey or Firefox, because it gets confused by tagged pointers and thinks objects have leaked when they have not (see <a class="external text" href="https://bugzilla.mozilla.org/show_bug.cgi?id=390944" rel="nofollow">bug 390944</a>).</dd>
+ <dt><a href="/en-US/docs/Mozilla/Performance/Leak_Gauge">Leak Gauge</a></dt>
+ <dd>Leak Gauge is a tool that can be used to detect certain kinds of leaks in Gecko, including those involving documents, window objects, and docshells.</dd>
+ <dt><a href="https://dxr.mozilla.org/mozilla-central/source/memory/replace/logalloc/README">LogAlloc</a></dt>
+ <dd>LogAlloc is a tool that dumps a log of memory allocations in Gecko. That log can then be replayed against Firefox's default memory allocator independently or through another replace-malloc library, allowing the testing of other allocators under the exact same workload.</dd>
+ <dt><a href="/en-US/docs/Mozilla/Performance/Memory_Profiler">Memory Profiler</a></dt>
+ <dd>The memory profiler samples allocation events and provides different views to analyze the allocation characteristic.</dd>
+ </dl>
+
+ <p>See also the documentation on <a href="/en-US/docs/Mozilla/Performance/Leak-hunting_strategies_and_tips">Leak-hunting strategies and tips.</a></p>
+ </td>
+ <td>
+ <h3 id="Profiling_and_performance_tools">Profiling and performance tools</h3>
+
+ <dl>
+ <dt><a href="https://developer.mozilla.org/en-US/docs/Tools/Performance" title="en/Performance/Profiling with the Built-in Profiler">Profiling with the Developer Tools Profiler</a></dt>
+ <dd>The profiler built into the developer tools has a high-level waterfall, detailed call tree, allocations and GC profiling, and flame graphs. It is available on all platforms and release channels, and also supports remote profiling b2g and Fennec.</dd>
+ </dl>
+
+ <dl>
+ <dt><a href="/en/Performance/Profiling_with_the_Built-in_Profiler" title="en/Performance/Profiling with the Built-in Profiler">Profiling with the Gecko Profiler</a> {{ gecko_minversion_inline("16.0") }}</dt>
+ <dd>The Gecko Profiler is a good tool to start with, particularly for understanding where time is spent within C++ code in Firefox.</dd>
+ <dt><a href="/en/Performance/Profiling_with_Instruments" title="en/Performance/Profiling with Instruments">Profiling with Instruments</a></dt>
+ <dd>How to use Apple's Instruments tool to profile Mozilla code.</dd>
+ <dt><a href="/en/Performance/Profiling_with_Xperf" title="en/Performance/Profiling with Xperf">Profiling with Xperf</a></dt>
+ <dd>How to use Microsoft's Xperf tool to profile Mozilla code.</dd>
+ <dt><a href="/en-US/docs/Performance/Profiling_with_Concurrency_Visualizer" title="en/Performance/Profiling with Concurrency Visualizer">Profiling with Concurrency Visualizer</a></dt>
+ <dd>How to use Visual Studio's Concurrency Visualizer tool to profile Mozilla code.</dd>
+ <dt><a href="/en/Performance/Profiling_with_Zoom" title="en/Performance/Profiling with Zoom">Profiling with Zoom</a></dt>
+ <dd>Zoom is a profiler for Linux done by the people who made Shark</dd>
+ <dt><a href="/en/Performance/Measuring_performance_using_the_PerfMeasurement.jsm_code_module" title="en/Performance/Measuring performance using the PerfMeasurement.jsm code module">Measuring performance using the PerfMeasurement.jsm code module</a> {{ gecko_minversion_inline("2.0") }}</dt>
+ <dd>Using <a href="/en/JavaScript_code_modules/PerfMeasurement.jsm" title="en/JavaScript code modules/PerfMeasurement.jsm"><code>PerfMeasurement.jsm</code></a> to measure performance data in your JavaScript code.</dd>
+ <dt><a href="/en-US/docs/Performance/Adding_a_new_Telemetry_probe" title="https://developer.mozilla.org/en-US/docs/Performance/Adding_a_new_Telemetry_probe">Adding a new Telemetry probe</a></dt>
+ <dd>Information on how to add a new measurement to the Telemetry performance-reporting system</dd>
+ <dt><a href="/en/Performance/Profiling_JavaScript_with_Shark" title="en/Performance/Profiling JavaScript with Shark">Profiling JavaScript with Shark</a> (obsolete - replaced by Instruments)</dt>
+ <dd>How to use the Mac OS X Shark profiler to profile JavaScript code in Firefox 3.5 or later.</dd>
+ <dt><a href="/en/Performance/Profiling_with_Shark" title="en/Performance/Profiling with Shark">Profiling with Shark</a> (obsolete - replaced by Instruments)</dt>
+ <dd>How to use Apple's Shark tool to profile Mozilla code.</dd>
+ <dt><a href="/en-US/docs/Mozilla/Performance/Investigating_CSS_Performance">Investigating CSS Performance</a></dt>
+ <dd>How to figure out why restyle is taking so long</dd>
+ </dl>
+
+ <h3 id="Power_profiling">Power profiling</h3>
+
+ <dl>
+ <dt><a href="/en-US/docs/Mozilla/Performance/Power_profiling_overview">Power profiling overview</a></dt>
+ <dd>This page provides an overview of relevant information, including details about hardware, what can be measured, and recommended approaches. It should be the starting point for anybody new to power profiling.</dd>
+ <dt><code><a href="/en-US/docs/Mozilla/Performance/tools_power_rapl">tools/power/rapl</a></code> (Mac, Linux)</dt>
+ <dd><code>tools/power/rapl</code> is a command-line utility in the Mozilla codebase that uses the Intel RAPL interface to gather direct power estimates for the package, cores, GPU and memory.</dd>
+ <dt><code><a href="/en-US/docs/Mozilla/Performance/powermetrics">powermetrics</a></code> (Mac-only)</dt>
+ <dd><code>powermetrics</code> is a command-line utility that gathers and displays a wide range of global and per-process measurements, including CPU usage, GPU usage, and various wakeups frequencies.</dd>
+ <dt><a href="/en-US/docs/Mozilla/Performance/TimerFirings_logging">TimerFirings logging</a> (All platforms)</dt>
+ <dd>TimerFirings logging is a built-in logging mechanism that prints data on every time fired.</dd>
+ <dt><a href="/en-US/docs/Mozilla/Performance/Activity_Monitor_and_top">Activity Monitor, Battery Status Menu and <code>top</code></a> (Mac-only)</dt>
+ <dd>The battery status menu, Activity Monitor and <code>top</code> are three related Mac tools that have major flaws but often consulted by users, and so are worth understanding.</dd>
+ <dt><a href="/en-US/docs/Mozilla/Performance/Intel_Power_Gadget">Intel Power Gadget</a> (Windows, Mac, Linux)</dt>
+ <dd>Intel Power Gadget provides real-time graphs for package and processor RAPL estimates. It also provides an API through which those estimates can be obtained.</dd>
+ <dt><code><a href="/en-US/docs/Mozilla/Performance/perf">perf</a></code> (Linux-only)</dt>
+ <dd><code>perf</code> is a powerful command-line utility that can measure many different things, including energy estimates and high-context measurements of things such as wakeups.</dd>
+ <dt><code><a href="/en-US/docs/Mozilla/Performance/turbostat">turbostat</a></code> (Linux-only)</dt>
+ <dd><code>turbostat</code> is a command-line utility that gathers and displays various power-related measurements, with a focus on per-CPU measurements such as frequencies and C-states.</dd>
+ <dt><code><a href="https://01.org/powertop">powertop</a></code> (Linux-only)</dt>
+ <dd><code>powertop</code> is an interactive command-line utility that gathers and displays various power-related measurements.</dd>
+ </dl>
+
+ <h3 id="Related_Topics">Related Topics</h3>
+
+ <dl>
+ <dd><a href="/en/JavaScript" title="en/JavaScript">JavaScript</a>, <a href="/en/XPCOM" title="en/XPCOM">XPCOM</a>, <a href="/En/Developer_Guide" title="en/Developing_Mozilla">Developing Mozilla</a>, <a href="/en/Extensions" title="en/Extensions">Extensions</a>, <a href="/en/Addons" title="en/Addons">Addons</a></dd>
+ </dl>
+ </td>
+ </tr>
+ </tbody>
+</table>
+
+<p> </p>
diff --git a/files/de/mozilla/persona/bootstrapping_persona/index.html b/files/de/mozilla/persona/bootstrapping_persona/index.html
new file mode 100644
index 0000000000..f4405da59f
--- /dev/null
+++ b/files/de/mozilla/persona/bootstrapping_persona/index.html
@@ -0,0 +1,31 @@
+---
+title: Bootstrapping Persona
+slug: Mozilla/Persona/Bootstrapping_Persona
+tags:
+ - ich kann nur deutsch
+translation_of: Archive/Mozilla/Persona/Bootstrapping_Persona
+---
+<p>To be truly successful and decentralized, Persona needs support from three different groups:</p>
+<ul>
+ <li><strong>Web Sites</strong> must let their users sign in with Persona.</li>
+ <li><strong>Web Browsers</strong> must implement the <a href="/en/DOM/navigator.id" title="navigator.id"><code>navigator.id</code></a> APIs.</li>
+ <li><strong>Email Providers</strong> must become Identity Providers (IdPs).</li>
+</ul>
+<p>This creates a chicken-and-egg problem: none of these groups would significantly benefit unless there was a critical mass of users, but a distributed system can't get a critical mass of users without support from the above groups.</p>
+<p>To solve this problem, <a class="link-https" href="https://login.persona.org" rel="freelink">https://login.persona.org</a> hosts three resources:</p>
+<ol>
+ <li>A fallback Identity Provider, which vouches for users whose email providers don't support Persona.</li>
+ <li>A <a href="/en-US/docs/persona/Browser_compatibility" title="/en-US/docs/persona/Browser_compatibility">cross-browser</a>, JavaScript implementation of the <code><a href="/en/DOM/navigator.id" title="navigator.id">navigator.id</a></code> APIs for browsers without native support.</li>
+ <li>A hosted verification API to make it easy for sites to verify user credentials.</li>
+</ol>
+<p>Together, this allows web sites to offer Persona to users regardless of browser and without email providers needing to get involved.</p>
+<p>These services are temporary, and the Persona system is designed such that they transparently and automatically drop away as native support gets added to browsers and email providers. Thus, they will become less relevant as Persona matures, and may eventually be removed all together. At that point, <a href="https://login.persona.org" rel="freelink">https://login.persona.org</a> won't feature at all in the Persona system.</p>
+<h2 id="Fallback_Identity_Provider">Fallback Identity Provider</h2>
+<p>Any domain can become an Identity Provider as long as relying parties are willing to trust the certificates issued by that domain. We expect email providers to act as an IdPs for the addresses they administer, making the user experience of Persona seamless for those users.  It allows the user to leverage their existing relationship with the email provider when authenticating at other sites.</p>
+<p>However, email providers won't become IdPs until there is significant demand from their users. In the meantime, Mozilla operates a fallback IdP at <a href="https://login.persona.org" rel="freelink">https://login.persona.org</a>. This fallback allows users to sign into sites with their existing email address, regardless of whether or not the email provider supports Persona. The fallback IdP will certify email addresses from any domain using its own authentication flow and its own password, so long as the user is able to prove control of an address by clicking a link in a verification email.</p>
+<p>Once an email provider supports Persona natively, its users will transparently begin use it instead of the fallback IdP.</p>
+<h2 id="Cross-browser_API_Library">Cross-browser API Library</h2>
+<p>For Persona to work, the user's browser must support the <a href="/en/DOM/navigator.id" title="navigator.id">navigator.id</a> API. Eventually, browsers will add native support for these APIs, but until then a <a href="/en-US/docs/persona/Browser_compatibility" title="/en-US/docs/persona/Browser_compatibility">cross-browser </a>implementation is available at <a href="https://login.persona.org/include.js" title="https://login.persona.org/include.js">https://login.persona.org/include.js</a>. By including this file, web sites can already begin using Persona. Once native implementations of the API are available, the library will automatically defer to those.</p>
+<h2 id="Remote_verification_service">Remote verification service</h2>
+<p>At <a href="https://login.persona.org" rel="freelink">https://login.persona.org</a> Mozilla hosts a <a href="/en/Persona/Remote_Verification_API" title="en/BrowserID/Remote_Verification_API">remote verification service</a> that web sites can use to verify identity assertions sent from users. This makes it simpler for web sites to support Persona as it takes care of parsing the assertion and cryptographically verifying user identities.</p>
+<p>Once the Persona data formats stabilize, verification will most likely be done locally on each site's server. This transition is especially important for user privacy, since it will make it impossible for the fallback IdP to track its users. Even with remote verification, users of native IdPs can't be tracked by that IdP.</p>
diff --git a/files/de/mozilla/persona/branding/index.html b/files/de/mozilla/persona/branding/index.html
new file mode 100644
index 0000000000..f35f03575c
--- /dev/null
+++ b/files/de/mozilla/persona/branding/index.html
@@ -0,0 +1,42 @@
+---
+title: Branding resources
+slug: Mozilla/Persona/branding
+translation_of: Archive/Mozilla/Persona/User_interface_guidelines
+---
+<h2 id="Einloggen_mit_Persona_Buttons">Einloggen mit Persona Buttons</h2>
+<h3 id="Bilder">Bilder</h3>
+<p>Der "Einloggen" Button ist in drei Versionen und drei Farben erhältlich:</p>
+<table>
+ <thead>
+ <tr>
+ <th scope="row"> </th>
+ <th scope="col">Einloggen mit Emailadresse</th>
+ <th scope="col">Einloggen mit Persona</th>
+ <th scope="col">Einloggen</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <th scope="row">Schwarz</th>
+ <td><img alt="" src="/files/3955/email_sign_in_black.png" style="width: 202px; height: 25px;"></td>
+ <td><img alt="" src="/files/3961/persona_sign_in_black.png" style="width: 185px; height: 25px;"></td>
+ <td><img alt="" src="/files/3967/plain_sign_in_black.png" style="width: 95px; height: 25px;"></td>
+ </tr>
+ <tr>
+ <th scope="row">Blau</th>
+ <td><img alt="" src="/files/3957/email_sign_in_blue.png" style="width: 202px; height: 25px;"></td>
+ <td><img alt="" src="/files/3963/persona_sign_in_blue.png" style="width: 185px; height: 25px;"></td>
+ <td><img alt="" src="/files/3969/plain_sign_in_blue.png" style="width: 95px; height: 25px;"></td>
+ </tr>
+ <tr>
+ <th scope="row">Rot</th>
+ <td><img alt="" src="/files/3959/email_sign_in_red.png" style="width: 202px; height: 25px;"></td>
+ <td><img alt="" src="/files/3965/persona_sign_in_red.png" style="width: 185px; height: 25px;"></td>
+ <td><img alt="" src="/files/3971/plain_sign_in_red.png" style="width: 95px; height: 25px;"></td>
+ </tr>
+ </tbody>
+</table>
+<h3 id="CSS-Basis">CSS-Basis</h3>
+<p><a href="http://sawyerhollenshead.com/" title="http://sawyerhollenshead.com/">Sawyer Hollenshead</a> erzeugte ein Set exzellenter CSS-basierter Buttons. <a href="/files/3973/persona-css-buttons.zip" title="/files/3973/persona-css-buttons.zip">Download (.zip)</a></p>
+<h2 id="Mehr_Info">Mehr Info</h2>
+<p>Mehr Informationen über Persona's visuelles Design bei <a href="http://people.mozilla.org/~smartell/persona/" title="http://people.mozilla.org/~smartell/persona/">Sean Martell's style primer</a>.</p>
diff --git a/files/de/mozilla/persona/browser_compatibility/index.html b/files/de/mozilla/persona/browser_compatibility/index.html
new file mode 100644
index 0000000000..716b5c3c46
--- /dev/null
+++ b/files/de/mozilla/persona/browser_compatibility/index.html
@@ -0,0 +1,84 @@
+---
+title: Browser Kompatibilität
+slug: Mozilla/Persona/Browser_compatibility
+translation_of: Archive/Mozilla/Persona/Browser_compatibility
+---
+<h2 id="Unterstützte_Browser">Unterstützte Browser</h2>
+<p>Persona wird mit den folgenden Browsern entwickelt und getestet. Dank Personas plattformübergreifender JavaScript Bibliothek benötigen Nutzer keine Add-Ons, um Persona zu nutzen.</p>
+<table>
+ <tbody>
+ <tr>
+ <th colspan="3" scope="row" style="text-align: center; background-color: #d3d7cf;"><strong>Desktop Browser</strong></th>
+ </tr>
+ <tr>
+ <th scope="row"><strong>Internet Explorer</strong></th>
+ <td colspan="2" rowspan="1" style="background-color: #8ae234;">8.0<sup>*</sup>, 9.0<sup>†</sup>, 10.0<sup>*</sup><sup>*</sup> (siehe <a href="#Internet_Explorer_Kompatibilit.C3.A4tsmodus" title="https://developer.mozilla.org/docs/persona/Browser_compatibility#Internet_Explorer_.22Compatibility_Mode.22">Kompatibilitätsmodus</a>)</td>
+ </tr>
+ <tr>
+ <th scope="row"><strong>Firefox</strong></th>
+ <td colspan="2" style="background-color: #8ae234;">Aktuelle Version, Beta, Aurora, Nightly, und Extended Support Versionen, vorige stabile Version</td>
+ </tr>
+ <tr>
+ <th scope="row"><strong>Chrome</strong></th>
+ <td colspan="2" style="background-color: #8ae234;">Letzte stabile Version</td>
+ </tr>
+ <tr>
+ <th scope="row"><strong>Safari</strong></th>
+ <td colspan="2" style="background-color: #8ae234;">Letzte stabile Version</td>
+ </tr>
+ <tr>
+ <th scope="row"><strong>Opera</strong></th>
+ <td colspan="2" style="background-color: #8ae234;">Letzte stabile Version<sup>‡</sup></td>
+ </tr>
+ <tr>
+ <th colspan="3" scope="row" style="text-align: center; background-color: #d3d7cf;"><strong>iOS Browser</strong></th>
+ </tr>
+ <tr>
+ <th scope="row"><strong>Mobile Safari</strong></th>
+ <td colspan="2" rowspan="1" style="background-color: #8ae234;">iOS 5.x — 6.x</td>
+ </tr>
+ <tr>
+ <th colspan="3" scope="row" style="text-align: center; background-color: #d3d7cf;"><strong>Android Browser</strong></th>
+ </tr>
+ <tr>
+ <th scope="row"><strong>Standardbrowser</strong></th>
+ <td colspan="2" rowspan="1" style="background-color: #8ae234;">2.2 — 4.x</td>
+ </tr>
+ <tr>
+ <th scope="row"><strong>Firefox</strong></th>
+ <td colspan="2" style="background-color: #8ae234;">Aktuelle Version, Beta, Aurora, Nightly, und Extended Support Versionen, vorige stabile Version</td>
+ </tr>
+ <tr>
+ <th scope="row"><strong>Chrome</strong></th>
+ <td colspan="2" style="background-color: #8ae234;">Letzte stabile Version</td>
+ </tr>
+ </tbody>
+</table>
+<p><sup>*</sup>: für Windows XP. <sup>†</sup>: für Windows Vista und Windows 7. <sup>*</sup><sup>*</sup>Windows 8.<sup>  </sup><sup>‡</sup>: As time allows.</p>
+<h2 id="Nicht_unterstützte_Browser">Nicht u<span style="font-size: 2.142857142857143rem;">nterstützte Browser</span></h2>
+<ul>
+ <li>Internet Explorer 6.0 and 7.0 werden nicht unterstützt. Nutzer werden aufgefordert, ihre Browser zu aktualisieren. Siehe auch <a href="#Internet_Explorer_Kompatibilit.C3.A4tsmodus" title="https://developer.mozilla.org/docs/persona/Browser_compatibility#Internet_Explorer_.22Compatibility_Mode.22">Kompatibilitätsmodus</a>.</li>
+ <li>Google Chrome Frame wird nicht unterstützt und wird nicht funktionieren. Unterstüzung kann folgen (<a href="https://github.com/mozilla/browserid/issues/796" title="https://github.com/mozilla/browserid/issues/796">Issue #796</a>).</li>
+ <li>Drittanbieter-Bowser in iOS werden nicht unterstützt und werden nicht funktionieren. Unterstüzung kann folgen (<a href="https://github.com/mozilla/browserid/issues/2034" title="https://github.com/mozilla/browserid/issues/2034">Issue #2034</a>).</li>
+</ul>
+<h2 id="Internet_Explorer_Kompatibilitätsmodus">Internet Explorer Kompatibilitätsmodus</h2>
+<p>Ab Version 8.0 unterstützt der Internet Explorer eine Funktion namens Kompatibilitätsmodus, die<span style="line-height: 1.5;"> zur Emulation älterer Internet Explorer Versionen beim Rendern einer Seite dient. Die Funktion kann über drei verschiedene Wege kontrolliert werden:</span></p>
+<ol>
+ <li>Als lokale Einstellung im Browser</li>
+ <li>Basierend auf der Präsenz und dem Inhalt der <a href="https://developer.mozilla.org/docs/Quirks_Mode_and_Standards_Mode" title="https://developer.mozilla.org/docs/Quirks_Mode_and_Standards_Mode">DOCTYPE</a> Deklaration auf der Seite.</li>
+ <li>Als <a href="http://msdn.microsoft.com/library/cc288325%28v=vs.85%29.aspx" title="http://msdn.microsoft.com/library/cc288325%28v=vs.85%29.aspx">"X-UA-Compatible"</a> header anstatt eines HTTP headers oder als <a href="https://developer.mozilla.org/docs/HTML/Element/meta" title="https://developer.mozilla.org/docs/HTML/Element/meta"><code>&lt;meta&gt;</code></a> tag auf einer Seite. Diese Mehtode überschreibt die beiden ersten.</li>
+</ol>
+<p>Weil nur Internet Explorer 8.0 und neuer von Persona unterstützt werden, werden Internet Explorer, die eine ältere Version emulieren, nicht mit Persona funktionieren. Dies ist typisch für einen der folgenden Gründe:</p>
+<ul>
+ <li>Ihre Seite benutzt "X-UA-Compatible", um dem Browser zu sagen, er solle eine Internet Explorer Version vor 8.0 emulieren.</li>
+ <li>Ihre Seite enthält kein DOCTYPE, hat kein DOCTYPE auf der ersten Linie der Seite, Ihre Seite funktioniert nicht mit dem Browser oder Ihre Seite setzt "X-UA-Compatible" nicht auf Internet Explorer Version 8.0 oder höher.</li>
+ <li>Der Internet Explorer wurde so konfiguriert, dass er eine ältere Version emuliert und Ihre Seite überschreibt diese Einstellung nicht indem sie "X-UA-Compatible" zu Internet Explorer 8.0 oder höher setzt.</li>
+</ul>
+<p>Für weitere Informationen siehe <a href="https://blogs.msdn.com/b/askie/archive/2009/03/23/understanding-compatibility-modes-in-internet-explorer-8.aspx?Redirected=true" title="https://blogs.msdn.com/b/askie/archive/2009/03/23/understanding-compatibility-modes-in-internet-explorer-8.aspx?Redirected=true">"Understanding Compatibility Modes in Internet Explorer 8"</a> und <a href="http://hsivonen.iki.fi/doctype/index.html#ie8" title="http://hsivonen.iki.fi/doctype/index.html#ie8">"IE8 and IE9 Complications"</a>.</p>
+<h2 id="Andere_Browser">Andere Browser</h2>
+<p>Obwohl nicht explizit unterstützt, jeder Browser der {{ domxref("window.postMessage()") }} und {{ domxref("Storage", "localStorage") }} unterstützt sollte funktionieren. Diese APIs werden seit März 2010 von allen bekannten Browsern untertützt.</p>
+<h2 id="Bekannte_Fehler">Bekannte Fehler</h2>
+<ul>
+ <li>Browser müssen Drittanbiertecookies akzeptieren (<a href="https://github.com/mozilla/browserid/issues/1352" title="https://github.com/mozilla/browserid/issues/1352">Issue #1352</a>).</li>
+ <li>Android 2.x Nutzer, die keinen Standard Browser gewählt haben, werden sich vermutlich nicht anmelden können (<a href="https://github.com/mozilla/browserid/issues/1854" title="https://github.com/mozilla/browserid/issues/1854">Issue #1854</a>).</li>
+</ul>
diff --git a/files/de/mozilla/persona/index.html b/files/de/mozilla/persona/index.html
new file mode 100644
index 0000000000..0a8aa84850
--- /dev/null
+++ b/files/de/mozilla/persona/index.html
@@ -0,0 +1,133 @@
+---
+title: Persona
+slug: Mozilla/Persona
+tags:
+ - Persona
+translation_of: Archive/Mozilla/Persona
+---
+<div class="callout-box">
+<p><strong>Bleibe informiert oder bekomme Hilfe!</strong></p>
+
+<p>Verfolge <a class="external" href="http://identity.mozilla.com/" title="http://identity.mozilla.com/">unseren Blog</a>, trete <a class="link-https" href="https://lists.mozilla.org/listinfo/dev-identity" title="https://lists.mozilla.org/listinfo/dev-identity">unserer Mailingliste</a> bei oder finde uns in <a class="link-irc" href="irc://irc.mozilla.org/identity" title="irc://irc.mozilla.org/identity">#identity</a> in <a class="link-https" href="https://wiki.mozilla.org/IRC" title="https://wiki.mozilla.org/IRC"> IRC</a>.</p>
+</div>
+
+<p><a class="link-https" href="https://www.mozilla.org/en-US/persona/" title="https://www.mozilla.org/en-US/persona/">Mozilla Persona</a> ist ein browserunabhängiges Login-System für das Web, das einfach zu verwenden und einfach einzusetzen ist. Es funktioniert mit <a href="/de/docs/Mozilla/Persona/Browser_compatibility" title="/de/docs/Mozilla/Persona/Browser_compatibility">allen wichtigen Browsern</a> und du kannst <a href="/de/docs/Mozilla/Persona/Quick_Setup" title="/de/docs/Mozilla/Persona/Quick_Setup">noch heute beginnen</a>.</p>
+
+<p><strong>Warum solltest du Persona auf deiner Seite verwenden?</strong></p>
+
+<ol>
+ <li><strong>Persona löst Webseiten-spezifische Passwörter vollständig ab</strong>, wodurch es Benutzer und Websites von der Last der Erstellung, Verwaltung und sicheren Speicherung von Passwörtern befreit.</li>
+ <li><strong>Persona ist einfach zu bedienen</strong>. Mit nur zwei Klicks kann sich ein Persona-Benutzer bei einer neuen Website wie <a href="http://voo.st/" title="http://voo.st/">Voost</a> registrieren und dabei alle Probleme bei der Account-Erstellung umgehen.</li>
+ <li><strong>Persona ist einfach zu implementieren</strong>. Entwickler können Persona zu einer Website in einem einzigen Nachmittag hinzufügen.</li>
+ <li><span class="short_text" id="result_box" lang="de"><span class="alt-edited hps">Das Beste von allem,</span> <span class="hps">es gibt kein</span> <strong><span class="atn hps">Lock-in</span></strong></span><strong>.</strong> Entwickler erhalten eine verifizierte E-Mail-Adresse für alle ihre Benutzer und Benutzer können eine beliebige E-Mail-Adresse mit Persona verwenden.</li>
+</ol>
+
+<p>Und Persona wird stetig besser: <span id="result_box" lang="de"><span class="hps">Es </span><span class="alt-edited hps">basiert auf einem <strong>offenen, dezentralisierten Protokoll</strong></span><span>, das dafür ausgelegt ist</span></span>, eine <strong>direkte Integration in Browser</strong> und <strong>native Unterstützung von E-Mail-Providern</strong> zu erlauben. Webseiten die Persona heute implementieren werden diese Verbesserungen automatisch in Erfahrung bringen, ohne irgendeinen Code ändern zu müssen.</p>
+
+<div class="note"><strong>Hinweis:</strong> Persona befindet sich in aktiver Entwicklung. Verfolge <a class="external" href="http://identity.mozilla.com/" title="http://identity.mozilla.com/">unseren Blog</a> um von neuen Funktionen zu erfahren oder trete <a class="link-https" href="https://lists.mozilla.org/listinfo/dev-identity" title="https://lists.mozilla.org/listinfo/dev-identity">unserer Mailingliste</a> bei und gib uns dein Feedback!</div>
+
+<h2 id="Verwenden_von_Persona_auf_Ihrer_Webseite">Verwenden von Persona auf Ihrer Webseite</h2>
+
+<table class="topicpage-table">
+ <tbody>
+ <tr>
+ <td>
+ <h3 id="Der_Einstieg">Der Einstieg</h3>
+
+ <dl>
+ <dt><a href="/en-US/docs/Persona/Why_Persona" title="en/BrowserID/Why_BrowserID">Warum Persona?</a></dt>
+ </dl>
+
+ <p>Sehen Sie, wieso Persona entwickelt wurde und warum es so toll ist! Und auch den Vergleich mit anderen Diensten scheuen wir uns nicht.</p>
+
+ <dl>
+ <dt><a href="/de/docs/Persona/Schnellstart" title="BrowserID/Quick setup">Schnellstart</a></dt>
+ <dd>Ein Schnellrundgang zeigt Ihnen, wie Sie Persona auf Ihrer Webseite integrieren können.</dd>
+ </dl>
+ </td>
+ <td>
+ <h3 id="Persona_API_Referenz">Persona API Referenz</h3>
+
+ <dl>
+ <dt><a href="/en/DOM/navigator.id" title="navigator.id">Die navigator.id API-Referenz</a></dt>
+ <dd>Referenz für das <code>navigator.id</code> Objekt, welches Webentwickler nutzen können, um Persona in Webseiten einzubinden.</dd>
+ <dt><a href="/en/Persona/Remote_Verification_API" title="en/BrowserID/Remote_Verification_API">Verifikations-API-Referenz</a></dt>
+ <dd>Die Referenz für die remote verification API finden Sie auf <code>https://verifier.login.persona.org/verify</code>.</dd>
+ </dl>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <h3 id="Leitfaden">Leitfaden</h3>
+
+ <dl>
+ <dt><a href="/en/Persona/Security_Considerations" title="BrowserID/Security considerations">Sicherheitsaspekte</a></dt>
+ <dd>Praktiken und Techniken um sicherzustellen, dass Ihre Persona-Einbindung sicher ist.</dd>
+ <dt><a href="/en/Persona/Browser_compatibility" title="/Browser_compatibility">Browserkompatiblität</a></dt>
+ <dd>Erfahre ganau, welche Browser Persona unterstützen.</dd>
+ <dt><a href="/en/Persona/Internationalization" title="/Internationalization">Internationalisierung</a></dt>
+ <dd>Erfahre, wie Persona mit unterschiedlichen Sprachen umgeht.</dd>
+ <dt><a href="https://developer.mozilla.org/en-US/docs/Persona/The_implementor_s_guide">Leitfaden für Website-Entwickler</a></dt>
+ <dd>Tipps von Web-Seiten, die eine Unterstützung für PERSONA bereits anbieten</dd>
+ </dl>
+ </td>
+ <td>
+ <h3 id="Ressourcen">Ressourcen</h3>
+
+ <dl>
+ <dt><a class="link-https" href="https://github.com/mozilla/browserid/wiki/Persona-Libraries" title="https://github.com/mozilla/browserid/wiki/BrowserID-Libraries">Libraries und Plugins</a></dt>
+ <dd>Finde eine drop-in Bibliothek für deine bevorzugte Programmiersprache, Web-Framework, Blog oder Content-Management-System.</dd>
+ <dt><a class="link-https" href="https://github.com/mozilla/browserid-cookbook" title="https://github.com/mozilla/browserid-cookbook">Das Persona Kochbuch</a></dt>
+ <dd>Beispiel Sourcecode für Persona-Seiten. Beinhaltet Schnipsel in PHP, Node.JS und mehr.</dd>
+ <dt><a href="/en-US/docs/persona/branding" title="/en-US/docs/persona/branding">Branding resources</a></dt>
+ <dd>Anmelde-Buttons und andere Grafiken, die dabei helfen Persona Ihren Nutzern zu präsentieren.</dd>
+ </dl>
+ </td>
+ </tr>
+ </tbody>
+</table>
+
+<p> </p>
+
+<table class="topicpage-table">
+ <tbody>
+ <tr>
+ <td>
+ <h2 id="Informationen_für_Identitäts-Provider">Informationen für Identitäts-Provider</h2>
+
+ <p>Wenn du ein E-Mail Betreiber oder ein Idäntitäts-Provider bist, dann schau dir die folgenden Links an in denen man ein Persona Idäntitäts-Provider werden kann.</p>
+
+ <dl>
+ <dt><a href="/en-US/docs/Persona/Identity_Provider_Overview" title="IdP">IdP Überblick</a></dt>
+ <dd>Ein hoher Rang von Persona Idäntitäts-Providern.</dd>
+ <dt><a href="/en/Persona/Implementing_a_Persona_IdP" title="Guide to Implementing a Persona IdP">Implementieren eines IdP</a></dt>
+ <dd>Ein detaillierter Leitfaden zu den technischen Details, wie man ein IdP wird.</dd>
+ <dt><a href="/en-US/docs/Persona/.well-known-browserid" title="https://developer.mozilla.org/en-US/docs/Persona/.well-known-browserid">.well-known/browserid</a></dt>
+ <dd>Ein Überblick über die Struktur und den Zweck der <code>.well-known/browserid</code> Datei, welche IdPs benutzen, um auf deren Unterstützung für das Protokoll hinzuweisen.</dd>
+ </dl>
+ </td>
+ <td>
+ <h2 id="Das_Persona_Projekt">Das Persona Projekt</h2>
+
+ <dl>
+ <dt><a href="/en/Persona/Glossary" title="navigator.id">Glossary</a></dt>
+ <dd>Die BrowserID und Persona Fachsprache.</dd>
+ <dt><a href="/en/Persona/FAQ" title="en/BrowserID/FAQ">FAQ</a></dt>
+ <dd>Antworten zu gängigen Fragen.</dd>
+ <dt><a href="/en/Persona/Protocol_Overview" title="BrowserID/Protocol overview">Überblick des Protokolls</a></dt>
+ <dd>Gewinnen Sie einen Überblick über das verwendete BrowserID-Protokoll.</dd>
+ <dt><a href="/en/persona/Crypto" title="MDN">Kryptographie</a></dt>
+ <dd>Ein Blick auf die kryptographischen Konzepte und Sicherheitsfunktionen hinter Persona und BrowserID.</dd>
+ <dt><a class="link-https" href="https://github.com/mozilla/id-specs/blob/prod/browserid/index.md" title="https://github.com/mozilla/id-specs/blob/master/browserid/index.md">Die Spezifikation</a></dt>
+ <dd>Tiefe technische Details gibt es hier.</dd>
+ <dt><a href="/Persona/Bootstrapping_Persona" title="en/BrowserID/Bootstrapping_BrowserID">Die Persona Webseite</a></dt>
+ <dd>Damit Persona perfekt funktionieren kann verwenden wir drei Dienste auf: <a class="link-https" href="https://login.persona.org" rel="freelink">https://login.persona.org</a>: Eine Rückfall-System für die Anmeldun, eine browser- und systemunabhängige Implementierung der {{ domxref("navigator.id") }} APIs und natürlich einen Verifizierungs-Dienst.</dd>
+ <dt><a href="https://github.com/mozilla/browserid">Der Persona Quellcode</a></dt>
+ <dd>Der Code hinter der Persona-Webseite liegt in einem Repository bei GitHub. Helfer sind immer ❤ Willkommen!</dd>
+ </dl>
+ </td>
+ </tr>
+ </tbody>
+</table>
+
+<p> </p>
diff --git a/files/de/mozilla/persona/protocol_overview/index.html b/files/de/mozilla/persona/protocol_overview/index.html
new file mode 100644
index 0000000000..44c6eab3da
--- /dev/null
+++ b/files/de/mozilla/persona/protocol_overview/index.html
@@ -0,0 +1,61 @@
+---
+title: Protokoll Überblick
+slug: Mozilla/Persona/Protocol_Overview
+translation_of: Archive/Mozilla/Persona/Protocol_Overview
+---
+<p>Persona baut auf dem BrowserID Protokoll auf. Diese Seite beschreibt das BrowserID Protokoll auf hohem Niveau.</p>
+<h2 id="Akteure">Akteure</h2>
+<p>Das Protokoll umfasst drei Akteure:</p>
+<ul>
+ <li><strong>Benutzer:</strong> Die Person, welche sich mit Persona in einer Webseite einloggen will.</li>
+ <li><strong>Relying Parties (RPs): </strong>Webseiten, welche es dem Benutzer ermögliche wollen, sich mit Persona anzumelden.</li>
+ <li><strong>Identity Providers (IdPs): </strong>Domains, welche ihren Benutzern ein Persona-kompatibles Identitäts Zertifikat austellen können.</li>
+</ul>
+<p>Persona und das BrowserID Protokoll benutzen E-mail Adressen als Identität, daher ist es üblich, dass der E-mail Provider die Rolle des IdPs einnimmt.</p>
+<p>Mozilla betreibt einen "fallback IdP", so dass Benutzer jede E-mail Adresse für Persona benutzen können, sogar wenn eine Domain keinen IdP Status besitzt.</p>
+<h2 id="Protocol_Steps">Protocol Steps</h2>
+<p>There are three distinct steps in the protocol:</p>
+<ol>
+ <li>User Certificate Provisioning</li>
+ <li>Assertion Generation</li>
+ <li>Assertion Verification</li>
+</ol>
+<p>As a prerequisite, the user should have an active identity (email address) that they wish to use when logging in to websites. The protocol does not require that IdP-backed identities are SMTP-routable, but it does require that identities follow the <code>user@domain</code> format.</p>
+<h3 id="User_Certificate_Provisioning">User Certificate Provisioning</h3>
+<p>In order to sign into an RP, a user must be able to prove ownership of their preferred email address. The foundation of this proof is a cryptographically signed certificate from an IdP certifying the connection between a browser's user and a given identity within the IdP's domain.</p>
+<p>Because Persona uses standard <a href="http://en.wikipedia.org/wiki/Public-key_cryptography" title="http://en.wikipedia.org/wiki/Public-key_cryptography">public key cryptography</a> techniques, the user certificate is signed by the IdP's private key and contains:</p>
+<ul>
+ <li>The user's email address.</li>
+ <li>The user's public key for that address on that browser.</li>
+ <li>The time that the certificate was issued.</li>
+ <li>The time that the certificate expires.</li>
+ <li>The IdP's domain name.</li>
+</ul>
+<p>The user's browser generates a different keypair for each of the user's email addresses, and these keypairs are not shared across browsers. Thus, a user must obtain a fresh certificate whenever one expires, or whenever using a new browser or computer. Certificates must expire within 24 hours of being issued.</p>
+<p>When a user selects an identity to use when signing into an RP, the browser checks to see if it has a fresh user certificate for that address. If it does, this step is complete and the browser continues with the assertion generation step below. If the browser does not have a fresh certificate, it attempts to obtain one from the domain associated with the chosen identity.</p>
+<ol>
+ <li>The browser fetches the <a href="/en-US/docs/Persona/.well-known-browserid" title="/en-US/docs/Persona/.well-known-browserid">/.well-known/browserid</a> support document over SSL from the identity's domain.</li>
+ <li>Using information from the support document, the browser passes the user's email address and associated public key to the IdP and requests a signed certificate.</li>
+ <li>If necessary, the user is asked to sign into the IdP before provisioning proceeds.</li>
+ <li>The IdP creates, signs, and gives a user certificate to the user's browser.</li>
+</ol>
+<p>With the certificate in hand, the browser can continue with generating an identity assertion and signing into an RP.</p>
+<p><img alt="user-certificate-provisioning.png" class="internal default" src="/@api/deki/files/6043/=user-certificate-provisioning.png"></p>
+<h3 id="Assertion_Generation">Assertion Generation</h3>
+<p>The user certificate establishes a verifiable link between an email address and a public key. However, this is alone not enough to log into a website: the user still has to show their connection to the certificate by proving ownership of the private key.</p>
+<p>In order to prove ownership of a private key, the user's browser creates and signs a new document called an "identity assertion." It contains:</p>
+<ul>
+ <li>The domain of the RP that the user wants to sign into.</li>
+ <li>An expiration time for the assertion, generally less than five minutes after it was created.</li>
+</ul>
+<p>The browser then presents both the user certificate and the identity assertion to the RP for verification.</p>
+<h3 id="Assertion_Verification">Assertion Verification</h3>
+<p>The combination of user certificate and identity assertion is sufficient to confirm a user's identity.</p>
+<p>First, the RP checks the domain and expiration time in the assertion. If the assertion is expired or intended for a different domain, it's rejected. This prevents malicious re-use of assertions.</p>
+<p>Second, the RP validates the signature on the assertion with the public key inside the user certificate. If the key and signature match, the RP is assured that the current user really does possess the key associated with the certificate.</p>
+<p>Last, the RP fetches the IdP's public key from its <a href="/en-US/docs/Persona/.well-known-browserid" title="/en-US/docs/Persona/.well-known-browserid">/.well-known/browserid</a> document and verifies that it matches the signature on the user certificate. If it does, then the RP can be certain that the certificate really was issued by the domain in question.</p>
+<p>Once verifying that this is a current login attempt for the proper RP, that the user certificate matches the current user, and that the user certificate is legitimate, the RP is done and can authenticate the user as the identity contained in the certificate.</p>
+<p><img alt="assertion-generation-and-verify.png" class="internal default" src="/@api/deki/files/6042/=assertion-generation-and-verify.png"></p>
+<h2 id="The_Persona_Fallback_IdP">The Persona Fallback IdP</h2>
+<p>What if a user's email provider doesn't support Persona? In that case, the provisioning step would fail. By convention, the user's browser handles this by asking a trusted third party, <a href="https://login.persona.org/" title="https://login.persona.org/">https://login.persona.org/</a>, to certify the user's identity on behalf of the unsupported domain. After demonstrating ownership of the address, the user would then receive a certificate issued by the fallback IdP, <code>login.persona.org</code>, rather than the identity's domain.</p>
+<p>RPs follow a similar process when validating the assertion: the RP would ultimately request the fallback IdP's public key in order to verify the certificate.</p>
diff --git a/files/de/mozilla/persona/schnellstart/index.html b/files/de/mozilla/persona/schnellstart/index.html
new file mode 100644
index 0000000000..31a45b7553
--- /dev/null
+++ b/files/de/mozilla/persona/schnellstart/index.html
@@ -0,0 +1,201 @@
+---
+title: Schnellstart
+slug: Mozilla/Persona/Schnellstart
+translation_of: Archive/Mozilla/Persona/Quick_Setup
+---
+<p>Sie benötigen nur 5 Schritte um Persona ihrer Webseite hinzuzufügen:</p>
+<ol>
+ <li>Binden Sie die Persona JavaScript Bibliothek in ihre Webseite ein.</li>
+ <li>Fügen Sie jeweils einen "Login" und "Logout" Button hinzu.</li>
+ <li>Achten Sie auf die Aktionen der Nutzer.</li>
+ <li>Überprüfen Sie die Informationen des Nutzers.</li>
+ <li>Beachten Sie die Informationen für Sicheres Einbinden.</li>
+</ol>
+<p>Sie sollten in der Lage sein, Persona an einem einzigen Nachmittag zu implementieren. Zuvor sollten Sie sich allerdings in den <a href="https://mail.mozilla.org/listinfo/persona-notices">Persona notices</a> Newsletter eintragen. Der Newsletter versendet nur sicherheitsrelevante E-Mails.</p>
+<h2 id="Schritt_1_Einbinden_der_Persona_Bibliothek">Schritt 1: Einbinden der Persona Bibliothek</h2>
+<p>Persona ist Browser-neutral programmiert und unterstützt <a href="https://developer.mozilla.org/docs/persona/Browser_compatibility">alle großen Desktop- und Mobilbrowser. </a></p>
+<p>Wir erwarten für die Zukunft, dass die Browser Persona direkt und ohne externe Bibliothek unterstützten. Solange dies nicht der Fall ist, stellen wir eine JavaScript Bibliothek bereit, die die Benutzeroberfläche und den Client-seitigen Teil des Persona-Protokolls übernimmt. Durch die Einbindung dieser Bibliothek kann sich jeder Nutzer anmelden, egal, ob sein Browser Persona direkt unterstützt, oder nicht.</p>
+<p>Sobald die Bibliothek in der Seite geladen ist, sind die Persona Funktionen ({{ domxref("navigator.id.watch()", "watch()") }}, {{ domxref("navigator.id.request()", "request()") }}, und {{ domxref("navigator.id.logout()", "logout()") }}) im globalen <code>navigator.id</code> Knoten vorhanden.</p>
+<p>Um die Persona JavaScript Bibliothek einzubinden plazieren Sie diesen <code>script</code> Tag am Ende der HTML-Seite:</p>
+<pre class="brush: html;">&lt;script src="https://login.persona.org/include.js"&gt;&lt;/script&gt;
+</pre>
+<p>Sie <strong>müssen </strong>dies am Ende jeder Seite einfügen, die {{ domxref("navigator.id") }}  benutzen soll. Da sich Persona immer noch in der Entwicklung befindet, sollten Sie die Persona <code>include.js</code> Datei nicht selber bereitstellen.</p>
+<h3 id="Unterdrückung_des_Kompatibilitätsmodus">Unterdrückung des Kompatibilitätsmodus</h3>
+<p>Damit Persona auch im Internet Explorer funktioniert, sollten Sie dessen Kompatibilitätsmodus unterdrücken. Dies kann auf zwei Wegen geschehen:</p>
+<ul>
+ <li>entweder fügen Sie auf ihrer Seite noch vor dem ersten Skript Element ein : <code>&lt;meta http-equiv="X-UA-Compatible" content="IE=Edge"&gt;</code></li>
+ <li>oder aber Sie liefern diesen HTTP-Kopf mit aus: <code>X-UA-Compatible: IE=Edge</code>.</li>
+</ul>
+<p>Für weitere Informationen schauen Sie bitte bei <a href="/en-US/docs/persona/Browser_compatibility#Internet_Explorer_.22Compatibility_Mode.22" title="/en-US/docs/persona/Browser_compatibility#Internet_Explorer_.22Compatibility_Mode.22">IE Compatibility Mode</a> und <a href="http://hsivonen.iki.fi/doctype/index.html#ie8" title="http://hsivonen.iki.fi/doctype/index.html#ie8">"IE8 and IE9 Complications"</a> vorbei.</p>
+<h2 id="Schritt_2_Hinzufügen_der_Login_und_Logout_Buttons">Schritt 2: Hinzufügen der Login und Logout Buttons</h2>
+<p>Da Persona als Bestandteil der DOM API entwickelt wurde, müssen Sie Funktionen ausführen, sobald ein Nutzer auf einen der beiden Button klickt. Um den Anmelden Dialog auszuführen, sollten sie {{ domxref("navigator.id.request()") }} aufrufen. Für den Logout starten Sie bitte {{ domxref("navigator.id.logout()") }}. Notiz: Der Aufruf von {{ domxref("navigator.id.logout()", "logout()") }} <em>muss</em> in dem Click-Handler des Logout-Buttons ausgeführt werden.</p>
+<p>Als Beispiel:</p>
+<pre class="brush: js;">var signinLink = document.getElementById('signin');
+if (signinLink) {
+ signinLink.onclick = function() { navigator.id.request(); };
+}
+
+var signoutLink = document.getElementById('signout');
+if (signoutLink) {
+ signoutLink.onclick = function() { navigator.id.logout(); };
+}
+</pre>
+<p>Wie sollten diese Buttons aussehen? Betrachte unsere <a href="https://developer.mozilla.org/docs/persona/branding">Branding Resources</a> Seite für vorgefertigte Persona-Bilder und CSS-basierte Buttons.</p>
+<h2 id="Schritt_3_Warte_auf_Login_und_Logout_Aktionen">Schritt 3: Warte auf Login und Logout Aktionen</h2>
+<p>Damit Persona funktioniert, musst du ihm mitteilen, wenn sich ein Nutzer an- bzw. abmeldet. Dies geschieht durch Übergabe dreier Parameter an die Funktion {{ domxref("navigator.id.watch()") }}. Die drei Parameter sind:</p>
+<ol>
+ <li>
+ <p>Die E-Mail Adresse des momentan angemeldeten Nutzers, oder aber, wenn niemand angemeldet ist <code>null</code> Beispielsweise kannst du den Cookie auslesen, um herauszufinden, wer angemeldet ist.</p>
+ </li>
+ <li>
+ <p>Eine Funktion für den Fall, dass <code>onlogin</code> ausgelöst wird. This function is passed a single parameter, an “identity assertion,” which must be verified.</p>
+ </li>
+ <li>
+ <p>Eine Funktion, die aufzurufen ist, wenn <code>onlogout</code> ausgelöst wird. Dieser Funktion werden keine Parameter mitgegeben.</p>
+ </li>
+</ol>
+<div class="note style-wrap">
+ <div class="note">
+ <p><strong>Beachte:</strong> Sie müssen immer beide, <code>onlogin</code> und <code>onlogout</code> übergeben, wenn Sie {{ domxref("navigator.id.watch()") }} aufrufen.</p>
+ </div>
+</div>
+<p>Wenn beispielsweise Bob angemeldet ist, müssen Sie folgendes tun:</p>
+<pre class="brush: js;">var currentUser = 'bob@example.com';
+
+navigator.id.watch({
+ loggedInUser: currentUser,
+ onlogin: function(assertion) {
+ // Ein Nutzer hat sich angemeldete. Hier müssen Sie:
+ // 1. Send the assertion to your backend for verification and to create a session.
+ // 2. Aktualisiere die Oberfläche
+ $.ajax({ /* &lt;-- This example uses jQuery, but you can use whatever you'd like */
+ type: 'POST',
+ url: '/auth/login', // This is a URL on your website.
+ data: {assertion: assertion},
+ success: function(res, status, xhr) { window.location.reload(); },
+ error: function(xhr, status, err) {
+ navigator.id.logout();
+ alert("Login failure: " + err);
+ }
+ });
+ },
+ onlogout: function() {
+ // A user has logged out! Here you need to:
+ // Tear down the user's session by redirecting the user or making a call to your backend.
+ // Also, make sure loggedInUser will get set to null on the next page load.
+ // (That's a literal JavaScript null. Not false, 0, or undefined. null.)
+ $.ajax({
+ type: 'POST',
+ url: '/auth/logout', // This is a URL on your website.
+ success: function(res, status, xhr) { window.location.reload(); },
+ error: function(xhr, status, err) { alert("Logout failure: " + err); }
+ });
+ }
+});
+</pre>
+<p>In this example, both <code>onlogin</code> and <code>onlogout</code> are implemented by making an asynchronous <code>POST</code> request to your site’s backend. The backend then logs the user in or out, usually by setting or deleting information in a session cookie. Then, if everything checks out, the page reloads to take into account the new login state.</p>
+<p>Note that if the identity assertion can't be verified, you should call {{ domxref("navigator.id.logout()") }}: this has the effect of telling Persona that none is currently logged in. If you don't do this, then Persona may immediately call onlogin again with the same assertion, and this can lead to an <a href="/en-US/docs/Persona/The_implementor_s_guide/Call_logout()_after_a_failed_login" title="/en-US/docs/Persona/The_implementor_s_guide/Call_logout()_after_a_failed_login">endless loop of failed logins</a>.</p>
+<p>You can, of course, use AJAX to implement this without reloading or redirecting, but that’s beyond the scope of this tutorial.</p>
+<p>Here is another example, this time not using jQuery.</p>
+<pre class="brush: js;">function simpleXhrSentinel(xhr) {
+ return function() {
+ if (xhr.readyState == 4) {
+ if (xhr.status == 200){
+ // reload page to reflect new login state
+ window.location.reload();
+ }
+ else {
+ navigator.id.logout();
+ alert("XMLHttpRequest error: " + xhr.status);
+ }
+ }
+ }
+ }
+
+function verifyAssertion(assertion) {
+ // Your backend must return HTTP status code 200 to indicate successful
+ // verification of user's email address and it must arrange for the binding
+ // of currentUser to said address when the page is reloaded
+ var xhr = new XMLHttpRequest();
+ xhr.open("POST", "/xhr/sign-in", true);
+    // see http://www.openjs.com/articles/ajax_xmlhttp_using_post.php
+    var param = "assertion="+assertion;
+    xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
+    xhr.setRequestHeader("Content-length", param.length);
+    xhr.setRequestHeader("Connection", "close");
+    xhr.send(param); // for verification by your backend
+
+ xhr.onreadystatechange = simpleXhrSentinel(xhr); }
+
+function signoutUser() {
+ // Your backend must return HTTP status code 200 to indicate successful
+ // sign out (usually the resetting of one or more session variables) and
+ // it must arrange for the binding of currentUser to 'null' when the page
+ // is reloaded
+ var xhr = new XMLHttpRequest();
+ xhr.open("GET", "/xhr/sign-out", true);
+ xhr.send(null);
+ xhr.onreadystatechange = simpleXhrSentinel(xhr); }
+
+// Go!
+navigator.id.watch( {
+ loggedInUser: currentUser,
+ onlogin: verifyAssertion,
+ onlogout: signoutUser } );
+</pre>
+<p>You <strong>must</strong> call <code>navigator.id.watch()</code> on every page with a login or logout button. To support Persona enhancements like automatic login and global logout for your users, you <strong>should</strong> call this function on every page of your site.</p>
+<p>Persona will compare the email address you've passed into <code>loggedInUser</code> with its own knowledge of whether a user is currently logged in, and who they are. If these don't match, it may automatically invoke <code>onlogin</code> or <code>onlogout</code> on page load.</p>
+<p> </p>
+<h2 id="Step_4_Verify_the_user’s_credentials">Step 4: Verify the user’s credentials</h2>
+<p>Instead of passwords, Persona uses “identity assertions,” which are kind of like single-use, single-site passwords combined with the user’s email address. When a user wants to log in, your <code>onlogin</code> callback will be invoked with an assertion from that user. Before you can log them in, you must verify that the assertion is valid.</p>
+<p>It’s <em>extremely important</em> that you verify the assertion on your server, and not in JavaScript running on the user’s browser, since that would be easy to forge. The example above handed off the assertion to the site’s backend by using jQuery’s <code>$.ajax()</code> helper to <code>POST</code> it to <code>/auth/login</code>.</p>
+<p>Once your server has an assertion, how do you verify it? The easiest way is to use a helper service provided by Mozilla. Simply <code>POST</code> the assertion to <code>https://verifier.login.persona.org/verify</code> with two parameters:</p>
+<ol>
+ <li><code>assertion</code>: The identity assertion provided by the user.</li>
+ <li><code>audience</code>: The hostname and port of your website. You must hardcode this value in your backend; do not derive it from any data supplied by the user.</li>
+</ol>
+<p>For example, if you’re <code>example.com</code>, you can use the command line to test an assertion with:</p>
+<pre class="brush: bash;">$ curl -d "assertion=&lt;ASSERTION&gt;&amp;audience=https://example.com:443" "https://verifier.login.persona.org/verify"
+</pre>
+<p>If it’s valid, you’ll get a JSON response like this:</p>
+<pre class="brush: js;">{
+ "status": "okay",
+ "email": "bob@eyedee.me",
+ "audience": "https://example.com:443",
+ "expires": 1308859352261,
+ "issuer": "eyedee.me"
+}
+</pre>
+<p>You can learn more about the verification service by reading <a href="https://developer.mozilla.org/en-US/docs/BrowserID/Remote_Verification_API">The Verification Service API</a>. An example <code>/auth/login</code> implementation, using <a href="http://python.org/">Python</a>, the <a href="http://flask.pocoo.org/">Flask</a> web framework, and the <a href="http://python-requests.org">Requests</a> HTTP library might look like this:</p>
+<pre class="brush: python;">@app.route('/auth/login', methods=['POST'])
+def login():
+ # The request has to have an assertion for us to verify
+ if 'assertion' not in request.form:
+ abort(400)
+
+ # Send the assertion to Mozilla's verifier service.
+ data = {'assertion': request.form['assertion'], 'audience': 'https://example.com:443'}
+ resp = requests.post('https://verifier.login.persona.org/verify', data=data, verify=True)
+
+ # Did the verifier respond?
+ if resp.ok:
+ # Parse the response
+ verification_data = json.loads(resp.content)
+
+ # Check if the assertion was valid
+ if verification_data['status'] == 'okay':
+ # Log the user in by setting a secure session cookie
+ session.update({'email': verification_data['email']})
+ return 'You are logged in'
+
+ # Oops, something failed. Abort.
+ abort(500)
+</pre>
+<p>For examples of how to use Persona in other languages, have a look at the <a href="https://github.com/mozilla/browserid-cookbook" title="https://github.com/mozilla/browserid-cookbook">cookbook</a>.</p>
+<p>The session management is probably very similar to your existing login system. The first big change is in verifying the user’s identity by checking an assertion instead of checking a password. The other big change is ensuring that the user’s email address is available for use as the <code>loggedInUser</code> parameter to {{ domxref("navigator.id.watch()") }}.</p>
+<p>Logout is simple: you just need to remove the user’s session cookie.</p>
+<h2 id="Step_5_Review_best_practices">Step 5: Review best practices</h2>
+<p>Once everything works and you’ve successfully logged into and out of your site, you should take a moment to review <a href="https://developer.mozilla.org/docs/BrowserID/Security_Considerations">best practices</a> for using Persona safely and securely.</p>
+<p>If you're making a production site, have a look at the <a href="/en-US/docs/Persona/The_implementor_s_guide" title="/en-US/docs/Persona/The_implementor_s_guide">implementor's guide</a>, where we've collected tips for adding the kind of features often needed in real-world login systems.</p>
+<p>Lastly, don’t forget to sign up for the <a href="https://mail.mozilla.org/listinfo/persona-notices">Persona notices</a> mailing list so you’re notified of any security issues or backwards incompatible changes to the Persona API. The list is extremely low traffic: it’s only used to announce changes which may adversely impact your site.</p>
+<p> </p>
diff --git a/files/de/mozilla/persona/warum_persona/index.html b/files/de/mozilla/persona/warum_persona/index.html
new file mode 100644
index 0000000000..337a84a544
--- /dev/null
+++ b/files/de/mozilla/persona/warum_persona/index.html
@@ -0,0 +1,31 @@
+---
+title: Warum Persona?
+slug: Mozilla/Persona/Warum_Persona
+translation_of: Archive/Mozilla/Persona/Why_Persona
+---
+<p style=""> </p>
+<p style="">Das existierende System von Benutzernamen und Paswörtern ist inakzeptabel: Von den Nutzern wird erwartet, dass sie ein neues, komplexes Passwort für jede Site und jeden Dienst erstellen und sich an dieses erinnern. Und jede Site muss das Passwort sicher speichern. Allerdings zeigen Hacker-Angriffe gerade in letzter Zeit, dass sogar namhafte Unternehmen Lücken in der Passwortsicherheit haben und die Daten ihrer Nutzer damit in Gefahr bringen.</p>
+<p>Persona ist ein offenes, verteiltes, webweites Identitätssystem, das die Passworteingabe für jede Site ersetzt.  Es orientiert sich an der Benutzerfreundlichkeit und begegnet den Datenschutzmängeln von Systemen wie OpenID, ohne dabei auf die zentrale Infrastruktur zurückzugreifen wie sie beispielsweise Facebook Connect nutzt.</p>
+<h2 id="Persona_macht_Passwörter_für_jede_Site_überflüssig">Persona macht Passwörter für jede Site überflüssig</h2>
+<p>Anstatt eines Passworts für jede einzelne Site, erlaubt Persona die Anmeldung mit nur zwei Klicks, nach Abschluß eines einfachen, einmaligen Vorgangs für jede Identität.  Das ist sicher, geschützt und basiert auf einem öffentlichen Schlüssel modernster Kryptografie. Statt eines Passworts erzeugt der Browser des Nuzers eine kryptografische "Idenditätserklärung", die nach wenigen Minuten abläuft und nur für eine einzelne Site gültig ist. Weil es keine seitenspezifischen Passwörter gibt, brauchen sich Websites, die Persona nutzen, nicht um die sichere Speicherung oder den potentiellen Verlust der Passwortdatenbank kümmern.</p>
+<p>Der schnelle Registriervorgang reduziert außerdem den "Nutzerwiderstand" beim Besuch neuer Sites.</p>
+<h2 id="Persona_Identitäten_sind_Email-Addressen">Persona Identitäten sind Email-Addressen</h2>
+<p>Anstatt eines freien Usernamens verwendet Persona Email-Addressen als Identitäten. Dies hat zahlreiche Vorteile sowohl für den Nutzer als auch den Entwickler:</p>
+<h3 id="Nutzervorteile_bei_Verwendung_von_Email-Adressen">Nutzervorteile bei Verwendung von Email-Adressen</h3>
+<ul>
+ <li>Nutzer wissen bereits ihre Email-Adresse im Gegensatz zum Lernen einer neuen und möglicherweise verwirrenden URL mit OpenID.</li>
+ <li>Email-Addressen stellen übersichtlich die Idee dar von <code>irgendwer@irgendein-kontext</code>, und machen es dem Nutzer dabei einfach, Ihre Identität <code>@arbeit</code>, <code>@zuhause</code>, oder <code>@schule</code> auseinander zu halten. Dies unterscheidet sie vom Trend, Identitäten durch reale Namen zusammenzufassen, wie etwa die Politik von Einmalzugängen bei sozialen Netzwerken wie Facebook und Google+.</li>
+ <li>Email kann selbst gehosted oder an Provider delegiert werden und gibt so dem Nutzer selbst Kontrolle über seine Identität.</li>
+</ul>
+<h3 id="Vorteile_für_Entwickler_bei_Verwendung_von_Email-Addressen">Vorteile für Entwickler bei Verwendung von Email-Addressen</h3>
+<ul>
+ <li>Email-Addressen geben Entwicklern ein direktes Mittel zur Kontaktaufnahme mit den Nutzern.</li>
+ <li>Die meisten Sites verlangen eine Email-Adresse von ihren Nutzern. Persona bietet dies automatisch wenn sich Nutzer anmelden. Dadurch entfallen zusätzlich notwendige Email-Bestätigungen.</li>
+ <li>Viele Login-Systeme behandeln bereits Email-Adressen als eindeutige Schlüssel. In diesem Fall ist eine Anmeldung mit Persona nicht erforderlich und Persona kann neben bestehenden Login-Systemen eingesetzt werden.</li>
+</ul>
+<p>Ganz zu schweigen davon, dass Email ein bereits bestehendes, ausgereiftes System mit Milliarden von Konten unzähliger Anbieter darstellt.</p>
+<h2 id="Worin_unterscheidet_sich_Persona_von_anderen_Einmal-Zugangsanbietern" style="">Worin unterscheidet sich Persona von anderen Einmal-Zugangsanbietern?</h2>
+<p>Persona ist sicher, geschützt und einfach. Es schützt die Privatspähre, die Kontrolle und die Wahlfreiheit der Nutzer in einer Art, wie es andere Anbieter nicht tun oder nicht können.</p>
+<p>Viele soziale Netzwerke wie Facebook and Google+ benötigen Nutzer die ihren realen Namen verwenden und schränken die Nutzer auf ein einziges Konto ein. Dadurch, dass Persona auf Email-Adressen beruht, erlaubt es den Nutzern ihre verschiedenen Arbeits-, Heim-, Schul- und andere Identitäten zu trennen.</p>
+<p>Persona ist offen und dezentral: Jeder mit einer Email-Adresse kann sich bei Sites anmelden, die Persona verwenden. Zudem kann jeder seine eigene Identität hosten oder delegieren - eben genau wie Emails. Dies steht im Gegensatz zu Zugangsdiensten sozialer Netzwerke, die ein einziges, zentrales Konto benötigen.</p>
+<p>Persona bietet außerdem einen neuen Ansatz um die Privatspähre der Nutzer zu schützen, indem es den Browser des Nutzers in den Mittelpunkt des Authentifzierungsprozesses stellt: Der Browser erhält Anmeldeinformationen vom Email-Anbieter des Nutzers und stellt diese Informationen der Website zur Verfügung. Der Email-Anbieter kann den Nutzer nicht nachverfolgen ("tracken"), aber Websiten können dennoch durch die kryptografisches Verifikation der Anmeldeinformationen der Identität des Nutzers vertrauen. Die meisten anderen Systeme, selbst dezentrale wie OpenID, verlangen, dass die Site "nach Hause telefoniert" bevor sie dem Nutzer die Anmeldung gestatten.</p>
diff --git a/files/de/mozilla/preferences/eine_kurze_anleitung_zu_mozilla_einstellungen/index.html b/files/de/mozilla/preferences/eine_kurze_anleitung_zu_mozilla_einstellungen/index.html
new file mode 100644
index 0000000000..ac734def51
--- /dev/null
+++ b/files/de/mozilla/preferences/eine_kurze_anleitung_zu_mozilla_einstellungen/index.html
@@ -0,0 +1,10 @@
+---
+title: Eine kurze Anleitung zur Mozilla- Einstellungen
+slug: Mozilla/Preferences/Eine_kurze_Anleitung_zu_Mozilla_Einstellungen
+tags:
+ - Favoriten
+translation_of: Mozilla/Preferences/A_brief_guide_to_Mozilla_preferences
+---
+<p>Dieser Artikel ist für Mozilla viel Nutzer und Systemadministratoren, das darauf abzielt einen allgemeinen Überblick in den Mozilla- Einstellungen zu gewährleisten.<br>
+ Insbesondere über das speichern</p>
+<p>Datei-für-Datei so wie das Bearbeiten der Ladesequenz dieser</p>
diff --git a/files/de/mozilla/preferences/index.html b/files/de/mozilla/preferences/index.html
new file mode 100644
index 0000000000..1169ecabf1
--- /dev/null
+++ b/files/de/mozilla/preferences/index.html
@@ -0,0 +1,48 @@
+---
+title: Preferences
+slug: Mozilla/Preferences
+tags:
+ - NeedsTranslation
+ - TopicStub
+translation_of: Mozilla/Preferences
+---
+<p>The preference system makes it possible to store data for Mozilla applications using a key/value pairing system. These articles provide information about how to use the preference system.</p>
+<table class="topicpage-table">
+ <tbody>
+ <tr>
+ <td>
+ <h2 class="Documentation" id="Documentation" name="Documentation">Documentation</h2>
+ <dl>
+ <dt><a href="/en-US/docs/Preferences/Preferences_system" title="Preferences/Preferences system">Preferences system</a></dt>
+ <dd>An introduction to using the preference system in Mozilla.</dd>
+ <dt><a href="/en-US/docs/XUL_School/Handling_Preferences" title="XUL School/Handling Preferences">XUL School: Handling preferences</a></dt>
+ <dd>The XUL School tutorial chapter on preferences.</dd>
+ <dt><a href="/en-US/docs/Preferences/Preference_reference" title="Preferences/Preference_reference">Mozilla preference reference</a></dt>
+ <dd>A reference guide to all Mozilla preferences; currently a work in progress.</dd>
+ <dt><a href="/en-US/docs/Preferences/A_brief_guide_to_Mozilla_preferences" title="Preferences/A brief guide to Mozilla preferences">A brief guide to Mozilla preferences</a></dt>
+ <dd>An introductory guide to where preferences are stored and other useful information about the core preference system.</dd>
+ <dt><a href="/en-US/docs/Preferences/Using_preferences_from_application_code" title="Preferences/Using preferences from application code">Using preferences from application code</a> {{gecko_minversion_inline("6.0")}}</dt>
+ <dd>Firefox 6 introduced static functions for accessing preferences efficiently from within application code. This API is not available for add-ons, but if you're working on a Gecko application, this API is the preferred way to access preferences.</dd>
+ <dt><a href="/en-US/docs/Preferences/Mozilla_networking_preferences" title="Preferences/Mozilla networking preferences">Mozilla networking preferences</a></dt>
+ <dd>A guide to key networking-related preferences.</dd>
+ <dt><a href="/en-US/docs/Preferences/Mozilla_preferences_for_uber-geeks" title="Preferences/Mozilla preferences for uber-geeks">Mozilla preferences for uber-geeks</a></dt>
+ <dd>A guide to preferences that only truly elite geeks should play with.</dd>
+ </dl>
+ <p><span class="alllinks"><a href="/en-US/docs/tag/Preferences" title="tag/Preferences">View all pages tagged with "Preferences"...</a></span></p>
+ </td>
+ <td>
+ <h2 class="Community" id="Examples" name="Examples">Examples</h2>
+ <dl>
+ <dt><a href="/en-US/docs/Code_snippets/Preferences" title="Code snippets/Preferences">Code snippets</a></dt>
+ <dd>Preference-related code snippets.</dd>
+ <dt><a href="/en-US/docs/Adding_preferences_to_an_extension" title="Adding preferences to an extension">Adding preferences to an extension</a></dt>
+ <dd>How to add preferences to an existing extension.</dd>
+ </dl>
+ <h2 class="Related_Topics" id="Related_Topics" name="Related_Topics">Related Topics</h2>
+ <ul>
+ <li><a href="/en-US/docs/XUL" title="XUL">XUL</a>, <a href="/en-US/docs/JavaScript" title="JavaScript">JavaScript</a>, <a href="/en-US/docs/XPCOM" title="XPCOM">XPCOM</a>, <a href="/en-US/docs/Extensions" title="Extensions">Extensions</a>, <a href="/en-US/docs/Developer_Guide" title="Developing_Mozilla">Developing Mozilla</a></li>
+ </ul>
+ </td>
+ </tr>
+ </tbody>
+</table>
diff --git a/files/de/mozilla/projects/deutsch/index.html b/files/de/mozilla/projects/deutsch/index.html
new file mode 100644
index 0000000000..e422dcde65
--- /dev/null
+++ b/files/de/mozilla/projects/deutsch/index.html
@@ -0,0 +1,35 @@
+---
+title: Emscripten
+slug: Mozilla/Projects/Deutsch
+translation_of: Mozilla/Projects/Emscripten
+---
+<div class="summary">
+ <p><span class="seoSummary">Emscripten is an <strong>LLVM</strong> to <strong>JavaScript</strong> compiler. It takes LLVM bytecode (e.g. generated from C/C++ using Clang, or from another language) and compiles that into JavaScript, which can be run on the Web.</span></p>
+</div>
+<div class="column-container zone-callout">
+ <p><strong>The resources here provide you with all you need to know to get up and running with Emscripten at a basic level, allowing you to take your first steps with Emscripten, and discover how Emscripten can be leveraged to produce more powerful web apps. For a more detailed set of documentation, you should <a href="https://github.com/kripken/emscripten/wiki">consult the official Emscripten Wiki.</a></strong></p>
+ <p>Using Emscripten, you can</p>
+ <ul>
+ <li>Compile C and C++ code into JavaScript and run that on the web</li>
+ <li>Run code in languages like Python as well, by compiling CPython from C to JavaScript and interpreting code in that on the web</li>
+ </ul>
+ <p>If you are new to Emscripten you start off by <a href="/en-US/docs/Emscripten/Download_and_install">installing Emscripten</a> on your system, and working through our <a href="/en-US/docs/Emscripten/Introducing">Introducing Emscripten</a> section.</p>
+ <div class="note">
+ <p>Note: the current release version of Emscripten is 1.7.8.</p>
+ </div>
+</div>
+<h2 id="Subnav">Subnav</h2>
+<ol>
+ <li><a href="/en-US/docs/Emscripten/Introducing">Introducing Emscripten</a>
+ <ol>
+ <li><a href="/en-US/docs/Emscripten/Introducing/Emscripten_beginners_tutorial">Emscripten beginner's tutorial</a></li>
+ <li><a href="/en-US/docs/Emscripten/Introducing/What_is_Emscripten_and_how_does_it_work">What is Emscripten and how does it work?</a></li>
+ <li><a href="/en-US/docs/Emscripten/Introducing/The_nature_of_Emscripten-compiled_JavaScript">The nature of Emscripten-compiled JavaScript</a></li>
+ <li><a href="/en-US/docs/Emscripten/Introducing/Putting_Emscripten_in_your_toolchain">Putting Emscripten in your toolchain</a></li>
+ </ol>
+ </li>
+ <li><a href="/en-US/docs/Emscripten/Web_abilities_and_limitations">Web abilities and limitations</a></li>
+ <li><a href="/en-US/docs/Emscripten/Download_and_install">Download and install</a></li>
+ <li><a href="/en-US/docs/Emscripten/Workflow_and_tools">Workflow and tools</a></li>
+ <li><a href="/en-US/docs/Emscripten/Techniques">Emscripten Techniques</a></li>
+</ol>
diff --git a/files/de/mozilla/projects/index.html b/files/de/mozilla/projects/index.html
new file mode 100644
index 0000000000..6291137b31
--- /dev/null
+++ b/files/de/mozilla/projects/index.html
@@ -0,0 +1,14 @@
+---
+title: Projects
+slug: Mozilla/Projects
+tags:
+ - Mozilla
+ - NeedsContent
+ - NeedsTranslation
+ - Projects
+ - TopicStub
+translation_of: Mozilla/Projects
+---
+<p>{{ draft() }}</p>
+<p>This page needs to become a pretty index to Mozilla projects whose documentation is located under it.</p>
+<p>{{ LandingPageListSubpages() }}</p>
diff --git a/files/de/mozilla/projects/nss/index.html b/files/de/mozilla/projects/nss/index.html
new file mode 100644
index 0000000000..f69cd1dab7
--- /dev/null
+++ b/files/de/mozilla/projects/nss/index.html
@@ -0,0 +1,186 @@
+---
+title: Network Security Services
+slug: Mozilla/Projects/NSS
+tags:
+ - JSS
+ - NSS
+ - NeedsMigration
+ - NeedsTranslation
+ - TopicStub
+translation_of: Mozilla/Projects/NSS
+---
+<p><strong>Network Security Services</strong> (<strong>NSS</strong>) is a set of libraries designed to support cross-platform development of security-enabled client and server applications. Applications built with NSS can support SSL v3, TLS, PKCS #5, PKCS #7, PKCS #11, PKCS #12, S/MIME, X.509 v3 certificates, and other security standards.</p>
+
+<p>For detailed information on standards supported, see <a href="/en-US/docs/Overview_of_NSS" title="Overview_of_NSS">Overview of NSS</a>. For a list of frequently asked questions, see the <a href="/en-US/docs/NSS_FAQ" title="NSS_FAQ">FAQ</a>.</p>
+
+<p>NSS is available under the Mozilla Public License. For information on downloading NSS releases as tar files, see <a href="https://developer.mozilla.org/en-US/docs/NSS_Sources_Building_Testing">Download PKI Source</a>.</p>
+
+<p>If you're a developer and would like to contribute to NSS, you might want to read the documents <a href="/en-US/docs/An_overview_of_NSS_Internals" title="/en-US/docs/An_overview_of_NSS_Internals">highlevel overview of internal details of NSS</a> and <a href="/en-US/docs/Getting_Started_With_NSS" title="/en-US/docs/Getting_Started_With_NSS">getting started with NSS</a>.</p>
+
+<table class="topicpage-table">
+ <tbody>
+ <tr>
+ <td>
+ <h2 class="Documentation" id="Documentation" name="Documentation">Documentation</h2>
+
+ <h3 id="Background_Information">Background Information</h3>
+
+ <dl>
+ <dt><a href="/en-US/docs/Overview_of_NSS">Overview of NSS</a></dt>
+ <dd>Provides a brief summary of NSS and its capabilities.</dd>
+ <dt><a href="/en-US/docs/NSS_FAQ">NSS FAQ</a></dt>
+ <dd>Answers basic questions about NSS.</dd>
+ <dt><a href="/en-US/docs/Introduction_to_Public-Key_Cryptography">Introduction to Public-Key Cryptography</a></dt>
+ <dd>Explains the basic concepts of public-key cryptography that underlie NSS.</dd>
+ <dt><a href="/en-US/docs/Introduction_to_SSL">Introduction to SSL</a></dt>
+ <dd>Introduces the SSL protocol, including information about cryptographic ciphers supported by SSL and the steps involved in the SSL handshake.</dd>
+ </dl>
+
+ <h3 id="Getting_Started">Getting Started</h3>
+
+ <dl>
+ <dt><a href="/en-US/docs/NSS/NSS_Releases" title="NSS_releases">NSS Releases</a></dt>
+ <dd>This page contains information about the current and past releases of NSS.</dd>
+ <dt><a href="/en-US/docs/NSS_Sources_Building_Testing">Get the source code and Build it</a></dt>
+ <dd>Instructions on how to build NSS on the different supported platforms.</dd>
+ <dt><a href="/en-US/docs/Mozilla/Developer_guide/Source_Code/Mercurial">Get Mozilla Source Code Using Mercurial</a></dt>
+ <dd>Information about with working with Mercurial.</dd>
+ <dt><a href="/en-US/docs/Mozilla/Developer_guide/Source_Code/CVS">Get Mozilla Source Code Using CVS (deprecated)</a></dt>
+ <dd>Old deprecated CVS documentation.</dd>
+ </dl>
+
+ <h3 id="NSS_APIs">NSS APIs</h3>
+
+ <dl>
+ <dt><a href="/en-US/docs/Introduction_to_Network_Security_Services">Introduction to Network Security Services</a></dt>
+ <dd>Provides an overview of the NSS libraries and what you need to know to use them.</dd>
+ <dt><a href="NSS/SSL_functions">NSS Public Functions</a></dt>
+ <dd>Summarizes the APIs exported by the NSS shared libraries.</dd>
+ <dt><a href="/en-US/docs/NSS_reference">NSS Reference</a></dt>
+ <dd>API used to invoke SSL operations.</dd>
+ <dt><a href="NSS/NSS_API_GUIDELINES">NSS API Guidelines</a></dt>
+ <dd>Explains how the libraries and code are organized, and guidelines for developing code (naming conventions, error handling, thread safety, etc.)</dd>
+ <dt><a href="NSS/nss_tech_notes">NSS Technical Notes</a></dt>
+ <dd>Links to NSS technical notes, which provide latest information about new NSS features and supplementary documentation for advanced topics in programming with NSS.</dd>
+ </dl>
+
+ <h3 id="Tools_testing_and_other_technical_details">Tools, testing, and other technical details</h3>
+
+ <dl>
+ <dt><a href="/en-US/docs/NSS_Sources_Building_Testing">Build Instructions for NSS</a></dt>
+ <dd>Describe how to check out and build NSS releases.</dd>
+ </dl>
+
+ <dl>
+ <dt><a href="/en-US/docs/Mozilla/Projects/NSS/NSS_Developer_Tutorial">NSS Developer Tutorial</a></dt>
+ <dd>How to make changes in NSS. Coding style, maintaining ABI compatibility.</dd>
+ </dl>
+
+ <dl>
+ <dt><a href="NSS/Tools">NSS Tools</a></dt>
+ <dd>Tools for developing, debugging, and managing applications that use NSS.</dd>
+ <dt><a href="NSS/NSS_Sample_Code">Sample Code</a></dt>
+ <dd>Demonstrates how NSS can be used for cryptographic operations, certificate handling, SSL, etc.</dd>
+ <dt><a href="http://www-archive.mozilla.org/projects/security/pki/nss/testnss_32.html">NSS 3.2 Test Suite</a></dt>
+ <dd><strong>Archived version.</strong> Describes how to run the standard NSS tests.</dd>
+ <dt><a href="http://www-archive.mozilla.org/projects/security/pki/nss/performance_reports.html">NSS Performance Reports</a></dt>
+ <dd><strong>Archived version.</strong> Links to performance reports for NSS 3.2 and later releases.</dd>
+ <dt><a href="http://www-archive.mozilla.org/projects/security/pki/nss/nss-3.11/nss-3.11-algorithms.html">Encryption Technologies Available in NSS 3.11</a></dt>
+ <dd><strong>Archived version.</strong> Lists the cryptographic algorithms used by NSS 3.11.</dd>
+ <dt><a href="http://www-archive.mozilla.org/projects/security/pki/nss/loadable_certs.html">NSS 3.1 Loadable Root Certificates</a></dt>
+ <dd><strong>Archived version.</strong> Describes the scheme for loading root CA certificates.</dd>
+ <dt><a href="http://www-archive.mozilla.org/projects/security/pki/nss/db_formats.html">cert7.db</a></dt>
+ <dd><strong>Archived version.</strong> General format of the cert7.db database.</dd>
+ </dl>
+
+ <h3 id="PKCS_11_information">PKCS #11 information</h3>
+
+ <ul>
+ <li><a href="/en-US/docs/PKCS11" title="PKCS11">Documentation on PKCS #11 modules</a></li>
+ <li><a href="/en-US/docs/PKCS11_Implement">Implementing PKCS #11 for NSS</a></li>
+ <li><a href="/en-US/docs/PKCS11_Module_Specs" title="PKCS11_Module_Specs">The strings NSS uses to load PKCS #11 modules</a></li>
+ <li><a href="/en-US/docs/PKCS11_FAQ">PKCS #11 FAQ</a></li>
+ <li><a href="/en-US/docs/PKCS11_Jar_Install">Using the JAR Installation Manager to Install a PKCS #11 Cryptographic Module</a></li>
+ <li><a href="http://www-archive.mozilla.org/projects/security/pki/pkcs11/">PKCS #11 Conformance Testing - Archived version</a></li>
+ </ul>
+
+ <dl>
+ </dl>
+
+ <h3 id="CA_certificates_pre-loaded_into_NSS">CA certificates pre-loaded into NSS</h3>
+
+ <ul>
+ <li><a href="http://www.mozilla.org/projects/security/certs/policy/">Mozilla CA certificate policy</a></li>
+ <li><a href="http://www.mozilla.org/projects/security/certs/included/">List of pre-loaded CA certificates</a>
+ <ul>
+ <li>Consumers of this list must consider the trust bit setting for each included root certificate. <a href="https://www.imperialviolet.org/2012/01/30/mozillaroots.html">More Information</a>, <a href="https://github.com/agl/extract-nss-root-certs">Extracting roots and their trust bits</a></li>
+ </ul>
+ </li>
+ </ul>
+
+ <dl>
+ </dl>
+
+ <h3 id="NSS_is_built_on_top_of_Netscape_Portable_Runtime_(NSPR)">NSS is built on top of Netscape Portable Runtime (NSPR)</h3>
+
+ <dl>
+ <dt><a href="NSPR">Netscape Portable Runtime</a></dt>
+ <dd>NSPR project page.</dd>
+ <dt><a href="/en-US/docs/Mozilla/Projects/NSPR/Reference">NSPR Reference</a></dt>
+ <dd>NSPR API documentation.</dd>
+ </dl>
+
+ <h3 id="Additional_Information">Additional Information</h3>
+
+ <ul>
+ <li><a href="/en-US/docs/JavaScript_crypto" title="JavaScript_crypto">Using the window.crypto object from JavaScript</a></li>
+ <li><a href="/en-US/docs/HTTP_Delegation" title="HTTP_Delegation">Delegation of HTTP download for OCSP</a></li>
+ <li><a href="/en-US/docs/TLS_Cipher_Suite_Discovery" title="TLS_Cipher_Suite_Discovery">TLS Cipher Suite Discovery</a></li>
+ <li><a href="/en-US/docs/NSS_Certificate_Download_Specification" title="NSS_Certificate_Download_Specification">NSS Certificate Download Specification</a></li>
+ <li><a href="/en-US/docs/NSS/FIPS_Mode_-_an_explanation" title="FIPS Mode - an explanation">FIPS Mode - an explanation</a></li>
+ <li><a href="/en-US/docs/NSS_Key_Log_Format" title="NSS Key Log Format">Format of key log files</a></li>
+ <li>View <a href="/en-US/docs/tag/NSS" title="/en-US/docs/tag/NSS">all NSS-related articles on MDN</a></li>
+ </ul>
+
+ <h3 id="Testing">Testing</h3>
+
+ <ul>
+ <li><a href="/en-US/docs/Testing_third-party_PKCS#11_modules.2Ftokens_with_NSS" title="Testing_third-party_PKCS#11_modules.2Ftokens_with_NSS">Testing third-party PKCS #11 modules/tokens with NSS</a></li>
+ </ul>
+
+ <h3 id="Planning">Planning</h3>
+
+ <p>Information on NSS planning can be found at <a class="external" href="http://wiki.mozilla.org/NSS">wiki.mozilla.org</a>, including:</p>
+
+ <ul>
+ <li><a class="external" href="http://wiki.mozilla.org/FIPS_Validation">FIPS Validation</a></li>
+ <li><a class="external" href="http://wiki.mozilla.org/NSS:Roadmap">NSS Roadmap page</a></li>
+ <li><a href="https://fedoraproject.org/wiki/User:Mitr/NSS:DeveloperFriendliness" title="https://fedoraproject.org/wiki/User:Mitr/NSS:DeveloperFriendliness">NSS Improvement Project</a></li>
+ </ul>
+ </td>
+ <td>
+ <h2 class="Community" id="Community" name="Community">Community</h2>
+
+ <ul>
+ <li>View Mozilla Security forums...</li>
+ </ul>
+
+ <p>{{ DiscussionList("dev-security", "mozilla.dev.security") }}</p>
+
+ <ul>
+ <li>View Mozilla Cryptography forums...</li>
+ </ul>
+
+ <p>{{ DiscussionList("dev-tech-crypto", "mozilla.dev.tech.crypto") }}</p>
+
+ <h2 class="Related_Topics" id="Related_Topics" name="Related_Topics">Related Topics</h2>
+
+ <ul>
+ <li><a href="/en-US/docs/Security" title="Security">Security</a></li>
+ </ul>
+ </td>
+ </tr>
+ </tbody>
+</table>
+
+<p> </p>
diff --git a/files/de/mozilla/projects/nss/nss_3.33_release_notes/index.html b/files/de/mozilla/projects/nss/nss_3.33_release_notes/index.html
new file mode 100644
index 0000000000..6bcaf94043
--- /dev/null
+++ b/files/de/mozilla/projects/nss/nss_3.33_release_notes/index.html
@@ -0,0 +1,78 @@
+---
+title: NSS 3.33 release notes
+slug: Mozilla/Projects/NSS/NSS_3.33_release_notes
+translation_of: Mozilla/Projects/NSS/NSS_3.33_release_notes
+---
+<h2 id="Einführung">Einführung</h2>
+
+<p>Das Network Security Services (NSS) Team hat NSS 3.33 veröffentlicht, was eine Nebenversion darstellt.</p>
+
+<h2 id="Distribution_information">Distribution information</h2>
+
+<p>The hg tag is NSS_3_33_RTM. NSS 3.33 requires Netscape Portable Runtime (NSPR) 4.17 or newer.</p>
+
+<p>NSS 3.33 source distributions are available on ftp.mozilla.org for secure HTTPS download:</p>
+
+<ul>
+ <li>Source tarballs:<br>
+ <a href="https://ftp.mozilla.org/pub/mozilla.org/security/nss/releases/NSS_3_33_RTM/src/">https://ftp.mozilla.org/pub/mozilla.org/security/nss/releases/NSS_3_33_RTM/src/</a></li>
+</ul>
+
+<h2 id="Bedeutende_Änderungen_in_NSS_3.33">Bedeutende Änderungen in NSS 3.33</h2>
+
+<ul>
+ <li>TLS-Kompression wird nicht mehr unterstützt. API calls that attempt to enable compression are accepted without failure. However, TLS compression will remain disabled.</li>
+ <li>Diese Version von NSS verwendet eine <a href="https://blog.mozilla.org/security/2017/09/13/verified-cryptography-firefox-57/">formal bestätigte Implementierung</a> von Curve25519 auf 64-Bit-Systemen.</li>
+ <li>The compile time flag DISABLE_ECC has been removed.</li>
+ <li>When NSS is compiled without NSS_FORCE_FIPS=1 startup checks are not performed anymore.</li>
+ <li>Fixes CVE-2017-7805, a potential use-after-free in TLS 1.2 server when verifying client authentication</li>
+ <li>Various minor improvements and correctness fixes.</li>
+</ul>
+
+<h2 id="Neu_in_NSS_3.33">Neu in NSS 3.33</h2>
+
+<h3 id="Neue_Funktionalität">Neue Funktionalität</h3>
+
+<ul>
+ <li>When listing an NSS database using certutil -L, but the database hasn't yet been initialized with any non-empty or empty password, the text "Database needs user init" will be included in the listing.</li>
+ <li>When using certutil to set an inacceptable password in FIPS mode, a correct explanation of acceptable passwords will be printed.</li>
+</ul>
+
+<h4 id="Neue_Funktionen">Neue Funktionen</h4>
+
+<ul>
+ <li><em>in cert.h</em>
+
+ <ul>
+ <li><strong>CERT_FindCertByIssuerAndSNCX</strong> - a variation of existing function CERT_FindCertByIssuerAndSN that accepts an additional password context parameter.</li>
+ <li><strong>CERT_FindCertByNicknameOrEmailAddrCX</strong> - a variation of existing function CERT_FindCertByNicknameOrEmailAddr that accepts an additional password context parameter.</li>
+ <li><strong>CERT_FindCertByNicknameOrEmailAddrForUsageCX</strong> - a variation of existing function CERT_FindCertByNicknameOrEmailAddrForUsage that accepts an additional password context parameter.</li>
+ </ul>
+ </li>
+ <li><em>in secport.h</em>
+ <ul>
+ <li><strong>NSS_SecureMemcmpZero</strong> - check if a memory region is all zero in constant time.</li>
+ <li><strong>PORT_ZAllocAligned</strong> - allocate aligned memory.</li>
+ <li><strong>PORT_ZAllocAlignedOffset</strong> - allocate aligned memory for structs.</li>
+ </ul>
+ </li>
+ <li><em>in ssl.h</em>
+ <ul>
+ <li><strong>SSL_GetExperimentalAPI</strong> - access experimental APIs in libssl.</li>
+ </ul>
+ </li>
+</ul>
+
+<h2 id="Fehler_behoben_in_NSS_3.33">Fehler behoben in NSS 3.33</h2>
+
+<p>This Bugzilla query returns all the bugs fixed in NSS 3.33:</p>
+
+<p><a href="https://bugzilla.mozilla.org/buglist.cgi?resolution=FIXED&amp;classification=Components&amp;query_format=advanced&amp;product=NSS&amp;target_milestone=3.33">https://bugzilla.mozilla.org/buglist.cgi?resolution=FIXED&amp;classification=Components&amp;query_format=advanced&amp;product=NSS&amp;target_milestone=3.33</a></p>
+
+<h2 id="Kompatibilität">Kompatibilität</h2>
+
+<p>NSS 3.33 shared libraries are backward compatible with all older NSS 3.x shared libraries. A program linked with older NSS 3.x shared libraries will work with NSS 3.33 shared libraries without recompiling or relinking. Furthermore, applications that restrict their use of NSS APIs to the functions listed in NSS Public Functions will remain compatible with future versions of the NSS shared libraries.</p>
+
+<h2 id="Rückmeldung">Rückmeldung</h2>
+
+<p>Entdeckte Fehler sollten durch das Ausfüllen eines Fehlerberichts mithilfe von<a href="https://bugzilla.mozilla.org/enter_bug.cgi?product=NSS"> bugzilla.mozilla.org</a> gemeldet werden (Produkt NSS).</p>
diff --git a/files/de/mozilla/projects/nss/nss_sample_code/index.html b/files/de/mozilla/projects/nss/nss_sample_code/index.html
new file mode 100644
index 0000000000..a765114f0b
--- /dev/null
+++ b/files/de/mozilla/projects/nss/nss_sample_code/index.html
@@ -0,0 +1,25 @@
+---
+title: NSS Beispielcode
+slug: Mozilla/Projects/NSS/NSS_Sample_Code
+translation_of: Mozilla/Projects/NSS/NSS_Sample_Code
+---
+<h2 id="NSS_Beispielcode">NSS Beispielcode</h2>
+
+<p>Die Sammlung an Beispielcode demonstriert wie NSS für Kryptographische Operationen, Zertifikat Handhabung, SSL, etc. verwendet werden kann. Außerdem werden einige "best practices" in der Anwendung von Kryptographie demonstriert.</p>
+
+<ol>
+ <li><a href="https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSS/nss_sample_code/NSS_Sample_Code_Sample1">Beispielcode 1: Schlüsselgenerierung und Transport zwischen Servern</a></li>
+ <li><a href="https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSS/nss_sample_code/NSS_Sample_Code_sample2">Beispielcode 2: Symmetrische Verschlüsselung</a></li>
+ <li><a href="https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSS/nss_sample_code/NSS_Sample_Code_sample3">Beispielcode 3: Hashing, MAC</a></li>
+ <li><a href="https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSS/nss_sample_code/NSS_Sample_Code_sample4">Beispielcode 4: PKI Verschlüsselung</a></li>
+ <li><a href="https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSS/nss_sample_code/NSS_Sample_Code_sample5">Beispielcode 5: PKI Verschlüsselung mit rohem öffentlichem &amp; privatem Schlüssel im DER Format</a></li>
+ <li><a href="https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSS/nss_sample_code/NSS_Sample_Code_sample6">Beispielcode 6: Konstante Symmetrische Schlüssel in der NSS Datenbank</a></li>
+</ol>
+
+<p><br>
+ Dies sind sehr alte Code Beispiele die ersetzt werden müssen. Siehe https://bugzilla.mozilla.org/show_bug.cgi?id=490238</p>
+
+<p>Die Beispiele können wie folgt heruntergeladen werden:</p>
+
+<pre class="bz_comment_text" id="comment_text_42">hg clone https://hg.mozilla.org/projects/nss; cd nss; hg update SAMPLES_BRANCH
+</pre>
diff --git a/files/de/mozilla/projects/nss/pkcs11/index.html b/files/de/mozilla/projects/nss/pkcs11/index.html
new file mode 100644
index 0000000000..1bb5996d30
--- /dev/null
+++ b/files/de/mozilla/projects/nss/pkcs11/index.html
@@ -0,0 +1,20 @@
+---
+title: PKCS11
+slug: Mozilla/Projects/NSS/PKCS11
+tags:
+ - NSS
+ - NeedsTranslation
+ - Security
+ - TopicStub
+translation_of: Mozilla/Projects/NSS/PKCS11
+---
+<p> </p>
+
+<p>PKCS #11 information for implementors of cryptographic modules:</p>
+
+<ul>
+ <li><a href="PKCS11_Implement">Implementing PKCS11 for NSS</a></li>
+ <li><a href="/en-US/docs/PKCS11_FAQ">PKCS11 FAQ</a></li>
+ <li><a href="PKCS11_Jar_Install">Using the JAR Installation Manager to Install a PKCS #11 Cryptographic Module</a></li>
+ <li><a href="PKCS11_Conformance">PKCS #11 Conformance Testing</a></li>
+</ul>
diff --git a/files/de/mozilla/projects/nss/pkcs11/module_installation/index.html b/files/de/mozilla/projects/nss/pkcs11/module_installation/index.html
new file mode 100644
index 0000000000..158c1944b0
--- /dev/null
+++ b/files/de/mozilla/projects/nss/pkcs11/module_installation/index.html
@@ -0,0 +1,32 @@
+---
+title: Installation des PKCS11-Moduls
+slug: Mozilla/Projects/NSS/PKCS11/Module_Installation
+translation_of: Mozilla/Projects/NSS/PKCS11/Module_Installation
+---
+<p><span class="seoSummary"><a class="internal" href="/en/PKCS11" title="en/PKCS11">PKCS #11</a> Module sind externe Module, die Firefox-Unterstützung für Smartcard-Lesegeräte, biometrische Sicherheitsgeräte und externe Zertifikatspeicher ergänzen. Dieser Artikel behandelt die beiden Methoden zum Installieren von PKCS-#11 Modulen in Firefox.</span><font> Benutzer können das Einstellungsdialogfeld verwenden, um PKCS #11-Modul zu installieren oder zu entfernen. Erweiterungen können PKCS-#11 Module nsIPKCS11 programmgesteuert verwalten.</font></p>
+
+<div class="note"><strong>Hinweis:</strong> Die Informationen in diesem Artikel sind spezifisch für Firefox 3.5 und neuer. Ältere Versionen von Firefox unterstützen möglicherweise die <a class="internal" href="/en/DOM/window.pkcs11" title="en/DOM/window.pkcs11">window.pkcs11-Eigenschaft</a> für die Installation von PKCS #11 Modulen.</div>
+
+<h2 id="Verwenden_der_Firefox-Einstellungen_zum_Installieren_von_PKCS-11_Modulen">Verwenden der Firefox-Einstellungen zum Installieren von PKCS-#11 Modulen</h2>
+
+<ol>
+ <li>Speichern des PKCS-#11-Moduls an einem dauerhaften Speicherort auf Ihrem lokalen Computer</li>
+ <li>Öffnen Sie das Dialogfeld Firefox-Einstellungen. Wählen Sie "Erweitert" &gt; "Verschlüsselung" &gt; "Sicherheitsgeräte"</li>
+ <li>Wählen Sie "Load"</li>
+ <li>Geben Sie einen Namen für das Sicherheitsmodul ein, z. B. "Meine Clientdatenbank". HINWEIS: Es gibt derzeit einen Fehler in Firefox, bei dem internationale Zeichen Probleme verursachen können.</li>
+ <li>Wählen Sie "Durchsuchen..." , um den Speicherort des PKCS-#11-Moduls auf Ihrem lokalen Computer zu finden, und wählen Sie "OK", wenn Sie fertig sind.</li>
+</ol>
+
+<h2 id="Bereitstellen_von_PKCS-11-Modulen_mithilfe_der_pkcs11-API">Bereitstellen von PKCS-#11-Modulen mithilfe der pkcs11-API</h2>
+
+<p><font>Ab Firefox 58 können Erweiterungen die Browsererweiterungs-API verwenden, um PKCS-#11 Module aufzuzählen und sie dem Browser als Schlüssel- und Zertifikatquellen zugänglich zu machen.</font><code><a href="/en-US/Add-ons/WebExtensions/API/pkcs11">pkcs11</a></code></p>
+
+<h2 id="Siehe_auch">Siehe auch</h2>
+
+<ul>
+ <li><a href="/en-US/docs/Web/Security">Websicherheit</a></li>
+ <li><a href="/en-US/docs/Mozilla/Projects/NSS/PKCS11">PKCS11</a></li>
+ <li>The <a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/API/pkcs11">pkcs11</a> <a href="/en-US/docs/User:bram/Add-ons/WebExtensions">WebExtensions</a> API</li>
+ <li><code><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/API/pkcs11/installModule">pkcs11.installModule()</a></code></li>
+ <li><code><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/API/pkcs11/isModuleInstalled">pkcs11.isModuleInstalled()</a></code></li>
+</ul>
diff --git a/files/de/mozilla/projects/thunderbird/thunderbird_lokalisation/index.html b/files/de/mozilla/projects/thunderbird/thunderbird_lokalisation/index.html
new file mode 100644
index 0000000000..5b4c9e60d8
--- /dev/null
+++ b/files/de/mozilla/projects/thunderbird/thunderbird_lokalisation/index.html
@@ -0,0 +1,98 @@
+---
+title: Thunderbird Lokalisation
+slug: Mozilla/Projects/Thunderbird/Thunderbird_Lokalisation
+tags:
+ - Lokalisation
+ - thunderbird
+translation_of: Mozilla/Projects/Thunderbird/Thunderbird_Localization
+---
+<p>Diese Seite richtet sich an aktuelle und zukünftige Lokalisierer Thunderbirds, Mozilla Messagings E-Mail- und Usenet- Client. Sie deckt viele Aspekts ab, die ein Lokalisierer Thunderbirds kennen sollte, wie, notwendige Werkzeuge und wie man Informationen über lokalisationsrelevante Veranstaltungen und verschiedene andere interessante Angelegenheiten bekommt.</p>
+
+<h2 id="Erstellen_einer_Thunderbird-Lokalisation"><span class="mw-headline">Erstellen einer Thunderbird-Lokalisation</span></h2>
+
+<p><a href="/en/Bootstrapping_a_New_Locale" title="En/Creating_a_new_localization_(Mercurial)">Eine neue Lokalisation erstellen (Mercurial)</a> - Dieser Artikel beschreibt, wie du eine neue Lokalisation Thunderbirds erstellen kannst.</p>
+
+<h3 id="Über_Repostorien_und_Entwicklungszweige">Über Repostorien und Entwicklungszweige</h3>
+
+<p>Es gibt 3 aktive Repositorien für die Thunderbird-Entwicklung. Der Entwicklungsfortschritt Thunderbirds wird von einem Zweig zum nächsten alle sechs Wochen zusammengeführt.</p>
+
+<ul>
+ <li>comm-central - auch als Trunk oder "Daily" bekannt.
+ <ul>
+ <li>Hier findet die reguläre Thunderbird-Entwicklung statt. Zeichenketten ändern sich zu jeder Zeit.</li>
+ <li>Es wird nur von wenigen Sprachumgebungen erwartet, dass sie in diesem Zweig übersetzt werden.</li>
+ </ul>
+ </li>
+ <li>comm-aurora - auch bekannt als "Earlybird"
+ <ul>
+ <li>Hier wird die Entwicklung für eine bestimnte Veröffentlichung stabilisiert.</li>
+ <li>Es sind keine neuen Funktionen erlaubt und auch Zeichenketten werden nicht mehr verändert.</li>
+ <li>Sprachprojekte sollten so viel ihrer Arbeit wie möglich auf diesen Zweig konzentrieren und den Abschluss erreichen.</li>
+ <li>Hier erledigte Arbeit wird automatisch mit der Beta- und Release-Version alle 6 Wochen zusammengeführt.</li>
+ </ul>
+ </li>
+ <li>comm-beta - "Beta"-Kanal
+ <ul>
+ <li>Hier ermöglichen wir einer großen Anzahl an Nutzern eine Vorschau der Thunderbird-Entwicklung.</li>
+ <li>Letzte Stabilisierungen werden vorgenommen.</li>
+ <li>Hier wird wenig oder keine L10n-Arbeit vorgenommen.</li>
+ </ul>
+ </li>
+</ul>
+
+<p>Most locales will being working on comm-aurora. This repository/branch is stable with respect to strings for each six week period. Completing work here means it is ready for the first beta, and you won't need to work on beta branch. Your work will also automatically be carried forward.</p>
+
+<h3 id="Lokalisationsanforderungen">Lokalisationsanforderungen</h3>
+
+<p>There are not significant restrictions on what locales can change. However, we need to work together on providing search engines for Thunderbird users to use to get the right balance of search engines and the correct options set. For further information <a href="/en/Thunderbird_Localization/Productization" title="en/Thunderbird_Localization/Productization">see this page</a>.</p>
+
+<h3 id="Lokalisationsübersicht"><span class="mw-headline">Lokalisationsübersicht </span></h3>
+
+<p>Die <a class="external text" href="https://l10n.mozilla.org/teams/" rel="nofollow" title="Lokalisations-Übersicht">Lokalisations-Übersicht</a> für Thunderbird gibt Lokalisierern eine präzise Übersicht über den aktuellen Zustand ihrer Lokalisationen. Weitere Informationen gibt es auf der  <a class="link-https" href="https://wiki.mozilla.org/Thunderbird:Localization:Dashboard" title="https://wiki.mozilla.org/Thunderbird:Localization:Dashboard">L10n Übersichts-Seite</a>.</p>
+
+<p>A localization will added to the l10n dashboard on request when it has reached a high-level of completion (&gt; 80%) as shown by the <a href="/en/Compare-locales" title="En/Compare-locales">compare-locales</a> output. To request the addition of your locale to the dashboard, <a class="external text" href="https://bugzilla.mozilla.org/enter_bug.cgi?product=Thunderbird&amp;component=Build%20Config" rel="nofollow" title="https://bugzilla.mozilla.org/enter_bug.cgi?product=Thunderbird&amp;component=Build%20Config">file a bug</a> in the Thunderbird product/Build Config component.</p>
+
+<h2 id="L10n-relevante_Informationen_erhalten"><span class="mw-headline">L10n-relevante Informationen erhalten </span></h2>
+
+<h3 id="Nachrichtengruppen_E-Mail-Verteiler"><span class="mw-headline">Nachrichtengruppen &amp; E-Mail-Verteiler</span></h3>
+
+<p>Localizers of Thunderbird should read the localization newsgroups (<a class="external" href="http://groups.google.de/group/mozilla.dev.l10n.announce" title="http://groups.google.de/group/mozilla.dev.l10n.announce">mozilla.dev.l10n.announce</a> <a class="external text" href="http://groups.google.de/group/mozilla.dev.l10n" rel="nofollow" title="http://groups.google.de/group/mozilla.dev.l10n">mozilla.dev.l10n</a>) to stay informed of Thunderbird-specific and general l10n-related items of interest to them. They are further encouraged to read the Thunderbird development newsgroup (<a class="external text" href="http://groups.google.de/group/mozilla.dev.apps.thunderbird" rel="nofollow" title="http://groups.google.de/group/mozilla.dev.apps.thunderbird">mozilla.dev.apps.thunderbird</a>) to stay informed of recent Thunderbird-related developments.</p>
+
+<p>These newsgroups can also be accessed via the <a class="link-https" href="https://lists.mozilla.org/listinfo/dev-l10n-announce" title="https://lists.mozilla.org/listinfo/dev-l10n-announce">dev-l10n-announce@lists.mozilla.org</a>, <a class="link-https" href="https://lists.mozilla.org/listinfo/dev-l10n" title="https://lists.mozilla.org/listinfo/dev-l10n">dev-l10n@lists.mozilla.org</a> (localization mailinglist) or <a class="link-https" href="https://lists.mozilla.org/listinfo/dev-apps-thunderbird" title="https://lists.mozilla.org/listinfo/dev-apps-thunderbird">dev-apps-thunderbird@lists.mozilla.org</a> (Thunderbird development mailinglist) mailinglists, which mirror the newsgroups mentioned above. You can subscribe to or unsubscribe from these mailinglists via the web interface at <a class="link-https" href="https://lists.mozilla.org/listinfo" title="https://lists.mozilla.org/listinfo">lists.mozilla.org</a>.</p>
+
+<h3 id="Bugzilla"><span class="mw-headline">Bugzilla </span></h3>
+
+<p>Localizers should watch the <a class="link-mailto" href="mailto:thunderbird@localization.bugs" rel="freelink">thunderbird@localization.bugs</a> mail address (or its alias :tb-l10n) to stay current on bugs that might affect Thunderbird localizers. This can be done by adding this mail address to the "User Watching" section of your <a class="link-https" href="https://bugzilla.mozilla.org/userprefs.cgi?tab=email" title="https://bugzilla.mozilla.org/userprefs.cgi?tab=email">Email preferences in bugzilla</a>.</p>
+
+<h3 id="Ein_paar_hilfreiche_Links"><span class="mw-headline">Ein paar hilfreiche Links </span></h3>
+
+<ul>
+ <li><a class="external text" href="https://bugzilla.mozilla.org/buglist.cgi?product=MailNews+Core&amp;product=Thunderbird&amp;keywords_type=allwords&amp;keywords=l12y&amp;bug_status=UNCONFIRMED,NEW,ASSIGNED,REOPENED" rel="nofollow" title="https://bugzilla.mozilla.org/buglist.cgi?product=MailNews+Core&amp;product=Thunderbird&amp;keywords_type=allwords&amp;keywords=l12y&amp;bug_status=UNCONFIRMED,NEW,ASSIGNED,REOPENED">Open bugs with the l12y (localizability) keyword</a></li>
+ <li><a class="external text" href="https://bugzilla.mozilla.org/buglist.cgi?product=MailNews+Core&amp;product=Thunderbird&amp;bug_status=UNCONFIRMED,NEW,ASSIGNED,REOPENED&amp;emailcc1=1&amp;emailtype1=exact&amp;email1=thunderbird@localization.bugs" rel="nofollow" title="https://bugzilla.mozilla.org/buglist.cgi?product=MailNews+Core&amp;product=Thunderbird&amp;bug_status=UNCONFIRMED,NEW,ASSIGNED,REOPENED&amp;emailcc1=1&amp;emailtype1=exact&amp;email1=thunderbird%40localization.bugs">Open bugs which need localizer attention (thunderbird@localization.bugs has been CC'ed on that bug)</a></li>
+</ul>
+
+<h2 id="Sprachumgebungsschichten"><span class="mw-headline">Sprachumgebungsschichten </span></h2>
+
+<p>Locale tiers reflect locales that we need to have in a good state for release. There are 10 locales in tier 1, which are the most important for Thunderbird, because of their number of Thunderbird users or potential for growth.</p>
+
+<p>These locales are being treated as first-class citizens, as important as en-US, which is to say that any Tier 1 locale that does not meet the requirements may block a final release of Thunderbird.</p>
+
+<h3 id="Schicht_1"><span class="mw-headline">Schicht 1 </span></h3>
+
+<p>The following are P1 (Priorität 1) locales in order of priority:</p>
+
+<pre>* de - Deutsch
+* fr - Französisch
+* ja, ja-JP-mac - Japanisch
+* en-GB - Britisches Englisch
+* es-ES - Spanisch (kontinentaleuropäisch)
+* it - Italienisch
+* pl - Polnisch
+* ru - Russisch
+* nl - Niederländisch
+* pt-BR - Brasilianisches Portugiesisch
+</pre>
+
+<h3 id="Schicht_2"><span class="mw-headline">Schicht 2 </span></h3>
+
+<p>Alle anderen unterstützten Sprachumgebungen befinden sich in der Schicht 2.</p>
diff --git a/files/de/mozilla/qa/index.html b/files/de/mozilla/qa/index.html
new file mode 100644
index 0000000000..b6efbed387
--- /dev/null
+++ b/files/de/mozilla/qa/index.html
@@ -0,0 +1,70 @@
+---
+title: 'QA: Quality assurance at Mozilla'
+slug: Mozilla/QA
+tags:
+ - NeedsTranslation
+ - QA
+ - Testing
+ - TopicStub
+translation_of: Mozilla/QA
+---
+<p>Es gibt viele Dinge, die im Bereich der Qualitätssicherung erledigt werden müssen und dabei muss man nicht zwingend programmieren können. Einige Aufgaben erfordern nicht mal Kenntnisse in HTML oder andren Webtechnologien. Wenn Sie interessiert sind uns beim Testen von Anwendungen oder anderen Aufgaben der Qualitätssicherung zu unterstützen, können Sie zunächst einmal auf den Seiten von <a class="external" href="http://quality.mozilla.org/">quality.mozilla.org</a> vorbei schauen.</p>
+
+
+
+<table class="topicpage-table">
+ <tbody>
+ <tr>
+ <td>
+ <h4 id="Dokumentation"><a href="/Special:Tags?tag=QA&amp;language=de" title="Special:Tags?tag=QA&amp;language=de">Dokumentation</a></h4>
+
+ <dl>
+ <dt><a href="/de/Richtlinien_zum_Schreiben_eines_Bugreports" title="de/Richtlinien_zum_Schreiben_eines_Bugreports">Richtlinien zum Schreiben eines Bugreports</a></dt>
+ <dd><small>Je besser ein Bug gemeldet worden ist, umso besser wird ein Entwickler ihn sofort beseitigen. Wenn Sie diesen Leitfaden befolgen, können Sie helfen, dass ihre Bugs an oberster Stelle der Entwicklerliste stehen, und sie umso schneller beseitigt werden können.</small></dd>
+ <dt style="font-style: normal; font-weight: bold;"><a href="/de/Unbestätigte_Bugs_bestätigen" title="de/Unbestätigte_Bugs_bestätigen">Unbestätigte Bugs bestätigen</a></dt>
+ <dd style="margin-left: 0px; margin-bottom: 0.5em; padding-left: 15px;"><small>Nützliche Fehlermeldungen identifizieren und restliche Meldungen schließen.</small></dd>
+ <dt style="font-style: normal; font-weight: bold;"><a class="external" href="http://www.mozilla.org/quality/help/screening-duplicates.html">Doppelte Fehlermeldungen aussortieren</a></dt>
+ <dd style="margin-left: 0px; margin-bottom: 0.5em; padding-left: 15px;"><small>Helfen Sie uns Fehler schneller zu beseitigen, indem Sie vermeiden doppelte Fehlermeldungen zu senden oder doppelte Einträge auszusortieren.</small></dd>
+ <dt><a href="/de/Reduzierte_Testfälle" title="de/Reduzierte_Testfälle">Reduzierte Testfällen</a></dt>
+ <dd><small>Verbessern Sie ihre Fehlermeldungen in dem Sie fehlerhafte Webseiten auf einfache Testseiten reduzieren, welche Entwicklern schnell helfen den Fehler zu verstehen und außerdem für automatisierte Tests verwendet werden können.</small></dd>
+ <dt><a href="/de/Tests_entwickeln" title="de/Tests_entwickeln">Tests entwickeln</a></dt>
+ <dd><small>Tests sichern, dass zukünftige Veränderungen an Mozilla nichts kaputt machen, was vorher korrekt funktioniert hat.</small></dd>
+ </dl>
+
+ <p><span class="alllinks"><a href="/Special:Tags?tag=QA&amp;language=de" title="Special:Tags?tag=QA&amp;language=de">Alles anzeigen...</a></span></p>
+ </td>
+ <td>
+ <h4 id="Community" name="Community">Community</h4>
+
+ <ul>
+ <li><a class="external" href="http://quality.mozilla.org/">QMO | quality.mozilla.org</a></li>
+ <li>Mozillas Foren zur Qualitätssicherung:</li>
+ </ul>
+
+
+
+ <ul>
+ <li><a class="link-irc" href="irc://irc.mozilla.org/qa">#qa auf irc.mozilla.org</a></li>
+ <li><a class="link-irc" href="irc://irc.mozilla.org/bugs">#bugs auf irc.mozilla.org</a></li>
+ <li><a class="link-irc" href="irc://irc.mozilla.org/smoketest">#smoketest auf irc.mozilla.org</a></li>
+ <li>MozillaZine Foren: <a class="external" href="http://forums.mozillazine.org/viewforum.php?f=23">Firefox Builds</a>, <a class="external" href="http://forums.mozillazine.org/viewforum.php?f=29">Thunderbird Builds</a></li>
+ </ul>
+
+ <h4 id="Tools" name="Tools">Tools</h4>
+
+ <ul>
+ <li><a href="/de/Bugzilla" title="de/Bugzilla">Bugzilla</a> - Fehlerdatenbank für die Mozilla Projekte</li>
+ <li><a class="external" href="http://litmus.mozilla.org/">Litmus</a></li>
+ <li><a href="/de/Qualitätssicherung/Stress_Testing" title="de/Qualitätssicherung/Stress_Testing">Stress Testing</a></li>
+ <li><a href="/Special:Tags?tag=QA:Tools&amp;language=de" title="Special:Tags?tag=QA:Tools&amp;language=de">...weitere Tools</a></li>
+ </ul>
+
+ <h4 id="Verwandte_Themen">Verwandte Themen</h4>
+
+ <dl>
+ <dd><a href="/de/Entwicklerhandbuch" title="de/Mozilla_entwickeln">Mozilla entwickeln</a></dd>
+ </dl>
+ </td>
+ </tr>
+ </tbody>
+</table>
diff --git a/files/de/mozilla/tech/index.html b/files/de/mozilla/tech/index.html
new file mode 100644
index 0000000000..f9682e62e1
--- /dev/null
+++ b/files/de/mozilla/tech/index.html
@@ -0,0 +1,14 @@
+---
+title: Mozilla technologies
+slug: Mozilla/Tech
+tags:
+ - Landing
+ - Mozilla
+ - NeedsTranslation
+ - Reference
+ - TopicStub
+ - XUL
+translation_of: Mozilla/Tech
+---
+<p>Mozilla has several technologies used as components of its projects. These are documented here. (flesh out this text).</p>
+<p>{{LandingPageListSubpages}}</p>
diff --git a/files/de/mozilla/tech/xpcom/guide/empfang_von_benachrichtigungen_zum_startprozess/index.html b/files/de/mozilla/tech/xpcom/guide/empfang_von_benachrichtigungen_zum_startprozess/index.html
new file mode 100644
index 0000000000..a81f28519f
--- /dev/null
+++ b/files/de/mozilla/tech/xpcom/guide/empfang_von_benachrichtigungen_zum_startprozess/index.html
@@ -0,0 +1,56 @@
+---
+title: Empfang von Benachrichtigungen zum Startprozeß
+slug: Mozilla/Tech/XPCOM/Guide/empfang_von_benachrichtigungen_zum_startprozess
+translation_of: Mozilla/Tech/XPCOM/Guide/Receiving_startup_notifications
+---
+<p>Manchmal brauchen XPCOM Komponenten Benachrichtigungen über den Fortschritt beim Hochfahren der Anwendung, zum Beispiel um neue Dienste zur passenden Zeit starten können</p>
+<h2 id="Empfang_von_Benachrichtigungen_zum_Startprozeß_ab_Gecko_2.0_(Firefox_4)">Empfang von Benachrichtigungen zum Startprozeß ab Gecko 2.0 (Firefox 4)</h2>
+<p>Der XPCOM Startprozeß wurde verändert um die zum Hochfahren benötigte Zeit zu verbessern. Siehe <a href="#der_startprozess">Der Startprozeß</a> für Details über die Funktionsweise, wenn dich die Einzelheiten interessieren.</p>
+<p>Die entscheidende Änderung ist, daß man jetzt entsprechende Zeilen zum <a href="/en/Chrome_registration" title="en/Chrome registration"><code>chrome.manifest</code></a> hinzufügt damit die Anwendung sich darum kümmert, anstelle die Registrierung programmatisch mit dem Category Manager durchzuführen wie früher. Zum Beispiel:</p>
+<pre>category profile-after-change MyComponent @foobar/mycomponent;1</pre>
+<div class="warning">
+ <strong>Wichtig:</strong> Bisher begann die Contract ID des Kategorie-EIntrags mit "service," wenn die Komponente als Dienst (Service) implementiert war. Das ist nicht länger der Fall, dieses muß bei der Codemigration entfernt werden..</div>
+<p>Hinzu kommt, daß die früheste Benachrichtigung beim Startprozeß, die man erhalten kann, jetzt  <code>profile-after-change</code> ist. Dein Add-On wird keine <code><code>xpcom-startup</code></code> oder <code>app-startup</code> Benachrichtigungen mehr erhalten.</p>
+<h3 id="Der_Startprozeß"><a name="der_startprozess">Der Startprozeß</a></h3>
+<p>Während des Startprozesses wird aus dem Manifest der Anwendung die Liste der Komponenten ausgelesen, die registriert werden müssen, und diese Komponenten werden dann gestartet. Damit sind dann XPCOM und die Anwendung soweit hochgefahren, daß der Erweiterungs-Manager geladen werden kann, um sich um Installation, Deinstallation und Aktualisierung von Erweiterungen zu kümmern.</p>
+<p>Sobald dieser Prozess abgeschlossen ist, können Erweiterungen einfach dadurch geladen werden, daß ihr Manifest gelesen, ihre Komponenten geladen und der Anwendungsstart fortgesetzt wird, ohne den Browser neu starten zu müssen.</p>
+<h2 id="Empfang_von_Benachrichtigungen_zum_Startprozeß_vor_Gecko_2.0_(Firefox_4)">Empfang von Benachrichtigungen zum Startprozeß vor Gecko 2.0 (Firefox 4)</h2>
+<p>Um Benachrichtigungen zum Startprozeß zu empfangen muß man {{ interface("nsICategoryManager") }} benutzen um sich für die "app-startup" Kategorie zu registrieren. Damit wird die Komponente dann unter anderem folgende Benachrichtigungen zum Anwendungsstart erhalten:</p>
+<dl>
+ <dt>
+ <code>xpcom-startup</code></dt>
+ <dd>
+ Wird gesendet, wenn XPCOM fertig mit dem Hochfahren ist. Die meisten Anwendungsdienste sind dann noch nicht verfügbar, aber XPCOM selbst steht bereit.</dd>
+ <dt>
+ <code>app-startup</code></dt>
+ <dd>
+ Wird gesendet, wenn die Anwendung mit dem Startprozess fertig ist.</dd>
+ <dt>
+ <code>final-ui-startup</code></dt>
+ <dd>
+ Wird gesendet eben bevor das erste Anwendungsfenster dargestellt wird.</dd>
+</dl>
+<h3 id="Registrierung_am_Kategorien-Manager">Registrierung am Kategorien-Manager</h3>
+<p>Um sich beim Kategorien-Manager anzumelden, muß man nur dessen Methode {{ ifmethod("nsICategoryManager", "AddCategoryEntry") }} aufrufen:</p>
+<pre>categoryManager-&gt;AddCategoryEntry(APPSTARTUP_CATEGORY,
+ "mycomponentname",
+ "contract-id",
+ PR_TRUE, PR_TRUE,
+ getter_Copies(previous));
+</pre>
+<p>Das bewirkt, daß die Komponente mit {{ ifmethod("nsIComponentManager","createInstance") }} instanziiert wird.</p>
+<p>Wenn die Komponente als Dienst (Service) laufen soll, laß die Contract ID mit "service," beginnen:</p>
+<pre>categoryManager-&gt;AddCategoryEntry(APPSTARTUP_CATEGORY,
+ "mycomponentname",
+ "service,contract-id",
+ PR_TRUE, PR_TRUE,
+ getter_Copies(previous));</pre>
+<p>Wenn "service," angegeben ist, wird die Komponente mit {{ ifmethod("nsIComponentManager","getService") }} instanziiert.</p>
+<p>In beiden Fällen braucht man keine weitere Registrierung für die Benachrichtigungen zum Startprozeß, die Registrierung am Kategorien-Manager reicht dazu aus.</p>
+<h3 id="Wie_es_weitergeht">Wie es weitergeht</h3>
+<p>Nachdem die Registrierung am Kategorien-Manager erfolgt ist, wird zum Zeitpunkt des Starts von Mozilla (oder wenn bei einer eingebetteten Anwendung die Funktion <code>NS_InitEmbedding()</code> aufgerufen wurde) die AppStartupNotifier Komponente instanziiert und ihre <code>Observe()</code> Methode aufgerufen; Diese wiederum läuft über alle Komponenten in der <code>app-startup</code> Kategorie und sendet ihnen die passenden Benachrichtigungen.</p>
+<h2 id="Siehe_auch">Siehe auch</h2>
+<ul>
+ <li>{{ interface("nsICategoryManager") }}</li>
+ <li><a href="/en/Observer_Notifications" title="en/Observer Notifications">Observer Notifications</a></li>
+</ul>
diff --git a/files/de/mozilla/tech/xpcom/guide/index.html b/files/de/mozilla/tech/xpcom/guide/index.html
new file mode 100644
index 0000000000..781a596b2e
--- /dev/null
+++ b/files/de/mozilla/tech/xpcom/guide/index.html
@@ -0,0 +1,13 @@
+---
+title: XPCOM guide
+slug: Mozilla/Tech/XPCOM/Guide
+tags:
+ - Landing
+ - Mozilla
+ - NeedsTranslation
+ - TopicStub
+ - XPCOM
+translation_of: Mozilla/Tech/XPCOM/Guide
+---
+<p><span class="seoSummary">These articles provide tutorials and usage documentation for XPCOM, including how to use it in your own projects and how to build XPCOM components for your Firefox add-ons and the like.</span></p>
+<p>{{LandingPageListSubpages}}</p>
diff --git a/files/de/mozilla/tech/xpcom/reference/index.html b/files/de/mozilla/tech/xpcom/reference/index.html
new file mode 100644
index 0000000000..29d07953d6
--- /dev/null
+++ b/files/de/mozilla/tech/xpcom/reference/index.html
@@ -0,0 +1,27 @@
+---
+title: XPCOM reference
+slug: Mozilla/Tech/XPCOM/Reference
+tags:
+ - Add-ons
+ - Extensions
+ - Landing
+ - Mozilla
+ - NeedsTranslation
+ - Reference
+ - TopicStub
+ - XPCOM
+translation_of: Mozilla/Tech/XPCOM/Reference
+---
+<p>This reference describes the interfaces and functions provided by the <a href="/en-US/docs/Mozilla/Tech/XPCOM">XPCOM</a> library. In addition, it details the various helper classes and functions, as well as the components, provided by the <a href="/en-US/docs/Mozilla/Tech/XPCOM/Glue">XPCOM glue</a> library. The contents herein are oriented primarily toward extension developers and people embedding XPCOM in other projects.</p>
+
+<div class="warning">
+<p><strong>WebExtensions are becoming the new standard for creating add-ons. </strong>Eventually support for XPCOM add-ons will be deprecated, so you should begin to investigate porting your add-ons to use the <a href="/en-US/docs/Mozilla/Add-ons/WebExtensions">WebExtensions</a> API, and <a href="https://mzl.la/webext-feature-needed">report any missing functionality</a> so we can be sure to address your concerns. Work is ongoing on WebExtension capabilities, so your input will help prioritize and plan the work. To learn more about the kinds of changes that will be needed, see <a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/Comparison_with_XUL_XPCOM_extensions">Comparison with XUL/XPCOM extensions</a>. In addition, any binaries you use will then need to be converted for use with the WebExtensions <a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/Native_messaging">native messaging</a> API, or compiled using <a href="https://webassembly.github.io/">WebAssembly</a> or <a href="/en-US/docs/Mozilla/Projects/Emscripten">Emscripten</a>.</p>
+</div>
+
+<div class="note">
+<p>If you're working on a module in the Mozilla codebase that's compiled with the <code>MOZILLA_INTERNAL_API</code> flag set, some of these APIs -- the string functions and classes in particular -- are not the ones you should be using. See the <a href="/en-US/docs/Mozilla/Tech/XPCOM/Guide/Internal_strings">XPCOM internal string guide</a> for documentation of the internal string API used within the Mozilla codebase.</p>
+</div>
+
+<p>{{LandingPageListSubpages}}</p>
+
+<p>Many XPCOM pages return an <code><a href="/en-US/docs/Mozilla/Tech/XPCOM/Reference/Core_functions/nsresult">nsresult</a></code>. Prior to Gecko 19 {{geckoRelease(19)}}, this was an integer that simply returned an error code. It is now a strongly typed <code>enum</code> when XPCOM is built using a C++11 compiler. This causes compile-time errors to occur when improper values are returned as nsresult values, thereby making it easier to catch many bugs.</p>
diff --git a/files/de/mozilla/tech/xpcom/reference/interface/index.html b/files/de/mozilla/tech/xpcom/reference/interface/index.html
new file mode 100644
index 0000000000..d098cf8402
--- /dev/null
+++ b/files/de/mozilla/tech/xpcom/reference/interface/index.html
@@ -0,0 +1,19 @@
+---
+title: XPCOM Interface Reference
+slug: Mozilla/Tech/XPCOM/Reference/Interface
+tags:
+ - NeedsTranslation
+ - TopicStub
+ - XPCOM
+ - XPCOM Interface Reference
+translation_of: Mozilla/Tech/XPCOM/Reference/Interface
+---
+<p><span class="seoSummary">This is a reference to the XPCOM interfaces provided by the Mozilla platform.</span></p>
+
+<div class="cols-3">{{tree('','1')}}</div>
+
+<h2 id="See_also" name="See_also">See also</h2>
+
+<ul>
+ <li><a href="/en-US/docs/XPCOM_Interface_Reference_group" title="XPCOM_Interface_Reference_group">Interfaces grouped by function</a></li>
+</ul>
diff --git a/files/de/mozilla/tech/xpcom/reference/interface/nsiloginmanager/index.html b/files/de/mozilla/tech/xpcom/reference/interface/nsiloginmanager/index.html
new file mode 100644
index 0000000000..2c354b2b2b
--- /dev/null
+++ b/files/de/mozilla/tech/xpcom/reference/interface/nsiloginmanager/index.html
@@ -0,0 +1,420 @@
+---
+title: nsILoginManager
+slug: Mozilla/Tech/XPCOM/Reference/Interface/nsILoginManager
+tags:
+ - Firefox 3
+ - Interfaces
+ - 'Interfaces:Scriptable'
+ - Login Manager
+ - NeedsTranslation
+ - Thunderbird 3
+ - TopicStub
+ - XPCOM
+ - XPCOM API Reference
+ - thunderbird
+translation_of: Mozilla/Tech/XPCOM/Reference/Interface/nsILoginManager
+---
+<p></p><div style="border: solid #ddd 2px; margin-bottom: 12px;">
+<div style="background: #eee; padding: 2px;"><code><a href="https://dxr.mozilla.org/mozilla-central/source/toolkit/components/passwordmgr/public/nsILoginManager.idl" rel="custom">toolkit/components/passwordmgr/public/nsILoginManager.idl</a></code><span style="text-align: right; float: right;"><a href="/en-US/docs/Interfaces/About_Scriptable_Interfaces" style="color: #00cc00; font-weight: 700;">Scriptable</a></span></div>
+<span style="padding: 4px 2px;">
+
+Used to interface with the built-in Password Manager
+</span>
+
+ <div style="height: 42px; position: relative; padding: 2px; width: auto;">
+
+ <div style="top: 22px; font-size: 11px; position: absolute;">1.0</div>
+
+ <div style="top: 22px; font-size: 11px; position: absolute; left: 0px; text-align: right; float: right; width: 100%;">66</div>
+
+ <div style="height: 8px; top: 16px; background: #dd0000; left: 0px; position: absolute; width: 8.571428571428571%;"></div>
+
+<div style="height: 8px; top: 16px; left: 8.571428571428571%; background: #00dd00; position: absolute; width: 91.42857142857143%;" title="Introduced in Gecko 1.9 (Firefox 3)"></div>
+
+<div style="top: 0px; font-size: 11px; position: absolute; left: 8.571428571428571%;">Introduced</div>
+<div style="top: 22px; font-size: 11px; position: absolute; left: 8.571428571428571%;">Gecko 1.9</div>
+
+ <div style="height: 8px; top: 16px; left: 9.976190285714287%; background: #eeee00; position: absolute; width: 1%; border-radius: 4px; -webkit-border-radius: 4px;" title="Last changed in Gecko 1.9.2 (Firefox 3.6 / Thunderbird 3.1 / Fennec 1.0)"></div>
+
+</div>
+
+<div style="background: #eee; padding: 2px;">
+Inherits from: <code><a href="/de/docs/XPCOM_Interface_Referenz/nsISupports" title="">nsISupports</a></code>
+<span style="text-align: right; float: right;">Last changed in Gecko 1.9.2 (Firefox 3.6 / Thunderbird 3.1 / Fennec 1.0)</span></div>
+</div><p></p>
+
+<p>Replaces <code><a href="/de/docs/XPCOM_Interface_Referenz/nsIPasswordManager" title="">nsIPasswordManager</a></code> which was used in older versions of Gecko.</p>
+
+<p>Implemented by: <code>@mozilla.org/login-manager;1</code>. To create an instance, use:</p>
+
+<pre class="eval">var loginManager = Components.classes["@mozilla.org/login-manager;1"]
+ .getService(Components.interfaces.nsILoginManager);
+</pre>
+
+<h2 id="Method_overview" name="Method_overview">Method overview</h2>
+
+<table class="standard-table">
+ <tbody>
+ <tr>
+ <td><code>void <a href="#addLogin()">addLogin</a>(in nsILoginInfo aLogin);</code></td>
+ </tr>
+ <tr>
+ <td><code>nsIAutoCompleteResult <a href="#autoCompleteSearch()">autoCompleteSearch</a>(in AString aSearchString, in nsIAutoCompleteResult aPreviousResult, in nsIDOMHTMLInputElement aElement);</code></td>
+ </tr>
+ <tr>
+ <td><code>unsigned long <a href="#countLogins()">countLogins</a>(in AString aHostname, in AString aActionURL, in AString aHttpRealm);</code></td>
+ </tr>
+ <tr>
+ <td><code>boolean <a href="#fillForm()">fillForm</a>(in nsIDOMHTMLFormElement aForm);</code> </td>
+ </tr>
+ <tr>
+ <td><code>void <a href="#findLogins()">findLogins</a>(out unsigned long count, in AString aHostname, in AString aActionURL, in AString aHttpRealm, [retval, array, size_is(count)] out nsILoginInfo logins);</code></td>
+ </tr>
+ <tr>
+ <td><code>void <a href="#getAllDisabledHosts()">getAllDisabledHosts</a>([optional] out unsigned long count, [retval, array, size_is(count)] out wstring hostnames);</code></td>
+ </tr>
+ <tr>
+ <td><code>void <a href="#getAllLogins()">getAllLogins</a>([optional] out unsigned long count, [retval, array, size_is(count)] out nsILoginInfo logins);</code></td>
+ </tr>
+ <tr>
+ <td><code>boolean <a href="#getLoginSavingEnabled()">getLoginSavingEnabled</a>(in AString aHost);</code></td>
+ </tr>
+ <tr>
+ <td><code>void <a href="#modifyLogin()">modifyLogin</a>(in nsILoginInfo oldLogin, in nsISupports newLoginData);</code></td>
+ </tr>
+ <tr>
+ <td><code>void <a href="#removeAllLogins()">removeAllLogins</a>();</code></td>
+ </tr>
+ <tr>
+ <td><code>void <a href="#removeLogin()">removeLogin</a>(in nsILoginInfo aLogin);</code></td>
+ </tr>
+ <tr>
+ <td><code>void <a href="#searchLogins()">searchLogins</a>(out unsigned long count, in nsIPropertyBag matchData, [retval, array, size_is(count)] out nsILoginInfo logins);</code> </td>
+ </tr>
+ <tr>
+ <td><code>void <a href="#setLoginSavingEnabled()">setLoginSavingEnabled</a>(in AString aHost, in boolean isEnabled);</code></td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="Methods" name="Methods">Methods</h2>
+
+<h3 id="addLogin()" name="addLogin()">addLogin()</h3>
+
+<p>Stores a new login in the Login Manager.</p>
+
+<p></p><div class="blockIndicator note"><strong>Hinweis:</strong> Default values for the <code><a href="/de/docs/XPCOM_Interface_Referenz/nsILoginMetaInfo" title="">nsILoginMetaInfo</a></code> properties are created if the specified login doesn't explicitly specify them.</div><p></p>
+
+<pre class="eval">void addLogin(
+ in nsILoginInfo aLogin
+);
+</pre>
+
+<h6 id="Parameters" name="Parameters">Parameters</h6>
+
+<dl>
+ <dt><code>aLogin</code></dt>
+ <dd>The login to store.</dd>
+</dl>
+
+<h6 id="Exceptions_thrown" name="Exceptions_thrown">Exceptions thrown</h6>
+
+<dl>
+ <dt> </dt>
+ <dd>An exception is thrown if the login information is already stored in the Login Manager. To change a login, you have to use <code><a href="https://developer.mozilla.org/de/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsILoginManager#modifyLogin()">modifyLogin()</a></code>.</dd>
+</dl>
+
+<h3 id="autoCompleteSearch()" name="autoCompleteSearch()">autoCompleteSearch()</h3>
+
+<p>Generates results for a user field autocomplete menu.</p>
+
+<p></p><div class="blockIndicator note"><strong>Hinweis:</strong> This method is provided for use only by the <code>FormFillController</code>, which calls it directly. It should not be used for any other purpose.</div><p></p>
+
+<pre class="eval">nsIAutoCompleteResult autoCompleteSearch(
+ in AString aSearchString,
+ in nsIAutoCompleteResult aPreviousResult,
+ in nsIDOMHTMLInputElement aElement
+);
+</pre>
+
+<h6 id="Parameters" name="Parameters">Parameters</h6>
+
+<dl>
+ <dt><code>aSearchString</code></dt>
+ <dd>Missing Description</dd>
+ <dt><code>aPreviousResult</code></dt>
+ <dd>Missing Description</dd>
+ <dt><code>aElement</code></dt>
+ <dd>Missing Description</dd>
+</dl>
+
+<h6 id="Return_value" name="Return_value">Return value</h6>
+
+<p>Missing Description</p>
+
+<h3 id="countLogins()" name="countLogins()">countLogins()</h3>
+
+<p>Returns the number of logins matching the specified criteria. Called when only the number of logins is needed, and not the actual logins (which avoids prompting the user for a Master Password, as the logins don't need to be decrypted).</p>
+
+<pre class="eval">unsigned long countLogins(
+ in AString aHostname,
+ in AString aActionURL,
+ in AString aHttpRealm
+);
+</pre>
+
+<h6 id="Parameters" name="Parameters">Parameters</h6>
+
+<dl>
+ <dt><code>aHostname</code></dt>
+ <dd>The hostname to which to restrict searches, formatted as a URL. For example, "<a class="external" href="http://www.bar.com" rel="freelink">http://www.bar.com</a>". To match all hostnames, specify <code>""</code> (empty string). A value of <code>null</code> will cause countLogins() to not match any logins.</dd>
+ <dt><code>aActionURL</code></dt>
+ <dd>For form logins, this parameter should specify the URL to which the form will be submitted. To match any form login, specify <code>""</code> (empty string). To not match any form logins (For example when interested in protocol logins only), specify <code>null</code>.</dd>
+ <dt><code>aHttpRealm</code></dt>
+ <dd>For protocol logins, specify the HTTP Realm for which the login applies; this is obtained from the WWW-Authenticate header (see <a class="external" href="http://tools.ietf.org/html/rfc2617" title="http://tools.ietf.org/html/rfc2617">RFC 2617</a>). To match any protocol login, specify <code>""</code> (empty string). To not match any protocol logins (For example when interested in form logins only), specify <code>null</code>.</dd>
+</dl>
+
+<h6 id="Return_value" name="Return_value">Return value</h6>
+
+<p>The number of logins matching the parameters passed.</p>
+
+<p></p><h3 id="fillForm()">fillForm()</h3><p></p>
+
+<p>Fills out a form with login information, if appropriate information is available.</p>
+
+<p></p><div class="blockIndicator note"><strong>Hinweis:</strong> This method will attempt to fill out the form regardless of the setting of the <code>signon.autofillForms</code> preference.</div><p></p>
+
+<pre class="eval">boolean fillForm(
+ in nsIDOMHTMLFormElement aForm
+);
+</pre>
+
+<h6 id="Parameters" name="Parameters">Parameters</h6>
+
+<dl>
+ <dt><code>aForm</code></dt>
+ <dd>The HTMLform to attempt to fill out.</dd>
+</dl>
+
+<h6 id="Return_value" name="Return_value">Return value</h6>
+
+<p><code>true</code> if the form was successfully filled out; otherwise <code>false</code>.</p>
+
+<h3 id="findLogins()" name="findLogins()">findLogins()</h3>
+
+<p>Searches for logins matching the specified criteria. Called when looking for logins that might be applicable to a given form or authentication request.</p>
+
+<pre class="eval">void findLogins(
+ out unsigned long count,
+ in AString aHostname,
+ in AString aActionURL,
+ in AString aHttpRealm,
+ [retval, array, size_is(count)] out nsILoginInfo logins
+);
+</pre>
+
+<h6 id="Parameters" name="Parameters">Parameters</h6>
+
+<dl>
+ <dt><code>count</code></dt>
+ <dd>The number of elements in the returned array. JavaScript callers can simply use the array's <code>length</code> property and supply a dummy argument for this parameter.</dd>
+ <dt><code>aHostname</code></dt>
+ <dd>The hostname to restrict searches to, formatted as a URL. For example, "<a class="external" href="http://www.bar.com" rel="freelink">http://www.bar.com</a>".</dd>
+ <dt><code>aActionURL</code></dt>
+ <dd>For form logins, this parameter should specify the URL to which the form will be submitted. For protocol logins, specify <code>null</code>. An empty string ("") will match any value (except <code>null</code>).</dd>
+ <dt><code>aHttpRealm</code></dt>
+ <dd>For protocol logins, specify the HTTP Realm for which the login applies; this is obtained from the WWW-Authenticate header (see <a class="external" href="http://tools.ietf.org/html/rfc2617" title="http://tools.ietf.org/html/rfc2617">RFC 2617</a>). For form logins, this parameter should be <code>null</code>. An empty string ("") will match any value (except <code>null</code>).</dd>
+ <dt><code>logins</code></dt>
+ <dd>An array of <code><a href="/de/docs/XPCOM_Interface_Referenz/nsILoginInfo" title="">nsILoginInfo</a></code> objects.</dd>
+</dl>
+
+<h6 id="Example" name="Example">Example</h6>
+
+<p>This method can be called from JavaScript like this:</p>
+
+<pre class="brush: js"> var logins = myLoginMgr.findLogins({}, 'https://bugzilla.mozilla.org', '', '', {});
+</pre>
+
+<h3 id="getAllDisabledHosts()" name="getAllDisabledHosts()">getAllDisabledHosts()</h3>
+
+<p>Returns a list of all hosts for which login saving is disabled.</p>
+
+<pre class="eval">void getAllDisabledHosts(
+ [optional] out unsigned long count,
+ [retval, array, size_is(count)] out wstring hostnames
+);
+</pre>
+
+<h6 id="Parameters" name="Parameters">Parameters</h6>
+
+<dl>
+ <dt><code>count</code></dt>
+ <dd>The number of elements in the returned array. JavaScript callers can simply use the array's <code>length</code> property and supply a dummy argument for this parameter.</dd>
+ <dt><code>hostnames</code></dt>
+ <dd>An array of hostname strings in URL format without a pathname. For example: <span class="nowiki">"https://www.site.com"</span>.</dd>
+</dl>
+
+<h6 id="Example" name="Example">Example</h6>
+
+<p>You can call this method from JavaScript like this:</p>
+
+<pre class="brush: js"> var disabledHosts = myLoginMgr.getAllDisabledHosts({});
+</pre>
+
+<h3 id="getAllLogins()" name="getAllLogins()">getAllLogins()</h3>
+
+<p>Returns an array containing all logins recorded by the Login Manager.</p>
+
+<p>If you just want to see if any logins are stored, use <code><a href="https://developer.mozilla.org/de/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsILoginManager#countLogins()">countLogins()</a></code> instead. It's more efficient, and avoids the possibility of the user being prompted for their master password.</p>
+
+<pre class="eval">void getAllLogins(
+ [optional] out unsigned long count,
+ [retval, array, size_is(count)] out nsILoginInfo logins
+);
+</pre>
+
+<h6 id="Parameters" name="Parameters">Parameters</h6>
+
+<dl>
+ <dt><code>count</code></dt>
+ <dd>The number of elements in the returned array. JavaScript callers can simply use the array's <code>length</code> property and supply a dummy argument for this parameter.</dd>
+ <dt><code>logins</code></dt>
+ <dd>An array of <code><a href="/de/docs/XPCOM_Interface_Referenz/nsILoginInfo" title="">nsILoginInfo</a></code> objects containing all the logins the Login Manager has on record.</dd>
+</dl>
+
+<h6 id="Example" name="Example">Example</h6>
+
+<p>You can call this method from JavaScript like this:</p>
+
+<pre class="brush: js"> var logins = myLoginMgr.getAllLogins({});
+</pre>
+
+<h3 id="getLoginSavingEnabled()" name="getLoginSavingEnabled()">getLoginSavingEnabled()</h3>
+
+<p>Reports whether or not saving login information is enabled for a host.</p>
+
+<pre class="eval">boolean getLoginSavingEnabled(
+ in AString aHost
+);
+</pre>
+
+<h6 id="Parameters" name="Parameters">Parameters</h6>
+
+<dl>
+ <dt><code>aHost</code></dt>
+ <dd>The hostname to check. This argument should be in the origin URL format, with no pathname. For example: <span class="nowiki">"https://www.site.com"</span>.</dd>
+</dl>
+
+<h6 id="Return_value" name="Return_value">Return value</h6>
+
+<p><code>true</code> if login saving is enabled for the host, otherwise <code>false</code>.</p>
+
+<h3 id="modifyLogin()" name="modifyLogin()">modifyLogin()</h3>
+
+<p>Modifies an existing login by replacing it with a new one.</p>
+
+<p>If newLoginData is a <code><a href="/de/docs/XPCOM_Interface_Referenz/nsILoginInfo" title="">nsILoginInfo</a></code>, all of the old login's <code><a href="/de/docs/XPCOM_Interface_Referenz/nsILoginInfo" title="">nsILoginInfo</a></code> properties are changed to the values from newLoginData (but the old login's <code><a href="/de/docs/XPCOM_Interface_Referenz/nsILoginMetaInfo" title="">nsILoginMetaInfo</a></code> properties are unmodified).</p>
+
+<p>If newLoginData is a <code><a href="/de/docs/XPCOM_Interface_Referenz/nsIPropertyBag" title="">nsIPropertyBag</a></code>, only the specified properties will be changed. The <code><a href="/de/docs/XPCOM_Interface_Referenz/nsILoginMetaInfo" title="">nsILoginMetaInfo</a></code> properties of oldLogin can be changed in this manner.</p>
+
+<p>If the propertybag contains an item named "timesUsedIncrement", the login's timesUsed property will be incremented by the item's value.</p>
+
+<pre class="eval">void modifyLogin(
+ in nsILoginInfo oldLogin,
+ in nsISupports newLoginData
+);
+</pre>
+
+<h6 id="Parameters" name="Parameters">Parameters</h6>
+
+<dl>
+ <dt><code>oldLogin</code></dt>
+ <dd>The login to be modified.</dd>
+ <dt><code>newLoginData</code></dt>
+ <dd>The login information to replace the <code>oldLogin</code> with. This may be specified as either an <code><a href="/de/docs/XPCOM_Interface_Referenz/nsILoginInfo" title="">nsILoginInfo</a></code> or an <code><a href="/de/docs/XPCOM_Interface_Referenz/nsIPropertyBag2" title="">nsIPropertyBag2</a></code> object.</dd>
+</dl>
+
+<h3 id="removeAllLogins()" name="removeAllLogins()">removeAllLogins()</h3>
+
+<p>Removes all logins known by the Login Manager. This works without a need for the master password, if one is set.</p>
+
+<pre class="eval">void removeAllLogins();
+</pre>
+
+<h6 id="Parameters" name="Parameters">Parameters</h6>
+
+<p>None.</p>
+
+<h3 id="removeLogin()" name="removeLogin()">removeLogin()</h3>
+
+<p>Removes a login from the Login Manager.</p>
+
+<p></p><div class="blockIndicator note"><strong>Hinweis:</strong> The specified login must exactly match a stored login. However, the values of any <code><a href="/de/docs/XPCOM_Interface_Referenz/nsILoginMetaInfo" title="">nsILoginMetaInfo</a></code> properties are ignored.</div><p></p>
+
+<pre class="eval">void removeLogin(
+ in nsILoginInfo aLogin
+);
+</pre>
+
+<h6 id="Parameters" name="Parameters">Parameters</h6>
+
+<dl>
+ <dt><code>aLogin</code></dt>
+ <dd>The login to remove from the Login Manager. Only a login that is an exact match is deleted.</dd>
+</dl>
+
+<p></p><h3 id="searchLogins()">searchLogins()</h3><p></p>
+
+<p>Searches for logins in the login manager's data store, returning an array of matching logins. If there are no matching logins, an empty array is returned.</p>
+
+<pre class="eval">void searchLogins(
+ out unsigned long count,
+ in nsIPropertyBag matchData,
+ [retval, array, size_is(count)] out nsILoginInfo logins
+);
+</pre>
+
+<h6 id="Parameters" name="Parameters">Parameters</h6>
+
+<dl>
+ <dt><code>count</code></dt>
+ <dd>The number of elements in the returned array.</dd>
+ <dt><code>matchData</code></dt>
+ <dd>The data used for the search. This does not follow the same requirements as <code><a href="https://developer.mozilla.org/de/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsILoginManager#findLogins()">findLogins()</a></code> for those fields; wildcard matches are not specified.</dd>
+ <dt><code>logins</code></dt>
+ <dd>An array of matching <code><a href="/de/docs/XPCOM_Interface_Referenz/nsILoginInfo" title="">nsILoginInfo</a></code> objects.</dd>
+</dl>
+
+<h6 id="Example" name="Example">Example</h6>
+
+<p>This method can be called from JavaScript like this:</p>
+
+<pre class="brush: js"> var logins = myLoginMgr.searchLogins({}, matchData);
+ var numLogins = logins.length;
+</pre>
+
+<h3 id="setLoginSavingEnabled()" name="setLoginSavingEnabled()">setLoginSavingEnabled()</h3>
+
+<p>Enables or disables storing logins for a specified host. When login storing is disabled, the Login Manager won't prompt the user to store logins for that host. Existing logins are not affected.</p>
+
+<pre class="eval">void setLoginSavingEnabled(
+ in AString aHost,
+ in boolean isEnabled
+);
+</pre>
+
+<h6 id="Parameters" name="Parameters">Parameters</h6>
+
+<dl>
+ <dt><code>aHost</code></dt>
+ <dd>The hostname to adjust the setting for. This argument should be in the origin URL format, with no pathname. For example: <span class="nowiki">"https://www.site.com"</span>.</dd>
+ <dt><code>isEnabled</code></dt>
+ <dd>If <code>true</code>, login saving is enabled for the specified host. If <code>false</code>, login saving is disabled.</dd>
+</dl>
+
+<h2 id="See_also" name="See_also">See also</h2>
+
+<ul>
+ <li><code><a href="/de/docs/XPCOM_Interface_Referenz/nsILoginInfo" title="">nsILoginInfo</a></code></li>
+ <li><a href="/en/XPCOM_Interface_Reference/nsILoginManager/Using_nsILoginManager" title="en/Using_nsILoginManager">Using nsILoginManager</a></li>
+</ul>
diff --git a/files/de/mozilla/tech/xpcom/reference/interface/nsiloginmanager/using_nsiloginmanager/index.html b/files/de/mozilla/tech/xpcom/reference/interface/nsiloginmanager/using_nsiloginmanager/index.html
new file mode 100644
index 0000000000..2cc68a291f
--- /dev/null
+++ b/files/de/mozilla/tech/xpcom/reference/interface/nsiloginmanager/using_nsiloginmanager/index.html
@@ -0,0 +1,212 @@
+---
+title: Using nsILoginManager
+slug: Mozilla/Tech/XPCOM/Reference/Interface/nsILoginManager/Using_nsILoginManager
+translation_of: Mozilla/Tech/XPCOM/Reference/Interface/nsILoginManager/Using_nsILoginManager
+---
+<div>{{ Gecko_minversion_header("1.9") }}</div>
+
+<h2 id="Working_with_the_Login_Manager" name="Working_with_the_Login_Manager">Den Login-Manager verwenden</h2>
+
+<p>Extensions speichern oftmals - auch wenn es eigentlich gar nicht wirklich nötig wäre - Paßwörter zu Webseiten, web-apps und so weiter. To do so securely, they can use <code><a href="/en-US/docs/XPCOM_Interface_Reference/nsILoginManager" title="en-US/docs/nsILoginManager">nsILoginManager</a></code>, which provides for secure storage of sensitive password information and <code><a href="/en-US/docs/XPCOM_Interface_Reference/nsILoginInfo" title="en-US/docs/nsILoginInfo">nsILoginInfo</a></code>, which provides a way of storing login information.</p>
+
+<h2 id="Getting_nsILoginManager" name="Getting_nsILoginManager">Getting <code>nsILoginManager</code></h2>
+
+<p>To get a component implementing <code>nsILoginManager</code>, use the following:</p>
+
+<div style="margin-right: 270px;">
+<pre class="brush: js">var passwordManager = Components.classes["@mozilla.org/login-manager;1"].getService(
+ Components.interfaces.nsILoginManager
+);</pre>
+</div>
+
+<p>Most Login Manager functions take an <code><a href="/en-US/docs/XPCOM_Interface_Reference/nsILoginInfo" title="en-US/docs/nsILoginInfo">nsILoginInfo</a></code> object as a parameter. An <code><a href="/en-US/docs/XPCOM_Interface_Reference/nsILoginInfo" title="en-US/docs/nsILoginInfo">nsILoginInfo</a></code> object contains the following attributes: hostname, form submit URL, HTTP realm, username, username field, password, and password field. The hostname, username and password attributes are mandatory, while the other fields are set based on whether the login is for a web page form or an HTTP/FTP authentication site login. See the <code><a href="/en-US/docs/XPCOM_Interface_Reference/nsILoginInfo" title="en-US/docs/nsILoginInfo">nsILoginInfo</a></code> attribute definitions for more details. Defining an <code><a href="/en-US/docs/XPCOM_Interface_Reference/nsILoginInfo" title="en-US/docs/nsILoginInfo">nsILoginInfo</a></code> object is simple:</p>
+
+<div style="margin-right: 270px;">
+<pre class="brush: js">var nsLoginInfo = new Components.Constructor(
+ "@mozilla.org/login-manager/loginInfo;1",
+ Components.interfaces.nsILoginInfo,
+ "init"
+);
+
+var loginInfo = new nsLoginInfo(
+ hostname, formSubmitURL, httprealm, username, password, usernameField, passwordField
+);
+</pre>
+</div>
+
+<h2 id="Examples" name="Examples">Examples</h2>
+
+<h3 id="Creating_a_login_for_a_web_page" name="Creating_a_login_for_a_web_page">Creating a login for a web page</h3>
+
+<pre class="brush: js">var formLoginInfo = new nsLoginInfo(
+ 'http://www.example.com',
+ 'http://login.example.com',
+ null,
+ 'joe',
+ 'SeCrEt123',
+ 'uname',
+ 'pword'
+);</pre>
+
+<p>This login would correspond to a HTML form such as:</p>
+
+<pre class="brush: html">&lt;form action="http://login.example.com/foo/authenticate.cgi"&gt;
+ &lt;div&gt;Please log in.&lt;/div&gt;
+ &lt;label&gt;Username:&lt;/label&gt; &lt;input type="text" name="uname"&gt;
+ &lt;label&gt;Password:&lt;/label&gt; &lt;input type="password" name="pword"&gt;
+&lt;/form&gt;
+</pre>
+
+<h3 id="Creating_a_site_authentication_login" name="Creating_a_site_authentication_login">Creating a site authentication login</h3>
+
+<pre class="brush: js">var authLoginInfo = new nsLoginInfo(
+ 'http://www.example.com',
+ null,
+ 'ExampleCo Login',
+ 'alice',
+ 'SeCrEt321',
+ "",
+ ""
+);
+</pre>
+
+<p>This would correspond to a login on <span class="nowiki">http://www.example.com</span> when the server sends a reply such as:</p>
+
+<pre class="eval"> HTTP/1.0 401 Authorization Required
+ Server: Apache/1.3.27
+ WWW-Authenticate: Basic realm="ExampleCo Login"
+
+</pre>
+
+<h3 id="Creating_a_local_extension_login" name="Creating_a_local_extension_login">Creating a local extension login</h3>
+
+<pre class="brush: js">var extLoginInfo = new nsLoginInfo(
+ 'chrome://firefoo',
+ null,
+ 'User Registration',
+ 'bob',
+ '123sEcReT',
+ "",
+ ""
+);</pre>
+
+<p>From a component creating a new info block is done slightly differently:</p>
+
+<pre>var nsLoginInfo = <span class="k"><span class="s0">new</span></span> <a class="r" title='Search for references of "Components"'>Components</a>.<a class="r" title='Search for references of "Constructor"'>Constructor</a>("@<a class="r" title='Search for references of "mozilla"'>mozilla</a>.<a class="r" title='Search for references of "org"'>org</a>/<a class="r" title='Search for references of "login"'>login</a>-<a class="r" title='Search for references of "manager"'>manager</a>/<a class="r" title='Search for references of "loginInfo"'>loginInfo</a>;1", <a class="r" title='Search for references of "Ci"'>Ci</a>.<a class="r" title='Search for references of "nsILoginInfo"'>nsILoginInfo</a>, "<a class="r" title='Search for references of "init"'>init</a>");
+<span class="k">var</span> extLoginInfo = <span class="k"><span class="s0">new</span></span> <a class="r" title='Search for references of "nsLoginInfo"'><span class="s1">nsLoginInfo</span></a>('<a class="r" title='Search for references of "chrome"'>chrome</a>:<span class="c">//firefoo',</span> null, 'User Registration', 'bob', '123sEcReT', '', '');
+//var extLoginInfo = new nsLoginInfo(<a class="r" title='Search for references of "aHostname"'>aHostname</a>, <a class="r" title='Search for references of "aFormSubmitURL"'>aFormSubmitURL</a>, <a class="r" title='Search for references of "aHttpRealm"'>aHttpRealm</a>, <a class="r" title='Search for references of "aUsername"'>aUsername</a>, <a class="r" title='Search for references of "aPassword"'>aPassword</a>, <a class="r" title='Search for references of "aUsernameField"'>aUsernameField</a>, <a class="r" title='Search for references of "aPasswordField"'>aPasswordField)</a>
+</pre>
+
+<p>The Login Manager treats this as if it was a web site login. You should use your extension's chrome:// URL to prevent conflicts with other extensions, and a realm string which briefly denotes the login's purpose.</p>
+
+<h2 id="Storing_a_password" name="Storing_a_password">Storing a password</h2>
+
+<p>To store a password in the Login Manager, you first need to create an <code><a href="/en-US/docs/XPCOM_Interface_Reference/nsILoginInfo" title="en-US/docs/nsILoginInfo">nsILoginInfo</a></code> object as defined above. Then you simply need to call the <code><a href="/en-US/docs/XPCOM_Interface_Reference/nsILoginManager" title="en-US/docs/nsILoginManager">nsILoginManager</a></code> method <code><a href="/en-US/docs/XPCOM_Interface_Reference/nsILoginManager#addLogin.28.29" title="en-US/docs/nsILoginManager#addLogin.28.29">addLogin()</a></code>.</p>
+
+<pre class="brush: js">myLoginManager.addLogin(loginInfo);
+</pre>
+
+<p>{{ Note("This will throw an exception if both the <code>httprealm</code> and <code>formSubmitURL</code> parameters are <code>NULL</code>. One must be specified when storing a password. The <code>hostname</code>, <code>username</code> and <code>password</code> parameters are also mandatory.") }}</p>
+
+<h2 id="Retrieving_a_password" name="Retrieving_a_password">Retrieving a password</h2>
+
+<p>Retrieving a password from the Login Manager is slightly more difficult. In order to locate a password, the <code>hostname</code>, <code>formSubmitURL</code> and <code>httprealm</code> must <strong>match exactly</strong> what is stored for the password to be found. The only exception is that if the stored <code>formSubmitURL</code> is blank, in which case the <code>formSubmitURL</code> parameter is ignored. Note that the <code>hostname</code> and <code>formSubmitURL</code> arguments should not include the path from the full URL. The example below should serve as a starting point for matching form logins:</p>
+
+<pre class="brush: js">var hostname = 'http://www.example.com';
+var formSubmitURL = 'http://www.example.com'; // not http://www.example.com/foo/auth.cgi
+var httprealm = null;
+var username = 'user';
+var password;
+
+try {
+ // Get Login Manager
+ var myLoginManager = Components.classes["@mozilla.org/login-manager;1"].
+ getService(Components.interfaces.nsILoginManager);
+
+ // Find users for the given parameters
+ var logins = myLoginManager.findLogins({}, hostname, formSubmitURL, httprealm);
+
+ // Find user from returned array of nsILoginInfo objects
+ for (var i = 0; i &lt; logins.length; i++) {
+ if (logins[i].username == username) {
+ password = logins[i].password;
+ break;
+ }
+ }
+}
+
+catch(ex) {
+ // This will only happen if there is no nsILoginManager component class
+}</pre>
+
+<p>Note that the user will be prompted for their master password if they have chosen to set one to secure their passwords.</p>
+
+<h2 id="Removing_a_password" name="Removing_a_password">Removing a password</h2>
+
+<p>Removing a password is simple:</p>
+
+<pre class="brush: js">myLoginManager.removeLogin(loginInfo);
+</pre>
+
+<p>When removing a password the specified <code><a href="/en-US/docs/XPCOM_Interface_Reference/nsILoginInfo" title="en-US/docs/nsILoginInfo">nsILoginInfo</a></code> object must <strong>exactly match</strong> what was stored or an exception will be thrown. This includes the password attribute. Here's an example on how to remove the password without actually knowing what the password is:</p>
+
+<pre class="brush: js">// example values
+var hostname = 'http://www.example.com';
+var formSubmitURL = 'http://www.example.com';
+var httprealm = null;
+var username = 'user';
+
+try {
+ // Get Login Manager
+ var passwordManager = Components.classes["@mozilla.org/login-manager;1"].
+ getService(Components.interfaces.nsILoginManager);
+
+ // Find users for this extension
+ var logins = passwordManager.findLogins({}, hostname, formSubmitURL, httprealm);
+
+ for (var i = 0; i &lt; logins.length; i++) {
+ if (logins[i].username == username) {
+ passwordManager.removeLogin(logins[i]);
+ break;
+ }
+ }
+}
+catch(ex) {
+ // This will only happen if there is no nsILoginManager component class
+}</pre>
+
+<h2 id="Changing_stored_login_information" name="Changing_stored_login_information">Changing stored login information</h2>
+
+<p>Changing a password is rather simple. Since all this does is make a <code><a href="/en-US/docs/XPCOM_Interface_Reference/nsILoginManager#removeLogin.28.29" title="en-US/docs/nsILoginManager#removeLogin.28.29">removeLogin()</a></code> call followed by an <code><a href="/en-US/docs/XPCOM_Interface_Reference/nsILoginManager#addLogin.28.29" title="en-US/docs/nsILoginManager#addLogin.28.29">addLogin()</a></code> call, it has the same caveats as both of them: namely that the <code>oldLogin</code> must match an existing login exactly (see above) and that the <code>newLogin</code> attributes must be set correctly.:</p>
+
+<pre class="brush: js">myLoginManager.modifyLogin(oldLogin, newLogin);</pre>
+
+<h2 id="Debugging" name="Debugging">Login Manager notifications</h2>
+
+<p>{{ fx_minversion_note("3.5", "The Login Manager notifications were added in Firefox 3.5.") }}</p>
+
+<p>Firefox 3.5 and later send assorted notifications when various Login Manager related events occur, including when form autofill does not occur for various reasons, as well as when changes are made to the Login Manager's database. See the <a class="internal" href="/en-US/docs/Observer_Notifications#Login_Manager" title="en-US/docs/Observer Notifications#Login Manager">Login Manager</a> section of the article on observer notifications for details.</p>
+
+<h2 id="Debugging" name="Debugging">Debugging</h2>
+
+<p>The login manager implementation has the ability to send debug messages to the Error Console, which can provide some visibility into what it's doing. To enable the debug logging, see <a class="external" href="http://wiki.mozilla.org/Firefox:Password_Manager_Debugging" rel="freelink">http://wiki.mozilla.org/Firefox:Pass...ager_Debugging</a>.</p>
+
+<h2 id="Supporting_older_versions_of_Firefox" name="Supporting_older_versions_of_Firefox">Supporting older versions of Gecko</h2>
+
+<p>If you want your extension to support both Gecko 1.9 (Firefox 3, Thunderbird 3, SeaMonkey 2) and older versions it will need to implement both the <code><a href="/en-US/docs/XPCOM_Interface_Reference/nsILoginManager" title="en-US/docs/nsILoginManager">nsILoginManager</a></code> and <code><a href="/en-US/docs/nsIPasswordManager" title="en-US/docs/nsIPasswordManager">nsIPasswordManager</a></code> components. A simple method to do this is as follows:</p>
+
+<pre class="brush: js">if ("@mozilla.org/passwordmanager;1" in Components.classes) {
+ // Password Manager exists so this is not Firefox 3 (could be Firefox 2, Netscape, SeaMonkey, etc).
+ // Password Manager code
+} else if ("@mozilla.org/login-manager;1" in Components.classes) {
+ // Login Manager exists so this is Firefox 3
+ // Login Manager code
+}</pre>
+
+<h2 id="See_also" name="See_also">See also</h2>
+
+<ul>
+ <li>{{ Interface("nsILoginManager") }}</li>
+ <li>{{ Interface("nsILoginInfo") }}</li>
+ <li><a href="/en-US/docs/Creating_a_Login_Manager_storage_module" title="en-US/docs/Creating_a_Login_Manager_storage_module">Creating a Login Manager storage module</a></li>
+</ul>
diff --git a/files/de/mozilla/tech/xpcom/reference/interface/nsixmlhttprequest/index.html b/files/de/mozilla/tech/xpcom/reference/interface/nsixmlhttprequest/index.html
new file mode 100644
index 0000000000..3907d126bd
--- /dev/null
+++ b/files/de/mozilla/tech/xpcom/reference/interface/nsixmlhttprequest/index.html
@@ -0,0 +1,89 @@
+---
+title: nsIXMLHttpRequest
+slug: Mozilla/Tech/XPCOM/Reference/Interface/nsIXMLHttpRequest
+translation_of: Mozilla/Tech/XPCOM/Reference/Interface/nsIXMLHttpRequest
+---
+<div class="blockIndicator obsolete obsoleteHeader">
+<p><strong>Obsolete since Gecko 60 (Firefox 60 / Thunderbird 60 / SeaMonkey 2.57)</strong><br>
+ This feature is obsolete. Although it may still work in some browsers, its use is discouraged since it could be removed at any time. Try to avoid using it.</p>
+</div>
+
+
+
+<p><code>nsIXMLHttpRequest</code> along with <code><a href="/en-US/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIJSXMLHttpRequest" title="">nsIJSXMLHttpRequest</a></code> and <code><a href="/en-US/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIXMLHttpRequestEventTarget" title="">nsIXMLHttpRequestEventTarget</a></code> are Mozilla's implementation details of the DOM <a href="/en/DOM/XMLHttpRequest" title="en/DOM/XMLHttpRequest">XMLHttpRequest</a> object.</p>
+
+<div class="note"><strong>Note:</strong> If you're a web developer or a Mozilla add-on developer, please refer to the <a href="/en/DOM/XMLHttpRequest" title="en/DOM/XMLHttpRequest">XMLHttpRequest</a> documentation instead.</div>
+
+<p>This page contains documentation, specific to Mozilla application and add-on developers.</p>
+
+<p>The interface definition: <a href="https://dxr.mozilla.org/mozilla-central/source/dom/xhr/nsIXMLHttpRequest.idl">https://dxr.mozilla.org/mozilla-central/source/dom/xhr/nsIXMLHttpRequest.idl</a></p>
+
+<h3 id="Elevated_Privileges">Elevated Privileges</h3>
+
+<p>As mentioned in the "Non-Standard Properties" the property of <code>channel</code> was read-only. When using the XPCOM interface, as seen below in <a href="#Example_code">Example 2</a>, we can get access to this. The most obvious benefit is that we can set <a href="/en-US/docs/Mozilla/Tech/XPCOM/Reference/Interface/NsIRequest#Constants">nsiRequest - Constants</a> in the <code>xhr.channel.loadFlags</code>. For instance, as done in <a href="#Example_code">Example 2</a>, the flag of <code>LOAD_ANONYMOUS</code> is added, this strips all user data (cookies, tokens, etc).</p>
+
+<h3 id="Using_event_handlers_from_native_code">Using event handlers from native code</h3>
+
+<p>(Not sure if it's up-to-date)</p>
+
+<p>From native code, the way to set up onload and onerror handlers is a bit different. Here is a comment from Johnny Stenback &lt;<a class="link-mailto" href="mailto:jst@netscape.com" rel="freelink">jst@netscape.com</a>&gt;:</p>
+
+<blockquote>The mozilla implementation of nsIXMLHttpRequest implements the interface nsIDOMEventTarget and that's how you're supported to add event listeners. Try something like this: nsCOMPtr&lt;nsIDOMEventTarget&gt; target(do_QueryInterface(myxmlhttpreq)); target-&gt;AddEventListener(NS_LITERAL_STRING("load"), mylistener, PR_FALSE) where mylistener is your event listener object that implements the interface nsIDOMEventListener. The 'onload', 'onerror', and 'onreadystatechange' attributes moved to nsIJSXMLHttpRequest, but if you're coding in C++ you should avoid using those.</blockquote>
+
+<p>Though actually, if you use addEventListener from C++ weird things will happen too, since the result will depend on what JS happens to be on the stack when you do it....</p>
+
+<p>Conclusion: Do not use event listeners on XMLHttpRequest from C++, unless you're aware of all the security implications. And then think twice about it.</p>
+
+<h2 id="Example_code" name="Example_code">Example code</h2>
+
+<p>This is a simple example code for opening a simple HTTP request from a xul application (like a Mozilla extension) without using observers:</p>
+
+<pre class="eval notranslate"> var req = Components.classes["@mozilla.org/xmlextras/xmlhttprequest;1"].createInstance();
+ req.open('POST', "<a class="external" href="http://www.foo.bar:8080/nietzsche.do" rel="freelink">http://www.foo.bar:8080/nietzsche.do</a>", true);
+ req.send('your=data&amp;and=more&amp;stuff=here');
+</pre>
+
+<h2 id="Example_code" name="Example_code">Example 2</h2>
+
+<pre class="notranslate"><code>var {Cu: utils, Cc: classes, Ci: instances} = Components;
+Cu.import('resource://gre/modules/Services.jsm');
+function xhr(url, cb) {
+ let xhr = Cc["@mozilla.org/xmlextras/xmlhttprequest;1"].createInstance(Ci.nsIXMLHttpRequest);
+
+ let handler = ev =&gt; {
+ evf(m =&gt; xhr.removeEventListener(m, handler, !1));
+ switch (ev.type) {
+ case 'load':
+ if (xhr.status == 200) {
+ cb(xhr.response);
+ break;
+ }
+ default:
+ Services.prompt.alert(null, 'XHR Error', 'Error Fetching Package: ' + xhr.statusText + ' [' + ev.type + ':' + xhr.status + ']');
+ break;
+ }
+ };
+
+ let evf = f =&gt; ['load', 'error', 'abort'].forEach(f);
+ evf(m =&gt; xhr.addEventListener(m, handler, false));
+
+ xhr.mozBackgroundRequest = true;
+ xhr.open('GET', url, true);
+ xhr.channel.loadFlags |= Ci.nsIRequest.LOAD_ANONYMOUS | Ci.nsIRequest.LOAD_BYPASS_CACHE | Ci.nsIRequest.INHIBIT_PERSISTENT_CACHING;
+ xhr.responseType = "arraybuffer"; //dont set it, so it returns string, you dont want arraybuffer. you only want this if your url is to a zip file or some file you want to download and make a nsIArrayBufferInputStream out of it or something
+ xhr.send(null);
+}
+
+xhr('https://www.gravatar.com/avatar/eb9895ade1bd6627e054429d1e18b576?s=24&amp;d=identicon&amp;r=PG&amp;f=1', data =&gt; {
+ Services.prompt.alert(null, 'XHR Success', data);
+ var file = OS.Path.join(OS.Constants.Path.desktopDir, "test.png");
+ var promised = OS.File.writeAtomic(file, new UInt8Array(data));
+ promised.then(
+ function() {
+ alert('succesfully saved image to desktop')
+ },
+ function(ex) {
+ alert('FAILED in saving image to desktop')
+ }
+ );
+});</code></pre>
diff --git a/files/de/mozilla/thunderbird/autokonfiguration/index.html b/files/de/mozilla/thunderbird/autokonfiguration/index.html
new file mode 100644
index 0000000000..300c47d686
--- /dev/null
+++ b/files/de/mozilla/thunderbird/autokonfiguration/index.html
@@ -0,0 +1,146 @@
+---
+title: Automatische Konfiguration in Thunderbird
+slug: Mozilla/Thunderbird/Autokonfiguration
+tags:
+ - Administration
+ - enterprise
+translation_of: Mozilla/Thunderbird/Autoconfiguration
+---
+<p>Author: Ben Bucksch<br>
+ Bitte nehmen Sie keine Änderungen an diesem Dokument vor ohne den Autor zu kontaktieren</p>
+
+<p>Thunderbird 3.1 und neuer (sowie 3.0 zu einem gewissen Grad) beinhalten eine Funktion zur automatischen Konfiguration des E-Mail Kontos. Das Ziel der Autokonfiguration ist es, den Nutzern die Herstellung einer Verbindung zwischen Thunderbird und den Mail-Servern zu erleichtern. In den meisten Fällen sollten Nutzer in der Lage sein Thunderbird herunterzuladen und zu installieren sowie anschließend ihren Namen, E-Mail Adresse und Passwort in dem Einrichtungsassistenten einzugeben, wodurch sie einen voll funktionsfähigen E-Mail Client erhalten und ihre Mails so sicher wie möglich verschicken können. </p>
+
+<p>Siehe auch:</p>
+
+<ul>
+ <li>Die <a class="link-https" href="https://wiki.mozilla.org/Thunderbird:Autoconfiguration" title="https://wiki.mozilla.org/Thunderbird:Autoconfiguration">Projektseite im Mozilla Wiki</a> für Hintergrund, Design, Implementierung und Projektdetails</li>
+ <li>Für Anleitungen für Nutzer siehe <a class="external" href="https://support.mozilla.org/de/kb/automatisch-konto-konfigurieren" title="https://support.mozilla.org/de/kb/automatisch-konto-konfigurieren">Automatisch ein Konto konfigurieren lassen</a> in der Thunderbird Knowledge Base</li>
+ <li>Die <a href="/en/Thunderbird/Autoconfiguration/FileFormat/HowTo" title="en/Thunderbird/Autoconfiguration/FileFormat/HowTo">Beschreibung</a> und <a href="https://wiki.mozilla.org/Thunderbird:Autoconfiguration:ConfigFileFormat" title="en/Thunderbird/Autoconfiguration/FileFormat/Definition">Definition</a> der Konfigurationsdatei</li>
+</ul>
+
+<p>Dieses Dokument beschreibt wie die automatische Konfiguration in Thunderbird funktioniert und wie man E-Mail Servern die Autokonfiguration ermöglicht.</p>
+
+<h1 id="Mechanismen">Mechanismen</h1>
+
+<p>Thunderbird erhält die Server-Einstellungen über verschiedene Wege, wovon jeder für einen bestimmten Fall geeignet ist:</p>
+
+<ul>
+ <li>ISPDB<br>
+ The ISPDB is a central database, currently hosted by Mozilla Messaging, but free to use for any client. It contains settings for the world's largest ISPs. We hope that the database will soon have enough information to autoconfigure approximately 50% of our user's email accounts.<br>
+ It was added merely because we cannot assume that all big ISPs (including Microsoft) will immediately set up a configuration server for Thunderbird.</li>
+ <li>Configuration server at ISP<br>
+ ISPs have the option to provide their configuration information themselves directly to users, by setting up a web server at autoconfig.&lt;domain&gt;, which simply returns a static XML file with the configuration, as described below. For more complicated setups, for example when the login name does not appear in the the email address, the XML file can also be generated by the ISP. In such complicated cases, this is the only way to allow an automatic setup.</li>
+ <li>Configuration file on harddisk<br>
+ Administrators may place a configuration file in the Thunderbird installation folder. This is mainly intended for companies who install Thunderbird on their employees' computers and want to enable easy account setup without having to set up a configuration server. This method is not practical for other use cases, because it is difficult to update the configuration file. Therefore, public ISPs should use a configuration server.</li>
+ <li>Guessing<br>
+ If all other mechanisms failed, Thunderbird tries to guess the configuration, by trying common server names like imap.&lt;domain&gt;, smtp.&lt;domain&gt;, mail.&lt;domain&gt; etc., and, when a mail server answers, checking whether it supports SSL, STARTTLS and encrypted passwords (CRAM-MD5).</li>
+ <li>Manual configuration<br>
+ If guessing fails the user must manually enter the configuration information. Users can may also manually modify the account settings even if configuration information is successfully obtained by the methods described above.</li>
+</ul>
+
+<p>All the lookup mechanisms use the email address domain as base for the lookup. For example, for the email address <a class="moz-txt-link-abbreviated link-mailto" href="mailto:fred@example.com">fred@example.com</a> , the lookup is performed as (in this order):</p>
+
+<ol>
+ <li><em>tb-install-dir</em>/isp/example.com.xml on the harddisk</li>
+ <li>check for autoconfig.example.com</li>
+ <li>look up of "example.com" in the ISPDB</li>
+ <li>look up "MX example.com" in DNS, and for mx1.mail.hoster.com, look up "hoster.com" in the ISPDB</li>
+ <li>try to guess (imap.example.com, smtp.example.com etc.)</li>
+</ol>
+
+<p>We may in the future add DNS SRV records as supported mechanism in the future, but we currently do not.</p>
+
+<h1 id="How_to_add_support_for_your_domain">How to add support for your domain</h1>
+
+<h2 id="Classification">Classification</h2>
+
+<p>If you are a big ISP (&gt; 100,000 users) providing email addresses solely under a few domains like "example.com" and "example.de", you may either submit the configuration to the ISPDB or set up a configuration server.<br>
+ <br>
+ If you support email aliases and the user's login name is not part of the email address (for example, users may have <a class="moz-txt-link-rfc2396E link-mailto" href="mailto:hero@example.com">"hero@example.com"</a> as email address, but the IMAP/POP/SMTP login name is neither "hero" nor <a class="moz-txt-link-rfc2396E link-mailto" href="mailto:hero@example.com">"hero@example.com"</a>, but "u67578"), you need to set up a configuration server, which does the email address -&gt; login name lookup.<br>
+ <br>
+ If you host customer domains, i.e. you are "hoster.com", but your customers have <a class="moz-txt-link-rfc2396E link-mailto" href="mailto:fred@flintstone.com">"fred@flintstone.com"</a> and <a class="moz-txt-link-rfc2396E link-mailto" href="mailto:louis@kent.com">"louis@kent.com"</a> as domains, with only a few users per domain, you need to set up a configuration server (or rely on DNS MX).<br>
+ <br>
+ If you are a small company installing Thunderbird on your employees' desktops, you can place a configuration file in the Thunderbird installation folder.</p>
+
+<h2 id="ISPDB">ISPDB</h2>
+
+<p>Database URL is <a class="moz-txt-link-rfc2396E link-https" href="https://live.mozillamessaging.com/autoconfig/v1.1/" title="https://live.mozillamessaging.com/autoconfig/v1.1/">&lt;https://live.mozillamessaging.com/autoconfig/v1.1/&gt;</a>, append domain name, e.g. <a class="moz-txt-link-rfc2396E link-https" href="https://live.mozillamessaging.com/autoconfig/v1.1/freenet.de" title="https://live.mozillamessaging.com/autoconfig/v1.1/freenet.de">&lt;https://live.mozillamessaging.com/autoconfig/v1.1/freenet.de&gt;</a>.<br>
+ <br>
+ Current process: File a bug in <a class="link-https" href="https://bugzilla.mozilla.org/enter_bug.cgi?product=Webtools&amp;component=ISPDB%20Database%20Entries&amp;op_sys=All&amp;rep_platform=All">Bugzilla</a>, Product "Webtools", Component "ISPDB Database Entries", with a configuration file that matches the requirements described below.  The component is actively watched for new bugs (as of November 2015) so there is no need to request review on the file.</p>
+
+<h2 id="Configuration_server_at_ISP">Configuration server at ISP</h2>
+
+<p>Given the email address <a class="moz-txt-link-rfc2396E link-mailto" href="mailto:fred@example.com">"fred@example.com"</a>, Thunderbird first checks &lt;<span class="external free"><a class="moz-txt-link-freetext external" href="http://autoconfig.example.com/mail/config-v1.xml?emailaddress=fred@example.com">http://autoconfig.example.com/mail/config-v1.1.xml?emailaddress=fred@example.com</a></span>&gt; and then <a class="moz-txt-link-rfc2396E external" href="http://example.com/.well-known/autoconfig/mail/config-v1.1.xml" title="http://example.com/.well-known/autoconfig/mail/config-v1.1.xml">&lt;http://example.com/.well-known/autoconfig/mail/config-v1.1.xml&gt;</a>.</p>
+
+<h3 id="Small_company">Small company</h3>
+
+<p>If you are a small company, you can put the XML configuration file on your web server, at URL <a class="moz-txt-link-rfc2396E external" href="http://example.com/.well-known/autoconfig/mail/config-v1.1.xml">&lt;http://example.com/.well-known/autoconfig/mail/config-v1.1.xml&gt;</a>. (This is not yet finalized and subject to change.)</p>
+
+<h3 id="Domain_hoster">Domain hoster</h3>
+
+<p>If you are an ISP that hosts domains for your customers - for example, you are hoster.com and your customer registers fancy.com or example.com, and your servers accept and serve the mail for example.com -, you should set up an autoconfig server.</p>
+
+<h4 id="DNS">DNS</h4>
+
+<p>For each customer domain, you add a DNS record (in addition to the existing MX, A www etc. DNS records):<br>
+ <code>autoconfig IN A 10.2.3.4</code><br>
+ or<br>
+ <code>autoconfig IN CNAME autoconfig.hoster.com</code>.<br>
+ ... where 10.2.3.4 and autoconfig.hoster.com are IP addresses / hostnames you own.<br>
+ This allows Thunderbird to find you as hoster.</p>
+
+<p>To make the Version without an autoconfig DNS Entry work you have to make sure that example.com points to the Webserver you will place the config-v1.1.xml on.</p>
+
+<p>Example: <span style="font-family: courier new,andale mono,monospace; line-height: normal;">example.com A 10.2.3.4</span></p>
+
+<h4 id="Web_server">Web server</h4>
+
+<p>You set up a web server bound to a physical IP address. This may be on the same machine as other web servers, but the web server must be configured to the content to any requested domain.<br>
+ <br>
+ You must use an virtual host that match all autoconfig.* domains of your customers. In Apache terms, you can use a "ip-based virtual host". In the Apache configuration files, that means something like: Listen 10.2.3.4:80 (of course, you use a public IP address that you own)</p>
+
+<pre class="notranslate">&lt;VirtualHost 10.2.3.4:80&gt; #Must be the first and only virtual host with this ip!
+    DocumentRoot /var/www/autoconfig/
+    ServerName autoconfig.hoster.com
+ &lt;Directory /var/www/autoconfig&gt;
+ Order allow,deny
+ allow from all
+    &lt;/Directory&gt;
+&lt;/VirtualHost&gt;</pre>
+
+<p>Place the configuration file at the URL /mail/config-v1.1.xml on that host.</p>
+
+<p>All config files must be served as <code>Content-Type: text/xml</code> (or <code>application/xml</code>), otherwise the file will be ignored. Also, they must use charset UTF-8 (esp. if there are any non-ASCII-characters).</p>
+
+<p>If you like to use name-based virtual hosts. You probably don't want to setup the autoconfig subdomain for every domain of your customers.<br>
+ You can add a Rewriterule in the default virtual host (on debian /etc/apache2/sites-enabled/000-default)  to match all autoconfig.* subdomains:</p>
+
+<pre class="notranslate">&lt;VirtualHost *:80&gt; #Must be the first Virtual host
+ ServerAdmin webmaster@hoster.com
+ ServerName www
+ DocumentRoot /var/www
+ RewriteEngine On
+ RewriteCond %{HTTP_HOST} ^autoconfig\. [NC]
+ RewriteRule ^/(.*) http://autoconfig.hoster.com/$1 [L,R=301,NE]
+ #...
+&lt;/VirtualHost&gt;
+&lt;VirtualHost *:80&gt;
+    DocumentRoot /var/www/autoconfig/
+    ServerName autoconfig.hoster.com
+ &lt;Directory /var/www/autoconfig&gt;
+  Order allow,deny
+ allow from all
+    &lt;/Directory&gt;
+&lt;/VirtualHost&gt;
+</pre>
+
+
+
+
+
+<h2 id="Configuration_file">Configuration file</h2>
+
+<p>This is described at <a href="/en/Thunderbird/Autoconfiguration/FileFormat/HowTo" title="en/Thunderbird/Autoconfiguration/FileFormat/HowTo">How to create a configuration file</a> and <a href="/en/Thunderbird/Autoconfiguration/FileFormat/Definition" title="en/Thunderbird/Autoconfiguration/FileFormat/Definition">defined</a> on the sub-pages.</p>
+
+<p>{{ languages( { "ja": "ja/Thunderbird/Autoconfiguration" } ) }}</p>
diff --git a/files/de/mozilla/thunderbird/index.html b/files/de/mozilla/thunderbird/index.html
new file mode 100644
index 0000000000..7bf0a47087
--- /dev/null
+++ b/files/de/mozilla/thunderbird/index.html
@@ -0,0 +1,75 @@
+---
+title: Thunderbird
+slug: Mozilla/Thunderbird
+translation_of: Mozilla/Thunderbird
+---
+<p><strong>Thunderbird</strong> ist Mozillas Mail- und Nachrichtenprogramm. Diese Seiten dokumentieren Thunderbird und bieten außerdem Links zu Dokumentationen über das <a href="/en-US/docs/tag/MailNews" title="tag/MailNews">MailNews-Backend</a>, welches in weiteren Projekten wie <a href="http://wiki.mozilla.org/Penelope">Eudora/Penelope</a>, <a href="http://www.seamonkey-project.org/">Seamonkey</a> und <a href="http://nkreeger.com/correo/">Correo</a> genutzt wird.</p>
+<p>Thunderbird ist das Geschwisterkind von Firefox und auf der gleichen technischen Platform aufgebaut wie der Web-Browser. Nach vielen Jahren der Entwicklung ist Thunderbird einer der meist genutzen, quelloffenen Mail-Clients und wird von Millionen von Menschen weltweilt genutzt, um alle ihre Mail-Accounts, Newsgroups und Nachrichtenfeeds in einer bekannten, hochproduktiven Umgebung zusammenzubringen. (Von Anfang 2007 bis Anfang 2011 wurde Thunderbird von <a class="link-https" href="https://en.wikipedia.org/wiki/Mozilla_Messaging" title="https://en.wikipedia.org/wiki/Mozilla_Messaging">Mozilla Messaging</a> entwickelt, einer Tochtergesellschaft von Mozilla.)</p>
+<table class="topicpage-table">
+ <tbody>
+ <tr>
+ <td>
+ <h2 class="Documentation" id="Documentation" name="Documentation">Dokumentation</h2>
+ <dl>
+ <dt>
+ <a href="https://developer.mozilla.org/en-US/docs/Simple_Thunderbird_build" title="Simple Thunderbird build">Thunderbird erstellen</a></dt>
+ <dd>
+ Informationen über das Erstellen von Thunderbird-Builds mit dem <a href="/en-US/docs/comm-central" title="comm-central">comm-central</a> Repository. Es gibt außerdem Infos darüber, <a href="/en-US/docs/How_comm-central%27s_build_system_works" title="How_comm-central's_build_system_works"> wie comm-central arbeitet,</a> wie der <a href="/en-US/docs/Mailnews_and_Mail_code_review_requirements" title="Mailnews and Mail code review requirements">Bewertungsprozess läuft </a> und wie der <a href="/en-US/docs/Using_the_Mozilla_symbol_server" title="Using the Mozilla symbol server">Mozilla Symbol-Server</a> Hilfe zum Debuggen anbietet.</dd>
+ <dt>
+ <a href="/en-US/docs/MailNews_Protocols" title="MailNews_Protocols">MailNews Protokolle</a></dt>
+ <dd>
+ Eine - eher ungenaue - Dokumentation über Mailprotokolle...</dd>
+ <dt>
+ <a href="/en-US/docs/DB_Views_%28message_lists%29" title="DB_Views_(message_lists)">Datenbankzugriffe</a></dt>
+ <dd>
+ Informationen über das Backend von {{ Interface("nsIMsgDBView") }} und verwandten Schnittstellen...</dd>
+ <dt>
+ <a href="/en-US/docs/Thunderbird/Thunderbird_API_documentation" title="Thunderbird API documentation">Thunderbird API-Dokumentation</a></dt>
+ <dd>
+ Die Dokumentation über Thunderbirds <span class="st">Programmierschnittstellen (APIs)</span></dd>
+ <dt>
+ <a href="/en-US/docs/Extensions/Thunderbird" title="Extensions/Thunderbird/">Dokumentationen von Erweiterungen</a></dt>
+ <dd>
+ Einführungen und Tipps zum Erstellen von Erweiterungen für Thunderbird<a href="/en-US/docs/Thunderbird/Thunderbird_Automated_Testing" title="Thunderbird Automated Testing"> </a></dd>
+ <dt>
+ <a href="/en-US/docs/Thunderbird/Thunderbird_Automated_Testing" title="Thunderbird Automated Testing">Automatisiertes Testen</a></dt>
+ <dd>
+ Details über automatisiertes Testen von Thunderbird</dd>
+ <dt>
+ <a href="/en-US/docs/Thunderbird/Thunderbird_in_the_Enterprise" title="Thunderbird in Firmen">Thunderbird in Firmen</a></dt>
+ <dd>
+ Hilfe beim Entwickeln von Thunderbird für große Organisationen</dd>
+ </dl>
+ <p><span class="alllinks"><a href="/en-US/docs/tag/Thunderbird" title="tag/Thunderbird">Alle anzeigen...</a></span></p>
+ </td>
+ <td>
+ <h2 class="Community" id="Community" name="Community">Community</h2>
+ <ul>
+ <li>Support wird bei <a href="http://getsatisfaction.com/mozilla_messaging" title="http://getsatisfaction.com/mozilla_messaging">getsatisfaction</a> gegeben.</li>
+ <li>Fragen zu Erweiterungen werden häufig in der dev-apps-thunderbird Gruppe besprochen: {{ DiscussionList("dev-apps-thunderbird", "mozilla.dev.apps.thunderbird") }}</li>
+ <li>Diskussionen über die Entwicklung von Thunderbird werden in der tb-planning Mailingliste geführt:
+ <ul>
+ <li><a class="link-https" href="https://mail.mozilla.org/listinfo/tb-planning" title="https://mail.mozilla.org/listinfo/tb-planning">Eintragen</a></li>
+ <li><a class="link-https" href="https://mail.mozilla.org/pipermail/tb-planning/" title="https://mail.mozilla.org/pipermail/tb-planning/">Archiv</a></li>
+ </ul>
+ </li>
+ <li><a href="http://forums.mozillazine.org/viewforum.php?f=50">Das Mozillazine Forum</a></li>
+ <li><a href="http://www.mozillamessaging.com/">Die Website von Mozilla Messaging </a></li>
+ <li><a class="link-irc" href="irc://irc.mozilla.org/thunderbird">#thunderbird bei irc.mozilla.org</a> (für Benutzer)</li>
+ <li><a class="link-irc" href="irc://irc.mozilla.org/maildev">#maildev bei irc.mozilla.org</a> (für Entwickler)</li>
+ <li>Eine Liste mit allen <a href="http://wiki.mozilla.org/Thunderbird/CommunicationChannels" title="Thunderbird communication channels">Kommunikationskanälen von Thunderbird</a></li>
+ </ul>
+ <h2 class="Tools" id="Tools" name="Tools">Tools</h2>
+ <ul>
+ <li><a href="http://ted.mielczarek.org/code/mozilla/extensiondev/">Erweiterungen für Entwickler</a></li>
+ <li><a href="/en-US/docs/DOM_Inspector" title="DOM_Inspector">DOM Inspector</a></li>
+ </ul>
+ <h2 class="Related_Topics" id="Related_Topics" name="Related_Topics">Related Topics</h2>
+ <ul>
+ <li><a href="/en-US/docs/Extensions" title="Extensions">Erweiterungen</a></li>
+ </ul>
+ </td>
+ </tr>
+ </tbody>
+</table>
+<p> </p>
diff --git a/files/de/mozilla/thunderbird/thunderbird_extensions/building_a_thunderbird_extension/index.html b/files/de/mozilla/thunderbird/thunderbird_extensions/building_a_thunderbird_extension/index.html
new file mode 100644
index 0000000000..d6209dea6a
--- /dev/null
+++ b/files/de/mozilla/thunderbird/thunderbird_extensions/building_a_thunderbird_extension/index.html
@@ -0,0 +1,57 @@
+---
+title: 'Eine Thunderbird-Erweiterung programmieren 1: Einleitung'
+slug: Mozilla/Thunderbird/Thunderbird_extensions/Building_a_Thunderbird_extension
+tags:
+ - Addons
+ - Erweiterungen
+ - thunderbird
+translation_of: Mozilla/Thunderbird/Thunderbird_extensions/Building_a_Thunderbird_extension
+---
+<p>{{AddonSidebar}}</p>
+
+<p>Thunderbird ist eine von der <a href="https://www.thunderbird.net/en-US/">community gemanagete Open-Source Emailanwendung</a>. Sie verwendet viele der Technologien, die auch Mozilla Firefox verwendet, einschließlich  <a class="internal" href="/en/JavaScript" title="en/JavaScript">JavaScript</a>, der <a class="internal" href="/en/Gecko" title="en/Gecko">Gecko</a> Layout Engine, der <a class="internal" href="/en/XUL" title="en/XUL">XUL</a> XML User Interface Language und dem <a class="internal" href="/en/XPCOM" title="en/XPCOM">XPCOM</a> <span class="tlid-translation translation"><span title="">plattformübergreifenden Komponentenobjektmodell</span></span> . Ähnlich wie bei Firefox kann die Funktionalität von Thunderbird durch <a class="external" href="https://addons.mozilla.org/thunderbird/" title="http://addons.mozilla.org/en-US/thunderbird/">Erweiterungen</a> erweitert und angepasst werden.</p>
+
+<p><u><strong>Hinweis: Diese Dokumentationsserie ist noch nicht für die Firefox Version 60 aktualisiert.</strong></u>  <strong>Thunderbird 60, das im Sommer 2018 veröffentlicht wurde, führt Veränderungen bei Erweiterung ein, die im <a href="https://wiki.mozilla.org/Thunderbird/Add-ons_Guide_57">Thunderbird 57-60 add-ons guide</a> dokumentiert sind.</strong></p>
+
+<p>Dieses Tutorial dient der Einführung in die Komponenten einer Thunderbird-Erweiterung und es wird gezeigt, wie man seine eigene Erweiterung entwickelt. Das Tutorial setzt sich aus folgenden Seiten zusammen:</p>
+
+<ol>
+ <li>Einleitung (Diese Seite)</li>
+ <li><a class="internal" href="/en/Extensions/Thunderbird/Building_a_Thunderbird_extension_2:_extension_filesystem" title="en/Extensions/Thunderbird/Building a Thunderbird extension 2: extension filesystem">Das Erweiterungsdateisystem</a> (das lokale System vorbereiten und aufsetzen)</li>
+ <li><a class="internal" href="/en/Extensions/Thunderbird/Building_a_Thunderbird_extension_3:_install_manifest" title="en/Extensions/Thunderbird/Building a Thunderbird extension 3: install manifest">Installation des manifests</a> (Die <code>install.rdf</code> Datei. Sie beinhaltet die Metainformationen der Erweiterung)</li>
+ <li><a class="internal" href="/en/Extensions/Thunderbird/Building_a_Thunderbird_extension_4:_chrome_manifest" title="en/Extensions/Thunderbird/Building a Thunderbird extension 4: chrome manifest">Chrome Manifest</a> (Eine Liste von Packages und Overlays)</li>
+ <li><a class="internal" href="/en/Extensions/Thunderbird/Building_a_Thunderbird_extension_5:_XUL" title="en/Extensions/Thunderbird/Building a Thunderbird extension 5: XUL">XUL</a> (Die XML User Interface Language, die eingesetzt wird, um die Benutzeroberfläche von Thunderbird zu verändern)</li>
+ <li><a href="/en/Extensions/Thunderbird/Building_a_Thunderbird_extension_6:_Adding_Javascript" title="en/Extensions/Thunderbird/Building a Thunderbird extension 6: Adding Javascript">Hinzufügen von JavaScript</a> (beschreibt wie man seiner Thunderbird-Erweiterung simplen JavaScriptcode hinzufügen kann)</li>
+ <li><a class="internal" href="/en/Extensions/Thunderbird/Building_a_Thunderbird_extension_7:_Installation" title="en/Extensions/Thunderbird/Building a Thunderbird extension 7: Installation">Lokale Installation</a> (Aktivieren der Erweiterung in der lokalen Thunderbirdinstanz)</li>
+ <li><a class="internal" href="/en/Extensions/Thunderbird/Building_a_Thunderbird_extension_8:_packaging" title="en/Extensions/Thunderbird/Building a Thunderbird extension 8: packaging">Packaging</a> (Erstellen eines <span class="tlid-translation translation"><span title="">Distributionspakets</span></span>, das die Erweiterung beinhaltet)</li>
+ <li><a class="internal" href="/en/Extensions/Thunderbird/Building_a_Thunderbird_extension_9:_distributing" title="en/Extensions/Thunderbird/Building a Thunderbird extension 9: distributing">Veröffentlichung</a> (auf der eigenen Website oder auf <a class="external" href="https://addons.mozilla.org/" rel="external nofollow" title="http://addons.mozilla.org/">https://addons.mozilla.org/</a>)</li>
+</ol>
+
+<p>Dieses Tutorial ist kompatibel mit den Thunderbirdversionen 2, 3 und 5. Alle Thunderbird Builds sind auf dieser F<a class="external" href="http://ftp.mozilla.org/pub/mozilla.org/thunderbird/" title="http://ftp.mozilla.org/pub/mozilla.org/thunderbird/">TP-Seite</a> verfügbar.</p>
+
+<h2 id="Verweise_und_Ressourcen">Verweise und Ressourcen</h2>
+
+<h3 id="Tools_und_Hilfserweiterungen">Tools und Hilfserweiterungen</h3>
+
+<p>Es gibt viele Tools, die dabei helfen Thunderbird-Erweiterungen zu entwickeln. Das Mindeste, was benötigt wird:</p>
+
+<ul>
+ <li><a class="external" href="http://en.wikipedia.org/wiki/List_of_text_editors" title="http://en.wikipedia.org/wiki/List_of_text_editors">Texteditor</a>: Ein beliebiger Editor, der in der Lage ist reinen Text zu schreiben, reicht bereits aus, um eine Erweiterung zu entwickeln. Die meisten Entwickler benutzen jedoch ein Programm, das dafür ausgelegt ist, Code zu entwickeln (auch als Integrated Development Environment [IDE] bezeichnet). Solche IDEs bieten zusätzliche Features wie Syntax-highlighting und Code-Färbung, Einrückung, Autovervollständigung usw., an.</li>
+ <li><a class="external" href="http://en.wikipedia.org/wiki/Comparison_of_file_archivers" title="http://en.wikipedia.org/wiki/Comparison_of_file_archivers">Archivierungsprogramme</a>: Irgendein Programm, das in der Lage ist, Archivdateien zu erzeugen.</li>
+</ul>
+
+<p>Darüber hinaus gibt es eine große Zahl von Erweiterungen und Anwendungen, die nützlich sind zum Testen und Debuggen von Thunderbird-Erweiterungen, wie z. B. JavaScript-Konsolen und XPCOM Inspektoren. Diese werden auf der Seite "<a class="internal" href="/en/Setting_up_extension_development_environment" title="en/Setting up extension development environment">Aufsetzen einer Erweiterungs-Entwicklungsumgebung</a>" beschrieben.</p>
+
+<h3 id="Dokumentation">Dokumentation</h3>
+
+<ul>
+ <li><a class="internal" href="/en/Extensions/Thunderbird" title="en/Extensions/Thunderbird">Thunderbird extensions (Dokumentationsübersicht)</a></li>
+ <li><a class="internal" href="/En/Firefox_addons_developer_guide" title="En/Firefox addons developer guide">Firefox addons developer guide</a> (Viele Inhalte sind auch anwendbar für Thunderbird)</li>
+ <li><a class="external" href="https://dxr.mozilla.org/comm-central/source/" title="http://mxr.mozilla.org/comm-central/">Mozilla cross-reference</a> Quelltext-Browser ("comm-central" beinhaltet das Thunderbird Coderepository)</li>
+</ul>
+
+<h3 id="Community">Community</h3>
+
+<p>Die Thunderbird-Development-Community hat eine <a class="external" href="http://groups.google.com/group/mozilla.dev.apps.thunderbird/topics?lnk" title="http://groups.google.com/group/mozilla.dev.apps.thunderbird/topics?lnk">Mailing-Liste mit einem umfangreichen und durchsuchbaren Archiv</a>. Es lässt sich auch mit der Community sprechen über den <a class="link-irc" href="irc://moznet/#maildev" title="irc://moznet/#maildev">#maildev IRC channel</a>.</p>
+
+<p>{{ Next("Mozilla/Thunderbird/Thunderbird_extensions/Eine_Thunderbird-Erweiterung_programmieren_2:_Erweiterungs-Dateisystem") }}</p>
diff --git a/files/de/mozilla/thunderbird/thunderbird_extensions/building_a_thunderbird_extension_3_colon__install_manifest/index.html b/files/de/mozilla/thunderbird/thunderbird_extensions/building_a_thunderbird_extension_3_colon__install_manifest/index.html
new file mode 100644
index 0000000000..69c95d4d01
--- /dev/null
+++ b/files/de/mozilla/thunderbird/thunderbird_extensions/building_a_thunderbird_extension_3_colon__install_manifest/index.html
@@ -0,0 +1,61 @@
+---
+title: 'Eine Thunderbird-Erweiterung programmieren 3: Manifest installieren'
+slug: >-
+ Mozilla/Thunderbird/Thunderbird_extensions/Building_a_Thunderbird_extension_3:_install_manifest
+tags:
+ - Addons
+ - Erweiterungen
+ - thunderbird
+translation_of: >-
+ Mozilla/Thunderbird/Thunderbird_extensions/Building_a_Thunderbird_extension_3:_install_manifest
+---
+<p>{{AddonSidebar}}</p>
+
+<p>Die <code>install.rdf</code> Datei ist eine XML-Datei<span class="tlid-translation translation"><span title="">, die allgemeine Informationen zur Erweiterung enthält.</span></span> <span style="line-height: 1.5;"> </span></p>
+
+<p>Öffne die Datei namens <code>install.rdf</code>, <span class="tlid-translation translation"><span title="">die du oben in der Erweiterungsverzeichnishierarchie erstellt haben, und füge den folgenden Text in die Datei ein:</span></span></p>
+
+<pre class="brush: xml">&lt;?xml version="1.0"?&gt;
+
+&lt;RDF xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:em="http://www.mozilla.org/2004/em-rdf#"&gt;
+
+ &lt;Description about="urn:mozilla:install-manifest"&gt;
+ &lt;em:id&gt;myfirstext@jen.zed&lt;/em:id&gt;
+ &lt;em:name&gt;My First Extension&lt;/em:name&gt;
+ &lt;em:version&gt;1.0&lt;/em:version&gt;
+ &lt;em:creator&gt;jenzed&lt;/em:creator&gt;
+
+ &lt;em:targetApplication&gt;
+ &lt;Description&gt;
+ &lt;em:id&gt;{3550f703-e582-4d05-9a08-453d09bdfdc6}&lt;/em:id&gt;
+ &lt;em:minVersion&gt;1.5&lt;/em:minVersion&gt;
+ &lt;em:maxVersion&gt;5.0.*&lt;/em:maxVersion&gt;
+ &lt;/Description&gt;
+ &lt;/em:targetApplication&gt;
+
+ &lt;/Description&gt;
+&lt;/RDF&gt;
+</pre>
+
+<p> Die folgende Elemente (Fett markiert) sollten für deine Erweiterung verändert werden:</p>
+
+<ul>
+ <li><code><strong>&lt;em:id&gt;<a class="link-mailto" href="mailto:myfirstext@jen.zed" rel="freelink">myfirstext@jen.zed</a>&lt;/em:id&gt;</strong></code>: Das ist die ID der Erweiterung. <span class="tlid-translation translation"><span title="">Der erste Teil ist der Kurzname der Erweiterung und muss in Kleinbuchstaben angegeben werden</span></span>; <span class="tlid-translation translation"><span title="">Der letzte Teil ist ein aus zwei Teilen bestehender, durch Punkte begrenzter Wert, z. B. Dein Vor- und Nachname oder die Top-Level-Domain deiner Website</span></span>. <span class="tlid-translation translation"><span title="">Dieser Wert hat zwar das E-Mail-Adressformat, ist jedoch <em>keine</em> E-Mail-Adresse</span></span>. <span class="tlid-translation translation"><span title="">Es sollte jedoch ein einzigartiger Wert sein, damit er nicht mit anderen Erweiterungen kollidiert.</span></span></li>
+ <li><code><strong>&lt;em:name&gt;My First Extension&lt;/em:name&gt;</strong></code>: <span class="tlid-translation translation"><span title="">Der Erweiterungsname wird im Erweiterungs-Manager von Thunderbird angezeigt.</span></span></li>
+ <li><code><strong>&lt;em:version&gt;1.0&lt;/em:version&gt;</strong></code>: <span class="tlid-translation translation"><span title="">Dies ist die Versionsnummer deiner Erweiterung</span></span>. <span class="tlid-translation translation"><span title="">Sie muss jedes Mal aktualisiert werden, wenn du eine neue Version deiner Erweiterung veröffentlichst</span></span>. <span class="tlid-translation translation"><span title="">Es ist <em>nicht </em>die Thunderbird-Versionsnummer (die in den Feldern <code>minVersion </code>und <code>maxVersion </code>gespeichert ist).</span></span></li>
+ <li><code><strong>&lt;em:creator&gt;jenzed&lt;/em:creator&gt;</strong></code>: <span class="tlid-translation translation"><span title="">Dieser optionale Wert wird zum Speichern des Namens des Erweiterungsautors verwendet.</span></span></li>
+ <li><code><strong>&lt;em:id&gt;{3550f703-e582-4d05-9a08-453d09bdfdc6}&lt;/em:id&gt;</strong></code>: <span class="tlid-translation translation"><span title="">Dieses Element enthält die Versions-ID der Anwendung, für die diese Erweiterung entwickelt wurde</span></span>.  <span class="tlid-translation translation"><span title="">Es wird von Mozilla definiert.</span></span>
+ <div class="text-wrap tlid-copy-target">
+ <div class="tlid-transliteration-content transliteration-content full"><span class="tlid-translation translation"><span title="">Eine Liste der gültigen Anwendungs-IDs findest du </span></span><a class="link-https" href="https://addons.mozilla.org/en-US/firefox/pages/appversions" title="https://addons.mozilla.org/en-US/firefox/pages/appversions">hier</a>. <span class="tlid-translation translation"><span title="">Normalerweise ändert sich die ID nicht und ist auch für verschiedene Thunderbird-Versionen immer gleich.</span></span></div>
+ </div>
+ </li>
+ <li><strong><code>&lt;em:minVersion&gt;1.5&lt;/em:minVersion&gt;</code></strong>: <span class="tlid-translation translation"><span title="">Dieses Element gibt die früheste Version von Thunderbird an, für die die Erweiterung funktioniert.</span></span> <span class="tlid-translation translation"><span title="">Verwende keine Platzhalter (wie <em><strong>*</strong></em>).</span></span> <span class="tlid-translation translation"><span title="">Eine Liste der unterstützten Versionsnummern und -formate findest du unter </span></span><a class="external" href="http://addons.mozilla.org/en-US/firefox/pages/appversions" title="http://addons.mozilla.org/en-US/firefox/pages/appversions">Gültige Anwendungsversionen</a>.</li>
+ <li><strong><code>&lt;em:maxVersion&gt;5.0.*&lt;/em:maxVersion&gt;</code></strong>: <span class="tlid-translation translation"><span title="">Dieses Element gibt die neueste Version von Thunderbird an, für die die Erweiterung funktioniert</span></span>. <span class="tlid-translation translation"><span title="">Dies kann nicht höher sein als die aktuell verfügbare Version.</span></span> <span class="tlid-translation translation"><span title="">Hier sind Platzhalter (wie <strong><em>*</em></strong>) erlaubt. </span></span><span class="tlid-translation translation"><span title="">"<em>5.0. *</em>" Zeigt an, dass die Erweiterung mit Thunderbird 5.0 und allen nachfolgenden 5.0.x-Versionen funktioniert.</span></span> <span class="tlid-translation translation"><span title="">Eine Liste der unterstützten Versionsnummern und -formate findest du unter </span></span><a class="external" href="http://addons.mozilla.org/en-US/firefox/pages/appversions" title="http://addons.mozilla.org/en-US/firefox/pages/appversions">Gültige Anwendungsversionen</a>.</li>
+</ul>
+
+<p><span class="tlid-translation translation"><span title="">Es gibt weitere optionale Elemente, die in <code>install.rdf</code> angegeben werden können.</span></span> <span class="tlid-translation translation"><span title="">Diese werden auf der Seite </span></span><a class="internal" href="/en/Install_Manifests" title="en/Install Manifests">Installationsmanifeste</a> <span class="tlid-translation translation"><span title="">beschrieben.</span></span> <span class="tlid-translation translation"><span title="">Beachte, dass Elemente in beliebiger Reihenfolge angegeben werden können, solange sie dem Knoten <code>&lt;Description&gt;</code> untergeordnet sind.</span></span></p>
+
+<p>{{ Previous("Mozilla/Thunderbird/Thunderbird_extensions/Eine_Thunderbird-Erweiterung_programmieren_2:_Erweiterungs-Dateisystem") }}</p>
+
+<p>{{ Next("Mozilla/Thunderbird/Thunderbird_extensions/Eine_Thunderbird-Erweiterung_programmieren_4:_Chrome_Manifest") }}</p>
diff --git a/files/de/mozilla/thunderbird/thunderbird_extensions/building_a_thunderbird_extension_7_colon__installation/index.html b/files/de/mozilla/thunderbird/thunderbird_extensions/building_a_thunderbird_extension_7_colon__installation/index.html
new file mode 100644
index 0000000000..4448e0b311
--- /dev/null
+++ b/files/de/mozilla/thunderbird/thunderbird_extensions/building_a_thunderbird_extension_7_colon__installation/index.html
@@ -0,0 +1,58 @@
+---
+title: 'Eine Thunderbird-Erweiterung programmieren 7: Installation'
+slug: >-
+ Mozilla/Thunderbird/Thunderbird_extensions/Building_a_Thunderbird_extension_7:_Installation
+translation_of: >-
+ Mozilla/Thunderbird/Thunderbird_extensions/Building_a_Thunderbird_extension_7:_Installation
+---
+<p>{{AddonSidebar}}</p>
+
+<p>Während du die Erweiterung entwickelst, gibt es zwei Möglichkeiten, wie du Thunderbird die Erweiterung laden lässt, um sie zu testen. Du kannst den Ordner mit den Erweiterungsdateien entweder direkt im Erweiterungsordner von Thunderbird ablegen oder eine Datei dort ablegen, die Thunderbird mitteilt, wo sich deine Erweiterung befindet. (In Schritt 8 erfährst Du, wie Du eine .xpi-Datei für die Veröffentlichung und Installation erstellst.)</p>
+
+<p><span class="tlid-translation translation"><span title="">Um den Erweiterungsordner von Thunderbird zu finden, navigiere zum Profilverzeichnis von Thunderbird und öffne den Ordner extensions /.</span></span> <span class="tlid-translation translation"><span title="">Je nach Betriebssystem befindet es sich an einem der folgenden Speicherorte:</span></span></p>
+
+<ul>
+ <li><span style="font-family: helvetica;"><strong>Windows:</strong></span> <code><span class="nowiki">%APPDATA%\Thunderbird\Profiles\&lt;Profile Name&gt;\extensions\</span></code></li>
+ <li><span style="font-family: helvetica;"><strong>Linux:</strong></span> <code><span class="nowiki">~/.thunderbird/&lt;Profile Name&gt;/extensions/</span></code></li>
+ <li><span style="font-family: helvetica;"><strong>MAC:</strong></span> <code><span class="nowiki">~/Library/Thunderbird/Profiles/&lt;Profile Name&gt;/extensions/</span></code></li>
+</ul>
+
+<div class="note">Um sicherzustellen, dass deine aktuellen E-Mails und Einstellungen während des Tests nicht durcheinander geraten, ist es sicherer, bei der Entwicklung von Erweiterungen ein Testprofil anstelle deines Standardprofils zu verwenden. <span class="tlid-translation translation"><span title="">In diesem <a href="http://mzl.la/1ml3Fmj">Artikel</a> der Mozilla-Knowledgedatenbank erfahren Sie, wie Sie mehrere Profile einrichten.</span></span></div>
+
+<div class="note"><span class="tlid-translation translation"><span title="">Wenn das Verzeichnis extensions/ noch nicht existiert, musst du es erstellen.</span></span></div>
+
+<p><strong><span class="tlid-translation translation"><span title="">Verwenden einer Textdatei zum Verweisen auf deine Erweiterungsdateien (empfohlen):</span></span></strong></p>
+
+<ol>
+ <li>Wenn Du deine Erweiterung in einem anderen Ordner entwickelst (z.B. "...\Dokumente\Code\Thunderbird Erweiterungen\<strong>myfirstext@jen.zed</strong>\"), kannst Du eine Textdatei im Ordner extensions/ erstellen, die auf deine Erweiterung verweist. <span class="tlid-translation translation"><span title="">Der Name der Textdatei muss genau dem Wert von <code>&lt;em:id&gt;</code> aus <strong>install.rdf </strong>entsprechen.</span></span> <span class="tlid-translation translation"><span title="">In unserem Fall erhält die Datei den Namen <code><strong>myfirstext@jen.zed</strong></code>.</span></span></li>
+ <li><span class="tlid-translation translation"><span title="">Die Datei muss eine einzige Zeile mit dem absoluten Pfad der Erweiterung enthalten.</span></span>
+ <div class="text-wrap tlid-copy-target">
+ <div class="result-shield-container tlid-copy-target"><span class="tlid-translation translation"><span title="">Der Ordner, auf den verwiesen wird, muss mit dem Wert von<code> &lt;em: id&gt;</code> von <strong>install.rdf</strong> <strong>identisch </strong>sein.</span></span></div>
+
+ <div class="result-shield-container tlid-copy-target"><span class="tlid-translation translation"><span title="">.</span></span><code>C:\Users\&lt;Nutzername&gt;\Documents\Code\Thunderbird Erweiterungen\<strong>myfirsttext@jen.zed</strong>\</code></div>
+ </div>
+ </li>
+</ol>
+
+<p><strong><span class="tlid-translation translation"><span title="">Die Erweiterungsdatei direkt in den Erweiterungsordner einfügen (Alternativ):</span></span></strong></p>
+
+<ol>
+ <li>Nachdem du den Ordner extensions/ geöffnet hast, erstelle einen Unterordner mit dem Namen deiner Erweiterung. Dieser Name muss genau der ID des Feldes <code>&lt;em:id&gt;</code> in der Datei <strong>install.rdf </strong>entsprechen.<span class="tlid-translation translation"><span title=""> In unserem Fall heißt der Ordner: <code>myfirstext@jen.zed/</code>.</span></span> <span class="tlid-translation translation"><span title="">Je nach Format Ihrer ID kann der Ordnername auch eine </span></span> <a href="/en/Generating_GUIDs" title="en/Generating GUIDs">GUID</a> <span class="tlid-translation translation"><span title=""> sein.</span></span></li>
+</ol>
+
+<p><span class="tlid-translation translation"><span title="">Jetzt können Sie Thunderbird starten.</span> <span title="">Thunderbird wird die Erweiterung erkennen und versuchen, sie zu laden.</span></span></p>
+
+<p>Informationen zum Einrichten eines Entwicklerprofils und zum Aktivieren von Debugging-Funktionen findest Du unter <a href="/en/Setting_up_extension_development_environment" title="en/Setting_up_extension_development_environment">Setting up extension development environment</a>.</p>
+
+<p>Du kannst jetzt zurückgehen und Änderungen an der <code>.xul</code>-Datei vornehmen. Wenn Du Thunderbird schließst und neu startest, sollten sie angezeigt werden.</p>
+
+<ul>
+</ul>
+
+<div class="note">
+<div class="text-wrap tlid-copy-target">
+<div class="tlid-transliteration-content transliteration-content full"><span class="tlid-translation translation"><span title="">Es besteht auch die Möglichkeit, Thunderbird mit dem Firefox-Debugger zu Remote-debuggen.</span></span> In diesem <a href="https://developer.mozilla.org/en-US/docs/Tools/Remote_Debugging/Thunderbird">Artikel</a> der Mozilla-Knowledgedatenbank erfährst du, wie du das Remote-Debugging einrichtest.</div>
+</div>
+</div>
+
+<p>{{ PreviousNext("Mozilla/Thunderbird/Thunderbird_extensions/Eine_Thunderbird-Erweiterung_programmieren_6:_Javascript_hinzufuegen", "Mozilla/Thunderbird/Thunderbird_extensions/Building_a_Thunderbird_extension_8:_packaging") }}</p>
diff --git a/files/de/mozilla/thunderbird/thunderbird_extensions/building_a_thunderbird_extension_8_colon__packaging/index.html b/files/de/mozilla/thunderbird/thunderbird_extensions/building_a_thunderbird_extension_8_colon__packaging/index.html
new file mode 100644
index 0000000000..d33997f94e
--- /dev/null
+++ b/files/de/mozilla/thunderbird/thunderbird_extensions/building_a_thunderbird_extension_8_colon__packaging/index.html
@@ -0,0 +1,24 @@
+---
+title: 'Eine Thunderbird-Erweiterung programmieren 8: Packaging'
+slug: >-
+ Mozilla/Thunderbird/Thunderbird_extensions/Building_a_Thunderbird_extension_8:_packaging
+translation_of: >-
+ Mozilla/Thunderbird/Thunderbird_extensions/Building_a_Thunderbird_extension_8:_packaging
+---
+<p>{{AddonSidebar}}</p>
+
+<p><span class="tlid-translation translation"><span title="">Wenn Du mit den Funktionen deiner Erweiterung zufrieden bist, packe sie für die Bereitstellung und Installation.</span></span></p>
+
+<p><span class="tlid-translation translation"><span title="">Zipe den Inhalt des Erweiterungsordners (nicht den Erweiterungsordner selbst) und benenne die ZIP-Datei um, so dass sie die Endung .xpi hat.</span></span> <span class="tlid-translation translation"><span title="">In Windows 7 wähle alle Dateien und Unterordner im Erweiterungsordner aus, klicke mit der rechten Maustaste und wähle "Senden an -&gt; Komprimierter (gezippter) Ordner". E</span></span><span class="tlid-translation translation"><span title="">ine ZIP-Datei wird erstellt.</span> <span title="">Umbenennen und fertig!</span></span></p>
+
+<p>Unter Mac OS X kannst Du mit der rechten Maustaste auf den Inhalt des Erweiterungsordners klicken und "Archiv erstellen ..." wählen, um die ZIP-Datei zu erstellen. Seit Mac OS X zum Verfolgen von Dateimetadaten ausgeblendete Dateien in Ordner hinzufügte, solltest Du stattdessen das Terminal verwenden, die versteckten Dateien löschen (deren Namen mit einem Punkt beginnen) und dann den Befehl zip in der Befehlszeile zum Erstellen der Zip-Datei verwenden. <span class="tlid-translation translation"><span title="">Die Dateien haben normalerweise den Namen .DS_Store.</span></span></p>
+
+<p>Unter Linux solltest Du ebenfalls das Befehlszeilen-Zip-Tool verwenden.</p>
+
+<pre class="eval"> cd ~/Erweiterungen/Meine_Erweiterungen
+ zip -r ../sample.xpi *
+</pre>
+
+<p>Wenn er in das Verzeichnis (Benutzerprofil)/extension eingefügt wird, öffnet Thunderbird die xpi-Datei, überprüft die ID in der Datei <code>install.rdf</code> und erstellt dieses Verzeichnis für Ihr Package. Es wird dann in dieses Verzeichnis kopiert und die Dateien werden entpackt, wodurch eine Kopie deiner <code>~/Erweiterung/Meine_Erweiterungen</code>-Verzeichnisstruktur und -Dateien erstellt wird.</p>
+
+<p>{{ PreviousNext("Mozilla/Thunderbird/Thunderbird_extensions/Building_a_Thunderbird_extension_7:_Installation", "Mozilla/Thunderbird/Thunderbird_extensions/Building_a_Thunderbird_extension_9:_distributing") }}</p>
diff --git a/files/de/mozilla/thunderbird/thunderbird_extensions/building_a_thunderbird_extension_9_colon__distributing/index.html b/files/de/mozilla/thunderbird/thunderbird_extensions/building_a_thunderbird_extension_9_colon__distributing/index.html
new file mode 100644
index 0000000000..8177b45f65
--- /dev/null
+++ b/files/de/mozilla/thunderbird/thunderbird_extensions/building_a_thunderbird_extension_9_colon__distributing/index.html
@@ -0,0 +1,24 @@
+---
+title: 'Eine Thunderbird-Erweiterung programmieren 9: Verbreitung'
+slug: >-
+ Mozilla/Thunderbird/Thunderbird_extensions/Building_a_Thunderbird_extension_9:_distributing
+translation_of: >-
+ Mozilla/Thunderbird/Thunderbird_extensions/Building_a_Thunderbird_extension_9:_distributing
+---
+<p>{{AddonSidebar}}</p>
+
+<h2 class="editable" id="Verwenden_von_addons.mozilla.org">Verwenden von addons.mozilla.org</h2>
+
+<p>Die Website <a href="http://addons.mozilla.org/en-US/thunderbird">addons.mozilla.org</a> ist eine Veröffentlichungssite, auf der Du deine Erweiterung kostenlos hosten kannst. Deine Erweiterung wird im Mirror-Netzwerk von Mozilla gehostet werden. Die Mozilla-Site bietet Benutzern eine einfachere Installation und stellt Benutzern deiner älteren Versionen automatisch neue Versionen zur Verfügung, wenn Du sie hochlädst. Darüber hinaus können Benutzer mit Mozilla Update deine Erweiterung kommentieren und Feedback geben.Es ist empfohlen, AMO zu verwenden.</p>
+
+<p>Besuche <a href="http://addons.mozilla.org/developers/">http://addons.mozilla.org/developers/</a>, um ein Konto zu erstellen und mit dem Veröffentlichen deiner Erweiterungen zu beginnen. Beachte, dass deine Erweiterung schneller genehmigt und häufiger heruntergeladen wird, wenn Du eine gute Beschreibung und Screenshots der Erweiterung in Aktion hast.</p>
+
+<h2 class="editable" id="Installation_von_einer_Webseite">Installation von einer Webseite</h2>
+
+<p>Es gibt verschiedene Möglichkeiten, Erweiterungen von Webseiten zu installieren, einschließlich der direkten Verknüpfung mit den XPI-Dateien und der Verwendung des InstallTrigger-Objekts. Erweiterungs- und Web-Autoren sollten die <a href="https://developer.mozilla.org/de/en/Installing_Extensions_and_Themes_From_Web_Pages">InstallTrigger-Methode</a> zum Installieren von XPIs verwenden, da sie den Benutzern die beste Benutzererfahrung bietet.</p>
+
+<h3 class="editable" id="Registrieren_von_Erweiterungen_in_der_Windows-Registry">Registrieren von Erweiterungen in der Windows-Registry</h3>
+
+<p>Unter Windows können der Registry Informationen zu Erweiterungen hinzugefügt werden. Die Erweiterungen werden beim nächsten Start der Anwendung automatisch abgerufen. Auf diese Weise können Anwendungsinstallationsprogramme Integrations-Hooks als Erweiterungen hinzufügen. Weitere Informationen finden Sie unter <a href="https://developer.mozilla.org/de/en/Adding_Extensions_using_the_Windows_Registry">Adding Extensions using the Windows Registry</a>.</p>
+
+<p>{{ Previous("Mozilla/Thunderbird/Thunderbird_extensions/Building_a_Thunderbird_extension_8:_packaging") }}</p>
diff --git a/files/de/mozilla/thunderbird/thunderbird_extensions/ein_thunderbird_addon_programmieren_5_colon__xul/index.html b/files/de/mozilla/thunderbird/thunderbird_extensions/ein_thunderbird_addon_programmieren_5_colon__xul/index.html
new file mode 100644
index 0000000000..4f227fe3d1
--- /dev/null
+++ b/files/de/mozilla/thunderbird/thunderbird_extensions/ein_thunderbird_addon_programmieren_5_colon__xul/index.html
@@ -0,0 +1,43 @@
+---
+title: 'Eine Thunderbird-Erweiterung programmieren 5: XUL'
+slug: >-
+ Mozilla/Thunderbird/Thunderbird_extensions/Ein_Thunderbird_Addon_programmieren_5:_XUL
+tags:
+ - Addons
+ - Erweiterung
+ - thunderbird
+translation_of: >-
+ Mozilla/Thunderbird/Thunderbird_extensions/Building_a_Thunderbird_extension_5:_XUL
+---
+<p>{{AddonSidebar}}</p>
+
+<p>Thunderbirds Nutzerinterface ist in<a href="/en/XUL" title="https://developer.mozilla.org/en/XUL"> XUL </a>und <a href="/en/JavaScript" title="https://developer.mozilla.org/en/JavaScript">JavaScript</a> geschrieben. XUL ist eine XML Art, die Nutzerinterfacewidgets wie Knöpfe, Menüs, Toolbars, Trees etc. bietet. Wir fügen Widgets hinzu, indem wir neue XUL DOM Elemente in das Programmfenster hinzufügen und sie mit Scripts und angehängten Event Handlern modifizieren. Während XUL die Elemente des Nutzerinterfaces bietet, sind die Aktionen in JavaScript geschrieben.</p>
+
+<p>Bei unserer erster Erweiterung fügen wir Text in die Thunderbird Statusbar ein. Die Statusbar ist ist in einer XUL Datei namens <code>messenger.xul</code> implementiert, die sich im <code>chrome/messenger/content/messenger</code>  Ordner innerhalb des <a href="/en/About_omni.jar" title="en/About omni.jar">omni.ja</a> Archives befindet. Um diese XUL Datei lesen zu können, nutze die <s><a class="link-https" href="https://addons.mozilla.org/en-US/thunderbird/addon/dom-inspector/" title="https://addons.mozilla.org/en-US/thunderbird/addon/dom-inspector/">DOM</a></s><a class="link-https" href="https://addons.mozilla.org/en-US/thunderbird/addon/dom-inspector/" title="https://addons.mozilla.org/en-US/thunderbird/addon/dom-inspector/"> </a><s><a class="link-https" href="https://addons.mozilla.org/en-US/thunderbird/addon/dom-inspector/" title="https://addons.mozilla.org/en-US/thunderbird/addon/dom-inspector/">Inspector</a></s> <s>Erweiterung</s> (Nicht mehr ünterstützt) oder schau in das <a href="/en/About_omni.jar" title="en/About omni.jar">omni.ja</a> Archiv, welches sich im Thunderbird Programmordner befindet. omni.ja kann ganz einfach durchsucht werden, indem man die Datei an einen anderen Speicherplatz kopiert und sie in omni.zip umbenennt. Solltest du mit einem Zip Manager Probleme haben (wie 7Zip), nutze einen anderen (wie WinRAR). In <code>messenger.xul</code> finden wir die Statusbar, welche ungefähr so ausschaut:</p>
+
+<pre class="brush: xml">&lt;statusbar id="status-bar" ...&gt;
+ ... &lt;statusbarpanel&gt;s ...
+&lt;/statusbar&gt;
+</pre>
+
+<p><span class="nowiki"><code>&lt;statusbar id="status-bar"&gt;</code></span> ist ein "Zusammenführungspunkt" für ein XUL Overlay. <a href="../../../../en/XUL_Overlays" rel="internal">XUL Overlays</a> sind eine Methode, andere UI Widgets zu einem XUL Dokument anzuhängen, sobald die Erweiterung startet. Ein XUL Overlay ist eine <code>.xul</code> Datei die XUL-Fragmente spezifiziet, um sie bei bestimmten Zussamenführungspunkten innerhalb eines <strong>"</strong>Haupt<strong>"-</strong>Dokuments" einzufügen. Diese Fragmente können Widgets zum Einfügen, Entfernen oder Bearbeiten spezifizieren. In diesem Beispiel fügst du eine Linie der Statusbar hinzu. Deshalb wird es <span class="tlid-translation translation"><span title="">zu einem Element mit der ID "Statusleiste".</span></span> Das zeigt, wie die Thunderbirdarchitektur Erweiterungen erlaubt, die Nutzererfahrung zu ändern, ohne dabei die Installationsdateien zu ändern. Das erlaubt auch Versionsunabhängigkeit zwischen Thunderbird und Thunderbird-Erweiterungen.</p>
+
+<p><strong>Beispiel XUL Overlay Dokument</strong></p>
+
+<p>Erstelle eine neue Datei namens <code><strong>myhelloworld.xul</strong></code> innerhalb des <code>content</code> Ordners, den du vorhin erstellt hast, mit folgendem Inhalt:</p>
+
+<pre class="brush: html">&lt;?xml version="1.0"?&gt;
+&lt;overlay id="sample"
+xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"&gt;
+ &lt;script type="application/javascript" src="chrome://myfirstext/content/overlay.js"/&gt;&lt;!-- A reference to your JavaScript file --&gt;
+ &lt;statusbar id="status-bar"&gt;
+ &lt;statusbarpanel id="my-panel" label="Date"/&gt;
+ &lt;/statusbar&gt;
+&lt;/overlay&gt;
+</pre>
+
+<p>Das <span class="nowiki"><code>&lt;statusbar</code>&gt;</span> Widget names <code><strong>status-bar</strong></code> spezifiziert den Zusammenführungspunkt innerhalb des Programmfensters, das wir anhängen wollen. Wenn unsere Overlay Datei geparsed wird, nimmt die XUL Engine alle Unterelemente des &lt;statusbar&gt; Tags und führt die mit dem orginalen XUL Dokuments <span class="nowiki">&lt;statusbar&gt;</span> Tag zusammen. In dem Bespiel überhalb haben wir ein neues &lt;statusbarpanel&gt; Element definiert (Das als <strong><code>my-panel</code></strong> bezeichnet wird), das eine neue Instanz dieses Widgettyps erstellt und am Ende der Statusbar hinbaut. In Thunderbird erscheint es als Label auf der rechten Seite der Statusbar von Thunderbird und zeigt "Date" an.  Wir haben auch einen &lt;script&gt; Tag geschrieben, der eine Refezenz zur JavaScript Datei <strong><code>overlay.js</code></strong> beinhaltet. In der nächsten Sektion wirst du lernen, wie du JavaScript nutzt um dein Label so zu modifizieren, dass es das momentane Datum anzeigt.</p>
+
+<div class="note">Die <strong>overlay.js</strong> Datei wird in einer späteren Sektion erstellt. Deine Erweiterung wird auch ohne diese Datei funktionieren. Momentan kannst du diese Linie ignorieren, aber erinnere dich daran, dass das hier ist, wie du auf eine JavaScript Datei verweist.</div>
+
+<p>{{ PreviousNext("Mozilla/Thunderbird/Thunderbird_extensions/Eine_Thunderbird-Erweiterung_programmieren_4:_Chrome_Manifest", "Mozilla/Thunderbird/Thunderbird_extensions/Eine_Thunderbird-Erweiterung_programmieren_6:_Javascript_hinzufuegen") }}</p>
diff --git a/files/de/mozilla/thunderbird/thunderbird_extensions/eine_thunderbird-erweiterung_programmieren_2_colon__erweiterungs-dateisystem/index.html b/files/de/mozilla/thunderbird/thunderbird_extensions/eine_thunderbird-erweiterung_programmieren_2_colon__erweiterungs-dateisystem/index.html
new file mode 100644
index 0000000000..f023c7b8c8
--- /dev/null
+++ b/files/de/mozilla/thunderbird/thunderbird_extensions/eine_thunderbird-erweiterung_programmieren_2_colon__erweiterungs-dateisystem/index.html
@@ -0,0 +1,31 @@
+---
+title: 'Eine Thunderbird-Erweiterung programmieren 2: Erweiterungs-Dateisystem'
+slug: >-
+ Mozilla/Thunderbird/Thunderbird_extensions/Eine_Thunderbird-Erweiterung_programmieren_2:_Erweiterungs-Dateisystem
+translation_of: >-
+ Mozilla/Thunderbird/Thunderbird_extensions/Building_a_Thunderbird_extension_2:_extension_filesystem
+---
+<p>{{AddonSidebar}}</p>
+
+<p>Erweiterungen sind in Archiv-Dateien (Auch <a href="../../../../en/Bundles" rel="internal">Bundles</a> genannt) mit der <code>XPI</code> (<em> “zippy”</em> <em>ausgesprochen</em>)-Dateiendung gepackt und verteilt. Sie enthalten mindestens eine <strong>install.rdf</strong>, ein <strong>chrome.manifest</strong> und einen <em>"</em><strong>chrome/</strong> Ordner. Ein <strong>content/</strong> Ordner enthält manchmal die eigentlichen Kontentdateien. Diese Dateien enthalten den Code, der deine Erweiterung etwas machen lässt. Wenn dieses Tutorial fertig ist, wird unsere Erweiterung so ausschauen:</p>
+
+<pre class="eval">myfirstext.xpi:   //Erstellt in Schritt 8
+ /install.rdf //Erstellt in Schritt 3
+ /chrome.manifest //Erstellt in Schritt 4
+ /chrome/
+ /content/
+ /content/myhelloworld.xul //Erstellt in Schritt 5
+ /content/overlay.js //Erstellt in Schritt 6
+ /chrome/locale/* //<span class="tlid-translation translation"><span title="">Erstellen einer Erweiterungs</span></span><a href="/en/Building_an_Extension#Localization" title="https://developer.mozilla.org/en/Building_an_Extension#Localization">lokalisierung</a>
+              /chrome/skin/
+ /defaults/preferences/        // <span class="tlid-translation translation"><span title="">Erstellen von Erweiterungs-Standarddateien</span></span>
+</pre>
+
+<p>Die folgende Tutorialseiten werden erklären, wie man jede dieser Dateien schreibt (Außer <strong>locale/</strong> und <strong>defaults/</strong>) und sie in eine XPI (zippy) Datei packt. Du kannst Informationen über die <strong>locale/</strong> und <strong>defaults/</strong> Ordner in der allgemeineren "<a href="/en/Building_an_Extension" title="en/Building an Extension"><strong>Building an Extension</strong></a>" Dokumentation.</p>
+
+<p>Um mit dem Tutorial zu starten, <span class="tlid-translation translation"><span title="">erstelle manuell die anfängliche Verzeichnisstruktur für die Erweiterung, wie sie oben in einem Ordner namens <code>myfirstext@jen.zed</code> dargestellt ist.</span></span> <span class="tlid-translation translation"><span title="">Dieses Verzeichnis kann an einem beliebigen Ort im Dateisystem erstellt werden.</span></span></p>
+
+<p><br>
+ {{ Previous("Mozilla/Thunderbird/Thunderbird_extensions/Building_a_Thunderbird_extension") }}</p>
+
+<p>{{ Next("Mozilla/Thunderbird/Thunderbird_extensions/Building_a_Thunderbird_extension_3:_install_manifest") }}</p>
diff --git a/files/de/mozilla/thunderbird/thunderbird_extensions/eine_thunderbird-erweiterung_programmieren_4_colon__chrome_manifest/index.html b/files/de/mozilla/thunderbird/thunderbird_extensions/eine_thunderbird-erweiterung_programmieren_4_colon__chrome_manifest/index.html
new file mode 100644
index 0000000000..639204a1ef
--- /dev/null
+++ b/files/de/mozilla/thunderbird/thunderbird_extensions/eine_thunderbird-erweiterung_programmieren_4_colon__chrome_manifest/index.html
@@ -0,0 +1,44 @@
+---
+title: 'Eine Thunderbird-Erweiterung programmieren 4: Chrome Manifest'
+slug: >-
+ Mozilla/Thunderbird/Thunderbird_extensions/Eine_Thunderbird-Erweiterung_programmieren_4:_Chrome_Manifest
+tags:
+ - Addons
+ - Extensions
+ - thunderbird
+translation_of: >-
+ Mozilla/Thunderbird/Thunderbird_extensions/Building_a_Thunderbird_extension_4:_chrome_manifest
+---
+<p>{{AddonSidebar}}</p>
+
+<p>Die Datei namens <code>chrome.manifest</code> <span class="tlid-translation translation"><span title="">teilt Thunderbird mit, welche Packages und Overlays von der Erweiterung bereitgestellt werden.</span></span> <span class="tlid-translation translation"><span title="">Öffne die von dir erstellte Datei <code>chrome.manifest</code> und füge diesen Code hinzu:</span></span></p>
+
+<pre class="eval">content myfirstext content/
+</pre>
+
+<ul>
+ <li><code><strong>content</strong></code> <span class="tlid-translation translation"><span title="">gibt die Art des Materials in der Verpackung an.</span></span></li>
+ <li><code><strong>myfirstext</strong></code> <span class="tlid-translation translation"><span title="">ist der Name des Chrome-Packages (im ersten Segment von <code>&lt;em: id&gt;</code> in der Datei <code>install.rdf</code> angegeben).</span></span></li>
+ <li><code><strong>content/</strong></code>  <span class="tlid-translation translation"><span title="">Gibt den Speicherort der Packagedateien an und wird beim Auflösen der URI <code>chrome://myfirstext/content /...</code> verwendet.</span></span></li>
+</ul>
+
+<p><span class="tlid-translation translation"><span title="">Diese Zeile besagt, dass wir für ein Chrome-Package <code><strong>myfirstext</strong></code> die <strong>Kontent</strong>dateien im Verzeichnis <code>content/</code> finden können (das ist ein Pfad relativ zum Speicherort von <code>chrome.manifest</code>).</span></span></p>
+
+<p><span class="tlid-translation translation"><span title="">Um die Thunderbird-Benutzeroberfläche so zu ändern, dass sie die Erweiterung unterstützt, erstelle ein Overlay und führe es mit dem Standard Thunderbird-Interface zusammen.</span></span> <span class="tlid-translation translation"><span title="">Im weiteren Verlauf des Tutorials werden wir eine XUL-Overlay-Datei erstellen, die mit der Standarddatei <code>messenger.xul</code> zusammengeführt wird.</span></span> <span class="tlid-translation translation"><span title="">An dieser Stelle legen wir in <code>chrome.manifest</code> die Existenz des Overlays fest (das wir später erstellen werden).</span></span></p>
+
+<div class="tlid-result-transliteration-container result-transliteration-container transliteration-container">
+<div class="tlid-transliteration-content transliteration-content full"> </div>
+</div>
+
+<p><span class="tlid-translation translation"><span title="">Füge diese Zeile am Ende von <code>chrome.manifest</code> hinzu:</span></span></p>
+
+<div id="section_8">
+<pre class="eval">overlay <a class="external" rel="freelink">chrome://messenger/content/messenger.xul</a> <a class="external" rel="freelink">chrome://myfirstext/content/myhelloworld.xul</a>
+</pre>
+
+<p><span class="tlid-translation translation"><span title="">Dies sagt Thunderbird, dass <code>myhelloworld.xul</code> beim Laden von <code>messenger.xul</code> mit <code>messenger.xul</code> zusammengeführt wird.</span></span> <span class="tlid-translation translation"><span title="">Weitere Informationen zu Chrome-Manifesten und den unterstützten Eigenschaften findest du in der </span></span><a href="../../Chrome_Registration" rel="internal">Chrome-Manifest</a>referenz.</p>
+</div>
+
+<div class="note"><s><span class="tlid-translation translation"><span title="">Es</span></span></s><span class="tlid-translation translation"><span title=""> </span></span><s><span class="tlid-translation translation"><span title="">kann</span></span></s><span class="tlid-translation translation"><span title=""> </span></span><s><span class="tlid-translation translation"><span title="">hilfreich</span></span></s><span class="tlid-translation translation"><span title=""> </span></span><s><span class="tlid-translation translation"><span title="">sein</span></span></s><span class="tlid-translation translation"><span title="">, </span></span><s><span class="tlid-translation translation"><span title="">eine</span></span></s><span class="tlid-translation translation"><span title=""> </span></span><s><span class="tlid-translation translation"><span title="">Erweiterung</span></span></s><span class="tlid-translation translation"><span title=""> </span></span><s><span class="tlid-translation translation"><span title="">wie</span></span></s><span class="tlid-translation translation"><span title=""> </span></span><s><span class="tlid-translation translation"><span title="">den</span></span></s> <s><a href="/en/DOM_Inspector" title="en/DOM Inspector"><strong>DOM</strong></a></s><a href="/en/DOM_Inspector" title="en/DOM Inspector"><strong> </strong></a><s><a href="/en/DOM_Inspector" title="en/DOM Inspector"><strong>Inspector</strong></a> </s><span class="tlid-translation translation"><span title=""><s>zu</s> <s>installieren</s>, <s>um</s> <s>das Layout</s> <s>der vorhandenen</s> <s>XUL</s>-<s>Dateien</s> <s>besser</s> <s>zu</s> <s>verstehen</s> <s>und</s> <s>eigene</s> <s>Overlays</s> <s>zu debuggen</s>.</span></span> <span class="tlid-translation translation"><span title="">(nicht unterstützt ab Thunderbird 60)</span></span></div>
+
+<p>{{ PreviousNext("Mozilla/Thunderbird/Thunderbird_extensions/Building_a_Thunderbird_extension_3:_install_manifest", "Mozilla/Thunderbird/Thunderbird_extensions/Ein_Thunderbird_Addon_programmieren_5:_XUL") }}</p>
diff --git a/files/de/mozilla/thunderbird/thunderbird_extensions/eine_thunderbird-erweiterung_programmieren_6_colon__javascript_hinzufuegen/index.html b/files/de/mozilla/thunderbird/thunderbird_extensions/eine_thunderbird-erweiterung_programmieren_6_colon__javascript_hinzufuegen/index.html
new file mode 100644
index 0000000000..959e9dc753
--- /dev/null
+++ b/files/de/mozilla/thunderbird/thunderbird_extensions/eine_thunderbird-erweiterung_programmieren_6_colon__javascript_hinzufuegen/index.html
@@ -0,0 +1,53 @@
+---
+title: 'Eine Thunderbird-Erweiterung programmieren 6: JavaScript hinzufügen'
+slug: >-
+ Mozilla/Thunderbird/Thunderbird_extensions/Eine_Thunderbird-Erweiterung_programmieren_6:_Javascript_hinzufuegen
+translation_of: >-
+ Mozilla/Thunderbird/Thunderbird_extensions/Building_a_Thunderbird_extension_6:_Adding_Javascript
+---
+<p>{{AddonSidebar}}</p>
+
+<p><span class="tlid-translation translation"><span title="">In diesem Schritt erstellen wir ein kleines Stück JavaScript-Code, der das aktuelle Datum ins Statusleisten-Widget einfügt.</span></span> <span class="tlid-translation translation"><span title="">Die Statusleiste wird normalerweise am unteren Rand des Thunderbird-Fensters angezeigt. Je nach installiertem </span></span><a class="external" href="http://addons.mozilla.org/en-US/thunderbird/themes/" title="http://addons.mozilla.org/en-US/thunderbird/themes/">Theme</a> <span class="tlid-translation translation"><span title="">sieht das Ergebnis etwa so aus:</span></span></p>
+
+<p style="margin-left: 40px;"><a href="/@api/deki/files/5567/=current_date.png" title="current_date.png"><img alt="current_date.png" class="default internal" src="/@api/deki/files/5567/=current_date.png?size=webview" style="height: 25px; width: 102px;"></a></p>
+
+<p><strong>XUL Elemente mit JavaScript modifizieren</strong></p>
+
+<div class="text-wrap tlid-copy-target">
+<div class="result-shield-container tlid-copy-target"><span class="tlid-translation translation"><span title="">Speichere den folgenden JavaScript-Code im <strong>content</strong>/ Ordner neben der Datei <strong><code>myhelloworld.xul</code></strong> und nenne ihn <code><strong>overlay.js</strong></code>.</span></span></div>
+</div>
+
+<pre class="brush: js">window.addEventListener("load", function(e) {
+ startup();
+}, false);
+
+window.setInterval(
+ function() {
+ startup();
+ }, 60000); //Aktualisiert das Datum jede Minute
+
+function startup() {
+ var myPanel = document.getElementById("my-panel");
+ var date = new Date();
+ var day = date.getDay();
+ var dateString = date.getFullYear() + "." + (date.getMonth()+1) + "." + date.getDate();
+ myPanel.label = "Date: " + dateString;
+}</pre>
+
+<p><span class="tlid-translation translation"><span title="">Der erste Teil registriert einen neuen Ereignis-Listener, der beim Laden von Thunderbird automatisch ausgeführt wird.</span></span> <span class="tlid-translation translation"><span title="">Der Ereignis-Listener ruft dann die <code>Startup</code>-Funktion auf, die unser <code>&lt;statusbarpanel&gt;</code> -Element mit der ID <strong>my-panel </strong>aus dem DOM-Tree des Dokuments erhält.</span></span><span class="tlid-translation translation"><span title="">Dann verwendet es die <code>Date</code>-Klasse von JavaScript, um das aktuelle Datum abzurufen, das in eine String konvertiert wird, der das Format <em>YYYY.MM.DD</em> hat.Da der Monat nullbasiert ist, müssen wir beim Monat eins addieren.</span></span> <span class="tlid-translation translation"><span title="">Schließlich wird das Label unseres Panels auf "Date:" gesetzt und mit der Datums-String verkettet, die das formatierte Datum enthält.</span></span></p>
+
+<p><span class="tlid-translation translation"><span title="">Wir verwenden die Funktion </span></span><a href="/en/DOM/window.setInterval" title="https://developer.mozilla.org/en/DOM/window.setInterval"><strong><code>window.setInterval</code></strong></a><span class="tlid-translation translation"><span title="">, um das Datum zu aktualisieren, falls Thunderbird länger als einen Tag läuft.</span></span>. <span class="tlid-translation translation"><span title="">Dadurch können wir die <code>Startup</code>-Funktion wiederholt mit einem Intervall von 60000 ms (jede Minute) aufrufen.</span></span></p>
+
+<h3 id="Weitere_Dokumentation">Weitere Dokumentation</h3>
+
+<p><span class="tlid-translation translation"><span title="">Weitere Funktionen für die DOM-Objekte findest du unter:</span></span></p>
+
+<ul>
+ <li><strong><a href="/en/DOM/window" title="en/DOM/Window">DOM/Window</a></strong> (<span class="tlid-translation translation"><span title="">API-Referenz für das Window-Objekt</span></span>)</li>
+ <li><strong><a href="/en/DOM/document" title="en/DOM/Document">DOM/Document</a></strong> (<span class="tlid-translation translation"><span title="">API-Referenz für das Document-Objekt</span></span>)</li>
+ <li><strong><a href="/en/Gecko_DOM_Reference" title="https://developer.mozilla.org/en/Gecko_DOM_Reference">Gecko DOM Reference</a></strong> (<span class="tlid-translation translation"><span title="">Übersicht aller DOM-Objekte in Gecko</span></span>)</li>
+</ul>
+
+<p><span class="tlid-translation translation"><span title="">Das </span></span><strong><a class="external" href="http://www.addedbytes.com/cheat-sheets/javascript-cheat-sheet/" title="http://www.addedbytes.com/cheat-sheets/javascript-cheat-sheet/">Javascript Cheat Sheet</a></strong><span class="tlid-translation translation"><span title=""> kann auch sehr nützlich sein.</span></span></p>
+
+<p>{{ PreviousNext("Mozilla/Thunderbird/Thunderbird_extensions/Ein_Thunderbird_Addon_programmieren_5:_XUL", "Mozilla/Thunderbird/Thunderbird_extensions/Building_a_Thunderbird_extension_7:_Installation") }}</p>
diff --git a/files/de/mozilla/thunderbird/thunderbird_extensions/index.html b/files/de/mozilla/thunderbird/thunderbird_extensions/index.html
new file mode 100644
index 0000000000..8dba5ff294
--- /dev/null
+++ b/files/de/mozilla/thunderbird/thunderbird_extensions/index.html
@@ -0,0 +1,138 @@
+---
+title: Thunderbird extensions
+slug: Mozilla/Thunderbird/Thunderbird_extensions
+tags:
+ - Add-ons
+ - Extensions
+ - NeedsTranslation
+ - TopicStub
+ - thunderbird
+translation_of: Mozilla/Thunderbird/Thunderbird_extensions
+---
+<div class="callout-box"><strong><a href="/en/Extensions/Thunderbird/Building_a_Thunderbird_extension" title="en/Building_a_Thunderbird_extension">Entwickeln einer Thunderbird Erweiterung</a></strong><br>
+Schritt-für-Schritt Anleitung zur Erstellung einer Erweiterung für Thunderbird.</div>
+
+<div>
+<p>{{AddonSidebar}}</p>
+Die nachfolgende Dokumentation dient als Hilfestellung zur Entwicklung von Erweiterungen für den <a class="internal" href="/en/Thunderbird" title="En/Thunderbird">Thunderbird</a> email client. Ähnlichkeiten zu den <a href="/en/Extensions" title="en/Extensions">Firefox extensions</a> sind vorhanden, jedoch ebenso Unterschiede die den zukünftigen Thunderbird Entwickler verwirren können. Diese Dokumentenreihe beschäftigt sich mit Thunderbird.</div>
+
+<div><br>
+Sie benötigen Hilfe zu einem spezifischen Thema? Fragen Sie die Community / Communications.</div>
+
+<div></div>
+
+<div><strong>Bitte helfen Sie!</strong> Sie können ein <a class="internal" href="/en/Extensions/Thunderbird/HowTos" title="en/Extensions/Thunderbird/HowTos">how-to</a> (eine Frage, eine Antwort, ein Codeschnipsel), <a class="internal" href="/en/Extensions/Thunderbird/Useful_newsgroups_discussions" title="En/Extensions/Thunderbird/Useful newsgroups discussions">eine relevante newsgroup Diksussion zusammenfassen und verlinken</a> oder ein Tutorial verfassen.</div>
+
+<div></div>
+
+<table class="topicpage-table">
+ <tbody>
+ <tr>
+ <td>
+ <h2 id="Documentation" name="Documentation"><a href="/Special:Tags?tag=Extensions&amp;language=de" title="Special:Tags?tag=Extensions&amp;language=de">Dokumentation</a></h2>
+
+ <h3 id="Erste_Schritte_mit_Thunderbird">Erste Schritte mit Thunderbird</h3>
+
+ <p>Ein mutiger, junger Entwickler möchte eine eine Erweiterung für Thunderbird entwickeln. Nachfolgende Links helfen ihm auf dieser Reise.  <u><strong>Hinweis: Diese Dokumentation wurde noch nicht für Version 60 aktualisiert.</strong></u></p>
+
+ <ul>
+ <li>Beginnen Sie mit dem Studium des Tutorials und lernen Sie, wie Sie eine <a class="internal" href="/en/Extensions/Thunderbird/Building_a_Thunderbird_extension" title="En/Building a Thunderbird extension">Thunderbird Erweiterung erstellen</a> können.<a class="internal" href="/en/Extensions/Thunderbird/Building_a_Thunderbird_extension" title="En/Building a Thunderbird extension"> </a> <strong>Beachten Sie auch den <a href="https://wiki.mozilla.org/Thunderbird/Add-ons_Guide_57">Thunderbird 57-60 add-ons guide</a> für mit Thunderbird 60 eingeführte Änderungen.</strong></li>
+ <li>Erfahren Sie mehr über die <a href="/en/Thunderbird/Main_Windows" title="Main Windows">Hauptfenster </a>und lernen Sie die « thread pane », « preview pane », und « folder pane » kennen.</li>
+ <li>Spielen Sie mit einem <a href="/en/Extensions/Thunderbird/Demo_Addon" title="Demo Addon">demo add-on</a> welches erweiterte Thunderbird-spezifische features bietet.</li>
+ <li>Sie möchten mehr tun?  Erfinden Sie nicht das Rad neu: bedienen Sie sich bei dem <a class="link-https" href="https://github.com/protz/thunderbird-stdlib" title="https://github.com/protz/thunderbird-stdlib">thunderbird-stdlib</a> Projekt (Doku <a class="external" href="http://protz.github.com/thunderbird-stdlib/doc/symbols/_global_.html" title="http://protz.github.com/thunderbird-stdlib/doc/symbols/_global_.html">hier</a>). Funktionen zum Umgang mit Nachrichten (löschen, archivieren, tags ändern, etc.) sind hier enthalten. <a href="https://dxr.mozilla.org/comm-central/source/mail/base/modules/MailUtils.js">MailUtils.js</a>.</li>
+ <li>Nicht das gefunden, was Sie benötigen? Lesen Sie die <a class="internal" href="/en/Extensions/Thunderbird/HowTos" rel="internal" title="en/Extensions/Thunderbird/HowTos">Thunderbird how-tos</a>; sie enthalten viele Vorgehensweisen für Dinge, die Erweiterungen tun möchten.</li>
+ <li>Sie hängen fest?  Fragen Sie in einem Kommunikationskanal (auf der rechten Seite) nach.</li>
+ <li>Richtig mutig? Lesen Sie den source in einer ausgefallenen Oberfläche <a class="external" href="http://doxygen.db48x.net/comm-central/html/" title="http://doxygen.db48x.net/comm-central/html/">fancy interface</a> (der Link ist tot); Sie können oftmals Tests finden, die zeigen was Sie versuchen zu erreichen.</li>
+ </ul>
+
+ <h3 id="Die_Gloda_Datenbank">Die Gloda Datenbank</h3>
+
+ <p>Thunderbird verfügt über ein subsystem Namens Gloda. Gloda steht für « Global Database », und erzeugt Thunderbird-weite Beziehungen zwischen Objekten. Gloda stellt Konzepte wie Unterhaltungen, Nachrichten, Identitäten, Kontakte zur Verfügung. Alles diese Konzepte sind verbunden: Eine Unterhaltung enthält Nachrichten, die mit Identitäten verknüpft sind (<strong>from</strong> Feld, <strong>to</strong> Feld), die widerum selbst Teil eines Kontaktes sind. Tatsächlich: ein Kontakt hat mehrere Identitäten.</p>
+
+ <p>Typischer Anwendungsfall für Gloda: Finde alle Nachrichten deren Betreff übereinstimmt [Suchbegriff], finde alle Nachrichten von [Person], finde alle Nachrichten im gleichen Thread wie [eine vorgegebene Nachricht], finde alle Nachrichten mit [Person] etc. etc.</p>
+
+ <p>Gloda ist extrem mächtig und wird sehr stark von add-ons wie z. B. <a class="link-https" href="https://addons.mozilla.org/en-US/thunderbird/addon/gmail-conversation-view/" title="https://addons.mozilla.org/en-US/thunderbird/addon/gmail-conversation-view/">Thunderbird Conversations</a> genutzt.<br>
+ Erfahren Sie mehr über Gloda:</p>
+
+ <ul>
+ <li>Ein Überblick über <a href="/en/Thunderbird/gloda" title="Gloda">Gloda</a></li>
+ <li>Wie erstelle ich <a href="/en/Thunderbird/Creating_a_Gloda_message_query" title="Creating a gloda message query">die erste Nachrichten Abfrage</a> und lesen Sie die <a href="/en/Thunderbird/Gloda_examples" title="Gloda examples">gloda Beispiele</a></li>
+ <li>Gloda interna: <a href="/en/Thunderbird/Gloda_debugging" title="Gloda debugging">Gloda debugging</a>, <a href="/en/Thunderbird/Gloda_indexing" title="Gloda indexing">Gloda indexing</a></li>
+ </ul>
+
+ <h3 id="Weitere_Thunderbird-spezifische_Links_Englisch">Weitere Thunderbird-spezifische Links (Englisch)</h3>
+
+ <p>Manche Links können veraltet sein, jedoch stellten sie immer noch wertvolle Informationen zur codebase zur Verfügung.</p>
+
+ <ul>
+ <li><a class="internal" href="/en/Extensions/Thunderbird/An_overview_of_the_Thunderbird_interface" title="En/Extensions/Thunderbird/An overview of the Thunderbird interface">An overview of Thunderbird components</a></li>
+ <li><a class="internal" href="/en/Extensions/Thunderbird/Thunderbird_developer_reference_docs" title="en/Extensions/Thunderbird/Thunderbird developer reference docs">Developer reference docs</a>:
+ <ul>
+ <li><a class="internal" href="/en/Folders" title="En/Folders">Folder classes</a></li>
+ <li><a class="internal" href="/en/DB_Views_(message_lists)" title="En/DB Views (message lists)">DB views (message list)</a></li>
+ <li><a class="internal" href="/en/Message_Summary_Database" title="En/Message Summary Database">Message summary database</a></li>
+ <li><a class="internal" href="/en/MailNews_Protocols" title="En/MailNews Protocols">MailNews protocols</a></li>
+ <li><a class="internal" href="/En/MailNews_Filters" rel="internal" title="En/MailNews Filters">MailNews filters</a></li>
+ <li><a class="internal" href="/en/Extensions/Thunderbird/Error_reporting_tools" title="en/Extension Library/Extensions/Thunderbird/Error reporting tools">Error reporting tools</a></li>
+ <li><a href="/en/Toolkit_API/STEEL" title="en/Toolkit API/STEEL">STEEL library</a> (Mit Thunderbird 52 veraltet, verwenden Sie <a class="link-https" href="https://github.com/protz/thunderbird-stdlib" title="https://github.com/protz/thunderbird-stdlib">https://github.com/protz/thunderbird-stdlib</a>)</li>
+ <li><a class="external" href="http://quetzalcoatal.blogspot.com/2010/01/developing-new-account-types-part-0.html" title="http://quetzalcoatal.blogspot.com/2010/01/developing-new-account-types-part-0.html">Developing new account types</a></li>
+ </ul>
+ </li>
+ <li><a class="internal" href="/en/Extensions/Thunderbird/Useful_newsgroups_discussions" title="En/Extensions/Thunderbird/Useful newsgroups discussions">Useful newsgroup discussions</a> (Alles, was sehr als ist, sollte kritisch betrachtet werden, da in den letzten Jahren wurde die API signifikant überarbeitet, wurde die die meisten Techniken erheblich vereinfachen).</li>
+ <li><a href="/en/Thunderbird/Thunderbird_API_documentation" title="en/Thunderbird/Thunderbird API documentation">Thunderbird API docs</a> (hauptsächlich eine Sammlung von veralteten Seiten, deren Relevanz eher als zweifelhaft anzusehen ist).</li>
+ <li><a href="/en/Mozilla/Thunderbird/Releases" title="Thunderbird developer release notes">Thunderbird developer release notes</a> - Änderungen im aktuellen Thunderbird die die add-on Entwickler betreffen. <a href="/Thunderbird_5_for_developers" title="Thunderbird 5 for developers">Thunderbird 5 for developers</a> enthält wichtige Informationen über MsgHdrToMimeMessage welches ein zentrales Stück des Codes ist.</li>
+ </ul>
+
+ <h3 id="Allegemeine_Links_Englisch">Allegemeine Links (Englisch)</h3>
+
+ <ul>
+ <li><a href="/en/Extensions/Thunderbird/Finding_the_code_for_a_feature" title="en/Extensions/Thunderbird/Finding the code for a feature">Finding the code for a feature</a></li>
+ <li><a class="external" href="http://kb.mozillazine.org/Category:Thunderbird" title="http://kb.mozillazine.org/Category:Thunderbird">Mozillazine articles on Thunderbird</a></li>
+ <li><a href="/Special:Tags?tag=Thunderbird" title="https://developer.mozilla.org/Special:Tags?tag=Thunderbird">All pages tagged with Thunderbird</a></li>
+ <li><a href="/Special:Tags?tag=MailNews" title="https://developer.mozilla.org/Special:Tags?tag=MailNews">All pages tagged with MailNews</a></li>
+ </ul>
+ </td>
+ <td>
+ <h2 id="Community" name="Community">Community / Communications</h2>
+
+ <p>Thunderbird spezifisch :</p>
+
+ <ul>
+ <li><a class="external" href="https://www.thunderbird.net/en-US/get-involved/#communication" title="http://wiki.mozilla.org/Thunderbird/CommunicationChannels">Thunderbird communication channels </a>ist Ihre erste Anlaufstelle</li>
+ <li><a class="link-irc" href="irc://moznet/#maildev">#maildev IRC channel</a></li>
+ </ul>
+
+ <p>Mehr allgemein :</p>
+
+ <ul>
+ <li><a class="external" href="http://forums.mozillazine.org/viewforum.php?f=19">MozillaZine Extension Development forum</a></li>
+ <li><a href="/docs/Mozilla/Add-ons#Contact_us">General developer channels</a></li>
+ </ul>
+
+ <p>Tools</p>
+
+ <ul>
+ <li><a class="link-https" href="https://addons.mozilla.org/en-US/firefox/addon/6622" rel="external nofollow" title="https://addons.mozilla.org/en-US/firefox/addon/6622">DOM Inspector</a> edit the live DOM (Firefox and Thunderbird)</li>
+ <li><a class="link-https" href="https://addons.mozilla.org/thunderbird/addon/workspace-for-thunderbird/" title="https://addons.mozilla.org/thunderbird/addon/workspace-for-thunderbird/">Workspace for Thunderbird</a>, erlaubt Codeschnipsel in Thunderbird laufen zu lassen und deren Variablen Struktur und Inhalt zu untersuchen.</li>
+ <li><a class="external" href="http://www.hacksrus.com/~ginda/venkman/" rel="external nofollow" title="http://www.hacksrus.com/~ginda/venkman/">Venkman</a>, ein JavaScript debugger (<a class="external" href="http://addons.mozilla.org/en-US/firefox/addon/216" rel="external nofollow" title="http://addons.mozilla.org/en-US/firefox/addon/216">Firefox</a>, <a class="external" href="http://addons.mozilla.org/en-US/thunderbird/addon/216" rel="external nofollow" title="http://addons.mozilla.org/en-US/thunderbird/addon/216">Thunderbird</a>)</li>
+ <li><a class="link-https" href="https://addons.mozilla.org/en-US/firefox/addon/7434/" rel="external nofollow" title="https://addons.mozilla.org/en-US/firefox/addon/7434/">Extension Developer's Extension</a> Eine Reihe von Entwicklungswerkzeugen</li>
+ <li><a class="external" href="http://www.gijsk.com/" rel="external nofollow" title="http://www.gijsk.com/">Chrome List</a> zeigt Dateien in chrome:// (<a class="external" href="http://addons.mozilla.org/en-US/firefox/addon/4453" rel="external nofollow" title="http://addons.mozilla.org/en-US/firefox/addon/4453">Firefox</a>, <a class="external" href="http://addons.mozilla.org/en-US/thunderbird/addon/4453" rel="external nofollow" title="http://addons.mozilla.org/en-US/thunderbird/addon/4453">Thunderbird</a>)</li>
+ <li><a href="/en/Mozmill" title="en/Mozmill">Mozmill</a> Test tool und Framework</li>
+ <li><a class="external" href="http://xpcomviewer.mozdev.org/" rel="external nofollow" title="http://xpcomviewer.mozdev.org">XPCOMViewer</a> ein XPCOM Inspector (Firefox and Thunderbird)</li>
+ </ul>
+
+ <p>... <a class="internal" href="/en/Setting_up_extension_development_environment#Development_extensions" title="en/Setting up extension development environment#Development extensions">weitere Tools</a> ...</p>
+
+ <p><span class="alllinks"><a href="/Special:Tags?tag=Extensions:Tools&amp;language=en" title="Special:Tags?tag=Extensions:Tools&amp;language=en">Alle anzeigen...</a></span></p>
+
+ <h2 id="Related_Topics" name="Related_Topics">Verwandte Themen</h2>
+
+ <dl>
+ <dd><a href="/en/XUL" title="en/XUL">XUL</a>, <a href="/en/JavaScript" title="en/JavaScript">JavaScript</a>, <a href="/en/XPCOM" title="en/XPCOM">XPCOM</a>, <a href="/en/Themes" title="en/Themes">Themes</a>, <a href="/En/Developer_Guide" title="en/Developing_Mozilla">Developing Mozilla</a></dd>
+ </dl>
+ </td>
+ </tr>
+ </tbody>
+</table>
+
+<p><span class="comment">Categori</span></p>
diff --git a/files/de/mozilla/verbinden/index.html b/files/de/mozilla/verbinden/index.html
new file mode 100644
index 0000000000..a103f9d5f9
--- /dev/null
+++ b/files/de/mozilla/verbinden/index.html
@@ -0,0 +1,94 @@
+---
+title: Mit Mozilla verbinden
+slug: Mozilla/Verbinden
+tags:
+ - Landung
+translation_of: Mozilla/Connect
+---
+<div class="summary">
+<p><span class="seoSummary">Ermöglichen, inspirieren und zusammenarbeiten damit das Internet die primäre Plattform wird um auf allen verbundenen Endgeräten Erlebnisse zu erschaffen.</span></p>
+</div>
+
+
+<div>
+<div class="column-container dev-program-callouts dev-program-block dev-program-first dev-program-column-wrapper">
+<div class="dev-program-callout">
+<div class="callout-link-container">
+<h2 id="Hacks_blog">Hacks blog</h2>
+
+<p>Eine wichtige Quelle für Menschen die für das offene Internet entwickeln. Der Mozilla Hacks blog bietet Neuigkeiten und Diskussionen zu den neusten Web Technolgien und Browser Eigenschaften.</p>
+
+<div class="callout-link-wrapper"><a class="callout-link" href="https://hacks.mozilla.org/">jetzt lesen </a></div>
+</div>
+</div>
+
+<div class="dev-program-callout">
+<div class="callout-link-container">
+<h2 id="Hilfe_QA">Hilfe Q&amp;A</h2>
+
+<p>Treten Sie der Diskussion über das Web und Web apps auf Stack Overflow bei, dort können Sie Ideen mit anderen Webentwicklern austauschen.<br>
+ <span class="smaller"><strong>{{anch("Developer discussions", "Search the Q&amp;A below")}}</strong></span></p>
+
+<div class="callout-link-wrapper"><a class="callout-link" href="http://stackoverflow.com/r/mozilla">Mozilla Q&amp;A auf Stack Overflow </a></div>
+</div>
+</div>
+
+<div class="dev-program-callout">
+<div class="callout-link-container">
+<h2 id="MDN_beitreten">MDN beitreten</h2>
+
+<p>Melden Sie sich bei MDN an! Sie werden in der Lage sein Dokumentationen zu bearbeiten, können unseren Newsletter abonnieren und bekommen Zugriff auf neue Features sobald wir diese veröffentlichen.</p>
+
+<div class="callout-link-wrapper"><a class="callout-link" href="/profile/edit">Beitreten oder einloggen </a></div>
+</div>
+</div>
+</div>
+
+<div class="dev-program-explanation dev-program-block">
+<h2 id="Mit_Mozilla_verbinden">Mit Mozilla verbinden</h2>
+Entwickler erschaffen die Zukunft indem Sie Dienste und Apps für Menschen auf der ganzen Welt aufbauen. Das Ziel der Mozilla Entwickler Beziehung ist es Entwickler dabei zu unterstützen offene und standardisierte Web Technologien zu verwenden um damit erfolgreich Ihre Ziele zu erreichen. Zusätzlich zu der Dokumentation hier auf MDN bieten wir auf verschiedenen anderen Kanälen Hilfe und Ressourcen an um dieses Ziel zu erreichen. Wir laden Sie ein sich zu beteiligen, zu lernen und Ihr eigenes Wissen zu teilen.<br>
+Um spezielle technische Fragen und Herausforderungen zu beantworten, bieten wir Hilfe über Q&amp;A auf Stack Overflow. Unser Newsletter hält Sie über die neusten Ereignisse in der Webszene rund um Web Apps und andere Themen auf dem Laufenden.<br>
+Wir haben viele Pläne und Ideen um unsere Entwickler Beziehungen iterativ auszubauen, wir möchten dich beteiligen genau wie wir es sind. <a href="http://stackoverflow.com/r/mozilla"> Folgen Sie den Tags auf Stack Overflow</a>, <a href="https://hacks.mozilla.org/">Abonnieren Sie den Hacks blog</a>, und <a href="/profile/edit">Melden Sie sich für einen Account an</a>!</div>
+
+<div class="column-container dev-program-block">
+<div class="column-half" id="Developer_discussions">
+<h2 id="QA_auf_Stack_Overflow_Ansicht_aller_QA...">Q&amp;A auf Stack Overflow <a class="heading-link" href="http://stackoverflow.com/r/mozilla">Ansicht aller Q&amp;A...</a></h2>
+
+<p>Wir haben ein Q&amp;A um Herausforderungen und Fragen beim Entwickeln zu diskutieren. Insbesondere für Firefox OS und open Web auf Handys. Zu finden auf Stack Overflow unter der einfachen URL <a href="http://stackoverflow.com/r/mozilla">http://stackoverflow.com/r/mozilla</a>.</p>
+
+
+<div class="stack-form">Stack Formular</div>
+
+<h3 id="Neuste_QA_Themen">Neuste Q&amp;A Themen</h3>
+</div>
+
+<div class="column-half dev-program-hacks dev-program-block"> </div>
+</div>
+
+<p class="dev-program-block"><img alt="Developers at a Firefox OS workshop in Madrid." src="https://mdn.mozillademos.org/files/7479/PhonesUp.jpg" style="display: block; height: 359px; margin: 0px auto; max-width: 100%; width: 720px;"></p>
+
+<div class="column-container dev-program-block">
+<div class="column-7 dev-program-events">
+<h2 id="Wo_ist_Mozilla_Sehen_Sie_Teilnehmer_und_Einzelheiten_auf_unserer_Veranstaltungseite...">Wo ist Mozilla? <a class="heading-link" href="https://developer.mozilla.org/en/events">Sehen Sie Teilnehmer und Einzelheiten auf unserer Veranstaltungseite...</a></h2>
+
+<p>Hier ist eine Liste von Mozilla Repräsentanten die auf einer Veranstaltung in Ihrer Nähe sprechen. Sprechen Sie mit Ihnen!</p>
+</div>
+
+<div class="column-5">
+<h2 id="weitere_Ressourcen">weitere Ressourcen</h2>
+
+<ul class="no-bullets">
+ <li><a href="http://www.youtube.com/user/mozhacks">Mozilla Hacks auf YouTube</a>
+
+ <ul>
+ <li><a href="http://www.youtube.com/playlist?list=PLo3w8EB99pqIHIUUv08hBCHq1OgPKhdo0">Firefox OS videos</a></li>
+ <li><a href="http://www.youtube.com/playlist?list=PLo3w8EB99pqLZNY22xKbTEzMfYo9PXAlm">Firefox Entwickler Werkzeuge videos</a></li>
+ </ul>
+ </li>
+ <li><a href="https://twitter.com/mozhacks">@mozhacks auf Twitter</a></li>
+</ul>
+</div>
+</div>
+</div>
+
+<p> </p>
diff --git a/files/de/mozilla/über_colon_omni.ja_(ehemals_omni.jar)/index.html b/files/de/mozilla/über_colon_omni.ja_(ehemals_omni.jar)/index.html
new file mode 100644
index 0000000000..381dc0e052
--- /dev/null
+++ b/files/de/mozilla/über_colon_omni.ja_(ehemals_omni.jar)/index.html
@@ -0,0 +1,62 @@
+---
+title: Über omni.ja (ehemals omni.jar)
+slug: 'Mozilla/Über:omni.ja_(ehemals_omni.jar)'
+tags:
+ - Firefox
+ - Gecko
+ - Guide
+ - Mozilla
+translation_of: Mozilla/About_omni.ja_(formerly_omni.jar)
+---
+<p>{{ gecko_minversion_header("2.0") }}</p>
+
+<p>Firefox und Thunderbird erreichen Verbesserungen der Performance, indem sie viele ihrer internen Teile, bestehend aus einzelnen Dateien oder mehreren  JAR-Dateien in eine einzige JAR-Datei,  <code>omni.ja</code> genannt, auslagern; dies reduziert die I/O-Menge, die benötigt wird, um die Anwendung zu laden. Seit Firefox und Thunderbird 10 wird die Dateierweiterung <code>.ja</code> genutzt, weil die Windows Systemwiederherstellung Dateien mit der <code>.jar</code> Erweiterung nicht sichert,  <code>.ja</code> Dateien dagegen schon.</p>
+
+<h2 id="omni.ja_inspizieren">omni.ja inspizieren</h2>
+
+<div class="note"><strong>Hinweis:</strong> Während der Extrahierung von <code>omni.ja</code> könnten Fehlmeldungen einiger Antivirenprogramme auftreten.</div>
+
+<p>Einige Kompressionsprogramme und Archive ( <em>jede</em> Version von 7-Zip mit einbezogen) können <code>omni.ja</code> aufgrund der Optimierungen, die in der Datei angewendet wurden, zurzeit nicht lesen. Windows 7 Nutzern wird empfohlen die Datei zu entpacken, indem sie in <code>omni.zip</code> umbenannt wird und sie mit Windows Explorer zu extrahieren. Nutzer älterer Versionen von Windows können das <a class="link-ftp" href="ftp://ftp.info-zip.org/pub/infozip/win32/unz552dn.zip" title="ftp://ftp.info-zip.org/pub/infozip/win32/unz552dn.zip">InfoZip's UnZip tool</a> verwenden, um Dateien zu entpacken - fertigen sie eine Kopie von <code>omni.ja</code> an und bewegen sie es per Drag n' Drop auf <code>unzip.exe</code>.</p>
+
+<p><code>omni.ja</code> ist auch aus der anderen Richtung mit Zip-Dateien inkompatibel; das Bearbeiten extrahierter Dateien wird Firefox nicht beeinflussen und wieder zurückgepackte editierte Dateien könnten Firefox zum Absturz bringen, wenn sie während des Packens nicht die richtigen Einstellungen nutzen. Der korrekte Befehl, um Dateien in <code>omni.ja</code> zu packen, ist:</p>
+
+<pre>zip -qr9XD omni.ja *</pre>
+
+<div class="note"><strong>Hinweis:</strong> Vor dem Erscheinen von Firefox 10 und Thunderbird 10, wurde die <code>omni.ja</code>  noch <code>omni.jar</code> genannt.</div>
+
+<h2 id="Die_Inhalte_von_omni.ja">Die Inhalte von omni.ja</h2>
+
+<p><code>omni.ja</code> enthält ausgewählte Programmressourcen:</p>
+
+<dl>
+ <dt><code>chrome.manifest</code></dt>
+ <dd>Das <a href="/de/docs/Mozilla/Chrome_Registration">chrome Manifest</a>.</dd>
+ <dt><code>/chrome/</code></dt>
+ <dd>UI-Dateien der Anwendung</dd>
+ <dt><code>/chrome/localized.manifest</code></dt>
+ <dd>Manifest für lokalisierten Inhalt; bezieht sich auf das chrome Manifest.</dd>
+ <dt><code>/chrome/nonlocalized.manifest</code></dt>
+ <dd>Manifest für nicht lokalisierten Inhalt; bezieht sich auf das chrome Manifest.</dd>
+ <dt><code>/components/</code></dt>
+ <dd>XPCOM-Komponenten, auf die sich die Anwendung stützt.</dd>
+ <dt><code>/defaults/</code></dt>
+ <dd>Standarddateien.</dd>
+ <dt><code>/modules</code></dt>
+ <dd><a href="/de/docs/Mozilla/JavaScript_code_modules">JavaScript Codemodule</a>.</dd>
+ <dt><code>/res/</code></dt>
+ <dd>Verschiedene Ressourcen.</dd>
+</dl>
+
+<h2 id="Siehe_auch">Siehe auch</h2>
+
+<ul>
+ <li><a href="/en/Firefox_4_for_developers" title="en/Firefox 4 for developers">Firefox 4 for developers</a></li>
+ <li><a href="/en/Thunderbird_5_for_developers" title="en/Thunderbird 3.3 for developers">Thunderbird 3.3 for developers</a></li>
+ <li><a href="/en/Theme_changes_in_Firefox_4" title="en/Theme changes in Firefox 4">Theme changes in Firefox 4</a></li>
+ <li><a class="external" href="http://blog.mozilla.com/tglek/2010/09/14/firefox-4-jar-jar-jar/" title="http://blog.mozilla.com/tglek/2010/09/14/firefox-4-jar-jar-jar/">Firefox 4: jar jar jar</a> (blog post)</li>
+ <li><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=701875">Bug 701875 - Rename omni.jar to omni.ja</a></li>
+</ul>
+
+<div class="noinclude">
+<p>{{ languages( { "ja": "ja/About_omni.jar" } ) }}</p>
+</div>