<?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">"Nedladdningshanterare"</string>
    <string name="storage_description" msgid="7982444311558023664">"Nedladdningar"</string>
    <string name="permlab_downloadManager" msgid="7779544811202855500">"Åtkomst till laddningshanterare."</string>
    <string name="permdesc_downloadManager" msgid="4237406545998908947">"Tillåter att en app får åtkomst till nedladdningshanteraren och kan använda den för att ladda ned filer. Skadliga program kan använda detta för att störa nedladdningar och komma åt privat information."</string>
    <string name="permlab_downloadManagerAdvanced" msgid="7103642833308809655">"Avancerade funktioner för nedladdningshanterare."</string>
    <string name="permdesc_downloadManagerAdvanced" msgid="2659546004160962761">"Tillåter att appen får åtkomst till nedladdningshanterarens avancerade funktioner. Skadliga program kan använda detta för att störa nedladdningar och komma åt privata uppgifter."</string>
    <string name="permlab_downloadCompletedIntent" msgid="945913803765675685">"Skicka meddelande om nedladdning."</string>
    <string name="permdesc_downloadCompletedIntent" msgid="2094706189855699533">"Tillåter att appen skickar meddelanden om slutförda nedladdningar. Skadliga appar kan använda detta för att störa andra appar som laddar ned filer."</string>
    <string name="permlab_downloadCacheNonPurgeable" msgid="3069534308882047412">"Reservera utrymme i nedladdningscachen"</string>
    <string name="permdesc_downloadCacheNonPurgeable" msgid="2408760720334570420">"Tillåter att appen laddar ned filer till hämtningscachen som inte kan tas bort automatiskt när hämtningshanteraren behöver mer utrymme."</string>
    <string name="permlab_downloadWithoutNotification" msgid="8837971946078327262">"ladda ned filer utan avisering"</string>
    <string name="permdesc_downloadWithoutNotification" msgid="8483135034298639727">"Tillåter att appen laddar ned filer via nedladdningshanteraren utan att något meddelande visas för användaren."</string>
    <string name="permlab_accessAllDownloads" msgid="2436240495424393717">"Åtkomst till alla nedladdningar i systemet"</string>
    <string name="permdesc_accessAllDownloads" msgid="1871832254578267128">"Tillåter att appen visar och ändrar alla nedladdningar som initieras av en app i systemet."</string>
    <string name="download_unknown_title" msgid="7015124071247271585">"&lt;Okänd&gt;"</string>
    <string name="notification_download_complete" msgid="5443563299253103667">"Nedladdningen har slutförts."</string>
    <string name="notification_download_failed" msgid="8612136111952014978">"Det gick inte att ladda ned."</string>
    <string name="notification_need_wifi_for_size" msgid="2556172885154833575">"Nedladdningen kräver Wi-Fi."</string>
    <string name="notification_paused_in_background" msgid="4328508073283591772">"Pausad i bakgrunden."</string>
    <string name="wifi_required_title" msgid="1995971416871498179">"Nedladdningen är för stor för operatörsnätverket"</string>
    <string name="wifi_required_body" msgid="3067694630143784449">"Du måste använda Wi-Fi om du vill slutföra nedladdningen på <xliff:g id="SIZE">%1$s </xliff:g>. \n \n Tryck på <xliff:g id="QUEUE_TEXT">%2$s </xliff:g> om du vill påbörja nedladdningen nästa gång du är ansluten till ett Wi-Fi-nätverk."</string>
    <string name="wifi_recommended_title" msgid="7441589306734687400">"Vill du ställa den i kö för nedladdning senare?"</string>
    <string name="wifi_recommended_body" msgid="1314735166699936073">"Om du laddar ned <xliff:g id="SIZE">%1$s </xliff:g> kan det leda till att batteritiden minskar eller att dataanslutningen överbelastas. Det kan i sin tur innebära att operatören tar ut högre avgifter, beroende på abonnemang.\n\n Tryck på <xliff:g id="QUEUE_TEXT">%2$s</xliff:g> om du vill starta nedladdningen nästa gång mobilen är ansluten till ett Wi-Fi-nätverk."</string>
    <string name="button_queue_for_wifi" msgid="422576726189179221">"Kö"</string>
    <string name="button_cancel_download" msgid="2430166148737975604">"Avbryt"</string>
    <string name="button_start_now" msgid="792123674007840864">"Starta nu"</string>
    <plurals name="notif_summary_active" formatted="false" msgid="7290448463204837173">
      <item quantity="other"><xliff:g id="NUMBER">%d</xliff:g> filer laddas ned</item>
      <item quantity="one">1 fil laddas ned</item>
    </plurals>
    <plurals name="notif_summary_waiting" formatted="false" msgid="2814217662029273005">
      <item quantity="other"><xliff:g id="NUMBER">%d</xliff:g> filer väntar</item>
      <item quantity="one">1 fil väntar</item>
    </plurals>
    <string name="download_remaining" msgid="3139295890887972718">"<xliff:g id="DURATION">%s</xliff:g> återstår"</string>
    <string name="download_no_application_title" msgid="7935659741162801699">"Det går inte att öppna filen"</string>
    <string name="root_downloads" msgid="4098414876292351487">"Nedladdningar"</string>
    <string name="download_queued" msgid="3302638231377947451">"I kö"</string>
    <string name="download_running" msgid="3925050393361158266">"Pågår"</string>
    <string name="download_error" msgid="5144180777324573236">"Misslyckades"</string>
    <string name="download_running_percent" msgid="4305080769167320204">"Pågår, <xliff:g id="PERCENTAGE">%s</xliff:g>"</string>
</resources>
