<?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">"Kidhibiti Vipakuzi"</string>
    <string name="permlab_downloadManager" msgid="7779544811202855500">"Fikia kidhibiti cha vipakuzi"</string>
    <string name="permdesc_downloadManager" msgid="4237406545998908947">"Inaruhusu programu kufikia kidhibiti vipakuzi na kukitumia ili kupakua faili. Programu hasidi zinaweza kutumia hii ili kutatiza vipakuzi na kufikia maelezo ya kibinafsi."</string>
    <string name="permlab_downloadManagerAdvanced" msgid="7103642833308809655">"Vitendaji mahiri vya kisimamizi vipakuzi."</string>
    <string name="permdesc_downloadManagerAdvanced" msgid="2659546004160962761">"Inaruhusu programu kufikia vitendaji mahiri vya kidhibiti vipakuzi. Programu hasidi zinaweza kutumia hii ili kutatiza vipakuzi na kufikia maelezo ya kibinafsi."</string>
    <string name="permlab_downloadCompletedIntent" msgid="945913803765675685">"Tuma arifa za vipakuzi."</string>
    <string name="permdesc_downloadCompletedIntent" msgid="2094706189855699533">"Inaruhusu programu kutuma notisi kuhusu vipakuzi vilivyokamilika. Programu hasidi zinaweza kutumia hii kuchanganya programu zingine ambazo hupakua faili."</string>
    <string name="permlab_seeAllExternal" product="nosdcard" msgid="4084575448409212628">"Angalia vipakuzi vyote kwa hifadhi ya USB"</string>
    <string name="permlab_seeAllExternal" product="default" msgid="140058400609165726">"Tazama vipakuzi vyote kwa kadi ya SD"</string>
    <string name="permdesc_seeAllExternal" msgid="1672759909065511233">"Inaruhusu programu kuona vipakuzi vyote kwenye kadi ya SD, pasi kuzingatia ni programu gani iliyozipakuwa."</string>
    <string name="permlab_downloadCacheNonPurgeable" msgid="3069534308882047412">"Geuza nafasi katika kache ya kupakua"</string>
    <string name="permdesc_downloadCacheNonPurgeable" msgid="2408760720334570420">"Inaruhusu programu kupakua faili kwa kache ya vipakuzi ambayo haiwezi kufutwa kiotomatiki wakati kidhibiti upakuaji kinahitaji nafasi zaidi."</string>
    <string name="permlab_downloadWithoutNotification" msgid="8837971946078327262">"Pakua faili bila kutoa arifa"</string>
    <string name="permdesc_downloadWithoutNotification" msgid="8483135034298639727">"Inaruhusu programu kupakua faili kupitia kidhibiti vipakuzi bila notisi yoyote kuonyeshwa kwa mtumiaji."</string>
    <string name="permlab_accessAllDownloads" msgid="2436240495424393717">"Fikia vipakuzi vyote vya mfumo"</string>
    <string name="permdesc_accessAllDownloads" msgid="1871832254578267128">"Inaruhusu programu kuona na kurekebisha vipakuzi vyote vilivyoanzishwa na programu yoyote kwenye mfumo."</string>
    <string name="download_unknown_title" msgid="7015124071247271585">"&lt;Haina Kichwa&gt;"</string>
    <string name="notification_download_complete" msgid="5443563299253103667">"Upakuaji umekamilika"</string>
    <string name="notification_download_failed" msgid="8612136111952014978">"Kupakua hakujafaulu."</string>
    <string name="notification_need_wifi_for_size" msgid="2556172885154833575">"Ukubwa wa kipakuzi uhitaji Wi-Fi"</string>
    <string name="notification_paused_in_background" msgid="4328508073283591772">"Imesitishwa katika usuli."</string>
    <string name="wifi_required_title" msgid="1995971416871498179">"Kipakuzi ni kikubwa zaidi kwa mtandao wa mtoa huduma"</string>
    <string name="wifi_required_body" msgid="3067694630143784449">"Lazima utumia Wi-Fi ili ukamilishe kipakuzi cha <xliff:g id="SIZE">%s </xliff:g>. "\n\n"Gusa <xliff:g id="QUEUE_TEXT">%s </xliff:g> ili kuanzisha upakuaji huu wakati utakapounganishwa tena kwenye mtandao wa Wi-Fi."</string>
    <string name="wifi_recommended_title" msgid="7441589306734687400">"Weka katika foleni ya kupakulia baadaye?"</string>
    <string name="wifi_recommended_body" msgid="1314735166699936073">"Kuanza kupakua kipakuzi hiki cha <xliff:g id="SIZE">%s </xliff:g> kunaweza kufupisha maisha ya betri yako na / au kusababisha matumizi makubwa ya muunganisho wa data wa simu yako ya mkononi, jambo ambalo linaweza kusababisha kutozwa na mtoa huduma wako wa simu ya mkononi kulingana na mpango wako wa data. "\n" "\n" Guza <xliff:g id="QUEUE_TEXT">%s</xliff:g> ili kuanza kupakua wakati utakapokuwa umeunganishwa na mtandao wa Wi-Fi."</string>
    <string name="button_queue_for_wifi" msgid="422576726189179221">"Foleni"</string>
    <string name="button_cancel_download" msgid="2430166148737975604">"Ghairi"</string>
    <string name="button_start_now" msgid="792123674007840864">"Anza sasa"</string>
    <string name="download_percent" msgid="6889426633242976698">"<xliff:g id="NUMBER">%d</xliff:g><xliff:g id="PERCENT">%%</xliff:g>"</string>
  <plurals name="notif_summary_active">
    <item quantity="one" msgid="8475775855911967027">"Faili 1 inapakua"</item>
    <item quantity="other" msgid="9087228371320573153">"Faili <xliff:g id="NUMBER">%d</xliff:g> zinapakua"</item>
  </plurals>
  <plurals name="notif_summary_waiting">
    <item quantity="one" msgid="5537481763963544278">"Faili 1 inasubiri"</item>
    <item quantity="other" msgid="549229034166062887">"Faili <xliff:g id="NUMBER">%d</xliff:g> zinasubiri"</item>
  </plurals>
    <string name="download_remaining" msgid="3139295890887972718">"<xliff:g id="DURATION">%s</xliff:g> zinazosalia"</string>
    <string name="download_no_application_title" msgid="7935659741162801699">"Haiwezi kufungua faili"</string>
</resources>
