<?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 erabiltzeko 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>
