<?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="5264040740662487684">"Pengurus Muat Turun"</string>
    <string name="storage_description" msgid="169690279447532621">"Muat turun"</string>
    <string name="permlab_downloadManager" msgid="4241473724446132797">"Akses pengurus muat turun."</string>
    <string name="permdesc_downloadManager" msgid="5562734314998369030">"Membenarkan aplikasi untuk mengakses pengurus muat turun dan menggunakannya untuk memuat turun fail. Aplikasi berniat jahat boleh menggunakan ini untuk mengganggu muat turun dan mengakses maklumat peribadi."</string>
    <string name="permlab_downloadManagerAdvanced" msgid="2225663947531460795">"Fungsi pengurus muat turun lanjutan."</string>
    <string name="permdesc_downloadManagerAdvanced" msgid="3902478062563030716">"Membenarkan aplikasi mengakses fungsi-fungsi lanjutan pengurus muat turun. Aplikasi berbahaya boleh menggunakan ini untuk mengganggu muat turun dan mengakses maklumat peribadi."</string>
    <string name="permlab_downloadCompletedIntent" msgid="2674407390116052956">"Hantar pemberitahuan muat turun."</string>
    <string name="permdesc_downloadCompletedIntent" msgid="3384693829639860032">"Membenarkan aplikasi menghantar pemberitahuan tentang muat turun yang telah siap. Aplikasi berbahaya boleh menggunakan ini untuk mengelirukan aplikasi lain yang memuat turun fail."</string>
    <string name="permlab_downloadCacheNonPurgeable" msgid="4538031250425141333">"Menempah ruang dalam cache muat turun"</string>
    <string name="permdesc_downloadCacheNonPurgeable" msgid="3071381088686444674">"Membenarkan aplikasi memuat turun fail ke cache muat turun, yang tidak boleh dipadamkan secara automatik apabila pengurus muat turun memerlukan lebih banyak ruang."</string>
    <string name="permlab_downloadWithoutNotification" msgid="4877101864770265405">"memuat turun fail tanpa pemberitahuan"</string>
    <string name="permdesc_downloadWithoutNotification" msgid="7699189763226483523">"Membenarkan aplikasi memuat turun fail melalui pengurus muat turun tanpa menunjukkan sebarang pemberitahuan kepada pengguna."</string>
    <string name="permlab_accessAllDownloads" msgid="8227356876527248611">"Mengakses semua muat turun sistem"</string>
    <string name="permdesc_accessAllDownloads" msgid="7541731738152145079">"Membenarkan aplikasi untuk melihat dan mengubah suai semua muat turun yang dimulakan oleh mana-mana aplikasi pada sistem."</string>
    <string name="download_unknown_title" msgid="1017800350818840396">"&lt;Tidak bertajuk&gt;"</string>
    <string name="notification_download_complete" msgid="466652037490092787">"Muat turun selesai."</string>
    <string name="notification_download_failed" msgid="3932167763860605874">"Muat turun tidak berjaya."</string>
    <string name="notification_need_wifi_for_size" msgid="4743443900432303646">"Saiz m.trn perlukn Wi-Fi"</string>
    <string name="notification_paused_in_background" msgid="6393408819031041778">"Dijeda di latar belakang."</string>
    <string name="wifi_required_title" msgid="7266700488421122218">"Muat turun terlalu besar untuk operator rangkaian"</string>
    <string name="wifi_required_body" msgid="4005023496578941958">"Anda mesti menggunakan Wi-Fi untuk melengkapkan muat turun <xliff:g id="SIZE">%1$s </xliff:g> ini. \n\nSentuh <xliff:g id="QUEUE_TEXT">%2$s </xliff:g> untuk memulakan muat turun ini lain kali anda disambungkan ke rangkaian Wi-Fi."</string>
    <string name="wifi_recommended_title" msgid="6488158053932133804">"Baris gilir untuk dimuat turun kemudian?"</string>
    <string name="wifi_recommended_body" msgid="8710820743211704403">"Memulakan muat turun <xliff:g id="SIZE">%1$s </xliff:g> ini sekarang mungkin memendekkan hayat bateri dan/atau menyebabkan penggunaan berlebihan sambungan data mudah alih anda, yang boleh menyebabkan caj dikenakan oleh operator mudah alih anda, bergantung kepada pelan data anda.\n\n Sentuh <xliff:g id="QUEUE_TEXT">%2$s</xliff:g> untuk memulakan muat turun ini pada kali seterusnya anda disambungkan kepada rangkaian Wi-Fi."</string>
    <string name="button_queue_for_wifi" msgid="6650185573566994738">"Baris gilir"</string>
    <string name="button_cancel_download" msgid="4135046775536601831">"Batal"</string>
    <string name="button_start_now" msgid="3817100969365441730">"Mulakan sekarang"</string>
    <plurals name="notif_summary_active" formatted="false" msgid="8652501374845637331">
      <item quantity="other"><xliff:g id="NUMBER">%d</xliff:g> fail sedang dimuat turun</item>
      <item quantity="one">1 fail sedang dimuat turun</item>
    </plurals>
    <plurals name="notif_summary_waiting" formatted="false" msgid="1782251721955177526">
      <item quantity="other"><xliff:g id="NUMBER">%d</xliff:g> fail sedang menunggu</item>
      <item quantity="one">1 fail sedang menunggu</item>
    </plurals>
    <string name="download_remaining" msgid="2313089371178695625">"<xliff:g id="DURATION">%s</xliff:g> tinggal"</string>
    <string name="download_no_application_title" msgid="5780812573953335721">"Tidak dapat membuka fail"</string>
    <string name="root_downloads" msgid="8380500940211778491">"Muat turun"</string>
    <string name="download_queued" msgid="3383844741769045371">"Dibaris gilir"</string>
    <string name="download_running" msgid="774654178925442490">"Sedang berlangsung"</string>
    <string name="download_error" msgid="1857737890005386798">"Tidak berjaya"</string>
    <string name="download_running_percent" msgid="3492753569359254730">"Sedang berjalan, <xliff:g id="PERCENTAGE">%s</xliff:g>"</string>
</resources>
