<?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">"Access download manager."</string>
    <string name="permdesc_downloadManager" msgid="4237406545998908947">"Allows the app to access the download manager and to use it to download files. Malicious apps can use this to disrupt downloads and access private information."</string>
    <string name="permlab_downloadManagerAdvanced" msgid="7103642833308809655">"Advanced download manager functions."</string>
    <string name="permdesc_downloadManagerAdvanced" msgid="2659546004160962761">"Allows the app to access the download manager\'s advanced functions. Malicious apps can use this to disrupt downloads and access private information."</string>
    <string name="permlab_downloadCompletedIntent" msgid="945913803765675685">"Send download notifications."</string>
    <string name="permdesc_downloadCompletedIntent" msgid="2094706189855699533">"Allows the app to send notifications about completed downloads. Malicious apps can use this to confuse other apps that download files."</string>
    <string name="permlab_downloadCacheNonPurgeable" msgid="3069534308882047412">"Reserve space in the download cache"</string>
    <string name="permdesc_downloadCacheNonPurgeable" msgid="2408760720334570420">"Allows the app to download files to the download cache, which can\'t be deleted automatically when the download manager needs more space."</string>
    <string name="permlab_downloadWithoutNotification" msgid="8837971946078327262">"download files without notification"</string>
    <string name="permdesc_downloadWithoutNotification" msgid="8483135034298639727">"Allows the application to download files through the download manager without any notification being shown to the user."</string>
    <string name="permlab_accessAllDownloads" msgid="2436240495424393717">"Access all system downloads"</string>
    <string name="permdesc_accessAllDownloads" msgid="1871832254578267128">"Allows the app to view and modify all downloads initiated by any app on the system."</string>
    <string name="download_unknown_title" msgid="7015124071247271585">"&lt;Untitled&gt;"</string>
    <string name="notification_download_complete" msgid="5443563299253103667">"Download complete."</string>
    <string name="notification_download_failed" msgid="8612136111952014978">"Download unsuccessful."</string>
    <string name="notification_need_wifi_for_size" msgid="2556172885154833575">"Download size requires Wi-Fi"</string>
    <string name="notification_paused_in_background" msgid="4328508073283591772">"Paused in background"</string>
    <string name="wifi_required_title" msgid="1995971416871498179">"Download too large for operator network"</string>
    <string name="wifi_required_body" msgid="3067694630143784449">"You must use Wi-Fi to complete this <xliff:g id="SIZE">%1$s </xliff:g> download. \n\nTouch <xliff:g id="QUEUE_TEXT">%2$s </xliff:g> to start this download the next time that you\'re connected to a Wi-Fi network."</string>
    <string name="wifi_recommended_title" msgid="7441589306734687400">"Queue for download later?"</string>
    <string name="wifi_recommended_body" msgid="1314735166699936073">"Starting this <xliff:g id="SIZE">%1$s </xliff:g> download now may shorten your battery life and/or result in excessive usage of your mobile data connection, which can lead to charges by your mobile operator depending on your data plan.\n\n Touch <xliff:g id="QUEUE_TEXT">%2$s</xliff:g> to start this download the next time that you\'re connected to a Wi-Fi network."</string>
    <string name="button_queue_for_wifi" msgid="422576726189179221">"Queue"</string>
    <string name="button_cancel_download" msgid="2430166148737975604">"Cancel"</string>
    <string name="button_start_now" msgid="792123674007840864">"Start now"</string>
    <plurals name="notif_summary_active" formatted="false" msgid="7290448463204837173">
      <item quantity="other"><xliff:g id="NUMBER">%d</xliff:g> files downloading</item>
      <item quantity="one">1 file downloading</item>
    </plurals>
    <plurals name="notif_summary_waiting" formatted="false" msgid="2814217662029273005">
      <item quantity="other"><xliff:g id="NUMBER">%d</xliff:g> files waiting</item>
      <item quantity="one">1 file waiting</item>
    </plurals>
    <string name="download_remaining" msgid="3139295890887972718">"<xliff:g id="DURATION">%s</xliff:g> left"</string>
    <string name="download_no_application_title" msgid="7935659741162801699">"Can\'t open file"</string>
    <string name="root_downloads" msgid="4098414876292351487">"Downloads"</string>
    <string name="download_queued" msgid="3302638231377947451">"Queued"</string>
    <string name="download_running" msgid="3925050393361158266">"In progress"</string>
    <string name="download_error" msgid="5144180777324573236">"Unsuccessful"</string>
    <string name="download_running_percent" msgid="4305080769167320204">"In progress, <xliff:g id="PERCENTAGE">%s</xliff:g>"</string>
</resources>
