<?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">"Deskargen kudeatzailea"</string>
    <string name="storage_description" msgid="169690279447532621">"Deskargak"</string>
    <string name="permlab_downloadManager" msgid="4241473724446132797">"Atzitu deskargen kudeatzailea."</string>
    <string name="permdesc_downloadManager" msgid="5562734314998369030">"Deskargen kudeatzailea atzitzea eta fitxategiak deskargatzeko hori erabiltzeko baimena ematen die aplikazioei. Asmo txarreko aplikazioek deskargak eteteko eta informazio pribatua atzitzeko erabil dezakete hori."</string>
    <string name="permlab_downloadManagerAdvanced" msgid="2225663947531460795">"Deskargen kudeatzailearen eginbide aurreratuak."</string>
    <string name="permdesc_downloadManagerAdvanced" msgid="3902478062563030716">"Deskargen kudeatzailearen eginbide aurreratuak atzitzeko baimena ematen die aplikazioei. Asmo txarreko aplikazioek deskargak eteteko eta informazio pribatua atzitzeko erabil dezakete hori."</string>
    <string name="permlab_downloadCompletedIntent" msgid="2674407390116052956">"Bidali deskargen jakinarazpenak."</string>
    <string name="permdesc_downloadCompletedIntent" msgid="3384693829639860032">"Osatutako deskargei buruzko jakinarazpenak bidaltzeko baimena ematen die aplikazioei. Asmo txarreko aplikazioek fitxategiak deskargatzen dituzten beste aplikazioak nahasteko erabil dezakete hori."</string>
    <string name="permlab_downloadCacheNonPurgeable" msgid="4538031250425141333">"Erreserbatu memoria deskarga-cachean"</string>
    <string name="permdesc_downloadCacheNonPurgeable" msgid="3071381088686444674">"Fitxategiak deskarga-cachera deskargatzeko baimena ematen die aplikazioei (ezin izango dira automatikoki ezabatu deskargen kudeatzaileak tokia behar duenean)."</string>
    <string name="permlab_downloadWithoutNotification" msgid="4877101864770265405">"Deskargatu fitxategiak jakinarazi gabe"</string>
    <string name="permdesc_downloadWithoutNotification" msgid="7699189763226483523">"Fitxategiak deskargen kudeatzailearen bidez baina erabiltzaileari jakinarazi gabe deskargatzeko baimena ematen die aplikazioei."</string>
    <string name="permlab_accessAllDownloads" msgid="8227356876527248611">"Atzitu sistemaren deskarga guztiak"</string>
    <string name="permdesc_accessAllDownloads" msgid="7541731738152145079">"Aplikazioek sisteman hasitako deskarga guztiak ikusteko eta aldatzeko baimena ematen die aplikazioei."</string>
    <string name="download_unknown_title" msgid="1017800350818840396">"&lt;Izengabea&gt;"</string>
    <string name="notification_download_complete" msgid="466652037490092787">"Osatu da deskarga."</string>
    <string name="notification_download_failed" msgid="3932167763860605874">"Ezin izan da deskargatu."</string>
    <string name="notification_need_wifi_for_size" msgid="4743443900432303646">"Wi-Fi konexioa behar da."</string>
    <string name="notification_paused_in_background" msgid="6393408819031041778">"Atzeko planoan pausatuta"</string>
    <string name="wifi_required_title" msgid="7266700488421122218">"Deskarga handiegia da operadorearen sarerako"</string>
    <string name="wifi_required_body" msgid="4005023496578941958">"Wi-Fi konexioa erabili behar duzu <xliff:g id="SIZE">%1$s </xliff:g>-ko deskarga hau osatzeko. \n\nwifi-sare batera konektatzen zaren hurrengo aldian deskargari berrekiteko, ukitu <xliff:g id="QUEUE_TEXT">%2$s </xliff:g>."</string>
    <string name="wifi_recommended_title" msgid="6488158053932133804">"Ilaran ezarri geroago deskargatzeko?"</string>
    <string name="wifi_recommended_body" msgid="8710820743211704403">"<xliff:g id="SIZE">%1$s </xliff:g>-ko deskarga hau hasten baduzu, baliteke bateriak gutxiago irautea eta/edo datu-konexioa gehiegi erabiltzea eta, horren ondorioz, operadoreak gastu gehigarriak kobratzea, darabilzun datu-planaren arabera.\n\n wifi-sare batera konektatzen zaren hurrengo aldian deskargari berrekiteko, ukitu <xliff:g id="QUEUE_TEXT">%2$s</xliff:g>."</string>
    <string name="button_queue_for_wifi" msgid="6650185573566994738">"Ezarri ilaran"</string>
    <string name="button_cancel_download" msgid="4135046775536601831">"Utzi"</string>
    <string name="button_start_now" msgid="3817100969365441730">"Hasi"</string>
    <plurals name="notif_summary_active" formatted="false" msgid="8652501374845637331">
      <item quantity="other"><xliff:g id="NUMBER">%d</xliff:g> fitxategi deskargatzen</item>
      <item quantity="one">Fitxategi bat deskargatzen</item>
    </plurals>
    <plurals name="notif_summary_waiting" formatted="false" msgid="1782251721955177526">
      <item quantity="other"><xliff:g id="NUMBER">%d</xliff:g> fitxategi zain</item>
      <item quantity="one">Fitxategi bat zain</item>
    </plurals>
    <string name="download_remaining" msgid="2313089371178695625">"Falta den denbora: <xliff:g id="DURATION">%s</xliff:g>"</string>
    <string name="download_no_application_title" msgid="5780812573953335721">"Ezin da fitxategia ireki"</string>
    <string name="root_downloads" msgid="8380500940211778491">"Deskargak"</string>
    <string name="download_queued" msgid="3383844741769045371">"Ilaran ezarri da"</string>
    <string name="download_running" msgid="774654178925442490">"Abian"</string>
    <string name="download_error" msgid="1857737890005386798">"Ezin izan da deskargatu"</string>
    <string name="download_running_percent" msgid="3492753569359254730">"Abian, <xliff:g id="PERCENTAGE">%s</xliff:g>"</string>
</resources>
