# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the meshy package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
msgid ""
msgstr ""
"Project-Id-Version: meshy\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-07-31 13:39+0200\n"
"PO-Revision-Date: 2026-07-25 10:07+0000\n"
"Last-Translator: LievenBlancke <lebeno@noreply.codeberg.org>\n"
"Language-Team: French <https://translate.codeberg.org/projects/meshy/"
"application/fr/>\n"
"Language: fr\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n > 1;\n"
"X-Generator: Weblate 2026.6.1\n"

#: data/page.codeberg.sesivany.Meshy.desktop.in:4
#: data/page.codeberg.sesivany.Meshy.metainfo.xml.in:8 data/ui/window.ui:123
msgid "Meshy"
msgstr "Meshy"

#: data/page.codeberg.sesivany.Meshy.desktop.in:5
#: data/page.codeberg.sesivany.Meshy.metainfo.xml.in:9
msgid "MeshCore mesh network client"
msgstr "MeshCore client de réseau maillé"

#: data/page.codeberg.sesivany.Meshy.desktop.in:11
msgid "mesh;lora;radio;chat;"
msgstr "mesh;lora;radio;chat;"

#: data/page.codeberg.sesivany.Meshy.metainfo.xml.in:11
msgid ""
"Meshy is a client for MeshCore LoRa mesh networking devices. Connect to your "
"companion device over Bluetooth to send and receive encrypted messages, "
"manage contacts, configure channels, and monitor your mesh network."
msgstr ""
"Meshy est un client pour les appareils MeshCore LoRa en réseau maillé. "
"Connectez-vous à votre appareil compagnon via Bluetooth pour envoyer et "
"recevoir des messages chiffrés, gérer les contacts, configurer les canaux et "
"surveiller votre réseau maillé."

#: data/page.codeberg.sesivany.Meshy.metainfo.xml.in:17
msgid "Features:"
msgstr "Caractéristiques:"

#: data/page.codeberg.sesivany.Meshy.metainfo.xml.in:19
msgid "Bluetooth LE and USB serial connectivity"
msgstr "Connectivité Bluetooth LE et USB série"

#: data/page.codeberg.sesivany.Meshy.metainfo.xml.in:20
msgid "End-to-end encrypted messaging"
msgstr "Messagerie chiffrée de bout en bout"

#: data/page.codeberg.sesivany.Meshy.metainfo.xml.in:21
msgid "Public, private, and hashtag channels"
msgstr "Canaux publics, privés et hashtag"

#: data/page.codeberg.sesivany.Meshy.metainfo.xml.in:22
msgid "Contact management with location tracking"
msgstr "Gestion des contacts avec suivi de localisation"

#: data/page.codeberg.sesivany.Meshy.metainfo.xml.in:23
msgid "Interactive map view with route tracing"
msgstr "Vue cartographique interactive avec traçage d'itinéraire"

#: data/page.codeberg.sesivany.Meshy.metainfo.xml.in:24
msgid "Device and repeater management"
msgstr "Gestion des appareils et des répéteurs"

#: data/page.codeberg.sesivany.Meshy.metainfo.xml.in:25
msgid "QR code scanning for quick contact exchange"
msgstr "Scan de code QR pour échange rapide de contacts"

#: data/page.codeberg.sesivany.Meshy.metainfo.xml.in:30
msgid "Jiri Eischmann"
msgstr "Jiri Eischmann"

#: data/page.codeberg.sesivany.Meshy.metainfo.xml.in:42
#, fuzzy
msgid "Channel chats"
msgstr "Canaux"

#: data/page.codeberg.sesivany.Meshy.metainfo.xml.in:46
#, fuzzy
msgid "Repeater management"
msgstr "Gestion des appareils et des répéteurs"

#: data/page.codeberg.sesivany.Meshy.metainfo.xml.in:50
msgid "Settings - Dark Style"
msgstr ""

#: data/page.codeberg.sesivany.Meshy.metainfo.xml.in:54
msgid "Map view showing contact locations"
msgstr "Vue cartographique affichant les positions des contacts"

#: data/gtk/help-overlay.ui:10
msgid "General"
msgstr "Général"

#: data/gtk/help-overlay.ui:13 data/ui/window.ui:11
msgid "Disconnect"
msgstr "Déconnecter"

#: data/gtk/help-overlay.ui:19 data/ui/window.ui:31 data/ui/window.ui:52
msgid "Quit"
msgstr "Quitter"

#: data/gtk/help-overlay.ui:25 data/ui/window.ui:23 data/ui/window.ui:44
msgid "Help"
msgstr ""

#: data/gtk/help-overlay.ui:31 data/ui/window.ui:19 data/ui/window.ui:40
msgid "Keyboard Shortcuts"
msgstr "Raccourcis clavier"

#: data/gtk/help-overlay.ui:39
msgid "Navigation"
msgstr "Navigation"

#: data/gtk/help-overlay.ui:42 data/ui/window.ui:181
msgid "Device"
msgstr "Appareil"

#: data/gtk/help-overlay.ui:48 data/ui/window.ui:197
#: data/ui/manual-backup-dialog.ui:106 data/ui/auto-backup-dialog.ui:120
#: data/ui/import-backup-dialog.ui:113 src/window.py:648
msgid "Contacts"
msgstr "Contacts"

#: data/gtk/help-overlay.ui:54 data/ui/window.ui:227
#: data/ui/manual-backup-dialog.ui:147 data/ui/auto-backup-dialog.ui:161
#: data/ui/import-backup-dialog.ui:154 src/window.py:660
msgid "Channels"
msgstr "Canaux"

#. Navigation button for collapsed mode
#: data/gtk/help-overlay.ui:60 data/ui/window.ui:254 src/window.py:674
#: src/window.py:677 src/views/map_view.py:907
msgid "Map"
msgstr "Carte"

#: data/gtk/help-overlay.ui:66 data/ui/window.ui:15 data/ui/window.ui:274
#: data/ui/repeater-view.ui:574 data/ui/manual-backup-dialog.ui:53
#: data/ui/auto-backup-dialog.ui:67 data/ui/import-backup-dialog.ui:60
#: src/window.py:696 src/window.py:697
msgid "Settings"
msgstr "Paramètres"

#: data/gtk/help-overlay.ui:74
msgid "Messaging"
msgstr "Messagerie"

#: data/gtk/help-overlay.ui:77
msgid "Search Contacts"
msgstr "Rechercher des Contacts"

#: data/gtk/help-overlay.ui:83
msgid "Focus Message Input"
msgstr "Concentrer Saisie du Message"

#: data/gtk/help-overlay.ui:89
msgid "Previous Contact/Channel"
msgstr "Contact/Canal Précédent"

#: data/gtk/help-overlay.ui:95
msgid "Next Contact/Channel"
msgstr "Contact/Canal Suivant"

#: data/gtk/help-overlay.ui:101
msgid "Previous Unread"
msgstr "Non Lu Précédent"

#: data/gtk/help-overlay.ui:107
msgid "Next Unread"
msgstr "Non Lu Suivant"

#: data/ui/window.ui:27 data/ui/window.ui:48
msgid "About Meshy"
msgstr "À propos de Meshy"

#: data/ui/window.ui:78 data/ui/window.ui:330 src/connection_controller.py:270
#: src/connection_controller.py:478 src/window.py:1064 src/window.py:1077
#: src/views/connection_view.py:119 src/views/connection_view.py:161
#: src/views/connection_view.py:393 src/views/connection_view.py:529
msgid "Connect"
msgstr "Connecter"

#: data/ui/window.ui:85 data/ui/window.ui:130 data/ui/window.ui:318
msgid "Menu"
msgstr "Menu"

#: data/ui/window.ui:141
msgid "Connecting…"
msgstr "De Liaison…"

#: data/ui/window.ui:307
msgid "Show navigation"
msgstr "Afficher la Navigation"

#: data/ui/window.ui:328 src/connection_controller.py:269
#: src/connection_controller.py:477 src/window.py:1063 src/window.py:1076
#: src/views/device_view.py:365
msgid "Not connected"
msgstr "Non Connecté"

#: data/ui/device-view.ui:29 src/views/device_view.py:497
msgid "Disconnected"
msgstr "Déconnecté"

#: data/ui/device-view.ui:30 data/ui/repeater-view.ui:19
#: data/ui/sensor-view.ui:38
msgid "Status"
msgstr "Statut"

#: data/ui/device-view.ui:44 src/window.py:637 src/window.py:638
msgid "Device Information"
msgstr "Informations sur l'Appareil"

#: data/ui/device-view.ui:48
msgid "Node Name"
msgstr "Nom du Nœud"

#: data/ui/device-view.ui:54
msgid "Board"
msgstr "Carte"

#: data/ui/device-view.ui:60
msgid "Firmware"
msgstr "Firmware"

#: data/ui/device-view.ui:63
msgid "Update"
msgstr "Mise à Jour"

#: data/ui/device-view.ui:66
msgid "Open firmware flasher"
msgstr "Ouvrir le flasheur du firmware"

#: data/ui/device-view.ui:78 data/ui/contact-detail-dialog.ui:62
msgid "Public Key"
msgstr "Clé Publique"

#: data/ui/device-view.ui:91 data/ui/contact-detail-dialog.ui:179
msgid "Telemetry"
msgstr "Télémétrie"

#: data/ui/device-view.ui:96
msgid "Request telemetry"
msgstr "Demande de télémétrie"

#: data/ui/device-view.ui:106
msgid "Syncing…"
msgstr "Synchronisation…"

#: data/ui/device-view.ui:107 data/ui/settings-view.ui:239
#: data/ui/settings-view.ui:380 data/ui/repeater-view.ui:678
#: src/views/contact_detail_dialog.py:84 src/views/device_view.py:336
#: src/views/settings_view.py:133
msgid "Location"
msgstr "Position"

#: data/ui/device-view.ui:112
msgid "Show on map"
msgstr "Afficher sur la carte"

#: data/ui/device-view.ui:127
msgid "Battery &amp; Storage"
msgstr "Batterie &amp; Stockage"

#: data/ui/device-view.ui:131 data/ui/repeater-view.ui:76
#: src/views/contacts_view.py:1122 src/views/repeater_view.py:457
#: src/views/sensor_view.py:146
msgid "Battery"
msgstr "Batterie"

#: data/ui/device-view.ui:150
msgid "Storage"
msgstr "Stockage"

#: data/ui/device-view.ui:172
msgid "Radio Configuration"
msgstr "Configuration Radio"

#: data/ui/device-view.ui:176
msgid "Frequency"
msgstr "Fréquence"

#: data/ui/device-view.ui:182
msgid "Bandwidth"
msgstr "Débit"

#: data/ui/device-view.ui:188 data/ui/settings-view.ui:103
#: data/ui/repeater-view.ui:764
#, fuzzy
msgid "Spreading Factor"
msgstr "Facteur d'Étalement"

#: data/ui/device-view.ui:194 data/ui/settings-view.ui:116
#: data/ui/repeater-view.ui:776
msgid "Coding Rate"
msgstr ""

#: data/ui/device-view.ui:200
msgid "TX Power"
msgstr "Puissance TX"

#: data/ui/device-view.ui:206 data/ui/settings-view.ui:204
msgid "Default Path Hash Size"
msgstr "Taille Hash Chemin Défaut"

#: data/ui/device-view.ui:215
msgid "Statistics"
msgstr "Statistiques"

#: data/ui/device-view.ui:220
#, fuzzy
msgid "Refresh statistics"
msgstr "Rafraîchir les statistiques"

#: data/ui/device-view.ui:229 data/ui/repeater-view.ui:119
#: src/views/device_view.py:107
msgid "Noise Floor"
msgstr "Plancher de Bruit"

#: data/ui/device-view.ui:245 data/ui/repeater-view.ui:107
#: src/views/device_view.py:108
msgid "Last RSSI"
msgstr "Dernier RSSI"

#: data/ui/device-view.ui:261 data/ui/repeater-view.ui:113
#: src/views/device_view.py:109
msgid "Last SNR"
msgstr "Dernier SNR"

#: data/ui/device-view.ui:277
msgid "Airtime"
msgstr "Temps d'Antenne"

#: data/ui/device-view.ui:283 data/ui/repeater-view.ui:153
msgid "Packets"
msgstr "Paquets"

#: data/ui/device-view.ui:289 data/ui/repeater-view.ui:175
#: src/views/contacts_view.py:987
msgid "Flood"
msgstr "Flood"

#: data/ui/device-view.ui:295 data/ui/repeater-view.ui:181
#: src/views/contact_detail_dialog.py:472
#: src/views/contact_detail_dialog.py:671 src/views/contacts_view.py:937
#: src/views/contacts_view.py:989
msgid "Direct"
msgstr "Direct"

#: data/ui/device-view.ui:301 data/ui/repeater-view.ui:82
msgid "Uptime"
msgstr "Temps de Disponibilité"

#: data/ui/device-view.ui:307 data/ui/repeater-view.ui:88
msgid "Message Queue"
msgstr "Liste de messages"

#: data/ui/settings-view.ui:16 src/views/settings_view.py:130
msgid "Application"
msgstr "Application"

#: data/ui/settings-view.ui:17
msgid "Configure the behavior and appearance of the application"
msgstr "Configurer le comportement et l'apparence de l'application"

#: data/ui/settings-view.ui:20
msgid "Style"
msgstr "Thème"

#: data/ui/settings-view.ui:21
msgid "Choose the appearance of the application"
msgstr "Choisir l'apparence de l'application"

#: data/ui/settings-view.ui:25
msgid "Follow System"
msgstr "Thème du système"

#: data/ui/settings-view.ui:26
msgid "Light"
msgstr "Clair"

#: data/ui/settings-view.ui:27
msgid "Dark"
msgstr "Sombre"

#: data/ui/settings-view.ui:28 data/ui/settings-view.ui:36
msgid "Palette Theme"
msgstr "Palette du thème"

#: data/ui/settings-view.ui:37
msgid "MeshCore Dark"
msgstr "Meshcore Dark"

#: data/ui/settings-view.ui:49
msgid "Channel Notifications"
msgstr "Notifications de Canal"

#: data/ui/settings-view.ui:50
msgid "Default notification level for all channels"
msgstr "Niveau de notification par défaut pour tous les canaux"

#: data/ui/settings-view.ui:54 src/views/channels_view.py:1775
msgid "All Messages"
msgstr "Tous les messages"

