<?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">"Gestionnaire de téléchargement"</string>
    <string name="storage_description" msgid="7982444311558023664">"Téléchargements"</string>
    <string name="permlab_downloadManager" msgid="7779544811202855500">"Accéder au gestionnaire de téléchargement."</string>
    <string name="permdesc_downloadManager" msgid="4237406545998908947">"Permet à l\'application d\'accéder au gestionnaire de téléchargement et de l\'utiliser pour télécharger des fichiers. Des applications malveillantes peuvent utiliser cette fonctionnalité pour perturber les téléchargements et accéder à des données confidentielles."</string>
    <string name="permlab_downloadManagerAdvanced" msgid="7103642833308809655">"Fonctions avancées du gestionnaire de téléchargement."</string>
    <string name="permdesc_downloadManagerAdvanced" msgid="2659546004160962761">"Permet à l\'application d\'accéder aux fonctionnalités avancées du gestionnaire de téléchargement. Les applications malveillantes peuvent utiliser cette fonctionnalité pour perturber les téléchargements et accéder à des données confidentielles."</string>
    <string name="permlab_downloadCompletedIntent" msgid="945913803765675685">"Envoyer des notifications de téléchargement."</string>
    <string name="permdesc_downloadCompletedIntent" msgid="2094706189855699533">"Permet à l\'application d\'envoyer des notifications relatives aux téléchargements terminés. Des applications malveillantes peuvent utiliser cette fonctionnalité pour induire en erreur d\'autres applications pouvant télécharger des fichiers."</string>
    <string name="permlab_downloadCacheNonPurgeable" msgid="3069534308882047412">"Réserver de l\'espace dans le cache de téléchargement"</string>
    <string name="permdesc_downloadCacheNonPurgeable" msgid="2408760720334570420">"Permet à l\'application de télécharger des fichiers dans le cache de téléchargement, et empêche ainsi leur suppression automatique par le gestionnaire de téléchargement."</string>
    <string name="permlab_downloadWithoutNotification" msgid="8837971946078327262">"télécharger des fichiers sans envoyer de notification"</string>
    <string name="permdesc_downloadWithoutNotification" msgid="8483135034298639727">"Permet à l\'application de télécharger des fichiers dans le gestionnaire de téléchargement sans afficher de notification à l\'attention de l\'utilisateur."</string>
    <string name="permlab_accessAllDownloads" msgid="2436240495424393717">"Accéder à tous les téléchargements système"</string>
    <string name="permdesc_accessAllDownloads" msgid="1871832254578267128">"Permet à l\'application d\'afficher et de modifier tous les téléchargements lancés par n\'importe quelle application du système."</string>
    <string name="download_unknown_title" msgid="7015124071247271585">"&lt;Sans_titre&gt;"</string>
    <string name="notification_download_complete" msgid="5443563299253103667">"Téléchargement terminé."</string>
    <string name="notification_download_failed" msgid="8612136111952014978">"Échec du téléchargement"</string>
    <string name="notification_need_wifi_for_size" msgid="2556172885154833575">"Taille du fichier requiert Wi-Fi."</string>
    <string name="notification_paused_in_background" msgid="4328508073283591772">"Interrompu en arr.-plan."</string>
    <string name="wifi_required_title" msgid="1995971416871498179">"Téléchargement trop volumineux pour l\'opérateur"</string>
    <string name="wifi_required_body" msgid="3067694630143784449">"Vous devez utiliser le Wi-Fi pour finaliser ce téléchargement de <xliff:g id="SIZE">%1$s </xliff:g>. \n\nAppuyez sur <xliff:g id="QUEUE_TEXT">%2$s </xliff:g> pour le lancer lors de votre prochaine connexion à un réseau Wi-Fi."</string>
    <string name="wifi_recommended_title" msgid="7441589306734687400">"Ajouter à la file d\'attente des téléchargements?"</string>
    <string name="wifi_recommended_body" msgid="1314735166699936073">"Ce téléchargement (<xliff:g id="SIZE">%1$s </xliff:g>) risque de décharger votre batterie et/ou d\'entraîner une consommation excessive de votre connexion Internet mobile. Des frais supplémentaires peuvent être facturés par votre opérateur en fonction de votre forfait.\n\nAppuyez sur <xliff:g id="QUEUE_TEXT">%2$s</xliff:g> pour le lancer lors de votre prochaine connexion au Wi-Fi."</string>
    <string name="button_queue_for_wifi" msgid="422576726189179221">"File d\'attente"</string>
    <string name="button_cancel_download" msgid="2430166148737975604">"Annuler"</string>
    <string name="button_start_now" msgid="792123674007840864">"Commencer"</string>
    <plurals name="notif_summary_active" formatted="false" msgid="7290448463204837173">
      <item quantity="one">Téléchargement de <xliff:g id="NUMBER">%d</xliff:g> fichier</item>
      <item quantity="other">Téléchargement de <xliff:g id="NUMBER">%d</xliff:g> fichiers</item>
    </plurals>
    <plurals name="notif_summary_waiting" formatted="false" msgid="2814217662029273005">
      <item quantity="one"><xliff:g id="NUMBER">%d</xliff:g> fichier en attente</item>
      <item quantity="other"><xliff:g id="NUMBER">%d</xliff:g> fichiers en attente</item>
    </plurals>
    <string name="download_remaining" msgid="3139295890887972718">"Temps restant : <xliff:g id="DURATION">%s</xliff:g>"</string>
    <string name="download_no_application_title" msgid="7935659741162801699">"Impossible d\'ouvrir le fichier."</string>
    <string name="root_downloads" msgid="4098414876292351487">"Téléchargements"</string>
    <string name="download_queued" msgid="3302638231377947451">"Placé en file d\'attente"</string>
    <string name="download_running" msgid="3925050393361158266">"En cours de traitement"</string>
    <string name="download_error" msgid="5144180777324573236">"Échec"</string>
    <string name="download_running_percent" msgid="4305080769167320204">"En cours : <xliff:g id="PERCENTAGE">%s</xliff:g>"</string>
</resources>
