<?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">"Download Manager"</string>
    <string name="storage_description" msgid="7982444311558023664">"Lejupielādes"</string>
    <string name="permlab_downloadManager" msgid="7779544811202855500">"Piekļuve lietojumprogrammai Download Manager."</string>
    <string name="permdesc_downloadManager" msgid="4237406545998908947">"Ļauj lietotnei piekļūt lejupielāžu pārvaldniekam un izmantot to failu lejupielādei. Ļaunprātīgas lietotnes var izmantot šo atļauju, lai traucētu lejupielādes un piekļūtu privātai informācijai."</string>
    <string name="permlab_downloadManagerAdvanced" msgid="7103642833308809655">"Izvērstas Download Manager funkcijas."</string>
    <string name="permdesc_downloadManagerAdvanced" msgid="2659546004160962761">"Ļauj lietotnei piekļūt lejupielāžu pārvaldnieka papildu funkcijām. Ļaunprātīgas lietotnes var izmantot šo atļauju, lai traucētu lejupielādes un piekļūtu privātai informācijai."</string>
    <string name="permlab_downloadCompletedIntent" msgid="945913803765675685">"Lejupielāžu paziņojumu sūtīšana."</string>
    <string name="permdesc_downloadCompletedIntent" msgid="2094706189855699533">"Ļauj lietotnei sūtīt paziņojumus par pabeigtām lejupielādēm. Ļaunprātīgas lietotnes var izmantot šo atļauju, lai maldinātu citas lietotnes, kurās tiek lejupielādēti faili."</string>
    <string name="permlab_seeAllExternal" product="nosdcard" msgid="4084575448409212628">"Sk. visas lejup. USB atm."</string>
    <string name="permlab_seeAllExternal" product="default" msgid="140058400609165726">"Skatīt visus SD kartē lejupielādētos failus"</string>
    <string name="permdesc_seeAllExternal" msgid="1672759909065511233">"Ļauj lietotnei skatīt visas lejupielādes SD kartē neatkarīgi no lejupielādei izmantotās lietotnes."</string>
    <string name="permlab_downloadCacheNonPurgeable" msgid="3069534308882047412">"Rezervēt vietu lejupielādes kešatmiņā"</string>
    <string name="permdesc_downloadCacheNonPurgeable" msgid="2408760720334570420">"Ļauj lietotnei lejupielādes kešatmiņā lejupielādēt failus, kurus nevar automātiski izdzēst, ja lejupielāžu pārvaldniekam nepieciešama papildu vieta."</string>
    <string name="permlab_downloadWithoutNotification" msgid="8837971946078327262">"lejupielādēt failus bez brīdinājuma"</string>
    <string name="permdesc_downloadWithoutNotification" msgid="8483135034298639727">"Ļauj lietotnei lejupielādēt failus, izmantojot lejupielāžu pārvaldnieku, nerādot nekādus paziņojumus lietotājam."</string>
    <string name="permlab_accessAllDownloads" msgid="2436240495424393717">"Piekļuve visām sistēmas lejupielādēm"</string>
    <string name="permdesc_accessAllDownloads" msgid="1871832254578267128">"Ļauj lietotnei skatīt un pārveidot visas lejupielādes, kas veiktas, izmantojot jebkuru sistēmas lietotni."</string>
    <string name="download_unknown_title" msgid="7015124071247271585">"&lt;Bez nosaukuma&gt;"</string>
    <string name="notification_download_complete" msgid="5443563299253103667">"Lejupielāde ir pabeigta."</string>
    <string name="notification_download_failed" msgid="8612136111952014978">"Lejupielāde neizdevās."</string>
    <string name="notification_need_wifi_for_size" msgid="2556172885154833575">"Lejupiel. nepiec. Wi-Fi."</string>
    <string name="notification_paused_in_background" msgid="4328508073283591772">"Pārtraukta fonā."</string>
    <string name="wifi_required_title" msgid="1995971416871498179">"Lejupielāde ir pārāk liela operatora tīklam."</string>
    <string name="wifi_required_body" msgid="3067694630143784449">"Lai pabeigtu šo lejupielādi (<xliff:g id="SIZE">%s </xliff:g>), ir jāizmanto Wi-Fi. \n\nPieskarieties <xliff:g id="QUEUE_TEXT">%s </xliff:g>, lai sāktu šo lejupielādi, kad tiks izveidots savienojums ar Wi-Fi tīklu."</string>
    <string name="wifi_recommended_title" msgid="7441589306734687400">"Vai ievietot rindā, lai lejupielādētu vēlāk?"</string>
    <string name="wifi_recommended_body" msgid="1314735166699936073">"Sākot šo lejupiel. (<xliff:g id="SIZE">%s </xliff:g>) tūlīt, var samaz. akum. darb. ilg. un/vai var tikt pārslog. mob. datu pārr. sav. Ja sav. tiek pārslog., jūsu mob. sak. oper. var no jums iekasēt maksu atkarībā no izmant. datu pārr. apjoma plāna.\n\nPieskarieties <xliff:g id="QUEUE_TEXT">%s</xliff:g>, lai sāktu šo lejupiel., kad tiks izveidots sav. ar Wi-Fi tīklu."</string>
    <string name="button_queue_for_wifi" msgid="422576726189179221">"Rinda"</string>
    <string name="button_cancel_download" msgid="2430166148737975604">"Atcelt"</string>
    <string name="button_start_now" msgid="792123674007840864">"Sākt tūlīt"</string>
    <plurals name="notif_summary_active" formatted="false" msgid="7290448463204837173">
      <item quantity="zero">Notiek <xliff:g id="NUMBER">%d</xliff:g> failu lejupielāde</item>
      <item quantity="one">Notiek <xliff:g id="NUMBER">%d</xliff:g> faila lejupielāde</item>
      <item quantity="other">Notiek <xliff:g id="NUMBER">%d</xliff:g> failu lejupielāde</item>
    </plurals>
    <plurals name="notif_summary_waiting" formatted="false" msgid="2814217662029273005">
      <item quantity="zero">Rindā: <xliff:g id="NUMBER">%d</xliff:g> failu</item>
      <item quantity="one">Rindā: <xliff:g id="NUMBER">%d</xliff:g> fails</item>
      <item quantity="other">Rindā: <xliff:g id="NUMBER">%d</xliff:g> faili</item>
    </plurals>
    <string name="download_remaining" msgid="3139295890887972718">"Atlikušais laiks: <xliff:g id="DURATION">%s</xliff:g>"</string>
    <string name="download_no_application_title" msgid="7935659741162801699">"Nevar atvērt failu"</string>
    <string name="root_downloads" msgid="4098414876292351487">"Lejupielādes"</string>
    <string name="download_queued" msgid="3302638231377947451">"Ievietots rindā"</string>
    <string name="download_running" msgid="3925050393361158266">"Notiek lejupielāde"</string>
    <string name="download_error" msgid="5144180777324573236">"Neizdevās"</string>
    <string name="download_running_percent" msgid="4305080769167320204">"Notiek (<xliff:g id="PERCENTAGE">%s</xliff:g>)"</string>
</resources>