#: data/ui/settings-view.ui:55 src/views/channels_view.py:1775
msgid "Mentions Only"
msgstr "Mentions uniquement"

#: data/ui/settings-view.ui:56 src/views/contact_detail_dialog.py:241
#: src/views/channels_view.py:1775 src/views/channels_view.py:1812
#: src/views/settings_view.py:158 src/views/repeater_view.py:1048
msgid "None"
msgstr "Aucun"

#: data/ui/settings-view.ui:64
msgid "Run in Background"
msgstr "Actif en arrière-plan"

#: data/ui/settings-view.ui:65
msgid "Keep receiving messages after closing the window"
msgstr "Continuer de recevoir des messages après la fermeture de la fenêtre"

#: data/ui/settings-view.ui:70
msgid "Autostart"
msgstr "Démarrage automatique"

#: data/ui/settings-view.ui:71
msgid "Automatically start when you log in"
msgstr "Démarrage automatique à la connexion"

#: data/ui/settings-view.ui:80 data/ui/repeater-view.ui:104
#: data/ui/repeater-view.ui:723 src/views/settings_view.py:134
msgid "Radio"
msgstr "Radio"

#: data/ui/settings-view.ui:81
msgid "LoRa radio parameters and regional presets"
msgstr "Paramètres LoRa et pré-réglages régionaux"

#: data/ui/settings-view.ui:84
msgid "Regional Preset"
msgstr "Pré-réglages régionaux"

#: data/ui/settings-view.ui:89
msgid "Preset Configuration"
msgstr "Configuration de Préréglage"

#: data/ui/settings-view.ui:90
#, fuzzy
msgid "Frequency, bandwidth, spreading factor, coding rate"
msgstr "Fréquence, Débit, facteur d'étalement, taux de codage"

#: data/ui/settings-view.ui:93 data/ui/repeater-view.ui:754
msgid "Frequency (MHz)"
msgstr "Fréquence (MHz)"

#: data/ui/settings-view.ui:98 data/ui/repeater-view.ui:759
msgid "Bandwidth (kHz)"
msgstr "Débit (kHz)"

#: data/ui/settings-view.ui:131 src/views/device_view.py:94
msgid "Repeat Mode"
msgstr "Mode répéteur"

#: data/ui/settings-view.ui:132
msgid "Act as a portable repeater on an off-grid frequency"
msgstr "Utiliser comme répéteur portatif sur une fréquence dédiée"

#: data/ui/settings-view.ui:138 data/ui/repeater-view.ui:788
msgid "TX Power (dBm)"
msgstr "Puissance TX (dBm)"

#: data/ui/settings-view.ui:155 src/views/settings_view.py:131
msgid "Advert"
msgstr "Annonce"

#: data/ui/settings-view.ui:156
msgid "Configure how your node advertises itself on the mesh"
msgstr "Configurer comment votre nœud s'annonce sur le maillage"

#: data/ui/settings-view.ui:159
msgid "Device Name"
msgstr "Nom de l'appareil"

#: data/ui/settings-view.ui:164
msgid "Include Location in Advert"
msgstr "Inclure Position dans Annonce"

#: data/ui/settings-view.ui:165
msgid "Broadcast your position to other nodes"
msgstr "Diffusez votre position aux autres nœuds"

#: data/ui/settings-view.ui:174 src/views/settings_view.py:132
msgid "Routing and Messaging"
msgstr ""

#: data/ui/settings-view.ui:175
msgid "Path routing and message delivery settings"
msgstr ""

#: data/ui/settings-view.ui:178
#, fuzzy
msgid "Default Routing"
msgstr "Portée par Défaut"

#: data/ui/settings-view.ui:179
msgid "Fixed path or automatic route selection"
msgstr ""

#: data/ui/settings-view.ui:183 data/ui/contact-detail-dialog.ui:109
msgid "Classic"
msgstr "Classique"

#: data/ui/settings-view.ui:184 data/ui/contact-detail-dialog.ui:115
msgid "Smart"
msgstr ""

#: data/ui/settings-view.ui:191
msgid "Learn more about routing modes"
msgstr ""

#: data/ui/settings-view.ui:205
msgid "Larger hashes reduce collisions but allow fewer hops"
msgstr ""

#: data/ui/settings-view.ui:210 src/views/device_view.py:292
msgid "1-byte (max 64 hops)"
msgstr "1 octet (max 64 sauts)"

#: data/ui/settings-view.ui:211 src/views/device_view.py:293
msgid "2-byte (max 32 hops)"
msgstr "2 octets (max 32 sauts)"

#: data/ui/settings-view.ui:212 src/views/device_view.py:294
msgid "3-byte (max 21 hops)"
msgstr "3 octets (max 21 sauts)"

#: data/ui/settings-view.ui:220
#, fuzzy
msgid "Direct Message Confirmations"
msgstr "Configuration de Préréglage"

#: data/ui/settings-view.ui:221
msgid "Number of ACKs sent when receiving a direct message"
msgstr ""

#: data/ui/settings-view.ui:240
msgid "Set your companion's position via GPS or manually"
msgstr "Indiquer la position de l'appareil par GPS ou manuellement"

#: data/ui/settings-view.ui:243
msgid "Companion GPS"
msgstr "GPS de l'appareil"

#: data/ui/settings-view.ui:244
msgid "Enable GPS on the companion, your position will update automatically"
msgstr ""
"Activer le GPS de l'appareil, la position sera mise à jour automatiquement"

#: data/ui/settings-view.ui:250
msgid "Set Location Manually"
msgstr "Indiquer la position manuellement"

#: data/ui/settings-view.ui:251
msgid "Choose another method to set the location, it will be fixed"
msgstr "Choisir une autre méthode pour définir la position, elle sera fixe"

#: data/ui/settings-view.ui:254 data/ui/repeater-view.ui:709
msgid "Latitude"
msgstr "Latitude"

#: data/ui/settings-view.ui:259 data/ui/repeater-view.ui:714
msgid "Longitude"
msgstr "Longitude"

#: data/ui/settings-view.ui:264
msgid "Use My Location"
msgstr "Utiliser ma position"

#: data/ui/settings-view.ui:265
msgid "Set from this computer's location"
msgstr "Utiliser la position de l'ordinateur"

#: data/ui/settings-view.ui:285 data/ui/trace-path-dialog.ui:39
msgid "Pick on Map"
msgstr "Indiquer sur une carte"

#: data/ui/settings-view.ui:286
msgid "Choose a location on the map"
msgstr "Choisir une position sur la carte"

#: data/ui/settings-view.ui:312 data/ui/settings-view.ui:316
#: src/views/settings_view.py:135
msgid "Auto-Add Contacts"
msgstr "Ajout Automatique de Contacts"

#: data/ui/settings-view.ui:313
msgid "Automatically add nodes discovered via adverts"
msgstr "Ajouter automatiquement les nœuds découverts via les annonces"

#: data/ui/settings-view.ui:321
msgid "Auto-Add Settings"
msgstr "Paramètres Ajout Automatique"

#: data/ui/settings-view.ui:322
msgid "Device types, overwrite policy, hop limit"
msgstr "Types d'Appareil, politique de remplacement, limite de saut"

#: data/ui/settings-view.ui:325
msgid "Chat Nodes"
msgstr "Nœuds de Chat"

#: data/ui/settings-view.ui:330 data/ui/map-sidebar-filters.ui:28
#: src/views/contacts_view.py:162 src/views/contacts_view.py:314
msgid "Repeaters"
msgstr "Répéteurs"

#: data/ui/settings-view.ui:335 src/views/contacts_view.py:163
#: src/views/contacts_view.py:315
msgid "Room Servers"
msgstr "Serveurs de Salon"

#: data/ui/settings-view.ui:340 data/ui/map-sidebar-filters.ui:50
#: src/views/contacts_view.py:164 src/views/contacts_view.py:316
msgid "Sensors"
msgstr "Capteurs"

#: data/ui/settings-view.ui:345
msgid "Overwrite oldest when full"
msgstr "Écraser le plus ancien lorsque pleine"

#: data/ui/settings-view.ui:350
msgid "Hop limit"
msgstr "Limite de sauts"

#: data/ui/settings-view.ui:351
msgid "0–63, leave empty for no limit"
msgstr "0-63, vide pour ne pas imposer de limite"

#: data/ui/settings-view.ui:370 src/views/settings_view.py:136
msgid "Telemetry Privacy"
msgstr "Confidentialité de la Télémétrie"

#: data/ui/settings-view.ui:371
msgid "Control what others can query from your device"
msgstr "Contrôlez ce que les autres peuvent interroger depuis votre appareil"

#: data/ui/settings-view.ui:374
msgid "Battery & Sensors"
msgstr "Batterie & Capteurs"

#: data/ui/settings-view.ui:375
msgid "Battery, voltage, temperature, current"
msgstr "Batterie, tension, température, courant"

#: data/ui/settings-view.ui:381
msgid "GPS coordinates"
msgstr "Coordonnées GPS"

#: data/ui/settings-view.ui:386
msgid "Environment"
msgstr "Environnement"

#: data/ui/settings-view.ui:387
msgid "Humidity, pressure, air quality"
msgstr "Humidité, pression, qualité de l'air"

#: data/ui/settings-view.ui:396 data/ui/repeater-view.ui:458
#: data/ui/manual-backup-dialog.ui:92 data/ui/auto-backup-dialog.ui:106
#: data/ui/import-backup-dialog.ui:99 src/views/contact_detail_dialog.py:219
#: src/views/settings_view.py:137
msgid "Regions"
msgstr "Régions"

#: data/ui/settings-view.ui:397
msgid "Limit flood scope of channel messages to specific regions"
msgstr ""
"Limiter la portée Flood des messages de canal à des régions spécifiques"

#: data/ui/settings-view.ui:421
#, fuzzy
msgid "Add region…"
msgstr "Ajouter Région"

#: data/ui/settings-view.ui:424
msgid "Discover regions from repeaters"
msgstr ""

#: data/ui/settings-view.ui:430
#, fuzzy
msgid "Add region"
msgstr "Ajouter Région"

#: data/ui/settings-view.ui:444
msgid "Default Scope"
msgstr "Portée par Défaut"

#: data/ui/settings-view.ui:445
msgid "All flood packets will be scoped to this region if set"
msgstr ""
"Tous les paquets Flood auront pour portée cette région si elle est définie."

#: data/ui/settings-view.ui:455 data/ui/connection-view.ui:35
#: src/views/settings_view.py:138
msgid "Bluetooth"
msgstr "Bluetooth"

#: data/ui/settings-view.ui:456
msgid ""
"After changing the PIN, restart the device, then unpair and re-pair. Setting "
"0 resets the PIN to default."
msgstr ""
"Après avoir changé le code PIN, redémarrez l'appareil, puis désappairez et "
"réappairez. La valeur 0 réinitialise le code PIN à la valeur par défaut."

#: data/ui/settings-view.ui:459
msgid "Pairing PIN"
msgstr "Code PIN d'Appariement"

#: data/ui/connection-view.ui:23
msgid "Connect to a companion device to start using Meshy."
msgstr ""
"Connectez-vous à un appareil compagnon pour commencer à utiliser Meshy."

#: data/ui/connection-view.ui:48
msgid "Pair with a New Companion"
msgstr "Associer à un Nouveau Compagnon"

#: data/ui/connection-view.ui:56
msgid "USB Serial"
msgstr "Série USB"

#: data/ui/connection-view.ui:71
msgid "WiFi / TCP"
msgstr "WiFi / TCP"

#: data/ui/connection-view.ui:84 src/views/connection_view.py:517
msgid "Add TCP Companion"
msgstr "Ajouter un Compagnon TCP"

#: data/ui/contacts-view.ui:16 data/ui/channels-view.ui:35
#: data/ui/discover-dialog.ui:51 data/ui/share-contact-dialog.ui:32
#: data/ui/channel-participants-dialog.ui:49
#, fuzzy
msgid "Search..."
msgstr "Recherche..."

#: data/ui/contacts-view.ui:41 data/ui/discover-dialog.ui:74
#: data/ui/share-contact-dialog.ui:53 src/views/__init__.py:548
#: src/views/chat_helpers.py:142
msgid "No contacts"
msgstr "Aucun contact"

#: data/ui/contacts-view.ui:54 data/ui/channel-message-item.ui:165
#: data/ui/chat-message-item.ui:167 src/views/contacts_view.py:447
#: src/views/contacts_view.py:620 src/views/channels_view.py:349
#: src/views/chat_view.py:303
msgid "Add Contact"
msgstr "Ajouter un Contact"

#: data/ui/chat-view.ui:22
msgid "Select a Contact"
msgstr "Sélectionner un Contact"

#: data/ui/chat-view.ui:23
msgid "Choose a contact from the list to start chatting"
msgstr "Choisissez un contact dans la liste pour commencer à discuter"

#: data/ui/chat-view.ui:85 data/ui/channel-chat-widget.ui:85
msgid "↑ New Messages"
msgstr "↑ Nouveaux Messages"

#: data/ui/chat-view.ui:134 src/views/chat_view.py:509
msgid "Type a message..."
msgstr "Tapez un message..."

#: data/ui/channels-view.ui:10 src/views/channels_view.py:2224
msgid "Create a Private Channel"
msgstr "Créer un Canal Privé"

#: data/ui/channels-view.ui:14 src/views/channels_view.py:2256
msgid "Join a Private Channel"
msgstr "Rejoindre un Canal Privé"

#: data/ui/channels-view.ui:18
msgid "Join the Public Channel"
msgstr "Rejoindre le Canal Public"

#: data/ui/channels-view.ui:22 src/views/channels_view.py:2308
msgid "Join a Hashtag Channel"
msgstr "Rejoindre un Canal Hashtag"

#: data/ui/channels-view.ui:59
msgid "No channels"
msgstr "Aucun Canal"

#: data/ui/channels-view.ui:71 src/application.py:160
msgid "Add Channel"
msgstr "Ajouter un Canal"

#: data/ui/channel-chat-widget.ui:22
msgid "Select a Channel"
msgstr "Sélectionner un Canal"

#: data/ui/channel-chat-widget.ui:23
msgid "Choose a channel from the list"
msgstr "Choisissez un canal dans la liste"

#: data/ui/channel-chat-widget.ui:134
msgid "Message channel..."
msgstr "Canal de message..."

#: data/ui/repeater-view.ui:37
msgid "System"
msgstr "Système"

