<?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">"Pengelola Penyimpanan"</string>
    <string name="cancel" msgid="7021218262867558825">"Batal"</string>
    <string name="storage_menu_free" msgid="1878247401436882778">"Kosongkan ruang"</string>
    <string name="deletion_helper_title" msgid="3526170325226275927">"Hapus item"</string>
    <string name="deletion_helper_app_summary" msgid="4904590040180275237">"<xliff:g id="DAYS">%1$d</xliff:g> hari yang lalu"</string>
    <!-- no translation found for deletion_helper_app_summary_item_size (3770886184921427886) -->
    <skip />
    <string name="deletion_helper_app_summary_never_used" msgid="2695210890063792461">"Tidak digunakan setahun terakhir"</string>
    <string name="deletion_helper_app_summary_unknown_used" msgid="8576377054665785558">"Tidak tahu kapan terakhir digunakan"</string>
    <string name="deletion_helper_free_button" msgid="1760529213407548661">"Kosongkan <xliff:g id="FREEABLE">%1$s</xliff:g>"</string>
    <string name="deletion_helper_photos_title" msgid="2602723121486729972">"Foto &amp; video yang di-backup"</string>
    <string name="deletion_helper_photos_age_summary" msgid="1820871709448371984">"Lebih dari 30 hari"</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">"Kosongkan ruang penyimpanan"</string>
    <string name="deletion_helper_clear_dialog_message" msgid="5196490478187120700">"<xliff:g id="CLEARABLE_BYTES">%1$s</xliff:g> konten akan dihapus dari perangkat"</string>
    <string name="deletion_helper_clear_dialog_remove" msgid="863575755467985516">"Kosongkan ruang penyimpanan"</string>
    <string name="deletion_helper_upsell_title" msgid="8512037674466762017">"Kelola penyimpanan secara otomatis?"</string>
    <string name="deletion_helper_upsell_summary" msgid="2301597713694474407">"<xliff:g id="USED">%1$s</xliff:g> kini dapat digunakan. Izinkan Pengelola penyimpanan otomatis mengosongkan ruang dengan menghapus konten cadangan dari perangkat Anda?"</string>
    <string name="deletion_helper_upsell_cancel" msgid="7084167642850053889">"Lain kali"</string>
    <string name="deletion_helper_upsell_activate" msgid="7157360257760895976">"Aktifkan"</string>
    <string name="deletion_helper_apps_group_title" msgid="2578309121350341258">"Aplikasi yang jarang digunakan"</string>
    <!-- no translation found for deletion_helper_apps_group_summary (360315517252452356) -->
    <skip />
    <string name="deletion_helper_automatic_title" msgid="4610119358490679299">"Otomatis"</string>
    <string name="deletion_helper_manual_title" msgid="3905192395039688529">"Manual"</string>
    <string name="deletion_helper_preference_title" msgid="803484286872745892">"Kosongkan penyimpanan sekarang"</string>
    <string name="automatic_storage_manager_service_label" msgid="648592272375278978">"Layanan Pengelolaan Penyimpanan Otomatis"</string>
    <string name="automatic_storage_manager_notification_title" product="default" msgid="8480483265300964701">"Ruang penyimpanan ponsel tinggal sedikit"</string>
    <string name="automatic_storage_manager_notification_title" product="tablet" msgid="3150907918531844467">"Ruang penyimpanan tablet hampir habis"</string>
    <string name="automatic_storage_manager_notification_summary" msgid="2267399886362245822">"Memungkinkan Pengelola Penyimpanan mengosongkan ruang, dengan otomatis menghapus foto dan video lama ketika ponsel hampir penuh lagi."</string>
    <string name="automatic_storage_manager_cancel_button" msgid="1826365037494962803">"Lain kali"</string>
    <string name="automatic_storage_manager_activate_button" msgid="6257070263061898041">"Aktifkan"</string>
    <string name="deletion_helper_photos_loading_title" msgid="2768067991066779772">"Foto &amp; video yang di-backup"</string>
    <string name="deletion_helper_photos_loading_summary" msgid="8203033249458245854">"Mencari item…"</string>
    <string name="deletion_helper_no_threshold" msgid="6943179204098250444">"Tampilkan semua item"</string>
    <string name="deletion_helper_default_threshold" msgid="8410389370069021113">"Sembunyikan item terbaru"</string>
    <string name="deletion_helper_clear_dialog_message_first_time" msgid="686530413183529901">"<xliff:g id="CLEARABLE_BYTES">%1$s</xliff:g> konten akan dihapus dari perangkat"</string>
    <string name="automatic_storage_manager_activation_warning" msgid="7657017408180001078">"Penyimpanan kini dikelola oleh pengelola penyimpanan"</string>
    <string name="empty_state_title" msgid="4033285438176545309">"Tak ada item dihapus"</string>
    <string name="empty_state_review_items_link" msgid="8411186441239304545">"Tinjau item yang baru dibuka"</string>
    <string name="empty_state_summary" msgid="8439893007424243790">"Tidak ada file lama lainnya untuk dihapus. Untuk mengosongkan ruang, hapus foto, video, dan aplikasi terkini."</string>
    <string name="app_requesting_space" msgid="857425181289960167">"<xliff:g id="APP">%1$s</xliff:g> membutuhkan ruang sebesar <xliff:g id="CLEARABLE_BYTES">%2$s</xliff:g>"</string>
</resources>
