{
  "@@locale": "fr",
  "nav.home": "État",
  "status.title": "État",
  "status.sip.connected": "Enregistré",
  "status.sip.connecting": "Connexion…",
  "status.sip.not_configured": "Non configuré",
  "status.sip.since": "depuis {duration}",
  "status.sip.at": "sur {host} en tant que {user}",
  "status.sip.ext": "Numéro interne {n}",
  "status.sip.public_ip": "IP publique {ip}",
  "status.sip.nat_symmetric": "⚠️ NAT symétrique — l’audio nécessite une redirection de port RTP identique",
  "status.sip.stun": "STUN {server} · NAT : {nat}",
  "status.sip.setup_cta": "Configurer la téléphonie",
  "status.sip.redo_cta": "Reconfigurer la téléphonie",
  "status.token.set": "Jeton PhoneBlock enregistré",
  "status.token.missing": "Aucun jeton PhoneBlock",
  "status.token.rejected": "Jeton refusé",
  "status.token.rejected.msg": "PhoneBlock a rejeté le jeton. Veuillez générer un nouveau jeton en cliquant sur « Demander un nouveau jeton ».",
  "status.token.cta": "Créer un jeton",
  "status.token.test": "Tester",
  "status.token.renew": "Renouveler",
  "status.token.testing": "Vérification du jeton…",
  "status.token.test.ok": "Jeton valide — PhoneBlock joignable.",
  "status.token.test.fail": "Jeton rejeté. Veuillez en demander un nouveau.",
  "status.token.test.none": "Aucun jeton configuré.",
  "status.counters.total": "Total",
  "status.counters.spam": "Spam bloqué",
  "status.counters.legit": "Légitime",
  "status.counters.errors": "Erreurs",
  "status.info": "Firmware {fw} · IP {ip} · Uptime {uptime} · Latence API {api}",
  "status.calls.title": "Derniers appels",
  "status.calls.empty": "aucun appel pour l’instant",
  "status.calls.col.when": "Quand",
  "status.calls.col.number": "Numéro",
  "status.calls.col.name": "Nom",
  "status.calls.col.verdict": "Verdict",
  "status.calls.clear": "Vider la liste",
  "status.calls.log_known": "Journaliser les appels connus",
  "status.calls.log_known.help": "Si désactivé, les appels provenant de numéros du carnet d’adresses et les codes internes (**, *…) n’apparaissent pas dans la liste — les compteurs ci-dessus restent mis à jour.",
  "status.calls.verdict.spam": "SPAM ({direct} direct, {range} plage)",
  "status.calls.verdict.spam_plain": "SPAM",
  "status.calls.verdict.spam_list": "SPAM (liste noire, {scope})",
  "status.calls.verdict.suspect": "SOUPÇON DE SPAM ({direct} direct, {range} plage)",
  "status.calls.verdict.blacklist": "SPAM (liste noire, {scope})",
  "status.calls.verdict.name_pattern": "SPAM (modèle de nom)",
  "status.calls.verdict.legitimate": "légitime",
  "status.calls.verdict.unknown": "inconnu",
  "status.calls.verdict.test": "Test",
  "status.calls.verdict.error": "Erreur",
  "status.calls.verdict.scope.number": "Numéro",
  "status.calls.verdict.scope.range": "Domaine",
  "region.title": "Langue et pays",
  "region.lang": "Langue",
  "region.country": "Pays",
  "region.country.hint": "Les numéros de téléphone sans indicatif de pays sont complétés par ce pays. Si le pays indiqué ici est incorrect, PhoneBlock ne trouvera aucune entrée correspondant à l'appel. La langue s'applique également au message d'accueil du répondeur et à l'e-mail de statut.",
  "status.thresholds.title": "Traverses en blocs",
  "status.thresholds.intro": "À partir de combien de votes « PhoneBlock » le dongle intercepte-t-il un appel ? Les votes « Direct » ont plus de poids que les votes « Range », d'où la distinction entre ces deux valeurs.",
  "status.thresholds.direct": "Votes directs",
  "status.thresholds.direct.help": "Bloque directement les appels provenant du numéro appelant. Valeur par défaut : 4 — même valeur que la liste de blocage publique de PhoneBlock.",
  "status.thresholds.range": "Voix de la gamme",
  "status.thresholds.range.help": "Votes contre les voisins du même bloc de 10 ou de 100. Valeur par défaut : 10. « Désactivé » désactive le bloc de portée — seuls les coups directs sont alors pris en compte.",
  "status.thresholds.range.off": "Extrait de",
  "status.thresholds.saved": "Enregistré.",
  "status.thresholds.invalid": "Valeur non valide.",
  "status.system.title": "Système",
  "status.system.heap": "Mémoire libre : {free} (minimum : {min}, plus grand bloc : {largest})",
  "status.system.fs": "Partition de données : {free} libres sur {total} ({used} utilisés)",
  "status.system.temp": "Température de la puce : {temp} °C",
  "status.system.col.task": "Tâche",
  "status.system.col.cpu": "CPU",
  "status.system.col.stack": "Pile libre",
  "status.system.led_quiet": "N’allumer la LED qu’en cas de problème",
  "status.system.led_quiet.hint": "Normalement la LED reste allumée quand tout va bien. Avec cette option elle reste éteinte en fonctionnement normal et ne s’allume ou ne clignote qu’en cas de problème (configuration requise, non enregistré, jeton refusé, pas de connexion). Pratique dans un salon.",
  "status.clock.now": "Heure : {time}",
  "status.clock.pending": "Heure : en cours de synchronisation…",
  "status.time.today": "aujourd'hui {time}",
  "status.time.yesterday": "hier {time}",
  "status.tz.current": "Fuseau horaire : {tz}",
  "status.tz.apply": "Passer à {zone}",
  "status.tz.saved": "Fuseau horaire enregistré.",
  "status.errors.title": "Journal",
  "status.errors.note": "Le journal sert à diagnostiquer les problèmes — toute entrée affichée n'est pas forcément un vrai défaut ; beaucoup d'erreurs sont passagères et disparaissent d'elles-mêmes.",
  "status.errors.empty": "aucune entrée",
  "status.errors.clear": "Vider le journal",
  "status.errors.capture_info": "Journaliser aussi les infos",
  "status.errors.capture_info.hint": "Pour le dépannage : affiche aussi les messages d'info (par ex. le serveur:port essayé). Remplit vite le journal — à désactiver ensuite.",
  "status.auth.title": "Protection d’accès",
  "status.auth.intro": "Protège l’interface de configuration en exploitation. Une fois activée, la page demande une « Connexion avec PhoneBlock » avant d’afficher les appels ou d’accepter des modifications.",
  "status.auth.disabled": "Protection d’accès désactivée — n’importe qui sur le LAN peut atteindre le tableau de bord sans se connecter.",
  "status.auth.enabled": "Protection d’accès active — connecté en tant qu’utilisateur PhoneBlock.",
  "status.auth.enabled.user": "Protection d’accès active — connecté en tant que {user}.",
  "status.auth.no_token": "La protection d’accès nécessite un jeton PhoneBlock configuré (voir l’étape 2 ci-dessus). Le dongle ne peut vérifier ton identité auprès du serveur qu’ensuite.",
  "status.auth.enable": "Activer la protection d’accès",
  "status.auth.disable": "Désactiver la protection d’accès",
  "status.auth.logout": "Se déconnecter",
  "status.auth.activate.intro": "Avant d’activer, tu es redirigé vers phoneblock.net pour te connecter — la protection n’est activée qu’après une connexion réussie. Tu ne peux donc pas te bloquer dehors.",
  "login.title": "Connexion requise",
  "login.intro": "La protection d’accès de ce dongle est active. Clique ci-dessous pour te connecter avec ton compte PhoneBlock — tu seras brièvement redirigé vers phoneblock.net puis renvoyé automatiquement.",
  "login.button": "Se connecter avec PhoneBlock",
  "login.remember": "Rester connecté",
  "login.remember.help": "Place un cookie sur cet appareil pour que le dongle te reconnaisse la prochaine fois sans détour par phoneblock.net. Un seul navigateur à la fois peut être mémorisé.",
  "login.error.mismatch": "Échec de la connexion — ce compte PhoneBlock n’est pas le propriétaire de ce dongle.",
  "login.error.mismatch_named": "Échec de la connexion — ce dongle appartient au compte {expected}, mais tu es connecté avec un autre utilisateur.",
  "login.error.rejected": "Échec de la connexion — le serveur PhoneBlock n’a pas confirmé l’identité.",
  "login.error.expired": "La connexion a expiré ou n’est pas valide. Réessaie.",
  "login.error.persist": "L’activation n’a pas pu être enregistrée. Réessaie.",
  "login.error.missing": "La réponse de phoneblock.net était incomplète. Réessaie.",
  "login.error.generic": "Échec de la connexion. Réessaie.",
  "status.reset.title": "Réinitialisation",
  "status.reset.intro": "Efface tous les réglages du dongle (identifiants SIP, jeton PhoneBlock, historique des erreurs) et redémarre.",
  "status.reset.button": "Réinitialiser la configuration",
  "status.reset.confirm": "Effacer vraiment tous les réglages du dongle et redémarrer ?",
  "status.reset.running": "Réinitialisation — le dongle redémarre.",
  "status.reset.error": "Échec de la réinitialisation : {msg}",
  "status.fw.title": "Mettre à jour le firmware",
  "status.fw.intro": "Téléverser un nouveau binaire de firmware ou vérifier directement le CDN PhoneBlock. Dans les deux cas, la nouvelle version est écrite dans le slot flash inactif ; après le redémarrage, le dongle démarre la nouvelle version et revient automatiquement en arrière en cas d’échec.",
  "status.fw.current": "Partition active : {partition} · Version {version}",
  "status.fw.pick": "Choisir le firmware (.bin)",
  "status.fw.submit": "Téléverser et redémarrer",
  "status.fw.confirm": "Installer le nouveau firmware et redémarrer le dongle ?",
  "status.fw.uploading": "Téléversement… {pct} %",
  "status.fw.done": "Firmware téléversé — le dongle redémarre. Veuillez patienter un instant, puis recharger la page.",
  "status.fw.error": "Erreur : {msg}",
  "status.fw.check": "Vérifier les mises à jour",
  "status.fw.checking": "Vérification en cours…",
  "status.fw.check.none": "Aucune nouvelle version disponible (actuellement {version}).",
  "status.fw.check.found": "Nouvelle version {version} en cours d’installation…",
  "status.fw.check.installed": "Version {version} installée — le dongle redémarre. Veuillez patienter un instant, puis recharger la page.",
  "status.fw.check.error": "Échec de la vérification : {msg}",
  "status.fw.failed": "La dernière mise à jour vers la version {version} n’a pas survécu au démarrage — restauration automatique. La mise à jour automatique ignore cette version. Cliquez sur « Vérifier les mises à jour » pour réessayer.",
  "status.fw.auto_update": "Mise à jour automatique quotidienne",
  "status.fw.auto_update.help": "Si activée, le dongle vérifie une fois par jour la présence d’une version plus récente sur le CDN PhoneBlock et l’installe automatiquement. Téléverser un firmware manuellement désactive cette option pour que la vérification quotidienne n’écrase pas ta version choisie — réactive-la ici quand tu veux suivre le flux des versions publiées.",
  "status.fw.channel": "Canal de mise à jour",
  "status.fw.channel.help": "Choisis « Bêta » pour recevoir les versions de test en avance — par exemple pour vérifier un bug que tu as signalé. « Stable » ne fournit que les versions publiées. Dès qu’une version testée est publiée définitivement, tu y reviens automatiquement.",
  "status.fw.channel.stable": "Stable",
  "status.fw.channel.beta": "Bêta (versions de test)",
  "status.fw.crash_report": "Envoyer les rapports d’erreur à phoneblock.net",
  "status.fw.crash_report.help": "Si le dongle redémarre après une erreur logicielle, un instantané mémoire est écrit dans une partition flash réservée. Si cette option est activée, le dongle envoie l’instantané à phoneblock.net au prochain démarrage — cela nous aide à identifier et corriger les bugs en production. Désactive-la pour empêcher l’envoi ; les instantanés stockés sont alors effacés localement au lieu d’être transmis.",
  "status.mail.title": "E-mails d’état",
  "status.mail.intro": "Le dongle peut t’envoyer des notifications d’état directement par e-mail — via ton propre compte de messagerie. Saisis les identifiants de ton fournisseur ; le dongle envoie au maximum une notification par jour.",
  "status.mail.host": "Serveur SMTP",
  "status.mail.port": "Port (vide = automatique)",
  "status.mail.security": "Chiffrement",
  "status.mail.security.tls": "TLS (port 465)",
  "status.mail.security.starttls": "STARTTLS (port 587)",
  "status.mail.user": "Nom d’utilisateur (identifiant SMTP)",
  "status.mail.pass": "Mot de passe",
  "status.mail.pass.keep": "enregistré — laisser vide pour le conserver",
  "status.mail.from": "Expéditeur (e-mail, vide = nom d’utilisateur)",
  "status.mail.to": "Destinataires (adresse e-mail, séparer les destinataires multiples par « ; »)",
  "status.mail.help": "Astuce : pour Gmail ou Outlook, il faut généralement un « mot de passe d’application » (si la connexion à deux facteurs est activée), pas ton mot de passe habituel. Les fournisseurs classiques comme GMX, web.de ou mailbox.org fonctionnent avec le nom d’utilisateur et le mot de passe.",
  "status.mail.on_error": "E-mail en cas d’erreurs et de plantages",
  "status.mail.on_error.help": "Envoie un e-mail par jour si une erreur est apparue dans le journal depuis la dernière notification — y compris un redémarrage après un plantage.",
  "status.mail.on_spam": "E-mail en cas d’appels spam bloqués",
  "status.mail.on_spam.help": "Envoie un e-mail par jour si des appels spam ont été bloqués depuis la dernière notification.",
  "status.mail.on_update": "E-mail lors de la mise à jour du micrologiciel",
  "status.mail.on_update.help": "Envoie un e-mail une fois que la clé a été mise à jour vers une nouvelle version du micrologiciel, avec un lien vers le journal des modifications.",
  "status.mail.save": "Enregistrer",
  "status.mail.saved": "Enregistré.",
  "status.mail.test": "Envoyer un e-mail de test",
  "status.mail.testing": "Envoi de l’e-mail de test…",
  "status.mail.test.sent": "E-mail de test en cours d’envoi — le résultat apparaîtra dans le journal.",
  "status.mail.test.fail": "Échec de l’envoi — vérifie les réglages et le journal.",
  "status.mail.err.host": "Serveur SMTP manquant",
  "status.mail.err.user": "Nom d’utilisateur manquant",
  "status.mail.err.pass": "Mot de passe manquant",
  "status.mail.err.to": "Destinataire invalide",
  "status.mail.err.to_many": "Nombre maximal de destinataires : {max}",
  "status.mail.err.from": "Expéditeur invalide",
  "status.mail.err.from_user": "Expéditeur requis — le nom d’utilisateur n’est pas une adresse e-mail",
  "status.sync.title": "Synchro liste de blocage",
  "status.sync.intro": "Les numéros bloqués depuis le combiné (« Bloquer le numéro ») sont envoyés à la base PhoneBlock une fois par jour, puis retirés de la Fritz!Box. Le bot répondeur intercepte ensuite ces appelants pour tous les utilisateurs PhoneBlock.",
  "status.sync.unavailable": "Indisponible — nécessite une configuration Fritz!Box.",
  "status.sync.never": "Pas encore exécuté.",
  "status.sync.last_ok": "Dernière exécution il y a {ago} : {n} envoyés.",
  "status.sync.last_partial": "Dernière exécution il y a {ago} : {n} envoyés, {f} en erreur.",
  "status.sync.last_fail": "Dernière exécution il y a {ago} en échec : {err}",
  "status.sync.running": "Synchro en cours…",
  "status.sync.run_now": "Synchroniser maintenant",
  "status.sync.triggered": "Synchro démarrée.",
  "status.sync.busy": "Synchro déjà en cours.",
  "status.sync.enable": "Activer la synchronisation",
  "status.sync.disabled": "Synchro auto désactivée — exécution manuelle toujours possible.",
  "status.localcache.title": "Cache de la liste de blocage",
  "status.localcache.intro": "Une fois par jour, le dongle télécharge la liste de blocage commune et votre liste noire/blanche personnelle, puis les stocke en mémoire flash interne. Les appels entrants sont alors décidés sans appel API — plus rapide, et résistant aux problèmes réseau.",
  "status.localcache.enable": "Utiliser le cache de liste de blocage",
  "status.localcache.enable.help": "Télécharge la liste de blocage sur le dongle et décide des appels localement. Désactivé : chaque appel est vérifié directement auprès du serveur — plus lent, et possible uniquement avec une connexion Internet active.",
  "status.localcache.disabled": "Désactivé — les appels sont vérifiés directement auprès du serveur.",
  "status.localcache.never": "Pas encore téléchargé.",
  "status.localcache.have": "{community} entrées communes, {personal} personnelles. Rafraîchi il y a {ago}.",
  "status.localcache.last_fail": "Dernier téléchargement il y a {ago} en échec : {err}",
  "status.localcache.running": "Téléchargement en cours…",
  "status.localcache.wildcards": "Appliquer les caractères génériques",
  "status.localcache.wildcards.help": "Bloque aussi des plages de numéros (p. ex. \"030 12 34 56*\") signalées comme spam par la communauté, en plus des correspondances exactes. Désactivez pour ne bloquer que les correspondances exactes.",
  "status.localcache.run_now": "Télécharger maintenant",
  "status.localcache.triggered": "Téléchargement démarré.",
  "status.localcache.busy": "Téléchargement déjà en cours.",
  "status.names.title": "Filtre par nom",
  "status.names.intro": "Si ta FRITZ!Box trouve le correspondant dans un répertoire, elle affiche également son nom. Si tu utilises une liste de spam tierce (par exemple celle de Tellows), toutes les entrées portent un nom révélateur — tu peux alors les marquer comme spam ici. Cela vaut également pour ton propre répertoire, dans lequel tu attribues le même nom à tous les appelants indésirables.",
  "status.names.patterns": "Noms associés au spam (séparés par |)",
  "status.names.help": "Un appel est considéré comme du spam dès lors que le nom signalé contient l'un de ces textes ; la distinction entre majuscules et minuscules n'a pas d'importance. Exemple : « tellows|Score|SPAM ». Tu trouveras le nom de l'appelant dans la liste des derniers appels. Si tu laisses ce champ vide, le filtre par nom est désactivé.",
  "status.names.save": "Enregistrer les filtres de noms",
  "status.names.saved": "Filtre par nom enregistré.",
  "status.names.failed": "Échec de l'enregistrement.",
  "status.names.err.many": "{max} noms au maximum.",
  "status.names.err.long": "Un nom ne doit pas dépasser {max} caractères.",
  "status.ann.title": "Message anti-spam",
  "status.ann.default": "Message par défaut intégré ({kb} Ko).",
  "status.ann.custom": "Message personnalisé ({kb} Ko).",
  "status.ann.play": "Écouter le message actuel",
  "status.ann.stop": "Arrêter",
  "status.ann.upload.label": "Téléverser votre message (WAV/MP3/OGG, max {s} s)",
  "status.ann.upload.pick": "Choisir un fichier",
  "status.ann.upload.submit": "Téléverser",
  "status.ann.upload.converting": "Conversion…",
  "status.ann.upload.uploading": "Envoi…",
  "status.ann.upload.done": "Enregistré ({kb} Ko).",
  "status.ann.upload.error": "Erreur : {msg}",
  "status.ann.upload.toolong": "Trop long — {s} secondes maximum.",
  "status.ann.upload.decode_fail": "Impossible de décoder le fichier.",
  "status.ann.reset.button": "Revenir au message par défaut",
  "status.ann.reset.confirm": "Vraiment supprimer le message personnalisé ?",
  "status.ann.accept_test": "Accepter les appels de test locaux",
  "status.ann.accept_test.help": "Si activé, le dongle traite les appels vers les codes internes Fritz!Box (**622, *21#, …) comme du spam — avec annonce puis raccrochage. Permet de tester le flux complet depuis un autre téléphone interne sans signaler un vrai numéro à PhoneBlock.",
  "hero.title": "Configuration",
  "hero.intro": "Deux étapes, et le dongle bloque les appels indésirables automatiquement. Les deux doivent être cochées pour que l’appareil soit prêt.",
  "hero.step1.todo": "Enregistrer le dongle auprès de votre système téléphonique",
  "hero.step1.done": "Téléphonie configurée",
  "hero.step2.todo": "Connexion à PhoneBlock — pour que le dongle sache ce qu’est un spam",
  "hero.step2.done": "Connecté à PhoneBlock",
  "hero.cta.sip": "Configurer la téléphonie",
  "hero.cta.token": "Connecter PhoneBlock",
  "sip.entry.title": "Configurer la téléphonie",
  "sip.entry.intro": "Choisissez comment le dongle s’enregistre auprès de votre système téléphonique.",
  "sip.entry.fritzbox": "Fritz!Box (recommandé)",
  "sip.entry.fritzbox.desc": "Configuration automatique. Le dongle s’enregistre lui-même comme téléphone IP.",
  "sip.entry.provider": "Autre opérateur",
  "sip.entry.provider.desc": "S’enregistrer directement chez Telekom, Vodafone, 1&1, sipgate ou easybell.",
  "sip.entry.manual": "Manuel (expert)",
  "sip.entry.manual.desc": "Remplir tous les champs SIP manuellement.",
  "sip.fb.title": "Configuration Fritz!Box",
  "sip.fb.intro": "Saisissez une fois le mot de passe administrateur de la Fritz!Box. Il n’est pas conservé.",
  "sip.fb.host": "Fritz!Box (hôte ou IP)",
  "sip.fb.user": "Utilisateur",
  "sip.fb.user.hint": "(laisser vide → utilisateur par défaut de la Fritz!Box)",
  "sip.fb.pass": "Mot de passe",
  "sip.fb.submit": "Créer l’extension",
  "sip.fb.working": "Création de l’extension (~2–5 s)…",
  "sip.fb.done": "Extension créée — l’enregistrement démarre.",
  "sip.fb.done.withnum": "Extension créée (numéro interne {n}) — l’enregistrement démarre.",
  "sip.fb.error": "Erreur : {msg}",
  "sip.fb.2fa.title": "Confirmation à deux facteurs",
  "sip.fb.2fa.button": "appuyer sur un bouton quelconque de la Fritz!Box",
  "sip.fb.2fa.dtmf": "composer {seq} sur un téléphone connecté",
  "sip.fb.2fa.instructions": "Veuillez maintenant {hints}.",
  "sip.fb.2fa.cancelled": "2FA annulée.",
  "sip.fb.2fa.timeout": "Délai dépassé. Veuillez réessayer.",
  "sip.prov.title": "Choisir un opérateur",
  "sip.prov.intro": "Choisissez votre opérateur ; les identifiants sont disponibles dans son portail client. Si votre opérateur n’est pas listé, utilisez la configuration manuelle.",
  "sip.prov.provider": "Opérateur",
  "sip.prov.user": "Utilisateur SIP / numéro",
  "sip.prov.pass": "Mot de passe",
  "sip.prov.submit": "Enregistrer les identifiants",
  "sip.prov.done": "Enregistré. L’enregistrement démarre.",
  "sip.prov.error": "Erreur : {msg}",
  "sip.manual.title": "Configuration manuelle",
  "sip.manual.intro": "Tous les champs SIP. Laisser le mot de passe vide signifie « inchangé ».",
  "sip.manual.host": "Registrar SIP",
  "sip.manual.port": "Port SIP",
  "sip.manual.port.hint": "Vide = automatique via DNS-SRV ou la valeur par défaut du transport (5060 UDP/TCP, 5061 TLS).",
  "sip.manual.user": "Utilisateur SIP",
  "sip.manual.pass": "Mot de passe SIP",
  "sip.manual.pass.hint": "Laisser vide = conserver le mot de passe enregistré.",
  "sip.manual.anon": "S'enregistrer sans mot de passe (anonyme)",
  "sip.manual.anon.hint": "Supprime un mot de passe enregistré et s'enregistre sans — par ex. anonymous@t-online.de chez Telekom.",
  "sip.manual.submit": "Enregistrer",
  "sip.manual.done": "Enregistré.",
  "sip.manual.error": "Erreur : {msg}",
  "sip.manual.advanced": "Paramètres avancés",
  "sip.manual.transport": "Transport",
  "sip.manual.transport.hint": "UDP, TCP et TLS sont disponibles. TLS chiffre la connexion et est recommandé si l’opérateur le prend en charge. La voix elle-même n’est pas encore chiffrée.",
  "sip.manual.auth_user": "Utilisateur d’auth",
  "sip.manual.auth_user.hint": "Vide = utiliser l’utilisateur SIP pour l’auth. Telekom : adresse e-mail.",
  "sip.manual.outbound": "Proxy sortant",
  "sip.manual.outbound.hint": "Optionnel, format hôte[:port]. Vide = passer directement par le registrar.",
  "sip.manual.realm": "Realm",
  "sip.manual.realm.hint": "Vide = reprendre la valeur du challenge du serveur.",
  "sip.manual.stun": "Serveur STUN",
  "sip.manual.stun.hint": "Optionnel, format hôte[:port]. Détecte le port RTP public lors d’un enregistrement direct chez l’opérateur. Vide = désactivé. Défini par le préréglage opérateur (Telekom : stun.t-online.de:3478).",
  "sip.manual.srtp": "SRTP",
  "sip.manual.srtp.hint": "Le SRTP est négocié automatiquement : le média est chiffré dès que le fournisseur le propose (p. ex. Telekom), sinon RTP en clair (p. ex. la Fritz!Box sur le LAN).",
  "sip.manual.local_port": "Port SIP local",
  "sip.manual.local_port.hint": "Port sur lequel le dongle reçoit le SIP (défaut 15060). Vide = défaut.",
  "sip.manual.rtp_port": "Port RTP (audio)",
  "sip.manual.rtp_port.hint": "Port du canal vocal (défaut 16000). Vide = défaut.",
  "sip.manual.fwd.title": "Redirection de ports pour une inscription directe chez l’opérateur",
  "sip.manual.fwd.body": "Si le dongle s’enregistre directement chez l’opérateur (au lieu de passer par un routeur VoIP) et que celui-ci ne prend en charge que l’UDP, ajoutez dans votre routeur une redirection UDP vers le dongle pour chacun — à port identique (port externe = port interne) : {sip} (SIP) et {rtp} (RTP). Le dongle détecte automatiquement son IP publique (affichée dans l’état ci-dessus) ; inutile de la saisir. Cela ne fonctionne qu’avec une vraie IPv4 publique (dédiée) — pas en DS-Lite/CGNAT (IPv4 partagée), où aucune redirection n’est possible ; seul TCP/TLS aide alors, si l’opérateur le prend en charge.",
  "sip.manual.srtp.off": "désactivé",
  "sip.manual.srtp.optional": "optionnel",
  "sip.manual.srtp.mandatory": "obligatoire",
  "token.title": "Connecter PhoneBlock",
  "token.intro": "Le dongle interroge la base PhoneBlock pour chaque appel entrant. Un jeton est donc nécessaire.",
  "token.how": "Un clic sur le bouton ci-dessous vous dirige vers phoneblock.net pour une connexion unique (Google, Facebook ou compte). Vous revenez ensuite ici avec le jeton enregistré.",
  "token.current.set": "Un jeton est déjà configuré. Une nouvelle connexion en créera un nouveau.",
  "token.current.missing": "Aucun jeton configuré pour l’instant.",
  "token.submit": "Se connecter à PhoneBlock",
  "back.status": "← retour à l’état",
  "back.sip": "← retour au choix",
  "i18n.loading": "Chargement de la traduction…",
  "i18n.unavailable": "Traduction indisponible – la langue par défaut s'affiche.",
  "status.calls.add_contact": "Ajouter au répertoire de la Fritz!Box",
  "status.phonebook.title": "Répertoire pour les nouveaux contacts",
  "status.phonebook.intro": "Les appelants que la Fritz!Box ne reconnaît pas apparaissent sans nom dans la liste des appels. En cliquant sur le bouton « + » situé à côté, tu peux les ajouter comme contact dans la Fritz!Box ; le téléphone affichera alors leur nom et le dongle ne demandera plus ce numéro à PhoneBlock.",
  "status.phonebook.current": "Les nouveaux contacts sont enregistrés dans « {name} ».",
  "status.phonebook.unset": "Pas encore défini — cette information sera demandée lors de la première création.",
  "status.phonebook.change": "Modifier",
  "status.phonebook.unavailable": "Indisponible — utilisable uniquement avec la configuration Fritz!Box.",
  "status.phonebook.saved": "Enregistré.",
  "pb.dialog.title": "Créer un contact dans la Fritz!Box",
  "pb.dialog.intro": "Lors du prochain appel, le téléphone affichera le nom à la place du numéro. Le contact reste dans ta Fritz!Box — il n'est pas transféré vers PhoneBlock.",
  "pb.dialog.name": "Nom",
  "pb.dialog.type": "Type de numéro",
  "pb.dialog.type.home": "Vie privée",
  "pb.dialog.type.mobile": "Mobile",
  "pb.dialog.type.work": "Professionnel",
  "pb.dialog.type.fax_home": "Fax privé",
  "pb.dialog.type.fax_work": "Fax professionnel",
  "pb.dialog.vip": "Personnalité importante (VIP)",
  "pb.dialog.book": "Annuaire téléphonique",
  "pb.dialog.book.readonly": "{name} (synchronisé — non modifiable)",
  "pb.dialog.pick": "Dans quel répertoire téléphonique le contact doit-il être enregistré ?",
  "pb.dialog.none_writable": "Aucun répertoire inscriptible n'a été trouvé.",
  "pb.dialog.save": "Créer",
  "pb.dialog.cancel": "Annuler",
  "pb.dialog.working": "En cours de création…",
  "pb.dialog.done": "Contact créé.",
  "pb.dialog.error.name": "Veuillez saisir un nom.",
  "pb.dialog.error.number": "Ce numéro ne peut pas être enregistré comme contact.",
  "pb.dialog.error.not_writable": "Ce répertoire est synchronisé et ne peut pas être modifié. Veuillez en choisir un autre.",
  "pb.dialog.error.no_fritzbox": "Ceci n'est possible qu'avec la configuration d'une Fritz!Box.",
  "pb.dialog.error.unreachable": "La Fritz!Box ne répond pas.",
  "pb.dialog.error.generic": "Échec : {msg}",
  "status.calls.add_contact.help": "Ajouter l'appelant comme contact dans le répertoire de la Fritz!Box",
  "status.calls.report_spam": "Spam",
  "status.calls.report_spam.help": "Signaler ce numéro comme spam sur PhoneBlock",
  "status.calls.whitelist": "Liste blanche",
  "status.calls.whitelist.help": "Ne plus bloquer ce numéro",
  "whitelist.dialog.title": "Ajouter un numéro à la liste blanche",
  "whitelist.dialog.intro": "Les appels provenant de ce numéro ne seront plus bloqués. Tu considères ainsi ce numéro comme légitime sur PhoneBlock ; cette évaluation est associée à ton compte.",
  "whitelist.dialog.submit": "Ne plus bloquer",
  "whitelist.dialog.working": "En cours de transfert…",
  "whitelist.dialog.done": "C'est fait — ce numéro figure désormais sur ta liste blanche.",
  "spam.dialog.title": "Signaler ce numéro comme spam",
  "spam.dialog.intro": "Ton évaluation compte pour tous les utilisateurs de PhoneBlock et est associée à ton compte. Elle ne peut pas être annulée via le dongle ; cela n'est possible que sur phoneblock.net.",
  "spam.dialog.rating": "Type d'appel",
  "spam.dialog.rating.B_MISSED": "Inconnu",
  "spam.dialog.rating.C_PING": "Appel Ping",
  "spam.dialog.rating.D_POLL": "Sondage",
  "spam.dialog.rating.E_ADVERTISING": "Publicité",
  "spam.dialog.rating.F_GAMBLE": "Jeu-concours",
  "spam.dialog.rating.G_FRAUD": "Fraude",
  "spam.dialog.submit": "Signaler",
  "spam.dialog.working": "C'est signalé…",
  "spam.dialog.done": "Merci — Évaluation envoyée.",
  "spam.dialog.error.no_token": "Un compte PhoneBlock est nécessaire pour laisser un avis.",
  "pb.dialog.error.moved": "Le répertoire sélectionné n'existe plus. Veuillez en choisir un autre.",
  "spam.dialog.comment": "Raison",
  "spam.dialog.comment.hint": "(facultatif, sera visible publiquement)",
  "spam.dialog.error.is_contact": "Ce correspondant figure dans ton répertoire. Une entrée du répertoire a toujours la priorité sur le dongle ; c'est pourquoi il n'est pas possible de signaler ce numéro comme spam.",
  "status.system.lcd_flip": "Écran à l'envers (rotation de 180°)",
  "status.system.lcd_flip.hint": "Selon l'orientation du port USB de votre Fritz!Box, la clé est orientée dans l'autre sens. Faites pivoter l'image de 180°."
}