#: data/ui/repeater-view.ui:40
msgid "Clock at Login"
msgstr "Horloge à la Connexion"

#: data/ui/repeater-view.ui:54
msgid "Sync Now"
msgstr "Synchroniser Maintenant"

#: data/ui/repeater-view.ui:64 src/views/repeater_view.py:318
msgid "Reset & Reboot"
msgstr "Réinitialiser et Redémarrer"

#: data/ui/repeater-view.ui:94
msgid "Error Events"
msgstr "Événements d'Erreur"

#: data/ui/repeater-view.ui:125
msgid "TX Airtime"
msgstr "Temps d'Antenne TX"

#: data/ui/repeater-view.ui:131
msgid "RX Airtime"
msgstr "Temps d'Antenne RX"

#: data/ui/repeater-view.ui:137
msgid "Channel Utilization"
msgstr "Utilisation du Canal"

#: data/ui/repeater-view.ui:143
msgid "Duty Cycle"
msgstr "Cycle d'utilisation"

#: data/ui/repeater-view.ui:156
msgid "Sent"
msgstr "Envoyé"

#: data/ui/repeater-view.ui:162
msgid "Received"
msgstr "Reçu"

#: data/ui/repeater-view.ui:168
msgid "Receive Errors"
msgstr "Erreurs de Réception"

#: data/ui/repeater-view.ui:187
msgid "Duplicates"
msgstr "Doublons"

#: data/ui/repeater-view.ui:201 data/ui/repeater-view.ui:344
#: data/ui/repeater-view.ui:429
msgid "Refresh"
msgstr "Actualiser"

#: data/ui/repeater-view.ui:209 data/ui/contact-detail-dialog.ui:183
#: src/views/repeater_view.py:396
msgid "Request Telemetry"
msgstr "Demander la Télémétrie"

#: data/ui/repeater-view.ui:229
msgid "CLI"
msgstr "CLI"

#: data/ui/repeater-view.ui:272
msgid "CLI command..."
msgstr "Commande CLI..."

#: data/ui/repeater-view.ui:297
msgid "Neighbors"
msgstr "Voisins"

#: data/ui/repeater-view.ui:352
msgid "Load More"
msgstr "Charger plus"

#: data/ui/repeater-view.ui:361 data/ui/trace-path-dialog.ui:124
#: src/views/contact_detail_dialog.py:455 src/views/channels_view.py:1023
msgid "Show on Map"
msgstr "Afficher sur la Carte"

#: data/ui/repeater-view.ui:382
msgid "Access Control"
msgstr "Contrôle d'Accès"

#: data/ui/repeater-view.ui:437 data/ui/repeater-view.ui:542
#: src/application.py:244 src/views/__init__.py:504
#: src/views/contacts_view.py:463 src/views/repeater_view.py:1038
msgid "Add"
msgstr "Ajouter"

#: data/ui/repeater-view.ui:487 src/views/repeater_view.py:799
msgid "Loading regions..."
msgstr "Chargement des Régions..."

#: data/ui/repeater-view.ui:495 src/views/settings_view.py:976
msgid "Retry"
msgstr "Réessayer"

#: data/ui/repeater-view.ui:520
msgid "Default Region Scope"
msgstr "Région par défaut"

#: data/ui/repeater-view.ui:521
msgid ""
"Flood packets will be scoped to the provided region. Only repeaters allowing "
"the region will forward scoped packets. Leave blank for unscoped."
msgstr ""
"Les paquets Flood auront pour portée la région fournie. Seuls les répéteurs "
"autorisant la région transmettront les paquets avec cette portée. Laisser "
"vide pour une portée non définie."

#: data/ui/repeater-view.ui:550 data/ui/custom-tiles-dialog.ui:60
#: src/views/settings_view.py:303 src/views/repeater_view.py:1007
msgid "Apply"
msgstr "Appliquer"

#: data/ui/repeater-view.ui:592
msgid "Basic"
msgstr "Basique"

#: data/ui/repeater-view.ui:603 data/ui/repeater-view.ui:689
#: data/ui/repeater-view.ui:734 data/ui/repeater-view.ui:815
msgid "Fetch"
msgstr "Récupérer"

#: data/ui/repeater-view.ui:612 data/ui/repeater-view.ui:698
#: data/ui/repeater-view.ui:743 data/ui/repeater-view.ui:824
#: src/views/connection_view.py:491
msgid "Save"
msgstr "Sauvegarder"

#: data/ui/repeater-view.ui:623 data/ui/contact-detail-dialog.ui:42
#: data/ui/add-contact-content.ui:23 data/ui/qr-contact-content.ui:23
#: src/views/contacts_view.py:325 src/views/channels_view.py:1676
#: src/views/channels_view.py:1690 src/views/channels_view.py:1960
msgid "Name"
msgstr "Nom"

#: data/ui/repeater-view.ui:628
msgid "Packet Repeat"
msgstr "Répétition de Paquet"

#: data/ui/repeater-view.ui:633
#, fuzzy
msgid "Guest Access"
msgstr "Mot de passe invité"

#: data/ui/repeater-view.ui:634
msgid "Allow read-only guest access without password"
msgstr ""

#: data/ui/repeater-view.ui:643
msgid "Passwords"
msgstr "Mots de passe"

#: data/ui/repeater-view.ui:646
msgid "Admin Password"
msgstr "Mot de passe administration"

#: data/ui/repeater-view.ui:660
msgid "Guest Password"
msgstr "Mot de passe invité"

#: data/ui/repeater-view.ui:804
msgid "Advertisement"
msgstr "Annonce"

#: data/ui/repeater-view.ui:835
msgid "Local Interval (min)"
msgstr "Intervalle local (min)"

#: data/ui/repeater-view.ui:847
msgid "Flood Interval (hrs)"
msgstr "Intervalle Flood(hrs)"

#: data/ui/repeater-view.ui:863 data/ui/contact-detail-dialog.ui:200
msgid "Danger Zone"
msgstr "Zone de danger"

#: data/ui/repeater-view.ui:866 data/ui/device-actions.ui:121
msgid "Reboot Device"
msgstr "Redémarrer l'Appareil"

#: data/ui/repeater-view.ui:890
#, fuzzy
msgid "Select a device"
msgstr "Choisir un répéteur"

#: data/ui/repeater-view.ui:919
msgid "Log Out"
msgstr "Déconnexion"

#: data/ui/sensor-view.ui:14
#, fuzzy
msgid "Select a Sensor"
msgstr "Choisir un répéteur"

#: data/ui/sensor-view.ui:76
#, fuzzy
msgid "Refresh Telemetry"
msgstr "Demander la Télémétrie"

#: data/ui/sensor-view.ui:85
msgid "Login for Admin Access"
msgstr ""

#: data/ui/device-actions.ui:12
msgid "Send Advert"
msgstr "Envoyer Annonce"

#: data/ui/device-actions.ui:20
msgid "Zero Hop"
msgstr "Zéro Saut"

#: data/ui/device-actions.ui:21
msgid "Broadcast locally"
msgstr "Diffuser Localement"

#: data/ui/device-actions.ui:33
msgid "Flood Routed"
msgstr "Routé en Flood"

#: data/ui/device-actions.ui:34
msgid "Broadcast through the mesh"
msgstr "Diffusé via le maillage"

#: data/ui/device-actions.ui:46
msgid "To Clipboard"
msgstr "Copier dans le Presse-Papiers"

#: data/ui/device-actions.ui:47
msgid "Copy self contact data"
msgstr "Copier mes données de contact"

#: data/ui/device-actions.ui:59
msgid "Show QR Code"
msgstr "Afficher le Code QR"

#: data/ui/device-actions.ui:60
msgid "For others to scan and add you"
msgstr "Pour que d'autres puissent scanner et vous ajouter"

#: data/ui/device-actions.ui:76 data/ui/trace-path-dialog.ui:8
#: src/views/device_view.py:831
msgid "Trace Path"
msgstr "Tracer Chemin"

#: data/ui/device-actions.ui:77
msgid "Trace a route and show signal quality per hop"
msgstr "Tracer une route et afficher la qualité du signal par saut"

#: data/ui/device-actions.ui:91 data/ui/discover-nearby-dialog.ui:8
msgid "Discover Nearby Nodes"
msgstr "Découvrir les Nœuds à Proximité"

#: data/ui/device-actions.ui:92
msgid "Scan the network for nearby nodes"
msgstr "Analysez le réseau pour les nœuds à proximité"

#: data/ui/device-actions.ui:106 data/ui/rx-log-dialog.ui:8
msgid "Rx Log"
msgstr "Journal Rx"

#: data/ui/device-actions.ui:107
msgid "View received radio packets"
msgstr "Afficher les paquets radio reçus"

#: data/ui/rx-log-dialog.ui:18
msgid "Clear log"
msgstr "Effacer le Journal"

#: data/ui/rx-log-dialog.ui:50
msgid "No Packets"
msgstr "Aucun Paquet"

#: data/ui/rx-log-dialog.ui:51
msgid "Received radio packets will appear here"
msgstr "Les paquets radio reçus s'afficheront ici"

#: data/ui/stats-chart-dialog.ui:43
msgid "dBm over last 2 minutes"
msgstr ""

#: data/ui/settings-sidebar.ui:15
msgid "Backup"
msgstr "Sauvegarde"

#: data/ui/settings-sidebar.ui:23
#, fuzzy
msgid "Manual"
msgstr "Ajouter Manuellement"

#: data/ui/settings-sidebar.ui:24
msgid "Choose what to back up and save to a file"
msgstr ""
"Choisissez ce que vous souhaitez sauvegarder et enregistrer dans un fichier"

#: data/ui/settings-sidebar.ui:36
#, fuzzy
msgid "Automatic"
msgstr "Démarrage automatique à la connexion"

#: data/ui/settings-sidebar.ui:37
msgid "Daily backups, kept for 7 days"
msgstr ""

#: data/ui/settings-sidebar.ui:51 data/ui/import-backup-dialog.ui:214
#: src/views/settings_view.py:1420
msgid "Restore"
msgstr "Restauration"

#: data/ui/settings-sidebar.ui:59
msgid "From File"
msgstr ""

#: data/ui/settings-sidebar.ui:60
#, fuzzy
msgid "Restore from a manually saved backup"
msgstr "Restauration depuis un fichier de sauvegarde"

#: data/ui/settings-sidebar.ui:72
#, fuzzy
msgid "From Auto Backup"
msgstr "Sauvegarde Automatique"

#: data/ui/settings-sidebar.ui:73
#, fuzzy
msgid "Restore from an automatic snapshot"
msgstr "Restauration depuis un fichier de sauvegarde"

#: data/ui/settings-sidebar.ui:99 src/views/device_view.py:228
msgid "Factory Reset"
msgstr "Paramètres d'usine"

#: data/ui/settings-sidebar.ui:100
msgid "Erase all data on the companion"
msgstr "Efface toutes les données de l'appareil"

#: data/ui/manual-backup-dialog.ui:8
#, fuzzy
msgid "Manual Backup"
msgstr "Sauvegarde"

#: data/ui/manual-backup-dialog.ui:35 data/ui/auto-backup-dialog.ui:49
#: data/ui/import-backup-dialog.ui:43
#, fuzzy
msgid "Device Identity"
msgstr "Informations sur l'Appareil"

#: data/ui/manual-backup-dialog.ui:68 data/ui/auto-backup-dialog.ui:82
#: data/ui/import-backup-dialog.ui:75
#, fuzzy
msgid "Device Settings"
msgstr "Paramètres"

#: data/ui/manual-backup-dialog.ui:80 data/ui/auto-backup-dialog.ui:94
#: data/ui/import-backup-dialog.ui:87
#, fuzzy
msgid "Local Settings"
msgstr "Paramètres"

#: data/ui/manual-backup-dialog.ui:121 data/ui/auto-backup-dialog.ui:135
#: data/ui/import-backup-dialog.ui:128
#, fuzzy
msgid "Contact List"
msgstr "Contacts"

#: data/ui/manual-backup-dialog.ui:133 data/ui/auto-backup-dialog.ui:147
#: data/ui/import-backup-dialog.ui:140
#, fuzzy
msgid "Discovered Contacts"
msgstr "Découvrir Les Contacts"

#: data/ui/manual-backup-dialog.ui:165 data/ui/auto-backup-dialog.ui:179
#: data/ui/import-backup-dialog.ui:171
#, fuzzy
msgid "Messages and Routing"
msgstr "Chemin du Message"

#: data/ui/manual-backup-dialog.ui:180 data/ui/auto-backup-dialog.ui:194
#: data/ui/import-backup-dialog.ui:186 src/views/channels_view.py:1962
#, fuzzy
msgid "Messages"
msgstr "Tous les messages"

#: data/ui/manual-backup-dialog.ui:192 data/ui/auto-backup-dialog.ui:206
#: data/ui/import-backup-dialog.ui:198
#, fuzzy
msgid "Smart Route History"
msgstr "Sélection d'Itinéraire Intelligente"

#: data/ui/manual-backup-dialog.ui:208
msgid "Export"
msgstr ""

#: data/ui/auto-backup-dialog.ui:8
msgid "Automatic Backup"
msgstr "Sauvegarde Automatique"

#: data/ui/auto-backup-dialog.ui:35
#, fuzzy
msgid "Enable Automatic Backups"
msgstr "Sauvegarde Automatique"

#: data/ui/auto-backup-dialog.ui:36
msgid "Daily backups after sync, kept for 7 days"
msgstr ""

#: data/ui/import-backup-dialog.ui:8
#, fuzzy
msgid "Import Backup"
msgstr "Importer un Contact"

#: data/ui/discover-dialog.ui:8 src/views/contacts_view.py:104
#: src/views/contacts_view.py:265 src/views/contacts_view.py:300
msgid "Discover Contacts"
msgstr "Découvrir Les Contacts"

#: data/ui/discover-dialog.ui:18 data/ui/share-contact-dialog.ui:18
#: data/ui/channel-participants-dialog.ui:18 src/window.py:570
msgid "Search"
msgstr "Recherche"

#: data/ui/discover-dialog.ui:27
#, fuzzy
msgid "Filter by type"
msgstr "Filtre"

#: data/ui/discover-dialog.ui:36 data/ui/channel-participants-dialog.ui:36
#, fuzzy
msgid "Sort by"
msgstr "Tri"

