<?xml version="1.0" encoding="UTF-8"?>
<!--  Copyright (C) 2016 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_name" msgid="963247385700831716">"Gestione archiviazione"</string>
    <string name="cancel" msgid="7021218262867558825">"Annulla"</string>
    <string name="storage_menu_free" msgid="1878247401436882778">"Libera spazio"</string>
    <string name="deletion_helper_title" msgid="3526170325226275927">"Rimuovi elementi"</string>
    <string name="deletion_helper_app_summary" msgid="4904590040180275237">"<xliff:g id="DAYS">%1$d</xliff:g> giorni fa"</string>
    <!-- no translation found for deletion_helper_app_summary_item_size (3770886184921427886) -->
    <skip />
    <string name="deletion_helper_app_summary_never_used" msgid="2695210890063792461">"Non usata nell\'ultimo anno"</string>
    <string name="deletion_helper_app_summary_unknown_used" msgid="8576377054665785558">"Data ultimo utilizzo sconosciuta"</string>
    <string name="deletion_helper_free_button" msgid="1760529213407548661">"Libera fino a <xliff:g id="FREEABLE">%1$s</xliff:g>"</string>
    <string name="deletion_helper_photos_title" msgid="2602723121486729972">"Foto e video con backup"</string>
    <string name="deletion_helper_photos_age_summary" msgid="1820871709448371984">"Più vecchie di 30 giorni"</string>
    <!-- no translation found for deletion_helper_photos_summary (3194825464552700889) -->
    <skip />
    <string name="deletion_helper_downloads_title" msgid="8002058095019254694">"Download"</string>
    <!-- no translation found for deletion_helper_downloads_category_summary (8545989355108311347) -->
    <skip />
    <!-- no translation found for deletion_helper_downloads_summary_empty (3988054032360371887) -->
    <skip />
    <string name="deletion_helper_clear_dialog_title" msgid="9169670752655850967">"Libera spazio"</string>
    <string name="deletion_helper_clear_dialog_message" msgid="5196490478187120700">"Verranno rimossi <xliff:g id="CLEARABLE_BYTES">%1$s</xliff:g> di contenuti dal dispositivo"</string>
    <string name="deletion_helper_clear_dialog_remove" msgid="863575755467985516">"Libera spazio"</string>
    <string name="deletion_helper_upsell_title" msgid="8512037674466762017">"Gestire automaticamente lo spazio di archiviazione?"</string>
    <string name="deletion_helper_upsell_summary" msgid="2301597713694474407">"<xliff:g id="USED">%1$s</xliff:g> liberi. Vuoi consentire a Gestione archiviazione di liberare spazio automaticamente rimuovendo dal dispositivo i contenuti di cui hai eseguito il backup?"</string>
    <string name="deletion_helper_upsell_cancel" msgid="7084167642850053889">"No grazie"</string>
    <string name="deletion_helper_upsell_activate" msgid="7157360257760895976">"Attiva"</string>
    <string name="deletion_helper_apps_group_title" msgid="2578309121350341258">"App meno utilizzate"</string>
    <!-- no translation found for deletion_helper_apps_group_summary (360315517252452356) -->
    <skip />
    <string name="deletion_helper_automatic_title" msgid="4610119358490679299">"Automatica"</string>
    <string name="deletion_helper_manual_title" msgid="3905192395039688529">"Manuale"</string>
    <string name="deletion_helper_preference_title" msgid="803484286872745892">"Libera spazio ora"</string>
    <string name="automatic_storage_manager_service_label" msgid="648592272375278978">"Servizio Automatic Storage Management"</string>
    <string name="automatic_storage_manager_notification_title" product="default" msgid="8480483265300964701">"Spazio sul telefono in esaurimento"</string>
    <string name="automatic_storage_manager_notification_title" product="tablet" msgid="3150907918531844467">"Spazio sul tablet in esaurimento"</string>
    <string name="automatic_storage_manager_notification_summary" msgid="2267399886362245822">"Consenti a Gestione archiviazione di liberare spazio rimuovendo automaticamente vecchi video e foto quando lo spazio sul telefono ricomincia a scarseggiare."</string>
    <string name="automatic_storage_manager_cancel_button" msgid="1826365037494962803">"No grazie"</string>
    <string name="automatic_storage_manager_activate_button" msgid="6257070263061898041">"Attiva"</string>
    <string name="deletion_helper_photos_loading_title" msgid="2768067991066779772">"Backup di foto e video"</string>
    <string name="deletion_helper_photos_loading_summary" msgid="8203033249458245854">"Ricerca di elementi…"</string>
    <string name="deletion_helper_no_threshold" msgid="6943179204098250444">"Mostra tutti gli elementi"</string>
    <string name="deletion_helper_default_threshold" msgid="8410389370069021113">"Nascondi elementi recenti"</string>
    <string name="deletion_helper_clear_dialog_message_first_time" msgid="686530413183529901">"Verranno rimossi <xliff:g id="CLEARABLE_BYTES">%1$s</xliff:g> di contenuti dal dispositivo"</string>
    <string name="automatic_storage_manager_activation_warning" msgid="7657017408180001078">"Il tuo spazio di archiviazione è ora gestito da Gestione archiviazione"</string>
    <string name="empty_state_title" msgid="4033285438176545309">"Niente da rimuovere"</string>
    <string name="empty_state_review_items_link" msgid="8411186441239304545">"Esamina elementi recenti"</string>
    <string name="empty_state_summary" msgid="8439893007424243790">"Non ci sono file vecchi da rimuovere. Per fare spazio, rimuovi le foto, i video e le app recenti."</string>
    <string name="app_requesting_space" msgid="857425181289960167">"L\'app <xliff:g id="APP">%1$s</xliff:g> richiede <xliff:g id="CLEARABLE_BYTES">%2$s</xliff:g> di spazio"</string>
</resources>
