<?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">"Gestione download"</string>
    <string name="permlab_downloadManager" msgid="7779544811202855500">"Accedere alla gestione dei download."</string>
    <string name="permdesc_downloadManager" msgid="4237406545998908947">"Consente all\'applicazione di accedere a gestione dei download e di utilizzarla per scaricare file. Le applicazioni dannose possono farne uso per disturbare i download e accedere a informazioni private."</string>
    <string name="permlab_downloadManagerAdvanced" msgid="7103642833308809655">"Funzioni avanzate di gestione dei download."</string>
    <string name="permdesc_downloadManagerAdvanced" msgid="2659546004160962761">"Consente all\'applicazione di accedere alle funzioni avanzate di gestione dei download. Le applicazioni dannose possono farne uso per disturbare i download e accedere a informazioni private."</string>
    <string name="permlab_downloadCompletedIntent" msgid="945913803765675685">"Inviare notifiche di download."</string>
    <string name="permdesc_downloadCompletedIntent" msgid="2094706189855699533">"Consente all\'applicazione di inviare notifiche relative ai download completati. Le applicazioni dannose possono farne uso per confondere altre applicazioni che scaricano file."</string>
    <string name="permlab_seeAllExternal" product="nosdcard" msgid="4084575448409212628">"Tutti i download in archivio USB"</string>
    <string name="permlab_seeAllExternal" product="default" msgid="140058400609165726">"Visualizza tutti i download sulla scheda SD"</string>
    <string name="permdesc_seeAllExternal" msgid="1672759909065511233">"Consente all\'applicazione di visualizzare tutti i download sulla scheda SD, a prescindere dall\'applicazione che li ha scaricati."</string>
    <string name="permlab_downloadCacheNonPurgeable" msgid="3069534308882047412">"Conserva spazio nella cache dei download"</string>
    <string name="permdesc_downloadCacheNonPurgeable" msgid="2408760720334570420">"Consente all\'applicazione di scaricare nella cache i file che non possono essere eliminati automaticamente quando a gestione dei download serve più spazio."</string>
    <string name="permlab_downloadWithoutNotification" msgid="8837971946078327262">"download file senza notifica"</string>
    <string name="permdesc_downloadWithoutNotification" msgid="8483135034298639727">"Consente all\'applicazione di scaricare i file tramite gestione dei download senza mostrare alcuna notifica all\'utente."</string>
    <string name="permlab_accessAllDownloads" msgid="2436240495424393717">"Accesso a tutti i dowload di sistema"</string>
    <string name="permdesc_accessAllDownloads" msgid="1871832254578267128">"Consente all\'applicazione di visualizzare e modificare tutti i download avviati da qualsiasi applicazione sul sistema."</string>
    <string name="download_unknown_title" msgid="7015124071247271585">"&lt;Senza nome&gt;"</string>
    <string name="notification_download_complete" msgid="5443563299253103667">"Download completato."</string>
    <string name="notification_download_failed" msgid="8612136111952014978">"Download non riuscito."</string>
    <string name="notification_need_wifi_for_size" msgid="2556172885154833575">"Wi-Fi richiesto per download"</string>
    <string name="notification_paused_in_background" msgid="4328508073283591772">"In pausa in background."</string>
    <string name="wifi_required_title" msgid="1995971416871498179">"Download troppo grande per rete operatore"</string>
    <string name="wifi_required_body" msgid="3067694630143784449">"Devi utilizzare la rete Wi-Fi per completare questo download di <xliff:g id="SIZE">%s </xliff:g>. "\n\n"Tocca <xliff:g id="QUEUE_TEXT">%s </xliff:g> per avviare il download la prossima volta che sei connesso a una rete Wi-Fi."</string>
    <string name="wifi_recommended_title" msgid="7441589306734687400">"Mettere in coda per scaricare più tardi?"</string>
    <string name="wifi_recommended_body" msgid="1314735166699936073">"Questo download di <xliff:g id="SIZE">%s </xliff:g> potrebbe ridurre la durata della batteria e/o causare un uso eccessivo della connessione dati mobile con conseguente addebito da parte dell\'operatore."\n\n" Tocca <xliff:g id="QUEUE_TEXT">%s</xliff:g> per avviarlo quando sarai connesso a una rete Wi-Fi."</string>
    <string name="button_queue_for_wifi" msgid="422576726189179221">"Metti in coda"</string>
    <string name="button_cancel_download" msgid="2430166148737975604">"Annulla"</string>
    <string name="button_start_now" msgid="792123674007840864">"Avvia adesso"</string>
    <string name="download_percent" msgid="6889426633242976698">"<xliff:g id="NUMBER">%d</xliff:g><xliff:g id="PERCENT">%%</xliff:g>"</string>
  <plurals name="notif_summary_active">
    <item quantity="one" msgid="8475775855911967027">"1 file in download"</item>
    <item quantity="other" msgid="9087228371320573153">"<xliff:g id="NUMBER">%d</xliff:g> file in download"</item>
  </plurals>
  <plurals name="notif_summary_waiting">
    <item quantity="one" msgid="5537481763963544278">"1 file in attesa"</item>
    <item quantity="other" msgid="549229034166062887">"<xliff:g id="NUMBER">%d</xliff:g> file in attesa"</item>
  </plurals>
    <string name="download_remaining" msgid="3139295890887972718">"<xliff:g id="DURATION">%s</xliff:g> rimanenti"</string>
    <string name="download_no_application_title" msgid="7935659741162801699">"Impossibile aprire il file"</string>
</resources>