#: data/ui/share-contact-dialog.ui:8 src/views/channels_view.py:203
#: src/views/chat_view.py:154
msgid "Share Contact"
msgstr "Partager le Contact"

#: data/ui/theme-chooser-dialog.ui:9
msgid "Choose Theme"
msgstr "Choisir un thème"

#: data/ui/contact-detail-dialog.ui:38
msgid "Contact Info"
msgstr "Informations de Contact"

#: data/ui/contact-detail-dialog.ui:49
msgid "Favorite"
msgstr "Préféré"

#: data/ui/contact-detail-dialog.ui:50
msgid "Pin to top of contacts list"
msgstr "Épingler en haut de la liste de contacts"

#: data/ui/contact-detail-dialog.ui:56 data/ui/custom-tiles-dialog.ui:28
#: src/views/channels_view.py:1697
msgid "Type"
msgstr "Type"

#: data/ui/contact-detail-dialog.ui:68
#, fuzzy
msgid "Copy to clipboard"
msgstr "Commande copiée dans le presse-papiers"

#: data/ui/contact-detail-dialog.ui:79 src/views/contacts_view.py:326
#: src/views/channels_view.py:1961
msgid "Last Seen"
msgstr "Dernière connexion"

#: data/ui/contact-detail-dialog.ui:89
#, fuzzy
msgid "Routing"
msgstr "Paramètres de routage"

#: data/ui/contact-detail-dialog.ui:128
msgid "Out Path"
msgstr "Chemin Sortant"

#: data/ui/contact-detail-dialog.ui:135
msgid "Reset Path"
msgstr "Réinitialiser Chemin"

#: data/ui/contact-detail-dialog.ui:136
msgid "Clear the established path and switch to flood"
msgstr "Effacer le chemin établi et passer au flood"

#: data/ui/contact-detail-dialog.ui:148
#, fuzzy
msgid "Available Routes"
msgstr "Chemins Disponibles"

#: data/ui/contact-detail-dialog.ui:161
msgid "Automatically Reset Path"
msgstr "Réinitialiser Automatiquement le Chemin"

#: data/ui/contact-detail-dialog.ui:162
msgid "Switch to flood after failed delivery attempts"
msgstr ""

#: data/ui/contact-detail-dialog.ui:168
#, fuzzy
msgid "Force Flood"
msgstr "Flood"

#: data/ui/contact-detail-dialog.ui:169
msgid "Always broadcast, never use an established path"
msgstr "Toujours diffuser, ne jamais utiliser un chemin établi"

#: data/ui/contact-detail-dialog.ui:184
msgid "Query this contact's telemetry data"
msgstr "Interroger les données télémétriques de ce contact"

#: data/ui/contact-detail-dialog.ui:204
msgid "Remove Contact"
msgstr "Supprimer le Contact"

#: data/ui/trace-path-dialog.ui:31 data/ui/trace-path-dialog.ui:34
#: src/views/device_view.py:1306
msgid "Path"
msgstr "Chemin"

#: data/ui/trace-path-dialog.ui:40
#, fuzzy
msgid "Choose route on the map"
msgstr "Choisir une position sur la carte"

#: data/ui/trace-path-dialog.ui:59
msgid "Run Trace"
msgstr "Exécuter la Trace"

#: data/ui/trace-path-dialog.ui:81
msgid "Enter path hashes and press Run Trace"
msgstr "Entrez les hachages de chemin et appuyez sur Exécuter Traçage"

#: data/ui/add-contact-content.ui:18 data/ui/qr-contact-content.ui:18
msgid "Contact Type"
msgstr "Type de Contact"

#: data/ui/add-contact-content.ui:28
msgid "Public Key (64 hex characters)"
msgstr "Clé Publique (64 caractères hexadécimaux)"

#: data/ui/channel-message-item.ui:223 data/ui/chat-message-item.ui:225
msgid "Open in Maps App"
msgstr "Ouvrir dans l'Application Cartes"

#: data/ui/channel-participants-dialog.ui:8 src/views/channels_view.py:1733
msgid "Participants"
msgstr ""

#: data/ui/channel-participants-dialog.ui:27 src/window.py:573
#: src/window.py:673
msgid "Filter"
msgstr "Filtre"

#: data/ui/create-private-channel-content.ui:18
#: data/ui/join-private-channel-content.ui:18
msgid "Channel Name"
msgstr "Nom du Canal"

#: data/ui/custom-tiles-dialog.ui:8
msgid "Custom Map Tiles"
msgstr ""

#: data/ui/custom-tiles-dialog.ui:33 src/window.py:515
msgid "URL Template"
msgstr ""

#: data/ui/custom-tiles-dialog.ui:55
#, fuzzy
msgid "Reset to Default"
msgstr "Réinitialiser Chemin"

#: data/ui/discover-nearby-dialog.ui:70
msgid "Listening..."
msgstr "Écoute en cours..."

#: data/ui/discover-nearby-dialog.ui:71
msgid "Waiting for nearby nodes to respond"
msgstr "En attente de la réponse des nœuds à proximité"

#: data/ui/discover-regions-dialog.ui:8
#, fuzzy
msgid "Discover Regions"
msgstr "Découvrir Les Contacts"

#: data/ui/discover-regions-dialog.ui:60 data/ui/pair-dialog.ui:9
#: src/connection_controller.py:276
msgid "Scanning..."
msgstr "Scanner..."

#: data/ui/discover-regions-dialog.ui:61
#, fuzzy
msgid "Listening for nearby repeaters"
msgstr "Recherche d'appareils MeshCore à proximité"

#: data/ui/discover-regions-dialog.ui:72 src/views/settings_view.py:965
#: src/views/settings_view.py:1122
msgid "Add Selected"
msgstr "Ajouter Sélection"

#: data/ui/join-hashtag-channel-content.ui:18
msgid "Hashtag (e.g. #general)"
msgstr ""

#: data/ui/join-private-channel-content.ui:23
#, fuzzy
msgid "Private Key (32 hex characters)"
msgstr "Clé Publique (64 caractères hexadécimaux)"

#: data/ui/location-dialog.ui:8
msgid "Device Location"
msgstr "Position Appareil"

#: data/ui/map-sidebar-filters.ui:17 src/views/contacts_view.py:161
#: src/views/contacts_view.py:313
msgid "Users"
msgstr "Utilisateurs"

#: data/ui/map-sidebar-filters.ui:39
#, fuzzy
msgid "Rooms"
msgstr "Salon"

#: data/ui/map-sidebar-filters.ui:65
#, fuzzy
msgid "Discovered Nodes"
msgstr "Découvrir les Nœuds à Proximité"

#: data/ui/map-view.ui:30
#, fuzzy
msgid "User"
msgstr "Utilisateurs"

#: data/ui/map-view.ui:46 src/application.py:116 src/views/contacts_view.py:456
#: src/views/contacts_view.py:614 src/views/device_view.py:947
msgid "Repeater"
msgstr "Répéteur"

#: data/ui/map-view.ui:62 src/application.py:116
msgid "Room"
msgstr "Salon"

#: data/ui/map-view.ui:78 src/application.py:116 src/views/contacts_view.py:456
#: src/views/contacts_view.py:614 src/views/device_view.py:949
msgid "Sensor"
msgstr "Capteur"

#: data/ui/message-paths-dialog.ui:8 src/views/channels_view.py:955
msgid "Message Paths"
msgstr "Chemins des Messages"

#: data/ui/pair-dialog.ui:10
msgid "Looking for nearby MeshCore devices"
msgstr "Recherche d'appareils MeshCore à proximité"

#: data/ui/pair-dialog.ui:13
msgid "Pair New Companion"
msgstr "Associer un Nouveau Compagnon"

#: data/ui/pair-dialog.ui:41 src/connection_controller.py:157
msgid "Scanning for MeshCore devices..."
msgstr "Recherche de périphériques MeshCore..."

#: data/ui/passkey-dialog-content.ui:18
msgid "PIN"
msgstr "PIN"

#: data/ui/qr-code-dialog.ui:8
msgid "Your Contact QR Code"
msgstr "Votre Code QR de Contact"

#: data/ui/qr-code-dialog.ui:40
msgid "Scan this QR code to add this contact"
msgstr "Scannez ce code QR pour ajouter ce contact."

#: data/ui/qr-scanner-dialog.ui:8 src/views/contacts_view.py:110
msgid "Scan QR Code"
msgstr "Scanner le code QR"

#: data/ui/qr-scanner-dialog.ui:33
msgid "Point the camera at a QR code..."
msgstr "Etiquette d'état"

#: data/ui/region-add-content.ui:19
#, fuzzy
msgid "Region Name"
msgstr "Régions"

#: data/ui/region-add-content.ui:32
msgid "Parent"
msgstr ""

#: data/ui/room-login-dialog.ui:33 data/ui/sensor-login-dialog.ui:31
msgid "Password"
msgstr "Mot de Passe"

#: data/ui/room-login-dialog.ui:38
msgid "Save password"
msgstr "Sauvegarder le mot de passe"

#: data/ui/room-login-dialog.ui:66 data/ui/sensor-login-dialog.ui:38
msgid "Login"
msgstr "Se Connecter"

#: data/ui/tcp-add-content.ui:18 data/ui/tcp-change-address-content.ui:18
msgid "Hostname / IP Address"
msgstr "Nom d'Hôte/Adresse IP"

#: data/ui/tcp-add-content.ui:24 data/ui/tcp-change-address-content.ui:24
msgid "Port"
msgstr "Port"

#: data/ui/trace-picker-bottom-bar.ui:27
msgid "Undo"
msgstr ""

#: data/ui/trace-picker-bottom-bar.ui:36 src/views/channels_view.py:1866
msgid "Clear"
msgstr "Effacer"

#: data/ui/trace-picker-bottom-bar.ui:49
msgid "Done"
msgstr ""

#: src/application.py:116 src/application.py:187 src/window.py:649
#: src/views/contacts_view.py:456 src/views/contacts_view.py:614
#: src/views/channels_view.py:1730 src/views/device_view.py:946
msgid "Chat"
msgstr "Tchat"

#: src/application.py:124 src/application.py:191 src/views/__init__.py:476
#: src/views/contact_detail_dialog.py:630 src/views/contacts_view.py:1265
#: src/views/channels_view.py:1118 src/views/device_view.py:857
#: src/views/device_view.py:1084 src/views/device_view.py:1092
#: src/views/settings_view.py:1449
msgid "Unknown"
msgstr "Inconnu"

#: src/application.py:126
#, python-brace-format
msgid ""
"Name: {name}\n"
"Type: {type}"
msgstr ""
"Nom : {name}\n"
"Type : {type}"

#: src/application.py:128
#, python-brace-format
msgid ""
"Type: {type}\n"
"Key: {key}…"
msgstr ""
"Type : {type}\n"
"Clé : {key}"

#: src/application.py:132
msgid "Import Contact"
msgstr "Importer un Contact"

#: src/application.py:136
#, python-brace-format
msgid "Contact {}"
msgstr "Contact {}"

#: src/application.py:136
msgid "imported"
msgstr "importé"

#: src/application.py:140
msgid "Invalid meshcore:// link"
msgstr "Lien meshcore:// non valide"

#: src/application.py:154
msgid "Invalid channel secret in link"
msgstr "Secret du canal invalide dans le lien"

#: src/application.py:157
msgid "Invalid channel secret length"
msgstr "Secret du canal de longueur invalide"

#: src/application.py:161
#, python-brace-format
msgid ""
"Name: {name}\n"
"Type: Private"
msgstr ""
"Nom : {name}\n"
"Type : Privé"

#: src/application.py:161
msgid "Unnamed"
msgstr "Sans nom"

#: src/application.py:177
msgid "Invalid public key in link"
msgstr "Clé publique du lien non valide"

#: src/application.py:180
msgid "Invalid public key length"
msgstr "Longueur de la clé publique non valide"

#: src/application.py:184
#, python-brace-format
msgid "{} is already in your list"
msgstr "{} est déjà dans votre liste"

#: src/application.py:184
msgid "Contact"
msgstr "Contact"

#: src/application.py:189
#, python-brace-format
msgid "Add {} Contact"
msgstr "Ajouter {} Contact"

#: src/application.py:190
#, python-brace-format
msgid ""
"Name: {name}\n"
"Public Key: {key}…"
msgstr ""
"Nom: {name}\n"
"Clé Publique: {key}…"

#: src/application.py:195
#, python-brace-format
msgid "Contact {} added"
msgstr "Contact {} ajouté"

#: src/application.py:200
msgid "Unrecognized meshcore:// link"
msgstr "Lien meshcore:// non reconnu"

#: src/application.py:243 src/connection_controller.py:159
#: src/connection_controller.py:287 src/connection_controller.py:451
#: src/views/connection_view.py:180 src/views/connection_view.py:251
#: src/views/connection_view.py:455 src/views/connection_view.py:490
#: src/views/connection_view.py:528 src/views/connection_view.py:652
#: src/views/contact_detail_dialog.py:689 src/views/contacts_view.py:462
#: src/views/contacts_view.py:619 src/views/channels_view.py:1865
#: src/views/channels_view.py:1895 src/views/channels_view.py:2145
#: src/views/channels_view.py:2232 src/views/channels_view.py:2265
#: src/views/channels_view.py:2316 src/views/device_view.py:227
#: src/views/device_view.py:243 src/views/settings_view.py:1394
#: src/views/repeater_view.py:317 src/views/repeater_view.py:724
#: src/views/repeater_view.py:1037 src/views/repeater_view.py:1310
msgid "Cancel"
msgstr "Annuler"

#: src/application.py:316 src/application.py:337 src/application.py:361
msgid "Receiving messages in the background"
msgstr "Recevoir des messages en arrière-plan"

#: src/application.py:430
#, fuzzy
msgid ""
"gallegonovato — Spanish\n"
"lebeno — French, Dutch\n"
"bjawebos — German\n"
"Manuel Traut — German\n"
"lejun — French\n"
"LievenBlancke — Dutch\n"
"sesivany — Czech"
msgstr ""
"gallegonovato — Espagnol\n"
"lebeno — Français, Néerlandais\n"
"bjawebos — Allemand\n"
"Manuel Traut — Allemand\n"
"lejun — Français\n"
"LievenBlancke — Néerlandais"

#: src/application.py:442
msgid "A GTK client for MeshCore LoRa mesh network devices"
msgstr "Un client GTK pour les appareils de réseau maillé MeshCore LoRa"

