<?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">"Tagapamahala ng Pag-download"</string>
    <string name="permlab_downloadManager" msgid="7779544811202855500">"I-access ang tagapamahala ng pag-download."</string>
    <string name="permdesc_downloadManager" msgid="4237406545998908947">"Pinapayagan ang app na i-access ang download manager at gamitin ito upang mag-download ng mga file. Maaari itong gamitin ng mga nakapanghahamak na app upang gambalain ang mga download at mag-access ng pribadong impormasyon."</string>
    <string name="permlab_downloadManagerAdvanced" msgid="7103642833308809655">"Mga advanced na pag-andar ng tagapamahala ng pag-download."</string>
    <string name="permdesc_downloadManagerAdvanced" msgid="2659546004160962761">"Pinapayagan ang app na i-access ang mga advanced na paggana ng download manager. Maaari itong gamitin ng mga nakapanghahamak na app upang gambalain ang mga download at mag-access ng pribadong impormasyon."</string>
    <string name="permlab_downloadCompletedIntent" msgid="945913803765675685">"Magpadala ng mga notification sa pag-download."</string>
    <string name="permdesc_downloadCompletedIntent" msgid="2094706189855699533">"Pinapayagan ang app na magpadala ng mga notification tungkol sa mga nakumpletong download. Maaari itong gamitin ng mga nakapanghahamak na app upang lituhin ang ibang mga app na nagda-download ng mga file."</string>
    <string name="permlab_seeAllExternal" product="nosdcard" msgid="4084575448409212628">"Tingnan download sa USB"</string>
    <string name="permlab_seeAllExternal" product="default" msgid="140058400609165726">"Tingnan ang lahat ng mga pag-download sa SD card"</string>
    <string name="permdesc_seeAllExternal" msgid="1672759909065511233">"Pinapayagan ang app na makita ang lahat ng download sa SD card, kahit na anong app ang nag-download sa mga iyon."</string>
    <string name="permlab_downloadCacheNonPurgeable" msgid="3069534308882047412">"Maglaan ng puwang sa download cache"</string>
    <string name="permdesc_downloadCacheNonPurgeable" msgid="2408760720334570420">"Pinapayagan ang app na mag-download ng file sa cache ng download, na hindi awtomatikong matatanggal kapag kailangan ng download manager ng higit na puwang."</string>
    <string name="permlab_downloadWithoutNotification" msgid="8837971946078327262">"mag-download ng mga file nang walang notification"</string>
    <string name="permdesc_downloadWithoutNotification" msgid="8483135034298639727">"Pinapayagan ang app na mag-download ng mga file sa pamamagitan ng download manager nang walang anumang notification na ipinapakita sa user."</string>
    <string name="permlab_accessAllDownloads" msgid="2436240495424393717">"I-access ang lahat ng mga pag-download ng system"</string>
    <string name="permdesc_accessAllDownloads" msgid="1871832254578267128">"Pinapayagan ang app na tingnan at baguhin ang lahat ng download na sinimulan ng anumang app sa system."</string>
    <string name="download_unknown_title" msgid="7015124071247271585">"&lt;Walang pamagat&gt;"</string>
    <string name="notification_download_complete" msgid="5443563299253103667">"Kumpleto na ang download."</string>
    <string name="notification_download_failed" msgid="8612136111952014978">"Hindi matagumpay ang pag-download."</string>
    <string name="notification_need_wifi_for_size" msgid="2556172885154833575">"Kailangan ng laki ng download ng Wi-Fi."</string>
    <string name="notification_paused_in_background" msgid="4328508073283591772">"Na-pause sa background."</string>
    <string name="wifi_required_title" msgid="1995971416871498179">"Masyadong malaki ang download sa operator network"</string>
    <string name="wifi_required_body" msgid="3067694630143784449">"Dapat kang gumamit ng Wi-Fi upang kumpletuhin ang <xliff:g id="SIZE">%s </xliff:g> na download na ito. "\n\n"Pindutin ang <xliff:g id="QUEUE_TEXT">%s </xliff:g> upang simulan ang download na ito sa susunod na oras na nakakonekta ka sa Wi-Fi network."</string>
    <string name="wifi_recommended_title" msgid="7441589306734687400">"I-queue para sa pag-download sa ibang pagkakataon?"</string>
    <string name="wifi_recommended_body" msgid="1314735166699936073">"Ang pagsisimula sa <xliff:g id="SIZE">%s </xliff:g> na download na ito ngayon ay maaaring magpaikli sa buhay ng iyong baterya at/o magresulta sa labis-labis na paggamit ng iyong koneksyon ng data sa mobile, na maaaring humantong sa mga pagsingil ng iyong mobile operator depende sa iyong plan ng data."\n\n" Pindutin ang <xliff:g id="QUEUE_TEXT">%s</xliff:g> upang simulan ang download na ito sa susunod na oras nakakonekta ka sa isang Wi-Fi network."</string>
    <string name="button_queue_for_wifi" msgid="422576726189179221">"Queue"</string>
    <string name="button_cancel_download" msgid="2430166148737975604">"Kanselahin"</string>
    <string name="button_start_now" msgid="792123674007840864">"Magsimula ngayon"</string>
    <string name="download_percent" msgid="6889426633242976698">"<xliff:g id="NUMBER">%d</xliff:g><xliff:g id="PERCENT">%%</xliff:g>"</string>
    <!-- no translation found for notif_summary_active:one (8475775855911967027) -->
    <!-- no translation found for notif_summary_active:other (9087228371320573153) -->
    <!-- no translation found for notif_summary_waiting:one (5537481763963544278) -->
    <!-- no translation found for notif_summary_waiting:other (549229034166062887) -->
    <!-- no translation found for download_no_application_title (7935659741162801699) -->
    <skip />
</resources>
