<?xml version="1.0" encoding="UTF-8"?>
<!-- 
  ~ Copyright (C) 2012 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="toast_text_copied" msgid="8327159932780920627">"Texte copié."</string>
    <string name="call_custom" msgid="2786306789889210756">"Appeler le <xliff:g id="CUSTOM">%s</xliff:g>"</string>
    <string name="call_home" msgid="1479549630992276827">"Appeler le numéro de téléphone du domicile"</string>
    <string name="call_mobile" msgid="8618334085824709009">"Appeler le numéro de téléphone mobile"</string>
    <string name="call_work" msgid="8299062439076337075">"Appeler le numéro de téléphone professionnel"</string>
    <string name="call_fax_work" msgid="3770754834467992571">"Appeler le numéro de télécopie professionnel"</string>
    <string name="call_fax_home" msgid="6219051113573396065">"Appeler le numéro de télécopie du domicile"</string>
    <string name="call_pager" msgid="3038080882899955112">"Appeler le téléavertisseur"</string>
    <string name="call_other" msgid="4472141328347894937">"Appeler"</string>
    <string name="call_callback" msgid="687494744634190411">"Appeler le numéro de rappel"</string>
    <string name="call_car" msgid="9078083109758282133">"Appeler le numéro de téléphone de la voiture"</string>
    <string name="call_company_main" msgid="8768047233970315359">"Appeler le numéro de téléphone principal de l\'entreprise"</string>
    <string name="call_isdn" msgid="3342482563847537747">"Appeler le numéro de téléphone RNIS"</string>
    <string name="call_main" msgid="4640261071249938558">"Appeler le numéro de téléphone principal"</string>
    <string name="call_other_fax" msgid="2536328553125487877">"Appeler le numéro de télécopie"</string>
    <string name="call_radio" msgid="9055749313292712021">"Appeler par signal radio"</string>
    <string name="call_telex" msgid="2909886619224843563">"Appeler par télex"</string>
    <string name="call_tty_tdd" msgid="6704940636171078852">"Appeler le numéro TTY/TDD (malentendants)"</string>
    <string name="call_work_mobile" msgid="4408630608955148641">"Appeler le numéro de téléphone mobile professionnel"</string>
    <string name="call_work_pager" msgid="3036932765279753793">"Appeler le téléavertisseur professionnel"</string>
    <string name="call_assistant" msgid="5188990854852312696">"Appeler le <xliff:g id="ASSISTANT">%s</xliff:g>"</string>
    <string name="call_mms" msgid="8998771923464696960">"Appeler le numéro de téléphone MMS"</string>
    <string name="sms_custom" msgid="4601748252470175865">"Envoyer un SMS au <xliff:g id="CUSTOM">%s</xliff:g>"</string>
    <string name="sms_home" msgid="7765831490534280540">"Envoyer un SMS au numéro de téléphone du domicile"</string>
    <string name="sms_mobile" msgid="8387632124165893103">"Envoyer un SMS au numéro de téléphone mobile"</string>
    <string name="sms_work" msgid="3910570578912367742">"Envoyer un SMS au numéro de téléphone professionnel"</string>
    <string name="sms_fax_work" msgid="909086167151248212">"Envoyer un SMS au numéro de télécopie professionnel"</string>
    <string name="sms_fax_home" msgid="4145442497939634875">"Envoyer un SMS au numéro de télécopie du domicile"</string>
    <string name="sms_pager" msgid="5664381349583724906">"Envoyer un SMS au téléavertisseur"</string>
    <string name="sms_other" msgid="910895193552957097">"Envoyer un SMS"</string>
    <string name="sms_callback" msgid="728414485478941361">"Envoyer un SMS au numéro de rappel"</string>
    <string name="sms_car" msgid="8543669230270954512">"Envoyer un SMS au numéro de téléphone de la voiture"</string>
    <string name="sms_company_main" msgid="5441902128445061862">"Envoyer un SMS au numéro de téléphone principal de l\'entreprise"</string>
    <string name="sms_isdn" msgid="7142483128948042667">"Envoyer un SMS au numéro de téléphone RNIS"</string>
    <string name="sms_main" msgid="6815987840926184815">"Envoyer un SMS au numéro de téléphone principal"</string>
    <string name="sms_other_fax" msgid="8649822154879781466">"Envoyer un SMS au numéro de télécopie"</string>
    <string name="sms_radio" msgid="8750339218480745940">"Envoyer un SMS par signal radio"</string>
    <string name="sms_telex" msgid="5469333785775443999">"Envoyer un SMS par télex"</string>
    <string name="sms_tty_tdd" msgid="5057886576150816002">"Envoyer un SMS au numéro TTY/TDD (malentendants)"</string>
    <string name="sms_work_mobile" msgid="8426872094268475047">"Envoyer un SMS au numéro de téléphone mobile professionnel"</string>
    <string name="sms_work_pager" msgid="499303540738557836">"Envoyer un SMS au téléavertisseur professionnel"</string>
    <string name="sms_assistant" msgid="2677586547377136683">"Envoyer un SMS au <xliff:g id="ASSISTANT">%s</xliff:g>"</string>
    <string name="sms_mms" msgid="4887206338311086612">"Envoyer un SMS au numéro de téléphone MMS"</string>
    <string name="clearFrequentsConfirmation_title" msgid="1482750234535491083">"Effacer les contacts fréquents ?"</string>
    <string name="clearFrequentsConfirmation" msgid="2101370440975269958">"Cette opération efface la liste des personnes que vous contactez le plus souvent dans les applications Contacts et Téléphone, et oblige vos applications de messagerie électronique à mémoriser de nouveau les adresses que vous utilisez le plus fréquemment."</string>
    <string name="clearFrequentsProgress_title" msgid="3738406170865048982">"Suppression des contacts fréquents…"</string>
    <string name="status_available" msgid="4832569677396634846">"Disponible"</string>
    <string name="status_away" msgid="6267905184545881094">"Absent"</string>
    <string name="status_busy" msgid="7111912905211403545">"Occupé"</string>
    <string name="contactsList" msgid="7140022347217602605">"Contacts"</string>
    <string name="local_invisible_directory" msgid="8934840494825588347">"Autre"</string>
    <string name="directory_search_label" msgid="4484648822765516947">"Répertoire"</string>
    <string name="local_search_label" msgid="9094584931063745728">"Tous les contacts"</string>
    <string name="user_profile_contacts_list_header" msgid="8436133790234197565">"Moi"</string>
    <string name="search_results_searching" msgid="9022794597388306615">"Recherche en cours…"</string>
    <string name="foundTooManyContacts" msgid="3060037437459313616">"Plus de <xliff:g id="COUNT">%d</xliff:g> contacts ont été trouvés."</string>
    <string name="listFoundAllContactsZero" msgid="4406036083994138930">"Aucun contact"</string>
  <plurals name="searchFoundContacts">
    <item quantity="one" msgid="1013734912609351182">"1 contact trouvé"</item>
    <item quantity="other" msgid="4649647748678161594">"<xliff:g id="COUNT">%d</xliff:g> contacts trouvés"</item>
  </plurals>
    <string name="description_quick_contact_for" msgid="6355240770807101947">"Lien rapide vers <xliff:g id="NAME">%1$s</xliff:g>"</string>
    <string name="missing_name" msgid="2633118852693000081">"(Sans nom)"</string>
</resources>