#: src/application.py:491
msgid "Adwaita Symbolic Icons"
msgstr "Icônes Symboliques Adwaita"

#: src/connection_controller.py:150 src/connection_controller.py:290
#: src/window.py:1086
msgid "Connecting..."
msgstr "Connecter..."

#: src/connection_controller.py:156
msgid "Scan for Devices"
msgstr "Rechercher des Appareils"

#: src/connection_controller.py:160
msgid "Scan"
msgstr "Scanner"

#: src/connection_controller.py:277
msgid "Stop"
msgstr "Arrêter"

#: src/connection_controller.py:283 src/connection_controller.py:447
#, python-brace-format
msgid "Reconnecting ({current}/{total})..."
msgstr "Reconnexion ({current}/{total})..."

#: src/connection_controller.py:301
msgid "Syncing..."
msgstr "Synchronisation..."

#: src/connection_controller.py:336
msgid "Device did not respond. It may not support this connection type."
msgstr ""
"L'appareil n'a pas répondu. Il se peut qu'il ne prenne pas en charge ce type "
"de connexion."

#: src/connection_controller.py:522
msgid "Syncing channels"
msgstr "Synchronisation des canaux"

#: src/connection_controller.py:594
#, fuzzy, python-brace-format
msgid "You received {} message while disconnected."
msgid_plural "You received {} messages while disconnected."
msgstr[0] "Vous avez reçu {} message alors que vous étiez déconnecté."
msgstr[1] "Vous avez reçu {} messages alors que vous étiez déconnecté."

#: src/frame_handler.py:168
#, python-brace-format
msgid "Device error: {}"
msgstr "Erreur de l'appareil: {}"

#: src/frame_handler.py:298 src/frame_handler.py:316
msgid "Syncing contacts"
msgstr "Synchronisation des contacts"

#: src/frame_handler.py:506
#, fuzzy, python-brace-format
msgid "{} (late)"
msgstr "{}s (en retard)"

#: src/frame_handler.py:506
msgid "late"
msgstr "en retard"

#: src/frame_handler.py:605
#, python-brace-format
msgid "Device clock was {}min behind — synced"
msgstr "L'horloge de l'appareil était en retard de {}min — synchronisée"

#: src/frame_handler.py:615
#, python-brace-format
msgid "Device clock is {}min ahead of system"
msgstr "L'horloge de l'appareil est en avance de {}min sur celle du système"

#: src/frame_handler.py:1207 src/window.py:792 src/views/contacts_view.py:1105
#: src/views/channels_view.py:1564 src/views/channels_view.py:1670
#: src/views/channels_view.py:1691 src/views/channels_view.py:1862
#: src/views/channels_view.py:1892 src/views/repeater_view.py:440
#: src/views/sensor_view.py:123
#, python-brace-format
msgid "Channel {}"
msgstr "Canal {}"

#: src/frame_handler.py:1208
msgid "Someone"
msgstr "Une personne"

#: src/frame_handler.py:1211
#, python-brace-format
msgid "{sender}: {text}"
msgstr "{sender} : {text}"

#: src/message_controller.py:175 src/views/repeater_view.py:682
#: src/views/repeater_view.py:713
msgid "Me"
msgstr "Moi"

#: src/message_controller.py:218
msgid "flood"
msgstr "Flood"

#: src/message_controller.py:220 src/views/channels_view.py:483
msgid "direct"
msgstr "direct"

#: src/message_controller.py:222
msgid "path"
msgstr "chemin"

#: src/message_controller.py:225 src/message_controller.py:229
#, python-brace-format
msgid "– {route}"
msgstr "– {route}"

#: src/message_controller.py:230
#, python-brace-format
msgid "({attempt}/{total}) – {route}"
msgstr "({attempt}/{total}) – {route}"

#: src/message_controller.py:285
#, fuzzy, python-brace-format
msgid "waiting {} (radio busy)"
msgstr "en attente {:.1f}s (radio occupée)"

#: src/window.py:497
msgid "Raster"
msgstr ""

#: src/window.py:497
msgid "Vector"
msgstr ""

#: src/window.py:505
#, python-brace-format
msgid ""
"Use {z}, {x}, {y} as placeholders.\n"
"Example: https://tile.openstreetmap.org/{z}/{x}/{y}.png"
msgstr ""

#: src/window.py:509
msgid ""
"URL to a MapLibre/Mapbox style JSON.\n"
"Example: https://api.maptiler.com/maps/outdoor-v2/style.json?key=KEY"
msgstr ""

#: src/window.py:515
msgid "Style JSON URL"
msgstr ""

#: src/window.py:538
msgid "Custom map tiles applied"
msgstr ""

#: src/window.py:540
msgid "Failed to load custom map tiles"
msgstr ""

#: src/window.py:576
msgid "Sort"
msgstr "Tri"

#. Sidebar = Device Info button + Actions, content = device info
#. Actions group
#: src/window.py:636 src/views/contact_detail_dialog.py:157
#: src/views/channels_view.py:1852 src/views/repeater_view.py:897
msgid "Actions"
msgstr "Actions"

#: src/window.py:661
msgid "Channel"
msgstr "Canal"

#. Sidebar = Settings button + hint, content = settings with Apply in headerbar
#: src/window.py:695
msgid "Backup & Restore"
msgstr "Sauvegarde & restauration"

#: src/window.py:773 src/window.py:837
#, python-brace-format
msgid "{name} ({path})"
msgstr "{name} ({path})"

#: src/window.py:794
#, python-brace-format
msgid "{name} ({region})"
msgstr ""

#: src/window.py:859
msgid "Management"
msgstr "Gestion"

#: src/window.py:859
msgid "Guest"
msgstr "Invitée"

#: src/window.py:860
#, python-brace-format
msgid "{name} — {role}"
msgstr "{name} — {role}"

#: src/window.py:961
msgid "Excellent"
msgstr "Excellent"

#: src/window.py:962
msgid "Good"
msgstr "Bien"

#: src/window.py:963
msgid "Fair"
msgstr "Passable"

#: src/window.py:964
msgid "Poor"
msgstr "Mauvais"

#: src/window.py:965
msgid "Very poor"
msgstr "Très Mauvais"

#: src/window.py:1191
msgid "flood routed"
msgstr ""

#: src/window.py:1191
msgid "zero-hop"
msgstr "saut zéro"

#: src/window.py:1192
#, python-brace-format
msgid "Advert sent ({})"
msgstr "Annonce envoyée ({})"

#: src/window.py:1677
#, python-brace-format
msgid "Channel \"{}\" added"
msgstr "Canal \"{}\" ajouté"

#: src/window.py:1681
msgid "No empty channel slots available"
msgstr "Aucun emplacement de canal vide disponible"

#: src/qr_scanner.py:47
#, python-brace-format
msgid "Cannot connect to session bus: {}"
msgstr "Impossible de se connecter à un bus session : {}"

#: src/qr_scanner.py:65
msgid "No camera detected on this system."
msgstr "Aucune caméra détectée sur ce système."

#: src/qr_scanner.py:121
#, python-brace-format
msgid "Could not access camera: {}"
msgstr "Impossible de se connecter à la caméra : {}"

#: src/qr_scanner.py:130
msgid "Camera access was denied."
msgstr "Permission d'accès à la caméra refusée"

#: src/qr_scanner.py:164
msgid "Could not open camera stream."
msgstr "Impossible d'ouvrir un flux caméra."

#: src/qr_scanner.py:170
msgid "No camera file descriptor received."
msgstr "Aucun descripteur de fichier de caméra reçu."

#: src/qr_scanner.py:179 src/qr_scanner.py:182
#, python-brace-format
msgid "Could not open camera: {}"
msgstr "Impossible d'ouvrir la caméra : {}"

#: src/qr_scanner.py:211
#, python-brace-format
msgid "Camera pipeline error: {}"
msgstr "Erreur de pipeline de caméra: {}"

#: src/qr_scanner.py:288
msgid ""
"No QR code detected yet.\n"
"Make sure the code is well-lit, sharp, and fills most of the frame."
msgstr ""
"Aucun code QR détecté pour le moment.\n"
"Assurez-vous que le code est bien éclairé, net et occupe la majeure partie "
"du cadre."

#: src/qr_scanner.py:299
msgid ""
"Could not detect QR code.\n"
"Try importing the contact via clipboard instead."
msgstr ""
"Impossible de détecter le code QR.\n"
"Essayez d'importer le contact via le presse-papiers à la place."

#: src/qr_scanner.py:305
msgid "QR code found!"
msgstr "QR code détecté!"

#: src/qr_scanner.py:315
#, python-brace-format
msgid "Camera error: {}"
msgstr "Erreur de caméra: {}"

#: src/qr_scanner.py:333
msgid "Camera Error"
msgstr "Erreur de Caméra"

#: src/qr_scanner.py:334 src/views/connection_view.py:213
#: src/views/connection_view.py:345 src/views/connection_view.py:352
#: src/views/contacts_view.py:272 src/views/contacts_view.py:502
#: src/views/contacts_view.py:599 src/views/channels_view.py:961
#: src/views/channels_view.py:1183 src/views/channels_view.py:1205
#: src/views/channels_view.py:2214 src/views/channels_view.py:2289
#: src/views/settings_view.py:1239 src/views/settings_view.py:1349
#: src/views/settings_view.py:1378 src/views/settings_view.py:1389
#: src/views/settings_view.py:1444 src/views/chat_helpers.py:161
msgid "OK"
msgstr "OK"

#: src/views/__init__.py:52
msgid "Today"
msgstr ""

#: src/views/__init__.py:54
msgid "Yesterday"
msgstr ""

#. Translators: date format for current year, strftime-style.
#. %A = weekday, %B = month name, %-d = day number.
#: src/views/__init__.py:59
msgid "%A, %B %-d"
msgstr "%A %-d %B"

#. Translators: date format with year, strftime-style.
#. %A = weekday, %B = month name, %-d = day number, %Y = year.
#: src/views/__init__.py:62
msgid "%A, %B %-d, %Y"
msgstr "%A %-d %B %Y"

#: src/views/__init__.py:506 src/views/contacts_view.py:224
#: src/views/chat_helpers.py:142
#, python-brace-format
msgid "{total} contacts"
msgstr "{total} contacts"

#: src/views/__init__.py:508 src/views/contacts_view.py:220
#, python-brace-format
msgid "{visible}/{total} contacts"
msgstr "{visible}/{total} contacts"

#: src/views/connection_view.py:44 src/views/connection_view.py:181
#: src/views/connection_view.py:404 src/views/connection_view.py:456
#: src/views/contact_detail_dialog.py:690 src/views/channels_view.py:1896
#: src/views/repeater_view.py:725 src/views/repeater_view.py:914
msgid "Remove"
msgstr "Retirer"

#: src/views/connection_view.py:80
#, fuzzy
msgid "Bluetooth not available"
msgstr "Le Bluetooth est désactivé"

#: src/views/connection_view.py:81
msgid "BLE requires running from app bundle on macOS"
msgstr ""

#: src/views/connection_view.py:94
msgid "Bluetooth is disabled"
msgstr "Le Bluetooth est désactivé"

#: src/views/connection_view.py:95
msgid "Enable Bluetooth in system settings to connect"
msgstr "Activer Bluetooth dans les paramètres système pour se connecter"

#: src/views/connection_view.py:105
msgid "No paired devices"
msgstr "Aucun appareil couplé"

#: src/views/connection_view.py:106
msgid "Use the button below to pair a new companion"
msgstr "Utilisez le bouton ci-dessous pour associer un nouveau compagnon"

#: src/views/connection_view.py:147
msgid "No USB devices detected"
msgstr "Aucun appareil USB détecté"

#: src/views/connection_view.py:148
msgid "Connect a MeshCore companion via USB"
msgstr "Connecter un compagnon MeshCore via USB"

#: src/views/connection_view.py:175 src/views/connection_view.py:452
msgid "Remove Companion"
msgstr "Supprimer un Compagnon"

#: src/views/connection_view.py:176
#, python-brace-format
msgid "Remove {} ({})? You will need to pair again to reconnect."
msgstr ""
"Retirer {} ({})? Vous devrez effectuer un nouveau couplage pour vous "
"reconnecter."

#: src/views/connection_view.py:184 src/views/connection_view.py:459
msgid "Delete stored data"
msgstr "Supprimer les données stockées"

#: src/views/connection_view.py:210
msgid "USB Connection Failed"
msgstr "Échec de la Connexion USB"

#: src/views/connection_view.py:243 src/views/connection_view.py:272
msgid "USB Permission Denied"
msgstr "Autorisation USB Refusée"

#: src/views/connection_view.py:245
#, python-brace-format
msgid ""
"Cannot access {}.\n"
"\n"
"A udev rule is needed to grant access to USB serial devices. Click \"Install "
"Rule\" to install it (requires administrator password)."
msgstr ""
"Impossible d'accéder à {}. \n"
"\n"
"Une règle udev est nécessaire pour accorder l'accès aux périphériques série "
"USB. Cliquez sur \"Installer la Règle\" pour l'installer (nécessite un mot "
"de passe administrateur)."

#: src/views/connection_view.py:252
msgid "Install Rule"
msgstr "Installer la Règle"

#: src/views/connection_view.py:274
#, python-brace-format
msgid ""
"Cannot access {}.\n"
"\n"
"A udev rule is needed to grant access to USB serial devices. Run the "
"following command in a terminal:\n"
"\n"
"{}"
msgstr ""
"Impossible d'accéder à {}. \n"
"\n"
"Une règle udev est nécessaire pour accorder l'accès aux périphériques série "
"USB. Exécutez la commande suivante dans un terminal : \n"
"\n"
"{}"

#: src/views/connection_view.py:280
msgid "Close"
msgstr "Fermer"

#: src/views/connection_view.py:281
msgid "Copy Command"
msgstr "Copier la Commande"

#: src/views/connection_view.py:289
msgid "Command copied to clipboard"
msgstr "Commande copiée dans le presse-papiers"

#: src/views/connection_view.py:342 src/views/connection_view.py:349
msgid "Installation Failed"
msgstr "Échec de l'Installation"

#: src/views/connection_view.py:343
#, python-brace-format
msgid ""
"Could not install udev rule:\n"
"{}"
msgstr ""
"Impossible d'installer la règle udev:\n"
"{}"

#: src/views/connection_view.py:379
msgid "No saved companions"
msgstr "Aucuns compagnons sauvegardés"

