<?xml version="1.0" encoding="UTF-8"?>
<!--  Copyright (C) 2007 The Android Open Source Project

     Licensed under the Apache License, Version 2.0 (the "License");
     you may not use this file except in compliance with the License.
     You may obtain a copy of the License at

          http://www.apache.org/licenses/LICENSE-2.0

     Unless required by applicable law or agreed to in writing, software
     distributed under the License is distributed on an "AS IS" BASIS,
     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     See the License for the specific language governing permissions and
     limitations under the License.
 -->

<resources xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
    <string name="app_label" msgid="3658948994665187911">"Download-Manager"</string>
    <string name="storage_description" msgid="7982444311558023664">"Downloads"</string>
    <string name="permlab_downloadManager" msgid="7779544811202855500">"Auf Download-Manager zugreifen"</string>
    <string name="permdesc_downloadManager" msgid="4237406545998908947">"Ermöglicht der App, auf den Download-Manager zuzugreifen, um Dateien herunterzuladen. Schadprogramme könnten damit Downloads unterbrechen und auf personenbezogene Daten zugreifen."</string>
    <string name="permlab_downloadManagerAdvanced" msgid="7103642833308809655">"Erweiterte Funktionen des Download-Managers."</string>
    <string name="permdesc_downloadManagerAdvanced" msgid="2659546004160962761">"Ermöglicht der App, auf die erweiterten Funktionen des Download-Managers zuzugreifen. Schadprogramme könnten damit Downloads unterbrechen und auf personenbezogene Daten zugreifen."</string>
    <string name="permlab_downloadCompletedIntent" msgid="945913803765675685">"Benachrichtigungen zu Ladevorgängen senden"</string>
    <string name="permdesc_downloadCompletedIntent" msgid="2094706189855699533">"Ermöglicht der App, Benachrichtigungen über abgeschlossene Downloads zu senden. Schadprogramme können dadurch andere Apps, die Dateien herunterladen, beeinträchtigen."</string>
    <string name="permlab_downloadCacheNonPurgeable" msgid="3069534308882047412">"Speicherplatz im Download-Cache reservieren"</string>
    <string name="permdesc_downloadCacheNonPurgeable" msgid="2408760720334570420">"Ermöglicht der App, Dateien in den Download-Cache herunterzuladen, die nicht automatisch gelöscht werden können, wenn der Download-Manager mehr Speicher benötigt"</string>
    <string name="permlab_downloadWithoutNotification" msgid="8837971946078327262">"Dateien ohne Benachrichtigung herunterladen"</string>
    <string name="permdesc_downloadWithoutNotification" msgid="8483135034298639727">"Ermöglicht der App, Dateien über den Download-Manager herunterzuladen, ohne dass dem Nutzer Benachrichtigungen angezeigt werden"</string>
    <string name="permlab_accessAllDownloads" msgid="2436240495424393717">"Zugriff auf alle System-Downloads"</string>
    <string name="permdesc_accessAllDownloads" msgid="1871832254578267128">"Ermöglicht der App, alle Downloads anzuzeigen und zu ändern, die von Apps auf dem System gestartet wurden"</string>
    <string name="download_unknown_title" msgid="7015124071247271585">"&lt;Unbenannt&gt;"</string>
    <string name="notification_download_complete" msgid="5443563299253103667">"Download abgeschlossen"</string>
    <string name="notification_download_failed" msgid="8612136111952014978">"Fehler bei Download"</string>
    <string name="notification_need_wifi_for_size" msgid="2556172885154833575">"Downloadgröße erfordert WLAN"</string>
    <string name="notification_paused_in_background" msgid="4328508073283591772">"Im Hintergrund pausiert"</string>
    <string name="wifi_required_title" msgid="1995971416871498179">"Download zu groß für Netzwerk dieses Betreibers."</string>
    <string name="wifi_required_body" msgid="3067694630143784449">"Du musst eine WLAN-Verbindung nutzen, um den Download von <xliff:g id="SIZE">%1$s </xliff:g> abzuschließen.\n\nTippe auf <xliff:g id="QUEUE_TEXT">%2$s </xliff:g> und der Download startet bei der nächsten WLAN-Einwahl."</string>
    <string name="wifi_recommended_title" msgid="7441589306734687400">"In Warteschlange für späteren Download?"</string>
    <string name="wifi_recommended_body" msgid="1314735166699936073">"Der Download von <xliff:g id="SIZE">%1$s </xliff:g> kann die Akkulaufzeit verkürzen/die mobile Datenverbindung überlasten. Je nach Vertrag können zusätzliche Kosten entstehen.\n\nTippe auf <xliff:g id="QUEUE_TEXT">%2$s</xliff:g> und der Download startet bei der nächsten WLAN-Einwahl."</string>
    <string name="button_queue_for_wifi" msgid="422576726189179221">"Warteschlange"</string>
    <string name="button_cancel_download" msgid="2430166148737975604">"Abbrechen"</string>
    <string name="button_start_now" msgid="792123674007840864">"Jetzt starten"</string>
    <plurals name="notif_summary_active" formatted="false" msgid="7290448463204837173">
      <item quantity="other"><xliff:g id="NUMBER">%d</xliff:g> Dateien werden heruntergeladen.</item>
      <item quantity="one">1 Datei wird heruntergeladen.</item>
    </plurals>
    <plurals name="notif_summary_waiting" formatted="false" msgid="2814217662029273005">
      <item quantity="other"><xliff:g id="NUMBER">%d</xliff:g> Dateien stehen aus.</item>
      <item quantity="one">1 Datei steht aus.</item>
    </plurals>
    <string name="download_remaining" msgid="3139295890887972718">"Noch <xliff:g id="DURATION">%s</xliff:g>"</string>
    <string name="download_no_application_title" msgid="7935659741162801699">"Datei kann nicht geöffnet werden."</string>
    <string name="root_downloads" msgid="4098414876292351487">"Downloads"</string>
    <string name="download_queued" msgid="3302638231377947451">"In der Warteschlange"</string>
    <string name="download_running" msgid="3925050393361158266">"In Bearbeitung"</string>
    <string name="download_error" msgid="5144180777324573236">"Nicht erfolgreich"</string>
    <string name="download_running_percent" msgid="4305080769167320204">"Wird heruntergeladen: <xliff:g id="PERCENTAGE">%s</xliff:g>"</string>
</resources>
