<?xml version="1.0" encoding="UTF-8"?>
<!--  Copyright (C) 2009 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="sharedUserLabel" msgid="8024311725474286801">"Apl Inti Android"</string>
    <string name="app_label" msgid="3389954322874982620">"Penyimpanan Kontak"</string>
    <string name="provider_label" msgid="6012150850819899907">"Kontak"</string>
    <string name="upgrade_msg" msgid="8640807392794309950">"Meningkatkan versi basis kontak."</string>
    <string name="upgrade_out_of_memory_notification_ticker" msgid="7638747231223520477">"Peningkatan versi kontak memerlukan lebih banyak memori."</string>
    <string name="upgrade_out_of_memory_notification_title" msgid="8888171924684998531">"Meningkatkan versi penyimpanan untuk kontak"</string>
    <string name="upgrade_out_of_memory_notification_text" msgid="8438179450336437626">"Sentuh untuk menyelesaikan peningkatan versi."</string>
    <string name="default_directory" msgid="93961630309570294">"Kontak"</string>
    <string name="local_invisible_directory" msgid="705244318477396120">"Lainnya"</string>
    <string name="read_write_all_voicemail_label" msgid="4557216100818257560">"Akses semua pesan suara"</string>
    <string name="read_write_all_voicemail_description" msgid="8029809937805761356">"Mengizinkan apl menyimpan dan mengambil semua pesan suara yang dapat diakses oleh perangkat ini."</string>
    <string name="voicemail_from_column" msgid="435732568832121444">"Kotak pesan dari "</string>
    <string name="debug_dump_title" msgid="4916885724165570279">"Salin basis data kontak"</string>
    <string name="debug_dump_database_message" msgid="406438635002392290">"Anda akan 1) membuat salinan basis data yang mencakup semua informasi terkait kontak dan semua log panggilan ke penyimpanan internal, dan 2) mengirimkannya sebagai email. Ingat untuk menghapus salinan secepatnya setelah Anda selesai menyalinnya dari perangkat atau saat email telah diterima."</string>
    <string name="debug_dump_delete_button" msgid="7832879421132026435">"Hapus sekarang"</string>
    <string name="debug_dump_start_button" msgid="2837506913757600001">"Mulai"</string>
    <string name="debug_dump_email_sender_picker" msgid="3534420908672176460">"Pilih program untuk mengirim file Anda"</string>
    <string name="debug_dump_email_subject" msgid="108188398416385976">"Db Kontak terlampir"</string>
    <string name="debug_dump_email_body" msgid="4577749800871444318">"Terlampir basis data kontak saya dengan semua informasi kontak. Harap tangani dengan benar."</string>
</resources>