#: src/views/connection_view.py:380
msgid "Use the button below to add one"
msgstr "Utilisez le bouton ci-dessous pour en ajouter un"

#: src/views/connection_view.py:403 src/views/connection_view.py:477
msgid "Change Address"
msgstr "Changer l'Adresse"

#: src/views/connection_view.py:453
#, python-brace-format
msgid "Remove TCP companion {}?"
msgstr "Supprimer le compagnon TCP {}?"

#: src/views/connection_view.py:478
msgid "Enter the new address for this companion."
msgstr ""

#: src/views/connection_view.py:518
msgid "Enter the IP address and port of your MeshCore device."
msgstr "Entrez l'adresse IP et le port de votre appareil MeshCore."

#: src/views/connection_view.py:602 src/views/connection_view.py:653
msgid "Pair"
msgstr "Associer"

#: src/views/connection_view.py:642
msgid "Enter Pairing PIN"
msgstr "Entrer le Code PIN d'Appairage"

#: src/views/connection_view.py:643
msgid "Enter the PIN shown on your MeshCore device."
msgstr "Entrez le code PIN affiché sur votre appareil MeshCore."

#: src/views/contact_detail_dialog.py:60 src/views/channels_view.py:2082
msgid "Never"
msgstr "Jamais"

#: src/views/contact_detail_dialog.py:100
msgid "Show Path on Map"
msgstr "Afficher Chemin sur la Carte"

#: src/views/contact_detail_dialog.py:101
msgid "Visualize the message route on the map"
msgstr "Visualiser l'itinéraire du message sur la carte"

#: src/views/contact_detail_dialog.py:126
msgid "Allow Telemetry Requests"
msgstr "Autoriser les Demandes de Télémétrie"

#: src/views/contact_detail_dialog.py:127
msgid "Allow this contact to query battery, voltage, temperature"
msgstr ""
"Autoriser ce contact à interroger la batterie, la tension et la température"

#: src/views/contact_detail_dialog.py:131
msgid "Include Location"
msgstr "Inclure Position"

#: src/views/contact_detail_dialog.py:132
msgid "Include GPS coordinates in telemetry responses"
msgstr "Inclure les coordonnées GPS dans les réponses de télémétrie"

#: src/views/contact_detail_dialog.py:136
msgid "Include Environment Sensors"
msgstr "Inclure les Capteurs d'Environnement"

#: src/views/contact_detail_dialog.py:137
msgid "Include humidity, pressure, air quality data"
msgstr "Inclure l'humidité, la pression, les données de qualité de l'air"

#: src/views/contact_detail_dialog.py:161
msgid "Room Management"
msgstr "Gestion de Salle"

#: src/views/contact_detail_dialog.py:163
msgid "Repeater Management"
msgstr "Gestion de Répéteur"

#: src/views/contact_detail_dialog.py:167
msgid "Login and access status, CLI, neighbors, and settings"
msgstr "Se connecter et accéder à statut, CLI, voisins et paramètres"

#: src/views/contact_detail_dialog.py:185
msgid "Ping"
msgstr "Ping"

#: src/views/contact_detail_dialog.py:186
msgid "Measure round-trip time to this node"
msgstr "Mesurer le temps aller-retour vers ce nœud"

#: src/views/contact_detail_dialog.py:201
msgid "Discover Paths"
msgstr "Découvrir Chemins"

#: src/views/contact_detail_dialog.py:202
msgid "Find routes to this node via flood"
msgstr "Trouver des itinéraires vers ce nœud via Flood"

#: src/views/contact_detail_dialog.py:220
msgid "Query regions from this repeater"
msgstr ""

#: src/views/contact_detail_dialog.py:230
#, fuzzy
msgid "Querying..."
msgstr "Recherche..."

#: src/views/contact_detail_dialog.py:243 src/views/contacts_view.py:963
msgid "No response"
msgstr "Aucune réponse"

#: src/views/contact_detail_dialog.py:329 src/views/device_view.py:165
msgid "Public key copied"
msgstr "Clé publique copiée"

#: src/views/contact_detail_dialog.py:389
#: src/views/contact_detail_dialog.py:433
#, python-format
msgid "%d paths available"
msgstr "%d chemins disponibles"

#: src/views/contact_detail_dialog.py:389
#: src/views/contact_detail_dialog.py:435
#: src/views/contact_detail_dialog.py:527
msgid "No paths yet"
msgstr "Aucun chemin pour le moment"

#: src/views/contact_detail_dialog.py:452
#, python-format
msgid "Smart Routes — %s"
msgstr "Itinéraires Intelligents — %s"

#: src/views/contact_detail_dialog.py:463
msgid "Available Paths"
msgstr "Chemins Disponibles"

#: src/views/contact_detail_dialog.py:474
#, python-format
msgid "Score: %.2f"
msgstr ""

#: src/views/contact_detail_dialog.py:475
#, python-format
msgid "Weight: %.1f"
msgstr "Poids: %.1f"

#: src/views/contact_detail_dialog.py:477
#: src/views/contact_detail_dialog.py:669
#, python-format
msgid "%d hops"
msgstr "%d sauts"

#: src/views/contact_detail_dialog.py:513
msgid "No paths recorded yet"
msgstr "Aucun chemin enregistré pour le moment"

#: src/views/contact_detail_dialog.py:514
msgid "Paths are discovered as messages are exchanged"
msgstr ""
"Les chemins sont découverts au fur et à mesure que les messages sont échangés"

#: src/views/contact_detail_dialog.py:521
msgid "Clear History"
msgstr "Effacer le Journal"

#: src/views/contact_detail_dialog.py:591
#, fuzzy
msgid "No location data available"
msgstr "Localisation non disponible"

#: src/views/contact_detail_dialog.py:595
#, fuzzy, python-format
msgid "Routes to %s"
msgstr "Itinéraires Intelligents — %s"

#: src/views/contact_detail_dialog.py:626 src/views/contacts_view.py:1155
#: src/views/contacts_view.py:1259 src/views/channels_view.py:1111
#: src/views/device_view.py:851 src/views/sensor_view.py:181
#: src/views/chat_helpers.py:75 src/views/map_view.py:491
#: src/views/map_view.py:787 src/views/map_view.py:1158
msgid "My Device"
msgstr "Mon Appareil"

#: src/views/contact_detail_dialog.py:686
msgid "Remove Contact?"
msgstr "Supprimer le Contact?"

#: src/views/contact_detail_dialog.py:687
#, python-brace-format
msgid "Remove {} and all messages?"
msgstr "Supprimer {} et tous les messages?"

#: src/views/contacts_view.py:105
msgid "Add Manually"
msgstr "Ajouter Manuellement"

#: src/views/contacts_view.py:106
msgid "Import from Clipboard"
msgstr "Importer depuis le Presse-papiers"

#: src/views/contacts_view.py:159 src/views/contacts_view.py:312
#: src/views/channels_view.py:1462 src/views/channels_view.py:1953
msgid "All"
msgstr "Tout"

#: src/views/contacts_view.py:160
msgid "Favourites"
msgstr "Favoris"

#: src/views/contacts_view.py:175 src/views/channels_view.py:1475
msgid "A–Z"
msgstr "A–Z"

#: src/views/contacts_view.py:176
msgid "Heard Recently"
msgstr "Entendu Récemment"

#: src/views/contacts_view.py:177 src/views/channels_view.py:1476
msgid "Latest Messages"
msgstr "Derniers Messages"

#: src/views/contacts_view.py:184
msgid "Favorites First"
msgstr "Favoris d'Abord"

#: src/views/contacts_view.py:226
#, python-brace-format
msgid "{total} contact"
msgstr "{total} contact"

#: src/views/contacts_view.py:267
msgid ""
"No new contacts have been heard yet. Leave the app running and contacts will "
"appear as their adverts are received."
msgstr ""
"Aucun nouveau contact n'a encore été détecté. Laissez l'application "
"fonctionner et les contacts apparaîtront au fur et à mesure que leurs "
"annonces seront reçues."

#: src/views/contacts_view.py:304
#, python-brace-format
msgid "{total} discovered"
msgstr "{total} découvert"

#: src/views/contacts_view.py:305
#, python-brace-format
msgid "{visible}/{total} discovered"
msgstr "{visible}/{total} découvert"

#: src/views/contacts_view.py:327
msgid "Arrival Time"
msgstr "Heure d'Arrivée"

#: src/views/contacts_view.py:331
msgid "Distance"
msgstr "Distance"

#: src/views/contacts_view.py:448
msgid "Enter the contact details."
msgstr "Entrez les détails du contact."

#: src/views/contacts_view.py:456 src/views/contacts_view.py:614
#: src/views/device_view.py:948
msgid "Room Server"
msgstr "Serveur de Salle"

#: src/views/contacts_view.py:475 src/views/contacts_view.py:563
#: src/views/contacts_view.py:588
msgid "This contact is already in your list."
msgstr "Ce contact est déjà dans votre liste."

#: src/views/contacts_view.py:499 src/views/contacts_view.py:598
#: src/views/settings_view.py:1441
msgid "Import Failed"
msgstr "Échec de l'Importation"

#: src/views/contacts_view.py:500
msgid "No meshcore:// link found in clipboard."
msgstr "Aucun lien meshcore:// trouvé dans le presse-papiers."

#: src/views/contacts_view.py:532
msgid "Invalid channel secret in QR code."
msgstr "Secret de chaîne invalide dans le code QR."

#: src/views/contacts_view.py:536
#, python-brace-format
msgid "Channel secret must be 16 bytes, got {}."
msgstr "Secret du canal doit être de 16 octets, reçu {}."

#: src/views/contacts_view.py:553
msgid "Invalid public key in QR code."
msgstr "Clé publique invalide dans le code QR."

#: src/views/contacts_view.py:558
#, python-brace-format
msgid "Public key must be 32 bytes, got {}."
msgstr "La clé publique doit faire 32 octets, j'ai obtenu {}."

#: src/views/contacts_view.py:595
#, python-brace-format
msgid ""
"Could not parse QR code data:\n"
"{}"
msgstr ""
"Impossible d'analyser les données du code QR:\n"
"{}"

#: src/views/contacts_view.py:605
msgid "QR Code Scanned"
msgstr "Code QR scanné"

#: src/views/contacts_view.py:606
#, python-brace-format
msgid "Public key: {}...{}"
msgstr "Clé publique: {}...{}"

#: src/views/contacts_view.py:676 src/views/sensor_view.py:219
#, python-brace-format
msgid "Login to {}"
msgstr "Se connecter à {}"

#: src/views/contacts_view.py:698
msgid "Login successful"
msgstr "Connexion réussie"

#: src/views/contacts_view.py:716
msgid "Login failed — wrong password"
msgstr "Échec de la connexion — mot de passe incorrect"

#: src/views/contacts_view.py:723
msgid "Login timed out"
msgstr "La connexion a expiré"

#: src/views/contacts_view.py:730
msgid "Retrying via flood..."
msgstr "Nouvelle tentative via Flood..."

#: src/views/contacts_view.py:737 src/views/sensor_view.py:228
msgid "Logging in..."
msgstr "Connexion en cours..."

#: src/views/contacts_view.py:904
msgid "Searching..."
msgstr "Recherche..."

#: src/views/contacts_view.py:943 src/views/channels_view.py:487
#, fuzzy, python-format
msgid "%d hop"
msgid_plural "%d hops"
msgstr[0] "%d sauts"
msgstr[1] "%d sauts"

#: src/views/contacts_view.py:957
msgid "Path found"
msgstr "Chemin trouvé"

#: src/views/contacts_view.py:972
msgid "Loading..."
msgstr "Chargement..."

#: src/views/contacts_view.py:982
msgid "No path cached"
msgstr "Pas de chemin en cache"

#: src/views/contacts_view.py:995
msgid "Not supported"
msgstr "Non pris en charge"

#: src/views/contacts_view.py:1006
msgid "Ping is not supported with 3-byte path hashes"
msgstr "Ping n'est pas supporté avec les hachages de chemin de 3 octets"

#: src/views/contacts_view.py:1029
#, python-brace-format
msgid "Ping {}: {}"
msgstr "Ping {}: {}"

#: src/views/contacts_view.py:1040
#, python-brace-format
msgid "Ping {}: timed out"
msgstr "Ping {}: délai expiré"

#: src/views/contacts_view.py:1053 src/views/repeater_view.py:526
#: src/views/repeater_view.py:661 src/views/sensor_view.py:55
msgid "Requesting..."
msgstr "Demander..."

#: src/views/contacts_view.py:1058 src/views/device_view.py:375
#: src/views/sensor_view.py:251
msgid "No response (timed out)"
msgstr "Aucune réponse (délai expiré)"

#: src/views/contacts_view.py:1067 src/views/contacts_view.py:1071
#: src/views/device_view.py:385 src/views/device_view.py:389
#: src/views/sensor_view.py:97 src/views/sensor_view.py:104
msgid "No telemetry data"
msgstr "Aucune donnée de télémétrie"

#: src/views/contacts_view.py:1074 src/views/device_view.py:404
msgid "Telemetry received"
msgstr "Télémétrie reçue"

#: src/views/contacts_view.py:1097 src/views/repeater_view.py:432
#, python-brace-format
msgid "Telemetry — {}"
msgstr "Télémétrie — {}"

#: src/views/contacts_view.py:1238
#, python-brace-format
msgid "Path to {}"
msgstr "Chemin vers {}"

#: src/views/contacts_view.py:1290 src/views/channels_view.py:1010
#: src/views/channels_view.py:1119 src/views/device_view.py:858
#: src/views/map_view.py:822
msgid "Unknown repeater"
msgstr "Répéteur inconnu"

#: src/views/channels_view.py:146 src/views/channels_view.py:1180
#: src/views/channels_view.py:1187
msgid "Heard Repeats"
msgstr "Répétitions Entendues"

#: src/views/channels_view.py:147 src/views/chat_view.py:97
msgid "Send Again"
msgstr "Renvoyer"

#: src/views/channels_view.py:148 src/views/channels_view.py:154
#: src/views/chat_view.py:98
msgid "Delete"
msgstr "Supprimer"

#: src/views/channels_view.py:151
msgid "Reply"
msgstr "Répondre"

#: src/views/channels_view.py:152
msgid "Copy Text"
msgstr "Copier le Texte"

#: src/views/channels_view.py:153
msgid "View Message Paths"
msgstr "Afficher Chemins des Messages"

#: src/views/channels_view.py:204 src/views/chat_helpers.py:176
#: src/views/chat_view.py:155
msgid "Share Location"
msgstr "Partager la Localisation"

#: src/views/channels_view.py:205 src/views/chat_view.py:156
msgid "Share Location from Map"
msgstr "Partager la Localisation Depuis la Carte"

#: src/views/channels_view.py:331 src/views/chat_view.py:285
msgid "You shared a contact:"
msgstr "Vous avez partagé un contact:"

#: src/views/channels_view.py:335 src/views/chat_view.py:289
#, python-brace-format
msgid "{name} shared a contact with you:"
msgstr "{name} a partagé un contact avec vous:"

#: src/views/channels_view.py:349 src/views/channels_view.py:465
#: src/views/chat_view.py:303 src/views/chat_view.py:415
msgid "Already added"
msgstr "Déjà ajouté"

#: src/views/channels_view.py:366 src/views/chat_view.py:320
msgid "You shared a location:"
msgstr "Vous avez partagé une localisation:"

#: src/views/channels_view.py:370 src/views/chat_view.py:324
#, python-brace-format
msgid "{name} shared a location:"
msgstr "{name} a partagé une localisation:"

#: src/views/channels_view.py:433 src/views/chat_view.py:383
msgid "New Messages"
msgstr "Nouveaux Messages"

#: src/views/channels_view.py:474
#, python-format
msgid "· %d repeat"
msgid_plural "· %d repeats"
msgstr[0] ""
msgstr[1] ""

#: src/views/channels_view.py:496
#, python-format
msgid "· %d resend"
msgid_plural "· %d resends"
msgstr[0] ""
msgstr[1] ""

#: src/views/channels_view.py:957
msgid ""
"No path information available. Path data is only captured for messages "
"received while connected."
msgstr ""
"Aucune information de chemin disponible. Les données de chemin sont "
"uniquement capturées pour les messages reçus lors de la connexion."

#: src/views/channels_view.py:1031
msgid "Direct message"
msgstr "Message direct"

#: src/views/channels_view.py:1032
msgid "No repeaters were used"
msgstr "Aucun répéteur n'a été utilisé"

#: src/views/channels_view.py:1039
msgid "No repeater details"
msgstr "Aucun détail de répéteur"

#: src/views/channels_view.py:1040
msgid "Path data is only captured via LOG_DATA while connected"
msgstr ""
"Les données de chemin sont uniquement capturées via LOG_DATA lors de la "
"connexion"

#: src/views/channels_view.py:1089
msgid "Message Path"
msgstr "Chemin du Message"

#: src/views/channels_view.py:1181
msgid "No repeats heard yet."
msgstr "Aucune répétition entendue pour le moment."

#: src/views/channels_view.py:1463 src/views/channels_view.py:2299
msgid "Public"
msgstr "Public"

#: src/views/channels_view.py:1464
msgid "Hashtag"
msgstr ""

#: src/views/channels_view.py:1465
msgid "Private"
msgstr ""

#: src/views/channels_view.py:1510
#, python-brace-format
msgid "{visible}/{total} channels"
msgstr "{visible}/{total} canaux"

#: src/views/channels_view.py:1514
#, python-brace-format
msgid "{total} channels"
msgstr "{total} canaux"

#: src/views/channels_view.py:1516
#, python-brace-format
msgid "{total} channel"
msgstr "{total} canal"

#. Info group
#: src/views/channels_view.py:1673
msgid "Channel Info"
msgstr "Informations du Canal"

#: src/views/channels_view.py:1705
msgid "Private Key"
msgstr ""

#: src/views/channels_view.py:1716
msgid "Private key copied to clipboard"
msgstr ""

#: src/views/channels_view.py:1734 src/views/channels_view.py:2030
#: src/views/channels_view.py:2036
#, python-brace-format
msgid "{} participant"
msgid_plural "{} participants"
msgstr[0] ""
msgstr[1] ""

#: src/views/channels_view.py:1747
#, fuzzy
msgid "Message Retention"
msgstr "Liste de messages"

#: src/views/channels_view.py:1750
msgid "1 Day"
msgstr "1 Jour"

#: src/views/channels_view.py:1751
msgid "1 Week"
msgstr "1 Semaine"

#: src/views/channels_view.py:1752
msgid "1 Month"
msgstr "1 Mois"

#: src/views/channels_view.py:1753
msgid "3 Months"
msgstr "3 Mois"

#: src/views/channels_view.py:1754
#, fuzzy
msgid "Forever"
msgstr "Jamais"

#: src/views/channels_view.py:1773
msgid "Notification Level"
msgstr ""

#: src/views/channels_view.py:1775
msgid "Default"
msgstr ""

#: src/views/channels_view.py:1805 src/views/channels_view.py:1810
msgid "Region"
msgstr ""

#: src/views/channels_view.py:1806
msgid "Limit flood messages to a specific region"
msgstr ""

#: src/views/channels_view.py:1834
msgid "No regions defined"
msgstr ""

#: src/views/channels_view.py:1835
msgid "Add regions in Settings to assign them to channels"
msgstr ""

#: src/views/channels_view.py:1854
#, fuzzy
msgid "Clear Messages"
msgstr "Tous les messages"

#: src/views/channels_view.py:1860
#, fuzzy
msgid "Clear Messages?"
msgstr "Tous les messages"

#: src/views/channels_view.py:1861
#, python-brace-format
msgid "Delete all messages in \"{}\"?"
msgstr ""

#: src/views/channels_view.py:1874
#, fuzzy
msgid "Messages cleared"
msgstr "Liste de messages"

#: src/views/channels_view.py:1884
msgid "Remove Channel"
msgstr "Supprimer le Canal"

#: src/views/channels_view.py:1890
msgid "Remove Channel?"
msgstr "Supprimer le Canal?"

#: src/views/channels_view.py:1891
#, python-brace-format
msgid "Remove \"{}\" and all its messages?"
msgstr ""

#: src/views/channels_view.py:1953
msgid "Blocked"
msgstr "Bloqué"

#: src/views/channels_view.py:2032
#, python-brace-format
msgid "{} blocked"
msgid_plural "{} blocked"
msgstr[0] ""
msgstr[1] ""

#: src/views/channels_view.py:2062
msgid "Unblock"
msgstr ""

#: src/views/channels_view.py:2068 src/views/channels_view.py:2146
msgid "Block"
msgstr "Bloquer"

#: src/views/channels_view.py:2077
#, fuzzy, python-brace-format
msgid "{} message"
msgid_plural "{} messages"
msgstr[0] "{} messages"
msgstr[1] "{} messages"

#: src/views/channels_view.py:2093
#, python-brace-format
msgid "Unblocked {}"
msgstr ""

#: src/views/channels_view.py:2138
#, python-brace-format
msgid "Block {}?"
msgstr "Bloquer {}?"

#: src/views/channels_view.py:2140
msgid ""
"Channel messages don't include sender identity. This block matches by name "
"only — the sender could change their name to bypass it."
msgstr ""
"Les messages du canal n'incluent pas l'identité de l'expéditeur. Ce bloc "
"correspond uniquement par nom — l'expéditeur peut modifier son nom pour le "
"contourner."

#: src/views/channels_view.py:2147
#, fuzzy
msgid "Block and Delete Messages"
msgstr "Derniers Messages"

#: src/views/channels_view.py:2164
#, python-brace-format
msgid "Blocked {}"
msgstr "{} Bloqué"

#: src/views/channels_view.py:2211
msgid "No Slots Available"
msgstr ""

#: src/views/channels_view.py:2212
msgid "All 8 channel slots are in use."
msgstr "Tous les 8 emplacements de canal sont utilisés."

#: src/views/channels_view.py:2225
msgid "A random PSK will be generated. Share it with others so they can join."
msgstr ""

#: src/views/channels_view.py:2233
msgid "Create"
msgstr ""

#: src/views/channels_view.py:2257
msgid "Enter the channel name and private key shared with you."
msgstr "Entrez le nom du canal et la clé privée qui vous a été partagée."

#: src/views/channels_view.py:2266 src/views/channels_view.py:2317
msgid "Join"
msgstr ""

#: src/views/channels_view.py:2287
#, fuzzy
msgid "Already Joined"
msgstr "Déjà Inscrit"

#: src/views/channels_view.py:2287
msgid "You are already on the public channel."
msgstr "Vous êtes déjà sur le canal public."

#: src/views/channels_view.py:2309
msgid "Enter a hashtag name. Anyone using the same hashtag can communicate."
msgstr ""

#: src/views/device_view.py:175
msgid "Device public key not available"
msgstr "Clé publique de l'appareil non disponible"

#: src/views/device_view.py:186
msgid "QR code library not available"
msgstr "Bibliothèque de code QR non disponible"

#: src/views/device_view.py:219
msgid "Factory Reset?"
msgstr "Réinitialisation d'Usine?"

#: src/views/device_view.py:221
msgid ""
"This will permanently erase ALL data on the companion device, including "
"contacts, messages, channels, settings, and the device identity (keys). This "
"action cannot be undone."
msgstr ""
"Cela effacera définitivement TOUTES les données de l'appareil compagnon, y "
"compris les contacts, les messages, les canaux, les paramètres et l'identité "
"de l'appareil (clés). Cette action est irréversible."

#: src/views/device_view.py:240
msgid "Reboot Device?"
msgstr "Redémarrer l'Appareil?"

#: src/views/device_view.py:241
msgid "The device will disconnect and restart."
msgstr "L'appareil se déconnectera et redémarrera."

#: src/views/device_view.py:244 src/views/repeater_view.py:1311
msgid "Reboot"
msgstr "Redémarrer"

#: src/views/device_view.py:327
msgid "Not set"
msgstr "Non configuré"

#: src/views/device_view.py:336 src/views/device_view.py:344
msgid "Location (manually set)"
msgstr "Position (définie manuellement)"

#: src/views/device_view.py:340
msgid "Location (GPS)"
msgstr "Position (GPS)"

#: src/views/device_view.py:340
msgid "Location (GPS on, no fix)"
msgstr "Position (GPS activé, pas de fix)"

#: src/views/device_view.py:344
msgid "Location (GPS off)"
msgstr "Position (GPS désactivé)"

#: src/views/device_view.py:369 src/views/repeater_view.py:390
msgid "Requesting…"
msgstr "Demande en cours…"

#: src/views/device_view.py:451
#, python-brace-format
msgid "{days}d"
msgstr "{days}j"

#: src/views/device_view.py:453
#, python-brace-format
msgid "{hours}h"
msgstr "{hours}h"

#: src/views/device_view.py:454
#, python-brace-format
msgid "{mins}m"
msgstr "{mins}m"

#: src/views/device_view.py:456
#, python-brace-format
msgid "{} messages"
msgstr "{} messages"

#: src/views/device_view.py:477
#, python-brace-format
msgid "{count} errors"
msgstr "{count} erreurs"

#: src/views/device_view.py:492 src/views/device_view.py:494
msgid "Connected"
msgstr "Connecté"

#: src/views/device_view.py:506
msgid "Trace Path is not supported with 3-byte path hashes"
msgstr ""
"Traçage de Chemin n'est pas supporté avec les hachages de chemin de 3 octets"

#: src/views/device_view.py:528
msgid "e.g. aa,bb,cc"
msgstr "p. ex. aa,bb,cc"

#: src/views/device_view.py:528
msgid "e.g. aabb,ccdd"
msgstr "p. ex. aabb,ccdd"

#: src/views/device_view.py:528
msgid "e.g. aabbcc,ddeeff"
msgstr "p. ex. aabbcc,ddeeff"

#: src/views/device_view.py:621
msgid "No repeaters with known location"
msgstr "Aucun répéteur avec position connue"

#: src/views/device_view.py:683
#, fuzzy, python-brace-format
msgid "Trace complete: {} hops, {}"
msgstr "Trace terminée: {} sauts, {:.1f}s"

#: src/views/device_view.py:689
msgid "Result"
msgstr ""

#: src/views/device_view.py:737
msgid "Trace timed out"
msgstr "La trace a expiré"

#: src/views/device_view.py:753
msgid "Invalid hex in path"
msgstr "Hex invalide dans le chemin"

#: src/views/device_view.py:764
msgid "Tracing..."
msgstr "Traçage en cours..."

#: src/views/device_view.py:932 src/views/device_view.py:1103
#, python-brace-format
msgid "Scanning... {}s remaining"
msgstr "Analyse en cours... {} s restant"

#: src/views/device_view.py:979
msgid "Add to Contacts"
msgstr "Ajouter aux Contacts"

#: src/views/device_view.py:986
#, python-brace-format
msgid "Added {}"
msgstr "Ajouté {}"

#: src/views/device_view.py:1015
msgid "Node"
msgstr "Nœud"

#: src/views/device_view.py:1112
#, python-brace-format
msgid "Done. {} nodes found."
msgstr "Terminé. {} nœuds trouvés."

#: src/views/device_view.py:1114
#, python-brace-format
msgid "Done. {} node found."
msgstr "Terminé. {} nœud trouvé."

#: src/views/device_view.py:1152
#, python-brace-format
msgid "{unit} over last 2 minutes"
msgstr ""

#: src/views/device_view.py:1301
msgid "Size"
msgstr "Taille"

#: src/views/device_view.py:1301
msgid "bytes"
msgstr "octets"

#: src/views/device_view.py:1306
msgid "hops"
msgstr "sauts"

#: src/views/device_view.py:1307
msgid "Path Hashes"
msgstr "Hachages de Chemin"

#: src/views/device_view.py:1307
msgid "byte per hop"
msgstr "octet par saut"

#: src/views/device_view.py:1378
#, python-brace-format
msgid "Update available: {version}"
msgstr "Mise à jour disponible: {version}"

#: src/views/settings_view.py:143
msgid "Custom"
msgstr ""

#. Telemetry combo models — shared label set
#: src/views/settings_view.py:151
msgid "Deny All"
msgstr ""

#: src/views/settings_view.py:151
msgid "Allow per Contact"
msgstr "Autoriser par Contact"

#: src/views/settings_view.py:151
msgid "Allow All"
msgstr "Tout Autoriser"

#: src/views/settings_view.py:649
msgid "Settings applied on device"
msgstr "Paramètres appliqués sur l'appareil"

#: src/views/settings_view.py:674
msgid "Unknown error"
msgstr ""

#: src/views/settings_view.py:675
#, python-brace-format
msgid "Settings error: {}"
msgstr "Erreur Paramètres: {}"

#: src/views/settings_view.py:699
#, python-brace-format
msgid "TX Power (dBm, max {})"
msgstr "Puissance TX (dBm, max {})"

#: src/views/settings_view.py:794
msgid "Location unavailable"
msgstr "Position indisponible"

#: src/views/settings_view.py:798
msgid "Location filled, click Apply to save"
msgstr "Position remplie, cliquer sur Appliquer pour sauvegarder"

#: src/views/settings_view.py:821
msgid "Pick Location"
msgstr "Choisir Position"

#: src/views/settings_view.py:821
msgid "Set Location"
msgstr "Définir Position"

#: src/views/settings_view.py:931
msgid "Connect to a device first"
msgstr ""

#: src/views/settings_view.py:943 src/views/settings_view.py:1121
#, fuzzy
msgid "Discovering repeaters in range..."
msgstr "Gestion des appareils et des répéteurs"

#: src/views/settings_view.py:961
#, python-brace-format
msgid "Found {} regions"
msgstr ""

#: src/views/settings_view.py:963
#, python-brace-format
msgid "Found {} region"
msgstr ""

#: src/views/settings_view.py:970
msgid ""
"Contact list on the device is full. Remove some contacts to discover regions."
msgstr ""

#: src/views/settings_view.py:973
msgid "No regions found"
msgstr ""

#: src/views/settings_view.py:975
#, fuzzy
msgid "No repeaters in range"
msgstr "Aucun répéteur dans les contacts"

#: src/views/settings_view.py:991 src/views/settings_view.py:1000
#, python-brace-format
msgid "from {}"
msgstr ""

#: src/views/settings_view.py:993 src/views/settings_view.py:1002
msgid "(already added)"
msgstr "(déjà ajouté)"

#: src/views/settings_view.py:1070
#, python-brace-format
msgid "Querying {} repeaters..."
msgstr ""

#: src/views/settings_view.py:1072
#, python-brace-format
msgid "Querying {} repeater..."
msgstr ""

#: src/views/settings_view.py:1166
#, python-brace-format
msgid "Added {} regions"
msgstr "{} régions ajoutées"

#: src/views/settings_view.py:1168
#, python-brace-format
msgid "Added {} region"
msgstr "{} région ajoutée"

#: src/views/settings_view.py:1236 src/views/settings_view.py:1346
#: src/views/settings_view.py:1375
msgid "Not Connected"
msgstr ""

#: src/views/settings_view.py:1237
msgid "Connect to a device first to export a backup."
msgstr ""

#: src/views/settings_view.py:1275 src/views/settings_view.py:1356
msgid "JSON files"
msgstr ""

#: src/views/settings_view.py:1288
msgid "Backup exported successfully"
msgstr "Sauvegarde exportée avec succès"

#: src/views/settings_view.py:1292
#, python-brace-format
msgid "Export failed: {}"
msgstr ""

#: src/views/settings_view.py:1302
msgid "Device does not support key export"
msgstr ""

#: src/views/settings_view.py:1347
msgid "Connect to a device first to import a backup."
msgstr ""

#: src/views/settings_view.py:1376
msgid "Connect to a device first to restore a backup."
msgstr ""

#: src/views/settings_view.py:1386
msgid "No Auto Backups"
msgstr ""

#: src/views/settings_view.py:1387
msgid "No automatic backups found for this device."
msgstr ""

#: src/views/settings_view.py:1393
#, fuzzy
msgid "Pick Snapshot"
msgstr "Indiquer sur une carte"

#: src/views/settings_view.py:1442
#, python-brace-format
msgid "Could not read backup file: {}"
msgstr ""

#: src/views/settings_view.py:1458
#, python-brace-format
msgid "Source: {}"
msgstr ""

#: src/views/settings_view.py:1489
#, python-brace-format
msgid "{} contacts"
msgstr "{} contacts"

#: src/views/settings_view.py:1491
#, python-brace-format
msgid "{} channels"
msgstr "{} canaux"

#: src/views/settings_view.py:1495
msgid "messages"
msgstr ""

#: src/views/settings_view.py:1497
msgid "device identity"
msgstr ""

#: src/views/settings_view.py:1499
#, python-brace-format
msgid "Imported: {}"
msgstr ""

#: src/views/settings_view.py:1501
msgid "Nothing new to import"
msgstr ""

#: src/views/repeater_view.py:149
msgid "room"
msgstr ""

#: src/views/repeater_view.py:150
msgid "repeater"
msgstr ""

#: src/views/repeater_view.py:303
#, python-brace-format
msgid "Time sync sent to {}"
msgstr ""

#: src/views/repeater_view.py:310
msgid "Reset Clock & Reboot?"
msgstr ""

#: src/views/repeater_view.py:312
msgid ""
"The clock is ahead of the current time.\n"
"Firmware does not allow setting time backwards.\n"
"\n"
"This will reset the clock and reboot the device."
msgstr ""

#: src/views/repeater_view.py:327
msgid "Rebooting..."
msgstr ""

#: src/views/repeater_view.py:329
#, python-brace-format
msgid "Clock reset & reboot sent to {}"
msgstr ""

#: src/views/repeater_view.py:342 src/views/repeater_view.py:535
#: src/views/repeater_view.py:667 src/views/repeater_view.py:844
msgid "Request timed out"
msgstr ""

#: src/views/repeater_view.py:559
#, python-brace-format
msgid "{} of {} neighbors"
msgstr ""

#: src/views/repeater_view.py:576
msgid "Neighbor Map"
msgstr ""

#: src/views/repeater_view.py:702
#, python-brace-format
msgid "{} entry"
msgstr ""

#: src/views/repeater_view.py:702
#, python-brace-format
msgid "{} entries"
msgstr ""

#: src/views/repeater_view.py:721
msgid "Remove from ACL?"
msgstr ""

#: src/views/repeater_view.py:722
#, python-brace-format
msgid "Remove {} from the access control list?"
msgstr ""

#: src/views/repeater_view.py:744
msgid "Role"
msgstr ""

#: src/views/repeater_view.py:745
msgid "Admin"
msgstr ""

#: src/views/repeater_view.py:745
msgid "Read-Write"
msgstr ""

#: src/views/repeater_view.py:745
msgid "Read Only"
msgstr ""

#: src/views/repeater_view.py:770
msgid "Add to Access Control"
msgstr "Ajouter à Contrôle d'Accès"

#: src/views/repeater_view.py:872
msgid "Global (wildcard)"
msgstr ""

#: src/views/repeater_view.py:875
msgid "Home"
msgstr ""

#: src/views/repeater_view.py:876
msgid "Flood allowed"
msgstr ""

#: src/views/repeater_view.py:876
msgid "Flood denied"
msgstr ""

#: src/views/repeater_view.py:909
msgid "Deny Flood"
msgstr ""

#: src/views/repeater_view.py:909
msgid "Allow Flood"
msgstr "Autoriser Flood"

#: src/views/repeater_view.py:913
msgid "Set as Home"
msgstr ""

#: src/views/repeater_view.py:965
msgid "Remove child regions first"
msgstr ""

#: src/views/repeater_view.py:1003
msgid "Unsaved Changes"
msgstr "Modifications non sauvegardées"

#: src/views/repeater_view.py:1004
msgid "You have unsaved region changes."
msgstr "Vous avez des modifications de région non sauvegardées."

#: src/views/repeater_view.py:1006
msgid "Discard"
msgstr ""

#: src/views/repeater_view.py:1034
msgid "Add Region"
msgstr "Ajouter Région"

#: src/views/repeater_view.py:1035
msgid "Enter a name and optionally choose a parent region."
msgstr ""

#: src/views/repeater_view.py:1232
msgid "Admin password changed — re-login required"
msgstr "Mot de passe administrateur modifié — reconnexion requise"

#: src/views/repeater_view.py:1299
#, python-brace-format
msgid "Settings sent to {}"
msgstr "Paramètres envoyés à {}"

#: src/views/repeater_view.py:1303
#, python-brace-format
msgid "Reboot {}?"
msgstr ""

#: src/views/repeater_view.py:1306
#, python-brace-format
msgid "Reboot {}? It will be offline briefly."
msgstr ""

#. positive = behind, negative = ahead
#. more than 5 minutes off
#: src/views/repeater_view.py:1438
msgid "Time is off"
msgstr ""

#: src/views/sensor_view.py:234
#, fuzzy, python-brace-format
msgid "Logged in to {}"
msgstr "Se connecter à {}"

#: src/views/sensor_view.py:237
#, fuzzy
msgid "Login failed"
msgstr "La connexion a expiré"

#: src/views/chat_helpers.py:62
msgid "Shared Location"
msgstr "Localisation Partagée"

#: src/views/chat_helpers.py:64
msgid "Shared"
msgstr "Partagée"

#: src/views/chat_helpers.py:129 src/views/chat_helpers.py:177
msgid "Share"
msgstr "Partager"

#: src/views/chat_helpers.py:158
msgid "Location Not Available"
msgstr "Localisation non disponible"

#: src/views/chat_helpers.py:159
msgid "Your companion does not have a GPS location."
msgstr "Votre compagnon n'a pas de localisation GPS."

#: src/views/chat_view.py:140
#, fuzzy
msgid "Send Automatically"
msgstr "Démarrage automatique à la connexion"

#: src/views/chat_view.py:141
#, fuzzy
msgid "Send Direct"
msgstr "Direct"

#: src/views/chat_view.py:142
#, fuzzy
msgid "Send Flood"
msgstr "Flood"

#: src/views/chat_view.py:422 src/views/chat_view.py:423
msgid "Sending"
msgstr ""

#: src/views/chat_view.py:507
msgid "Read-only room"
msgstr ""

#: src/views/map_view.py:220
#, python-brace-format
msgid "{} of {} contacts on map"
msgstr "{} de {} contacts sur la carte"

#: src/views/map_view.py:222
#, python-brace-format
msgid "{} of {} located on map"
msgstr ""

#: src/views/map_view.py:447
#, python-brace-format
msgid "and {} more"
msgstr ""

#: src/views/map_view.py:650
msgid "Position is illustrative — real location unknown"
msgstr ""

#: src/views/map_view.py:658
#, python-brace-format
msgid "SNR: {} dB"
msgstr ""

#: src/views/map_view.py:1012
msgid "Pick Trace Route"
msgstr ""

#: src/views/map_view.py:1223
msgid "Tap repeaters to build the trace route"
msgstr ""

#, fuzzy
#~ msgid "Add Region (e.g. Prague)"
#~ msgstr "Ajouter Région (ex. Paris)"

#~ msgid "Reboot Repeater"
#~ msgstr "Redémarrer le répéteur"

#~ msgid "Login and access CLI, status, and settings"
#~ msgstr "Se connecter et accéder à CLI, statut et paramètres"

#~ msgid "{} — Management"
#~ msgstr "{} — Gestion"

#~ msgid ""
#~ "The repeater clock is ahead of the current time.\n"
#~ "Firmware does not allow setting time backwards.\n"
#~ "\n"
#~ "This will reset the clock and reboot the repeater."
#~ msgstr ""
#~ "L'horloge du répéteur est en avance sur l'heure actuelle.\n"
#~ "Le firmware n'autorise pas de régler l'heure en arrière.\n"
#~ "\n"
#~ "Cela réinitialisera l'horloge et redémarrera le répéteur."

#~ msgid "Select a contact and role."
#~ msgstr "Sélectionnez un contact et un rôle."

#~ msgid "SNR: {:.1f} dB"
#~ msgstr "SNR: {:.1f} dB"

#, python-brace-format
#~ msgid "{}ms (late)"
#~ msgstr "{}ms (en retard)"

#, python-format
#~ msgid "%d ms"
#~ msgstr "%d ms"

#, fuzzy
#~ msgid "New features:"
#~ msgstr "Caractéristiques:"

#, fuzzy
#~ msgid "Map view for routing paths in contact details"
#~ msgstr "Vue cartographique affichant les positions des contacts"

#, fuzzy
#~ msgid ""
#~ "Code refactoring and performance optimizations across the application"
#~ msgstr "Configurer le comportement et l'apparence de l'application"

#~ msgid "Add from Contacts"
#~ msgstr "Ajouter depuis Contacts"

#~ msgid "No repeaters or rooms in contacts"
#~ msgstr "Aucun répéteur ou salle dans les contacts"

#~ msgid "Save configuration and messages to a file"
#~ msgstr "Sauvegarder la configuration et les messages dans un fichier."

#~ msgid "Device settings: name, radio, location"
#~ msgstr "Paramètres Appareil: nom, radio, position"

#, python-brace-format
#~ msgid "Contacts: {} ({} new)"
#~ msgstr "Contacts: {} ({} nouveaux)"

#, python-brace-format
#~ msgid "Channels: {} ({} new)"
#~ msgstr "Canaux: {} ({} nouveaux)"

#, python-brace-format
#~ msgid "Channel messages: {}"
#~ msgstr "Messages de canal : {}"

#, python-brace-format
#~ msgid "Saved passwords: {}"
#~ msgstr "Mots de passe sauvegardés: {}"

#~ msgid "Contacts & Channels Only"
#~ msgstr "Contacts & Canaux Seulement"

#~ msgid "Comma-separated hex hops (e.g. 9a,74 or 9a3b,744c for 2-byte)"
#~ msgstr ""
#~ "Sauts hexadécimaux séparés par des virgules (par exemple 9a,74 ou "
#~ "9a3b,744c pour 2 octets)"

#~ msgid "Automatically pick the best route from history"
#~ msgstr "Choisir automatiquement le meilleur itinéraire d'après l'historique"

#~ msgid "Save to a file"
#~ msgstr "Sauvegarder dans un fichier"

#~ msgid "Contacts view with messaging"
#~ msgstr "Vue des contacts avec messagerie"

#~ msgid "Channel list with different channel types"
#~ msgstr "Liste des canaux avec différents types de canaux"

#~ msgid "Device information and settings"
#~ msgstr "Informations et paramètres appareil"

#, python-brace-format
#~ msgid "Syncing channels: {index}/{total}"
#~ msgstr "Synchronisation des canaux : {index}/{total}"

#, python-brace-format
#~ msgid "Syncing contacts: {current}/{total}"
#~ msgstr "Synchronisation des contacts : {current}/{total}"
