PHP Classes

File: config/i18n/fr/common.php

Recommend this page to a friend!
  Packages of Matthew Asham   Binkterm PHP   config/i18n/fr/common.php   Download  
File: config/i18n/fr/common.php
Role: Auxiliary script
Content type: text/plain
Description: Configuration script
Class: Binkterm PHP
Bulletin board system based on the Web
Author: By
Last change:
Date: 5 days ago
Size: 372,988 bytes
 

Contents

Class file image Download
<?php return [ 'time.soon' => 'Bientôt', 'time.in_hours' => 'Dans {count} heure{suffix}', 'time.tomorrow' => 'Demain', 'time.in_days' => 'Dans {count} jours', 'time.just_now' => 'À l\'instant', 'time.minutes_ago' => 'Il y a {count} minutes', 'time.hours_ago' => 'Il y a {count} heure{suffix}', 'time.yesterday' => 'Hier', 'time.days_ago' => 'Il y a {count} jours', 'time.suffix_plural' => 's', 'time.suffix_singular' => '', 'errors.failed_load_messages' => 'Échec du chargement des messages', 'messages.none_found' => 'Aucun message trouvé', 'messages.no_subject' => '(Sans objet)', 'ui.common.success' => 'Succès', 'ui.common.error' => 'Erreur', 'ui.common.unknown_error' => 'Erreur inconnue', 'ui.common.saving' => 'Enregistrement...', 'ui.common.copy_failed_manual' => 'Échec de la copie dans le presse-papiers. Veuillez copier manuellement.', 'ui.common.copy_not_supported_manual' => 'Copie dans le presse-papiers non prise en charge. Veuillez copier manuellement.', 'ui.common.loading' => 'Chargement...', 'ui.common.loading_messages' => 'Chargement des messages...', 'ui.common.loading_message' => 'Chargement du message...', 'ui.common.search' => 'Rechercher', 'ui.common.search_messages' => 'Rechercher des messages', 'ui.common.import' => 'Importer', 'ui.common.search_placeholder' => 'Rechercher...', 'ui.common.search_messages_placeholder' => 'Rechercher des messages...', 'ui.cron_builder.open_builder' => 'Construire le planning', 'ui.cron_builder.field.minute' => 'Minute', 'ui.cron_builder.field.hour' => 'Heure', 'ui.cron_builder.field.day' => 'Jour', 'ui.cron_builder.field.month' => 'Mois', 'ui.cron_builder.field.weekday' => 'Jour sem.', 'ui.cron_builder.hint.minute' => '0?59', 'ui.cron_builder.hint.hour' => '0?23', 'ui.cron_builder.hint.day' => '1?31', 'ui.cron_builder.hint.month' => '1?12', 'ui.cron_builder.hint.weekday' => '0?6 (0=Dim)', 'ui.cron_builder.desc.every_minute' => 'S\'exécute chaque minute', 'ui.cron_builder.desc.every_n_minutes' => 'S\'exécute toutes les {n} minutes', 'ui.cron_builder.desc.every_hour_at_minute' => 'S\'exécute chaque heure à la minute {min}', 'ui.cron_builder.desc.every_n_hours_at_minute' => 'S\'exécute toutes les {n} heures à la minute {min}', 'ui.cron_builder.desc.daily_at' => 'S\'exécute quotidiennement à {time}', 'ui.cron_builder.desc.weekly_on' => 'S\'exécute chaque {day} à {time}', 'ui.cron_builder.desc.monthly_on_day' => 'S\'exécute le {dom} de chaque mois à {time}', 'ui.cron_builder.desc.every_n_hours' => 'S\'exécute toutes les {n} heures', 'ui.cron_builder.desc.every_n_minutes_every_m_hours' => 'S\'exécute toutes les {n} minutes, toutes les {m} heures', 'ui.cron_builder.desc.every_n_days_at' => 'S\'exécute tous les {n} jours à {time}', 'ui.cron_builder.desc.on_days_at' => 'S\'exécute le {days} à {time}', 'ui.cron_builder.desc.weekdays' => 'jours ouvrables', 'ui.cron_builder.desc.weekends' => 'week-ends', 'ui.cron_builder.desc.yearly_on' => 'S\'exécute le {dom} {month} à {time}', 'ui.cron_builder.desc.custom' => 'Programmation personnalisée', 'ui.common.all' => 'Tous', 'ui.common.all_messages' => 'Tous les messages', 'ui.common.unread' => 'Non lu', 'ui.common.read' => 'Lu', 'ui.common.sent' => 'Envoyé', 'ui.common.drafts' => 'Brouillons', 'ui.common.has_attachment' => 'Contient une pièce jointe', 'ui.common.select' => 'Sélectionner', 'ui.common.selected' => 'Sélectionné', 'ui.common.total' => 'Total', 'ui.common.recent' => 'Récent', 'ui.common.statistics' => 'Statistiques', 'ui.common.manage' => 'Gérer', 'ui.common.mark_as_read' => 'Marquer comme lu', 'ui.common.message' => 'Message', 'ui.common.delete' => 'Supprimer', 'ui.common.confirm_delete' => 'Confirmer la suppression', 'ui.common.edit' => 'Modifier', 'ui.common.close' => 'Fermer', 'ui.common.refresh' => 'Actualiser', 'ui.common.hostname' => 'Nom d\'hôte', 'ui.common.port' => 'Port', 'ui.common.password' => 'Mot de passe', 'ui.common.show_password' => 'Afficher le mot de passe', 'ui.common.hide_password' => 'Masquer le mot de passe', 'ui.common.reply' => 'Répondre', 'ui.common.repost' => 'Republier', 'ui.common.forward_by_netmail' => 'Transférer par netmail', 'ui.common.username' => 'Nom d\'utilisateur', 'ui.common.real_name' => 'Nom réel', 'ui.common.email' => 'E-mail', 'ui.common.email_address' => 'Adresse e-mail', 'ui.common.location' => 'Localisation', 'ui.common.address' => 'Adresse', 'ui.common.domain' => 'Domaine', 'ui.common.ip_address' => 'Adresse IP', 'ui.common.status' => 'Statut', 'ui.common.from' => 'De', 'ui.common.actions' => 'Actions', 'ui.common.view' => 'Voir', 'ui.common.active' => 'Actif', 'ui.common.inactive' => 'Inactif', 'ui.common.user' => 'Utilisateur', 'ui.common.admin' => 'Administrateur', 'ui.common.created' => 'Créé', 'ui.common.last_login' => 'Dernière connexion', 'ui.common.today' => 'Aujourd\'hui', 'ui.common.one_day_ago' => 'Il y a 1 jour', 'ui.common.days_ago' => 'Il y a {count} jours', 'ui.common.enable' => 'Activer', 'ui.common.disable' => 'Désactiver', 'ui.common.previous' => 'Précédent', 'ui.common.next' => 'Suivant', 'ui.common.go_back' => 'Retour', 'ui.common.previous_message' => 'Message précédent', 'ui.common.next_message' => 'Message suivant', 'ui.common.toggle_fullscreen' => 'Basculer en plein écran', 'ui.common.add' => 'Ajouter', 'ui.common.cancel' => 'Annuler', 'ui.common.apply' => 'Appliquer', 'ui.common.clear_search' => 'Effacer la recherche', 'ui.common.save' => 'Enregistrer', 'ui.common.save_changes' => 'Enregistrer les modifications', 'ui.common.saved' => 'Enregistré !', 'ui.common.saved_short' => 'Enregistré', 'ui.common.error_click_retry' => 'Erreur - cliquer pour réessayer', 'ui.common.share' => 'Partager', 'ui.common.share_url' => 'URL de partage :', 'ui.common.copy' => 'Copier', 'ui.common.optional' => 'optionnel', 'ui.common.never' => 'Jamais', 'ui.common.unknown' => 'Inconnu', 'ui.common.not_configured' => 'Non configuré', 'ui.common.name' => 'Nom', 'ui.common.description' => 'Description', 'ui.common.label' => 'Étiquette', 'ui.common.url' => 'URL', 'ui.common.new_tab' => 'Nouvel onglet', 'ui.common.key' => 'Clé', 'ui.common.id' => 'ID', 'ui.common.preview' => 'Aperçu', 'ui.common.yes' => 'Oui', 'ui.common.no' => 'Non', 'ui.common.not_applicable' => 'n/a', 'ui.common.sort.newest_first' => 'Plus récent d\'abord', 'ui.common.sort.oldest_first' => 'Plus ancien d\'abord', 'ui.common.sort.by_subject' => 'Par objet', 'ui.common.sort.by_author' => 'Par auteur', 'ui.common.threading.show_threaded' => 'Afficher en fils', 'ui.common.threading.show_flat' => 'Afficher à plat', 'ui.common.from_label' => 'De :', 'ui.common.to_label' => 'À :', 'ui.common.date_label' => 'Date :', 'ui.common.subject_label' => 'Objet :', 'ui.common.subject_label_short' => 'Objet', 'ui.common.area_label' => 'Zone :', 'ui.common.sent_prefix' => 'Envoyé :', 'ui.common.received_prefix' => 'Reçu :', 'ui.common.written_prefix' => 'Écrit :', 'ui.common.shared' => 'Partagé', 'ui.common.remove_from_saved' => 'Retirer des enregistrés', 'ui.common.save_for_later' => 'Enregistrer pour plus tard', 'ui.echomail.ignore.open_action' => 'Ignorer le message', 'ui.echomail.ignore.modal_title' => 'Ignorer un message echomail', 'ui.echomail.ignore.help' => 'Les messages seront masqués lorsque l?expéditeur correspond exactement et que le sujet contient ce texte.', 'ui.echomail.ignore.sender_label' => 'Expéditeur (nom et n?ud)', 'ui.echomail.ignore.subject_contains_label' => 'Le sujet contient', 'ui.echomail.ignore.save_button' => 'Ignorer le message', 'ui.echomail.ignore.saved' => 'Les messages de {sender} avec un sujet correspondant seront désormais masqués', 'ui.echomail.ignore.removed' => 'Règle d?ignorance supprimée', 'ui.echomail.ignore.help' => 'Les messages seront masqués lorsque l?expéditeur correspond exactement et que le sujet contient ce texte. Laissez le sujet vide pour bloquer entièrement cet expéditeur.', 'ui.settings.echomail_ignore_rules.title' => 'Echomail ignoré', 'ui.settings.echomail_ignore_rules.help' => 'Gérez les règles d?expéditeur et de sujet qui masquent des messages echomail dans votre lecteur.', 'ui.settings.echomail_ignore_rules.loading' => 'Chargement des règles d?ignorance...', 'ui.settings.echomail_ignore_rules.empty' => 'Aucune règle d?ignorance echomail enregistrée.', 'ui.settings.echomail_ignore_rules.subject_contains_prefix' => 'Le sujet contient :', 'ui.settings.echomail_ignore_rules.remove' => 'Supprimer', 'ui.settings.echomail_ignore_rules.remove_confirm' => 'Supprimer cette règle d?ignorance echomail ?', 'ui.common.delete_message' => 'Supprimer le message', 'ui.common.delete_draft' => 'Supprimer le brouillon', 'ui.common.already_in_address_book' => 'Déjà dans le carnet d\'adresses', 'ui.common.save_to_address_book' => 'Enregistrer dans le carnet d\'adresses', 'ui.common.file_attachments_with_count' => 'Pièces jointes ({count})', 'ui.common.send_netmail_to' => 'Envoyer un netmail à {name}', 'ui.common.replies_with_count' => '{count} réponses', 'ui.common.unknown_size' => 'Taille inconnue', 'ui.common.kludge_lines' => 'Lignes kludge', 'ui.common.show_kludge_lines' => 'Afficher les lignes kludge', 'ui.common.hide_kludge_lines' => 'Masquer les lignes kludge', 'ui.common.no_kludge_lines_found' => 'Aucune ligne kludge trouvée', 'ui.common.time.1_hour' => '1 heure', 'ui.common.time.24_hours' => '24 heures', 'ui.common.time.1_week' => '1 semaine', 'ui.common.time.30_days' => '30 jours', 'ui.common.advanced_search' => 'Recherche avancée', 'ui.common.advanced_search.title' => 'Recherche avancée', 'ui.common.advanced_search.from_name' => 'De / Nom de l\'auteur', 'ui.common.advanced_search.from_name_placeholder' => 'Rechercher par auteur...', 'ui.common.advanced_search.subject' => 'Sujet', 'ui.common.advanced_search.subject_placeholder' => 'Rechercher par sujet...', 'ui.common.advanced_search.body' => 'Corps du message', 'ui.common.advanced_search.body_placeholder' => 'Rechercher dans le corps du message...', 'ui.common.advanced_search.help' => 'Remplissez un ou plusieurs champs. Les champs sont combinés avec la logique AND.', 'ui.common.advanced_search.fill_one_field' => 'Veuillez remplir au moins un champ (minimum 2 caractères pour les champs texte).', 'ui.common.advanced_search.message_id' => 'ID du message', 'ui.common.advanced_search.message_id_placeholder' => 'Rechercher par ID de message...', 'ui.common.advanced_search.date_from' => 'Date de début', 'ui.common.advanced_search.date_to' => 'Date de fin', 'ui.common.advanced_search.date_range' => 'Plage de dates', 'ui.common.db_id' => 'ID DB', 'ui.common.message_id' => 'ID Message', 'ui.about.title' => 'À propos', 'ui.about.about_system' => 'À propos de {system_name}', 'ui.about.system_name' => 'Nom du système', 'ui.about.sysop' => 'Sysop', 'ui.about.network_addresses' => 'Adresses réseau', 'ui.about.fidonet_address' => 'Adresse Fidonet', 'ui.about.software' => 'Logiciel', 'ui.about.links' => 'Liens', 'ui.about.house_rules' => 'Règles de la maison', 'ui.footer.powered_by' => 'Propulsé par', 'ui.error404.title' => 'Page introuvable', 'ui.error404.description' => 'La page que vous recherchez n\'existe pas ou a été déplacée vers un autre emplacement.', 'ui.error404.requested_prefix' => 'Demandé :', 'ui.error404.dashboard' => 'Tableau de bord', 'ui.error404.go_back' => 'Retour', 'ui.error404.contact_sysop' => 'Si vous pensez qu\'il s\'agit d\'une erreur, veuillez contacter l\'opérateur système.', 'ui.error.title' => 'Erreur', 'ui.error.access_error' => 'Erreur d\'accès', 'ui.error.processing_request_failed' => 'Une erreur s\'est produite lors du traitement de votre demande.', 'ui.error.return_to_dashboard' => 'Retour au tableau de bord', 'ui.web.errors.binkp_admin_only' => 'Seuls les administrateurs peuvent accéder aux fonctionnalités BinkP.', 'ui.web.errors.chat_disabled' => 'Désolé, le chat n\'est pas activé.', 'ui.web.errors.user_management_admin_only' => 'Seuls les administrateurs peuvent accéder à la gestion des utilisateurs.', 'ui.web.errors.profile_user_not_found' => 'Utilisateur introuvable ou inactif.', 'ui.web.errors.echoareas_admin_only' => 'Seuls les administrateurs peuvent gérer les zones echo.', 'ui.web.errors.fileareas_admin_only' => 'Seuls les administrateurs peuvent gérer les zones de fichiers.', 'ui.web.errors.files_feature_disabled' => 'Les zones de fichiers sont désactivées.', 'ui.web.errors.polls_disabled' => 'Le bureau de vote est désactivé.', 'ui.web.errors.shoutbox_disabled' => 'La shoutbox est désactivée.', 'ui.web.errors.compose_type_invalid' => 'Destination de composition invalide.', 'ui.web.fallback.system_name' => 'Système BinktermPHP', 'ui.base.update_available' => 'Mise à jour disponible', 'ui.base.new_version_ready' => 'Une nouvelle version est disponible', 'ui.base.reload_now' => 'Recharger maintenant', 'ui.base.messaging' => 'Messagerie', 'ui.base.netmail' => 'Netmail', 'ui.base.echomail' => 'Echomail', 'ui.base.email_link' => 'E-mail', 'ui.base.local_chat' => 'Chat local', 'ui.base.mrc_chat' => 'Chat MRC', 'ui.base.doors_games' => 'Portes', 'ui.base.files' => 'Fichiers', 'ui.base.file_approvals' => 'Approbations de fichiers', 'ui.base.nodelist' => 'Liste des n?uds', 'ui.base.admin' => 'Admin', 'ui.base.profile' => 'Profil', 'ui.base.settings' => 'Paramètres', 'ui.base.subscriptions' => 'Abonnements', 'ui.base.logout' => 'Déconnexion', 'ui.base.login' => 'Connexion', 'ui.base.guest_doors' => 'Portes invité', 'ui.base.admin.whos_online' => 'Qui est en ligne', 'ui.base.admin.dashboard' => 'Tableau de bord', 'ui.base.admin.binkp_status' => 'État Binkp', 'ui.base.admin.manage_users' => 'Gérer les utilisateurs', 'ui.base.admin.ads' => 'Bibliothèque de Contenu', 'ui.base.admin.area_management' => 'Gestion des zones', 'ui.base.admin.echo_areas' => 'Zones echo', 'ui.base.admin.file_areas' => 'Zones de fichiers', 'ui.base.admin.file_approvals' => 'Approbations de fichiers', 'ui.base.admin.file_area_rules' => 'Règles des zones de fichiers', 'ui.base.admin.subscriptions' => 'Abonnements', 'ui.base.admin.auto_feed' => 'Alimentation automatique', 'ui.base.admin.chat_rooms' => 'Salons de chat', 'ui.base.admin.mrc_settings' => 'Paramètres MRC', 'ui.base.admin.packet_bbs' => 'Noeuds Packet BBS', 'ui.base.admin.polls' => 'Sondages', 'ui.base.admin.shoutbox' => 'Shoutbox', 'ui.base.admin.weather_config' => 'Rapport Météo', 'ui.base.admin.doors' => 'Portes', 'ui.base.admin.doors_dos' => 'Portes DOS', 'ui.base.admin.doors_native' => 'Portes natives', 'ui.base.admin.doors_web' => 'Portes web', 'ui.base.admin.doors_jsdos' => 'Portes JS-DOS', 'ui.base.admin.activity_stats' => 'Statistiques d\'activité', 'ui.base.admin.ad_analytics' => 'Analytiques des annonces', 'ui.base.admin.sse_test' => 'Test SSE', 'ui.base.admin.ai_usage' => 'Utilisation IA', 'ui.base.admin.ai_bots' => 'Bots IA', 'ui.base.admin.ai_settings' => 'Parametres IA', 'ui.base.admin.economy_viewer' => 'Visualiseur d\'économie', 'ui.base.admin.bbs_settings' => 'Paramètres BBS', 'ui.base.admin.appearance' => 'Apparence', 'ui.base.admin.binkp_configuration' => 'Configuration Binkp', 'ui.base.admin.template_editor' => 'Éditeur de modèles', 'ui.base.admin.i18n_overrides' => 'Substitutions de langue', 'ui.base.admin.docs' => 'Documentation', 'ui.admin.docs.title' => 'Documentation', 'ui.admin.docs.back_to_index' => 'Retour à l\'index', 'ui.admin.docs.not_found' => 'Document introuvable.', 'ui.base.admin.help' => 'Aide', 'ui.base.admin.readme' => 'README', 'ui.base.admin.faq' => 'FAQ', 'ui.base.admin.upgrade_notes' => 'Notes de mise à jour v{version}', 'ui.base.admin.claudes_bbs' => 'BBS de Claude', 'ui.base.admin.report_issue' => 'Signaler un problème', 'ui.base.admin.bbs_directory' => 'Répertoire BBS', 'ui.base.admin.echomail_robots' => 'Robots Echomail', 'ui.base.bbs_directory' => 'Répertoire BBS', 'ui.base.bbs_lists' => 'Listes BBS', 'ui.base.meshcore_nodes' => 'Noeuds PacketBBS', 'ui.meshcore_nodes.page_title' => 'Noeuds PacketBBS', 'ui.meshcore_nodes.page_intro' => 'Si vous avez une radio compatible PacketBBS, comme MeshCore, et que vous êtes à portée du réseau, vous pouvez accéder à ce BBS via l\'un des noeuds listés ci-dessous sans accès internet.', 'ui.meshcore_nodes.registered_nodes' => 'Noeuds enregistrés', 'ui.meshcore_nodes.none_registered' => 'Aucun noeud enregistré.', 'ui.meshcore_nodes.col_name' => 'Nom', 'ui.meshcore_nodes.col_network_type' => 'Type de réseau', 'ui.meshcore_nodes.col_location' => 'Emplacement', 'ui.meshcore_nodes.col_coordinates' => 'Coordonnées', 'ui.meshcore_nodes.col_last_seen' => 'Dernière activité', 'ui.meshcore_nodes.no_location' => 'Aucune position', 'ui.meshcore_nodes.location' => 'Emplacement', 'ui.meshcore_nodes.description' => 'Description', 'ui.meshcore_nodes.preamble' => 'Accédez au BBS via le réseau maillé', 'ui.meshcore_nodes.never_seen' => 'Jamais', 'ui.meshcore_nodes.more_info' => 'Plus d\'infos', 'ui.meshcore_nodes.loading' => 'Chargement?', 'ui.meshcore_nodes.load_error' => 'Impossible de charger les détails du noeud.', 'ui.meshcore_nodes.view_all' => 'Voir tous les noeuds', 'ui.meshcore_nodes.coordinates' => 'Coordonnées', 'ui.meshcore_nodes.public_key' => 'Clé publique', 'ui.meshcore_nodes.last_seen' => 'Dernière activité', 'ui.meshcore_nodes.qr_hint' => 'Scanner pour ajouter comme contact MeshCore', 'ui.map_picker.title' => 'Choisir un emplacement', 'ui.map_picker.hint' => 'Cliquez sur la carte pour placer un marqueur. Faites-le glisser pour ajuster.', 'ui.map_picker.use_location' => 'Utiliser cet emplacement', 'ui.admin_users.pending_users_error' => 'Erreur utilisateurs en attente :', 'ui.admin_users.pending_users_load_failed_prefix' => 'Échec du chargement des utilisateurs en attente : ', 'ui.admin_users.all_users_error' => 'Erreur tous les utilisateurs :', 'ui.admin_users.users_load_failed_prefix' => 'Échec du chargement des utilisateurs : ', 'ui.admin_users.processing' => 'Traitement en cours...', 'ui.admin_users.user_approved_success' => 'Utilisateur approuvé avec succès !', 'ui.admin_users.user_rejected_success' => 'Utilisateur rejeté avec succès !', 'ui.admin_users.user_action_failed_prefix' => 'Échec de l\'action {action} sur l\'utilisateur : ', 'ui.admin_users.user_action_failed_short' => 'Échec de l\'action {action} sur l\'utilisateur', 'ui.admin_users.success_prefix' => 'Succès : ', 'ui.admin_users.error_prefix' => 'Erreur : ', 'ui.admin_users.user_data_load_failed_prefix' => 'Échec du chargement des données utilisateur : ', 'ui.admin_users.password_min_length' => 'Le mot de passe doit comporter au moins 8 caractères', 'ui.admin_users.user_updated_success' => 'Utilisateur mis à jour avec succès !', 'ui.admin_users.user_update_failed_prefix' => 'Échec de la mise à jour de l\'utilisateur : ', 'ui.admin_users.user_toggle_confirm' => 'Êtes-vous sûr de vouloir {action} cet utilisateur ?', 'ui.admin_users.user_toggled_success' => 'Utilisateur {action} avec succès !', 'ui.admin_users.required_fields' => 'Le nom d\'utilisateur, le nom réel et le mot de passe sont obligatoires', 'ui.admin_users.username_validation' => 'Le nom d\'utilisateur doit comporter 3 à 20 caractères, lettres, chiffres et underscores uniquement', 'ui.admin_users.creating' => 'Création en cours...', 'ui.admin_users.user_created_success' => 'Utilisateur créé avec succès !', 'ui.admin_users.user_create_failed_prefix' => 'Échec de la création de l\'utilisateur : ', 'ui.admin_users.user_create_failed' => 'Échec de la création de l\'utilisateur', 'ui.admin_users.cleanup_confirm' => 'Cela supprimera tous les enregistrements d\'inscription approuvés et les anciennes inscriptions rejetées (30+ jours). Êtes-vous sûr ?', 'ui.admin_users.cleaning' => 'Nettoyage en cours...', 'ui.admin_users.cleanup_success' => 'Nettoyage terminé ! {approved} inscriptions approuvées et {rejected} anciennes inscriptions rejetées supprimées ({total} au total).', 'ui.admin_users.cleanup_failed_prefix' => 'Échec du nettoyage des inscriptions : ', 'ui.admin_users.send_reminder_confirm' => 'Envoyer un rappel de compte à {username} ? Un message de rappel sera envoyé par netmail et par e-mail (si disponible).', 'ui.admin_users.reminder_sent_netmail_email_suffix' => ' (envoyé par netmail et e-mail)', 'ui.admin_users.reminder_sent_netmail_only_suffix' => ' (envoyé par netmail uniquement)', 'ui.admin_users.send_reminder_failed_prefix' => 'Échec de l\'envoi du rappel : ', 'ui.admin_users.send_reminder_failed' => 'Échec de l\'envoi du rappel', 'ui.admin_users.no_reminders_needed' => 'Aucun utilisateur n\'a besoin de rappel de compte pour le moment. Tous les utilisateurs se sont connectés !', 'ui.admin_users.reminders_found_header' => '{count} utilisateur(s) ne s\'est/se sont pas encore connecté(s) : ', 'ui.admin_users.reminder_user_line' => '- {username} ({real_name}) - créé le {created_date} ', 'ui.admin_users.no_real_name' => 'Aucun nom réel', 'ui.admin_users.reminders_found_footer' => ' Vous pouvez envoyer des rappels individuels en utilisant les boutons « Rappeler » dans la liste des utilisateurs ci-dessous.', 'ui.admin_users.reminders_load_failed_prefix' => 'Échec du chargement des utilisateurs nécessitant des rappels : ', 'ui.admin_users.page_title' => 'Gestion des utilisateurs', 'ui.admin_users.heading' => 'Gestion des utilisateurs', 'ui.admin_users.create_new_user' => 'Créer un nouvel utilisateur', 'ui.admin_users.need_reminders' => 'Rappels nécessaires', 'ui.admin_users.cleanup' => 'Nettoyage', 'ui.admin_users.pending_registrations' => 'Inscriptions en attente', 'ui.admin_users.loading_pending_registrations' => 'Chargement des inscriptions en attente...', 'ui.admin_users.all_users' => 'Tous les utilisateurs', 'ui.admin_users.search_users_placeholder' => 'Rechercher des utilisateurs...', 'ui.admin_users.per_page_25' => '25 par page', 'ui.admin_users.per_page_50' => '50 par page', 'ui.admin_users.per_page_100' => '100 par page', 'ui.admin_users.loading_users' => 'Chargement des utilisateurs...', 'ui.admin_users.approve_user' => 'Approuver l\'utilisateur', 'ui.admin_users.admin_notes' => 'Notes administrateur', 'ui.admin_users.optional_notes_placeholder' => 'Notes facultatives sur cette décision...', 'ui.admin_users.approve' => 'Approuver', 'ui.admin_users.reject' => 'Rejeter', 'ui.admin_users.create_user' => 'Créer un utilisateur', 'ui.admin_users.edit_user' => 'Modifier l\'utilisateur', 'ui.admin_users.account_is_active' => 'Le compte est actif', 'ui.admin_users.inactive_cannot_login' => 'Les utilisateurs inactifs ne peuvent pas se connecter', 'ui.admin_users.admin_privileges' => 'Privilèges administrateur', 'ui.admin_users.admin_privileges_help' => 'Les administrateurs peuvent gérer les utilisateurs et les paramètres système', 'ui.admin_users.is_system_account' => 'Est un compte système', 'ui.admin_users.is_system_account_help' => 'Les comptes système sont masqués de la liste normale des utilisateurs et réservés à un usage interne ou de service.', 'ui.admin_users.email_optional_help' => 'Facultatif - pour la récupération de compte et les notifications', 'ui.admin_users.min_8_characters' => 'Minimum 8 caractères', 'ui.admin_users.username_cannot_change' => 'Le nom d\'utilisateur ne peut pas être modifié', 'ui.admin_users.real_name_cannot_change' => 'Le nom réel ne peut pas être modifié', 'ui.admin_users.new_password' => 'Nouveau mot de passe', 'ui.admin_users.new_password_help' => 'Laisser vide pour conserver le mot de passe actuel. Minimum 8 caractères si modification.', 'ui.admin_users.no_pending_registrations' => 'Aucune inscription en attente', 'ui.admin_users.requested' => 'Demandé', 'ui.admin_users.source' => 'Source', 'ui.admin_users.last_reminded' => 'Dernier rappel', 'ui.admin_users.not_provided' => 'Non fourni', 'ui.admin_users.view_profile' => 'Voir le profil', 'ui.admin_users.send_account_reminder' => 'Envoyer un rappel de compte', 'ui.admin_users.remind' => 'Rappeler', 'ui.admin_users.referred_by' => 'Référé par :', 'ui.admin_users.basic_information' => 'Informations de base', 'ui.admin_users.request_details' => 'Détails de la demande', 'ui.admin_users.reason_for_joining' => 'Raison de l\'inscription :', 'ui.admin_users.no_reason_provided' => 'Aucune raison fournie', 'ui.admin_users.user_agent' => 'Agent utilisateur :', 'ui.admin_users.not_available' => 'Non disponible', 'ui.admin_users.user_details' => 'Détails de l\'utilisateur', 'ui.admin_users.approve_user_registration' => 'Approuver l\'inscription de l\'utilisateur', 'ui.admin_users.reject_user_registration' => 'Rejeter l\'inscription de l\'utilisateur', 'ui.admin_users.users_pagination_aria' => 'Pagination des utilisateurs', 'ui.admin_users.showing_users_range' => 'Affichage de {start}-{end} sur {total} utilisateurs', 'ui.admin.appearance.load_failed_prefix' => 'Échec du chargement de la configuration d\'apparence : ', 'ui.admin.appearance.save_failed' => 'Échec de l\'enregistrement', 'ui.admin.appearance.reset_menu_confirm' => 'Réinitialiser les éléments du menu par défaut ?', 'ui.admin.appearance.shell_saved_reload' => 'Enregistré ! Rechargez la page pour voir le nouveau shell.', 'ui.admin.appearance.upload_failed_prefix' => 'Échec du téléversement : ', 'ui.admin.appearance.delete_shell_art_confirm' => 'Supprimer {name} ?', 'ui.admin.appearance.delete_failed_prefix' => 'Échec de la suppression : ', 'ui.admin.appearance.error_prefix' => 'Erreur : ', 'ui.admin.appearance.request_failed' => 'Échec de la requête', 'ui.admin.appearance.page_title' => 'Apparence & Contenu - Admin', 'ui.admin.appearance.heading' => 'Apparence & Contenu', 'ui.admin.appearance.tab_dashboard' => 'Tableau de bord', 'ui.admin.appearance.tab_branding' => 'Identité visuelle', 'ui.admin.appearance.tab_content' => 'Contenu', 'ui.admin.appearance.tab_navigation' => 'Navigation', 'ui.admin.appearance.tab_seo' => 'SEO & Public', 'ui.admin.appearance.tab_shell' => 'Shell', 'ui.admin.appearance.tab_login' => 'Connexion', 'ui.admin.appearance.tab_term_server' => 'Serveur Terminal', 'ui.admin.appearance.tab_message_reader' => 'Lecteur de messages', 'ui.admin.appearance.tab_file_areas' => 'Zones de fichiers', 'ui.admin.appearance.invalid_hex_color' => 'Couleur hexadécimale invalide', 'ui.admin.appearance.no_content' => 'Aucun contenu', 'ui.admin.appearance.preview' => 'Aperçu', 'ui.admin.appearance.preview_failed' => 'Échec de l\'aperçu', 'ui.admin.appearance.branding.title' => 'Identité visuelle', 'ui.admin.appearance.branding.accent_color' => 'Couleur d\'accentuation', 'ui.admin.appearance.branding.pick_accent_color' => 'Choisir une couleur d\'accentuation', 'ui.admin.appearance.branding.reset' => 'Réinitialiser', 'ui.admin.appearance.branding.accent_help' => 'Remplace la couleur principale de la navigation et des boutons sur tout le site. Laisser vide pour la valeur par défaut.', 'ui.admin.appearance.branding.default_theme' => 'Thème par défaut', 'ui.admin.appearance.branding.system_default' => '(Défaut système)', 'ui.admin.appearance.branding.default_theme_help' => 'Thème appliqué à tous les utilisateurs par défaut.', 'ui.admin.appearance.branding.lock_theme' => 'Verrouiller le thème (empêcher les utilisateurs de le modifier)', 'ui.admin.appearance.branding.logo_url' => 'URL du logo', 'ui.admin.appearance.branding.logo_url_help' => 'URL d\'une image de logo affichée dans la barre de navigation. Laisser vide pour utiliser le nom du système en texte.', 'ui.admin.appearance.branding.footer_text' => 'Texte du pied de page', 'ui.admin.appearance.branding.footer_placeholder' => 'Laisser vide pour la ligne n?ud/sysop par défaut', 'ui.admin.appearance.branding.footer_help' => 'Texte personnalisé pour le pied de page. Laisser vide pour la ligne d\'informations système par défaut.', 'ui.admin.appearance.branding.save' => 'Enregistrer l\'identité visuelle', 'ui.admin.appearance.content.system_news_title' => 'Actualités système (MOTD)', 'ui.admin.appearance.content.system_news_placeholder' => 'Saisir les actualités système en format Markdown...', 'ui.admin.appearance.content.system_news_help' => 'Prend en charge Markdown. Affiché sur le tableau de bord. Laisser vide pour afficher le systemnews.twig par défaut ou personnalisé.', 'ui.admin.appearance.content.house_rules_title' => 'Règles de la maison', 'ui.admin.appearance.content.house_rules_placeholder' => 'Saisir les règles de la maison en format Markdown...', 'ui.admin.appearance.content.house_rules_help' => 'Prend en charge Markdown. Affiché dans la fenêtre modale des règles de la maison accessible depuis le pied de page.', 'ui.admin.appearance.content.site_announcement_title' => 'Annonce du site', 'ui.admin.appearance.content.show_announcement_banner' => 'Afficher la bannière d\'annonce', 'ui.admin.appearance.content.announcement_text' => 'Texte de l\'annonce', 'ui.admin.appearance.content.type' => 'Type', 'ui.admin.appearance.content.type_info' => 'Info (bleu)', 'ui.admin.appearance.content.type_success' => 'Succès (vert)', 'ui.admin.appearance.content.type_warning' => 'Avertissement (jaune)', 'ui.admin.appearance.content.type_danger' => 'Danger (rouge)', 'ui.admin.appearance.content.type_primary' => 'Principal', 'ui.admin.appearance.content.expires_at_optional' => 'Expire le (optionnel)', 'ui.admin.appearance.content.expires_help' => 'Laisser vide pour ne jamais expirer.', 'ui.admin.appearance.content.dismissible' => 'Masquable', 'ui.admin.appearance.content.save' => 'Enregistrer le contenu', 'ui.admin.appearance.navigation.title' => 'Liens de navigation personnalisés', 'ui.admin.appearance.navigation.add_link' => 'Ajouter un lien', 'ui.admin.appearance.navigation.help' => 'Jusqu\'à 3 liens apparaissent directement dans la barre de navigation ; 4 ou plus sont regroupés dans un menu déroulant « Liens ».', 'ui.admin.appearance.navigation.url_placeholder' => '/page ou https://...', 'ui.admin.appearance.navigation.save' => 'Enregistrer la navigation', 'ui.admin.appearance.seo.title' => 'SEO & Pages publiques', 'ui.admin.appearance.seo.enable_about_page' => 'Activer la page publique /about', 'ui.admin.appearance.seo.about_page_help' => 'Lorsqu\'elle est activée, une page /about accessible publiquement affiche les informations de votre système et les règles de la maison. Désactivée, elle renvoie une erreur 404.', 'ui.admin.appearance.seo.site_description' => 'Description du site', 'ui.admin.appearance.seo.max_300_chars' => '(max 300 caractères)', 'ui.admin.appearance.seo.description_help' => 'Utilisée dans la méta-description et les balises OG pour les moteurs de recherche et les aperçus de liens.', 'ui.admin.appearance.seo.og_image_url' => 'URL de l\'image OG', 'ui.admin.appearance.seo.og_image_placeholder' => 'https://example.com/preview.png', 'ui.admin.appearance.seo.og_image_help' => 'Image affichée lorsque votre site est partagé sur les réseaux sociaux. Doit faire au moins 1200x630 px.', 'ui.admin.appearance.seo.save' => 'Enregistrer les paramètres SEO', 'ui.admin.appearance.shell.title' => 'Shell de l\'interface', 'ui.admin.appearance.shell.default_interface_style' => 'Style d\'interface par défaut', 'ui.admin.appearance.shell.web_interface' => 'Interface web', 'ui.admin.appearance.shell.web_interface_help' => 'Barre de navigation complète, menus déroulants, mise en page web standard', 'ui.admin.appearance.shell.bbs_menu' => 'Menu BBS', 'ui.admin.appearance.shell.bbs_menu_help' => 'En-tête minimal, navigation par touches de raccourci, menu carte/texte/ANSI', 'ui.admin.appearance.shell.lock_shell' => 'Verrouiller le shell (empêcher les utilisateurs de le modifier dans leurs paramètres)', 'ui.admin.appearance.shell.bbs_menu_config' => 'Configuration du menu BBS', 'ui.admin.appearance.shell.menu_variant' => 'Variante du menu', 'ui.admin.appearance.shell.variant_cards' => 'Grille de cartes', 'ui.admin.appearance.shell.variant_text' => 'Texte terminal', 'ui.admin.appearance.shell.variant_ansi' => 'Art ANSI', 'ui.admin.appearance.shell.ansi_art_file' => 'Fichier d\'art ANSI', 'ui.admin.appearance.shell.ansi_art_size' => 'Taille de l\'art ANSI', 'ui.admin.appearance.shell.ansi_art_size_help' => 'Choisissez la taille de canevas transmise au moteur de rendu ANSI pour l\'art du menu BBS.', 'ui.admin.appearance.shell.ansi_art_size_full' => 'Plein ecran', 'ui.admin.appearance.shell.none_selected' => '(aucun sélectionné)', 'ui.admin.appearance.shell.ansi_file_help' => 'Sélectionnez un fichier .ans téléversé à afficher au-dessus du menu.', 'ui.admin.appearance.shell.upload_ans' => 'Téléverser .ans', 'ui.admin.appearance.shell.max_512_kb' => 'Max 512 Ko.', 'ui.admin.appearance.shell.delete_selected' => 'Supprimer la sélection', 'ui.admin.appearance.shell.menu_items' => 'Éléments du menu', 'ui.admin.appearance.shell.menu_items_help' => 'Définissez les touches de raccourci et les destinations pour le menu principal.', 'ui.admin.appearance.shell.icon' => 'Icône', 'ui.admin.appearance.shell.icon_help' => '(nom Font Awesome)', 'ui.admin.appearance.shell.icon_placeholder' => 'envelope', 'ui.admin.appearance.shell.add_item' => 'Ajouter un élément', 'ui.admin.appearance.shell.reset_to_defaults' => 'Réinitialiser par défaut', 'ui.admin.appearance.shell.save' => 'Enregistrer les paramètres du shell', 'ui.admin.appearance.shell.could_not_load_file_list' => 'Impossible de charger la liste des fichiers.', 'ui.admin.appearance.shell.uploading' => 'Téléversement en cours...', 'ui.admin.appearance.shell.uploaded_prefix' => 'Téléversé : ', 'ui.admin.appearance.shell.deleted_prefix' => 'Supprimé : ', 'ui.admin.appearance.login.title' => 'Écran de connexion', 'ui.admin.appearance.login.help' => 'Choisissez comment la page de connexion partagée s affiche pour tous les shells. Le mode ANSI affiche d abord votre art, puis ajoute à la fin les invites de nom d utilisateur, mot de passe et le lien d inscription.', 'ui.admin.appearance.login.display_mode' => 'Mode d affichage', 'ui.admin.appearance.login.mode_standard' => 'Formulaire standard', 'ui.admin.appearance.login.mode_ansi_prompt' => 'Écran ANSI + Invite', 'ui.admin.appearance.login.display_mode_help' => 'Utilisez la carte de connexion normale ou affichez un art ANSI avec l invite de connexion ajoutée à la fin.', 'ui.admin.appearance.login.ansi_art_size' => 'Taille de l art ANSI', 'ui.admin.appearance.login.ansi_art_size_help' => 'Choisissez la taille de canevas transmise au moteur de rendu ANSI pour l art de connexion.', 'ui.admin.appearance.login.ansi_content' => 'Art ANSI de connexion', 'ui.admin.appearance.login.ansi_placeholder' => 'Collez ici l art ANSI de connexion...', 'ui.admin.appearance.login.ansi_help' => 'Utilisez l éditeur ANSI pour construire l écran de connexion partagé affiché avant l invite.', 'ui.admin.appearance.login.preview_title' => 'Aperçu de l écran de connexion', 'ui.admin.appearance.term_server.title' => 'Écrans du serveur terminal', 'ui.admin.appearance.term_server.help' => 'Gère les écrans ANSI intégrés utilisés par le serveur terminal telnet et SSH.', 'ui.admin.appearance.term_server.screen_slot' => 'Écran', 'ui.admin.appearance.term_server.upload' => 'Téléverser un fichier d\'écran', 'ui.admin.appearance.term_server.reset_default' => 'Réinitialiser au défaut', 'ui.admin.appearance.term_server.placeholder' => 'Collez ici le contenu ANSI ou texte...', 'ui.admin.appearance.term_server.editor_help' => 'Les emplacements proposés correspondent aux écrans que le serveur terminal sait déjà afficher.', 'ui.admin.appearance.term_server.default_active' => 'défaut', 'ui.admin.appearance.term_server.list_failed' => 'Impossible de charger les écrans du serveur terminal', 'ui.admin.appearance.term_server.load_failed' => 'Impossible de charger l\'écran du serveur terminal', 'ui.admin.appearance.term_server.save_failed' => 'Impossible d\'enregistrer l\'écran du serveur terminal', 'ui.admin.appearance.term_server.uploading' => 'Téléversement...', 'ui.admin.appearance.term_server.upload_failed' => 'Impossible de téléverser l\'écran du serveur terminal', 'ui.admin.appearance.term_server.delete_failed' => 'Impossible de réinitialiser l\'écran du serveur terminal', 'ui.admin.appearance.term_server.reset_confirm' => 'Réinitialiser cet écran du serveur terminal au comportement par défaut ?', 'ui.admin.appearance.term_server.screen.welcome' => 'Accueil', 'ui.admin.appearance.term_server.screen.welcome_help' => 'Affiché quand un utilisateur se connecte au serveur terminal.', 'ui.admin.appearance.term_server.screen.main_menu' => 'Menu principal', 'ui.admin.appearance.term_server.screen.main_menu_help' => 'Affiché derrière le menu principal du terminal après connexion.', 'ui.admin.appearance.term_server.screen.goodbye' => 'Au revoir', 'ui.admin.appearance.term_server.screen.goodbye_help' => 'Affiché quand un utilisateur se déconnecte du serveur terminal.', 'ui.admin.appearance.term_menu_keys.title' => 'Touches du menu principal', 'ui.admin.appearance.term_menu_keys.help' => 'Attribuez une lettre ou un chiffre à chaque action du menu principal du terminal. Laissez une touche vide pour retirer l\'option du menu. Assurez-vous que votre mainmenu.ans corresponde aux touches configurées ici.', 'ui.admin.appearance.term_menu_keys.reset_defaults' => 'Réinitialiser les valeurs par défaut', 'ui.admin.appearance.term_menu_keys.col_action' => 'Action', 'ui.admin.appearance.term_menu_keys.col_key' => 'Touche', 'ui.admin.appearance.term_menu_keys.col_default' => 'Défaut', 'ui.admin.appearance.term_menu_keys.quit_required_notice' => 'Quitter doit toujours avoir une touche assignée.', 'ui.admin.appearance.term_menu_keys.action.netmail' => 'Netmail', 'ui.admin.appearance.term_menu_keys.action.echomail' => 'Echomail', 'ui.admin.appearance.term_menu_keys.action.shoutbox' => 'Shoutbox', 'ui.admin.appearance.term_menu_keys.action.bulletins' => 'Bulletins', 'ui.admin.appearance.term_menu_keys.action.polls' => 'Sondages', 'ui.admin.appearance.term_menu_keys.action.doors' => 'Jeux de portes', 'ui.admin.appearance.term_menu_keys.action.files' => 'Fichiers', 'ui.admin.appearance.term_menu_keys.action.settings' => 'Paramètres', 'ui.admin.appearance.term_menu_keys.action.interests' => 'Centres d\'intérêt', 'ui.admin.appearance.term_menu_keys.action.whosonline' => 'Qui est en ligne', 'ui.admin.appearance.term_menu_keys.action.qwk' => 'Courrier hors-ligne QWK', 'ui.admin.appearance.term_menu_keys.action.bbslist' => 'Annuaire BBS', 'ui.admin.appearance.term_menu_keys.action.nodelist' => 'Liste des noeuds', 'ui.admin.appearance.term_menu_keys.action.localchat' => 'Chat local', 'ui.admin.appearance.term_menu_keys.action.quit' => 'Quitter', 'ui.admin.appearance.term_border.title' => 'Style de bordure', 'ui.admin.appearance.term_border.help' => 'Choisissez le style de dessin de bo\xeete utilis\xe9 pour les cadres et bordures du serveur terminal. Les styles n\xe9cessitant des caract\xe8res hors du jeu de caract\xe8res s\xe9lectionn\xe9 basculent automatiquement vers un style compatible.', 'ui.admin.appearance.term_border.label' => 'Style', 'ui.admin.appearance.term_border.charset_note' => 'Gras et Arrondi n\xe9cessitent un terminal UTF-8. Ombre n\xe9cessite Unicode. ASCII est compatible avec tous les terminaux.', 'ui.admin.appearance.term_border.style.classic' => 'Classique (coins doubles, c\xf4t\xe9s simples)', 'ui.admin.appearance.term_border.style.double' => 'Double (ligne double int\xe9grale)', 'ui.admin.appearance.term_border.style.single' => 'Simple (ligne fine)', 'ui.admin.appearance.term_border.style.heavy' => 'Gras (ligne simple \xe9paisse, UTF-8)', 'ui.admin.appearance.term_border.style.rounded' => 'Arrondi (coins courb\xe9s, UTF-8)', 'ui.admin.appearance.term_border.style.minimal' => 'Minimal (r\xe8gles haut/bas seulement)', 'ui.admin.appearance.term_border.style.mixed' => 'Mixte (horizontal double, vertical simple)', 'ui.admin.appearance.term_border.style.shadow' => 'Ombre (classique + ombre port\xe9e)', 'ui.admin.appearance.term_border.style.ascii' => 'ASCII (compatible avec tous les terminaux)', 'ui.admin.appearance.sixel.title' => 'Graphiques Sixel', 'ui.admin.appearance.sixel.help' => 'Importez des fichiers image sixel à afficher sur les clients terminaux compatibles sixel. Ils remplacent l\'écran ANSI lorsque le client prend en charge les graphiques sixel.', 'ui.admin.appearance.sixel.upload' => 'Importer un fichier Sixel', 'ui.admin.appearance.sixel.delete' => 'Supprimer', 'ui.admin.appearance.sixel.not_installed' => 'non installé', 'ui.admin.appearance.sixel.sixel_clients_only' => '(Clients compatibles sixel uniquement.)', 'ui.admin.appearance.sixel.delete_confirm' => 'Supprimer cet écran sixel ?', 'ui.admin.appearance.sixel.list_failed' => 'Échec du chargement des écrans sixel', 'ui.admin.appearance.sixel.upload_failed' => 'Échec de l\'importation de l\'écran sixel', 'ui.admin.appearance.sixel.delete_failed' => 'Échec de la suppression de l\'écran sixel', 'ui.ansi_editor.insert_escape_prefix' => 'Insérer ESC[', 'ui.ansi_editor.insert_sequence' => 'Insérer une séquence', 'ui.ansi_editor.select_sequence' => 'Sélectionner une séquence ANSI', 'ui.ansi_editor.custom_sequence' => 'Séquence ANSI personnalisée', 'ui.ansi_editor.custom_sequence_placeholder' => 'ex. 10;20H ou 44m', 'ui.ansi_editor.preview_panel' => 'Aperçu', 'ui.ansi_editor.preview_empty' => 'Rien à prévisualiser pour le moment.', 'ui.ansi_editor.cheatsheet_title' => 'Aide-mémoire ANSI', 'ui.ansi_editor.insert_file' => 'Insérer un fichier', 'ui.ansi_editor.cheatsheet_help' => 'Utilisez ces séquences dans l éditeur. ESC désigne le caractère d échappement (ASCII 27).', 'ui.ansi_editor.cheatsheet_sequence' => 'Séquence', 'ui.ansi_editor.cheatsheet_description' => 'Description', 'ui.ansi_editor.cheatsheet_preview' => 'Aperçu', 'ui.ansi_editor.group.formatting' => 'Mise en forme', 'ui.ansi_editor.group.foreground' => 'Couleurs du texte', 'ui.ansi_editor.group.background' => 'Couleurs d\'arrière-plan', 'ui.ansi_editor.group.cursor' => 'Écran et curseur', 'ui.ansi_editor.sequence_reset' => 'Réinitialiser (ESC[0m)', 'ui.ansi_editor.sequence_bold' => 'Gras (ESC[1m)', 'ui.ansi_editor.sequence_blink' => 'Clignotement (ESC[5m)', 'ui.ansi_editor.sequence_reverse' => 'Vidéo inversée (ESC[7m)', 'ui.ansi_editor.sequence_fg_black' => 'Noir (ESC[30m)', 'ui.ansi_editor.sequence_fg_red' => 'Rouge (ESC[31m)', 'ui.ansi_editor.sequence_fg_green' => 'Vert (ESC[32m)', 'ui.ansi_editor.sequence_fg_yellow' => 'Jaune (ESC[33m)', 'ui.ansi_editor.sequence_fg_blue' => 'Bleu (ESC[34m)', 'ui.ansi_editor.sequence_fg_magenta' => 'Magenta (ESC[35m)', 'ui.ansi_editor.sequence_fg_cyan' => 'Cyan (ESC[36m)', 'ui.ansi_editor.sequence_fg_white' => 'Blanc (ESC[37m)', 'ui.ansi_editor.sequence_bg_black' => 'Fond noir (ESC[40m)', 'ui.ansi_editor.sequence_bg_red' => 'Fond rouge (ESC[41m)', 'ui.ansi_editor.sequence_bg_green' => 'Fond vert (ESC[42m)', 'ui.ansi_editor.sequence_bg_yellow' => 'Fond jaune (ESC[43m)', 'ui.ansi_editor.sequence_bg_blue' => 'Fond bleu (ESC[44m)', 'ui.ansi_editor.sequence_bg_magenta' => 'Fond magenta (ESC[45m)', 'ui.ansi_editor.sequence_bg_cyan' => 'Fond cyan (ESC[46m)', 'ui.ansi_editor.sequence_bg_white' => 'Fond blanc (ESC[47m)', 'ui.ansi_editor.sequence_clear_screen' => 'Effacer l\'écran (ESC[2J)', 'ui.ansi_editor.sequence_clear_line' => 'Effacer la ligne (ESC[K)', 'ui.ansi_editor.sequence_cursor_home' => 'Curseur en début (ESC[H)', 'ui.ansi_editor.sequence_cursor_save' => 'Enregistrer le curseur (ESC[s)', 'ui.ansi_editor.sequence_cursor_restore' => 'Restaurer le curseur (ESC[u)', 'ui.ansi_editor.sequence_cursor_up' => 'Curseur vers le haut (ESC[1A)', 'ui.ansi_editor.sequence_cursor_down' => 'Curseur vers le bas (ESC[1B)', 'ui.ansi_editor.sequence_cursor_right' => 'Curseur vers la droite (ESC[1C)', 'ui.ansi_editor.sequence_cursor_left' => 'Curseur vers la gauche (ESC[1D)', 'ui.ansi_editor.example_position' => 'Positionner le curseur (ESC[10;20H)', 'ui.admin.appearance.default_menu.messages' => 'Messages', 'ui.admin.appearance.default_menu.netmail' => 'Netmail', 'ui.admin.appearance.default_menu.files' => 'Fichiers', 'ui.admin.appearance.default_menu.games_doors' => 'Jeux & Portes', 'ui.admin.appearance.default_menu.settings' => 'Paramètres', 'ui.admin.appearance.message_reader.title' => 'Lecteur de messages', 'ui.admin.appearance.message_reader.layout' => 'Mise en page', 'ui.admin.appearance.message_reader.scrollable_body' => 'Corps du message défilant', 'ui.admin.appearance.message_reader.scrollable_body_help' => 'Lorsqu\'il est activé, l\'en-tête du message (De, À, Objet, Date) reste fixé en haut tandis que le corps du message défile indépendamment. Lorsqu\'il est désactivé, toute la fenêtre modale défile ensemble (comportement par défaut).', 'ui.admin.appearance.message_reader.save' => 'Enregistrer les paramètres du lecteur de messages', // Appearance - File Areas tab 'ui.admin.appearance.file_areas.title' => 'Zones de fichiers', 'ui.admin.appearance.file_areas.help' => 'Ajoutez des informations personnalisées aux pages des zones de fichiers. Le HTML est pris en charge. Laissez vide pour ne rien afficher.', 'ui.admin.appearance.file_areas.sidebar_section' => 'Panneau latéral', 'ui.admin.appearance.file_areas.sidebar_info_title' => 'Titre du panneau', 'ui.admin.appearance.file_areas.sidebar_info_title_placeholder' => 'ex. Politique de téléchargement', 'ui.admin.appearance.file_areas.sidebar_info_title_help' => 'En-tête optionnel affiché en haut du panneau latéral. Laissez vide pour ne pas afficher d\'en-tête.', 'ui.admin.appearance.file_areas.sidebar_info_markdown' => 'Contenu latéral (Markdown)', 'ui.admin.appearance.file_areas.sidebar_info_markdown_placeholder' => "**Ratio de téléchargement :** 1:3 ? pour chaque 1 Mo téléversé vous pouvez télécharger 3 Mo.", 'ui.admin.appearance.file_areas.sidebar_info_markdown_help' => 'Markdown affiché dans une carte dans la barre latérale droite de la zone de fichiers. Laissez vide pour masquer le panneau.', 'ui.admin.appearance.file_areas.footer_section' => 'Pied de page', 'ui.admin.appearance.file_areas.footer_markdown' => 'Contenu du pied de page (Markdown)', 'ui.admin.appearance.file_areas.footer_markdown_placeholder' => "Contact DMCA : dmca@example.com", 'ui.admin.appearance.file_areas.footer_markdown_help' => 'Markdown affiché dans une carte sous la liste de fichiers. Utile pour les avis DMCA, les politiques de ratio de téléchargement ou d\'autres avis. Laissez vide pour masquer le pied de page.', 'ui.admin.appearance.file_areas.save' => 'Enregistrer les paramètres des zones de fichiers', // Appearance - Dashboard tab 'ui.admin.appearance.dashboard.title' => 'Mise en page par défaut du tableau de bord', 'ui.admin.appearance.dashboard.description' => 'Configurez la mise en page de cartes par défaut présentée aux utilisateurs n\'ayant pas personnalisé leur tableau de bord. Les cartes soumises à des exigences de fonctionnalité ou d\'administration ne s\'afficheront que pour les utilisateurs autorisés.', 'ui.admin.appearance.dashboard.drag_hint' => 'Faites glisser les cartes entre les colonnes pour définir la mise en page par défaut.', 'ui.admin.appearance.dashboard.main_column' => 'Colonne principale', 'ui.admin.appearance.dashboard.sidebar_column' => 'Colonne latérale', 'ui.admin.appearance.dashboard.hidden_column' => 'Masqué par défaut', 'ui.admin.appearance.dashboard.required_badge' => 'Requis', 'ui.admin.appearance.dashboard.admin_badge' => 'Admin seulement', 'ui.admin.appearance.dashboard.save' => 'Enregistrer la mise en page du tableau de bord', 'ui.admin.appearance.dashboard.reset' => 'Réinitialiser aux valeurs par défaut', 'ui.admin.appearance.dashboard.reset_confirm' => 'Réinitialiser la mise en page du tableau de bord aux valeurs par défaut du système ?', 'ui.admin.appearance.dashboard.saving' => 'Enregistrement...', 'ui.admin.binkp_config.load_failed' => 'Échec du chargement de la configuration', 'ui.admin.binkp_config.save_failed' => 'Échec de l\'enregistrement de la configuration', 'ui.admin.binkp_config.reload_confirm' => 'Recharger la configuration du démon binkp ? Cela enverra un signal SIGHUP au démon.', 'ui.admin.binkp_config.reload_failed' => 'Échec du rechargement de la configuration', 'ui.admin.binkp_config.remove_uplink_confirm' => 'Supprimer ce lien montant ?', 'ui.admin.binkp_config.page_title' => 'Configuration Binkp', 'ui.admin.binkp_config.heading' => 'Configuration Binkp', 'ui.admin.binkp_config.restart_notice' => 'Après l\'enregistrement, redémarrez les démons pour appliquer les modifications.', 'ui.admin.binkp_config.save_configuration' => 'Enregistrer la configuration', 'ui.admin.binkp_config.reload_config' => 'Recharger la configuration', 'ui.admin.binkp_config.reload_title' => 'Recharger la configuration sans redémarrer le démon', 'ui.admin.binkp_config.config_not_loaded' => 'Configuration non chargée.', 'ui.admin.binkp_config.configuration_saved' => 'Configuration enregistrée.', 'ui.admin.binkp_config.reloading' => 'Rechargement de la configuration...', 'ui.admin.binkp_config.reloaded_success' => 'Configuration rechargée avec succès. Le démon a pris en compte les modifications.', 'ui.admin.binkp_config.current' => 'actuel', 'ui.admin.binkp_config.system.title' => 'Système', 'ui.admin.binkp_config.system.system_name' => 'Nom du système', 'ui.admin.binkp_config.system.system_address' => 'Adresse du système', 'ui.admin.binkp_config.system.sysop_name' => 'Nom du sysop', 'ui.admin.binkp_config.system.select_admin_user' => 'Sélectionner un utilisateur administrateur.', 'ui.admin.binkp_config.system.location' => 'Emplacement', 'ui.admin.binkp_config.system.timezone' => 'Fuseau horaire', 'ui.admin.binkp_config.system.origin_line' => 'Ligne d\'origine', 'ui.admin.binkp_config.binkp.title' => 'Binkp', 'ui.admin.binkp_config.binkp.timeout_seconds' => 'Délai d\'expiration (secondes)', 'ui.admin.binkp_config.binkp.max_connections' => 'Connexions maximales', 'ui.admin.binkp_config.binkp.outbound_queue_timer' => 'Minuteur de file sortante (minutes)', 'ui.admin.binkp_config.binkp.outbound_queue_timer_help' => 'Lorsqu\'il y a des paquets sortants en attente, le scheduler tente une livraison immédiatement puis attend ce délai avant de réessayer.', 'ui.admin.binkp_config.binkp.bind_address' => 'Adresse de liaison', 'ui.admin.binkp_config.binkp.preserve_processed_packets' => 'Conserver les paquets traités', 'ui.admin.binkp_config.binkp.preserve_sent_packets' => 'Conserver les paquets envoyés', 'ui.admin.binkp_config.security.title' => 'Sécurité', 'ui.admin.binkp_config.security.allow_insecure_inbound' => 'Autoriser les connexions entrantes non sécurisées', 'ui.admin.binkp_config.security.insecure_receive_only' => 'Réception uniquement en mode non sécurisé', 'ui.admin.binkp_config.security.insecure_allow_freq' => 'Autoriser les FREQ lors des sessions non sécurisées', 'ui.admin.binkp_config.security.require_allowlist_for_insecure' => 'Exiger la liste d\'autorisation pour les connexions non sécurisées', 'ui.admin.binkp_config.security.max_insecure_sessions_per_hour' => 'Sessions non sécurisées max / heure', 'ui.admin.binkp_config.security.allow_plaintext_fallback' => 'Autoriser le repli en texte clair', 'ui.admin.binkp_config.crashmail.title' => 'Crashmail', 'ui.admin.binkp_config.crashmail.enable_crashmail' => 'Activer Crashmail', 'ui.admin.binkp_config.crashmail.max_attempts' => 'Tentatives max', 'ui.admin.binkp_config.crashmail.retry_interval_minutes' => 'Intervalle de réessai (minutes)', 'ui.admin.binkp_config.crashmail.use_nodelist_for_routing' => 'Utiliser la Nodelist pour le routage', 'ui.admin.binkp_config.crashmail.fallback_port' => 'Port de repli', 'ui.admin.binkp_config.crashmail.allow_insecure_crash_delivery' => 'Autoriser la livraison Crash non sécurisée', 'ui.admin.binkp_config.uplinks.title' => 'Uplinks', 'ui.admin.binkp_config.uplinks.add_uplink' => 'Ajouter un uplink', 'ui.admin.binkp_config.uplinks.edit_uplink' => 'Modifier l\'uplink', 'ui.admin.binkp_config.uplinks.not_found' => 'Uplink not found.', 'ui.admin.binkp_config.uplinks.none_configured' => 'Aucun uplink configuré.', 'ui.admin.binkp_config.uplinks.check_failed' => 'La vérification de connectivité a échoué', 'ui.admin.binkp_config.uplinks.check_success' => 'La vérification de connectivité a réussi', 'ui.admin.binkp_config.uplinks.real_name' => 'Nom réel', 'ui.admin.binkp_config.uplinks.username' => 'Nom d\'utilisateur', 'ui.admin.binkp_config.uplinks.table.me' => 'Moi', 'ui.admin.binkp_config.uplinks.table.uplink' => 'Uplink', 'ui.admin.binkp_config.uplinks.table.domain' => 'Domaine', 'ui.admin.binkp_config.uplinks.table.host' => 'Hôte', 'ui.admin.binkp_config.uplinks.table.schedule' => 'Planification', 'ui.admin.binkp_config.uplinks.table.status' => 'Statut', 'ui.admin.binkp_config.uplinks.table.enabled' => 'Activé', 'ui.admin.binkp_config.uplinks.table.disabled' => 'Désactivé', 'ui.admin.binkp_config.uplinks.table.default' => 'Défaut', 'ui.admin.binkp_config.uplinks.table.actions' => 'Actions', 'ui.admin.binkp_config.uplinks.modal.uplink' => 'Uplink', 'ui.admin.binkp_config.uplinks.modal.me_address' => 'Mon adresse', 'ui.admin.binkp_config.uplinks.modal.uplink_address' => 'Adresse de l\'uplink', 'ui.admin.binkp_config.uplinks.modal.domain' => 'Domaine', 'ui.admin.binkp_config.uplinks.modal.binkp_session_password' => 'Mot de passe de session BinkP', 'ui.admin.binkp_config.uplinks.modal.packet_password' => 'Mot de passe du paquet', 'ui.admin.binkp_config.uplinks.modal.packet_password_help' => 'Mot de passe d\'en-tête FTN .pkt (8 caractères max)', 'ui.admin.binkp_config.uplinks.modal.tic_password' => 'Mot de passe TIC', 'ui.admin.binkp_config.uplinks.modal.tic_password_help' => 'Mot de passe TIC par défaut ; remplacé par zone de fichiers', 'ui.admin.binkp_config.uplinks.modal.areafix_password' => 'Mot de passe AreaFix', 'ui.admin.binkp_config.uplinks.modal.areafix_password_help' => 'Mot de passe pour le robot AreaFix de cet uplink (gestion des abonnements echomail)', 'ui.admin.binkp_config.uplinks.modal.filefix_password' => 'Mot de passe FileFix', 'ui.admin.binkp_config.uplinks.modal.filefix_password_help' => 'Mot de passe pour le robot FileFix de cet uplink (gestion des abonnements file echo)', 'ui.admin.binkp_config.uplinks.modal.poll_schedule' => 'Planification des sondages', 'ui.admin.binkp_config.uplinks.modal.poll_schedule_help' => 'Gardez le sondage peu frequent. Utilisez au moins 1 heure, ou au moins 4 heures pour les hubs qui nous envoient le courrier en crash. Lorsqu\'un uplink nous crash-mail, il pousse le courrier immediatement, donc le sondage sert surtout de rattrapage si quelque chose s\'est mal passe.', 'ui.admin.binkp_config.uplinks.modal.networks_one_per_line' => 'Réseaux (un par ligne)', 'ui.admin.binkp_config.uplinks.modal.feature_flags' => 'Indicateurs de fonction', 'ui.admin.binkp_config.uplinks.modal.allow_markup' => 'Autoriser le balisage', 'ui.admin.binkp_config.uplinks.modal.allow_markup_help' => 'Active la prise en charge du balisage (Markdown, StyleCodes, etc.) sur les réseaux compatibles', 'ui.admin.binkp_config.uplinks.modal.allow_media' => 'Autoriser les médias intégrés', 'ui.admin.binkp_config.uplinks.modal.allow_media_help' => 'Autoriser les médias intégrés (YouTube, SoundCloud, etc.) à la lecture des messages de ce réseau', 'ui.admin.binkp_config.uplinks.modal.posting_name_policy' => 'Politique de nom d\'affichage', 'ui.admin.binkp_config.uplinks.modal.send_domain' => 'Envoyer @Domaine dans ADR', 'ui.admin.binkp_config.uplinks.modal.send_domain_help' => 'Inclure la partie @Domaine lors de l\'envoi de l\'adresse ADR à cet uplink', 'ui.admin.binkp_config.uplinks.modal.enabled_help' => 'Active cet uplink pour le routage normal, les sondages et la livraison sortante', 'ui.admin.binkp_config.uplinks.modal.compression' => 'Compression', 'ui.admin.binkp_config.uplinks.modal.compression_help' => 'Demande des transferts compressés lorsque le système distant le prend en charge', 'ui.admin.binkp_config.uplinks.modal.crypt' => 'Chiffrement', 'ui.admin.binkp_config.uplinks.modal.crypt_help' => 'Utilise l\'authentification de style CRAM-MD5 pour cet uplink lorsque pris en charge', 'ui.admin.binkp_config.uplinks.modal.default_help' => 'Marque cet uplink comme uplink par défaut lorsqu\'aucune route plus spécifique ne correspond', 'ui.admin.binkp_config.uplinks.modal.allow_insecure_echomail' => 'Autoriser la livraison d\'echomail non sécurisée', 'ui.admin.binkp_config.uplinks.modal.allow_insecure_echomail_help' => 'Autorise ce n?ud à livrer de l\'echomail sans s\'authentifier. À utiliser lorsque le système distant ne supporte pas les mots de passe mais est un uplink de confiance.', 'ui.admin.binkp_config.uplinks.modal.default_charset' => 'Substitution du jeu de caractères par défaut', 'ui.admin.binkp_config.uplinks.modal.default_charset_help' => 'Si défini, les messages sortants via cet uplink utilisent ce jeu de caractères au lieu de celui configuré globalement. Laisser vide pour utiliser le défaut BBS.', 'ui.admin.binkp_config.uplinks.modal.charset_use_bbs_default' => 'Défaut BBS', 'ui.admin.binkp_config.uplinks.modal.save_uplink' => 'Enregistrer l\'uplink', 'ui.admin.binkp_config.validation.system_required' => 'Le nom du système, l\'adresse et le sysop sont requis.', 'ui.admin.binkp_config.validation.port_range' => 'Le port Binkp doit être compris entre 1 et 65535.', 'ui.admin.binkp_config.validation.timeout_positive' => 'Le délai d\'expiration Binkp doit être un nombre positif.', 'ui.admin.binkp_config.validation.max_connections_positive' => 'Le nombre maximum de connexions doit être un nombre positif.', 'ui.admin.binkp_config.validation.outbound_queue_timer_positive' => 'Le minuteur de file sortante doit être un nombre positif de minutes.', 'ui.admin.binkp_config.validation.uplink_hostname_required' => 'Le nom d\'hôte de l\'uplink est requis.', 'ui.admin.binkp_config.validation.uplink_port_range' => 'Le port de l\'uplink doit être compris entre 1 et 65535.', 'ui.admin.ads.load_failed_with_status' => 'Échec du chargement des annonces ({status})', 'ui.admin.ads.load_failed' => 'Échec du chargement des annonces', 'ui.admin.ads.select_file_to_upload' => 'Sélectionnez un fichier d\'annonce à téléverser, ou entrez une commande de contenu.', 'ui.admin.ads.upload_failed_with_status' => 'Échec du téléversement ({status})', 'ui.admin.ads.uploaded' => 'Annonce téléversée.', 'ui.admin.ads.upload_failed' => 'Échec du téléversement', 'ui.admin.ads.form_hidden_warning' => 'Une extension du navigateur semble masquer certaines parties de ce formulaire. Si des champs manquent, désactivez le blocage de contenu pour cette page d?administration.', 'ui.admin.ads.delete_confirm' => 'Supprimer {name} ?', 'ui.admin.ads.delete_failed_with_status' => 'Échec de la suppression ({status})', 'ui.admin.ads.deleted' => 'Annonce supprimée.', 'ui.admin.ads.delete_failed' => 'Échec de la suppression', 'ui.admin.ads.unexpected_response' => 'Réponse inattendue ({status})', 'ui.admin.ads.page_title' => 'Bibliothèque de Contenu', 'ui.admin.ads.heading' => 'Bibliothèque de Contenu', 'ui.admin.ads.info_text_prefix' => 'Téléversez des annonces ANSI (`.ans`) dans le répertoire', 'ui.admin.ads.info_text_suffix' => 'Les annonces sont affichées aléatoirement sur le tableau de bord.', 'ui.admin.ads.upload_new' => 'Téléverser un nouveau contenu', 'ui.admin.ads.ansi_file' => 'Fichier d\'annonce (.ans, .rip, .six, .txt)', 'ui.admin.ads.save_as_optional' => 'Enregistrer sous (optionnel)', 'ui.admin.ads.save_as_placeholder' => 'retro-sale.ans', 'ui.admin.ads.save_as_help' => 'Lettres, chiffres, point, tiret, underscore uniquement.', 'ui.admin.ads.upload' => 'Téléverser', 'ui.admin.ads.current_advertisements' => 'Bibliothèque de Contenu', 'ui.admin.ads.size' => 'Taille', 'ui.admin.ads.updated' => 'Mis à jour', 'ui.admin.ads.actions' => 'Actions', 'ui.admin.ads.loading_ads' => 'Chargement des annonces...', 'ui.admin.ads.none_uploaded' => 'Aucune annonce téléversée.', 'ui.admin.ads.view' => 'Voir', 'ui.admin.dashboard.page_title' => 'Tableau de bord admin', 'ui.admin.dashboard.heading' => 'Tableau de bord admin', 'ui.admin.dashboard.total_users' => 'Total utilisateurs', 'ui.admin.dashboard.active_users' => 'Utilisateurs actifs', 'ui.admin.dashboard.total_netmail' => 'Total Netmail', 'ui.admin.dashboard.total_echomail' => 'Total Echomail', 'ui.admin.dashboard.quick_actions' => 'Actions rapides', 'ui.admin.dashboard.system_information' => 'Informations système', 'ui.admin.dashboard.admin_users' => 'Utilisateurs admin :', 'ui.admin.dashboard.active_sessions' => 'Sessions actives :', 'ui.admin.dashboard.system_address' => 'Adresse du système :', 'ui.admin.dashboard.version' => 'Version :', 'ui.admin.dashboard.git_branch_commit' => 'Branche Git / Commit :', 'ui.admin.dashboard.database_version' => 'Version de la base de données :', 'ui.admin.dashboard.service_status' => 'État des services', 'ui.admin.dashboard.service.admin_daemon' => 'Démon admin', 'ui.admin.dashboard.service.binkp_scheduler' => 'Planificateur Binkp', 'ui.admin.dashboard.service.binkp_server' => 'Serveur Binkp', 'ui.admin.dashboard.service.telnetd' => 'Serveur Telnet', 'ui.admin.dashboard.service.ftp_daemon' => 'Serveur FTP', 'ui.admin.dashboard.service.ssh_daemon' => 'Serveur SSH', 'ui.admin.dashboard.service.gemini_daemon' => 'Serveur Gemini', 'ui.admin.dashboard.service.mrc_daemon' => 'Démon MRC', 'ui.admin.dashboard.service.multiplexing_server' => 'Serveur de multiplexage', 'ui.admin.dashboard.service.mcp_server' => 'Serveur MCP', 'ui.admin.dashboard.service.realtime_server' => 'Serveur temps réel', 'ui.admin.dashboard.running' => 'En cours', 'ui.admin.dashboard.stopped' => 'Arrêté', 'ui.admin.dashboard.not_configured' => 'Non configuré', 'ui.admin.dashboard.pid' => 'PID', 'ui.admin.dashboard.db_size' => 'Taille de la base de données', 'ui.admin.dashboard.db_stats_link' => 'Voir les statistiques', // Admin database statistics page 'ui.admin.db_stats.page_title' => 'Statistiques de la base de données', 'ui.admin.db_stats.heading' => 'Statistiques de la base de données', 'ui.admin.db_stats.tab.size_growth' => 'Taille & Croissance', 'ui.admin.db_stats.tab.activity' => 'Activité', 'ui.admin.db_stats.tab.query_performance' => 'Performance des requêtes', 'ui.admin.db_stats.tab.replication' => 'Réplication', 'ui.admin.db_stats.tab.maintenance' => 'Maintenance', 'ui.admin.db_stats.tab.index_health' => 'Santé des index', 'ui.admin.db_stats.db_total_size' => 'Taille totale de la base de données', 'ui.admin.db_stats.table_sizes' => 'Tailles des tables (top 20)', 'ui.admin.db_stats.index_sizes' => 'Tailles des index (top 20)', 'ui.admin.db_stats.bloat' => 'Estimations de bloat (tuples morts)', 'ui.admin.db_stats.no_bloat' => 'Aucun tuple mort significatif détecté.', 'ui.admin.db_stats.connections' => 'Connexions actives', 'ui.admin.db_stats.used' => 'utilisé', 'ui.admin.db_stats.cache_hit_ratio' => 'Taux de succès du cache', 'ui.admin.db_stats.cache_hit_warning' => 'En dessous des 99% recommandés', 'ui.admin.db_stats.transactions' => 'Transactions', 'ui.admin.db_stats.committed' => 'validées', 'ui.admin.db_stats.rolled_back' => 'annulées', 'ui.admin.db_stats.tuples' => 'Activité des tuples', 'ui.admin.db_stats.inserted' => 'Insérés', 'ui.admin.db_stats.updated' => 'Mis à jour', 'ui.admin.db_stats.deleted' => 'Supprimés', 'ui.admin.db_stats.connection_states' => 'États des connexions', 'ui.admin.db_stats.pg_stat_statements_unavailable' => 'L\'extension pg_stat_statements n\'est pas installée. Installez-la pour activer l\'analyse des requêtes lentes et fréquentes.', 'ui.admin.db_stats.lock_waits' => 'Attentes de verrou', 'ui.admin.db_stats.deadlocks' => 'Deadlocks (cumulatif)', 'ui.admin.db_stats.long_running' => 'Requêtes longues (>5s)', 'ui.admin.db_stats.slow_queries' => 'Requêtes les plus lentes (par temps moyen)', 'ui.admin.db_stats.frequent_queries' => 'Requêtes les plus fréquentes', 'ui.admin.db_stats.no_replication' => 'Aucune réplication n\'est configurée sur ce serveur.', 'ui.admin.db_stats.replication_senders' => 'Émetteurs de réplication', 'ui.admin.db_stats.wal_receiver' => 'Récepteur WAL', 'ui.admin.db_stats.vacuum_needed' => '{count} table(s) pourraient nécessiter un VACUUM (>10k tuples morts ou >5% morts).', 'ui.admin.db_stats.autovacuum_active' => 'Workers autovacuum (actifs)', 'ui.admin.db_stats.maintenance_health' => 'État Vacuum / Analyze', 'ui.admin.db_stats.never' => 'Jamais', 'ui.admin.db_stats.unused_indexes' => 'Index inutilisés', 'ui.admin.db_stats.no_unused_indexes' => 'Aucun index inutilisé trouvé.', 'ui.admin.db_stats.duplicate_indexes' => 'Index potentiellement redondants', 'ui.admin.db_stats.scan_ratios' => 'Ratio de scan par index vs séquentiel', 'ui.admin.db_stats.no_data' => 'Aucune donnée disponible.', 'ui.admin.db_stats.col.table' => 'Table', 'ui.admin.db_stats.col.index' => 'Index', 'ui.admin.db_stats.col.total_size' => 'Total', 'ui.admin.db_stats.col.table_size' => 'Table', 'ui.admin.db_stats.col.index_size' => 'Index', 'ui.admin.db_stats.col.size' => 'Taille', 'ui.admin.db_stats.col.dead_tuples' => 'Tuples morts', 'ui.admin.db_stats.col.dead_pct' => 'Morts %', 'ui.admin.db_stats.col.state' => 'État', 'ui.admin.db_stats.col.count' => 'Nombre', 'ui.admin.db_stats.col.pid' => 'PID', 'ui.admin.db_stats.col.user' => 'Utilisateur', 'ui.admin.db_stats.col.duration' => 'Durée', 'ui.admin.db_stats.col.query' => 'Requête', 'ui.admin.db_stats.col.mean_ms' => 'Moyenne (ms)', 'ui.admin.db_stats.col.total_ms' => 'Total (ms)', 'ui.admin.db_stats.col.calls' => 'Appels', 'ui.admin.db_stats.col.client' => 'Client', 'ui.admin.db_stats.col.lag_bytes' => 'Décalage (octets)', 'ui.admin.db_stats.col.status' => 'Statut', 'ui.admin.db_stats.col.sender' => 'Émetteur', 'ui.admin.db_stats.col.last_vacuum' => 'Dernier vacuum', 'ui.admin.db_stats.col.last_analyze' => 'Dernier analyze', 'ui.admin.db_stats.col.seq_scans' => 'Scans séq.', 'ui.admin.db_stats.col.idx_scans' => 'Scans idx.', 'ui.admin.db_stats.col.idx_pct' => 'Idx %', 'ui.admin.db_stats.tab.i18n_catalogs' => 'Catalogues i18n', 'ui.admin.db_stats.i18n.keys' => 'clés', 'ui.admin.db_stats.i18n.memory' => 'mémoire', 'ui.admin.db_stats.i18n.detail' => 'Détail des catalogues', 'ui.admin.db_stats.i18n.total' => 'Total', 'ui.admin.db_stats.i18n.col.locale' => 'Langue', 'ui.admin.db_stats.i18n.col.file' => 'Fichier', 'ui.admin.db_stats.i18n.col.keys' => 'Clés', 'ui.admin.db_stats.i18n.col.file_size' => 'Taille', 'ui.admin.db_stats.i18n.col.memory' => 'Mémoire', 'ui.admin.users.load_failed' => 'Erreur lors du chargement des utilisateurs', 'ui.admin.users.load_details_failed' => 'Erreur lors du chargement des détails de l\'utilisateur', 'ui.admin.users.updated_success' => 'Utilisateur mis à jour avec succès', 'ui.admin.users.created_success' => 'Utilisateur créé avec succès', 'ui.admin.users.save_failed' => 'Erreur lors de l\'enregistrement de l\'utilisateur', 'ui.admin.users.delete_confirm' => 'Êtes-vous sûr de vouloir supprimer cet utilisateur ? Cette action est irréversible.', 'ui.admin.users.deleted_success' => 'Utilisateur supprimé avec succès', 'ui.admin.users.delete_failed' => 'Erreur lors de la suppression de l\'utilisateur', 'ui.admin.users.page_title' => 'Gestion des utilisateurs', 'ui.admin.users.heading' => 'Gestion des utilisateurs', 'ui.admin.users.add_new_user' => 'Ajouter un nouvel utilisateur', 'ui.admin.users.search_users_placeholder' => 'Rechercher des utilisateurs...', 'ui.admin.users.active' => 'Actif', 'ui.admin.users.inactive' => 'Inactif', 'ui.admin.users.admins' => 'Admins', 'ui.admin.users.username' => 'Nom d\'utilisateur', 'ui.admin.users.real_name' => 'Nom réel', 'ui.admin.users.fidonet_address' => 'Adresse Fidonet', 'ui.admin.users.status' => 'Statut', 'ui.admin.users.admin' => 'Admin', 'ui.admin.users.created' => 'Créé', 'ui.admin.users.actions' => 'Actions', 'ui.admin.users.password_help' => 'Laisser vide lors de la modification pour conserver le mot de passe actuel', 'ui.admin.users.fidonet_address_placeholder' => '1:123/456.789', 'ui.admin.users.active_user' => 'Utilisateur actif', 'ui.admin.users.administrator' => 'Administrateur', 'ui.admin.users.save_user' => 'Enregistrer l\'utilisateur', 'ui.admin.users.user_details' => 'Détails de l\'utilisateur', 'ui.admin.users.view_details' => 'Voir les détails', 'ui.admin.users.view_profile' => 'Voir le profil', 'ui.admin.users.pagination_aria' => 'Pagination des utilisateurs', 'ui.admin.users.previous' => 'Précédent', 'ui.admin.users.next' => 'Suivant', 'ui.admin.users.edit_user' => 'Modifier l\'utilisateur', 'ui.admin.users.user_information' => 'Informations de l\'utilisateur', 'ui.admin.users.last_login' => 'Dernière connexion', 'ui.admin.users.statistics' => 'Statistiques', 'ui.admin.users.credit_balance' => 'Solde de crédits', 'ui.admin.users.netmail_received' => 'Netmail reçu', 'ui.admin.users.netmail_sent' => 'Netmail envoyé', 'ui.admin.users.echomail_posted' => 'Echomail publié', 'ui.admin.users.active_sessions' => 'Sessions actives', 'ui.admin.users.grant_credits_heading' => 'Ajouter des crédits', 'ui.admin.users.grant_credits_amount' => 'Montant', 'ui.admin.users.grant_credits_note' => 'Raison / Note', 'ui.admin.users.grant_credits_note_placeholder' => 'Ajustement manuel, prix de concours, problème de support, etc.', 'ui.admin.users.grant_credits_action' => 'Ajouter des crédits', 'ui.admin.users.grant_credits_help' => 'Crée une transaction d\'ajustement administrateur avec votre note dans le grand livre.', 'ui.admin.users.grant_credits_amount_invalid' => 'Entrez un montant de crédits positif.', 'ui.admin.users.grant_credits_note_missing' => 'Entrez une note pour cette attribution de crédits.', 'ui.admin.users.credit_grant_success' => 'Crédits ajoutés avec succès', 'ui.admin.users.credit_grant_failed' => 'Impossible d\'ajouter des crédits', 'ui.admin.users.echomail_moderation_forced' => 'Forcer la modération de l\'echomail', 'ui.admin.users.echomail_moderation_forced_help' => 'Retenir tous les messages echomail en réseau de cet utilisateur pour examen, quels que soient les paramètres de modération globaux.', 'ui.admin.chat_rooms.load_failed' => 'Erreur lors du chargement des salons de discussion', 'ui.admin.chat_rooms.not_found' => 'Salon de discussion introuvable', 'ui.admin.chat_rooms.load_single_failed' => 'Erreur lors du chargement du salon de discussion', 'ui.admin.chat_rooms.updated_success' => 'Salon mis à jour avec succès', 'ui.admin.chat_rooms.created_success' => 'Salon créé avec succès', 'ui.admin.chat_rooms.save_failed' => 'Erreur lors de l\'enregistrement du salon', 'ui.admin.chat_rooms.delete_confirm' => 'Supprimer ce salon de discussion ? Cette action est irréversible.', 'ui.admin.chat_rooms.deleted_success' => 'Salon supprimé avec succès', 'ui.admin.chat_rooms.delete_failed' => 'Erreur lors de la suppression du salon', 'ui.admin.chat_rooms.page_title' => 'Salons de discussion', 'ui.admin.chat_rooms.heading' => 'Salons de discussion', 'ui.admin.chat_rooms.add_room' => 'Ajouter un salon', 'ui.admin.chat_rooms.status' => 'Statut', 'ui.admin.chat_rooms.created' => 'Créé', 'ui.admin.chat_rooms.actions' => 'Actions', 'ui.admin.chat_rooms.add_chat_room' => 'Ajouter un salon de discussion', 'ui.admin.chat_rooms.edit_chat_room' => 'Modifier le salon de discussion', 'ui.admin.chat_rooms.active_room' => 'Salon actif', 'ui.admin.chat_rooms.save_room' => 'Enregistrer le salon', 'ui.admin.chat_rooms.no_description' => '-', 'ui.admin.chat_rooms.active' => 'Actif', 'ui.admin.chat_rooms.inactive' => 'Inactif', 'ui.admin.chat_rooms.bridge' => 'Bridge', 'ui.admin.chat_rooms.bridge_enabled' => 'Enabled', 'ui.admin.chat_rooms.bridge_disabled' => 'Disabled', 'ui.admin.chat_rooms.matterbridge_enabled' => 'Bridge this room through Matterbridge', 'ui.admin.chat_rooms.matterbridge_gateway' => 'Matterbridge gateway', 'ui.admin.chat_rooms.matterbridge_gateway_help' => 'Matches the Matterbridge API gateway name used by this local room.', 'ui.admin.chat_rooms.matterbridge_username_template' => 'Remote username template', 'ui.admin.chat_rooms.matterbridge_username_template_help' => 'Optional. Use {username} and {room_name}. Leave blank to use the global suffix.', // Admin AI Bots 'ui.admin.ai_bots.page_title' => 'Bots IA', 'ui.admin.ai_bots.heading' => 'Bots IA', 'ui.admin.ai_bots.add_bot' => 'Ajouter un bot', 'ui.admin.ai_bots.add_bot_title' => 'Ajouter un bot IA', 'ui.admin.ai_bots.edit_bot_title' => 'Modifier le bot IA', 'ui.admin.ai_bots.username' => 'Nom d\'utilisateur', 'ui.admin.ai_bots.username_note' => 'Alphanumerique et soulignement uniquement. Ne peut pas etre modifie apres creation.', 'ui.admin.ai_bots.weekly_spend' => 'Depenses hebdomadaires', 'ui.admin.ai_bots.weekly_budget' => 'Budget hebdomadaire', 'ui.admin.ai_bots.status' => 'Statut', 'ui.admin.ai_bots.actions' => 'Actions', 'ui.admin.ai_bots.active' => 'Actif', 'ui.admin.ai_bots.inactive' => 'Inactif', 'ui.admin.ai_bots.system_prompt' => 'Invite systeme', 'ui.admin.ai_bots.system_prompt_note' => 'Envoyee comme message systeme au fournisseur d\'IA. Definit la personnalite du bot.', 'ui.admin.ai_bots.provider' => 'Fournisseur IA', 'ui.admin.ai_bots.provider_default' => 'Par defaut du site', 'ui.admin.ai_bots.model' => 'Modele', 'ui.admin.ai_bots.model_placeholder' => 'Par defaut du fournisseur', 'ui.admin.ai_bots.context_messages' => 'Contexte (msgs)', 'ui.admin.ai_bots.activities' => 'Activites', 'ui.admin.ai_bots.activity_local_chat' => 'Chat local', 'ui.admin.ai_bots.chat_respond_dm' => 'Repondre aux messages directs', 'ui.admin.ai_bots.chat_respond_rooms' => 'Repondre aux mentions @username dans les salons', 'ui.admin.ai_bots.save_bot' => 'Enregistrer le bot', 'ui.admin.ai_bots.no_bots' => 'Aucun bot configure.', 'ui.admin.ai_bots.load_failed' => 'Erreur lors du chargement des bots', 'ui.admin.ai_bots.load_single_failed' => 'Erreur lors du chargement du bot', 'ui.admin.ai_bots.created_success' => 'Bot cree avec succes', 'ui.admin.ai_bots.updated_success' => 'Bot mis a jour avec succes', 'ui.admin.ai_bots.deleted_success' => 'Bot supprime avec succes', 'ui.admin.ai_bots.save_failed' => 'Erreur lors de la sauvegarde du bot', 'ui.admin.ai_bots.delete_failed' => 'Erreur lors de la suppression du bot', 'ui.admin.ai_bots.delete_confirm' => 'Supprimer ce bot et son utilisateur systeme ? Cette action est irreversible.', 'ui.admin.ai_bots.middleware_pipeline' => 'Pipeline de middleware', 'ui.admin.ai_bots.middleware_add' => 'Ajouter une etape', 'ui.admin.ai_bots.middleware_class' => 'Classe', 'ui.admin.ai_bots.middleware_config' => 'Configuration (JSON)', 'ui.admin.ai_bots.middleware_custom_class' => 'Classe personnalisee (nom complet)', 'ui.admin.ai_bots.middleware_pipeline_note' => 'Les etapes s\'executent dans l\'ordre avant l\'appel a l\'IA. Une etape peut court-circuiter avec une reponse statique ou supprimer la reponse.', 'ui.admin.binkp_sessions.page_title' => 'Sessions Binkp - Admin', 'ui.admin.binkp_sessions.heading' => 'Journal des sessions Binkp', 'ui.admin.binkp_sessions.back_to_dashboard' => 'Retour au tableau de bord', 'ui.admin.binkp_sessions.total_24h' => 'Total (24h)', 'ui.admin.binkp_sessions.secure' => 'Sécurisé', 'ui.admin.binkp_sessions.insecure' => 'Non sécurisé', 'ui.admin.binkp_sessions.crash_out' => 'Crash sortant', 'ui.admin.binkp_sessions.successful' => 'Réussie', 'ui.admin.binkp_sessions.failed' => 'Échouée', 'ui.admin.binkp_sessions.filter_sessions' => 'Filtrer les sessions', 'ui.admin.binkp_sessions.session_type' => 'Type de session', 'ui.admin.binkp_sessions.crash_outbound' => 'Crash sortant', 'ui.admin.binkp_sessions.success' => 'Succès', 'ui.admin.binkp_sessions.rejected' => 'Rejetée', 'ui.admin.binkp_sessions.remote_address' => 'Adresse distante', 'ui.admin.binkp_sessions.remote_address_placeholder' => '1:123/456 ou 203.0.113.7', 'ui.admin.binkp_sessions.apply_filter' => 'Appliquer le filtre', 'ui.admin.binkp_sessions.recent_sessions' => 'Sessions récentes', 'ui.admin.binkp_sessions.time' => 'Heure', 'ui.admin.binkp_sessions.ip' => 'IP', 'ui.admin.binkp_sessions.pid' => 'PID', 'ui.admin.binkp_sessions.type' => 'Type', 'ui.admin.binkp_sessions.direction' => 'Direction', 'ui.admin.binkp_sessions.msgs_in' => 'Msgs entrants', 'ui.admin.binkp_sessions.msgs_out' => 'Msgs sortants', 'ui.admin.binkp_sessions.files_in' => 'Fichiers entrants', 'ui.admin.binkp_sessions.files_out' => 'Fichiers sortants', 'ui.admin.binkp_sessions.duration' => 'Durée', 'ui.admin.binkp_sessions.load_stats_failed' => 'Erreur lors du chargement des statistiques', 'ui.admin.binkp_sessions.no_sessions_found' => 'Aucune session trouvée', 'ui.admin.binkp_sessions.in' => 'Entrant', 'ui.admin.binkp_sessions.out' => 'Sortant', 'ui.admin.binkp_sessions.load_sessions_failed' => 'Erreur lors du chargement des sessions', 'ui.admin.binkp_sessions.crash' => 'Crash', 'ui.admin.binkp_sessions.active' => 'Actif', 'ui.admin.binkp_sessions.log_modal_title' => 'Journal de session', 'ui.admin.binkp_sessions.loading_log' => 'Chargement du journal...', 'ui.admin.binkp_sessions.log_file' => 'Fichier journal', 'ui.admin.binkp_sessions.log_unavailable' => 'Aucun PID n\'a été enregistré pour cette session.', 'ui.admin.binkp_sessions.no_log_lines' => 'Aucune ligne de journal trouvée pour cette session.', 'ui.admin.binkp_sessions.log_load_failed' => 'Échec du chargement du journal de session', 'ui.admin.binkp_sessions.rows_per_page' => 'Lignes par page', 'ui.admin.binkp_sessions.pagination_aria' => 'Pagination des sessions Binkp', 'ui.admin.binkp_sessions.page_status' => 'Affichage {start}-{end} sur {total}', 'ui.admin.binkp_sessions.page_indicator' => 'Page {page} sur {pages}', 'ui.admin.binkp_sessions.page_status_empty' => '0 session', 'ui.admin.binkp_sessions.chart_period_label' => 'Periode du graphique', 'ui.admin.binkp_sessions.chart_type_label' => 'Rapport', 'ui.admin.binkp_sessions.period_24h' => '24 heures', 'ui.admin.binkp_sessions.period_7d' => '7 jours', 'ui.admin.binkp_sessions.period_1m' => '1 mois', 'ui.admin.binkp_sessions.total_period' => 'Total ({period})', 'ui.admin.binkp_sessions.traffic_chart' => 'Flux de fichiers', 'ui.admin.binkp_sessions.traffic_chart_empty' => 'Aucun trafic de fichiers enregistre sur la periode selectionnee.', 'ui.admin.binkp_sessions.traffic_chart_aria' => 'Trafic des fichiers BinkP sur la periode selectionnee', 'ui.admin.binkp_sessions.uplink_connections_chart' => 'Connexions des uplinks', 'ui.admin.binkp_sessions.uplink_connections_chart_empty' => 'Aucune connexion d\'uplink enregistree sur la periode selectionnee.', 'ui.admin.binkp_sessions.uplink_connections_chart_aria' => 'Connexions BinkP des uplinks sur la periode selectionnee', 'ui.admin.binkp_sessions.connections' => 'Connexions', 'ui.admin.polls.load_failed' => 'Erreur lors du chargement des sondages', 'ui.admin.polls.not_found' => 'Sondage introuvable', 'ui.admin.polls.load_single_failed' => 'Erreur lors du chargement du sondage', 'ui.admin.polls.min_options_required' => 'Au moins deux options sont requises.', 'ui.admin.polls.question_required' => 'La question est obligatoire.', 'ui.admin.polls.provide_min_options' => 'Veuillez fournir au moins deux options.', 'ui.admin.polls.updated_success' => 'Sondage mis à jour avec succès', 'ui.admin.polls.created_success' => 'Sondage créé avec succès', 'ui.admin.polls.save_failed' => 'Erreur lors de l\'enregistrement du sondage', 'ui.admin.polls.delete_confirm' => 'Supprimer ce sondage ? Cette action est irréversible.', 'ui.admin.polls.deleted_success' => 'Sondage supprimé avec succès', 'ui.admin.polls.delete_failed' => 'Erreur lors de la suppression du sondage', 'ui.admin.polls.page_title' => 'Sondages', 'ui.admin.polls.heading' => 'Sondages', 'ui.admin.polls.add_poll' => 'Ajouter un sondage', 'ui.admin.polls.edit_poll' => 'Modifier le sondage', 'ui.admin.polls.question' => 'Question', 'ui.admin.polls.status' => 'Statut', 'ui.admin.polls.votes' => 'Votes', 'ui.admin.polls.created_by' => 'Créé par', 'ui.admin.polls.created' => 'Créé', 'ui.admin.polls.actions' => 'Actions', 'ui.admin.polls.options' => 'Options', 'ui.admin.polls.add_option' => 'Ajouter une option', 'ui.admin.polls.active_poll' => 'Sondage actif', 'ui.admin.polls.editing_options_resets_votes' => 'La modification des options réinitialisera les votes de ce sondage.', 'ui.admin.polls.save_poll' => 'Enregistrer le sondage', 'ui.admin.polls.active' => 'Actif', 'ui.admin.polls.inactive' => 'Inactif', 'ui.admin.polls.option_text_placeholder' => 'Texte de l\'option', 'ui.admin.template_editor.load_templates_failed' => 'Échec du chargement des modèles.', 'ui.admin.template_editor.no_templates_found' => 'Aucun modèle trouvé.', 'ui.admin.template_editor.unsaved_changes_confirm' => 'Vous avez des modifications non enregistrées. Continuer et les ignorer ?', 'ui.admin.template_editor.load_template_failed' => 'Échec du chargement du modèle', 'ui.admin.template_editor.enter_template_path' => 'Saisissez un chemin de modèle (ex. : systemnews.twig).', 'ui.admin.template_editor.save_template_failed' => 'Échec de l\'enregistrement du modèle', 'ui.admin.template_editor.template_saved_success' => 'Modèle enregistré avec succès.', 'ui.admin.template_editor.delete_confirm' => 'Supprimer {template} ? Cette action est irréversible.', 'ui.admin.template_editor.delete_template_failed' => 'Échec de la suppression du modèle', 'ui.admin.template_editor.no_template_selected' => 'Aucun modèle sélectionné', 'ui.admin.template_editor.template_deleted_success' => 'Modèle supprimé.', 'ui.admin.template_editor.install_template_failed' => 'Échec de l\'installation du modèle', 'ui.admin.template_editor.template_installed_success' => 'Modèle installé depuis l\'exemple.', 'ui.admin.template_editor.page_title_prefix' => 'Admin : Éditeur de modèles', 'ui.admin.template_editor.heading' => 'Éditeur de modèles', 'ui.admin.template_editor.restricted_edits_prefix' => 'Les modifications sont limitées à', 'ui.admin.template_editor.custom_templates' => 'Modèles personnalisés', 'ui.admin.template_editor.search_templates_placeholder' => 'Rechercher des modèles...', 'ui.admin.template_editor.loading_templates' => 'Chargement des modèles...', 'ui.admin.template_editor.new_template' => 'Nouveau modèle', 'ui.admin.template_editor.path_relative_custom' => 'Chemin (relatif à templates/custom)', 'ui.admin.template_editor.new_template_path_placeholder' => 'systemnews.twig', 'ui.admin.template_editor.create' => 'Créer', 'ui.admin.template_editor.editor' => 'Éditeur', 'ui.admin.template_editor.install' => 'Installer', 'ui.admin.template_editor.changes_apply_immediately' => 'Les modifications s\'appliquent immédiatement après l\'enregistrement. Assurez-vous que votre syntaxe Twig est valide.', 'ui.admin.i18n_overrides.page_title' => 'Admin : Substitutions de langue', 'ui.admin.i18n_overrides.heading' => 'Substitutions de langue', 'ui.admin.i18n_overrides.description' => 'Personnalisez des phrases individuelles sans modifier les fichiers de traduction de base. Les substitutions sont appliquées par-dessus le catalogue de base pour la locale sélectionnée.', 'ui.admin.i18n_overrides.locale_label' => 'Locale', 'ui.admin.i18n_overrides.catalog_label' => 'Catalogue', 'ui.admin.i18n_overrides.load_btn' => 'Charger', 'ui.admin.i18n_overrides.search_placeholder' => 'Filtrer les clés...', 'ui.admin.i18n_overrides.show_overrides_only' => 'Afficher uniquement les substitutions', 'ui.admin.i18n_overrides.col_key' => 'Clé', 'ui.admin.i18n_overrides.col_base' => 'Valeur de base', 'ui.admin.i18n_overrides.col_override' => 'Votre substitution', 'ui.admin.i18n_overrides.save_btn' => 'Enregistrer les substitutions', 'ui.admin.i18n_overrides.clear_btn' => 'Effacer', 'ui.admin.i18n_overrides.overridden_badge' => 'Substitué', 'ui.admin.i18n_overrides.no_keys' => 'Aucune clé trouvée.', 'ui.admin.i18n_overrides.loading' => 'Chargement...', 'ui.admin.i18n_overrides.saved' => 'Substitutions enregistrées.', 'ui.admin.i18n_overrides.save_failed' => 'Échec de l\'enregistrement des substitutions.', 'ui.admin.i18n_overrides.load_failed' => 'Échec du chargement du catalogue.', 'ui.admin.i18n_overrides.select_locale_catalog' => 'Sélectionnez une locale et un catalogue, puis cliquez sur Charger.', 'ui.admin.i18n_overrides.translate_btn' => 'Traduire depuis l\'anglais', 'ui.admin.i18n_overrides.translate_failed' => 'La traduction a échoué.', 'ui.admin.upgrade_notes.none_for_version' => 'Aucune note de mise à jour trouvée pour la version {version}.', 'ui.admin.insecure_nodes.error_prefix' => 'Erreur : ', 'ui.admin.insecure_nodes.add_failed' => 'Échec de l\'ajout du n?ud', 'ui.admin.insecure_nodes.added_success' => 'N?ud ajouté avec succès', 'ui.admin.insecure_nodes.update_failed' => 'Échec de la mise à jour du n?ud', 'ui.admin.insecure_nodes.updated_success' => 'N?ud mis à jour avec succès', 'ui.admin.insecure_nodes.delete_confirm' => 'Supprimer {address} de la liste d\'autorisation ?', 'ui.admin.insecure_nodes.delete_failed' => 'Échec de la suppression du n?ud', 'ui.admin.insecure_nodes.deleted_success' => 'N?ud supprimé avec succès', 'ui.admin.insecure_nodes.page_title' => 'N?uds non sécurisés - Admin', 'ui.admin.insecure_nodes.heading' => 'Liste d\'autorisation des n?uds non sécurisés', 'ui.admin.insecure_nodes.add_node' => 'Ajouter un n?ud', 'ui.admin.insecure_nodes.back_to_dashboard' => 'Retour au tableau de bord', 'ui.admin.insecure_nodes.about_insecure_sessions' => 'À propos des sessions non sécurisées :', 'ui.admin.insecure_nodes.info_text_1' => 'Les n?uds de cette liste d\'autorisation peuvent se connecter via binkp sans authentification par mot de passe.', 'ui.admin.insecure_nodes.info_text_2' => 'À utiliser avec précaution - les sessions non sécurisées sont généralement en réception uniquement (elles peuvent vous livrer du courrier, mais ne peuvent pas en récupérer).', 'ui.admin.insecure_nodes.allowed_nodes' => 'N?uds autorisés', 'ui.admin.insecure_nodes.address' => 'Adresse', 'ui.admin.insecure_nodes.receive' => 'Recevoir', 'ui.admin.insecure_nodes.send' => 'Envoyer', 'ui.admin.insecure_nodes.max_msgs' => 'Msgs max', 'ui.admin.insecure_nodes.last_session' => 'Dernière session', 'ui.admin.insecure_nodes.active' => 'Actif', 'ui.admin.insecure_nodes.inactive' => 'Inactif', 'ui.admin.insecure_nodes.actions' => 'Actions', 'ui.admin.insecure_nodes.add_node_to_allowlist' => 'Ajouter un n?ud à la liste autorisée', 'ui.admin.insecure_nodes.ftn_address' => 'Adresse FTN', 'ui.admin.insecure_nodes.address_placeholder' => '1:123/456', 'ui.admin.insecure_nodes.description_placeholder' => 'Description du n?ud', 'ui.admin.insecure_nodes.ftn_address_help' => 'L\'adresse FidoNet du n?ud (ex. : 1:123/456)', 'ui.admin.insecure_nodes.max_messages_per_session' => 'Nombre max de messages par session', 'ui.admin.insecure_nodes.allow_receive' => 'Autoriser la réception', 'ui.admin.insecure_nodes.allow_receive_help' => 'Autoriser ce n?ud à nous délivrer du courrier', 'ui.admin.insecure_nodes.allow_send_pickup' => 'Autoriser l\'envoi (récupération)', 'ui.admin.insecure_nodes.allow_send_help' => 'Autoriser ce n?ud à récupérer du courrier chez nous (à utiliser avec précaution)', 'ui.admin.insecure_nodes.edit_node' => 'Modifier le n?ud', 'ui.admin.insecure_nodes.save_changes' => 'Enregistrer les modifications', 'ui.admin.insecure_nodes.no_nodes' => 'Aucun n?ud dans la liste autorisée', 'ui.admin.insecure_nodes.load_nodes_failed' => 'Erreur lors du chargement des n?uds', 'ui.admin.crashmail_queue.attempt_delivery_confirm' => 'Tenter la livraison du crashmail en attente maintenant ?', 'ui.admin.crashmail_queue.delivery_attempt_started' => 'Tentative de livraison démarrée.', 'ui.admin.crashmail_queue.delivery_attempt_failed_prefix' => 'Échec de la tentative de livraison : ', 'ui.admin.crashmail_queue.error_prefix' => 'Erreur : ', 'ui.admin.crashmail_queue.retry_confirm' => 'Réessayer cette livraison de crashmail ?', 'ui.admin.crashmail_queue.retry_success' => 'Nouvelle tentative de crashmail mise en file d\'attente.', 'ui.admin.crashmail_queue.retry_failed_prefix' => 'Échec de la nouvelle tentative : ', 'ui.admin.crashmail_queue.cancel_confirm' => 'Annuler ce crashmail ? Le message restera dans votre boîte d\'envoi mais ne sera pas livré en mode crash.', 'ui.admin.crashmail_queue.cancel_success' => 'Crashmail annulé.', 'ui.admin.crashmail_queue.cancel_failed_prefix' => 'Échec de l\'annulation : ', 'ui.admin.crashmail_queue.page_title' => 'File d\'attente Crashmail - Admin', 'ui.admin.crashmail_queue.heading' => 'File d\'attente Crashmail', 'ui.admin.crashmail_queue.attempt_delivery' => 'Tenter la livraison', 'ui.admin.crashmail_queue.back_to_dashboard' => 'Retour au tableau de bord', 'ui.admin.crashmail_queue.pending' => 'En attente', 'ui.admin.crashmail_queue.attempting' => 'En cours', 'ui.admin.crashmail_queue.sent_24h' => 'Envoyé (24h)', 'ui.admin.crashmail_queue.sent' => 'Envoyé', 'ui.admin.crashmail_queue.failed' => 'Échoué', 'ui.admin.crashmail_queue.filter_queue' => 'Filtrer la file d\'attente', 'ui.admin.crashmail_queue.status' => 'Statut', 'ui.admin.crashmail_queue.limit' => 'Limite', 'ui.admin.crashmail_queue.apply_filter' => 'Appliquer le filtre', 'ui.admin.crashmail_queue.queue_items' => 'Éléments en file d\'attente', 'ui.admin.crashmail_queue.to' => 'À', 'ui.admin.crashmail_queue.subject' => 'Objet', 'ui.admin.crashmail_queue.destination' => 'Destination', 'ui.admin.crashmail_queue.attempts' => 'Tentatives', 'ui.admin.crashmail_queue.next_attempt' => 'Prochaine tentative', 'ui.admin.crashmail_queue.actions' => 'Actions', 'ui.admin.crashmail_queue.no_items' => 'Aucun élément dans la file d\'attente', 'ui.admin.crashmail_queue.no_subject' => '(sans objet)', 'ui.admin.crashmail_queue.unresolved' => 'Non résolu', 'ui.admin.crashmail_queue.load_stats_failed' => 'Erreur lors du chargement des statistiques', 'ui.admin.crashmail_queue.load_queue_failed' => 'Erreur lors du chargement de la file d\'attente', 'ui.admin.filearea_rules.load_failed' => 'Échec du chargement des règles', 'ui.admin.filearea_rules.active' => 'Actif', 'ui.admin.filearea_rules.missing_config' => 'Configuration manquante', 'ui.admin.filearea_rules.error' => 'Erreur', 'ui.admin.filearea_rules.invalid_json' => 'Le JSON des règles est invalide. Veuillez corriger les erreurs avant d\'enregistrer.', 'ui.admin.filearea_rules.save_failed' => 'Échec de l\'enregistrement des règles', 'ui.admin.filearea_rules.saved_success' => 'Règles enregistrées avec succès.', 'ui.admin.filearea_rules.reset_confirm' => 'Remplacer les règles actuelles par le fichier d\'exemple ?', 'ui.admin.filearea_rules.loaded_example' => 'Règles d\'exemple chargées. Enregistrez pour les appliquer.', 'ui.admin.filearea_rules.page_title_prefix' => 'Règles des zones de fichiers', 'ui.admin.filearea_rules.heading' => 'Règles des zones de fichiers', 'ui.admin.filearea_rules.config_filename' => 'filearea_rules.json', 'ui.admin.filearea_rules.reset_to_example' => 'Réinitialiser avec l\'exemple', 'ui.admin.filearea_rules.save_rules' => 'Enregistrer les règles', 'ui.admin.filearea_rules.editing_requires_valid_json' => 'La modification nécessite un JSON valide.', 'ui.admin.filearea_rules.macros' => 'Macros', 'ui.admin.filearea_rules.macro_basedir' => 'Répertoire de base de l\'application', 'ui.admin.filearea_rules.macro_filepath' => 'Chemin complet du fichier', 'ui.admin.filearea_rules.macro_filename' => 'Nom du fichier uniquement', 'ui.admin.filearea_rules.macro_filesize' => 'Taille du fichier en octets', 'ui.admin.filearea_rules.macro_domain' => 'Domaine de la zone de fichiers', 'ui.admin.filearea_rules.macro_areatag' => 'Tag de la zone de fichiers', 'ui.admin.filearea_rules.macro_uploader' => 'Nom/adresse de l\'expéditeur', 'ui.admin.filearea_rules.macro_ticfile' => 'Chemin TIC (si disponible)', 'ui.admin.filearea_rules.macro_tempdir' => 'Répertoire temporaire', 'ui.admin.filearea_rules.tips' => 'Conseils', 'ui.admin.filearea_rules.tip_1' => 'Les règles s\'exécutent dans l\'ordre : les règles globales d\'abord, puis les règles spécifiques à la zone.', 'ui.admin.filearea_rules.tip_2' => 'Les règles de zone peuvent être indexées par TAG ou TAG@DOMAIN (la spécificité du domaine est prioritaire).', 'ui.admin.filearea_rules.tip_3' => 'Utilisez success_action et fail_action avec +stop pour arrêter le traitement.', 'ui.admin.filearea_rules.tab_gui' => 'Éditeur visuel', 'ui.admin.filearea_rules.tab_json' => 'Éditeur JSON', 'ui.admin.filearea_rules.global_rules_section' => 'Règles globales', 'ui.admin.filearea_rules.area_rules_section' => 'Règles par zone', 'ui.admin.filearea_rules.add_rule' => 'Ajouter une règle', 'ui.admin.filearea_rules.add_area' => 'Ajouter une zone', 'ui.admin.filearea_rules.add_rule_title' => 'Ajouter une règle', 'ui.admin.filearea_rules.edit_rule_title' => 'Modifier la règle', 'ui.admin.filearea_rules.add_area_title' => 'Ajouter une étiquette de zone de fichiers', 'ui.admin.filearea_rules.no_rules' => 'Aucune règle. Cliquez sur Ajouter une règle pour en créer une.', 'ui.admin.filearea_rules.no_areas' => 'Aucune règle d?étiquette de zone de fichiers. Cliquez sur Ajouter une étiquette de zone de fichiers pour en créer une.', 'ui.admin.filearea_rules.col_enabled' => 'Actif', 'ui.admin.filearea_rules.col_name' => 'Nom', 'ui.admin.filearea_rules.col_pattern' => 'Motif', 'ui.admin.filearea_rules.col_domain' => 'Domaine', 'ui.admin.filearea_rules.col_success' => 'En cas de succès', 'ui.admin.filearea_rules.col_fail' => 'En cas d\'échec', 'ui.admin.filearea_rules.field_name' => 'Nom de la règle', 'ui.admin.filearea_rules.field_pattern' => 'Motif de nom de fichier (regex)', 'ui.admin.filearea_rules.field_pattern_hint' => 'Regex style PHP, ex. /^NODELIST\\.\\d+$/i', 'ui.admin.filearea_rules.field_script' => 'Commande de script', 'ui.admin.filearea_rules.field_timeout' => 'Délai d\'expiration (secondes)', 'ui.admin.filearea_rules.field_enabled' => 'Actif', 'ui.admin.filearea_rules.field_success_action' => 'En cas de succès', 'ui.admin.filearea_rules.field_fail_action' => 'En cas d\'échec', 'ui.admin.filearea_rules.field_domain' => 'Filtre de domaine', 'ui.admin.filearea_rules.field_domain_hint' => 'Optionnel. Restreindre la règle à un domaine spécifique (ex. fidonet).', 'ui.admin.filearea_rules.action_move' => 'déplacer vers la zone :', 'ui.admin.filearea_rules.area_tag_label' => 'Étiquette de zone de fichiers', 'ui.admin.filearea_rules.area_tag_hint' => 'ex. NODELIST ou NODELIST@fidonet', 'ui.admin.filearea_rules.delete_area_confirm' => 'Supprimer cette étiquette de zone de fichiers et toutes ses règles ?', 'ui.admin.filearea_rules.clone_rule' => 'Cloner la règle', 'ui.admin.filearea_rules.clone_rule_confirm' => 'Cloner la règle ?', 'ui.admin.filearea_rules.delete_rule_confirm' => 'Supprimer cette règle ?', 'ui.admin.filearea_rules.json_parse_error' => 'Erreur d\'analyse JSON ? corrigez la syntaxe avant de basculer vers l\'éditeur visuel.', 'ui.admin.filearea_rules.pattern_test_title' => 'Tester le motif', 'ui.admin.filearea_rules.pattern_test_placeholder' => 'Entrez un nom de fichier à tester...', 'ui.admin.filearea_rules.pattern_match' => 'correspond', 'ui.admin.filearea_rules.pattern_no_match' => 'ne correspond pas', 'ui.admin.filearea_rules.pattern_invalid' => 'regex invalide', 'ui.admin.filearea_rules.pattern_test_area_not_found' => 'Zone introuvable dans la base de données.', 'ui.admin.filearea_rules.pattern_test_no_files' => 'Aucun fichier dans cette zone.', 'ui.admin.filearea_rules.pattern_test_area_files' => 'Fichiers dans la zone :', 'ui.admin.dosdoors_config.load_config_failed' => 'Échec du chargement de la configuration', 'ui.admin.dosdoors_config.load_config_error_prefix' => 'Erreur lors du chargement de la configuration : ', 'ui.admin.dosdoors_config.load_doors_failed' => 'Échec du chargement des portes', 'ui.admin.dosdoors_config.load_doors_error_prefix' => 'Erreur lors du chargement des portes disponibles : ', 'ui.admin.dosdoors_config.invalid_json_toggle' => 'JSON invalide - impossible de basculer la porte', 'ui.admin.dosdoors_config.enabled_all_editor' => 'Toutes les portes activées dans l\'éditeur. Cliquez sur Enregistrer pour appliquer.', 'ui.admin.dosdoors_config.invalid_json_enable_all' => 'JSON invalide - impossible d\'activer toutes les portes', 'ui.admin.dosdoors_config.disabled_all_editor' => 'Toutes les portes désactivées dans l\'éditeur. Cliquez sur Enregistrer pour appliquer.', 'ui.admin.dosdoors_config.invalid_json_disable_all' => 'JSON invalide - impossible de désactiver toutes les portes', 'ui.admin.dosdoors_config.json_formatted' => 'JSON formaté avec succès', 'ui.admin.dosdoors_config.cannot_format_prefix' => 'Impossible de formater - JSON invalide : ', 'ui.admin.dosdoors_config.empty_config' => 'Configuration vide', 'ui.admin.dosdoors_config.valid_json' => 'JSON valide', 'ui.admin.dosdoors_config.invalid_json_prefix' => 'JSON invalide : ', 'ui.admin.dosdoors_config.save_failed' => 'Échec de l\'enregistrement', 'ui.admin.dosdoors_config.saved_success' => 'Configuration enregistrée avec succès !', 'ui.admin.dosdoors_config.save_error_prefix' => 'Erreur lors de l\'enregistrement de la configuration : ', 'ui.admin.dosdoors_config.cannot_save_invalid_json_prefix' => 'Impossible d\'enregistrer - JSON invalide : ', 'ui.admin.dosdoors_config.page_title' => 'Configuration des portes DOS', 'ui.admin.dosdoors_config.heading' => 'Configuration des portes DOS', 'ui.admin.dosdoors_config.info_text_1' => 'Les portes DOS sont des jeux BBS classiques qui s\'exécutent dans DOSBox. La configuration est stockée dans', 'ui.admin.dosdoors_config.info_text_2' => 'Les portes sont découvertes en analysant', 'ui.admin.dosdoors_config.info_text_3' => 'pour', 'ui.admin.dosdoors_config.info_text_4' => 'les manifestes.', 'ui.admin.dosdoors_config.installed_doors' => 'Portes installées', 'ui.admin.dosdoors_config.loading_doors' => 'Chargement des portes...', 'ui.admin.dosdoors_config.quick_actions' => 'Actions rapides', 'ui.admin.dosdoors_config.enable_all_doors' => 'Activer toutes les portes', 'ui.admin.dosdoors_config.disable_all_doors' => 'Désactiver toutes les portes', 'ui.admin.dosdoors_config.config_filename' => 'dosdoors.json', 'ui.admin.dosdoors_config.format' => 'Formater', 'ui.admin.dosdoors_config.loading_config' => 'Chargement de la configuration...', 'ui.admin.dosdoors_config.json_validation_before_save' => 'La validation JSON s\'effectue avant l\'enregistrement', 'ui.admin.dosdoors_config.configuration_options' => 'Options de configuration', 'ui.admin.dosdoors_config.option_enabled_help' => 'Indique si la porte est disponible pour les utilisateurs', 'ui.admin.dosdoors_config.option_credit_cost_help' => 'Crédits requis pour jouer (0 = gratuit)', 'ui.admin.dosdoors_config.option_max_time_help' => 'Durée maximale de jeu par session', 'ui.admin.dosdoors_config.option_cpu_cycles_help' => 'Vitesse CPU DOSBox (10000 = typique)', 'ui.admin.dosdoors_config.option_max_concurrent_help' => 'Nombre maximum de joueurs simultanés', 'ui.admin.dosdoors_config.no_doors_found_prefix' => 'Aucune porte trouvée. Installez des portes dans', 'ui.admin.dosdoors_config.no_description' => 'Aucune description', 'ui.admin.dosdoors_config.credits' => 'crédits', 'ui.admin.dosdoors_config.free' => 'Gratuit', 'ui.admin.dosdoors_config.disable' => 'Désactiver', 'ui.admin.dosdoors_config.enable' => 'Activer', 'ui.admin.nativedoors_config.load_config_failed' => 'Échec du chargement de la configuration', 'ui.admin.nativedoors_config.load_config_error_prefix' => 'Erreur lors du chargement de la configuration : ', 'ui.admin.nativedoors_config.load_doors_failed' => 'Échec du chargement des portes', 'ui.admin.nativedoors_config.load_doors_error_prefix' => 'Erreur lors du chargement des portes disponibles : ', 'ui.admin.nativedoors_config.invalid_json_toggle' => 'JSON invalide - impossible de basculer la porte', 'ui.admin.nativedoors_config.enabled_all_editor' => 'Toutes les portes activées dans l\'éditeur. Cliquez sur Enregistrer pour appliquer.', 'ui.admin.nativedoors_config.invalid_json_enable_all' => 'JSON invalide - impossible d\'activer toutes les portes', 'ui.admin.nativedoors_config.disabled_all_editor' => 'Toutes les portes désactivées dans l\'éditeur. Cliquez sur Enregistrer pour appliquer.', 'ui.admin.nativedoors_config.invalid_json_disable_all' => 'JSON invalide - impossible de désactiver toutes les portes', 'ui.admin.nativedoors_config.json_formatted' => 'JSON formaté avec succès', 'ui.admin.nativedoors_config.cannot_format_prefix' => 'Impossible de formater - JSON invalide : ', 'ui.admin.nativedoors_config.empty_config' => 'Configuration vide', 'ui.admin.nativedoors_config.valid_json' => 'JSON valide', 'ui.admin.nativedoors_config.invalid_json_prefix' => 'JSON invalide : ', 'ui.admin.nativedoors_config.save_failed' => 'Échec de l\'enregistrement', 'ui.admin.nativedoors_config.saved_success' => 'Configuration enregistrée avec succès !', 'ui.admin.nativedoors_config.save_error_prefix' => 'Erreur lors de l\'enregistrement de la configuration : ', 'ui.admin.nativedoors_config.cannot_save_invalid_json_prefix' => 'Impossible d\'enregistrer - JSON invalide : ', 'ui.admin.nativedoors_config.page_title' => 'Configuration des portes natives', 'ui.admin.nativedoors_config.heading' => 'Configuration des portes natives', 'ui.admin.nativedoors_config.info_text_1' => 'Les portes natives sont des programmes Linux qui s\'exécutent directement via PTY (sans émulateur). La configuration est stockée dans', 'ui.admin.nativedoors_config.info_text_2' => 'Les portes sont découvertes en analysant', 'ui.admin.nativedoors_config.info_text_3' => 'pour', 'ui.admin.nativedoors_config.info_text_4' => 'les manifestes.', 'ui.admin.nativedoors_config.installed_doors' => 'Portes installées', 'ui.admin.nativedoors_config.loading_doors' => 'Chargement des portes...', 'ui.admin.nativedoors_config.quick_actions' => 'Actions rapides', 'ui.admin.nativedoors_config.enable_all_doors' => 'Activer toutes les portes', 'ui.admin.nativedoors_config.disable_all_doors' => 'Désactiver toutes les portes', 'ui.admin.nativedoors_config.config_filename' => 'nativedoors.json', 'ui.admin.nativedoors_config.format' => 'Formater', 'ui.admin.nativedoors_config.loading_config' => 'Chargement de la configuration...', 'ui.admin.nativedoors_config.json_validation_before_save' => 'La validation JSON s\'exécute avant l\'enregistrement', 'ui.admin.nativedoors_config.configuration_options' => 'Options de configuration', 'ui.admin.nativedoors_config.option_enabled_help' => 'Indique si la porte est disponible pour les utilisateurs', 'ui.admin.nativedoors_config.option_credit_cost_help' => 'Crédits requis pour jouer (0 = gratuit)', 'ui.admin.nativedoors_config.option_max_time_help' => 'Durée de jeu maximale par session', 'ui.admin.nativedoors_config.option_max_concurrent_help' => 'Nombre maximum de joueurs simultanés', 'ui.admin.nativedoors_config.no_doors_found_prefix' => 'Aucune porte trouvée. Installez des portes dans', 'ui.admin.nativedoors_config.no_description' => 'Aucune description', 'ui.admin.nativedoors_config.credits' => 'crédits', 'ui.admin.nativedoors_config.free' => 'Gratuit', 'ui.admin.nativedoors_config.disable' => 'Désactiver', 'ui.admin.nativedoors_config.enable' => 'Activer', 'ui.admin.webdoors_config.load_webdoors_failed' => 'Échec du chargement de la configuration des webdoors', 'ui.admin.webdoors_config.load_failed' => 'Échec du chargement de la configuration', 'ui.admin.webdoors_config.json_valid' => 'Le JSON est valide', 'ui.admin.webdoors_config.json_has_errors' => 'Le JSON contient des erreurs', 'ui.admin.webdoors_config.invalid_json' => 'JSON invalide.', 'ui.admin.webdoors_config.no_doors_defined' => 'Aucune porte définie.', 'ui.admin.webdoors_config.cannot_format_invalid_json' => 'Impossible de formater : JSON invalide', 'ui.admin.webdoors_config.fix_json_before_save' => 'Veuillez corriger les erreurs JSON avant d\'enregistrer.', 'ui.admin.webdoors_config.save_failed' => 'Échec de l\'enregistrement de la configuration', 'ui.admin.webdoors_config.saved_success' => 'Configuration des webdoors enregistrée.', 'ui.admin.webdoors_config.activate_failed' => 'Échec de l\'activation des webdoors', 'ui.admin.webdoors_config.activated_success' => 'Webdoors activées.', 'ui.admin.webdoors_config.page_title' => 'Configuration des webdoors', 'ui.admin.webdoors_config.heading' => 'Configuration des webdoors', 'ui.admin.webdoors_config.info_text_prefix' => 'Les webdoors sont activées en ayant un fichier', 'ui.admin.webdoors_config.info_text_suffix' => 'Cette page vous permet de l\'activer et de le modifier.', 'ui.admin.webdoors_config.status' => 'Statut', 'ui.admin.webdoors_config.activate_webdoors' => 'Activer les webdoors', 'ui.admin.webdoors_config.config_file' => 'Fichier de configuration :', 'ui.admin.webdoors_config.config_never_deleted' => 'Une fois activé, le fichier de configuration n\'est jamais supprimé.', 'ui.admin.webdoors_config.json_controls_help' => 'La modification du JSON contrôle l\'apparence des portes dans le système. Seul « enabled » est reconnu par l\'interface.', 'ui.admin.webdoors_config.doors' => 'Portes', 'ui.admin.webdoors_config.config_filename' => 'webdoors.json', 'ui.admin.webdoors_config.no_config_loaded' => 'Aucune configuration chargée.', 'ui.admin.webdoors_config.format_json' => 'Formater le JSON', 'ui.admin.webdoors_config.waiting_for_config' => 'En attente de la configuration...', 'ui.admin.webdoors_config.json_validation_before_save' => 'La validation JSON s\'exécute avant l\'enregistrement.', 'ui.admin.webdoors_config.active_present' => 'Actif (webdoors.json présent)', 'ui.admin.webdoors_config.not_active_using_example' => 'Inactif (utilisation de l\'exemple)', 'ui.admin.webdoors_config.enabled_label' => 'activé', 'ui.admin.webdoors_config.true' => 'true', 'ui.admin.webdoors_config.false' => 'false', 'ui.admin.webdoors_config.not_in_config' => '(absent de la configuration)', // Admin JS-DOS Doors Config 'ui.admin.jsdosdoors_config.page_title' => 'Config Portes JS-DOS', 'ui.admin.jsdosdoors_config.heading' => 'Config Portes JS-DOS', 'ui.admin.jsdosdoors_config.info_text_prefix' => 'Les portes JS-DOS sont activées en ayant un fichier', 'ui.admin.jsdosdoors_config.info_text_suffix' => 'Cette page vous permet de l\'activer et de le modifier.', 'ui.admin.jsdosdoors_config.status' => 'Statut', 'ui.admin.jsdosdoors_config.activate_jsdoors' => 'Activer les portes JS-DOS', 'ui.admin.jsdosdoors_config.config_file' => 'Fichier de configuration :', 'ui.admin.jsdosdoors_config.config_never_deleted' => 'Une fois activé, le fichier de configuration n\'est jamais supprimé.', 'ui.admin.jsdosdoors_config.json_controls_help' => 'La modification du JSON contrôle l\'apparence des portes JS-DOS dans le système.', 'ui.admin.jsdosdoors_config.doors' => 'Portes', 'ui.admin.jsdosdoors_config.config_filename' => 'jsdosdoors.json', 'ui.admin.jsdosdoors_config.no_config_loaded' => 'Aucune configuration chargée.', 'ui.admin.jsdosdoors_config.format_json' => 'Formater le JSON', 'ui.admin.jsdosdoors_config.waiting_for_config' => 'En attente de la configuration...', 'ui.admin.jsdosdoors_config.json_validation_before_save' => 'La validation JSON s\'exécute avant l\'enregistrement.', 'ui.admin.jsdosdoors_config.active_present' => 'Actif (jsdosdoors.json présent)', 'ui.admin.jsdosdoors_config.not_active_using_example' => 'Inactif (utilisation de l\'exemple)', 'ui.admin.jsdosdoors_config.enabled_label' => 'activé', 'ui.admin.jsdosdoors_config.true' => 'true', 'ui.admin.jsdosdoors_config.false' => 'false', 'ui.admin.jsdosdoors_config.not_in_config' => '(absent de la configuration)', 'ui.admin.jsdosdoors_config.invalid_json' => 'JSON invalide.', 'ui.admin.jsdosdoors_config.no_doors_defined' => 'Aucune porte définie.', 'ui.admin.jsdosdoors_config.cannot_format_invalid_json' => 'Impossible de formater : JSON invalide', 'ui.admin.jsdosdoors_config.fix_json_before_save' => 'Veuillez corriger les erreurs JSON avant d\'enregistrer.', 'ui.admin.jsdosdoors_config.save_failed' => 'Échec de l\'enregistrement de la configuration', 'ui.admin.jsdosdoors_config.saved_success' => 'Configuration des portes JS-DOS enregistrée.', 'ui.admin.jsdosdoors_config.activate_failed' => 'Échec de l\'activation des portes JS-DOS', 'ui.admin.jsdosdoors_config.activated_success' => 'Portes JS-DOS activées.', 'ui.admin.jsdosdoors_config.load_failed' => 'Échec du chargement de la configuration', // JS-DOS door play page 'ui.jsdosdoor.page_title_suffix' => 'Porte JS-DOS', 'ui.jsdosdoor.coming_soon_heading' => 'Prochainement', 'ui.jsdosdoor.coming_soon_body' => 'L\'émulation côté navigateur pour ce jeu n\'est pas encore disponible.', 'ui.jsdosdoor.launch_game' => 'Lancer le jeu', 'ui.jsdosdoor.launch_config' => 'Lancer le mode configuration', 'ui.jsdosdoor.exit_game' => 'Quitter', 'ui.jsdosdoor.fullscreen' => 'Plein écran', 'ui.jsdosdoor.send_escape' => 'Envoyer Échap au jeu', 'ui.jsdosdoor.send_escape_short' => 'Esc', 'ui.jsdosdoor.escape_unlock_hint' => 'Souris libérée. Cliquez sur Esc pour envoyer Échap au jeu.', 'ui.jsdosdoor.loading_assets' => 'Chargement des fichiers du jeu...', 'ui.jsdosdoor.loading_emulator' => 'Démarrage de l\'émulateur...', // Games listing badge 'ui.webdoors.type_jsdos' => 'JSDOS', 'ui.admin.bbs_settings.load_failed' => 'Échec du chargement des paramètres', 'ui.admin.bbs_settings.save_failed' => 'Échec de l\'enregistrement des paramètres', 'ui.admin.bbs_settings.saved_success' => 'Fonctionnalités BBS enregistrées avec succès.', 'ui.admin.bbs_settings.load_system_failed' => 'Échec du chargement des paramètres système', 'ui.admin.bbs_settings.save_system_failed' => 'Échec de l\'enregistrement des paramètres système', 'ui.admin.bbs_settings.system_saved_success' => 'Paramètres système enregistrés avec succès.', 'ui.admin.bbs_settings.save_credits_failed' => 'Échec de l\'enregistrement des paramètres de crédits', 'ui.admin.bbs_settings.credits_saved_success' => 'Paramètres de crédits enregistrés avec succès.', 'ui.admin.bbs_settings.load_taglines_failed' => 'Échec du chargement des signatures', 'ui.admin.bbs_settings.save_taglines_failed' => 'Échec de l\'enregistrement des signatures', 'ui.admin.bbs_settings.taglines_saved_success' => 'Signatures enregistrées avec succès.', 'ui.admin.bbs_settings.page_title' => 'Paramètres BBS', 'ui.admin.bbs_settings.heading' => 'Paramètres BBS', 'ui.admin.bbs_settings.current' => 'actuel', 'ui.admin.bbs_settings.system.title' => 'Paramètres système', 'ui.admin.bbs_settings.system.system_name' => 'Nom du système', 'ui.admin.bbs_settings.system.sysop_name' => 'Nom du sysop', 'ui.admin.bbs_settings.system.select_admin_user' => 'Sélectionnez un utilisateur administrateur.', 'ui.admin.bbs_settings.system.location' => 'Emplacement', 'ui.admin.bbs_settings.system.timezone' => 'Fuseau horaire', 'ui.admin.bbs_settings.system.system_address' => 'Adresse du système', 'ui.admin.bbs_settings.system.origin_line' => 'Ligne d\'origine', 'ui.admin.bbs_settings.system.save' => 'Enregistrer les paramètres système', 'ui.admin.bbs_settings.features.title' => 'Fonctionnalités BBS', 'ui.admin.bbs_settings.features.enable_webdoors' => 'Activer les webdoors', 'ui.admin.bbs_settings.features.inactive' => 'inactif', 'ui.admin.bbs_settings.features.activate' => 'Activer', 'ui.admin.bbs_settings.features.enable_shoutbox' => 'Activer le shoutbox', 'ui.admin.bbs_settings.features.enable_advertising' => 'Activer la publicité', 'ui.admin.bbs_settings.features.enable_voting_booth' => 'Activer le bureau de vote', 'ui.admin.bbs_settings.features.enable_chat' => 'Activer le chat', 'ui.admin.bbs_settings.features.enable_file_areas' => 'Activer les zones de fichiers', 'ui.admin.bbs_settings.features.enable_guest_doors_page' => 'Activer la page des portes invité', 'ui.admin.bbs_settings.features.guest_doors_page_help' => 'Affiche une page publique /guest-doors listant les portes accessibles anonymement. Affiche également un lien sur la page de connexion.', 'ui.admin.bbs_settings.features.default_echo_interface' => 'Interface echo par défaut', 'ui.admin.bbs_settings.features.echo_list_forum' => 'Liste echo (vue forum)', 'ui.admin.bbs_settings.features.reader_message_list' => 'Lecteur (liste de messages)', 'ui.admin.bbs_settings.features.default_echo_help' => 'Interface par défaut pour la consultation des echomail. Les utilisateurs peuvent la modifier dans leurs paramètres.', 'ui.admin.bbs_settings.features.max_cross_post_areas' => 'Nombre max de zones de cross-post', 'ui.admin.bbs_settings.features.max_cross_post_help' => 'Nombre maximum de zones supplémentaires vers lesquelles un utilisateur peut faire un cross-post (2-20).', 'ui.admin.bbs_settings.features.save' => 'Enregistrer les paramètres', 'ui.admin.bbs_settings.features.enable_bbs_directory' => 'Activer le répertoire BBS', 'ui.admin.bbs_settings.features.bbs_directory_help' => 'Affiche la page publique /bbs-directory et le menu de navigation Listes BBS. Lorsqu\'il est désactivé, la page renvoie une erreur 404.', 'ui.admin.bbs_settings.credits.title' => 'Configuration du système de crédits', 'ui.admin.bbs_settings.credits.enabled' => 'Système de crédits activé', 'ui.admin.bbs_settings.credits.currency_symbol' => 'Symbole monétaire', 'ui.admin.bbs_settings.credits.currency_symbol_help' => 'Exemple : $, USD (5 caractères max). Laisser vide pour aucun symbole.', 'ui.admin.bbs_settings.credits.daily_login_bonus_amount' => 'Montant du bonus de connexion quotidien', 'ui.admin.bbs_settings.credits.daily_login_bonus_help' => 'Nombre de crédits attribués aux utilisateurs lors de la connexion quotidienne.', 'ui.admin.bbs_settings.credits.daily_login_delay_minutes' => 'Délai de connexion quotidien (minutes)', 'ui.admin.bbs_settings.credits.daily_login_delay_help' => 'Minutes après la connexion avant l\'attribution du bonus quotidien.', 'ui.admin.bbs_settings.credits.new_user_approval_bonus' => 'Bonus d\'approbation du nouvel utilisateur', 'ui.admin.bbs_settings.credits.new_user_approval_bonus_help' => 'Crédits attribués lorsqu\'un utilisateur en attente est approuvé.', 'ui.admin.bbs_settings.credits.new_user_14_day_bonus' => 'Bonus de jalon 14 jours pour les nouveaux utilisateurs', 'ui.admin.bbs_settings.credits.new_user_14_day_bonus_help' => 'Bonus unique attribué lorsqu\'un utilisateur se connecte 14 jours ou plus après la création de son compte.', 'ui.admin.bbs_settings.credits.netmail_cost' => 'Coût du netmail', 'ui.admin.bbs_settings.credits.netmail_cost_help' => 'Crédits débités lors de l\'envoi d\'un message netmail.', 'ui.admin.bbs_settings.credits.echomail_reward' => 'Récompense echomail', 'ui.admin.bbs_settings.credits.echomail_reward_help' => 'Crédits gagnés lors de la publication d\'un message echomail. Doublés si le message fait >= 1200 caractères.', 'ui.admin.bbs_settings.credits.crashmail_cost' => 'Coût du crashmail', 'ui.admin.bbs_settings.credits.crashmail_cost_help' => 'Crédits débités lors d\'un envoi direct/crashmail.', 'ui.admin.bbs_settings.credits.poll_creation_cost' => 'Coût de création de sondage', 'ui.admin.bbs_settings.credits.poll_creation_cost_help' => 'Crédits débités lors de la création d\'un nouveau sondage.', 'ui.admin.bbs_settings.credits.file_upload_cost' => 'Coût de téléversement de fichier', 'ui.admin.bbs_settings.credits.file_upload_cost_help' => 'Crédits débités à l\'utilisateur effectuant le téléversement d\'un fichier.', 'ui.admin.bbs_settings.credits.file_upload_reward' => 'Récompense de téléversement de fichier', 'ui.admin.bbs_settings.credits.file_upload_reward_help' => 'Crédits attribués à l\'utilisateur après un téléversement réussi.', 'ui.admin.bbs_settings.credits.file_download_cost' => 'Coût de téléchargement de fichier', 'ui.admin.bbs_settings.credits.file_download_cost_help' => 'Crédits débités à l\'utilisateur effectuant le téléchargement d\'un fichier.', 'ui.admin.bbs_settings.credits.file_download_reward' => 'Récompense de téléchargement de fichier', 'ui.admin.bbs_settings.credits.file_download_reward_help' => 'Crédits attribués à l\'utilisateur après un téléchargement réussi.', 'ui.admin.bbs_settings.credits.ai_credits_per_milli_usd' => 'Crédits IA par 0,001 $ dépensé', 'ui.admin.bbs_settings.credits.ai_credits_per_milli_usd_help' => 'Crédits débités à l\'utilisateur par tranche de 0,001 $ de coût de fournisseur IA engagé en son nom. Mettre à 0 pour désactiver.', 'ui.admin.bbs_settings.credits.transfer_fee_percentage' => 'Pourcentage de frais de transfert', 'ui.admin.bbs_settings.credits.transfer_fee_help' => 'Pourcentage des transferts de crédits prélevé en frais (0,05 = 5%). Distribué aux sysops.', 'ui.admin.bbs_settings.credits.referral_system' => 'Système de parrainage', 'ui.admin.bbs_settings.credits.enable_referral_system' => 'Activer le système de parrainage', 'ui.admin.bbs_settings.credits.referral_bonus' => 'Bonus de parrainage', 'ui.admin.bbs_settings.credits.referral_bonus_help' => 'Crédits attribués lorsqu\'un utilisateur parrainé est approuvé par l\'administrateur.', 'ui.admin.bbs_settings.credits.save' => 'Enregistrer les paramètres de crédits', 'ui.admin.bbs_settings.taglines.title' => 'Signatures', 'ui.admin.bbs_settings.taglines.one_per_line' => 'Signatures (une par ligne)', 'ui.admin.bbs_settings.taglines.placeholder' => 'Une signature par ligne.', 'ui.admin.bbs_settings.taglines.help' => 'Ces signatures apparaissent comme options sélectionnables lorsque les utilisateurs rédigent des messages.', 'ui.admin.bbs_settings.taglines.save' => 'Enregistrer les signatures', 'ui.admin.bbs_settings.validation.max_cross_post_areas_range' => 'Le nombre max de zones de cross-post doit être un entier compris entre 2 et 20.', 'ui.admin.bbs_settings.validation.currency_symbol_length' => 'Le symbole monétaire doit comporter entre 0 et 5 caractères.', 'ui.admin.bbs_settings.validation.daily_login_amount_non_negative' => 'Le montant du bonus de connexion quotidien doit être un entier non négatif.', 'ui.admin.bbs_settings.validation.daily_login_delay_non_negative' => 'Le délai de connexion quotidien doit être un entier non négatif.', 'ui.admin.bbs_settings.validation.approval_bonus_non_negative' => 'Le bonus d\'approbation doit être un entier non négatif.', 'ui.admin.bbs_settings.validation.netmail_cost_non_negative' => 'Le coût du netmail doit être un entier non négatif.', 'ui.admin.bbs_settings.validation.echomail_reward_non_negative' => 'La récompense echomail doit être un entier non négatif.', 'ui.admin.bbs_settings.validation.crashmail_cost_non_negative' => 'Le coût du crashmail doit être un entier non négatif.', 'ui.admin.bbs_settings.validation.poll_creation_cost_non_negative' => 'Le coût de création de sondage doit être un entier non négatif.', 'ui.admin.bbs_settings.validation.file_upload_cost_non_negative' => 'Le coût de téléversement de fichier doit être un entier non négatif.', 'ui.admin.bbs_settings.validation.file_upload_reward_non_negative' => 'La récompense de téléversement de fichier doit être un entier non négatif.', 'ui.admin.bbs_settings.validation.file_download_cost_non_negative' => 'Le coût de téléchargement de fichier doit être un entier non négatif.', 'ui.admin.bbs_settings.validation.file_download_reward_non_negative' => 'La récompense de téléchargement de fichier doit être un entier non négatif.', 'ui.admin.bbs_settings.validation.ai_credits_per_milli_usd_non_negative' => 'Les crédits IA par 0,001 $ doivent être un entier non négatif.', 'ui.admin.bbs_settings.validation.return_14_days_non_negative' => 'Le bonus de retour à 14 jours doit être un entier non négatif.', 'ui.admin.bbs_settings.validation.transfer_fee_range' => 'Les frais de transfert doivent être compris entre 0 et 1 (0% à 100%).', 'ui.admin.bbs_settings.validation.referral_bonus_non_negative' => 'Le bonus de parrainage doit être un entier non négatif.', 'ui.admin.bbs_settings.validation.session_timeout_positive' => 'Le délai d\'expiration de session doit être un entier positif.', 'ui.admin.bbs_settings.validation.terminal_idle_warn_positive' => 'Le délai d\'avertissement d\'inactivité doit être un entier positif.', 'ui.admin.bbs_settings.validation.terminal_idle_disconnect_positive' => 'Le délai de déconnexion pour inactivité doit être un entier positif.', 'ui.admin.bbs_settings.validation.terminal_idle_disconnect_gt_warn' => 'Le délai de déconnexion doit être supérieur au délai d\'avertissement.', 'ui.admin.bbs_settings.terminal_server.title' => 'Paramètres du serveur terminal', 'ui.admin.bbs_settings.terminal_server.default_shell' => 'Style d\'interface par défaut', 'ui.admin.bbs_settings.terminal_server.default_shell_help' => 'Utilisé lorsque la préférence de l\'utilisateur est définie sur Auto.', 'ui.admin.bbs_settings.terminal_server.shell_tui' => 'TUI plein écran', 'ui.admin.bbs_settings.terminal_server.shell_line' => 'Mode ligne', 'ui.admin.bbs_settings.terminal_server.force_shell' => 'Forcer le shell', 'ui.admin.bbs_settings.terminal_server.force_shell_help' => 'Lorsqu\'activé, toutes les sessions utilisent le shell système par défaut, quelle que soit la préférence de l\'utilisateur.', 'ui.admin.bbs_settings.terminal_server.save' => 'Enregistrer les paramètres du serveur terminal', 'ui.admin.bbs_settings.terminal_server.save_failed' => 'Échec de l\'enregistrement des paramètres du serveur terminal.', 'ui.admin.bbs_settings.terminal_server.saved_success' => 'Paramètres du serveur terminal enregistrés.', 'ui.admin.bbs_settings.terminal_idle.title' => 'Délai d\'inactivité du terminal', 'ui.admin.bbs_settings.terminal_idle.warn_minutes' => 'Avertissement d\'inactivité (minutes)', 'ui.admin.bbs_settings.terminal_idle.warn_minutes_help' => 'Afficher un message « Êtes-vous toujours là ? » après ce nombre de minutes d\'inactivité.', 'ui.admin.bbs_settings.terminal_idle.disconnect_minutes' => 'Déconnexion pour inactivité (minutes)', 'ui.admin.bbs_settings.terminal_idle.disconnect_minutes_help' => 'Déconnecter la session si aucune touche n\'est pressée dans ce délai après l\'avertissement.', 'ui.admin.bbs_settings.terminal_idle.save' => 'Enregistrer les paramètres d\'inactivité', 'ui.admin.bbs_settings.terminal_idle.save_failed' => 'Échec de l\'enregistrement des paramètres d\'inactivité.', 'ui.admin.bbs_settings.terminal_idle.saved_success' => 'Paramètres de délai d\'inactivité enregistrés.', 'ui.admin.bbs_settings.packet_bbs.title' => 'Paramètres Packet BBS', 'ui.admin.bbs_settings.packet_bbs.session_timeout_minutes' => 'Délai d\'expiration de session (minutes)', 'ui.admin.bbs_settings.packet_bbs.session_timeout_help' => 'Les sessions authentifiées inactives expirent après ce nombre de minutes.', 'ui.admin.bbs_settings.packet_bbs.allow_guest_who' => 'Autoriser WHO pour les invités', 'ui.admin.bbs_settings.packet_bbs.allow_guest_who_help' => 'Autorise les utilisateurs non authentifiés à exécuter la commande WHO.', 'ui.admin.bbs_settings.packet_bbs.save' => 'Enregistrer les paramètres Packet BBS', 'ui.admin.bbs_settings.packet_bbs.save_failed' => 'Échec de l\'enregistrement des paramètres Packet BBS.', 'ui.admin.bbs_settings.packet_bbs.saved_success' => 'Paramètres Packet BBS enregistrés avec succès.', 'ui.admin.bbs_settings.credits.costs_and_fees' => 'Coûts et frais', 'ui.admin.bbs_settings.credits.rewards_and_bonuses' => 'Récompenses et bonus', 'ui.admin.mrc_settings.page_title' => 'Paramètres MRC', 'ui.admin.mrc_settings.heading' => 'Paramètres du chat MRC', 'ui.admin.mrc_settings.note_label' => 'Remarque', 'ui.admin.mrc_settings.note_text' => 'MRC (Multi Relay Chat) est disponible en tant que WebDoor.', 'ui.admin.mrc_settings.note_enable_text' => 'Configurez les paramètres du démon ici, puis activez la porte dans le', 'ui.admin.mrc_settings.webdoors_admin' => 'Administration des WebDoors', 'ui.admin.mrc_settings.load_failed' => 'Échec du chargement des paramètres MRC', 'ui.admin.mrc_settings.load_error' => 'Erreur lors du chargement des paramètres MRC', 'ui.admin.mrc_settings.saved_success' => 'Paramètres MRC enregistrés avec succès', 'ui.admin.mrc_settings.restart_required' => 'Paramètres enregistrés. Redémarrez le démon pour appliquer les modifications.', 'ui.admin.mrc_settings.save_failed' => 'Échec de l\'enregistrement des paramètres MRC', 'ui.admin.mrc_settings.save_error' => 'Erreur lors de l\'enregistrement des paramètres MRC', 'ui.admin.mrc_settings.general_settings' => 'Paramètres généraux', 'ui.admin.mrc_settings.enable_daemon' => 'Activer le démon MRC', 'ui.admin.mrc_settings.server_connection' => 'Connexion au serveur', 'ui.admin.mrc_settings.server_host' => 'Hôte du serveur MRC', 'ui.admin.mrc_settings.server_port_non_ssl' => 'Port du serveur (Non-SSL)', 'ui.admin.mrc_settings.server_port_ssl' => 'Port du serveur (SSL)', 'ui.admin.mrc_settings.use_ssl_connection' => 'Utiliser la connexion SSL', 'ui.admin.mrc_settings.use_ssl_help' => 'Recommandé pour une communication sécurisée', 'ui.admin.mrc_settings.save_general_settings' => 'Enregistrer les paramètres généraux', 'ui.admin.matterbridge_settings.heading' => 'Matterbridge Bridge Settings', 'ui.admin.matterbridge_settings.enabled' => 'Enable Matterbridge relay', 'ui.admin.matterbridge_settings.base_url' => 'Matterbridge API URL', 'ui.admin.matterbridge_settings.token' => 'API token', 'ui.admin.matterbridge_settings.timeout_seconds' => 'Timeout (seconds)', 'ui.admin.matterbridge_settings.username_suffix' => 'Default username suffix', 'ui.admin.matterbridge_settings.skip_tls_verify' => 'Skip TLS verification', 'ui.admin.matterbridge_settings.bridge_user_id' => 'Utilisateur pont', 'ui.admin.matterbridge_settings.bridge_user_search_placeholder' => 'Rechercher par nom d\'utilisateur...', 'ui.admin.matterbridge_settings.bridge_user_id_help' => 'Compte utilisé pour publier les messages entrants des plateformes distantes dans le chat local. Créez un utilisateur pont dédié et sélectionnez-le ici. Requis pour le pontage entrant.', 'ui.admin.matterbridge_settings.help' => 'Local chat rooms can each point at a Matterbridge gateway below. Outbound room messages are relayed through the configured API endpoint. Inbound messages require the bridge user ID to be set and matterbridge_daemon.php to be running.', 'ui.admin.matterbridge_settings.save' => 'Save Matterbridge Settings', 'ui.admin.matterbridge_settings.load_failed' => 'Error loading Matterbridge settings', 'ui.admin.matterbridge_settings.saved_success' => 'Matterbridge settings saved successfully', 'ui.admin.matterbridge_settings.save_failed' => 'Error saving Matterbridge settings', 'ui.admin.mrc_settings.bbs_identity' => 'Identité BBS', 'ui.admin.mrc_settings.bbs_name' => 'Nom du BBS', 'ui.admin.mrc_settings.bbs_name_help' => 'Maximum 64 caractères', 'ui.admin.mrc_settings.platform_info' => 'Informations sur la plateforme', 'ui.admin.mrc_settings.platform_info_help' => 'Identifiant du logiciel et de la plateforme', 'ui.admin.mrc_settings.sysop_name' => 'Nom du Sysop', 'ui.admin.mrc_settings.bbs_information' => 'Informations BBS', 'ui.admin.mrc_settings.website_url' => 'URL du site web', 'ui.admin.mrc_settings.info_optional_help' => 'Optionnel - pour la commande INFO', 'ui.admin.mrc_settings.telnet_address' => 'Adresse Telnet', 'ui.admin.mrc_settings.bbs_description' => 'Description du BBS', 'ui.admin.mrc_settings.placeholder.server_host' => 'mrc.bottomlessabyss.net', 'ui.admin.mrc_settings.placeholder.bbs_name' => 'BinktermPHP BBS', 'ui.admin.mrc_settings.placeholder.platform' => 'BINKTERMPHP/Linux64/1.3.0', 'ui.admin.mrc_settings.placeholder.sysop' => 'Sysop', 'ui.admin.mrc_settings.placeholder.website' => 'https://example.com', 'ui.admin.mrc_settings.placeholder.telnet' => 'telnet://bbs.example.com:23', 'ui.admin.mrc_settings.placeholder.description' => 'Un BBS moderne...', 'ui.admin.mrc_settings.save_identity_settings' => 'Enregistrer les paramètres d\'identité', 'ui.admin.mrc_settings.connection_settings' => 'Paramètres de connexion', 'ui.admin.mrc_settings.auto_reconnect' => 'Reconnexion automatique', 'ui.admin.mrc_settings.auto_reconnect_help' => 'Se reconnecter automatiquement en cas de perte de connexion', 'ui.admin.mrc_settings.reconnect_delay' => 'Délai de reconnexion (secondes)', 'ui.admin.mrc_settings.reconnect_delay_help' => 'Temps d\'attente avant la reconnexion (5-300 secondes)', 'ui.admin.mrc_settings.ping_interval' => 'Intervalle de ping (secondes)', 'ui.admin.mrc_settings.ping_interval_help' => 'Intervalle PING attendu du serveur (30-300 secondes)', 'ui.admin.mrc_settings.keepalive_timeout' => 'Délai de maintien de connexion (secondes)', 'ui.admin.mrc_settings.keepalive_timeout_help' => 'Déconnecter si aucun PING reçu (60-600 secondes)', 'ui.admin.mrc_settings.save_connection_settings' => 'Enregistrer les paramètres de connexion', 'ui.admin.mrc_settings.room_settings' => 'Paramètres des salons', 'ui.admin.mrc_settings.default_room' => 'Salon par défaut', 'ui.admin.mrc_settings.default_room_help' => 'Salon par défaut pour les nouvelles connexions', 'ui.admin.mrc_settings.auto_join_rooms' => 'Rejoindre automatiquement les salons', 'ui.admin.mrc_settings.auto_join_rooms_help' => 'Liste de salons à rejoindre automatiquement, séparés par des virgules', 'ui.admin.mrc_settings.message_settings' => 'Paramètres des messages', 'ui.admin.mrc_settings.max_message_length' => 'Longueur maximale des messages', 'ui.admin.mrc_settings.max_message_length_help' => 'Nombre maximum de caractères par message (80-255)', 'ui.admin.mrc_settings.history_limit' => 'Limite de l\'historique', 'ui.admin.mrc_settings.history_limit_help' => 'Messages à conserver par salon (100-10000)', 'ui.admin.mrc_settings.prune_after_days' => 'Supprimer après (jours)', 'ui.admin.mrc_settings.prune_after_days_help' => 'Supprimer les messages plus anciens que cette valeur (1-365 jours)', 'ui.admin.mrc_settings.save_room_settings' => 'Enregistrer les paramètres des salons', 'ui.admin.activity_stats.page_title' => 'Statistiques d\'activité', 'ui.admin.activity_stats.heading' => 'Statistiques d\'activité', 'ui.admin.activity_stats.period' => 'Période', 'ui.admin.activity_stats.period_7d' => '7 derniers jours', 'ui.admin.activity_stats.period_30d' => '30 derniers jours', 'ui.admin.activity_stats.period_90d' => '90 derniers jours', 'ui.admin.activity_stats.period_all' => 'Toute la période', 'ui.admin.activity_stats.exclude_admins' => 'Exclure les administrateurs', 'ui.admin.activity_stats.dashboard' => 'Tableau de bord', 'ui.admin.activity_stats.loading_activity_data' => 'Chargement des données d\'activité...', 'ui.admin.activity_stats.tab_overview' => 'Vue d\'ensemble', 'ui.admin.activity_stats.tab_popular_areas' => 'Zones populaires', 'ui.admin.activity_stats.tab_doors' => 'Portes', 'ui.admin.activity_stats.tab_file_activity' => 'Activité fichiers', 'ui.admin.activity_stats.tab_nodelist' => 'Liste des n?uds', 'ui.admin.activity_stats.tab_top_users' => 'Meilleurs utilisateurs', 'ui.admin.activity_stats.tab_hourly' => 'Par heure', 'ui.admin.activity_stats.activity_by_category' => 'Activité par catégorie', 'ui.admin.activity_stats.category' => 'Catégorie', 'ui.admin.activity_stats.events' => 'Événements', 'ui.admin.activity_stats.daily_activity_last_30' => 'Activité quotidienne (30 derniers jours)', 'ui.admin.activity_stats.date' => 'Date', 'ui.admin.activity_stats.most_viewed_echoareas' => 'Zones echo les plus consultées', 'ui.admin.activity_stats.most_active_echoareas' => 'Zones echo les plus actives (publications)', 'ui.admin.activity_stats.area' => 'Zone', 'ui.admin.activity_stats.views' => 'Vues', 'ui.admin.activity_stats.posts' => 'Publications', 'ui.admin.activity_stats.most_played_webdoors' => 'WebDoors les plus joués', 'ui.admin.activity_stats.most_played_dos_doors' => 'Portes DOS les plus jouées', 'ui.admin.activity_stats.game' => 'Jeu', 'ui.admin.activity_stats.door' => 'Porte', 'ui.admin.activity_stats.sessions' => 'Sessions', 'ui.admin.activity_stats.top_downloaded_files' => 'Fichiers les plus téléchargés', 'ui.admin.activity_stats.file' => 'Fichier', 'ui.admin.activity_stats.downloads' => 'Téléchargements', 'ui.admin.activity_stats.most_browsed_file_areas' => 'Zones de fichiers les plus parcourues', 'ui.admin.activity_stats.most_searched_nodelist_queries' => 'Requêtes de liste de n?uds les plus recherchées', 'ui.admin.activity_stats.query' => 'Requête', 'ui.admin.activity_stats.searches' => 'Recherches', 'ui.admin.activity_stats.most_viewed_nodes' => 'N?uds les plus consultés', 'ui.admin.activity_stats.node' => 'N?ud', 'ui.admin.activity_stats.most_active_users' => 'Utilisateurs les plus actifs', 'ui.admin.activity_stats.user' => 'Utilisateur', 'ui.admin.activity_stats.activity_by_hour_of_day' => 'Activité par heure de la journée', 'ui.admin.activity_stats.hour' => 'Heure', 'ui.admin.activity_stats.utc' => 'UTC', 'ui.admin.activity_stats.no_data_for_period' => 'Aucune donnée pour cette période', 'ui.admin.activity_stats.no_data' => 'Aucune donnée', 'ui.admin.activity_stats.failed_load_statistics_prefix' => 'Échec du chargement des statistiques. ', 'ui.admin.activity_stats.echomail' => 'Echomail', 'ui.admin.activity_stats.netmail' => 'Netmail', 'ui.admin.activity_stats.files' => 'Fichiers', 'ui.admin.activity_stats.door_plays' => 'Parties de portes', 'ui.admin.activity_stats.logins' => 'Connexions', 'ui.admin.activity_stats.total' => 'Total', 'ui.admin.activity_stats.views_sent' => 'Vues : {views} - Envoyés : {sent}', 'ui.admin.activity_stats.read_sent' => 'Lus : {read} - Envoyés : {sent}', 'ui.admin.activity_stats.area_views' => 'Vues de la zone', 'ui.admin.activity_stats.sent' => 'Envoyés', 'ui.admin.activity_stats.read' => 'Lus', 'ui.admin.activity_stats.doors' => 'Portes', 'ui.admin.activity_stats.nodelist' => 'Liste des n?uds', 'ui.admin.activity_stats.chat' => 'Chat', 'ui.admin.activity_stats.auth' => 'Auth', 'ui.admin.activity_stats.anonymous' => '(anon)', 'ui.admin.activity_stats.tab_interests' => 'Intérêts populaires', 'ui.admin.activity_stats.popular_interests' => 'Intérêts populaires par abonnés', 'ui.admin.activity_stats.interest' => 'Intérêt', 'ui.admin.activity_stats.subscribers' => 'Abonnés', 'ui.admin.economy.page_title' => 'Visionneuse d\'économie', 'ui.admin.economy.heading' => 'Visionneuse d\'économie', 'ui.admin.economy.period' => 'Période :', 'ui.admin.economy.period_7d' => '7 derniers jours', 'ui.admin.economy.period_30d' => '30 derniers jours', 'ui.admin.economy.period_90d' => '90 derniers jours', 'ui.admin.economy.period_all' => 'Toute la période', 'ui.admin.economy.dashboard' => 'Tableau de bord', 'ui.admin.economy.loading_statistics' => 'Chargement des statistiques économiques...', 'ui.admin.economy.period_snapshot' => 'Instantané de la période', 'ui.admin.economy.transactions' => 'Transactions', 'ui.admin.economy.active_users' => 'Utilisateurs actifs', 'ui.admin.economy.credits_earned' => 'Crédits gagnés', 'ui.admin.economy.credits_spent' => 'Crédits dépensés', 'ui.admin.economy.net_flow' => 'Flux net', 'ui.admin.economy.current_distribution' => 'Distribution actuelle', 'ui.admin.economy.funded_users' => 'Utilisateurs financés', 'ui.admin.economy.average_balance' => 'Solde moyen', 'ui.admin.economy.median_balance' => 'Solde médian', 'ui.admin.economy.largest_balance' => 'Solde le plus élevé', 'ui.admin.economy.richest_user' => 'Utilisateur le plus riche', 'ui.admin.economy.transaction_types' => 'Types de transactions', 'ui.admin.economy.type' => 'Type', 'ui.admin.economy.count' => 'Nombre', 'ui.admin.economy.net' => 'Net', 'ui.admin.economy.top_earners' => 'Meilleurs gagnants', 'ui.admin.economy.user' => 'Utilisateur', 'ui.admin.economy.tx_short' => 'Tx', 'ui.admin.economy.earned' => 'Gagné', 'ui.admin.economy.spent' => 'Dépensé', 'ui.admin.economy.top_spenders' => 'Meilleurs dépensiers', 'ui.admin.economy.richest_accounts' => 'Comptes les plus riches', 'ui.admin.economy.balance' => 'Solde', 'ui.admin.economy.recent_transactions' => 'Transactions récentes', 'ui.admin.economy.amount' => 'Montant', 'ui.admin.economy.na' => 'n/a', 'ui.admin.economy.credits_in_circulation' => 'Crédits en circulation', 'ui.admin.economy.funded_wallets' => 'Portefeuilles financés', 'ui.admin.economy.credits_disabled_notice' => 'Les crédits sont actuellement désactivés. Les soldes historiques et les données du grand livre sont toujours affichés.', 'ui.admin.economy.users' => 'utilisateurs', 'ui.admin.economy.no_transactions_period' => 'Aucune transaction pour cette période', 'ui.admin.economy.no_earning_activity_period' => 'Aucune activité de gain pour cette période', 'ui.admin.economy.no_spending_activity_period' => 'Aucune activité de dépense pour cette période', 'ui.admin.economy.no_funded_users_yet' => 'Aucun utilisateur financé pour l\'instant', 'ui.admin.economy.no_description' => 'Aucune description', 'ui.admin.economy.bal_short' => 'Sol', 'ui.admin.economy.no_recent_transactions_period' => 'Aucune transaction récente pour cette période', 'ui.admin.economy.load_failed' => 'Échec du chargement des statistiques économiques', 'ui.fileareas.page_title' => 'Zones de fichiers', 'ui.fileareas.heading' => 'Gestion des zones de fichiers', 'ui.fileareas.add_file_area' => 'Ajouter une zone de fichiers', 'ui.fileareas.edit_file_area' => 'Modifier la zone de fichiers', 'ui.fileareas.list_title' => 'Zones de fichiers', 'ui.fileareas.loading_file_areas' => 'Chargement des zones de fichiers...', 'ui.fileareas.load_failed' => 'Échec du chargement des zones de fichiers', 'ui.fileareas.load_details_failed' => 'Échec du chargement des détails de la zone de fichiers', 'ui.fileareas.updated_success' => 'Zone de fichiers mise à jour', 'ui.fileareas.created_success' => 'Zone de fichiers créée', 'ui.fileareas.deleted_success' => 'Zone de fichiers supprimée', 'ui.fileareas.active_areas' => 'Zones actives :', 'ui.fileareas.total_files' => 'Total des fichiers :', 'ui.fileareas.total_size' => 'Taille totale :', 'ui.fileareas.settings_title' => 'Paramètres de la zone de fichiers', 'ui.fileareas.replace_existing_label' => 'Remplacer les existants :', 'ui.fileareas.replace_existing_help' => 'Lorsqu\'activé, les nouveaux fichiers portant le même nom remplacent les anciens (utile pour NODELIST, etc.)', 'ui.fileareas.versioning_label' => 'Versionnage :', 'ui.fileareas.versioning_help' => 'Lorsque désactivé, les fichiers avec des noms en double reçoivent des suffixes de version (_1, _2, etc.)', 'ui.fileareas.tag_required' => 'Tag *', 'ui.fileareas.tag_help' => 'Tag de la zone de fichiers (ex. : NODELIST, GENERAL_FILES)', 'ui.fileareas.description_required' => 'Description *', 'ui.fileareas.description_help' => 'Brève description de la zone de fichiers', 'ui.fileareas.network_domain' => 'Domaine réseau', 'ui.fileareas.max_file_size_mb' => 'Taille maximale des fichiers (Mo)', 'ui.fileareas.maximum_file_size' => 'Taille maximale des fichiers', 'ui.fileareas.tic_password_optional' => 'Mot de passe TIC (Optionnel)', 'ui.fileareas.tic_password_help' => 'Mot de passe de l\'écho de fichiers pour les fichiers TIC (champ Pw FSC-87)', 'ui.fileareas.allowed_extensions' => 'Extensions autorisées', 'ui.fileareas.extensions_placeholder_allowed' => 'ex. : zip,txt,pdf', 'ui.fileareas.allowed_extensions_help' => 'Liste séparée par des virgules (laisser vide pour tout autoriser)', 'ui.fileareas.blocked_extensions' => 'Extensions bloquées', 'ui.fileareas.extensions_placeholder_blocked' => 'ex. : exe,bat,sh', 'ui.fileareas.blocked_extensions_help' => 'Liste séparée par des virgules', 'ui.fileareas.replace_existing_files' => 'Remplacer les fichiers existants', 'ui.fileareas.replace_existing_files_help' => 'Remplacer les fichiers portant le même nom au lieu de les versionner', 'ui.fileareas.allow_duplicate_content' => 'Autoriser le contenu en double', 'ui.fileareas.allow_duplicate_content_help' => 'Autoriser le même contenu de fichier (hash) avec des noms de fichiers différents', 'ui.fileareas.local_only' => 'Local uniquement', 'ui.fileareas.local_only_help' => 'Ne pas transmettre les fichiers aux liens montants', 'ui.fileareas.upload_permission' => 'Permission d\'envoi', 'ui.fileareas.upload_users_can_upload' => 'Les utilisateurs peuvent envoyer', 'ui.fileareas.upload_admin_only' => 'Administrateur uniquement', 'ui.fileareas.upload_read_only' => 'Lecture seule (aucun envoi)', 'ui.fileareas.upload_permission_help' => 'Contrôler qui peut envoyer des fichiers dans cette zone', 'ui.fileareas.virus_scanning' => 'Analyse antivirus', 'ui.fileareas.virus_scanning_help' => 'Analyser les fichiers envoyés pour détecter les virus (nécessite ClamAV)', 'ui.fileareas.file_area_is_active' => 'La zone de fichiers est active', 'ui.fileareas.edit_rules' => 'Modifier les règles', 'ui.fileareas.delete_confirm_prefix' => 'Êtes-vous sûr de vouloir supprimer cette zone de fichiers :', 'ui.fileareas.delete_confirm_warning' => 'Cela supprimera également tous les fichiers de cette zone !', 'ui.fileareas.no_file_areas_found' => 'Aucune zone de fichiers trouvée', 'ui.fileareas.tag' => 'Tag', 'ui.fileareas.files' => 'Fichiers', 'ui.fileareas.size' => 'Taille', 'ui.fileareas.local' => 'Local', 'ui.fileareas.replace' => 'Remplacer', 'ui.admin.auto_feed.load_details_failed' => 'Échec du chargement des détails du flux', 'ui.admin.auto_feed.operation_failed' => 'Opération échouée', 'ui.admin.auto_feed.deleted_success' => 'Flux supprimé avec succès', 'ui.admin.auto_feed.updated_success' => 'Flux mis à jour avec succès', 'ui.admin.auto_feed.created_success' => 'Flux créé avec succès', 'ui.admin.auto_feed.delete_failed' => 'Échec de la suppression', 'ui.admin.auto_feed.check_failed' => 'Échec de la vérification', 'ui.admin.auto_feed.checked_articles_posted' => 'Flux vérifié : {count} nouvel(s) article(s) publié(s)', 'ui.admin.auto_feed.page_title' => 'Flux automatique', 'ui.admin.auto_feed.heading' => 'Flux automatique', 'ui.admin.auto_feed.statistics' => 'Statistiques', 'ui.admin.auto_feed.total_feeds' => 'Total des flux', 'ui.admin.auto_feed.add_feed' => 'Ajouter un flux', 'ui.admin.auto_feed.edit_feed' => 'Modifier le flux', 'ui.admin.auto_feed.rss_atom_feeds' => 'Flux RSS/Atom', 'ui.admin.auto_feed.feed_sources' => 'Sources de flux', 'ui.admin.auto_feed.loading_feeds' => 'Chargement des flux...', 'ui.admin.auto_feed.loading_echo_areas' => 'Chargement des zones d\'écho...', 'ui.admin.auto_feed.loading_users' => 'Chargement des utilisateurs...', 'ui.admin.auto_feed.active_label' => 'Actif', 'ui.admin.auto_feed.inactive_label' => 'Inactif', 'ui.admin.auto_feed.articles_posted' => 'Articles publiés', 'ui.admin.auto_feed.about_title' => 'À propos', 'ui.admin.auto_feed.about_text' => 'Le flux automatique surveille les sources RSS/Atom et Bluesky et publie automatiquement les nouveaux éléments dans les zones d\'écho spécifiées.', 'ui.admin.auto_feed.cron_hint_prefix' => 'Exécuter', 'ui.admin.auto_feed.cron_hint_suffix' => 'via cron pour vérifier les flux périodiquement.', 'ui.admin.auto_feed.feed_name' => 'Nom du flux', 'ui.admin.auto_feed.feed_name_placeholder' => 'ex. : Actualités tech, Titres BBC', 'ui.admin.auto_feed.feed_name_help' => 'Nom convivial pour ce flux', 'ui.admin.auto_feed.feed_url_required' => 'URL du flux *', 'ui.admin.auto_feed.feed_url_placeholder' => 'https://example.com/feed.rss', 'ui.admin.auto_feed.feed_url_help' => 'URL du flux RSS/Atom ou du profil Bluesky', 'ui.admin.auto_feed.source_type' => 'Type de source', 'ui.admin.auto_feed.source_type_rss' => 'RSS/Atom', 'ui.admin.auto_feed.source_type_bluesky' => 'Bluesky', 'ui.admin.auto_feed.source_type_help' => 'Choisissez comment le flux automatique doit lire cette source', 'ui.admin.auto_feed.echo_area_required' => 'Zone d\'écho *', 'ui.admin.auto_feed.echo_area' => 'Zone d\'écho', 'ui.admin.auto_feed.echo_area_help' => 'Zone d\'écho dans laquelle publier les articles', 'ui.admin.auto_feed.post_as_user_required' => 'Publier en tant qu\'utilisateur *', 'ui.admin.auto_feed.post_as' => 'Publier en tant que', 'ui.admin.auto_feed.post_as_user_help' => 'Compte utilisateur avec lequel publier les messages', 'ui.admin.auto_feed.user_search_placeholder' => 'Saisissez un nom d\'utilisateur ou un nom réel...', 'ui.admin.auto_feed.searching_users' => 'Recherche d\'utilisateurs...', 'ui.admin.auto_feed.user_search_failed' => 'La recherche d\'utilisateurs a échoué', 'ui.admin.auto_feed.no_users_found' => 'Aucun utilisateur trouvé', 'ui.admin.auto_feed.no_real_name' => 'Aucun nom réel', 'ui.admin.auto_feed.select_valid_user' => 'Sélectionnez un utilisateur valide dans les résultats de recherche', 'ui.admin.auto_feed.max_articles' => 'Articles max', 'ui.admin.auto_feed.per_check' => 'Par vérification', 'ui.admin.auto_feed.confirm_delete_title' => 'Confirmer la suppression', 'ui.admin.auto_feed.confirm_delete_text_prefix' => 'Êtes-vous sûr de vouloir supprimer le flux', 'ui.admin.auto_feed.confirm_delete_warning' => 'Cette action est irréversible.', 'ui.admin.auto_feed.invalid_api_response' => 'Réponse API invalide', 'ui.admin.auto_feed.failed_to_load_feeds_prefix' => 'Échec du chargement des flux :', 'ui.admin.auto_feed.no_feeds_configured' => 'Aucun flux configuré', 'ui.admin.auto_feed.never' => 'Jamais', 'ui.admin.auto_feed.unnamed_feed' => 'Flux sans nom', 'ui.admin.auto_feed.unknown' => 'Inconnu', 'ui.admin.auto_feed.check_now' => 'Vérifier maintenant', 'ui.admin.auto_feed.checking_feed' => 'Vérification du flux...', 'ui.admin.auto_feed.select_echo_area' => 'Sélectionner une zone d\'écho...', 'ui.admin.auto_feed.name_url' => 'Nom/URL', 'ui.admin.auto_feed.articles' => 'Articles', 'ui.admin.auto_feed.last_check' => 'Dernière vérification', 'ui.admin.auto_feed.actions' => 'Actions', 'ui.admin.auto_feed.user_prefix' => 'Utilisateur n°', 'ui.admin.auto_feed.thread_replies' => 'Grouper les réponses', 'ui.admin.auto_feed.thread_replies_help' => 'Tenter de regrouper les messages de réponse en détectant les préfixes RE:/Fwd: dans les sujets', 'ui.admin.auto_feed.thread_lookup_limit' => 'Limite de recherche', 'ui.admin.auto_feed.thread_lookup_limit_help' => 'Nombre de messages récents à analyser pour trouver le message parent', 'ui.echoareas.page_title' => 'Zones d\'écho', 'ui.echoareas.heading' => 'Gestion des zones d\'écho', 'ui.echoareas.add_echo_area' => 'Ajouter une zone d\'écho', 'ui.echoareas.edit_echo_area' => 'Modifier la zone d\'écho', 'ui.echoareas.active_echo_areas' => 'Zones d\'écho actives', 'ui.echoareas.search_tags_placeholder' => 'Rechercher des tags...', 'ui.echoareas.loading_echo_areas' => 'Chargement des zones d\'écho...', 'ui.echoareas.statistics' => 'Statistiques', 'ui.echoareas.active_areas' => 'Zones actives :', 'ui.echoareas.total_messages' => 'Total des messages :', 'ui.echoareas.todays_messages' => 'Messages du jour :', 'ui.echoareas.color_legend' => 'Légende des couleurs', 'ui.echoareas.color_legend_help' => 'Les zones d\'écho peuvent être codées par couleur pour une identification facile :', 'ui.echoareas.color_green' => 'Vert', 'ui.echoareas.color_blue' => 'Bleu', 'ui.echoareas.color_red' => 'Rouge', 'ui.echoareas.color_yellow' => 'Jaune', 'ui.echoareas.color_purple' => 'Violet', 'ui.echoareas.color_orange' => 'Orange', 'ui.echoareas.color_teal' => 'Sarcelle', 'ui.echoareas.color_cyan' => 'Cyan', 'ui.echoareas.color_light_blue' => 'Bleu clair', 'ui.echoareas.color_indigo' => 'Indigo', 'ui.echoareas.color_pink' => 'Rose', 'ui.echoareas.color_gray' => 'Gris', 'ui.echoareas.legend_general_topics' => 'Sujets généraux', 'ui.echoareas.legend_technical_testing' => 'Technique/Test', 'ui.echoareas.legend_important_official' => 'Important/Officiel', 'ui.echoareas.legend_administrative' => 'Administratif', 'ui.echoareas.legend_special_interest' => 'Intérêt particulier', 'ui.echoareas.legend_regional' => 'Régional', 'ui.echoareas.tag_required' => 'Étiquette *', 'ui.echoareas.tag_help' => 'Étiquette de la zone echo (ex. : FIDONET.GEN, LOCAL.TEST)', 'ui.echoareas.description_required' => 'Description *', 'ui.echoareas.description_help' => 'Brève description de la zone echo', 'ui.echoareas.uplink_address' => 'Adresse de liaison montante', 'ui.echoareas.uplink_address_help' => 'Remplacer l\'adresse FidoNet de liaison montante', 'ui.echoareas.color' => 'Couleur', 'ui.echoareas.selected_color' => 'Sélectionnée :', 'ui.echoareas.network_domain_help' => 'Domaine réseau (ex. : fidonet, fsxnet, etc.)', 'ui.echoareas.moderator' => 'Modérateur', 'ui.echoareas.moderator_help' => 'Nom du modérateur de la zone echo', 'ui.echoareas.posting_name_policy' => 'Politique de nom de publication', 'ui.echoareas.posting_name_policy_inherit' => 'Utiliser le défaut de la liaison montante', 'ui.echoareas.posting_name_policy_real_name' => 'Nom réel', 'ui.echoareas.posting_name_policy_username' => 'Nom d\'utilisateur', 'ui.echoareas.posting_name_policy_help' => 'Remplace la politique de nom de publication de la liaison montante pour cette zone echo.', 'ui.echoareas.art_format_hint' => 'Indication de format artistique', 'ui.echoareas.art_format_hint_inherit' => 'Auto / pas de remplacement', 'ui.echoareas.art_format_hint_ansi' => 'ANSI', 'ui.echoareas.art_format_hint_amiga_ansi' => 'ANSI Amiga', 'ui.echoareas.art_format_hint_petscii' => 'PETSCII', 'ui.echoareas.art_format_hint_help' => 'Indication d\'affichage optionnelle pour les messages de cette zone lorsque la detection ANSI automatique ne suffit pas.', 'ui.echoareas.local_only' => 'Local uniquement', 'ui.echoareas.local_only_help' => 'Les messages des zones locales ne sont pas transmis aux liaisons montantes', 'ui.echoareas.sysop_access_only' => 'Accès sysop uniquement', 'ui.echoareas.sysop_access_only_help' => 'Restreindre cette zone echo aux utilisateurs sysop/admin uniquement', 'ui.echoareas.public_gemini_access' => 'Accès Gemini public', 'ui.echoareas.public_gemini_access_help' => 'Exposer cette zone echo en lecture seule sur le serveur de capsule Gemini', 'ui.echoareas.allow_media' => 'Affichage des médias intégrés', 'ui.echoareas.allow_media_help' => 'Contrôle les médias intégrés pour cette zone. Hériter utilise le paramètre du réseau.', 'ui.echoareas.allow_media_inherit' => 'Hériter du réseau', 'ui.echoareas.allow_media_allow' => 'Activé', 'ui.echoareas.allow_media_deny' => 'Désactivé', 'ui.echoareas.delete_confirm_prefix' => 'Êtes-vous sûr de vouloir supprimer la zone echo', 'ui.echoareas.delete_confirm_warning' => 'Cette action est irréversible et affectera le routage des messages.', 'ui.echoareas.none_found' => 'Aucune zone echo trouvée', 'ui.echoareas.tag' => 'Étiquette', 'ui.echoareas.messages' => 'Messages', 'ui.echoareas.uplink' => 'Liaison montante', 'ui.echoareas.local' => 'Local', 'ui.echoareas.sysop' => 'Sysop', 'ui.echoareas.local_only_title' => 'Local uniquement - non transmis aux liaisons montantes', 'ui.echoareas.sysop_access_only_title' => 'Accès sysop uniquement', 'ui.echoareas.mod_prefix' => 'Mod :', 'ui.echoareas.load_failed' => 'Échec du chargement des zones echo', 'ui.echoareas.load_details_failed' => 'Échec du chargement des détails de la zone echo', 'ui.echoareas.updated_success' => 'Zone echo mise à jour avec succès', 'ui.echoareas.created_success' => 'Zone echo créée avec succès', 'ui.echoareas.deleted_success' => 'Zone echo supprimée avec succès', 'ui.echoareas.sync_not_implemented' => 'La fonctionnalité de synchronisation n\'est pas encore implémentée', 'ui.echoareas.export_not_implemented' => 'La fonctionnalité d\'exportation n\'est pas encore implémentée', 'ui.echoareas.validate_not_implemented' => 'La fonctionnalité de validation n\'est pas encore implémentée', 'ui.shell.menu' => 'Menu', 'ui.shell.menu_main_q_title' => 'Menu principal (Q)', 'ui.login.title' => 'Connexion', 'ui.login.login_to_system' => 'Connexion à {system_name}', 'ui.login.username' => 'Nom d\'utilisateur', 'ui.login.password' => 'Mot de passe', 'ui.login.remember_me_30_days' => 'Se souvenir de moi (30 jours)', 'ui.login.no_account' => 'Vous n\'avez pas de compte ?', 'ui.login.request_access' => 'Demander un accès', 'ui.login.forgot_password' => 'Mot de passe oublié ?', 'ui.login.reset_password' => 'Réinitialiser le mot de passe', 'ui.login.sending' => 'Envoi en cours...', 'ui.login.reminder_sent_netmail_email_suffix' => '(envoyé par netmail et e-mail)', 'ui.login.reminder_sent_netmail_only_suffix' => '(envoyé par netmail)', 'ui.login.connect_via_telnet' => 'Se connecter via Telnet', 'ui.guest_doors.page_title' => 'Portes invité', 'ui.guest_doors.heading' => 'Accès invité', 'ui.guest_doors.subtitle' => 'Choisissez une porte ci-dessous pour commencer.', 'ui.guest_doors.no_doors' => 'Aucune porte invité n\'est actuellement disponible.', 'ui.guest_doors.connect' => 'Se connecter', 'ui.guest_doors.signin_link' => 'Se connecter', 'ui.guest_doors.register_link' => 'demander un compte', 'ui.register.title' => 'Inscription', 'ui.register.create_account' => 'Créer un compte', 'ui.register.approval_required' => 'L\'inscription nécessite une approbation.', 'ui.register.approval_required_help' => 'Votre compte sera examiné par un administrateur avant activation.', 'ui.register.subject_to_rules' => 'Tous les comptes sont soumis aux', 'ui.register.email_notification_note' => 'Vous recevrez un e-mail lorsque votre compte sera approuvé. Des e-mails de rappel peuvent également être envoyés. Pensez à vérifier votre dossier courrier indésirable/spam si vous ne le trouvez pas.', 'ui.register.honeypot_website_leave_blank' => 'Site web (laisser vide)', 'ui.register.username' => 'Nom d\'utilisateur', 'ui.register.username_help' => '3 à 20 caractères, lettres, chiffres et underscores uniquement', 'ui.register.password' => 'Mot de passe', 'ui.register.password_help' => 'Minimum 8 caractères. Utilisez un mélange de lettres, chiffres et symboles pour plus de sécurité.', 'ui.register.confirm_password' => 'Confirmer le mot de passe', 'ui.register.email_address' => 'Adresse e-mail', 'ui.register.email_help' => 'Facultatif - pour la récupération de compte et les notifications', 'ui.register.real_name' => 'Nom réel', 'ui.register.real_name_help' => 'Votre vrai nom (requis pour FidoNet)', 'ui.register.location' => 'Localisation', 'ui.register.location_placeholder' => 'Ville, État/Pays', 'ui.register.location_help' => 'Votre localisation (facultatif, affiché dans la liste des connectés)', 'ui.register.reason_for_joining' => 'Raison de l\'inscription', 'ui.register.reason_placeholder' => 'Dites-nous pourquoi vous souhaitez nous rejoindre...', 'ui.register.submit_registration' => 'Soumettre l\'inscription', 'ui.register.already_have_account' => 'Vous avez déjà un compte ?', 'ui.register.sign_in' => 'Se connecter', 'ui.register.password_strength.weak' => 'Faible - Ajoutez plus de variété', 'ui.register.password_strength.fair' => 'Moyen - Pourrait être plus fort', 'ui.register.password_strength.good' => 'Bon - Beau mot de passe !', 'ui.register.password_strength.strong' => 'Fort - Excellent !', 'ui.register.passwords_do_not_match' => 'Les mots de passe ne correspondent pas.', 'ui.register.submitting' => 'Envoi en cours...', 'ui.register.submitted_success' => 'Inscription soumise avec succès ! Vous serez notifié lorsque votre compte sera approuvé.', 'ui.register.go_to_login' => 'Aller à la connexion', 'ui.forgot_password.title' => 'Mot de passe oublié', 'ui.forgot_password.reset_password' => 'Réinitialiser le mot de passe', 'ui.forgot_password.instructions' => 'Entrez votre nom d\'utilisateur, votre nom réel ou votre adresse e-mail et nous vous enverrons un lien pour réinitialiser votre mot de passe.', 'ui.forgot_password.username_or_email' => 'Nom d\'utilisateur, nom réel ou e-mail', 'ui.forgot_password.username_or_email_help' => 'Entrez le nom d\'utilisateur, le nom réel ou l\'adresse e-mail associé à votre compte.', 'ui.forgot_password.send_reset_link' => 'Envoyer le lien de réinitialisation', 'ui.forgot_password.remember_password' => 'Vous vous souvenez de votre mot de passe ?', 'ui.forgot_password.back_to_login' => 'Retour à la connexion', 'ui.forgot_password.sending' => 'Envoi en cours...', 'ui.forgot_password.check_email_notice' => 'Veuillez vérifier votre boîte de réception (et le dossier spam) pour le lien de réinitialisation.', 'ui.forgot_password.request_failed' => 'Échec du traitement de la demande', 'ui.forgot_password.reset_link_sent_if_exists' => 'Si un compte avec ce nom d\'utilisateur, ce nom réel ou cet e-mail existe, un lien de réinitialisation du mot de passe a été envoyé.', 'ui.password_reset_email.subject' => 'Demande de réinitialisation de mot de passe - {system_name}', 'ui.password_reset_email.header' => 'Demande de réinitialisation de mot de passe', 'ui.password_reset_email.greeting' => 'Bonjour {name},', 'ui.password_reset_email.request_received' => 'Nous avons reçu une demande de réinitialisation de votre mot de passe pour votre compte sur {system_name}.', 'ui.password_reset_email.click_link_below' => 'Pour réinitialiser votre mot de passe, veuillez cliquer sur le lien ci-dessous :', 'ui.password_reset_email.click_button_below' => 'Pour réinitialiser votre mot de passe, veuillez cliquer sur le bouton ci-dessous :', 'ui.password_reset_email.button' => 'Réinitialiser votre mot de passe', 'ui.password_reset_email.copy_link' => 'Ou copiez et collez ce lien dans votre navigateur :', 'ui.password_reset_email.expires_in_hours' => 'Ce lien expirera dans {hours} heures.', 'ui.password_reset_email.security_notes' => 'Notes de sécurité :', 'ui.password_reset_email.note_never_share' => 'Ne partagez jamais ce lien avec quiconque', 'ui.password_reset_email.note_one_time' => 'Ce lien ne peut être utilisé qu\'une seule fois', 'ui.password_reset_email.note_request_new' => 'Si vous avez besoin d\'un autre lien de réinitialisation, faites-en la demande depuis la page de connexion', 'ui.password_reset_email.if_not_requested' => 'Si vous n\'avez pas demandé de réinitialisation de mot de passe, vous pouvez ignorer cet e-mail.', 'ui.password_reset_email.password_unchanged_notice' => 'Votre mot de passe ne sera pas modifié tant que vous n\'aurez pas cliqué sur le lien ci-dessus et créé un nouveau mot de passe.', 'ui.password_reset_email.best_regards' => 'Cordialement,', 'ui.password_reset_email.footer_automated' => 'Ceci est un message automatique de {system_name}', 'ui.password_reset_email.footer_no_reply' => 'Veuillez ne pas répondre à cet e-mail.', 'ui.reset_password.title' => 'Réinitialiser le mot de passe', 'ui.reset_password.create_new_password' => 'Créer un nouveau mot de passe', 'ui.reset_password.validating_token' => 'Validation du jeton de réinitialisation...', 'ui.reset_password.invalid_or_expired_token' => 'Jeton invalide ou expiré', 'ui.reset_password.invalid_token_help_line1' => 'Ce lien de réinitialisation de mot de passe est invalide ou a expiré.', 'ui.reset_password.invalid_token_help_line2' => 'Veuillez demander un nouveau lien de réinitialisation de mot de passe.', 'ui.reset_password.enter_new_password' => 'Veuillez entrer votre nouveau mot de passe ci-dessous.', 'ui.reset_password.new_password' => 'Nouveau mot de passe', 'ui.reset_password.password_min_length_help' => 'Le mot de passe doit comporter au moins 8 caractères.', 'ui.reset_password.confirm_new_password' => 'Confirmer le nouveau mot de passe', 'ui.reset_password.passwords_do_not_match' => 'Les mots de passe ne correspondent pas.', 'ui.reset_password.request_new_reset_link' => 'Demander un nouveau lien de réinitialisation', 'ui.reset_password.resetting' => 'Réinitialisation en cours...', 'ui.reset_password.redirect_notice' => 'Vous serez redirigé vers la page de connexion dans 3 secondes...', 'ui.reset_password.success_reset_complete' => 'Le mot de passe a été réinitialisé avec succès. Vous pouvez maintenant vous connecter avec votre nouveau mot de passe.', 'ui.profile.title' => 'Profil', 'ui.profile.my_profile' => 'Mon profil', 'ui.profile.view_profile' => 'Voir le profil', 'ui.profile.profile_information' => 'Informations du profil', 'ui.profile.username' => 'Nom d\'utilisateur', 'ui.profile.username_readonly_help' => 'Le nom d\'utilisateur ne peut pas être modifié', 'ui.profile.real_name' => 'Nom réel', 'ui.profile.real_name_help' => 'Votre vrai nom tel qu\'affiché dans les messages', 'ui.profile.email_address' => 'Adresse e-mail', 'ui.profile.email_help' => 'Adresse e-mail (facultative, non affichée publiquement)', 'ui.profile.location' => 'Localisation', 'ui.profile.location_placeholder' => 'Ville, État/Pays', 'ui.profile.location_help' => 'Votre localisation (affichée dans la liste des connectés)', 'ui.profile.about_me' => 'A propos de moi', 'ui.profile.about_me_placeholder' => 'Parlez un peu de vous...', 'ui.profile.about_me_help' => 'Markdown supporté. Affiché sur votre profil public.', 'ui.profile.change_password' => 'Changer le mot de passe', 'ui.profile.current_password' => 'Mot de passe actuel', 'ui.profile.new_password' => 'Nouveau mot de passe', 'ui.profile.password_blank_keep_help' => 'Laissez les champs de mot de passe vides pour conserver le mot de passe actuel', 'ui.profile.account_created' => 'Compte créé', 'ui.profile.last_login' => 'Dernière connexion', 'ui.profile.never' => 'Jamais', 'ui.profile.update_profile' => 'Mettre à jour le profil', 'ui.profile.system_information' => 'Informations système', 'ui.profile.your_network_information' => 'Vos informations réseau', 'ui.profile.no_networks_configured' => 'Aucun réseau configuré.', 'ui.profile.show_netmail_addresses' => 'Afficher les adresses netmail', 'ui.profile.netmail_addresses_title' => 'Adresses netmail', 'ui.profile.netmail_col_network' => 'Nom du réseau', 'ui.profile.netmail_col_address' => 'Adresse réseau', 'ui.profile.system' => 'Système', 'ui.profile.address' => 'Adresse', 'ui.profile.role' => 'Rôle', 'ui.profile.role_administrator' => 'Administrateur', 'ui.profile.role_user' => 'Utilisateur', 'ui.profile.activity_summary' => 'Résumé d\'activité', 'ui.profile.credits' => 'Crédits', 'ui.profile.disabled' => 'Désactivé', 'ui.profile.netmail_sent' => 'Netmails envoyés', 'ui.profile.echomail_posted' => 'Echomails publiés', 'ui.profile.total_messages' => 'Total des messages', 'ui.profile.files_downloaded' => 'Fichiers téléchargés', 'ui.profile.files_uploaded' => 'Fichiers envoyés', 'ui.profile.transfer_ratio' => 'Ratio D/E', 'ui.profile.ratio_na' => 'N/A', 'ui.profile.netmail_username_note' => '{username} peut également être utilisé à la place de votre nom complet.', 'ui.profile.credit_system' => 'Système de crédits', 'ui.profile.credit_costs_rewards' => 'Coûts et récompenses en crédits :', 'ui.profile.daily_login' => 'Connexion quotidienne', 'ui.profile.crashmail' => 'Crashmail', 'ui.profile.credit_note' => 'Les portes web et autres éléments du système peuvent avoir des coûts ou récompenses supplémentaires.', 'ui.profile.updating_profile' => 'Mise à jour du profil...', 'ui.profile.updated_successfully' => 'Profil mis à jour avec succès !', 'ui.user_profile.title_with_username' => 'Profil de {username}', 'ui.user_profile.edit_my_profile' => 'Modifier mon profil', 'ui.user_profile.user_information' => 'Informations utilisateur', 'ui.user_profile.username' => 'Nom d\'utilisateur', 'ui.user_profile.real_name' => 'Vrai nom', 'ui.user_profile.not_specified' => 'Non spécifié', 'ui.user_profile.location' => 'Localisation', 'ui.user_profile.fidonet_address' => 'Adresse FidoNet', 'ui.user_profile.about_me' => 'A propos de moi', 'ui.user_profile.about_me_empty' => "N'a rien partagé pour l'instant", 'ui.user_profile.member_since' => 'Membre depuis', 'ui.user_profile.last_seen' => 'Dernière connexion', 'ui.user_profile.role' => 'Rôle', 'ui.user_profile.role_administrator' => 'Administrateur', 'ui.user_profile.role_user' => 'Utilisateur', 'ui.user_profile.credits' => 'Crédits', 'ui.user_profile.current_balance' => 'Solde actuel', 'ui.user_profile.send_credits' => 'Envoyer des crédits', 'ui.user_profile.amount' => 'Montant', 'ui.user_profile.send_credits_limit_fee' => 'Maximum 200 crédits par transaction. Des frais de {fee_percent}% s\'appliquent.', 'ui.user_profile.message_optional' => 'Message (facultatif)', 'ui.user_profile.message_optional_placeholder' => 'À quoi cela correspond-il ?', 'ui.user_profile.send_credits_fee_note' => 'Frais de transaction de {fee_percent}% distribués aux opérateurs système', 'ui.user_profile.activity_summary' => 'Résumé d\'activité', 'ui.user_profile.netmail_sent' => 'Netmails envoyés', 'ui.user_profile.echomail_posted' => 'Echomails publiés', 'ui.user_profile.total_messages' => 'Total des messages', 'ui.user_profile.additional_info_private' => 'Les informations supplémentaires du profil sont privées', 'ui.user_profile.transaction_history' => 'Historique des transactions', 'ui.user_profile.admin_view' => 'Vue administrateur', 'ui.user_profile.date' => 'Date', 'ui.user_profile.type' => 'Type', 'ui.user_profile.description' => 'Description', 'ui.user_profile.balance' => 'Solde', 'ui.user_profile.load_more_transactions' => 'Charger plus de transactions', 'ui.user_profile.no_transactions_yet' => 'Aucune transaction pour l\'instant', 'ui.user_profile.no_more_transactions' => 'Plus de transactions', 'ui.user_profile.load_transactions_failed' => 'Échec du chargement des transactions', 'ui.user_profile.tab.transaction_history' => 'Historique des transactions', 'ui.user_profile.tab.activity_log' => "Journal d'activité", 'ui.user_profile.activity_log.date' => 'Date', 'ui.user_profile.activity_log.category' => 'Catégorie', 'ui.user_profile.activity_log.activity' => 'Activité', 'ui.user_profile.activity_log.detail' => 'Détail', 'ui.user_profile.activity_log.no_activity' => "Aucune activité enregistrée pour l'instant.", 'ui.user_profile.activity_log.load_more' => "Charger plus d'activité", 'ui.user_profile.activity_log.no_more' => "Plus d'activité", 'ui.user_profile.activity_log.load_failed' => "Échec du chargement du journal d'activité", 'ui.user_profile.sending' => 'Envoi en cours...', 'ui.user_profile.send_credits_success' => '{symbol}{amount} envoyés avec succès à {username} ! (Frais : {symbol}{fee}, Reçu : {symbol}{received})', 'ui.user_profile.transaction_type.daily_login' => 'Connexion quotidienne', 'ui.user_profile.transaction_type.system_reward' => 'Récompense système', 'ui.user_profile.transaction_type.payment' => 'Paiement', 'ui.user_profile.transaction_type.admin_adjustment' => 'Ajustement administrateur', 'ui.user_profile.transaction_type.unknown' => 'Inconnu', 'ui.shared_message.title' => 'Message partagé', 'ui.shared_message.loading' => 'Chargement du message partagé...', 'ui.shared_message.login_to_reply' => 'Se connecter pour répondre', 'ui.shared_message.unable_to_load' => 'Impossible de charger le message', 'ui.shared_message.go_to_main_site' => 'Aller au site principal', 'ui.shared_message.login_required' => 'Connexion requise', 'ui.shared_message.login_required_help' => 'Ce message partagé nécessite d\'être connecté pour le consulter.', 'ui.shared_message.about_this_message' => 'À propos de ce message', 'ui.shared_message.about_text' => 'Ce message provient d\'un système echomail. L\'echomail fait partie d\'un réseau mondial de babillards électroniques permettant aux utilisateurs d\'envoyer des messages et de participer à des zones de discussion (echoareas) sur différents systèmes.', 'ui.shared_message.join_conversation' => 'Envie de rejoindre la conversation ?', 'ui.shared_message.join_conversation_help' => 'Pour consulter davantage de messages, participer aux discussions et répondre à des publications comme celle-ci, vous devez créer un compte sur ce système.', 'ui.shared_message.register_now' => 'S\'inscrire maintenant', 'ui.shared_message.already_have_account' => 'Déjà un compte ?', 'ui.shared_message.network' => 'Réseau', 'ui.shared_message.powered_by' => 'Propulsé par', 'ui.shared_message.shared_on' => 'Ce message a été partagé', 'ui.shared_message.shared_by' => 'Partagé par {name}', 'ui.shared_message.viewed_times' => 'Consulté {count} fois', 'ui.shared_message.local_bulletin_board' => 'Babillard local', 'ui.shared_message.from_label' => 'De :', 'ui.shared_message.to_label' => 'À :', 'ui.shared_message.date_label' => 'Date :', 'ui.shared_message.subject_label' => 'Sujet :', 'ui.shared_message.kludge_lines' => 'Lignes kludge', 'ui.shared_message.show_kludge_lines' => 'Afficher les lignes kludge', 'ui.shared_message.load_failed' => 'Échec du chargement du message partagé', 'ui.shared_message.not_available' => 'Ce message partagé n\'est pas disponible. Il a peut-être expiré ou été révoqué.', 'ui.shared_message.load_failed_retry' => 'Échec du chargement du message partagé. Veuillez réessayer ultérieurement.', 'ui.netmail.title' => 'Netmail', 'ui.netmail.compose' => 'Rédiger', 'ui.netmail.messages' => 'Messages', 'ui.netmail.delete_selected' => 'Supprimer la sélection', 'ui.netmail.quick_stats' => 'Statistiques rapides', 'ui.address_book.title' => 'Carnet d\'adresses', 'ui.address_book.search_placeholder' => 'Rechercher des adresses...', 'ui.address_book.entries' => 'entrées', 'ui.address_book.add_entry' => 'Ajouter une entrée au carnet d\'adresses', 'ui.address_book.edit_entry' => 'Modifier une entrée du carnet d\'adresses', 'ui.address_book.no_entries_found' => 'Aucune entrée trouvée', 'ui.address_book.unnamed' => 'Sans nom', 'ui.address_book.no_address' => 'Aucune adresse', 'ui.address_book.user_id' => 'ID utilisateur', 'ui.address_book.node_address' => 'Adresse de n?ud', 'ui.address_book.email_address' => 'Adresse e-mail', 'ui.address_book.name_placeholder' => 'Entrez un nom descriptif (ex. : Jean Dupont)', 'ui.address_book.name_help' => 'Nom descriptif pour ce contact', 'ui.address_book.user_id_placeholder' => 'Entrez l\'ID utilisateur pour la messagerie', 'ui.address_book.user_id_help' => 'ID utilisateur/pseudonyme à utiliser lors de l\'envoi de messages', 'ui.address_book.node_address_help' => 'Format : zone:net/node ou zone:net/node.point', 'ui.address_book.email_help' => 'Pour votre référence uniquement - non utilisé pour la messagerie', 'ui.address_book.description_placeholder' => 'Notes sur ce contact...', 'ui.address_book.always_crashmail' => 'Toujours utiliser le crashmail pour ce destinataire', 'ui.address_book.always_crashmail_help' => 'Activer automatiquement le crashmail lors de la rédaction de messages à ce contact.', 'ui.echomail.title' => 'Echomail', 'ui.echomail.post_message' => 'Publier un message', 'ui.echomail.edit_area' => 'Modifier la zone', 'ui.echomail.viewing_prefix' => 'Affichage :', 'ui.echomail.viewing_all' => 'Affichage : Tous les messages', 'ui.echomail.echo_list' => 'Liste des echos', 'ui.echomail.all_subscribed_areas' => 'Toutes les zones abonnées', 'ui.echomail.search_areas_placeholder' => 'Rechercher des zones...', 'ui.echomail.tab_area_list' => 'Liste des zones', 'ui.echomail.tab_interests' => 'Centres d\'intérêt', 'ui.echomail.loading_areas' => 'Chargement des zones...', 'ui.echomail.recent_messages' => 'Messages récents', 'ui.echomail.to_me' => 'Pour moi', 'ui.echomail.saved_items' => 'Éléments sauvegardés', 'ui.echomail.echo_areas' => 'Zones echo', 'ui.echomail.areas' => 'Zones', 'ui.echomail.manage_subscriptions' => 'Gérer les abonnements', 'ui.echomail.manage_interests' => 'Gérer les centres d\'intérêt', 'ui.echomail.share_message' => 'Partager le message', 'ui.echomail.share_message_help' => 'Partagez ce message echomail avec d\'autres via un lien web.', 'ui.echomail.allow_anonymous_access' => 'Autoriser l\'accès anonyme', 'ui.echomail.allow_anonymous_access_help' => 'Toute personne disposant du lien peut le consulter sans se connecter', 'ui.echomail.link_expires_after' => 'Le lien expire après :', 'ui.echomail.never_expires' => 'N\'expire jamais', 'ui.echomail.share_link_created_success' => 'Lien de partage créé avec succès ! Vous pouvez maintenant copier et partager cette URL.', 'ui.echomail.create_share_link' => 'Créer un lien de partage', 'ui.echomail.get_friendly_url' => 'Obtenir une URL conviviale', 'ui.echomail.revoke_share' => 'Révoquer le partage', 'ui.echomail.messages_refreshed' => 'Messages actualisés', 'ui.echomail.written' => 'Écrit', 'ui.echomail.saved_items.removed' => 'Message retiré des éléments sauvegardés', 'ui.echomail.saved_items.saved' => 'Message sauvegardé pour plus tard', 'ui.echomail.shares.using_existing' => 'Utilisation du lien de partage existant', 'ui.echomail.shares.created_success' => 'Lien de partage créé avec succès !', 'ui.echomail.shares.friendly_url_generated' => 'URL conviviale générée !', 'ui.echomail.shares.revoked' => 'Lien de partage révoqué', 'ui.echomail.shares.url_copied' => 'URL de partage copiée dans le presse-papiers !', 'ui.echomail.shares.existing_links' => 'Partagé par d\'autres :', 'ui.echomail.shares.by_user' => 'par {username}', 'ui.files.title' => 'Zones de Fichiers', 'ui.files.security_notice_label' => 'Avis de sécurité :', 'ui.files.security_notice_text' => 'Vous êtes responsable de vous assurer que les fichiers que vous téléchargez sont sûrs. Utilisez un logiciel de protection contre les logiciels malveillants approprié.', 'ui.files.recent_uploads' => 'Téléversements récents', 'ui.files.my_uploads' => 'Mes téléversements', 'ui.files.upload_file' => 'Téléverser un fichier', 'ui.files.search_placeholder' => 'Rechercher des fichiers...', 'ui.files.loading_recent_uploads' => 'Chargement des téléversements récents...', 'ui.files.statistics' => 'Statistiques', 'ui.files.status_heading' => 'État des zones de fichiers', 'ui.files.total_areas' => 'Total des zones', 'ui.files.total_files' => 'Total des fichiers', 'ui.files.total_size' => 'Taille totale', 'ui.files.file_details' => 'Détails du fichier', 'ui.files.filename' => 'Nom du fichier', 'ui.files.description' => 'Description', 'ui.files.size' => 'Taille', 'ui.files.uploaded' => 'Téléversé', 'ui.files.from' => 'De', 'ui.files.virus_scan' => 'Analyse antivirus', 'ui.files.download' => 'Télécharger', 'ui.files.copy_magnet_link' => 'Copier le lien magnet', 'ui.files.share_file' => 'Partager le fichier', 'ui.files.link_expiry' => 'Expiration du lien', 'ui.files.share_link' => 'Lien de partage', 'ui.files.revoke_link' => 'Révoquer le lien', 'ui.files.create_share_link' => 'Créer un lien de partage', 'ui.files.select_file_required' => 'Sélectionner un fichier *', 'ui.files.maximum_file_size' => 'Taille maximale du fichier', 'ui.files.short_description_required' => 'Description courte *', 'ui.files.short_description_help' => 'Brève description affichée dans les listes de fichiers.', 'ui.files.long_description' => 'Description longue', 'ui.files.long_description_help' => 'Description étendue facultative (texte brut uniquement).', 'ui.files.upload' => 'Téléverser', 'ui.files.recent_uploads_load_failed' => 'Échec du chargement des téléversements récents', 'ui.files.my_uploads_load_failed' => 'Échec du chargement de vos téléversements', 'ui.files.no_recent_uploads' => 'Aucun fichier n\'a encore été téléversé', 'ui.files.no_my_uploads' => 'Vous n\'avez encore téléversé aucun fichier', 'ui.files.area' => 'Zone', 'ui.files.status' => 'Statut', 'ui.files.actions' => 'Actions', 'ui.files.virus_scan_now' => 'Analyse antivirus', 'ui.files.scanning' => 'Analyse en cours?', 'ui.files.scan_failed' => 'Échec de l\'analyse antivirus', 'ui.files.virus_scan_clean' => 'Analyse antivirus : Sain', 'ui.files.virus_detected_prefix' => 'Virus détecté : ', 'ui.files.virus_scan_error' => 'Analyse antivirus : Erreur', 'ui.files.virus_scan_skipped' => 'Analyse antivirus : Ignorée', 'ui.files.shared' => 'Partagé', 'ui.files.file_areas_load_failed' => 'Échec du chargement des zones de fichiers', 'ui.files.no_file_areas' => 'Aucune zone de fichiers disponible', 'ui.files.search_areas_placeholder' => 'Rechercher des zones?', 'ui.files.files_count_label' => 'fichiers', 'ui.files.loading_files' => 'Chargement des fichiers...', 'ui.files.load_files_failed' => 'Échec du chargement des fichiers', 'ui.files.no_files_in_area' => 'Aucun fichier dans cette zone', 'ui.files.not_scanned' => 'Non analysé', 'ui.files.status_pending' => 'En attente d\'approbation', 'ui.files.status_approved' => 'Approuvé', 'ui.files.status_rejected' => 'Rejeté', 'ui.files.clean' => 'Sain', 'ui.files.infected' => 'Infecté', 'ui.files.scan_error' => 'Erreur d\'analyse', 'ui.files.skipped' => 'Ignoré', 'ui.files.no_description' => 'Aucune description', 'ui.files.load_details_failed' => 'Échec du chargement des détails du fichier', 'ui.files.select_area_first' => 'Veuillez d\'abord sélectionner une zone de fichiers', 'ui.files.select_file_prompt' => 'Veuillez sélectionner un fichier', 'ui.files.upload_success' => 'Fichier téléversé avec succès', 'ui.files.upload_pending_approval' => 'Fichier téléversé et mis en attente d\'approbation', 'ui.files.upload_pending_approval_multiple' => '{count} fichiers téléversés et mis en attente d\'approbation', 'ui.files.upload_mixed_results' => '{approved} fichier(s) téléversé(s) et {pending} en attente d\'approbation', 'ui.files.delete_confirm' => 'Êtes-vous sûr de vouloir supprimer « {filename} » ? Cette action est irréversible.', 'ui.files.delete_success' => 'Fichier supprimé avec succès', 'ui.files.rename' => 'Renommer', 'ui.files.rename_file' => 'Renommer le fichier', 'ui.files.new_filename' => 'Nouveau nom de fichier', 'ui.files.rename_success' => 'Fichier renommé avec succès', 'ui.files.active_share_exists' => 'Ce fichier possède déjà un lien de partage actif.', 'ui.files.revoke_confirm' => 'Êtes-vous sûr de vouloir révoquer ce lien de partage ? Toute personne disposant du lien ne pourra plus y accéder.', 'ui.files.share_revoked' => 'Lien de partage révoqué', 'ui.files.share_link_copied_clipboard' => 'Lien de partage copié dans le presse-papiers', 'ui.files.share_link_copied' => 'Lien de partage copié', 'ui.files.edit' => 'Modifier', 'ui.files.edit_file' => 'Modifier le fichier', 'ui.files.edit_success' => 'Fichier mis à jour avec succès', 'ui.files.move_to_area' => 'Déplacer vers une zone', 'ui.files.scan_status_save_failed' => 'Échec de la mise à jour du statut de scan', 'ui.files.scan_status_saved' => 'Statut de scan mis à jour', 'ui.files.short_description' => 'Description courte', 'ui.files.virus_name_placeholder' => 'Nom du virus (optionnel)', 'ui.polls.title' => 'Sondages', 'ui.polls.create' => 'Créer un sondage', 'ui.polls.loading' => 'Chargement du sondage...', 'ui.polls.description' => 'Parcourez les sondages actifs et votez pour révéler les résultats.', 'ui.polls.previous' => 'Sondage précédent', 'ui.polls.next' => 'Sondage suivant', 'ui.polls.create.title' => 'Créer un sondage', 'ui.polls.create.heading' => 'Créer un nouveau sondage', 'ui.polls.create.cost_badge' => 'Coût : {cost} crédits', 'ui.polls.create.insufficient_credits' => 'Crédits insuffisants', 'ui.polls.create.insufficient_credits_help' => 'Vous avez besoin de {cost} crédits pour créer un sondage, mais vous n\'avez que {balance} crédits.', 'ui.polls.create.cost_info_prefix' => 'La création d\'un sondage coûte', 'ui.polls.create.current_balance' => 'Votre solde actuel :', 'ui.polls.create.credits' => 'crédits', 'ui.polls.create.question_required' => 'Question du sondage *', 'ui.polls.create.question_placeholder' => 'Que souhaitez-vous demander ?', 'ui.polls.create.characters_minimum' => 'caractères (minimum 10)', 'ui.polls.create.options_required' => 'Options du sondage * (2-10)', 'ui.polls.create.option_placeholder' => 'Saisir une option', 'ui.polls.create.add_option' => 'Ajouter une option', 'ui.polls.create.options_help' => 'Chaque option doit être unique et ne pas dépasser 200 caractères', 'ui.polls.create.note_label' => 'Remarque :', 'ui.polls.create.note_text' => 'Une fois créés, les sondages ne peuvent pas être modifiés ni supprimés. Assurez-vous que votre question et vos options sont correctes avant de soumettre.', 'ui.polls.create.submit' => 'Créer le sondage ({cost} crédits)', 'ui.polls.create.max_options_allowed' => 'Maximum 10 options autorisées', 'ui.polls.create.question_min_length' => 'La question doit comporter au moins 10 caractères', 'ui.polls.create.min_options_required' => 'Veuillez fournir au moins 2 options', 'ui.polls.create.options_unique_required' => 'Toutes les options doivent être uniques', 'ui.polls.create.creating' => 'Création en cours...', 'ui.polls.create.created_success_spent' => 'Sondage créé avec succès ! Vous avez dépensé {spent} crédits.', 'ui.polls.create.error_prefix' => 'Erreur : ', 'ui.shoutbox.title' => 'Shoutbox', 'ui.shoutbox.loading' => 'Chargement des messages...', 'ui.shoutbox.load_older' => 'Charger les anciens messages', 'ui.shoutbox.leave_shout' => 'Laisser un message...', 'ui.shoutbox.post' => 'Publier', 'ui.shoutbox.max_chars' => '280 caractères maximum.', 'ui.admin.shoutbox.page_title' => 'Shoutbox', 'ui.admin.shoutbox.heading' => 'Modération de la Shoutbox', 'ui.admin.shoutbox.user' => 'Utilisateur', 'ui.admin.shoutbox.message' => 'Message', 'ui.admin.shoutbox.status' => 'Statut', 'ui.admin.shoutbox.created' => 'Créé', 'ui.admin.shoutbox.actions' => 'Actions', 'ui.admin.shoutbox.error_loading_shouts' => 'Erreur lors du chargement des messages', 'ui.admin.shoutbox.hidden' => 'Masqué', 'ui.admin.shoutbox.visible' => 'Visible', 'ui.admin.shoutbox.unhide' => 'Afficher', 'ui.admin.shoutbox.hide' => 'Masquer', 'ui.admin.shoutbox.hidden_success' => 'Message masqué avec succès', 'ui.admin.shoutbox.unhidden_success' => 'Message affiché avec succès', 'ui.admin.shoutbox.deleted_success' => 'Message supprimé avec succès', 'ui.admin.shoutbox.failed_to_update' => 'Échec de la mise à jour du message', 'ui.admin.shoutbox.failed_to_delete' => 'Échec de la suppression du message', 'ui.admin.shoutbox.confirm_delete' => 'Supprimer ce message ?', 'ui.chat.page_title' => 'Chat', 'ui.chat.heading' => 'Chat', 'ui.chat.rooms' => 'Salons', 'ui.chat.direct' => 'Direct', 'ui.chat.lobby' => 'Accueil', 'ui.chat.load_older_messages' => 'Charger les anciens messages', 'ui.chat.type_message_placeholder' => 'Saisir un message...', 'ui.chat.view_profile' => 'Voir le profil', 'ui.chat.kick' => 'Expulser', 'ui.chat.ban' => 'Bannir', 'ui.chat.no_one_online' => 'Personne en ligne', 'ui.chat.room' => 'Salon', 'ui.chat.moderation_hint' => 'Clic droit ou clic pour modérer', 'ui.chat.system' => 'Système', 'ui.chat.confirm_kick' => 'Expulser cet utilisateur du salon ?', 'ui.chat.confirm_ban' => 'Bannir cet utilisateur du salon ?', 'ui.chat.send_failed' => 'Échec de l\'envoi du message', 'ui.chat.moderation_failed' => 'Échec de la modération', 'ui.binkp.page_title' => 'État Binkp', 'ui.binkp.heading' => 'État Binkp', 'ui.binkp.subheading' => 'Surveiller et gérer vos connexions Binkp TCP/IP', 'ui.binkp.system_status' => 'État du système', 'ui.binkp.inbound_queue' => 'File d\'attente entrante', 'ui.binkp.outbound_queue' => 'File d\'attente sortante', 'ui.binkp.uplinks' => 'Uplinks', 'ui.binkp.status_tab' => 'État', 'ui.binkp.uplinks_tab' => 'Uplinks', 'ui.binkp.queues_tab' => 'Files d\'attente', 'ui.binkp.logs_tab' => 'Journaux', 'ui.binkp.system_information' => 'Informations système', 'ui.binkp.loading_system_information' => 'Chargement des informations système...', 'ui.binkp.uplink_status' => 'État des uplinks', 'ui.binkp.loading_uplink_status' => 'Chargement de l\'état des uplinks...', 'ui.binkp.poll_all' => 'Interroger tout', 'ui.binkp.configured_uplinks' => 'Uplinks configurés', 'ui.binkp.uplink' => 'Uplink', 'ui.binkp.status' => 'État', 'ui.binkp.schedule' => 'Planification', 'ui.binkp.actions' => 'Actions', 'ui.binkp.address' => 'Adresse', 'ui.binkp.sysop' => 'Sysop', 'ui.binkp.location' => 'Emplacement', 'ui.binkp.process' => 'Traiter', 'ui.binkp.send' => 'Envoyer', 'ui.binkp.poll' => 'Interroger', 'ui.binkp.enabled' => 'Activé', 'ui.binkp.disabled' => 'Désactivé', 'ui.binkp.checking' => 'Vérification...', 'ui.binkp.online' => 'En ligne', 'ui.binkp.offline' => 'Hors ligne', 'ui.binkp.no_uplinks_configured' => 'Aucun uplink configuré', 'ui.binkp.error_loading_status_prefix' => 'Erreur lors du chargement de l\'état :', 'ui.binkp.error_loading_uplinks_prefix' => 'Erreur lors du chargement des uplinks :', 'ui.binkp.file_count' => '{count} fichiers', 'ui.binkp.pending' => 'En attente', 'ui.binkp.errors' => 'Erreurs', 'ui.binkp.stdout' => 'STDOUT', 'ui.binkp.stderr' => 'STDERR', 'ui.binkp.http_status_error' => 'HTTP {code} : {text}', 'ui.binkp.inbound_api_http_error' => 'API entrante : HTTP {code}', 'ui.binkp.outbound_api_http_error' => 'API sortante : HTTP {code}', 'ui.binkp.zero_bytes' => '0 octet', 'ui.binkp.byte_units.bytes' => 'Octets', 'ui.binkp.byte_units.kb' => 'Ko', 'ui.binkp.byte_units.mb' => 'Mo', 'ui.binkp.byte_units.gb' => 'Go', 'ui.binkp.poll_schedule_cron' => 'Planification d\'interrogation (format cron)', 'ui.binkp.poll_schedule_placeholder' => '0 */4 * * *', 'ui.binkp.logs_heading' => 'Journaux Binkp', 'ui.binkp.lines_option' => '{count} lignes', 'ui.binkp.loading_logs' => 'Chargement des journaux...', 'ui.binkp.add_new_uplink' => 'Ajouter un nouvel uplink', 'ui.binkp.ftn_address_required' => 'Adresse FTN *', 'ui.binkp.ftn_address_placeholder' => '1:123/456', 'ui.binkp.hostname_required' => 'Nom d\'hôte *', 'ui.binkp.hostname_placeholder' => 'bbs.example.com', 'ui.binkp.default_every_4_hours' => 'Par défaut : toutes les 4 heures', 'ui.binkp.add_uplink' => 'Ajouter l\'uplink', 'ui.binkp.configured_count' => '{count} configuré(s)', 'ui.binkp.message_count' => '{count} msg(s)', 'ui.binkp.poll_completed_exit' => 'Interrogation terminée (sortie {code})', 'ui.binkp.poll_failed_prefix' => 'Échec de l\'interrogation : ', 'ui.binkp.error_polling_uplink_prefix' => 'Erreur lors de l\'interrogation de l\'uplink : ', 'ui.binkp.all_uplinks_polled_exit' => 'Tous les uplinks interrogés (sortie {code})', 'ui.binkp.polling_failed_prefix' => 'Échec de l\'interrogation : ', 'ui.binkp.error_polling_uplinks_prefix' => 'Erreur lors de l\'interrogation des uplinks : ', 'ui.binkp.inbound_processing_completed' => 'Traitement entrant terminé', 'ui.binkp.processing_failed_prefix' => 'Échec du traitement : ', 'ui.binkp.error_processing_inbound_prefix' => 'Erreur lors du traitement entrant : ', 'ui.binkp.outbound_processing_completed' => 'Traitement sortant terminé', 'ui.binkp.error_processing_outbound_prefix' => 'Erreur lors du traitement sortant : ', 'ui.binkp.uplink_added_success' => 'Uplink ajouté avec succès', 'ui.binkp.add_uplink_failed_prefix' => 'Échec de l\'ajout de l\'uplink : ', 'ui.binkp.error_adding_uplink_prefix' => 'Erreur lors de l\'ajout de l\'uplink : ', 'ui.binkp.remove_uplink_confirm' => 'Supprimer l\'uplink {address} ?', 'ui.binkp.uplink_removed_success' => 'Uplink supprimé avec succès', 'ui.binkp.remove_uplink_failed_prefix' => 'Échec de la suppression de l\'uplink : ', 'ui.binkp.error_removing_uplink_prefix' => 'Erreur lors de la suppression de l\'uplink : ', 'ui.binkp.packet_processing_failed_prefix' => 'Échec du traitement du paquet : ', 'ui.binkp.packet_processing_completed_exit' => 'Traitement du paquet terminé (sortie {code})', 'ui.binkp.error_processing_packets_prefix' => 'Erreur lors du traitement des paquets : ', 'ui.binkp.poll_failed' => 'Échec de l\'interrogation', 'ui.binkp.polling_failed' => 'Échec de l\'interrogation', 'ui.binkp.processing_failed' => 'Échec du traitement', 'ui.binkp.add_uplink_failed' => 'Échec de l\'ajout de l\'uplink', 'ui.binkp.remove_uplink_failed' => 'Échec de la suppression de l\'uplink', 'ui.binkp.unknown_error' => 'Erreur inconnue', 'ui.binkp.check_status' => 'Vérifier', 'ui.binkp.check_status_title' => 'Vérifier l\'état de la connectivité', 'ui.binkp.poll_all_confirm' => 'Interroger tous les uplinks maintenant ?', 'ui.binkp.poll_all_confirm_warning' => 'Avertissement : Une interrogation excessive peut entraîner une limitation du débit ou des blocages IP par les systèmes distants.', 'ui.echolist.search_min_chars' => 'Veuillez saisir au moins 2 caractères pour rechercher', 'ui.echolist.page_title' => 'Zones Echo', 'ui.echolist.heading' => 'Liste Echo', 'ui.echolist.filter_heading' => 'Filtrer les zones Echo', 'ui.echolist.show_subscribed_only' => 'Afficher uniquement les zones abonnées', 'ui.echolist.show_unread_only' => 'Afficher uniquement les zones avec des messages non lus', 'ui.echolist.area_filter_placeholder' => 'Tapez pour filtrer par nom ou description...', 'ui.echolist.area_filter_help' => 'Filtre la liste ci-dessous en temps réel', 'ui.echolist.search_heading' => 'Rechercher des messages', 'ui.echolist.search_placeholder' => 'Rechercher dans le contenu des messages...', 'ui.echolist.search_help' => 'Rechercher dans tout le contenu des messages echomail', 'ui.echolist.loading' => 'Chargement des echos...', 'ui.echolist.stats.total_echos' => 'Total des echos', 'ui.echolist.stats.total_messages' => 'Total des messages', 'ui.echolist.stats.networks' => 'Réseaux', 'ui.echolist.stats.recent_messages' => 'Messages (24h)', 'ui.echolist.local' => 'Local', 'ui.echolist.unknown' => 'Inconnu', 'ui.echolist.load_failed' => 'Échec du chargement des zones Echo', 'ui.echolist.none_available' => 'Aucune zone Echo disponible.', 'ui.echolist.new_post' => 'Nouveau message', 'ui.echolist.new_messages' => 'Nouveaux messages', 'ui.echolist.local_areas' => 'Zones locales', 'ui.echolist.lovlynet_network' => 'Réseau LOVLYNET', 'ui.echolist.network_suffix' => 'Réseau', 'ui.echolist.area_count' => 'zone', 'ui.echolist.plural_suffix' => 's', 'ui.echolist.sysop_badge' => 'Sysop', 'ui.echolist.no_description' => 'Aucune description', 'ui.echolist.moderator_prefix' => 'Modérateur :', 'ui.echolist.unread_of_posts' => '{unread} non lu(s) sur {total} messages', 'ui.echolist.post_count' => '{total} messages', 'ui.echolist.by_author' => 'par {author}', 'ui.echolist.time.never' => 'Jamais', 'ui.echolist.time.just_now' => 'À l\'instant', 'ui.echolist.time.minutes_ago' => 'il y a {count}min', 'ui.echolist.time.hours_ago' => 'il y a {count}h', 'ui.echolist.time.days_ago' => 'il y a {count}j', 'ui.nodelist.node_details' => 'Détails du n?ud', 'ui.nodelist.back_to_list' => 'Retour à la liste', 'ui.nodelist.system_information' => 'Informations système', 'ui.nodelist.system_name' => 'Nom du système', 'ui.nodelist.sysop' => 'Sysop', 'ui.nodelist.location' => 'Emplacement', 'ui.nodelist.phone' => 'Téléphone', 'ui.nodelist.baud_rate' => 'Débit en bauds', 'ui.nodelist.not_specified' => 'Non spécifié', 'ui.nodelist.unpublished' => 'Non publié', 'ui.nodelist.address_components' => 'Composants de l\'adresse', 'ui.nodelist.zone' => 'Zone', 'ui.nodelist.net' => 'Réseau', 'ui.nodelist.node' => 'N?ud', 'ui.nodelist.point' => 'Point', 'ui.nodelist.full' => 'Complet', 'ui.nodelist.capabilities_flags' => 'Capacités et indicateurs du n?ud', 'ui.nodelist.quick_actions' => 'Actions rapides', 'ui.nodelist.send_netmail' => 'Envoyer un Netmail', 'ui.nodelist.not_found' => 'Absent de la liste des n?uds', 'ui.nodelist.view_full_details' => 'Voir les détails complets du n?ud', 'ui.nodelist.login_to_send_netmail' => 'Connexion pour envoyer un Netmail', 'ui.nodelist.file_request' => 'Demande de fichier', 'ui.nodelist.connection_information' => 'Informations de connexion', 'ui.nodelist.internet_binkp' => 'Internet (BinkP)', 'ui.nodelist.internet_telnet' => 'Internet (Telnet)', 'ui.nodelist.dialup_pots' => 'Accès commuté (POTS)', 'ui.nodelist.no_connection_info' => 'Aucune information de connexion disponible', 'ui.nodelist.continuous_mail' => 'Courrier continu (24h/24)', 'ui.nodelist.mail_on_hold' => 'Courrier en attente', 'ui.nodelist.system_down' => 'Système hors ligne', 'ui.nodelist.http' => 'HTTP', 'ui.nodelist.telnet' => 'Telnet', 'ui.nodelist.ssh' => 'SSH', 'ui.nodelist.file_request_coming_soon' => 'La fonctionnalité de demande de fichiers arrive bientôt !', 'ui.nodelist.index.heading' => 'Navigateur de liste de n?uds', 'ui.nodelist.index.import_nodelist' => 'Importer une liste de n?uds', 'ui.nodelist.index.nodes' => 'n?uds', 'ui.nodelist.index.zones' => 'zones', 'ui.nodelist.index.nets' => 'réseaux', 'ui.nodelist.index.points' => 'points', 'ui.nodelist.index.special' => 'spécial', 'ui.nodelist.index.last_imported' => 'Dernière importation :', 'ui.nodelist.index.search_placeholder' => 'Adresse de n?ud (2:5034/10), sysop, localisation ou nom du système', 'ui.nodelist.index.all_zones' => 'Toutes les zones', 'ui.nodelist.index.zone_prefix' => 'Zone', 'ui.nodelist.index.all_nets' => 'Tous les réseaux', 'ui.nodelist.index.net_prefix' => 'Réseau', 'ui.nodelist.index.search_results' => 'Résultats de recherche ({count} n?uds)', 'ui.nodelist.index.address' => 'Adresse', 'ui.nodelist.index.type' => 'Type', 'ui.nodelist.index.phone_host' => 'Téléphone/Hôte', 'ui.nodelist.index.speed' => 'Vitesse', 'ui.nodelist.index.actions' => 'Actions', 'ui.nodelist.index.no_nodes_found_search' => 'Aucun n?ud trouvé correspondant à vos critères de recherche.', 'ui.nodelist.index.use_search_form' => 'Utilisez le formulaire de recherche ci-dessus pour trouver des n?uds dans la liste.', 'ui.nodelist.index.error_fetching_nets' => 'Erreur lors de la récupération des réseaux :', 'ui.nodelist.import.heading' => 'Importer une liste de n?uds', 'ui.nodelist.import.upload_new_nodelist' => 'Téléverser une nouvelle liste de n?uds', 'ui.nodelist.import.network_domain' => 'Domaine réseau', 'ui.nodelist.import.domain_placeholder' => 'ex. : fidonet, fsxnet, agoranet', 'ui.nodelist.import.domain_title' => 'Le domaine ne doit contenir que des lettres, des chiffres, des tirets bas et des tirets', 'ui.nodelist.import.domain_help_1' => 'Le domaine réseau FTN auquel appartient cette liste de n?uds (ex. : fidonet, fsxnet).', 'ui.nodelist.import.domain_help_2' => 'Ceci permet de distinguer les n?uds de différents réseaux.', 'ui.nodelist.import.nodelist_file' => 'Fichier de liste de n?uds', 'ui.nodelist.import.nodelist_help_1' => 'Téléversez un fichier de liste de n?uds FidoNet (format NODELIST.xxx).', 'ui.nodelist.import.nodelist_help_2' => 'Pris en charge : texte brut (.txt, .lst, .nodelist) et ZIP compressé (.Zxxx)', 'ui.nodelist.import.archive_before_import' => 'Archiver la liste de n?uds actuelle avant l\'importation', 'ui.nodelist.import.archive_help' => 'Recommandé : conserver la liste de n?uds actuelle comme sauvegarde inactive avant d\'importer la nouvelle.', 'ui.nodelist.import.warning' => 'Avertissement :', 'ui.nodelist.import.warning_text_1' => 'L\'importation d\'une nouvelle liste de n?uds remplacera les données de la liste active actuelle pour ce domaine.', 'ui.nodelist.import.warning_text_2' => 'Cette opération est irréversible. Assurez-vous d\'avoir une sauvegarde si nécessaire.', 'ui.nodelist.import.import_nodelist' => 'Importer la liste de n?uds', 'ui.nodelist.import.current_status' => 'État actuel de la liste de n?uds', 'ui.nodelist.import.file' => 'Fichier :', 'ui.nodelist.import.day_of_year' => 'Jour de l\'année :', 'ui.nodelist.import.release_date' => 'Date de publication :', 'ui.nodelist.import.total_nodes' => 'Total des n?uds :', 'ui.nodelist.import.imported' => 'Importé :', 'ui.nodelist.import.no_active_nodelist' => 'Aucune liste de n?uds active trouvée.', 'ui.nodelist.import.node_statistics' => 'Statistiques des n?uds', 'ui.nodelist.import.total_nodes_label' => 'Total des n?uds', 'ui.nodelist.import.guidelines' => 'Directives d\'importation', 'ui.nodelist.import.guideline_1' => 'Format standard FTS-0005', 'ui.nodelist.import.guideline_2' => 'Texte ASCII avec fins de ligne CR/LF', 'ui.nodelist.import.guideline_3' => 'En-tête correct avec CRC', 'ui.nodelist.import.guideline_4' => 'Hiérarchie Zone/Réseau/N?ud', 'ui.nodelist.import.guideline_5' => 'Fichiers compressés ZIP (.Zxxx)', 'ui.nodelist.import.guideline_note' => 'Pour les fichiers ARC, ARJ, LZH, RAR, utilisez le script d\'importation en ligne de commande', 'ui.nodelist.import.importing' => 'Importation en cours...', 'ui.nodelist.import.success' => '{count} n?uds importés avec succès depuis {filename} (Jour {day}) pour le domaine @{domain}', 'ui.dosdoor_player.page_title' => 'Lecteur de portes DOS', 'ui.dosdoor_player.document_title_suffix' => 'Porte DOS', 'ui.dosdoor_player.status_prefix' => 'État :', 'ui.dosdoor_player.status_disconnected' => 'Déconnecté', 'ui.dosdoor_player.status_launching' => 'Lancement...', 'ui.dosdoor_player.status_launch_failed' => 'Échec du lancement', 'ui.dosdoor_player.status_connecting' => 'Connexion en cours...', 'ui.dosdoor_player.status_connected' => 'Connecté', 'ui.dosdoor_player.status_connection_error' => 'Erreur de connexion', 'ui.dosdoor_player.status_error' => 'Erreur', 'ui.dosdoor_player.end_session' => 'Terminer la session', 'ui.dosdoor_player.launching_door_line' => 'Lancement du jeu de porte...', 'ui.dosdoor_player.failed_launch_line' => 'Échec du lancement de la session de porte.', 'ui.dosdoor_player.connecting_to_prefix' => 'Connexion à', 'ui.dosdoor_player.connected_line' => 'Connecté !', 'ui.dosdoor_player.connection_closed_line' => '[Connexion fermée]', 'ui.dosdoor_player.connection_error_line' => '[Erreur de connexion]', 'ui.dosdoor_player.failed_to_connect_prefix' => 'Échec de la connexion :', 'ui.dosdoor_player.confirm_end_session' => 'Êtes-vous sûr de vouloir terminer cette session de porte ?', 'ui.dosdoor_player.failed_end_session' => 'Échec de la fin de session', 'ui.dosdoor_player.error_ending_session' => 'Erreur lors de la fin de session', 'ui.dosdoor_player.error_no_door_specified' => 'Erreur : aucun identifiant de porte spécifié', 'ui.dosdoor_player.failed_launch_door' => 'Échec du lancement de la porte', 'ui.whos_online.page_title' => 'Qui est en ligne', 'ui.whos_online.heading' => 'Qui est en ligne', 'ui.whos_online.active_last_minutes' => 'Actif au cours des {minutes} dernières minutes', 'ui.whos_online.online_users' => 'Utilisateurs en ligne', 'ui.whos_online.service' => 'Service', 'ui.whos_online.activity' => 'Activité', 'ui.whos_online.idle' => 'Inactif', 'ui.whos_online.no_users_online' => 'Aucun utilisateur n\'est en ligne pour le moment.', 'ui.webdoors.page_title' => 'Portes et jeux', 'ui.webdoors.heading' => 'Portes et jeux', 'ui.webdoors.description' => 'Accédez aux jeux de portes DOS classiques et aux jeux web modernes.', 'ui.webdoors.top_scores_all_games' => 'Meilleurs scores (tous les jeux)', 'ui.webdoors.leaderboard_month_navigation' => 'Navigation mensuelle du classement', 'ui.webdoors.previous_month' => 'Mois précédent', 'ui.webdoors.next_month' => 'Mois suivant', 'ui.webdoors.current_month' => 'Mois actuel', 'ui.webdoors.rank' => 'Rang', 'ui.webdoors.player' => 'Joueur', 'ui.webdoors.game' => 'Jeu', 'ui.webdoors.board' => 'Tableau', 'ui.webdoors.score' => 'Score', 'ui.webdoors.date' => 'Date', 'ui.webdoors.no_scores_for_month' => 'Aucun score enregistré pour {month}.', 'ui.webdoors.players_count' => 'Joueurs : {count}', 'ui.webdoors.by_author' => 'par {author}', 'ui.webdoors.version_by_author' => 'v{version} par {author}', 'ui.webdoors.launch' => 'Lancer', 'ui.webdoors.no_games_available' => 'Aucun jeu disponible pour le moment. Revenez plus tard !', 'ui.webdoors.errors.system_disabled' => 'Désolé, le système de jeux n\'est pas activé.', 'ui.webdoors.errors.admin_only' => 'Cette porte est réservée aux administrateurs.', 'ui.webdoors.errors.requirements_not_met' => 'Ce jeu nécessite des fonctionnalités qui ne sont pas actuellement activées sur ce système.', 'ui.webdoor_play.page_title_suffix' => 'Portes et jeux', 'ui.webdoor_play.back_to_doors' => 'Retour aux portes', 'ui.webdoor_play.admin_config' => 'Configuration admin', 'ui.webdoor_play.fullscreen' => 'Plein écran', 'ui.webdoor_play.play_mode' => 'Mode jeu', 'ui.shared_file.shared_file' => 'Fichier partagé', 'ui.shared_file.meta_description_from_system' => 'Fichier partagé depuis {system_name}', 'ui.shared_file.shared_by' => 'Partagé par', 'ui.shared_file.on_date_prefix' => 'le', 'ui.shared_file.viewed_count' => 'consulté {count} fois', 'ui.shared_file.expires_prefix' => 'expire', 'ui.shared_file.clean' => 'Sain', 'ui.shared_file.size' => 'Taille :', 'ui.shared_file.uploaded' => 'Téléversé :', 'ui.shared_file.area' => 'Zone :', 'ui.shared_file.description' => 'Description :', 'ui.shared_file.details' => 'Détails :', 'ui.shared_file.download' => 'Télécharger', 'ui.shared_file.browse_area' => 'Parcourir la zone {tag}', 'ui.shared_file.join_system_to_download' => 'Rejoindre {system_name} pour télécharger', 'ui.shared_file.register_prompt' => 'Créez un compte gratuit pour télécharger ce fichier et accéder à notre archive complète.', 'ui.shared_file.register' => 'S\'inscrire', 'ui.shared_file.login' => 'Connexion', 'ui.shared_file.about_system' => 'À propos de {system_name}', 'ui.shared_file.about_system_text' => '{system_name} est un BBS connecté à FidoNet avec des zones de fichiers publiques. Les membres peuvent téléverser, télécharger et partager des fichiers depuis une archive en constante évolution.', 'ui.shared_file.powered_by' => 'Propulsé par BinktermPHP', 'ui.shared_file.not_available_title' => 'Fichier non disponible', 'ui.shared_file.not_available_body' => 'Ce lien de fichier partagé n\'est pas disponible. Il a peut-être expiré ou été révoqué.', 'ui.shared_file.go_to_main_site' => 'Aller au site principal', 'ui.ads.advertisement' => 'Publicité', 'ui.ads.none_available' => 'Aucune publicité disponible.', 'ui.bbs_menu.main_menu' => 'Menu principal', 'ui.bbs_menu.press_key_to_navigate' => 'Appuyez sur une touche pour naviguer', 'ui.bbs_menu.quit_return' => 'Quitter/Retour', 'ui.bbs_menu.tap_item_to_navigate' => 'Appuyez sur un élément pour naviguer', 'ui.bbs_menu.press_highlighted_key' => 'Appuyez sur la touche mise en évidence pour naviguer', 'ui.bbs_menu.returns_to_menu' => 'retourne à ce menu', 'ui.bbs_menu.tap_card_to_navigate' => 'Appuyez sur une carte pour naviguer', 'ui.recent_updates.badge_feature' => 'Fonctionnalité', 'ui.recent_updates.badge_fix' => 'Correction', 'ui.recent_updates.badge_improvement' => 'Amélioration', 'ui.recent_updates.badge_update' => 'Mise à jour', 'ui.rules.intro' => 'Soyez excellents les uns envers les autres et contribuez à garder ce système accueillant pour tous.', 'ui.rules.item_1' => 'Restez courtois. Pas de harcèlement, de discours haineux ou d\'attaques personnelles.', 'ui.rules.item_2' => 'Pas de spam ni d\'inondation.', 'ui.rules.item_3' => 'Respectez la vie privée. Ne partagez pas d\'informations privées sans consentement.', 'ui.rules.item_4' => 'Respectez l\'étiquette Fidonet et les politiques du réseau local.', 'ui.rules.item_5' => 'Les décisions du Sysop sont définitives.', 'ui.dashboard.title' => 'Tableau de bord', 'ui.dashboard.unread_netmail' => 'Netmail non lu', 'ui.dashboard.unread_netmail_tooltip' => 'Netmail non lu qui vous est adressé', 'ui.dashboard.unread_echomail' => 'Nouvel Echomail', 'ui.dashboard.total_unread_echomail' => 'Echomail non lu', 'ui.dashboard.mail_and_areas' => 'Courrier et zones', 'ui.dashboard.new_echoareas' => 'NOUVELLES ZONES ECHO', 'ui.dashboard.new_echoareas_count' => '{count} ajoutees ces 30 derniers jours', 'ui.dashboard.new_echoareas_none' => 'Aucune nouvelle zone echo ces 30 derniers jours.', 'ui.dashboard.new_echoareas_added' => 'Ajoutee', 'ui.dashboard.new_echoareas_show' => 'Afficher les nouvelles zones echo', 'ui.dashboard.new_echoareas_hide' => 'Masquer les nouvelles zones echo', 'ui.dashboard.new_echoareas_load_more' => 'Charger plus', 'ui.dashboard.manage_subscriptions' => 'Gérer les abonnements', 'ui.dashboard.manage_interests' => 'Gérer les intérêts', 'ui.dashboard.echomail_tooltip_new' => 'Nouveaux echomail depuis votre dernière visite', 'ui.dashboard.echomail_tooltip_unread' => 'Total des echomail non lus', 'ui.dashboard.system_news' => 'Actualités du système', 'ui.dashboard.system_information' => 'Informations système', 'ui.dashboard.sysop' => 'Sysop', 'ui.dashboard.user' => 'Utilisateur', 'ui.dashboard.addresses' => 'Adresses', 'ui.dashboard.my_referral_link' => 'Mon lien de parrainage', 'ui.dashboard.referral_invite_prefix' => 'Invitez des amis et gagnez', 'ui.dashboard.referral_invite_suffix' => 'crédits pour chaque parrainage réussi.', 'ui.dashboard.referrals.label' => 'Parrainages', 'ui.dashboard.referrals.earned' => 'Gagné', 'ui.dashboard.voting_booth' => 'Bureau de vote', 'ui.dashboard.create_poll_title' => 'Créer un sondage', 'ui.dashboard.polls.none_active' => 'Aucun sondage actif pour le moment.', 'ui.dashboard.polls.load_failed' => 'Échec du chargement du sondage.', 'ui.dashboard.polls.results' => 'Résultats', 'ui.dashboard.polls.no_votes' => 'Aucun vote pour l\'instant.', 'ui.dashboard.polls.vote_to_see_results' => 'Votez pour voir les résultats', 'ui.dashboard.polls.submit_vote' => 'Soumettre le vote', 'ui.dashboard.echoareas.none_available' => 'Aucune zone echo disponible', 'ui.dashboard.shoutbox.none_yet' => 'Aucun message pour l\'instant. Soyez le premier !', 'ui.dashboard.shoutbox.load_failed' => 'Échec du chargement des messages.', 'ui.dashboard.shoutbox.post_failed' => 'Échec de l\'envoi du message.', 'ui.dashboard.referrals.error_prefix' => 'Erreur de statistiques de parrainage :', 'ui.dashboard.referrals.recent' => 'Parrainages récents', 'ui.dashboard.referrals.copy_failed_prefix' => 'Échec de la copie :', 'ui.dashboard.echoareas.header_area' => 'Zone Echo', 'ui.dashboard.echoareas.header_unread_total' => 'Total non lu', 'ui.dashboard.customize.title' => 'Personnaliser le tableau de bord', 'ui.dashboard.customize.hint' => 'Faites glisser les cartes pour les réorganiser ou les déplacer entre les colonnes. Utilisez l\'icône en forme d\'oeil pour afficher ou masquer une carte.', 'ui.dashboard.customize.zone_main' => 'Colonne principale', 'ui.dashboard.customize.zone_sidebar' => 'Barre latérale', 'ui.dashboard.customize.required' => 'Obligatoire', 'ui.dashboard.customize.show' => 'Afficher', 'ui.dashboard.customize.hide' => 'Masquer', 'ui.dashboard.customize.reset' => 'Réinitialiser par défaut', 'ui.dashboard.customize.save_failed' => 'Échec de la sauvegarde de la disposition.', 'ui.dashboard.card.unread' => 'Courrier et zones', 'ui.dashboard.card.system_news' => 'Actualités du système', 'ui.dashboard.card.shoutbox' => 'Boîte à messages', 'ui.dashboard.card.advertising' => 'Annonce', 'ui.dashboard.card.system_info' => 'Informations système', 'ui.dashboard.card.todays_callers' => "Appelants du jour", 'ui.dashboard.card.voting_booth' => 'Bureau de vote', 'ui.dashboard.card.echo_areas' => 'Zones Echo', 'ui.dashboard.card.referral' => 'Lien de parrainage', 'ui.dashboard.card.packetbbs_status' => 'Noeuds PacketBBS', 'ui.dashboard.networks' => 'Réseaux', 'ui.dashboard.todays_callers' => "Appelants du jour", 'ui.dashboard.no_callers_today' => "Aucun appel aujourd'hui", 'ui.dashboard.callers_col_user' => 'Utilisateur', 'ui.dashboard.callers_col_time' => 'Dernier appel', 'ui.dashboard.callers_col_online' => 'En ligne', 'ui.dashboard.callers_online_now' => 'En ligne maintenant', 'ui.dashboard.online_now' => 'En ligne maintenant', 'ui.dashboard.active_today' => 'Actifs aujourd\'hui', 'ui.settings.title' => 'Paramètres', 'ui.settings.tab.display' => 'Affichage', 'ui.settings.tab.messaging' => 'Messagerie', 'ui.settings.tab.notifications' => 'Notifications', 'ui.settings.tab.account' => 'Compte', 'ui.settings.tab.ai' => 'IA', 'ui.settings.tab.meshcore' => 'Radio MeshCore', 'ui.settings.meshcore.my_radios' => 'Mes radios MeshCore', 'ui.settings.meshcore.help' => 'Enregistrez votre radio MeshCore. Une fois enregistrée, le bridge reconnaîtra votre radio et vous répondra par voie hertzienne.', 'ui.settings.meshcore.add_radio' => 'Ajouter une radio', 'ui.settings.meshcore.add_radio_title' => 'Ajouter une radio', 'ui.settings.meshcore.edit_radio_title' => 'Modifier la radio', 'ui.settings.meshcore.no_radios' => 'Aucune radio enregistrée. Cliquez sur Ajouter une radio pour lier votre noeud MeshCore.', 'ui.settings.meshcore.node_id' => 'ID du noeud', 'ui.settings.meshcore.node_id_placeholder' => 'ex. a1b2c3d4e5f6', 'ui.settings.meshcore.node_id_help' => 'ID hex à 12 caractères affiché dans l\'application MeshCore, ou la clé publique complète à 64 caractères.', 'ui.settings.meshcore.display_name' => 'Nom d\'affichage', 'ui.settings.meshcore.display_name_placeholder' => 'Optionnel', 'ui.settings.meshcore.display_name_help' => 'Optionnel. Laissez vide pour utiliser le nom diffusé par votre radio.', 'ui.settings.meshcore.bridge' => 'Radio compagne', 'ui.settings.meshcore.bridge_none' => '? Aucune ?', 'ui.settings.meshcore.bridge_help' => 'La radio compagne qui doit relayer les messages vers et depuis ce contact.', 'ui.settings.meshcore.col_node_id' => 'ID du noeud', 'ui.settings.meshcore.col_name' => 'Nom', 'ui.settings.meshcore.col_type' => 'Type', 'ui.settings.meshcore.col_bridge' => 'Bridge', 'ui.settings.meshcore.col_last_seen' => 'Dernière vue', 'ui.settings.meshcore.col_actions' => 'Actions', 'ui.settings.meshcore.never' => 'Jamais', 'ui.settings.meshcore.delete_confirm' => 'Supprimer cette radio de votre compte ?', 'ui.settings.meshcore.scan_qr' => 'Scanner un QR code', 'ui.settings.meshcore.scan_qr_title' => 'Scanner un QR code MeshCore', 'ui.settings.meshcore.scan_qr_prompt' => 'Pointez la caméra vers un QR code MeshCore', 'ui.settings.meshcore.scan_qr_https_required' => 'Le scanner QR nécessite HTTPS', 'ui.admin.meshcore.delete_contact_confirm' => 'Supprimer ce contact ?', 'ui.admin.meshcore.delete_selected' => 'Supprimer la sélection', 'ui.admin.meshcore.delete_selected_confirm' => 'Supprimer {count} contact(s) sélectionné(s) ?', 'ui.admin.meshcore.autoadd_title' => 'Politique d\'ajout automatique de contacts', 'ui.admin.meshcore.autoadd_help' => 'Contrôle quels types de n?uds l\'appareil ajoute automatiquement à sa liste de contacts. Recommandé : désactiver l\'ajout automatique et gérer les contacts manuellement via le BBS.', 'ui.admin.meshcore.autoadd_chat' => 'Ajouter automatiquement les compagnons (chat)', 'ui.admin.meshcore.autoadd_repeater' => 'Ajouter automatiquement les répéteurs', 'ui.admin.meshcore.autoadd_room_server' => 'Ajouter automatiquement les serveurs de salon', 'ui.admin.meshcore.autoadd_sensor' => 'Ajouter automatiquement les capteurs', 'ui.admin.meshcore.autoadd_overwrite_oldest' => 'Écraser le contact le plus ancien quand la liste est pleine', 'ui.admin.meshcore.autoadd_unknown' => 'Inconnu (pas encore lu depuis l\'appareil)', 'ui.admin.meshcore.autoadd_read_device' => 'Lire depuis l\'appareil', 'ui.admin.meshcore.autoadd_read_queued' => 'Demande de lecture mise en file d\'attente. Actualisez la page après le prochain cycle du pont.', 'ui.admin.meshcore.autoadd_read_waiting' => 'En attente de la réponse du périphérique?', 'ui.admin.meshcore.autoadd_read_timeout' => 'Le périphérique n\'a pas répondu. Réessayez.', 'ui.admin.meshcore.autoadd_pending_sync' => 'Enregistré ? en attente d\'application par le pont.', 'ui.admin.packet_bbs.session.not_logged_in' => 'non connecté', 'ui.admin.packet_bbs.session.empty' => 'Aucune session active.', 'ui.admin.packet_bbs.session.node_id' => 'ID du n?ud', 'ui.admin.packet_bbs.session.user' => 'Utilisateur', 'ui.admin.packet_bbs.session.menu_state' => 'État du menu', 'ui.admin.packet_bbs.session.started' => 'Session démarrée', 'ui.admin.packet_bbs.session.last_activity' => 'Dernière activité', 'ui.admin.packet_bbs.session.pagination_cursor' => 'Curseur de pagination', 'ui.admin.packet_bbs.session.pagination_context' => 'Contexte de pagination', 'ui.admin.packet_bbs.session.compose_type' => 'Type de composition', 'ui.admin.packet_bbs.session.compose_buffer' => 'Tampon de composition', 'ui.admin.packet_bbs.session.compose_meta' => 'Métadonnées de composition', 'ui.admin.packet_bbs.session.state' => 'État de la session', 'ui.admin.packet_bbs.session.kill' => 'Terminer la session', 'ui.admin.packet_bbs.session.kill_btn' => 'Terminer', 'ui.admin.packet_bbs.session.kill_confirm' => 'Terminer la session pour {nodeId} ?', 'ui.admin.packet_bbs.session.detail_title' => 'Session', 'ui.admin.packet_bbs.queue.empty' => 'La file d\'attente est vide.', 'ui.admin.packet_bbs.queue.flush_confirm' => 'Vider tous les messages sortants en attente ?', 'ui.admin.packet_bbs.key.configured' => 'Clé API configurée', 'ui.admin.packet_bbs.key.not_set' => 'Aucune clé API définie', 'ui.admin.packet_bbs.key.regenerate' => 'Régénérer la clé', 'ui.admin.packet_bbs.key.generate' => 'Générer la clé', 'ui.admin.packet_bbs.node.no_user' => 'aucun', 'ui.admin.packet_bbs.node.never_seen' => 'jamais', 'ui.admin.packet_bbs.node.manage_contacts' => 'Gérer les contacts', 'ui.admin.packet_bbs.node.add_title' => 'Ajouter un n?ud', 'ui.admin.packet_bbs.node.edit_title' => 'Modifier le n?ud', 'ui.admin.packet_bbs.node.delete_confirm' => 'Supprimer le n?ud {nodeId} ? La session active sera également terminée.', 'ui.settings.ai.mcp_key_title' => 'Accès assistant IA', 'ui.settings.ai.mcp_not_enabled' => 'L\'accès aux assistants IA n\'est pas actuellement activé sur ce BBS. Contactez le sysop si vous êtes intéressé par cette fonctionnalité.', 'ui.settings.ai.mcp_what_is' => 'Le serveur MCP (Model Context Protocol) permet aux assistants IA comme Claude de se connecter à ce BBS et de lire l\'echomail en votre nom. Votre clé de porteur personnelle authentifie la connexion ? l\'IA ne voit que ce que vous pouvez voir.', 'ui.settings.ai.mcp_server_url_label' => 'URL du serveur MCP', 'ui.settings.ai.mcp_help_button' => 'Afficher l\'aide de configuration pour les agents IA', 'ui.settings.ai.mcp_key_help' => 'Gardez votre clé de porteur privée. Vous pouvez la révoquer et la régénérer à tout moment ? la révoquer déconnecte immédiatement tout client IA utilisant l\'ancienne clé.', 'ui.settings.ai.mcp_current_key' => 'Clé actuelle', 'ui.settings.ai.mcp_no_key' => 'Aucune clé générée pour l\'instant.', 'ui.settings.ai.mcp_generate' => 'Générer une clé', 'ui.settings.ai.mcp_regenerate' => 'Régénérer', 'ui.settings.ai.mcp_regenerate_confirm' => 'Régénérer la clé invalidera la clé existante. Les clients MCP utilisant l\'ancienne clé cesseront de fonctionner. Continuer ?', 'ui.settings.ai.mcp_revoke' => 'Révoquer', 'ui.settings.ai.mcp_revoke_confirm' => 'Êtes-vous sûr de vouloir révoquer votre clé MCP ? Les clients MCP l\'utilisant cesseront de fonctionner.', 'ui.settings.ai.mcp_revoked' => 'Clé MCP révoquée.', 'ui.settings.ai.mcp_key_once_title' => 'Sauvegardez votre clé maintenant', 'ui.settings.ai.mcp_key_once_help' => 'C\'est la seule fois que votre clé complète sera affichée. Copiez-la maintenant et conservez-la en lieu sûr.', 'ui.settings.ai.mcp_copy' => 'Copier', 'ui.settings.ai.mcp_copied' => 'Clé copiée dans le presse-papiers.', 'ui.settings.ai.registration_required' => 'Les services IA sont une fonctionnalité avancée et nécessitent une licence enregistrée. Veuillez demander au sysop d\'enregistrer sa copie de BinktermPHP pour activer l\'accès au serveur MCP.', 'ui.settings.ai.mcp_service_unavailable' => 'Les services IA ne sont pas disponibles actuellement. Veuillez contacter le sysop pour demander leur activation.', 'ui.settings.display_preferences' => 'Préférences d\'affichage', 'ui.settings.messages_per_page' => 'Messages par page', 'ui.settings.messages_per_page_help' => 'Nombre de messages à afficher par page', 'ui.settings.timezone' => 'Fuseau horaire', 'ui.settings.timezone_help' => 'Votre fuseau horaire local pour l\'affichage des dates', 'ui.settings.language' => 'Langue', 'ui.settings.language_help' => 'Langue préférée pour l\'interface', 'ui.settings.date_format' => 'Format de date', 'ui.settings.date_format_help' => 'Votre format de date et d\'heure préféré', 'ui.settings.date_format.option.en_us' => 'Américain (MM/DD/YYYY) - Jan 31, 2026, 10:30 AM', 'ui.settings.date_format.option.en_gb' => 'Britannique (DD/MM/YYYY) - 31 Jan 2026, 10:30', 'ui.settings.date_format.option.en_ca' => 'Canadien (YYYY-MM-DD) - 2026-01-31, 10:30 a.m.', 'ui.settings.date_format.option.de_de' => 'Allemand (DD.MM.YYYY) - 31.01.2026, 10:30', 'ui.settings.date_format.option.fr_fr' => 'Français (DD/MM/YYYY) - 31/01/2026 10:30', 'ui.settings.date_format.option.es_es' => 'Espagnol (DD/MM/YYYY) - 31/1/2026, 10:30', 'ui.settings.date_format.option.it_it' => 'Italien (DD/MM/YYYY) - 31/01/2026, 10:30', 'ui.settings.date_format.option.ja_jp' => 'Japonais (YYYY/MM/DD) - 2026/01/31 10:30', 'ui.settings.date_format.option.zh_cn' => 'Chinois (YYYY/M/D) - 2026/1/31, 10:30', 'ui.settings.date_format.option.sv_se' => 'Suédois (YYYY-MM-DD) - 2026-01-31 10:30', 'ui.settings.theme' => 'Thème', 'ui.settings.theme_help' => 'Choisissez votre palette de couleurs préférée', 'ui.settings.interface_style' => 'Style d\'interface', 'ui.settings.interface_style.web' => 'Interface Web (barre de navigation et menus par défaut)', 'ui.settings.interface_style.bbs_menu' => 'Menu BBS (navigation par touches de raccourci)', 'ui.settings.interface_style_help' => 'Choisissez votre style de navigation préféré.', 'ui.settings.default_echo_list' => 'Liste de zones echo par défaut', 'ui.settings.system_default' => 'Défaut système', 'ui.settings.default_echo_list.reader' => 'Lecteur (liste de messages)', 'ui.settings.default_echo_list.echolist' => 'Liste Echo (groupée par réseau)', 'ui.settings.default_echo_list_help' => 'Choisissez votre vue par défaut préférée lors de l\'accès aux zones echo depuis le menu', 'ui.settings.message_font' => 'Police des messages', 'ui.settings.message_font_help' => 'Famille de polices pour l\'affichage des messages netmail et echomail', 'ui.settings.message_font_size' => 'Taille de police des messages', 'ui.settings.message_font_size_help' => 'Taille de police pour l\'affichage des messages netmail et echomail', 'ui.settings.message_signature' => 'Signature des messages', 'ui.settings.message_signature_placeholder' => 'Votre signature (4 lignes max)', 'ui.settings.message_signature_help' => 'Ajoutée aux messages netmail et echomail sortants. 4 lignes maximum.', 'ui.settings.default_tagline' => 'Accroche par défaut', 'ui.settings.no_tagline' => 'Pas d\'accroche', 'ui.settings.random_tagline' => 'Accroche aléatoire', 'ui.settings.default_tagline_help' => 'Utilisée comme accroche par défaut lors de la rédaction de messages. Choisissez « Accroche aléatoire » pour en sélectionner une au hasard à chaque fois.', 'ui.settings.threading_preferences' => 'Préférences de fil de discussion', 'ui.settings.threaded_view_echomail' => 'Activer la vue en fil pour l\'echomail', 'ui.settings.threaded_view_echomail_help' => 'Regrouper les messages echomail par fils de conversation', 'ui.settings.threaded_view_netmail' => 'Activer la vue en fil pour le netmail', 'ui.settings.threaded_view_netmail_help' => 'Regrouper les messages netmail par fils de conversation', 'ui.settings.quote_display' => 'Affichage des citations', 'ui.settings.quote_coloring' => 'Coloriser le texte cité par niveau', 'ui.settings.quote_coloring_help' => 'Afficher les lignes de messages cités (commençant par >) dans différentes couleurs selon le niveau d\'imbrication', 'ui.settings.media_render_mode' => 'Affichage des médias', 'ui.settings.media_render_mode.click' => 'Cliquer pour afficher le média', 'ui.settings.media_render_mode.auto' => 'Afficher automatiquement les médias (recommandé)', 'ui.settings.media_render_mode.help' => 'Contrôle si les lecteurs de plateformes, fichiers multimédias et images sont affichés automatiquement ou à la demande. Les plateformes vidéo et autres fournisseurs tiers de médias peuvent utiliser des statistiques lorsque les médias intégrés sont chargés.', 'ui.settings.media_render_mode.disabled_globally' => 'L\'affichage des médias a été désactivé par l\'administrateur.', 'ui.settings.onboarding.title' => 'Introduction à l\'Echomail', 'ui.settings.onboarding.help' => 'Réinitialisez le guide d\'introduction à l\'echomail pour qu\'il s\'affiche à nouveau la prochaine fois que vous visitez Echomail.', 'ui.settings.onboarding.reset_button' => 'Réinitialiser le guide d\'introduction', 'ui.settings.onboarding.reset_success' => 'Introduction réinitialisée. Le guide s\'affichera la prochaine fois que vous visiterez Echomail.', 'ui.settings.onboarding.reset_error' => 'Échec de la réinitialisation de l\'introduction.', 'ui.echo_onboarding.page_title' => 'Bienvenue sur Echomail', 'ui.echo_onboarding.heading' => 'Bienvenue sur Echomail', 'ui.echo_onboarding.intro' => 'Echomail est un système de forums publics qui connecte ce BBS à un réseau mondial d\'autres systèmes. Voici une brève introduction avant de commencer.', 'ui.echo_onboarding.what_is.title' => 'Qu\'est-ce que l\'Echomail ?', 'ui.echo_onboarding.what_is.body' => 'L\'Echomail est organisé en zones thématiques ? similaires aux groupes de discussion ou aux listes de diffusion ? couvrant une grande variété de sujets comme l\'informatique rétro, la radio amateur, la programmation, les loisirs, le sport, l\'écriture créative et la discussion générale. Les messages sont visibles par tous sur le réseau.', 'ui.echo_onboarding.how_it_works.title' => 'Comment ça fonctionne ?', 'ui.echo_onboarding.how_it_works.body' => 'Ce BBS fait partie d\'un réseau de style FidoNet. Lorsque vous publiez un message, il est automatiquement échangé avec d\'autres BBS qui portent la même zone. Les messages de ces systèmes arrivent ici aussi ? vos conversations atteignent ainsi une communauté mondiale.', 'ui.echo_onboarding.getting_started.title' => 'Pour commencer', 'ui.echo_onboarding.getting_started.body' => 'La façon la plus simple de commencer est avec les Centres d\'intérêt ? des ensembles de zones d\'echo liées. Abonnez-vous à un centre d\'intérêt et vous êtes abonné à toutes ses zones à la fois. Vous pouvez aussi parcourir et vous abonner à des zones individuelles.', 'ui.echo_onboarding.tips.title' => 'Bon à savoir', 'ui.echo_onboarding.tips.tip_areas' => 'Chaque zone d\'echo a un identifiant et une description. Les identifiants désignent la zone au sein de son réseau ? certains réseaux incluent le nom du réseau dans l\'identifiant. Le domaine réseau est aussi affiché à côté de l\'identifiant pour que vous sachiez toujours à quel réseau appartient une zone.', 'ui.echo_onboarding.tips.tip_multi_network' => 'Ce BBS est connecté à plus d\'un réseau. Vous pouvez voir des zones d\'echo portant des noms similaires sur différents réseaux ? par exemple, une zone GENERAL peut exister sur plusieurs réseaux à la fois. Les centres d\'intérêt peuvent inclure des zones de plusieurs réseaux, donc faites attention au domaine réseau affiché à côté de chaque zone.', 'ui.echo_onboarding.tips.tip_network' => 'Les messages peuvent mettre quelques minutes à une heure pour arriver d\'autres systèmes, selon la fréquence à laquelle ce BBS contacte son uplink.', 'ui.echo_onboarding.tips.tip_posting' => 'Lorsque vous publiez un message, il apparaît localement immédiatement et est transmis au réseau lors du prochain contact.', 'ui.echo_onboarding.tips.tip_interests' => 'Vous pouvez modifier vos abonnements individuels aux zones d\'echo depuis la page Abonnements, ou vos centres d\'intérêt depuis le menu Centres d\'intérêt, ou revoir ce guide depuis vos Paramètres.', 'ui.echo_onboarding.next_button' => 'Suivant : Choisir des centres d\'intérêt', 'ui.echo_onboarding.skip_button' => 'Passer, aller à Echomail', 'ui.settings.session_security' => 'Session et sécurité', 'ui.settings.active_sessions' => 'Sessions actives', 'ui.settings.active_sessions_help' => 'Gérez vos sessions de connexion actives', 'ui.settings.view_sessions' => 'Voir les sessions', 'ui.settings.security_actions' => 'Actions de sécurité', 'ui.settings.logout_all_help' => 'Se déconnecter de tous les appareils', 'ui.settings.logout_all' => 'Tout déconnecter', 'ui.settings.save_settings' => 'Enregistrer les paramètres', 'ui.settings.system_status' => 'État du système', 'ui.settings.binkp_status' => 'État BinkP', 'ui.settings.online' => 'En ligne', 'ui.settings.last_poll' => 'Dernier sondage', 'ui.settings.messages_today' => 'Messages aujourd\'hui', 'ui.settings.never' => 'Jamais', 'ui.settings.quick_actions' => 'Actions rapides', 'ui.settings.compose_netmail' => 'Rédiger un netmail', 'ui.settings.post_echomail' => 'Publier un echomail', 'ui.settings.help_support' => 'Aide et support', 'ui.settings.load_failed_console' => 'Échec du chargement des paramètres', 'ui.settings.saving' => 'Enregistrement des paramètres...', 'ui.settings.saved_successfully' => 'Paramètres enregistrés avec succès !', 'ui.settings.sessions.none_active' => 'Aucune session active trouvée.', 'ui.settings.sessions.loading' => 'Chargement des sessions...', 'ui.settings.sessions.load_failed' => 'Échec du chargement des sessions', 'ui.settings.sessions.current' => 'Actuelle', 'ui.settings.sessions.created' => 'Créée', 'ui.settings.sessions.expires' => 'Expire', 'ui.settings.sessions.revoke' => 'Révoquer', 'ui.settings.sessions.revoke_confirm' => 'Êtes-vous sûr de vouloir révoquer cette session ?', 'ui.settings.sessions.revoked_success' => 'Session révoquée avec succès', 'ui.settings.sessions.logged_out_all_success' => 'Déconnecté de toutes les sessions', 'ui.settings.sessions.logout_all_confirm' => 'Êtes-vous sûr de vouloir vous déconnecter de tous les appareils ? Vous devrez vous reconnecter.', 'ui.settings.polling_uplinks' => 'Interrogation des liaisons montantes... (cela peut prendre un moment)', 'ui.settings.poll_complete_prefix' => 'Interrogation de la liaison montante terminée : ', 'ui.settings.poll_complete_exit' => 'Interrogation de la liaison montante terminée (sortie {code})', 'ui.settings.poll_failed_prefix' => 'Échec de l\'interrogation : ', 'ui.compose.title_prefix' => 'Rédiger', 'ui.compose.back_to_prefix' => 'Retour à', 'ui.compose.to_address_label' => 'Adresse du destinataire (laisser vide pour local)', 'ui.compose.fidonet_address_help' => 'Adresse FTN ou nom du système', 'ui.compose.node_search.searching' => 'Recherche...', 'ui.compose.node_search.no_results' => 'Aucun n?ud trouvé', 'ui.compose.to_name_required' => 'Nom du destinataire *', 'ui.compose.attach_file' => 'Joindre un fichier', 'ui.compose.attach_file_help_short' => 'nécessite crashmail ; le sujet sera défini comme nom de fichier', 'ui.compose.echo_area_required' => 'Zone Echo *', 'ui.compose.select_echo_area' => 'Sélectionner une zone echo...', 'ui.compose.to_name' => 'Nom du destinataire', 'ui.compose.to_name_public_help' => 'Laisser \'All\' pour un message public', 'ui.compose.cross_post_to_other_areas' => 'Publier en copie dans d\'autres zones', 'ui.compose.cross_post_help_prefix' => 'Sélectionnez des zones supplémentaires pour publier ce message (max', 'ui.compose.cross_post_help_suffix' => 'Chaque zone reçoit une copie indépendante.', 'ui.compose.stylecodes.inverse_title' => 'Inverse (#inverse#)', 'ui.compose.stylecodes.active_prefix' => 'StyleCodes actifs -', 'ui.compose.markdown.mode' => 'Mode Markdown', 'ui.compose.markdown.toolbar_aria' => 'Mise en forme Markdown', 'ui.compose.markdown.bold_title' => 'Gras (Ctrl+B)', 'ui.compose.markdown.italic_title' => 'Italique (Ctrl+I)', 'ui.compose.markdown.heading_1_title' => 'Titre 1', 'ui.compose.markdown.heading_2_title' => 'Titre 2', 'ui.compose.markdown.heading_3_title' => 'Titre 3', 'ui.compose.markdown.inline_code_title' => 'Code en ligne', 'ui.compose.markdown.code_block_title' => 'Bloc de code', 'ui.compose.markdown.link_title' => 'Lien (Ctrl+K)', 'ui.compose.markdown.image_title' => 'Inserer une image', 'ui.compose.markdown.image_modal.title' => 'Inserer une image', 'ui.compose.markdown.image_modal.tab_url' => 'URL de l\'image', 'ui.compose.markdown.image_modal.tab_upload' => 'Televerser', 'ui.compose.markdown.image_modal.url_label' => 'URL de l\'image', 'ui.compose.markdown.image_modal.url_placeholder' => 'https://example.com/image.jpg', 'ui.compose.markdown.image_modal.alt_label' => 'Texte alternatif', 'ui.compose.markdown.image_modal.alt_placeholder' => 'Description de l\'image', 'ui.compose.markdown.image_modal.insert' => 'Inserer', 'ui.compose.markdown.image_modal.upload_hint' => 'JPEG, PNG, GIF ou WebP \u2014 5 Mo max', 'ui.compose.markdown.image_modal.uploading' => 'Telechargement en cours...', 'ui.compose.markdown.image_modal.tab_picker' => 'Mes images', 'ui.compose.markdown.image_modal.picker_empty' => 'Aucune image telechargee.', 'ui.compose.markdown.image_modal.picker_loading' => 'Chargement...', 'ui.compose.markdown.image_modal.tab_paste' => 'Coller', 'ui.compose.markdown.image_modal.paste_hint' => 'Cliquez ici, puis collez une image (Ctrl+V / \u2318V)', 'ui.compose.markdown.image_modal.paste_ready' => 'Image prete \u2014 cliquez sur Inserer', 'ui.compose.markdown.image_modal.paste_no_image' => 'Aucune image dans le presse-papiers. Copiez d\'abord une image, puis collez.', 'ui.compose.markdown.unordered_list_title' => 'Liste non ordonnée', 'ui.compose.markdown.ordered_list_title' => 'Liste ordonnée', 'ui.compose.markdown.blockquote_title' => 'Citation', 'ui.compose.markdown.horizontal_rule_title' => 'Règle horizontale', 'ui.compose.markdown.edit_mode_title' => 'Mode édition', 'ui.compose.markdown.preview_rendered_title' => 'Aperçu du rendu', 'ui.compose.markdown.quick_reference_title' => 'Référence rapide Markdown', 'ui.compose.markdown.write_placeholder' => 'Rédigez votre message Markdown ici...', 'ui.compose.markdown.click_preview_hint' => 'Cliquez sur Aperçu pour voir le rendu.', 'ui.compose.markdown.formatting_active' => 'Formatage Markdown actif.', 'ui.compose.markdown.quick_reference' => 'Référence rapide', 'ui.compose.markdown.link_modal.title' => 'Insérer un lien', 'ui.compose.markdown.link_modal.url_label' => 'URL', 'ui.compose.markdown.link_modal.text_label' => 'Texte du lien', 'ui.compose.markdown.link_modal.text_placeholder' => 'Laisser vide pour utiliser l\'URL', 'ui.compose.markdown.link_modal.insert' => 'Insérer', 'ui.compose.markdown.unfurl.modal_title' => 'Déplier le lien ?', 'ui.compose.markdown.unfurl.description' => 'Souhaitez-vous obtenir un aperçu de cette URL ?', 'ui.compose.markdown.unfurl.keep_as_url' => 'Garder comme URL', 'ui.compose.markdown.unfurl.fetch_preview' => 'Obtenir un aperçu', 'ui.compose.markdown.unfurl.insert_preview' => 'Insérer l\'aperçu', 'ui.compose.markdown.unfurl.fetching' => 'Récupération de l\'aperçu...', 'ui.compose.markup_format' => 'Format de balisage', 'ui.compose.plain_text' => 'Texte brut', 'ui.compose.markdown_label' => 'Markdown', 'ui.compose.stylecodes_label' => 'StyleCodes (GoldEd, SemPoint Rich Text, Synchronet Markup)', 'ui.compose.markup_format_help' => 'Envoyer avec mise en forme. Markdown et StyleCodes sont pris en charge sur les réseaux compatibles.', 'ui.compose.charset' => 'Encodage', 'ui.compose.charset_help' => 'Encodage de caractères pour le paquet sortant. Utilisez CP437 pour les systèmes FTN hérités qui ne prennent pas en charge UTF-8.', 'ui.compose.insert_file' => 'Insérer un fichier', 'ui.compose.insert_image' => 'Ajouter une image', 'ui.compose.hide_panel' => 'Masquer le panneau', 'ui.compose.show_panel' => 'Afficher le panneau', 'ui.compose.netmail_guidelines' => 'Consignes Netmail :', 'ui.compose.netmail_guideline_private' => 'Messages privés entre n?uds', 'ui.compose.netmail_guideline_identity' => 'Identité d\'envoi pour cette destination : Nom réel', 'ui.compose.netmail_guideline_identity_destination_real_name' => 'Identité d\'envoi pour cette destination : Nom réel', 'ui.compose.netmail_guideline_identity_destination_username' => 'Identité d\'envoi pour cette destination : Nom d\'utilisateur/Alias', 'ui.compose.netmail_guideline_addressing' => 'Utiliser l\'adressage Fidonet approprié', 'ui.compose.netmail_guideline_respectful' => 'Soyez respectueux et professionnel', 'ui.compose.netmail_guideline_routed' => 'Les messages sont acheminés via le réseau', 'ui.compose.netmail_cost' => 'Coût : {cost} {currency}', 'ui.compose.freq.label' => 'Demande de fichier (FREQ)', 'ui.compose.freq.help' => 'Demande un fichier au système distant. Saisissez le nom du fichier dans le champ Sujet. Laissez le corps du message vide ou utilisez-le pour fournir un mot de passe pour les fichiers protégés.', 'ui.compose.freq.badge' => 'FREQ', 'ui.compose.crashmail.direct_delivery_label' => 'Crashmail (Livraison directe)', 'ui.compose.crashmail.help_direct' => 'Tenter une livraison directe immédiate au n?ud de destination, en contournant le routage par hub.', 'ui.compose.crashmail.help_reachable' => 'Nécessite que la destination soit directement accessible.', 'ui.compose.crashmail.help_cost' => 'Coûte {cost} {currency}.', 'ui.compose.echomail_guidelines' => 'Consignes Echomail :', 'ui.compose.echomail_guideline_identity' => 'Identité d\'envoi : Sélectionnez une zone echo pour voir si ce message utilise le Nom réel ou le Nom d\'utilisateur/Alias', 'ui.compose.echomail_guideline_identity_area_real_name' => 'Identité d\'envoi pour cette zone : Nom réel', 'ui.compose.echomail_guideline_identity_area_username' => 'Identité d\'envoi pour cette zone : Nom d\'utilisateur/Alias', 'ui.compose.echomail_guideline_public' => 'Messages de forum public', 'ui.compose.echomail_guideline_topic' => 'Restez dans le sujet de la zone echo', 'ui.compose.echomail_guideline_respectful' => 'Soyez respectueux envers tous les participants', 'ui.compose.echomail_guideline_rules' => 'Respectez les règles et la modération de la zone echo', 'ui.compose.tech_note_plain_text_only' => 'Texte brut uniquement (pas de HTML)', 'ui.compose.tech_note_line_length' => 'Les lignes doivent faire moins de 79 caractères', 'ui.compose.tech_note_origin_line' => 'Ligne d\'origine ajoutée automatiquement', 'ui.compose.invalid_fidonet_address_format' => 'Format d\'adresse Fidonet invalide (ex. : 1:123/456)', 'ui.compose.send_failed_type' => 'Échec de l\'envoi de {type}', 'ui.compose.upload_attachment_failed' => 'Échec du téléversement de la pièce jointe', 'ui.compose.reply_attribution' => 'Le {date}, {name} a écrit :', 'ui.compose.markdown.help.text_formatting' => 'Mise en forme du texte', 'ui.compose.markdown.help.syntax' => 'Syntaxe', 'ui.compose.markdown.help.result' => 'Résultat', 'ui.compose.markdown.help.hyperlink' => 'hyperlien', 'ui.compose.markdown.help.image' => 'image en ligne', 'ui.compose.markdown.help.headings' => 'Titres', 'ui.compose.markdown.help.lists_blocks' => 'Listes & Blocs', 'ui.compose.markdown.help.bullet_list' => 'Liste à puces', 'ui.compose.markdown.help.numbered_list' => 'Liste numérotée', 'ui.compose.markdown.help.blockquote' => 'Citation', 'ui.compose.markdown.help.horizontal_rule' => 'Règle horizontale', 'ui.compose.markdown.help.code_block' => 'Bloc de code', 'ui.compose.markdown.help.keyboard_shortcuts' => 'Raccourcis clavier', 'ui.compose.markdown.help.shortcut_bold' => 'Gras', 'ui.compose.markdown.help.shortcut_italic' => 'Italique', 'ui.compose.markdown.help.shortcut_link' => 'Lien', 'ui.compose.markdown.help.shortcut_indent' => 'Indenter (4 espaces)', 'ui.compose.subject_required' => 'Sujet *', 'ui.compose.message_required' => 'Message *', 'ui.compose.plain_text_hint' => 'Utilisez du texte brut. La mise en forme standard Fidonet s\'applique.', 'ui.compose.message_guidelines' => 'Consignes pour les messages', 'ui.compose.technical_notes' => 'Notes techniques', 'ui.compose.your_info' => 'Vos informations', 'ui.compose.system' => 'Système', 'ui.compose.address' => 'Adresse', 'ui.compose.tagline_help' => 'Sélectionnez une accroche fournie par le sysop à ajouter sous votre signature.', 'ui.compose.select_tagline' => 'Sélectionner un Tagline', 'ui.compose.advanced_options' => 'Options avancées', 'ui.compose.body_too_large' => 'Le corps du message fait {kb} Ko et dépasse la limite FidoNet de 16 Ko.', 'ui.compose.body_size_warning' => 'Le corps du message fait {kb} Ko ? il approche la limite FidoNet de 16 Ko. Cliquez à nouveau sur Envoyer pour continuer.', 'ui.compose.body_size_warning_inline' => 'Le corps du message fait {kb} Ko ? il approche la limite FidoNet de 16 Ko.', 'ui.compose.hard_wrap' => 'Retour à la ligne', 'ui.compose.hard_wrap_help' => 'Coupe automatiquement les lignes à la colonne spécifiée lors de la saisie.', 'ui.compose.hard_wrap_off' => 'Désactivé', 'ui.compose.hard_wrap_79' => '79 caractères (standard)', 'ui.compose.hard_wrap_39' => '39 caractères (étroit)', 'ui.compose.save_draft' => 'Enregistrer le brouillon', 'ui.compose.send_prefix' => 'Envoyer', 'ui.compose.sending' => 'Envoi en cours...', 'ui.compose.draft.empty_content' => 'Veuillez ajouter du contenu avant d\'enregistrer le brouillon', 'ui.compose.draft.saved_success' => 'Brouillon enregistré avec succès', 'ui.compose.sent_cross_post_suffix' => ' (publié dans {count} zones)', 'ui.compose.address_book.load_failed_short' => 'Échec du chargement', 'ui.compose.address_book.select_title' => 'Sélectionner dans le carnet d\'adresses', 'ui.compose.address_book.create_title' => 'Créer une nouvelle entrée dans le carnet d\'adresses', 'ui.compose.address_book.entry_added' => 'Entrée ajoutée avec succès', 'ui.compose.address_book.use_entry_confirm' => 'Utiliser cette entrée pour le message actuel ?', 'ui.address_book.already_exists' => 'Ce contact est déjà dans votre carnet d\'adresses', 'ui.address_book.load_failed' => 'Échec du chargement du carnet d\'adresses', 'ui.address_book.added_from_netmail' => 'Ajouté depuis un message netmail', 'ui.address_book.added_from_netmail_replyto_detail' => 'Ajouté depuis un message netmail. Expéditeur d\'origine : {original_name} ({original_address}), Répondre à : {replyto_name} ({replyto_address})', 'ui.address_book.added_from_netmail_sender_detail' => 'Ajouté depuis un message netmail. Expéditeur : {sender_name} ({sender_address})', 'ui.address_book.check_existing_failed' => 'Échec de la vérification des contacts existants', 'ui.address_book.entry_updated' => 'Entrée mise à jour avec succès', 'ui.address_book.entry_deleted' => 'Entrée supprimée avec succès', 'ui.address_book.sender_added' => '{name} ajouté au carnet d\'adresses', 'ui.address_book.saved_to_address_book' => 'Enregistré dans le carnet d\'adresses', 'ui.address_book.delete_confirm' => 'Êtes-vous sûr de vouloir supprimer « {name} » de votre carnet d\'adresses ?', 'ui.address_book.node_address_placeholder' => '1:234/567', 'ui.address_book.node_address_title' => 'Entrez une adresse Fidonet valide (ex. : 1:234/567 ou 1:234/567.0)', 'ui.drafts.delete_confirm' => 'Êtes-vous sûr de vouloir supprimer ce brouillon ? Cette action est irréversible.', 'ui.drafts.deleted_success' => 'Brouillon supprimé avec succès', 'ui.messages.none_selected' => 'Aucun message sélectionné', 'ui.netmail.search.failed' => 'Échec de la recherche', 'ui.netmail.message_deleted_success' => 'Message supprimé avec succès', 'ui.netmail.delete_message_confirm' => 'Êtes-vous sûr de vouloir supprimer ce message ? Cette action est irréversible.', 'ui.netmail.delete_saved_confirm' => 'Ce message est enregistre. Êtes-vous sûr de vouloir le supprimer ?', 'ui.netmail.bulk_delete.confirm' => 'Êtes-vous sûr de vouloir supprimer {count} message(s) ?', 'ui.netmail.bulk_delete.saved_confirm' => '{count} des messages sélectionnés sont enregistres. Êtes-vous sûr de vouloir les supprimer ?', 'ui.netmail.bulk_delete.success' => '{count} message(s) supprimé(s)', 'ui.netmail.address_book.load_entry_failed_prefix' => 'Échec du chargement de l\'entrée : ', 'ui.netmail.bulk_delete.failed' => 'Échec de la suppression des messages', 'ui.netmail.no_drafts_found' => 'Aucun brouillon trouvé', 'ui.netmail.to' => 'À', 'ui.netmail.from_to' => 'De/À', 'ui.netmail.last_updated' => 'Dernière mise à jour', 'ui.netmail.received' => 'Reçu', 'ui.netmail.badge_netmail' => 'NETMAIL', 'ui.netmail.badge_new' => 'NOUVEAU', 'ui.netmail.received_insecure_session_title' => 'Reçu via une session non sécurisée', 'ui.netmail.received_insecure_badge_title' => 'Ce message a été reçu via une session binkp non sécurisée/non authentifiée', 'ui.netmail.received_insecurely' => 'Reçu de manière non sécurisée', 'ui.netmail.not_authenticated' => 'Ce message n\'a pas été authentifié', 'ui.echomail.search.failed' => 'Échec de la recherche', 'ui.echomail.view_all_echo_areas' => 'Voir toutes les zones echo', 'ui.echomail.search_found_count' => '{count} trouvé(s)', 'ui.echomail.no_echoareas_available' => 'Aucune zone echo disponible', 'ui.echomail.no_drafts_found' => 'Aucun brouillon trouvé', 'ui.echomail.to_echo_area' => 'À / Zone echo', 'ui.echomail.last_updated' => 'Dernière mise à jour', 'ui.echomail.to_prefix' => 'à :', 'ui.echomail.bulk_mark_read_failed' => 'Échec du marquage des messages comme lus', 'ui.echomail.bulk_mark_read_success' => '{count} message(s) marqué(s) comme lu(s)', 'ui.echomail.bulk_marking' => 'Marquage en cours...', 'ui.echomail.viewing_all_messages' => 'Affichage : Tous les messages', 'ui.echomail.no_area' => 'Aucune zone', 'ui.echomail.save_status.update_failed' => 'Échec de la mise à jour du statut d\'enregistrement', 'ui.echomail.bulk_delete.failed' => 'Échec de la suppression des messages', 'ui.echomail.bulk_delete.success' => '{count} message(s) supprimé(s)', 'ui.echomail.bulk_delete.confirm' => 'Êtes-vous sûr de vouloir supprimer {count} message(s) sélectionné(s) pour tout le monde ?', 'ui.echomail.bulk_delete.saved_confirm' => '{count} des messages sélectionnés sont enregistres. Êtes-vous sûr de vouloir les supprimer ?', 'ui.echomail.bulk_deleting' => 'Suppression en cours...', 'ui.echomail.shares.check_failed' => 'Échec de la vérification des partages existants', 'ui.echomail.shares.friendly_url_failed' => 'Échec de la génération de l\'URL conviviale', 'ui.echomail.shares.revoke_confirm' => 'Êtes-vous sûr de vouloir révoquer ce lien de partage ? Il ne sera plus accessible aux autres.', 'ui.echomail.plain_text_mode' => 'Mode texte brut', 'ui.echomail.press_a_to_toggle' => 'appuyez sur A pour basculer', 'ui.echomail.press_a_to_cycle' => 'appuyez sur A pour changer', 'ui.echomail.viewer_mode_prefix' => 'Mode d\'affichage :', 'ui.echomail.viewer_mode_auto' => 'Auto', 'ui.echomail.viewer_mode_ansi' => 'ANSI', 'ui.echomail.viewer_mode_amiga_ansi' => 'ANSI Amiga', 'ui.echomail.viewer_mode_petscii' => 'PETSCII', 'ui.echomail.viewer_mode_plain' => 'Texte brut', 'ui.echomail.viewer_mode_raw' => 'Source brute', 'ui.echomail.viewer_mode_rendered_markup' => '{format} rendu', 'ui.echomail.viewer_mode_markup_source' => 'Source {format} ({mode})', 'ui.echomail.markup_markdown' => 'Markdown', 'ui.echomail.markup_stylecodes' => 'StyleCodes', 'ui.echomail.shortcuts.title' => 'Raccourcis clavier', 'ui.echomail.shortcuts.prev_next' => 'Message précédent / suivant', 'ui.echomail.shortcuts.toggle_ansi' => 'Basculer rendu ANSI / texte brut', 'ui.echomail.shortcuts.cycle_viewer_mode' => 'Faire défiler les modes d\'affichage (Auto, ANSI, ANSI Amiga, PETSCII, texte brut, source brute)', 'ui.echomail.shortcuts.download' => 'Télécharger le message', 'ui.echomail.shortcuts.fullscreen' => 'Basculer le plein écran', 'ui.echomail.shortcuts.help' => 'Afficher / masquer les raccourcis clavier', 'ui.echomail.shortcuts.close' => 'Fermer le message', 'ui.echomail.shortcuts.dismiss' => 'Appuyez sur ? ou H pour fermer cette aide', 'ui.echomail.art_format' => 'Format d\'art', 'ui.echomail.art_format_auto' => 'Détection automatique', 'ui.echomail.art_format_plain' => 'Texte brut', 'ui.echomail.art_format_ansi' => 'ANSI', 'ui.echomail.art_format_amiga_ansi' => 'ANSI Amiga', 'ui.echomail.art_format_petscii' => 'PETSCII / C64', 'ui.echomail.edit_message' => 'Modifier le message', 'ui.echomail.edit_message_saved' => 'Modifications enregistrées.', 'ui.echomail.message_charset' => 'Jeu de caractères', 'ui.admin_subscriptions.page_title' => 'Admin : Gérer les abonnements', 'ui.admin_subscriptions.heading' => 'Gestion des abonnements', 'ui.admin_subscriptions.breadcrumb_aria' => 'fil d\'Ariane', 'ui.admin_subscriptions.breadcrumb_current' => 'Abonnements', 'ui.admin_subscriptions.total_echoareas' => 'Total des zones echo', 'ui.admin_subscriptions.default_echoareas' => 'Zones echo par défaut', 'ui.admin_subscriptions.total_subscriptions' => 'Total des abonnements', 'ui.admin_subscriptions.active_subscribers' => 'Abonnés actifs', 'ui.admin_subscriptions.echoarea_default_subscriptions' => 'Abonnements par défaut aux zones d\'écho', 'ui.admin_subscriptions.manage_default_help' => 'Gérer les zones d\'écho auxquelles les nouveaux utilisateurs sont automatiquement abonnés', 'ui.admin_subscriptions.default' => 'Par défaut', 'ui.admin_subscriptions.echoarea' => 'Zone d\'écho', 'ui.admin_subscriptions.subscribers' => 'Abonnés', 'ui.admin_subscriptions.user_subs' => 'Abon. utilisateurs', 'ui.admin_subscriptions.auto_subs' => 'Abon. automatiques', 'ui.admin_subscriptions.messages' => 'Messages', 'ui.admin_subscriptions.default_subscription_title' => 'Abonnement par défaut', 'ui.admin_subscriptions.legend' => 'Légende :', 'ui.admin_subscriptions.legend_default' => 'Abonnement par défaut (nouveaux utilisateurs abonnés automatiquement)', 'ui.admin_subscriptions.legend_total_badge' => 'Total', 'ui.admin_subscriptions.legend_total' => 'Tous les abonnés actifs', 'ui.admin_subscriptions.legend_user_badge' => 'Utilisateur', 'ui.admin_subscriptions.legend_user' => 'Abonnements initiés par l\'utilisateur', 'ui.admin_subscriptions.legend_auto_badge' => 'Auto', 'ui.admin_subscriptions.legend_auto' => 'Abonnements automatiques/administrateur', 'ui.admin_subscriptions.how_it_works' => 'Fonctionnement :', 'ui.admin_subscriptions.how_default_toggle' => 'Activez « Par défaut » pour abonner automatiquement les nouveaux utilisateurs aux zones d\'écho', 'ui.admin_subscriptions.how_existing_users' => 'Lorsqu\'activé, tous les utilisateurs existants sont également abonnés automatiquement', 'ui.admin_subscriptions.how_unsubscribe' => 'Les utilisateurs peuvent toujours se désabonner des zones d\'écho par défaut', 'ui.admin_subscriptions.action_enabled' => 'activé', 'ui.admin_subscriptions.action_disabled' => 'désactivé', 'ui.admin_subscriptions.update_success' => 'Abonnement par défaut {action} avec succès ! La page va se rafraîchir pour afficher les statistiques mises à jour.', 'ui.admin_subscriptions.default_enabled_success' => 'Abonnement par défaut activé avec succès ! La page va se rafraîchir pour afficher les statistiques mises à jour.', 'ui.admin_subscriptions.default_disabled_success' => 'Abonnement par défaut désactivé avec succès ! La page va se rafraîchir pour afficher les statistiques mises à jour.', 'ui.admin_subscriptions.update_failed' => 'Échec de la mise à jour de l\'abonnement par défaut. Veuillez réessayer.', 'ui.admin_subscriptions.network_error' => 'Erreur réseau. Veuillez réessayer.', 'ui.user_subscriptions.page_title' => 'Gérer vos abonnements aux zones d\'écho', 'ui.user_subscriptions.heading' => 'Gérer vos abonnements aux zones d\'écho', 'ui.user_subscriptions.heading_help' => 'Abonnez-vous aux zones d\'écho pour voir leurs messages', 'ui.user_subscriptions.search_placeholder' => 'Rechercher des zones d\'écho...', 'ui.user_subscriptions.default_subscription_title' => 'Abonnement par défaut', 'ui.user_subscriptions.new_area_badge' => 'Nouveau !', 'ui.user_subscriptions.new_area_title' => 'Créée ces 30 derniers jours', 'ui.user_subscriptions.message_count' => '{count} messages', 'ui.user_subscriptions.dot_subscribed' => '- Abonné', 'ui.user_subscriptions.automatic' => '(automatique)', 'ui.user_subscriptions.view_messages' => 'Voir les messages', 'ui.user_subscriptions.subscription_info' => 'Informations d\'abonnement', 'ui.user_subscriptions.subscribed_label' => 'Abonné :', 'ui.user_subscriptions.how_subscriptions_work' => 'Fonctionnement des abonnements', 'ui.user_subscriptions.how_new_users' => 'Les nouveaux utilisateurs sont automatiquement abonnés aux zones d\'écho populaires', 'ui.user_subscriptions.how_subscribe_unsubscribe' => 'Vous pouvez vous abonner/désabonner de n\'importe quelle zone d\'écho', 'ui.user_subscriptions.how_only_subscribed' => 'Seules les zones d\'écho auxquelles vous êtes abonné apparaissent dans vos listes de messages', 'ui.user_subscriptions.how_star_means_default' => 'indique les zones d\'écho par défaut', 'ui.user_subscriptions.subscribed_success' => 'Abonnement effectué avec succès !', 'ui.user_subscriptions.unsubscribed_success' => 'Désabonnement effectué avec succès !', 'ui.user_subscriptions.update_failed' => 'Échec de la mise à jour de l\'abonnement. Veuillez réessayer.', 'ui.user_subscriptions.network_error' => 'Erreur réseau. Veuillez réessayer.', 'ui.user_subscriptions.filter_heading' => 'Filtres', 'ui.user_subscriptions.filter_by_interest' => 'Filtrer par intérêt :', 'ui.user_subscriptions.all_networks' => 'Tous les réseaux', 'ui.user_subscriptions.all_interests' => 'Tous les intérêts', 'ui.user_subscriptions.only_groups_with_messages' => 'Afficher seulement les groupes avec des messages', 'ui.user_subscriptions.networks_selected' => '{count} réseaux', 'ui.user_subscriptions.interests_selected' => '{count} intérêts', 'ui.user_subscriptions.no_interest_groups' => 'Aucun groupe d\'intérêt ne correspond à ce filtre', 'ui.user_subscriptions.local' => 'Local', 'ui.user_subscriptions.unknown' => 'Inconnu', 'ui.user_subscriptions.sort_by' => 'Trier par :', 'ui.user_subscriptions.sort_name' => 'Nom', 'ui.user_subscriptions.sort_created' => 'Date de création', 'ui.user_subscriptions.sort_messages' => 'Messages', 'ui.user_subscriptions.sort_direction_asc' => 'Tri croissant', 'ui.user_subscriptions.sort_direction_desc' => 'Tri décroissant', 'ui.user_subscriptions.interests_blurb' => 'Les intérêts sont une autre façon de gérer les abonnements aux zones d\'écho par thème.', 'ui.user_subscriptions.review_interests' => 'Consultez vos intérêts.', 'ui.echoareas_import.page_title' => 'Importer des zones d\'écho', 'ui.echoareas_import.heading' => 'Importer des zones d\'écho', 'ui.echoareas_import.back_to_echo_areas' => 'Retour aux zones d\'écho', 'ui.echoareas_import.processed' => 'Traités :', 'ui.echoareas_import.created' => 'Créés :', 'ui.echoareas_import.updated' => 'Mis à jour :', 'ui.echoareas_import.skipped_blank_rows' => 'Lignes vides ignorées :', 'ui.echoareas_import.errors' => 'Erreurs :', 'ui.echoareas_import.import_errors' => 'Erreurs d\'importation', 'ui.echoareas_import.tab_csv' => 'Fichier CSV', 'ui.echoareas_import.tab_na' => 'Fichier .NA', 'ui.echoareas_import.upload_csv' => 'Téléverser un CSV', 'ui.echoareas_import.csv_file' => 'Fichier CSV', 'ui.echoareas_import.csv_help' => 'Le CSV en UTF-8 est recommandé. La ligne d\'en-tête est facultative.', 'ui.echoareas_import.import_echo_areas' => 'Importer des zones d\'écho', 'ui.echoareas_import.csv_format' => 'Format CSV', 'ui.echoareas_import.each_row_fields' => 'Chaque ligne doit contenir ces champs dans cet ordre :', 'ui.echoareas_import.example' => 'Exemple :', 'ui.echoareas_import.import_rules' => 'Règles d\'importation', 'ui.echoareas_import.rule_domain_blank' => '<code>DOMAIN</code> peut être vide. Un domaine vide importe la zone en local uniquement.', 'ui.echoareas_import.rule_domain_exists' => 'Si un domaine est fourni, il doit déjà exister dans votre configuration réseau BinkP.', 'ui.echoareas_import.rule_existing_area' => 'Si une zone existe déjà avec le même <code>ECHOTAG</code> et le même domaine, sa description est mise à jour et la zone est réactivée.', 'ui.echoareas_import.rule_new_areas' => 'Les nouvelles zones sont créées actives avec les paramètres par défaut ; vous pouvez les affiner ensuite dans la gestion des zones d\'écho.', 'ui.echoareas_import.rule_header_optional' => 'La ligne d\'en-tête <code>ECHOTAG,DESCRIPTION,DOMAIN</code> est acceptée mais non obligatoire.', 'ui.echoareas_import.upload_na' => 'Téléverser un fichier .NA', 'ui.echoareas_import.na_file' => 'Fichier .NA', 'ui.echoareas_import.na_help' => 'Fichier de liste de zones délimité par des espaces (.NA). UTF-8 recommandé.', 'ui.echoareas_import.na_domain' => 'Domaine réseau', 'ui.echoareas_import.na_domain_help' => 'Toutes les zones du fichier seront assignées à ce domaine.', 'ui.echoareas_import.na_domain_local' => 'Local (sans domaine)', 'ui.echoareas_import.na_format' => 'Format .NA', 'ui.echoareas_import.na_format_desc' => 'Chaque ligne contient un tag d\'écho suivi d\'une description, séparés par des espaces :', 'ui.echoareas_import.rule_na_domain_selector' => 'Le domaine sélectionné ci-dessus s\'applique à toutes les zones du fichier. Choisissez <em>Local</em> pour importer des zones sans domaine réseau.', 'ui.echoareas_import.rule_na_comments' => 'Les lignes commençant par <code>%</code> ou <code>;</code> sont traitées comme des commentaires et ignorées.', 'ui.echoareas_import.importing' => 'Importation en cours...', 'ui.echoareas_import.error_line_prefix' => 'Ligne {line} : {message}', 'ui.echoareas_import.error_open_csv' => 'Impossible d\'ouvrir le fichier CSV téléversé.', 'ui.echoareas_import.error_open_na' => 'Impossible d\'ouvrir le fichier .NA téléversé.', 'ui.echoareas_import.error_duplicate_row' => 'ECHOTAG en double dans le fichier d\'importation.', 'ui.echoareas_import.error_tag_description_required' => 'ECHOTAG et DESCRIPTION sont obligatoires.', 'ui.echoareas_import.error_invalid_tag' => 'ECHOTAG invalide. Utilisez uniquement des lettres, des chiffres, des points, des tirets bas et des tirets.', 'ui.echoareas_import.error_invalid_domain' => 'DOMAIN invalide. Utilisez uniquement des lettres, des chiffres, des tirets bas et des tirets.', 'ui.echoareas_import.error_unknown_domain' => 'DOMAIN inconnu « {domain} ». Ajoutez d\'abord le domaine réseau dans la configuration BinkP.', 'ui.echoareas_import.error_apply_failed' => 'L\'importation a échoué et aucune modification n\'a été appliquée.', 'ui.echoareas_import.error_unexpected' => 'Erreur d\'importation inattendue.', 'ui.echoareas_import.error_choose_csv' => 'Veuillez choisir un fichier CSV à importer.', 'ui.echoareas_import.error_choose_na' => 'Veuillez choisir un fichier .NA à importer.', 'ui.echoareas_import.error_upload_failed' => 'Le téléversement a échoué. Veuillez réessayer.', 'ui.echoareas_import.error_invalid_upload' => 'Fichier téléversé invalide.', 'ui.api.reminder.sent' => 'Rappel de compte envoyé avec succès', 'ui.api.files.uploaded' => 'Fichier téléversé avec succès', 'ui.api.files.deleted' => 'Fichier supprimé avec succès', 'ui.api.files.renamed' => 'Fichier renommé avec succès', 'ui.api.messages.sent' => 'Message envoyé avec succès', 'ui.api.messages.bulk_mark_read' => 'Messages marqués comme lus', 'ui.api.messages.bulk_deleted' => 'Messages supprimés', 'ui.api.messages.saved' => 'Message sauvegardé', 'ui.api.messages.unsaved' => 'Message non sauvegardé', 'ui.api.messages.share_revoked' => 'Lien de partage révoqué', 'ui.api.credits.sent' => 'Crédits envoyés avec succès', 'ui.api.debug.delete_endpoint_accessible' => 'Le point de terminaison de suppression est accessible', 'ui.api.admin.mrc_restart_initiated' => 'Redémarrage du démon MRC initié', 'ui.api.admin.binkp_config_reloaded' => 'Rechargement de la configuration BinkP demandé', 'ui.api.binkp.uplink_added' => 'Lien montant ajouté avec succès', 'ui.api.binkp.uplink_updated' => 'Lien montant mis à jour avec succès', 'ui.api.binkp.uplink_removed' => 'Lien montant supprimé avec succès', 'ui.api.binkp.file_deleted' => 'Fichier supprimé avec succès', 'ui.api.binkp.file_retry_started' => 'Nouvelle tentative de fichier initiée avec succès', 'ui.api.binkp.config_updated' => 'Configuration mise à jour avec succès', 'ui.api.binkp.poll_triggered' => 'Interrogation BinkP déclenchée', 'ui.api.binkp.poll_all_triggered' => 'Interrogation générale BinkP déclenchée', 'ui.api.binkp.process_packets_started' => 'Traitement des paquets démarré', 'ui.api.door.session_resumed' => 'Reprise de la session existante', 'ui.files.previous_file' => 'Fichier précédent', 'ui.files.next_file' => 'Fichier suivant', 'ui.bbs_directory.heading' => 'Répertoire BBS', 'ui.bbs_directory.page_title' => 'Répertoire BBS ? Systèmes de babillard telnet', 'ui.bbs_directory.description' => 'Une liste des systèmes BBS connus de ce BBS, découverts automatiquement via diverses sources et complétés par des entrées gérées manuellement.', 'ui.bbs_directory.og_title' => 'La liste des systèmes BBS de {name}', 'ui.bbs_directory.og_description' => 'Parcourez des systèmes de babillard électronique (BBS) telnet du monde entier. Découvrez les BBS actifs, leurs sysops, emplacements et coordonnées de connexion.', 'ui.bbs_directory.col_name' => 'Nom du BBS', 'ui.bbs_directory.col_sysop' => 'Sysop', 'ui.bbs_directory.col_location' => 'Emplacement', 'ui.bbs_directory.col_telnet' => 'Telnet', 'ui.bbs_directory.col_telnet_port' => 'Port', 'ui.bbs_directory.entry_page_title' => '{name} ? Système de babillard électronique', 'ui.bbs_directory.entry_back' => 'Retour au répertoire BBS', 'ui.bbs_directory.entry_connection' => 'Connexion', 'ui.bbs_directory.entry_col_ssh' => 'SSH', 'ui.bbs_directory.entry_col_software' => 'Logiciel', 'ui.bbs_directory.entry_not_found' => 'Annonce BBS introuvable.', 'ui.bbs_directory.col_website' => 'Site web', 'ui.bbs_directory.col_os' => 'OS', 'ui.bbs_directory.col_notes' => 'Notes', 'ui.bbs_directory.col_last_seen' => 'Vu la dernière fois', 'ui.bbs_directory.connect' => 'Connecter', 'ui.bbs_directory.no_entries' => 'Aucune entrée BBS pour l\'instant.', 'ui.bbs_directory.no_results' => 'Aucune entrée ne correspond à votre recherche.', 'ui.bbs_directory.search_placeholder' => 'Rechercher par nom, sysop, emplacement...', 'ui.bbs_directory.source_auto' => 'Auto', 'ui.bbs_directory.source_manual' => 'Manuel', 'ui.bbs_directory.status_pending' => 'En attente', 'ui.bbs_directory.status_rejected' => 'Rejeté', 'ui.bbs_directory.add_listing' => 'Ajouter votre BBS', 'ui.bbs_directory.submit_title' => 'Soumettre votre BBS', 'ui.bbs_directory.submit_description' => 'Soumettez votre BBS au répertoire. Les nouvelles inscriptions sont examinées par le sysop avant d\'apparaître publiquement.', 'ui.bbs_directory.submit_btn' => 'Soumettre l\'inscription', 'ui.bbs_directory.submit_success' => 'Votre inscription a été soumise et est en attente de validation. Merci !', 'ui.bbs_directory.tab_list' => 'Liste du répertoire', 'ui.bbs_directory.tab_map' => 'Carte des systèmes BBS', 'ui.bbs_directory.map_no_coordinates' => 'Aucun système BBS ne dispose encore de coordonnées cartographiques.', 'ui.bbs_directory.map_partial_notice' => '{count} systèmes BBS ne sont pas affichés sur la carte car leurs emplacements n\'ont pas encore pu être géocodés.', 'ui.admin.bbs_directory.heading' => 'Répertoire BBS', 'ui.admin.bbs_directory.page_title' => 'Répertoire BBS', 'ui.admin.bbs_directory.tab_entries' => 'Entrées du répertoire', 'ui.admin.bbs_directory.tab_all' => 'Toutes les entrées', 'ui.admin.bbs_directory.tab_pending' => 'En attente de validation', 'ui.admin.bbs_directory.tab_robots' => 'Règles des robots', 'ui.admin.bbs_directory.col_name' => 'Nom', 'ui.admin.bbs_directory.col_sysop' => 'Sysop', 'ui.admin.bbs_directory.col_location' => 'Emplacement', 'ui.admin.bbs_directory.col_telnet' => 'Telnet', 'ui.admin.bbs_directory.col_last_seen' => 'Vu la dernière fois', 'ui.admin.bbs_directory.col_source' => 'Source', 'ui.admin.bbs_directory.col_enabled' => 'Activé', 'ui.admin.bbs_directory.col_submitted_by' => 'Soumis par', 'ui.admin.bbs_directory.col_actions' => 'Actions', 'ui.admin.bbs_directory.col_echo_area' => 'Zone echo', 'ui.admin.bbs_directory.col_subject_pattern' => 'Modèle de sujet', 'ui.admin.bbs_directory.col_processor' => 'Processeur', 'ui.admin.bbs_directory.col_last_run' => 'Dernier déclenchement', 'ui.admin.bbs_directory.col_messages_processed' => 'Msg traités', 'ui.admin.bbs_directory.no_entries' => 'Aucune entrée pour l\'instant.', 'ui.admin.bbs_directory.no_pending' => 'Aucune inscription en attente.', 'ui.admin.bbs_directory.no_robots' => 'Aucune règle de robot configurée.', 'ui.admin.bbs_directory.never' => 'Jamais', 'ui.admin.bbs_directory.approve' => 'Approuver', 'ui.admin.bbs_directory.reject' => 'Rejeter', 'ui.admin.bbs_directory.approved' => 'Entrée approuvée', 'ui.admin.bbs_directory.rejected' => 'Entrée rejetée', 'ui.admin.bbs_directory.entry_saved' => 'Entrée enregistrée avec succès', 'ui.admin.bbs_directory.entry_deleted' => 'Entrée supprimée avec succès', 'ui.admin.bbs_directory.add_entry' => 'Ajouter une entrée', 'ui.admin.bbs_directory.add_robot' => 'Ajouter un robot', 'ui.admin.bbs_directory.run_now' => 'Exécuter maintenant', 'ui.admin.bbs_directory.run_complete' => 'Exécution du robot terminée : examiné {examined}, traité {processed}', 'ui.admin.bbs_directory.robot_saved' => 'Règle de robot enregistrée avec succès', 'ui.admin.bbs_directory.robot_deleted' => 'Règle de robot supprimée avec succès', 'ui.admin.bbs_directory.is_local_label' => 'Notre BBS (protégé)', 'ui.admin.bbs_directory.is_local_help' => 'Les imports automatiques et les robots ne modifieront pas cette entrée.', 'ui.admin.bbs_directory.merge' => 'Fusionner le doublon', 'ui.admin.bbs_directory.merge_title' => 'Fusionner l\'entrée en doublon', 'ui.admin.bbs_directory.merge_keep_label' => 'Conserver :', 'ui.admin.bbs_directory.merge_discard_label' => 'Supprimer (sera effacé) :', 'ui.admin.bbs_directory.merge_search_placeholder' => 'Rechercher le doublon...', 'ui.admin.bbs_directory.merge_help' => 'L\'entrée conservée sera complétée par les champs manquants de l\'entrée supprimée. L\'entrée supprimée sera effacée.', 'ui.admin.bbs_directory.merge_will_delete' => 'Sera supprimé :', 'ui.admin.bbs_directory.merge_confirm' => 'Fusionner et supprimer le doublon', 'ui.admin.bbs_directory.merge_success' => 'Entrées fusionnées avec succès', 'ui.admin.echomail_robots.heading' => 'Robots Echomail', 'ui.admin.echomail_robots.page_title' => 'Robots Echomail', 'ui.admin.echomail_robots.about_title' => 'À propos des robots', 'ui.admin.echomail_robots.about_text' => 'Les règles de robot surveillent les zones echo à la recherche de messages correspondants et les traitent automatiquement. Les résultats sont stockés dans le répertoire BBS ou d\'autres cibles selon le processeur.', 'ui.admin.echomail_robots.processor_config_label' => 'Config du processeur (JSON)', 'ui.admin.echomail_robots.cron_hint' => 'Exécuter périodiquement via cron :', 'ui.admin.echomail_robots.run_output_title' => 'Sortie du robot', 'ui.admin.appearance.message_reader.email_link_url' => 'URL du lien E-mail', 'ui.admin.appearance.message_reader.email_link_url_placeholder' => 'https://mail.example.com/', 'ui.admin.appearance.message_reader.email_link_url_help' => 'Lien optionnel affiche dans le menu Messagerie juste sous Echomail.', 'ui.admin.appearance.message_reader.discord_url' => 'Discord', 'ui.admin.appearance.message_reader.discord_url_placeholder' => 'https://discord.gg/...', 'ui.admin.appearance.message_reader.discord_url_help' => 'Lien d\'invitation Discord optionnel affiche dans le menu Messagerie.', // Broadcast Manager 'ui.admin.ad_campaigns.ad' => 'Annonce', 'ui.admin.ad_campaigns.add_campaign' => 'Ajouter une campagne', 'ui.admin.ad_campaigns.add_schedule' => 'Ajouter un planning', 'ui.admin.ad_campaigns.add_target' => 'Ajouter une cible', 'ui.admin.ad_campaigns.ads' => 'Annonces', 'ui.admin.ad_campaigns.all_campaigns' => 'Toutes les campagnes', 'ui.admin.ad_campaigns.all_statuses' => 'Tous les statuts', 'ui.admin.ad_campaigns.assigned_ads' => 'Annonces assignées', 'ui.admin.ad_campaigns.back_to_ads' => 'Retour aux annonces', 'ui.admin.ad_campaigns.campaign' => 'Campagne', 'ui.admin.ad_campaigns.campaigns' => 'Campagnes', 'ui.admin.ad_campaigns.created' => 'Diffusion créée.', 'ui.admin.ad_campaigns.day_fri' => 'Ven', 'ui.admin.ad_campaigns.day_mon' => 'Lun', 'ui.admin.ad_campaigns.day_sat' => 'Sam', 'ui.admin.ad_campaigns.day_sun' => 'Dim', 'ui.admin.ad_campaigns.day_thu' => 'Jeu', 'ui.admin.ad_campaigns.day_tue' => 'Mar', 'ui.admin.ad_campaigns.day_wed' => 'Mer', 'ui.admin.ad_campaigns.delete_confirm' => 'Supprimer {name} ?', 'ui.admin.ad_campaigns.delete_failed' => 'Échec de la suppression de la diffusion', 'ui.admin.ad_campaigns.deleted' => 'Diffusion supprimée.', 'ui.admin.ad_campaigns.echoarea_domain' => 'Zone echo + Domaine', 'ui.admin.ad_campaigns.edit_campaign' => 'Modifier la campagne', 'ui.admin.ad_campaigns.clone_campaign' => 'Cloner la campagne', 'ui.admin.ad_campaigns.copy_suffix' => ' (Copy)', 'ui.admin.ad_campaigns.error' => 'Erreur', 'ui.admin.ad_campaigns.exclude_tags' => 'Tags exclus', 'ui.admin.ad_campaigns.exclude_tags_help' => 'Les annonces correspondant à l\'un des tags exclus sont ignorées.', 'ui.admin.ad_campaigns.heading' => 'Gestionnaire de Diffusion', 'ui.admin.ad_campaigns.include_tags' => 'Tags inclus', 'ui.admin.ad_campaigns.include_tags_help' => 'Seules les annonces correspondant à au moins un tag inclus sont éligibles.', 'ui.admin.ad_campaigns.interval' => 'Intervalle', 'ui.admin.ad_campaigns.last_posted' => 'Dernière publication', 'ui.admin.ad_campaigns.list_failed' => 'Échec du chargement des diffusions', 'ui.admin.ad_campaigns.load_failed' => 'Échec du chargement des diffusions', 'ui.admin.ad_campaigns.load_one_failed' => 'Échec du chargement de la diffusion', 'ui.admin.ad_campaigns.loading' => 'Chargement des diffusions...', 'ui.admin.ad_campaigns.log_failed' => 'Échec du chargement du journal de diffusion', 'ui.admin.ad_campaigns.manual_post' => 'Publication manuelle', 'ui.admin.ad_campaigns.meta_failed' => 'Échec du chargement des métadonnées de la diffusion', 'ui.admin.ad_campaigns.next_run' => 'Prochaine exécution', 'ui.admin.ad_campaigns.no_ads_available' => 'Aucune annonce disponible pour l\'instant.', 'ui.admin.ad_campaigns.no_history' => 'Aucun historique de publication.', 'ui.admin.ad_campaigns.no_history_rows' => 'Aucun historique trouvé pour les filtres actuels.', 'ui.admin.ad_campaigns.none' => 'Aucune diffusion configurée.', 'ui.admin.ad_campaigns.not_scheduled' => 'Non planifié', 'ui.admin.ad_campaigns.page_title' => 'Gestionnaire de Diffusion', 'ui.admin.ad_campaigns.post_as_user' => 'Publier en tant qu\'utilisateur', 'ui.admin.ad_campaigns.post_history' => 'Historique des publications', 'ui.admin.ad_campaigns.post_interval_minutes' => 'Intervalle de publication (minutes)', 'ui.admin.ad_campaigns.posted_by' => 'Publié par', 'ui.admin.ad_campaigns.recent_history' => 'Historique récent des publications', 'ui.admin.ad_campaigns.repeat_gap_minutes' => 'Délai de répétition (minutes)', 'ui.admin.ad_campaigns.run_complete' => 'Diffusion exécutée.', 'ui.admin.ad_campaigns.run_failed' => 'Échec de l\'exécution de la diffusion', 'ui.admin.ad_campaigns.run_now' => 'Exécuter maintenant', 'ui.admin.ad_campaigns.save_failed' => 'Échec de l\'enregistrement de la diffusion', 'ui.admin.ad_campaigns.saved' => 'Diffusion enregistrée.', 'ui.admin.ad_campaigns.schedule' => 'Planning', 'ui.admin.ad_campaigns.schedule_days' => 'Jours', 'ui.admin.ad_campaigns.schedule_time' => 'Heure', 'ui.admin.ad_campaigns.schedule_timezone' => 'Fuseau horaire', 'ui.admin.ad_campaigns.schedules' => 'Plannings', 'ui.admin.ad_campaigns.select_target' => 'Sélectionner une cible...', 'ui.admin.ad_campaigns.select_user' => 'Sélectionner un utilisateur...', 'ui.admin.ad_campaigns.selection_mode' => 'Mode de sélection', 'ui.admin.ad_campaigns.selection_weighted_random' => 'Aléatoire pondéré', 'ui.admin.ad_campaigns.status_dry_run' => 'Simulation', 'ui.admin.ad_campaigns.status_failed' => 'Échoué', 'ui.admin.ad_campaigns.status_skipped' => 'Ignoré', 'ui.admin.ad_campaigns.status_success' => 'Réussi', 'ui.admin.ad_campaigns.subject_template' => 'Modèle d\'objet', 'ui.admin.ad_campaigns.target' => 'Cible', 'ui.admin.ad_campaigns.targets' => 'Cibles', 'ui.admin.ad_campaigns.to_name' => 'Nom du destinataire', 'ui.admin.ad_campaigns.end_at' => 'Expire le', 'ui.admin.ad_campaigns.end_at_help' => 'La campagne se désactivera automatiquement après cette date. Laisser vide pour une durée indéfinie.', 'ui.admin.ad_campaigns.wizard_btn' => 'Configuration rapide', 'ui.admin.ad_campaigns.wizard_title' => 'Configuration rapide de campagne', 'ui.admin.ad_campaigns.wizard_step_of' => 'Étape {current} sur {total}', 'ui.admin.ad_campaigns.wizard_step1_title' => 'Choisir le type', 'ui.admin.ad_campaigns.wizard_step2_title' => 'Détails', 'ui.admin.ad_campaigns.wizard_step3_title' => 'Révision', 'ui.admin.ad_campaigns.wizard_back' => 'Retour', 'ui.admin.ad_campaigns.wizard_next' => 'Suivant', 'ui.admin.ad_campaigns.wizard_finish' => 'Créer la campagne', 'ui.admin.ad_campaigns.wizard_campaign_name' => 'Nom de la campagne', 'ui.admin.ad_campaigns.wizard_select_ads' => 'Assigner des annonces', 'ui.admin.ad_campaigns.wizard_select_ads_help' => 'Sélectionnez une ou plusieurs annonces à inclure dans cette campagne.', 'ui.admin.ad_campaigns.wizard_posts_to' => 'Publie dans', 'ui.admin.ad_campaigns.wizard_schedule_label' => 'Planning', 'ui.admin.ad_campaigns.wizard_frequency_label' => 'Intervalle', 'ui.admin.ad_campaigns.wizard_expires_label' => 'Expire', 'ui.admin.ad_campaigns.wizard_subject_label' => 'Modèle d\'objet', 'ui.admin.ad_campaigns.wizard_ads_label' => 'Annonces', 'ui.admin.ad_campaigns.wizard_disable_reminder' => 'La campagne se désactivera automatiquement après cette date.', 'ui.admin.ad_campaigns.wizard_created' => 'Campagne créée avec succès.', 'ui.admin.ad_campaigns.wizard_no_type' => 'Veuillez sélectionner un type de campagne.', 'ui.admin.ad_campaigns.wizard_no_name' => 'Veuillez saisir un nom de campagne.', 'ui.admin.ad_campaigns.wizard_no_user' => 'Veuillez sélectionner un utilisateur.', 'ui.admin.ad_campaigns.wizard_no_target' => 'Veuillez sélectionner une zone echo cible.', 'ui.admin.ad_campaigns.wizard_no_ads' => 'Veuillez sélectionner au moins une annonce.', // Ads 'ui.admin.ads.allow_auto_post' => 'Autoriser la publication automatique', 'ui.admin.ads.ansi_content' => 'Contenu ANSI', 'ui.admin.ads.auto_post' => 'Publication automatique', 'ui.admin.ads.dashboard' => 'Tableau de bord', 'ui.admin.ads.dashboard_priority' => 'Priorité tableau de bord', 'ui.admin.ads.dashboard_weight' => 'Poids tableau de bord', 'ui.admin.ads.duplicate_warning' => 'Un contenu ANSI identique existe déjà : {items}', 'ui.admin.ads.edit_advertisement' => 'Modifier l\'annonce', 'ui.admin.ads.escape_helper_help' => 'Insérer un préfixe ESC[ brut ou une séquence ANSI courante à la position du curseur.', 'ui.admin.ads.insert_escape_prefix' => 'Insérer ESC[', 'ui.admin.ads.insert_sequence' => 'Insérer une séquence', 'ui.admin.ads.legacy_filename' => 'Nom de fichier hérité', 'ui.admin.ads.library_info' => 'Gérez les annonces ANSI dans la bibliothèque. Les annonces héritées importées restent disponibles ici pour l\'affichage sur le tableau de bord et la sélection automatique.', 'ui.admin.ads.library_list' => 'Bibliothèque de Contenu', 'ui.admin.ads.load_one_failed' => 'Échec du chargement de l\'annonce', 'ui.admin.ads.manage_campaigns' => 'Gérer les campagnes', 'ui.admin.ads.not_found' => 'Annonce introuvable', 'ui.admin.ads.click_url' => 'URL de renvoi', 'ui.admin.ads.click_url_help' => 'URL facultative à ouvrir lorsqu\'un utilisateur clique sur l\'annonce.', 'ui.admin.ads.impressions' => 'imp', 'ui.admin.ads.clicks' => 'clics', 'ui.admin.ads.stats' => 'Statistiques', 'ui.dashboard.advertisement_visit' => 'Visiter', 'ui.admin.ads.save_failed_with_status' => 'Échec de l\'enregistrement ({status})', 'ui.admin.ads.saved' => 'Annonce enregistrée.', 'ui.admin.ads.select_sequence' => 'Sélectionner une séquence ANSI', 'ui.admin.ads.sequence_blue' => 'Bleu (ESC[34m)', 'ui.admin.ads.sequence_bold' => 'Gras (ESC[1m)', 'ui.admin.ads.sequence_clear_line' => 'Effacer la ligne (ESC[K)', 'ui.admin.ads.sequence_clear_screen' => 'Effacer l\'écran (ESC[2J)', 'ui.admin.ads.sequence_cursor_home' => 'Curseur en début (ESC[H)', 'ui.admin.ads.sequence_green' => 'Vert (ESC[32m)', 'ui.admin.ads.sequence_red' => 'Rouge (ESC[31m)', 'ui.admin.ads.sequence_reset' => 'Réinitialiser (ESC[0m)', 'ui.admin.ads.sequence_white' => 'Blanc (ESC[37m)', 'ui.admin.ads.sequence_yellow' => 'Jaune (ESC[33m)', 'ui.admin.ads.show_on_dashboard' => 'Afficher comme annonce sur le tableau de bord', 'ui.admin.ads.slug' => 'Slug', 'ui.admin.ads.slug_optional' => 'Slug (facultatif)', 'ui.admin.ads.tags' => 'Tags', 'ui.admin.ads.tags_placeholder' => 'general, door, network', 'ui.admin.ads.create_dynamic_failed' => 'Échec de la création de l\'annonce dynamique', 'ui.admin.ads.content_command' => 'Commande de contenu', 'ui.admin.ads.content_command_help' => 'Sélectionnez un script pour générer le corps du message dynamiquement. Si défini, le contenu statique est ignoré. La publication est ignorée si le script se termine avec un code non nul ou ne produit aucun résultat.', 'ui.admin.ads.content_command_upload_help' => 'À utiliser à la place d\'un fichier pour générer du contenu dynamiquement au moment de la publication.', 'ui.admin.ads.content_command_none' => 'Aucune (contenu statique uniquement)', 'ui.admin.ads.content_command_args' => 'Arguments', 'ui.admin.ads.content_command_invalid_stored' => 'Cette annonce a une commande de contenu qui n\'est plus autorisée. Veuillez sélectionner une commande valide ou la supprimer.', // Ad Analytics 'ui.admin.ad_analytics.page_title' => 'Analyse des annonces', 'ui.admin.ad_analytics.heading' => 'Analyse des annonces', 'ui.admin.ad_analytics.period' => 'Période', 'ui.admin.ad_analytics.period_7d' => '7 derniers jours', 'ui.admin.ad_analytics.period_30d' => '30 derniers jours', 'ui.admin.ad_analytics.period_90d' => '90 derniers jours', 'ui.admin.ad_analytics.period_all' => 'Depuis toujours', 'ui.admin.ad_analytics.content_library' => 'Bibliothèque de Contenu', 'ui.admin.ad_analytics.total_impressions' => 'Total des impressions', 'ui.admin.ad_analytics.total_clicks' => 'Total des clics', 'ui.admin.ad_analytics.overall_ctr' => 'CTR global', 'ui.admin.ad_analytics.active_ads' => 'Annonces actives / total', 'ui.admin.ad_analytics.daily_activity' => 'Activité quotidienne', 'ui.admin.ad_analytics.per_ad_breakdown' => 'Détail par annonce', 'ui.admin.ad_analytics.impressions' => 'Impressions', 'ui.admin.ad_analytics.clicks' => 'Clics', 'ui.admin.ad_analytics.ctr' => 'CTR', 'ui.admin.ad_analytics.ctr_bar' => 'Portée relative', 'ui.admin.ad_analytics.last_impression' => 'Dernière vue', 'ui.admin.ad_analytics.last_click' => 'Dernier clic', 'ui.admin.ad_analytics.no_data' => 'Aucune activité sur cette période.', 'ui.admin.ad_analytics.no_ads' => 'Aucune annonce trouvée.', // BinkStream Test 'ui.admin.sse_test.page_title' => 'Diagnostics BinkStream', 'ui.admin.sse_test.heading' => 'Diagnostics BinkStream', 'ui.admin.sse_test.interval' => 'Intervalle d\'événement', 'ui.admin.sse_test.duration' => 'Durée', 'ui.admin.sse_test.payload' => 'Taille du payload', 'ui.admin.sse_test.payload_none' => 'Aucun', 'ui.admin.sse_test.start' => 'Démarrer', 'ui.admin.sse_test.stop' => 'Arrêter', 'ui.admin.sse_test.clear' => 'Effacer', 'ui.admin.sse_test.status_idle' => 'En attente', 'ui.admin.sse_test.status_connecting' => 'Connexion?', 'ui.admin.sse_test.status_connected' => 'Connecté', 'ui.admin.sse_test.status_done' => 'Terminé', 'ui.admin.sse_test.status_error' => 'Erreur', 'ui.admin.sse_test.stat_events' => 'Événements reçus', 'ui.admin.sse_test.stat_missed' => 'Événements manqués', 'ui.admin.sse_test.stat_latency' => 'Latence moy. (p95)', 'ui.admin.sse_test.stat_gap_dev' => 'Déviation d\'intervalle moy. (max)', 'ui.admin.sse_test.latency_chart' => 'Latence dans le temps', 'ui.admin.sse_test.chart_note' => 'Latence = heure de réception client ? heure d\'envoi serveur (nécessite des horloges synchronisées pour une précision absolue)', 'ui.admin.sse_test.event_log' => 'Journal d\'événements', 'ui.admin.sse_test.log_note' => 'Plus récent en premier · max 200 lignes', 'ui.admin.sse_test.col_seq' => 'Seq', 'ui.admin.sse_test.col_server_ts' => 'ts serveur (ms)', 'ui.admin.sse_test.col_client_ts' => 'ts client (ms)', 'ui.admin.sse_test.col_latency' => 'Latence', 'ui.admin.sse_test.col_gap' => 'Intervalle entre événements', 'ui.admin.sse_test.col_gap_dev' => 'Déviation intervalle', 'ui.admin.sse_test.col_note' => 'Note', // Appearance - Branding 'ui.admin.appearance.branding.hide_powered_by' => 'Masquer la ligne "Propulsé par BinktermPHP" dans le pied de page', 'ui.admin.appearance.branding.hide_powered_by_help' => 'Supprimer la mention BinktermPHP dans le pied de page du site. Nécessite une licence valide.', 'ui.admin.appearance.branding.premium_branding_locked' => 'Le texte personnalisé du pied de page et les options de marque sont disponibles pour les installations enregistrées.', 'ui.admin.appearance.branding.premium_branding_register' => 'S\'enregistrer ?', 'ui.admin.appearance.branding.show_registration_badge' => 'Afficher le statut d\'enregistrement dans le pied de page', 'ui.admin.appearance.branding.show_registration_badge_help' => 'Afficher "Enregistré à [nom du système]" dans le pied de page du site. Nécessite une licence valide avec la fonctionnalité registered_badge.', // Appearance - Splash Pages 'ui.admin.appearance.splash.help' => 'Ajoutez un contenu personnalisé qui apparaît au-dessus des formulaires de connexion et d\'inscription. Prend en charge Markdown. Laisser vide pour n\'afficher rien.', 'ui.admin.appearance.splash.locked_description' => 'Les pages d\'accueil personnalisées sont disponibles pour les installations enregistrées.', 'ui.admin.appearance.splash.locked_heading' => 'Fonctionnalité enregistrée', 'ui.admin.appearance.splash.login_help' => 'Affiché au-dessus du formulaire de connexion sur /login.', 'ui.admin.appearance.splash.login_label' => 'Page d\'accueil connexion', 'ui.admin.appearance.splash.placeholder' => '## Bienvenue\n\nCeci est un message d\'**accueil personnalisé**.', 'ui.admin.appearance.splash.register_help' => 'Affiché au-dessus du formulaire d\'inscription sur /register.', 'ui.admin.appearance.splash.register_label' => 'Page d\'accueil inscription', 'ui.admin.appearance.splash.title' => 'Pages d\'accueil personnalisées', 'ui.admin.appearance.tab_splash' => 'Pages d\'accueil', // BBS Settings - Features 'ui.admin.bbs_settings.features.dashboard_ad_rotate_interval' => 'Intervalle de rotation des annonces du tableau de bord', 'ui.admin.bbs_settings.features.dashboard_ad_rotate_interval_help' => 'Fréquence de rotation automatique des annonces du tableau de bord, en secondes (5-300). La valeur par défaut est 20 secondes.', 'ui.admin.bbs_settings.features.bulletin_display_mode' => 'Mode d affichage des bulletins', 'ui.admin.bbs_settings.features.bulletin_display_once' => 'Afficher une fois', 'ui.admin.bbs_settings.features.bulletin_display_always' => 'Toujours afficher', 'ui.admin.bbs_settings.features.bulletin_display_help' => 'Choisissez si les bulletins de connexion sont affiches jusqu a leur lecture, ou une fois au debut de chaque session.', 'ui.admin.bbs_settings.features.outgoing_charset' => 'Jeu de caractères sortant par défaut', 'ui.admin.bbs_settings.features.outgoing_charset_help' => 'Jeu de caractères utilisé pour les nouveaux messages FTN sortants lorsqu\'aucune substitution par uplink n\'est définie. Les réponses héritent du jeu de caractères du message original dans la mesure du possible.', 'ui.admin.bbs_settings.features.enable_public_files_index' => 'Activer l\'index des fichiers publics', 'ui.admin.bbs_settings.features.enable_qwk' => 'Activer le courrier hors ligne QWK', 'ui.admin.bbs_settings.features.qwk_bbs_id' => 'ID BBS QWK', 'ui.admin.bbs_settings.features.qwk_bbs_id_help' => 'Jusqu\'à 8 caractères alphanumériques utilisés comme identifiant du paquet (BBSID). Le modifier cassera les lecteurs hors ligne déjà configurés pour ce BBS.', 'ui.admin.bbs_settings.validation.qwk_bbs_id_invalid' => 'L\'ID BBS QWK doit comporter entre 1 et 8 lettres ou chiffres.', 'ui.admin.bbs_settings.features.public_files_index_help' => 'Affiche une page publique /public-files listant toutes les zones de fichiers publiques. Ajoute également un lien de navigation pour les visiteurs. Nécessite une licence enregistrée.', 'ui.admin.bbs_settings.features.public_files_index_requires_license' => 'L\'index des zones de fichiers publiques nécessite une licence enregistrée.', 'ui.admin.bbs_settings.features.qwk_help' => 'Permet aux utilisateurs de télécharger des paquets QWK et d\'envoyer des paquets de réponses REP pour la lecture de courrier hors ligne.', 'ui.admin.bbs_settings.validation.dashboard_ad_rotate_interval_range' => 'L\'intervalle de rotation des annonces du tableau de bord doit être un entier compris entre 5 et 300 secondes.', // Admin Dashboard 'ui.admin.dashboard.registration_link' => 'S\'enregistrer ?', 'ui.admin.dashboard.registration_registered' => 'Enregistré', 'ui.admin.dashboard.registration_status' => 'Enregistrement :', 'ui.admin.dashboard.registration_to' => 'Enregistré à {system} / {licensee}', 'ui.admin.dashboard.registration_unregistered' => 'Non enregistré', // Licensing 'ui.admin.licensing.access_col' => 'Description', 'ui.admin.licensing.current_status' => 'Statut actuel de la licence', 'ui.admin.licensing.heading' => 'Licences', 'ui.admin.licensing.how_to_heading' => 'Pourquoi s\'enregistrer ?', 'ui.admin.licensing.how_to_register_link' => 'Comment s\'enregistrer', 'ui.admin.licensing.license_json_label' => 'Licence JSON', 'ui.admin.licensing.page_title' => 'Licences', 'ui.admin.licensing.register_modal_title' => 'Enregistrer BinktermPHP', 'ui.admin.licensing.remove_btn' => 'Supprimer la licence', 'ui.admin.licensing.remove_confirm' => 'Supprimer le fichier de licence actuel ? Le système reviendra à l\'édition communautaire.', 'ui.admin.licensing.tier_col' => 'Niveau', 'ui.admin.licensing.tier_community' => 'Communauté', 'ui.admin.licensing.tier_community_desc' => 'BBS complet, netmail, echomail et traitement des paquets. Gratuit pour tous.', 'ui.admin.licensing.tier_registered' => 'Enregistré', 'ui.admin.licensing.tier_registered_desc' => 'Outils d\'administration avancés, badge de supporter.', 'ui.admin.licensing.tier_sponsor' => 'Sponsor', 'ui.admin.licensing.tier_sponsor_desc' => 'Toutes les fonctionnalités enregistrées plus un support prioritaire.', 'ui.admin.licensing.tiers_heading' => 'Niveaux de licence', 'ui.admin.licensing.upload_btn' => 'Installer la licence', 'ui.admin.licensing.upload_heading' => 'Installer ou remplacer la licence', 'ui.admin.licensing.upload_help' => 'Collez le contenu de votre fichier license.json ci-dessous, puis cliquez sur Installer la licence. La licence sera vérifiée avant d\'être enregistrée.', 'ui.admin.licensing.why_branding' => 'Contrôle de la marque ? présentez une expérience entièrement personnalisée sans mention BinktermPHP dans le pied de page.', 'ui.admin.licensing.why_features' => 'Accès aux outils premium ? les installations enregistrées reçoivent automatiquement les nouvelles fonctionnalités premium au fur et à mesure de leur sortie.', 'ui.admin.licensing.why_intro' => 'BinktermPHP est open source et l\'édition communautaire est entièrement fonctionnelle. L\'enregistrement est la façon dont les sysops qui trouvent de la valeur dans le projet peuvent soutenir son développement continu.', 'ui.admin.licensing.why_perpetual' => 'Licence perpétuelle ? s\'enregistrer une seule fois. Pas d\'abonnement ni de frais récurrents.', 'ui.admin.licensing.why_sustain' => 'Soutenir le développement ? l\'enregistrement soutient directement les corrections de bugs, les nouvelles fonctionnalités et le travail de compatibilité des protocoles.', 'ui.admin.licensing.license_file_label' => 'Fichier de licence', 'ui.admin.licensing.license_file_help' => 'Accepte un fichier license.json ou une archive ZIP contenant license.json.', 'ui.admin.licensing.upload_missing_input' => 'Veuillez coller le JSON de licence ou choisir un fichier license.json / ZIP.', 'ui.admin.licensing.invalid_json_prefix' => 'JSON invalide : {message}', // LovlyNet 'ui.admin.lovlynet.btn_rescan' => 'Rescanner', 'ui.admin.lovlynet.btn_rescan_title' => 'Demander un rescan des messages', 'ui.admin.lovlynet.btn_resend' => 'Synchroniser les fichiers', 'ui.admin.lovlynet.btn_resend_title' => 'Synchroniser les fichiers locaux et LovlyNet', 'ui.admin.lovlynet.btn_subscribe' => 'S\'abonner', 'ui.admin.lovlynet.btn_unsubscribe' => 'Se désabonner', 'ui.admin.lovlynet.col_description' => 'Description', 'ui.admin.lovlynet.col_status' => 'Statut', 'ui.admin.lovlynet.col_tag' => 'Tag', 'ui.admin.lovlynet.direction_request' => 'Demande', 'ui.admin.lovlynet.direction_response' => 'Réponse', 'ui.admin.lovlynet.edit_tag_title' => 'Modifier {tag}', 'ui.admin.lovlynet.heading' => 'Abonnements LovlyNet', 'ui.admin.lovlynet.hub_address' => 'Adresse du hub', 'ui.admin.lovlynet.load_failed' => 'Échec du chargement des zones depuis LovlyNet', 'ui.admin.lovlynet.message_view_title' => 'Message', 'ui.admin.lovlynet.message_view_title_request' => 'Message de demande', 'ui.admin.lovlynet.message_view_title_response' => 'Message de réponse', 'ui.admin.lovlynet.no_areas' => 'Aucune zone disponible', 'ui.admin.lovlynet.no_requests' => 'Aucune demande ou réponse correspondante trouvée', 'ui.admin.lovlynet.node_number' => 'Adresse du n?ud', 'ui.admin.lovlynet.not_configured_body' => 'config/lovlynet.json est manquant ou incomplet.', 'ui.admin.lovlynet.not_configured_docs_intro' => 'Pour les détails de configuration et le contexte, voir', 'ui.admin.lovlynet.not_configured_setup_intro' => 'Pour configurer ce système pour LovlyNet, exécutez le script d\'installation depuis la racine du projet :', 'ui.admin.lovlynet.not_configured_synopsis' => 'LovlyNet est un réseau FTN et un service de hub qui fournit des zones echo partagées, des zones de fichiers et la gestion automatisée AreaFix/FileFix pour les systèmes connectés.', 'ui.admin.lovlynet.not_configured_title' => 'LovlyNet non configuré.', 'ui.admin.lovlynet.not_subscribed' => 'Non abonné', 'ui.admin.lovlynet.page_title' => 'Zones LovlyNet', 'ui.admin.lovlynet.request_button_echo' => 'Initier une demande AREAFIX', 'ui.admin.lovlynet.request_button_file' => 'Initier une demande FILEFIX', 'ui.admin.lovlynet.request_help_button' => 'Aide', 'ui.admin.lovlynet.request_help_empty' => 'Aucun texte d\'aide disponible.', 'ui.admin.lovlynet.request_help_failed' => 'Échec du chargement du texte d\'aide', 'ui.admin.lovlynet.request_help_title' => 'Aide distante', 'ui.admin.lovlynet.request_message_label' => 'Message de demande', 'ui.admin.lovlynet.request_message_placeholder' => '%HELP', 'ui.admin.lovlynet.request_message_required' => 'Le message de demande est requis', 'ui.admin.lovlynet.request_modal_help_echo' => 'Saisissez le texte de la commande AreaFix à envoyer. La destination et le mot de passe sont remplis automatiquement. Une réponse vous sera envoyée par netmail.', 'ui.admin.lovlynet.request_modal_help_file' => 'Saisissez le texte de la commande FileFix à envoyer. La destination et le mot de passe sont remplis automatiquement. Une réponse vous sera envoyée par netmail.', 'ui.admin.lovlynet.request_modal_title_echo' => 'Demande AreaFix', 'ui.admin.lovlynet.request_modal_title_file' => 'Demande FileFix', 'ui.admin.lovlynet.request_send' => 'Envoyer la demande', 'ui.admin.lovlynet.request_send_failed' => 'Échec de l\'envoi de la demande', 'ui.admin.lovlynet.request_sent_echo' => 'Demande AreaFix envoyée', 'ui.admin.lovlynet.request_sent_file' => 'Demande FileFix envoyée', 'ui.admin.lovlynet.requests_col_date' => 'Date', 'ui.admin.lovlynet.requests_col_direction' => 'Direction', 'ui.admin.lovlynet.requests_col_message' => 'Message', 'ui.admin.lovlynet.requests_col_status' => 'Statut', 'ui.admin.lovlynet.requests_col_type' => 'Type', 'ui.admin.lovlynet.requests_load_failed' => 'Échec du chargement du statut des demandes', 'ui.admin.lovlynet.requests_no_subject' => '(sans objet)', 'ui.admin.lovlynet.requests_request_label' => 'Demande envoyée', 'ui.admin.lovlynet.requests_response_label' => 'Réponse du hub', 'ui.admin.lovlynet.rescan_amount_days_help' => 'Envoyer les messages des N derniers jours depuis cette zone echo.', 'ui.admin.lovlynet.rescan_amount_days_label' => 'Nombre de jours', 'ui.admin.lovlynet.rescan_amount_messages_help' => 'Envoyer les N derniers messages depuis cette zone echo.', 'ui.admin.lovlynet.rescan_amount_messages_label' => 'Nombre de messages', 'ui.admin.lovlynet.rescan_amount_required' => 'Saisissez un nombre entier supérieur à zéro', 'ui.admin.lovlynet.rescan_area_label' => 'Zone echo', 'ui.admin.lovlynet.rescan_area_required' => 'Une zone echo est requise', 'ui.admin.lovlynet.rescan_modal_help' => 'Choisissez la zone echo abonnée à rescanner et la quantité d\'historique à demander via AreaFix.', 'ui.admin.lovlynet.rescan_modal_title' => 'Demande de rescan AreaFix', 'ui.admin.lovlynet.rescan_mode_all' => 'Tous les messages', 'ui.admin.lovlynet.rescan_mode_days' => 'N derniers jours', 'ui.admin.lovlynet.rescan_mode_label' => 'Portée du rescan', 'ui.admin.lovlynet.rescan_mode_messages' => 'N derniers messages', 'ui.admin.lovlynet.rescan_send' => 'Envoyer la demande de rescan', 'ui.admin.lovlynet.rescan_send_failed' => 'Échec de l\'envoi de la demande de rescan', 'ui.admin.lovlynet.rescan_sent' => 'Demande de rescan AreaFix envoyée', 'ui.admin.lovlynet.resend_area_label' => 'Zone de fichiers', 'ui.admin.lovlynet.resend_col_description' => 'Description', 'ui.admin.lovlynet.resend_col_filename' => 'Nom de fichier', 'ui.admin.lovlynet.resend_col_local' => 'Local', 'ui.admin.lovlynet.resend_file_count_label' => 'fichier(s) disponible(s)', 'ui.admin.lovlynet.resend_files_deselect_all' => 'Tout désélectionner', 'ui.admin.lovlynet.resend_files_error' => 'Échec du chargement des fichiers depuis LovlyNet', 'ui.admin.lovlynet.resend_files_loading' => 'Chargement des fichiers...', 'ui.admin.lovlynet.resend_files_none' => 'Aucun fichier trouvé dans cette zone', 'ui.admin.lovlynet.resend_files_select_all' => 'Tout sélectionner', 'ui.admin.lovlynet.resend_local_no_title' => 'Ce fichier n\'est pas dans votre zone de fichiers locale', 'ui.admin.lovlynet.resend_local_yes_title' => 'Ce fichier est dans votre zone de fichiers locale', 'ui.admin.lovlynet.resend_modal_help' => 'Envoyez des fichiers locaux qui ne sont pas encore dans LovlyNet, ou demandez un %RESEND pour les fichiers manquants localement.', 'ui.admin.lovlynet.resend_modal_title' => 'Synchroniser les fichiers', 'ui.admin.lovlynet.resend_page_label' => 'Page', 'ui.admin.lovlynet.resend_select_required' => 'Sélectionnez au moins un fichier', 'ui.admin.lovlynet.resend_selected_label' => 'sélectionné(s)', 'ui.admin.lovlynet.resend_send' => 'Envoyer la demande de renvoi', 'ui.admin.lovlynet.resend_send_failed' => 'Échec de l\'envoi de la demande de renvoi', 'ui.admin.lovlynet.resend_sent' => 'Demande de renvoi FileFix envoyée', 'ui.admin.lovlynet.server' => 'Serveur', 'ui.admin.lovlynet.status_pending' => 'Réponse en attente', 'ui.admin.lovlynet.status_responded' => 'Répondu', 'ui.admin.lovlynet.status_response' => 'Réponse reçue', 'ui.admin.lovlynet.subscribed' => 'Abonné', 'ui.admin.lovlynet.subscribed_areas' => 'Zones abonnées', 'ui.admin.lovlynet.subscribed_ok' => 'Abonné à {tag}', 'ui.admin.lovlynet.sync_hatch_btn' => 'Hatch', 'ui.admin.lovlynet.sync_hatch_btn_title' => 'Envoyer ce fichier à LovlyNet via Hatch', 'ui.admin.lovlynet.sync_hatch_failed' => 'Échec du Hatch du fichier', // LovlyNet Setup tab 'ui.admin.lovlynet.tab_setup' => 'Configuration LovlyNet', 'ui.admin.lovlynet.setup_status_title' => 'Statut d\'enregistrement', 'ui.admin.lovlynet.setup_ftn_address' => 'Adresse FTN', 'ui.admin.lovlynet.setup_hub_address' => 'Adresse du hub', 'ui.admin.lovlynet.setup_registered_at' => 'Enregistré le', 'ui.admin.lovlynet.setup_updated_at' => 'Dernière mise à jour', 'ui.admin.lovlynet.setup_update_title' => 'Mettre à jour l\'enregistrement', 'ui.admin.lovlynet.setup_system_name' => 'Nom du système', 'ui.admin.lovlynet.setup_sysop_name' => 'Nom du sysop', 'ui.admin.lovlynet.setup_hostname' => 'Nom d\'hôte', 'ui.admin.lovlynet.setup_binkp_port' => 'Port Binkp', 'ui.admin.lovlynet.setup_site_url' => 'URL du site', 'ui.admin.lovlynet.setup_is_passive' => 'N?ud passif (scrutation uniquement, pas de connexions entrantes)', 'ui.admin.lovlynet.setup_update_warning' => 'La mise à jour de votre enregistrement désabonnera brièvement puis réabonnera votre n?ud aux zones LovlyNet par défaut. Les zones souscrites manuellement ne sont pas affectées.', 'ui.admin.lovlynet.setup_update_btn' => 'Mettre à jour l\'enregistrement', 'ui.admin.lovlynet.setup_update_ok' => 'Enregistrement mis à jour avec succès', 'ui.admin.lovlynet.setup_update_failed' => 'Échec de la mise à jour de l\'enregistrement', 'ui.admin.lovlynet.setup_load_failed' => 'Échec du chargement du statut d\'enregistrement', 'ui.admin.lovlynet.checklist_title' => 'Liste de vérification de configuration', 'ui.admin.lovlynet.checklist_registration' => 'Enregistré sur LovlyNet', 'ui.admin.lovlynet.checklist_registration_ok' => 'Le n?ud est enregistré', 'ui.admin.lovlynet.checklist_uplink_configured' => 'Liaison LovlyNet configurée dans BinkP', 'ui.admin.lovlynet.checklist_uplink_configured_ok' => 'La liaison est configurée', 'ui.admin.lovlynet.checklist_uplink_configured_missing' => 'Aucune liaison LovlyNet trouvée dans la configuration BinkP', 'ui.admin.lovlynet.checklist_uplink_configured_hint' => 'Ajoutez une liaison LovlyNet sous Admin ? Configuration BinkP avec le domaine défini sur « lovlynet ».', 'ui.admin.lovlynet.checklist_binkp_auth_test' => 'Authentification BinkP vers le hub LovlyNet', 'ui.admin.lovlynet.checklist_binkp_auth_test_ok' => 'Authentifié avec succès ({method})', 'ui.admin.lovlynet.checklist_binkp_auth_test_failed' => 'Échec de l\'authentification : {error}', 'ui.admin.lovlynet.checklist_binkp_auth_test_daemon_error' => 'Impossible de vérifier ? le démon d\'administration n\'est pas en cours d\'exécution', 'ui.admin.lovlynet.checklist_default_areas' => 'Abonnements aux zones par défaut', 'ui.admin.lovlynet.checklist_default_areas_ok' => 'Toutes les zones par défaut sont abonnées', 'ui.admin.lovlynet.checklist_default_areas_missing' => 'Abonnements manquants : {list}', 'ui.admin.lovlynet.checklist_default_areas_hint' => 'Abonnez-vous via l\'onglet Zones echo ou Zones de fichiers.', 'ui.admin.lovlynet.default_area_not_subscribed' => 'Zone par défaut recommandée ? non abonnée', 'ui.admin.lovlynet.checklist_default_areas_error' => 'Impossible de récupérer les données de zone depuis LovlyNet', 'ui.admin.lovlynet.checklist_nodelist_rule' => 'Règle de zone de fichiers LVLY_NODELIST', 'ui.admin.lovlynet.checklist_nodelist_rule_desc' => 'Une règle de zone de fichiers doit exister pour LVLY_NODELIST@LOVLYNET avec le modèle d\'importation recommandé.', 'ui.admin.lovlynet.checklist_nodelist_rule_ok' => 'Règle configurée correctement', 'ui.admin.lovlynet.checklist_nodelist_rule_missing' => 'Règle manquante', 'ui.admin.lovlynet.checklist_nodelist_rule_wrong_pattern' => 'La règle existe mais le modèle ne correspond pas à la valeur recommandée', 'ui.admin.lovlynet.checklist_nodelist_rule_daemon_error' => 'Impossible de vérifier ? le démon d\'administration n\'est pas en cours d\'exécution', 'ui.admin.lovlynet.checklist_fix' => 'Corriger', 'ui.admin.lovlynet.checklist_fix_ok' => 'Correction appliquée', 'ui.admin.lovlynet.checklist_load_failed' => 'Échec du chargement de la liste de vérification', 'ui.admin.lovlynet.sync_hatch_success' => 'Fichier envoyé à LovlyNet via Hatch', 'ui.admin.lovlynet.sync_local_only_section' => 'Fichiers locaux (absents de LovlyNet)', 'ui.admin.lovlynet.sync_lovlynet_section' => 'Fichiers LovlyNet', 'ui.admin.lovlynet.sync_no_local_only' => 'Tous les fichiers locaux sont déjà dans LovlyNet', 'ui.admin.lovlynet.sync_title_create_and_description' => 'Créer le groupe et synchroniser la description', 'ui.admin.lovlynet.sync_title_description' => 'Synchroniser la description', 'ui.admin.lovlynet.sync_title_settings_and_description' => 'Synchroniser les paramètres recommandés et la description', 'ui.admin.lovlynet.sync_button_title' => 'Synchroniser les paramètres', 'ui.admin.lovlynet.issue_title' => 'Paramètres recommandés LovlyNet non conformes', 'ui.admin.lovlynet.issue_sysop_only_on' => 'LovlyNet recommande d\'activer l\'accès Sysop uniquement', 'ui.admin.lovlynet.issue_sysop_only_off' => 'LovlyNet recommande de désactiver l\'accès Sysop uniquement', 'ui.admin.lovlynet.issue_readonly_on' => 'LovlyNet recommande de mettre cette zone en lecture seule', 'ui.admin.lovlynet.issue_readonly_off' => 'LovlyNet recommande d\'autoriser les envois dans cette zone', 'ui.admin.lovlynet.issue_replace_on' => 'LovlyNet recommande d\'activer le remplacement de fichiers dans cette zone', 'ui.admin.lovlynet.issue_replace_off' => 'LovlyNet recommande de désactiver le remplacement de fichiers dans cette zone', 'ui.admin.lovlynet.issue_allow_media_on' => 'LovlyNet recommande d\'activer les médias intégrés pour cette zone', 'ui.admin.lovlynet.issue_allow_media_off' => 'LovlyNet recommande de désactiver les médias intégrés pour cette zone', 'ui.admin.lovlynet.tab_echo' => 'Zones echo', 'ui.admin.lovlynet.tab_file' => 'Zones de fichiers', 'ui.admin.lovlynet.tab_requests' => 'Demandes', 'ui.admin.lovlynet.toggle_failed' => 'Échec du changement d\'abonnement', 'ui.admin.lovlynet.type_areafix' => 'AREAFIX', 'ui.admin.lovlynet.type_filefix' => 'FILEFIX', 'ui.admin.lovlynet.unsubscribed_ok' => 'Désabonné de {tag}', // Referral Analytics 'ui.admin.referrals.back' => 'Tableau de bord', 'ui.admin.referrals.col_bonus' => 'Bonus gagné', 'ui.admin.referrals.col_code' => 'Code de parrainage', 'ui.admin.referrals.col_joined' => 'Inscrit le', 'ui.admin.referrals.col_referred_by' => 'Parrainé par', 'ui.admin.referrals.col_signups' => 'Inscriptions', 'ui.admin.referrals.col_user' => 'Utilisateur', 'ui.admin.referrals.heading' => 'Analytiques de parrainage', 'ui.admin.referrals.load_failed' => 'Échec du chargement des données de parrainage', 'ui.admin.referrals.loading' => 'Chargement des données de parrainage...', 'ui.admin.referrals.no_recent' => 'Aucune inscription via parrainage pour l\'instant.', 'ui.admin.referrals.no_referrers' => 'Aucun parrainage enregistré pour l\'instant.', 'ui.admin.referrals.page_title' => 'Analytiques de parrainage', 'ui.admin.referrals.recent_signups' => 'Inscriptions récentes via parrainage', 'ui.admin.referrals.stat_active_referrers' => 'Parrains actifs', 'ui.admin.referrals.stat_referred_users' => 'Utilisateurs parrainés', 'ui.admin.referrals.top_referrers' => 'Meilleurs parrains', // Admin Sharing 'ui.admin.sharing.access' => 'Accès', 'ui.admin.sharing.area' => 'Zone', 'ui.admin.sharing.dashboard' => 'Tableau de bord', 'ui.admin.sharing.file' => 'Fichier', 'ui.admin.sharing.files_heading' => 'Fichiers partagés', 'ui.admin.sharing.files_tab' => 'Fichiers', 'ui.admin.sharing.freq_enabled' => 'FREQ', 'ui.admin.sharing.heading' => 'Partage', 'ui.admin.sharing.help' => 'Consultez les messages et fichiers partagés actifs, classés par nombre de vues.', 'ui.admin.sharing.last_accessed' => 'Dernier accès', 'ui.admin.sharing.load_failed' => 'Échec du chargement des données de partage', 'ui.admin.sharing.loading' => 'Chargement des données de partage...', 'ui.admin.sharing.messages_heading' => 'Messages partagés', 'ui.admin.sharing.messages_tab' => 'Messages', 'ui.admin.sharing.never' => 'Jamais', 'ui.admin.sharing.no_files' => 'Aucun fichier partagé actif', 'ui.admin.sharing.no_messages' => 'Aucun message partagé actif', 'ui.admin.sharing.no_referrers' => 'Aucun référent externe pour le moment', 'ui.admin.sharing.open' => 'Ouvrir', 'ui.admin.ai_usage.page_title' => 'Utilisation IA', 'ui.admin.ai_usage.heading' => 'Utilisation IA', 'ui.admin.ai_usage.dashboard' => 'Tableau de bord', 'ui.admin.ai_usage.period' => 'Période', 'ui.admin.ai_usage.period_1d' => 'Dernières 24 heures', 'ui.admin.ai_usage.period_7d' => 'Derniers 7 jours', 'ui.admin.ai_usage.period_30d' => 'Derniers 30 jours', 'ui.admin.ai_usage.period_all' => 'Depuis le début', 'ui.admin.ai_usage.summary_requests' => 'Requêtes', 'ui.admin.ai_usage.summary_cost' => 'Coût estimé', 'ui.admin.ai_usage.summary_failures' => 'Échecs', 'ui.admin.ai_usage.summary_tokens' => 'Jetons', 'ui.admin.ai_usage.by_feature' => 'Coût par fonctionnalité', 'ui.admin.ai_usage.by_provider_model' => 'Coût par fournisseur et modèle', 'ui.admin.ai_usage.recent_failures' => 'Échecs récents', 'ui.admin.ai_usage.recent_requests' => 'Requêtes récentes', 'ui.admin.ai_usage.feature' => 'Fonctionnalité', 'ui.admin.ai_usage.provider_model' => 'Fournisseur / Modèle', 'ui.admin.ai_usage.requests' => 'Requêtes', 'ui.admin.ai_usage.failures' => 'Échecs', 'ui.admin.ai_usage.cost' => 'Coût', 'ui.admin.ai_usage.tokens' => 'jetons', 'ui.admin.ai_usage.status' => 'Statut', 'ui.admin.ai_usage.created_at' => 'Créé', 'ui.admin.ai_usage.error' => 'Erreur', 'ui.admin.ai_usage.no_data' => 'Aucune donnée pour cette période', 'ui.admin.ai_usage.unavailable' => 'Le journal des requêtes IA n\'est pas disponible', 'ui.admin.ai_usage.unavailable_help' => 'Exécutez setup ou appliquez la migration de comptabilité des requêtes IA pour remplir cette page.', 'ui.admin.ai_usage.input_tokens' => 'Entrée', 'ui.admin.ai_usage.output_tokens' => 'Sortie', 'ui.admin.ai_usage.cached_tokens' => 'Cache', 'ui.admin.ai_usage.token_breakdown' => '{input} entrée / {output} sortie', 'ui.admin.sharing.page_title' => 'Partage', 'ui.admin.sharing.private' => 'Privé', 'ui.admin.sharing.public' => 'Public', 'ui.admin.sharing.shared_by' => 'Partagé par', 'ui.admin.sharing.subject' => 'Objet', 'ui.admin.sharing.top_referrers' => 'Principaux référents', 'ui.admin.sharing.views' => 'Vues', 'ui.admin.sharing.web_only' => 'Web uniquement', // Navigation - Admin menu 'ui.base.admin.ad_campaigns' => 'Gestionnaire de Diffusion', 'ui.base.admin.ads_menu' => 'Annonces et Bulletins', 'ui.base.admin.analytics' => 'Analytiques', 'ui.base.admin.chat' => 'Chat', 'ui.base.admin.community' => 'Communauté', 'ui.base.admin.licensing' => 'Licences', 'ui.base.admin.areafix' => 'AreaFix / FileFix', 'ui.admin.areafix.page_title' => 'Gestionnaire AreaFix / FileFix', 'ui.admin.areafix.heading' => 'Gestionnaire AreaFix / FileFix', 'ui.admin.areafix.not_configured_title' => 'Aucun uplink configuré pour AreaFix / FileFix.', 'ui.admin.areafix.not_configured_body' => 'Aucun uplink actif ne possède un areafix_password ou filefix_password configuré.', 'ui.admin.areafix.not_configured_hint' => 'Ajoutez les champs suivants à l\'entrée uplink concernée dans config/binkp.json :', 'ui.admin.areafix.select_uplink' => 'Uplink', 'ui.admin.areafix.tab_areafix' => 'AreaFix', 'ui.admin.areafix.tab_filefix' => 'FileFix', 'ui.admin.areafix.quick_actions' => 'Actions rapides', 'ui.admin.areafix.subscribe_card_title' => 'S\'abonner / Se désabonner', 'ui.admin.areafix.area_tag_placeholder' => 'Tag de zone (ex. FIDONEWS)', 'ui.admin.areafix.btn_subscribe' => 'S\'abonner', 'ui.admin.areafix.btn_unsubscribe' => 'Se désabonner', 'ui.admin.areafix.freeform_card_title' => 'Commandes libres', 'ui.admin.areafix.freeform_placeholder' => 'Une commande par ligne, ex. %QUERY', 'ui.admin.areafix.btn_send' => 'Envoyer', 'ui.admin.areafix.latest_reply_title' => 'Dernière réponse', 'ui.admin.areafix.no_reply_yet' => 'Aucune réponse reçue. Envoyez une commande pour commencer.', 'ui.admin.areafix.search_placeholder' => 'Rechercher des zones...', 'ui.admin.areafix.sync_button' => 'Synchroniser avec les zones echo', 'ui.admin.areafix.col_tag' => 'Tag', 'ui.admin.areafix.col_description' => 'Description', 'ui.admin.areafix.col_status' => 'Statut', 'ui.admin.areafix.col_action' => 'Action', 'ui.admin.areafix.status_available' => 'Disponible', 'ui.admin.areafix.raw_reply_toggle' => 'Réponse brute', 'ui.admin.areafix.history_title' => 'Historique des messages', 'ui.admin.areafix.history_col_date' => 'Date', 'ui.admin.areafix.history_col_direction' => 'Direction', 'ui.admin.areafix.history_col_address' => 'Adresse du n?ud', 'ui.admin.areafix.history_col_network' => 'Réseau', 'ui.admin.areafix.history_col_preview' => 'Aperçu', 'ui.admin.areafix.no_history' => 'Aucun message pour l\'instant.', 'ui.admin.areafix.direction_incoming' => 'Entrant', 'ui.admin.areafix.direction_outgoing' => 'Sortant', 'ui.admin.areafix.history_load_failed' => 'Échec du chargement de l\'historique', 'ui.admin.areafix.command_sent' => 'Commande envoyée ? vérifiez l\'historique pour une réponse', 'ui.admin.areafix.send_failed' => 'Échec de l\'envoi de la commande', 'ui.admin.areafix.tag_required' => 'Le tag de zone est requis', 'ui.admin.areafix.commands_required' => 'Entrez au moins une commande', 'ui.admin.areafix.select_uplink_first' => 'Veuillez sélectionner un uplink', 'ui.admin.areafix.sync_ok' => 'Synchronisation terminée : {created} créée(s), {activated} activée(s), {deactivated} désactivée(s)', 'ui.admin.areafix.sync_failed' => 'Échec de la synchronisation', 'ui.admin.areafix.no_areas_to_sync' => 'Aucune zone disponible à synchroniser', 'ui.base.admin.lovlynet' => 'Zones LovlyNet', 'ui.base.admin.referrals' => 'Analytiques de parrainage', 'ui.base.admin.register' => 'Enregistrer BinktermPHP', 'ui.base.admin.registered_feature' => 'Fonctionnalité enregistrée', 'ui.base.admin.sharing' => 'Partage', 'ui.base.public_files' => 'Fichiers publics', // BinkP 'ui.binkp.advanced_log_search' => 'Recherche avancée', 'ui.binkp.advanced_log_search_help' => 'Recherche dans l\'ensemble du journal. Toutes les lignes de toute session (PID) contenant une correspondance sont affichées.', 'ui.binkp.advanced_log_search_placeholder' => 'ex. 1:123/456, FREQ, ERROR', 'ui.binkp.from_address' => 'De', 'ui.binkp.kept_date_group' => '{date}', 'ui.binkp.kept_inbound' => 'Entrant conservé', 'ui.binkp.kept_outbound' => 'Sortant conservé', 'ui.binkp.kept_packets_empty' => 'Aucun paquet conservé trouvé.', 'ui.binkp.kept_packets_locked' => 'Cette fonctionnalité nécessite une licence enregistrée.', 'ui.binkp.kept_packets_register' => 'S\'enregistrer pour débloquer', 'ui.binkp.kept_packets_tab' => 'Paquets conservés', 'ui.binkp.kept_packets_total' => '{count} paquet(s)', 'ui.binkp.log_matches' => '{count} / {total} lignes', 'ui.binkp.log_search_legend_context' => 'Autres lignes de la même session (même PID)', 'ui.binkp.log_search_legend_match' => 'Lignes contenant votre terme de recherche', 'ui.binkp.log_search_no_results' => 'Aucun résultat trouvé.', 'ui.binkp.log_search_summary' => '{matches} correspondance(s) sur {sessions} session(s)', 'ui.binkp.pkt_flags' => 'Indicateurs', 'ui.binkp.bundle_arcmail' => 'Paquet arcmail', 'ui.binkp.bundle_empty' => 'Aucun fichier .pkt trouve dans ce paquet.', 'ui.binkp.bundle_packet_count' => '{count} paquet(s) dans le bundle', 'ui.binkp.bundle_open_failed' => 'Impossible d\'ouvrir le bundle.', 'ui.binkp.bundle_view_packet' => 'Voir', 'ui.binkp.bundle_back' => 'Retour au bundle', 'ui.binkp.pkt_from' => 'De', 'ui.binkp.pkt_header' => 'En-tête du paquet', 'ui.binkp.pkt_messages' => 'Messages', 'ui.binkp.pkt_no_messages' => 'Aucun message trouvé dans le paquet.', 'ui.binkp.pkt_no_password' => 'Aucun', 'ui.binkp.pkt_password' => 'Mot de passe', 'ui.binkp.pkt_password_set' => 'Défini', 'ui.binkp.pkt_product' => 'Code produit', 'ui.binkp.pkt_subject' => 'Objet', 'ui.binkp.pkt_to' => 'À', 'ui.binkp.pkt_version' => 'Version du paquet', 'ui.binkp.to_address' => 'À', // Common UI 'ui.common.back' => 'Retour', 'ui.common.browse' => 'Parcourir', 'ui.common.date' => 'Date', 'ui.common.disabled' => 'Désactivé', 'ui.common.enabled' => 'Activé', 'ui.common.filename' => 'Nom de fichier', 'ui.common.none' => 'Aucun', 'ui.common.print' => 'Imprimer le message', 'ui.common.size' => 'Taille', 'ui.common.subject' => 'Objet', 'ui.common.time' => 'Heure', 'ui.common.title' => 'Titre', // Compose - Templates 'ui.compose.templates.button' => 'Modèles', 'ui.compose.templates.delete_confirm' => 'Supprimer ce modèle ?', 'ui.compose.templates.delete_failed' => 'Échec de la suppression du modèle', 'ui.compose.templates.deleted' => 'Modèle supprimé', 'ui.compose.templates.load_failed' => 'Échec du chargement du modèle', 'ui.compose.templates.loading' => 'Chargement...', 'ui.compose.templates.manage' => 'Gérer les modèles', 'ui.compose.templates.manage_modal_title' => 'Mes modèles', 'ui.compose.templates.name_label' => 'Nom du modèle', 'ui.compose.templates.name_placeholder' => 'ex. Annonce mensuelle', 'ui.compose.templates.name_required' => 'Veuillez saisir un nom de modèle', 'ui.compose.templates.none' => 'Aucun modèle enregistré', 'ui.compose.templates.save_button' => 'Enregistrer le modèle', 'ui.compose.templates.save_current' => 'Enregistrer comme modèle', 'ui.compose.templates.save_failed' => 'Échec de l\'enregistrement du modèle', 'ui.compose.templates.save_modal_title' => 'Enregistrer comme modèle', 'ui.compose.templates.saved' => 'Modèle enregistré', 'ui.compose.templates.type_both' => 'Netmail et Echomail', 'ui.compose.templates.type_echomail' => 'Echomail uniquement', 'ui.compose.templates.type_label' => 'Disponible pour', 'ui.compose.templates.type_netmail' => 'Netmail uniquement', // Dashboard 'ui.dashboard.advertisement' => 'Annonce', 'ui.dashboard.advertisement_controls' => 'Contrôles d\'annonce', 'ui.dashboard.advertisement_position' => 'Annonce {current} sur {total}', // Echo Areas 'ui.echoareas.lovlynet_sync_button' => 'Synchroniser', 'ui.echoareas.lovlynet_sync_button_loading' => 'Synchronisation...', 'ui.echoareas.lovlynet_sync_failed' => 'Échec de la synchronisation de la description depuis LovlyNet', 'ui.echoareas.lovlynet_sync_success' => 'Description mise à jour depuis LovlyNet', 'ui.echoareas.lovlynet_issue_title' => 'Paramètres recommandés LovlyNet non conformes', 'ui.echoareas.lovlynet_issue_sysop_only_on' => 'LovlyNet recommande d\'activer l\'accès Sysop uniquement', 'ui.echoareas.lovlynet_issue_sysop_only_off' => 'LovlyNet recommande de désactiver l\'accès Sysop uniquement', // Echo List 'ui.echolist.all_networks' => 'Tous les réseaux', 'ui.echolist.all_interests' => 'Tous les centres d\'intérêt', // Echomail 'ui.echomail.end_of_echo_go' => 'Aller à {echo}', 'ui.echomail.end_of_echo_next_btn_title' => 'Fin de la zone echo', 'ui.echomail.end_of_echo_next_prompt' => 'Continuer vers {echo} ?', 'ui.echomail.end_of_echo_no_next' => 'Vous n\'avez plus de messages non lus.', 'ui.echomail.end_of_echo_title' => 'Fin de {echo}', 'ui.echomail.fileref_label' => 'Commentaire de fichier :', 'ui.echomail.full_echo_list' => 'Liste complète des zones echo', 'ui.echomail.next_echo_title' => 'Prochaine zone echo : {tag}', 'ui.echomail.next_page_title' => 'Charger la page suivante', 'ui.echomail.rip_render_failed' => 'Échec du rendu du message RIPscrip', 'ui.echomail.save_to_ad_library' => 'Enregistrer l\'annonce', 'ui.echomail.save_to_ad_library_failed' => 'Échec de l\'enregistrement du message dans la bibliothèque d\'annonces', 'ui.echomail.save_to_ad_library_not_ansi' => 'Ce message n\'est pas éligible à l\'enregistrement en tant qu\'annonce ANSI.', 'ui.echomail.save_to_ad_library_saved' => 'Message enregistré dans la bibliothèque d\'annonces.', 'ui.echomail.save_to_ad_library_title' => 'Enregistrer dans la bibliothèque d\'annonces', 'ui.echomail.subscribe' => 'S\'abonner', 'ui.echomail.unsubscribe' => 'Se désabonner', 'ui.echomail.viewer_mode_rip' => 'RIPscrip', // Error Pages 'ui.error.not_found' => 'Page introuvable', 'ui.error403.description' => 'Cette page est uniquement disponible pour les installations enregistrées. Visitez la page des licences pour en savoir plus sur l\'enregistrement et ses avantages.', 'ui.error403.heading' => 'Cette fonctionnalité nécessite un enregistrement', 'ui.error403.licensing_link' => 'Licences', 'ui.error403.title' => 'Fonctionnalité enregistrée', // File Areas 'ui.fileareas.accessible' => 'Accessible', 'ui.fileareas.area_type' => 'Type de zone', 'ui.fileareas.area_type_iso' => 'Basée sur ISO', 'ui.fileareas.area_type_normal' => 'Normale', 'ui.fileareas.comment_area' => 'Zone echo de commentaires', 'ui.fileareas.comment_area_create_help' => 'Une nouvelle zone echo locale sera créée avec ce tag.', 'ui.fileareas.comment_area_create_new' => 'Créer une nouvelle zone echo', 'ui.fileareas.comment_area_help' => 'Sélectionnez une zone echo pour activer les commentaires de fichiers. Enregistré avec la zone de fichiers.', 'ui.fileareas.comment_area_linked' => 'Zone de commentaires liée', 'ui.fileareas.comment_area_placeholder' => 'Nouveau tag de zone echo (ex. MYFILES-COMMENTS)', 'ui.fileareas.flat_import' => 'Importation à plat (sans sous-dossiers)', 'ui.fileareas.freq_enabled' => 'FREQ activé', 'ui.fileareas.freq_enabled_help' => 'Autoriser tout n?ud FidoNet à demander des fichiers depuis cette zone via FREQ', 'ui.fileareas.freq_password' => 'Mot de passe FREQ', 'ui.fileareas.freq_password_help' => 'Laisser vide pour un accès ouvert', 'ui.fileareas.freq_password_placeholder' => 'Mot de passe facultatif', 'ui.fileareas.gemini_public' => 'Public Gemini', 'ui.fileareas.gemini_public_help' => 'Lister et servir les fichiers de cette zone via le serveur de capsule Gemini', 'ui.fileareas.is_public' => 'Zone de fichiers publique', 'ui.fileareas.is_public_help' => 'Autoriser les visiteurs non authentifiés à parcourir et télécharger les fichiers de cette zone', 'ui.fileareas.is_public_requires_license' => 'Les zones de fichiers publiques nécessitent une licence enregistrée.', 'ui.fileareas.iso_mount_point' => 'Point de montage', 'ui.fileareas.iso_mount_point_help' => 'Chemin où l\'ISO est monté sur le serveur. Montez l\'ISO manuellement avant d\'utiliser cette zone (ex. sudo mount -o loop image.iso /mnt/point). Sous Windows, entrez la lettre de lecteur ou le chemin (ex. D:\\).', 'ui.fileareas.iso_mount_status' => 'Statut de montage', 'ui.fileareas.last_indexed' => 'Dernière indexation', 'ui.fileareas.not_accessible' => 'Non accessible', 'ui.fileareas.reindex' => 'Réindexer l\'ISO', 'ui.fileareas.reindex_done' => 'Réindexation terminée', 'ui.fileareas.reindex_started' => 'Réindexation démarrée en arrière-plan', 'ui.fileareas.reindexing' => 'Indexation?', 'ui.fileareas.tag_readonly' => 'Le tag ne peut pas être modifié après la création.', 'ui.fileareas.lovlynet_issue_title' => 'Paramètres recommandés LovlyNet non conformes', 'ui.fileareas.lovlynet_issue_readonly_on' => 'LovlyNet recommande de mettre cette zone en lecture seule', 'ui.fileareas.lovlynet_issue_readonly_off' => 'LovlyNet recommande d\'autoriser les envois dans cette zone', // Files 'ui.files.comment_post_failed' => 'Échec de la publication du commentaire', 'ui.files.comment_posted' => 'Commentaire publié', 'ui.files.comments' => 'Commentaires', 'ui.files.comments_load_failed' => 'Échec du chargement des commentaires', 'ui.files.delete_subfolder' => 'Supprimer le sous-dossier', 'ui.files.delete_subfolder_confirm' => 'Êtes-vous sûr de vouloir supprimer le sous-dossier « {subfolder} » et tous ses fichiers ? Cette action est irréversible.', 'ui.files.download_zip' => 'Télécharger le ZIP complet', 'ui.files.edit_description' => 'Modifier la description', 'ui.files.file_info' => 'Informations sur le fichier', 'ui.files.freq_accessible' => 'FREQ accessible', 'ui.files.freq_accessible_help' => 'Autoriser également ce fichier à être demandé via FidoNet FREQ', 'ui.files.leave_comment' => 'Laisser un commentaire', 'ui.files.loading_comments' => 'Chargement des commentaires?', 'ui.files.login_to_comment' => 'Connectez-vous pour lire et publier des commentaires', 'ui.files.add_link' => 'Ajouter un lien', 'ui.files.add_link_tab' => 'Ajouter un lien', 'ui.files.upload_file_tab' => 'Téléverser un fichier', 'ui.files.link_url_required' => 'URL *', 'ui.files.link_url_help' => 'Saisissez une URL complète (https://...) vers une ressource externe.', 'ui.files.link_file_name' => 'Nom de fichier *', 'ui.files.link_file_name_help' => 'Nom d\'affichage pour ce lien (ex. : video.mp4 ou Mon Document).', 'ui.files.fetch_info' => 'Récupérer les infos', 'ui.files.fetching_info' => 'Récupération?', 'ui.files.fetch_info_failed' => 'Impossible de récupérer les métadonnées de l\'URL', 'ui.files.link_added' => 'Lien ajouté avec succès', 'ui.files.link_url' => 'URL', 'ui.files.visit_link' => 'Visiter', 'ui.files.link_url_edit' => 'URL', 'ui.files.my_files' => 'Mes fichiers', 'ui.files.my_uploads_summary' => 'En attente : {pending} Approuvés : {approved} Rejetés : {rejected}', 'ui.files.never_accessed' => 'Jamais', 'ui.files.no_comments_yet' => 'Aucun commentaire pour l\'instant. Soyez le premier à en laisser un.', 'ui.files.no_preview' => 'Aucun aperçu disponible pour ce type de fichier', 'ui.files.no_prgs_in_d64' => 'Aucun fichier PRG trouvé dans l\'image de disque', 'ui.files.post_comment' => 'Publier un commentaire', 'ui.files.preview_failed' => 'Échec du chargement de l\'aperçu', 'ui.files.sid_track' => 'Piste', 'ui.files.preview_title' => 'Aperçu du fichier', 'ui.files.prg_no_preview' => 'Aperçu indisponible ? programme en code machine', 'ui.files.prg_run_c64' => 'Exécuter sur C64', 'ui.files.rehatch' => 'Rehatch', 'ui.files.rehatch_failed' => 'Échec du Rehatch', 'ui.files.rehatch_ok' => 'Fichier re-hatché avec succès', 'ui.files.search_failed' => 'Échec de la recherche', 'ui.files.search_global_placeholder' => 'Rechercher un nom de fichier ou une description?', 'ui.files.search_heading' => 'Rechercher des fichiers', 'ui.files.search_no_results' => 'Aucun fichier trouvé', 'ui.files.search_result_count' => '{count} résultat(s)', 'ui.files.share_access_stats' => 'Accédé {count} fois. Dernier accès : {last_accessed}', 'ui.files.show_all_comments' => 'Afficher tous les {count} commentaires', 'ui.files.show_fewer_comments' => 'Afficher moins', 'ui.files.subfolder_deleted' => 'Sous-dossier supprimé', 'ui.files.upload_descriptions' => 'Descriptions d\'envoi', 'ui.files.upload_descriptions_help' => 'Lors de l\'envoi de plusieurs fichiers, chaque fichier reçoit sa propre courte description.', 'ui.files.upload_partial_failure' => 'Envoi interrompu après {count} fichier(s) : {error}', 'ui.files.upload_success_multiple' => '{count} fichiers envoyés avec succès', 'ui.files.video_not_supported' => 'Format vidéo non pris en charge par votre navigateur', 'ui.files.view_full_size' => 'Afficher en taille réelle', 'ui.files.zip_empty' => 'L\'archive ZIP est vide', 'ui.files.zip_legacy_badge' => 'Compression héritée', 'ui.files.zip_legacy_compression' => 'Ce fichier utilise un format de compression hérité qui ne peut pas être prévisualisé.', 'ui.files.zip_truncated' => 'Affichage des {count} premières entrées', 'ui.files.archive_empty' => 'L\'archive est vide', 'ui.files.archive_tool_unavailable' => 'L\'outil d\'archive (7z) n\'est pas disponible sur ce serveur.', 'ui.files.archive_too_large' => 'Cette archive est trop volumineuse pour être listée ({size}). Seules les archives ZIP peuvent être parcourues au-delà de cette limite.', 'ui.files.download_archive' => 'Télécharger l\'archive', // Footer 'ui.footer.registered_to' => 'Enregistré à {name}', // FREQ 'ui.freq.status_denied' => 'FREQ refusé', 'ui.freq.status_fulfilled' => 'FREQ exécuté', 'ui.freq.status_pending' => 'FREQ en attente', // Netmail 'ui.netmail.next_page_title' => 'Charger la page suivante', 'ui.netmail.saved_items' => 'Enregistres', 'ui.netmail.saved_items.saved' => 'Message enregistre pour plus tard', 'ui.netmail.saved_items.removed' => 'Message retire des elements enregistres', // Nodelist 'ui.nodelist.freq_not_advertised' => 'Ce n?ud n\'annonce pas l\'indicateur FREQ. Une demande sera quand même envoyée, mais le n?ud ne prend peut-être pas en charge les demandes de fichiers.', 'ui.nodelist.index.flag_filter_any' => 'N\'importe quel indicateur', 'ui.nodelist.index.flag_filter_label' => 'Indicateurs', 'ui.nodelist.map_loading' => 'Chargement des données cartographiques?', 'ui.nodelist.map_no_coordinates' => 'Aucun n?ud géocodé disponible. Exécutez le script geocode_nodelist pour renseigner les coordonnées.', 'ui.nodelist.map_node_count' => '{count} n?ud(s) géocodé(s)', 'ui.nodelist.map_send_netmail' => 'Envoyer un netmail', 'ui.nodelist.no_coordinates' => 'Emplacement non géocodé. Exécutez scripts/geocode_nodelist.php pour renseigner les coordonnées.', 'ui.nodelist.request_allfiles' => 'Demander un fichier', 'ui.nodelist.request_allfiles_body' => 'Envoie un FREQ ALLFILES à ce n?ud. Il inclura sa liste de fichiers lors de la prochaine session binkp avec vous.', 'ui.nodelist.request_allfiles_crashmail' => 'Envoyer en crashmail (connexion directe au n?ud)', 'ui.nodelist.request_allfiles_crashmail_help' => 'Livre la demande directement à ce n?ud plutôt que de la router via votre lien montant.', 'ui.nodelist.request_allfiles_failed' => 'Échec de l\'envoi de la demande ALLFILES.', 'ui.nodelist.request_allfiles_filename' => 'Fichier à demander', 'ui.nodelist.request_allfiles_filename_placeholder' => 'ex. README.TXT', 'ui.nodelist.request_allfiles_password' => 'Mot de passe (facultatif)', 'ui.nodelist.request_allfiles_password_help' => 'Fournissez un mot de passe si le système distant en requiert un pour servir les listes de fichiers.', 'ui.nodelist.request_allfiles_sent' => 'Demande ALLFILES en file d\'attente. La liste de fichiers arrivera lors de la prochaine session binkp.', 'ui.nodelist.request_allfiles_title' => 'Demander la liste de fichiers à {node}', 'ui.nodelist.request_allfiles_to' => 'Envoyer à', 'ui.nodelist.request_allfiles_to_other' => 'Autre...', 'ui.nodelist.request_allfiles_to_other_placeholder' => 'Saisir le nom du service', 'ui.nodelist.send_request' => 'Envoyer la demande', 'ui.nodelist.tab_list' => 'Liste', 'ui.nodelist.tab_map' => 'Carte', // Public Files 'ui.public_files.description' => 'Parcourez et téléchargez des fichiers sans créer de compte.', 'ui.public_files.heading' => 'Zones de fichiers publiques', 'ui.public_files.no_areas' => 'Aucune zone de fichiers publique n\'est disponible.', 'ui.public_files.og_description' => 'Parcourez et téléchargez des fichiers depuis les zones de fichiers publiques.', 'ui.public_files.title' => 'Zones de fichiers publiques', // QWK 'ui.qwk.download_failed_prefix' => 'Échec du téléchargement : ', 'ui.qwk.basic_auth.title' => 'Téléchargement et envoi automatisés', 'ui.qwk.basic_auth.description' => 'Les outils et scripts de courrier hors ligne peuvent aussi utiliser directement les points d\'accès QWK sans session navigateur.', 'ui.qwk.basic_auth.auth' => 'Utilisez l\'authentification HTTP Basic avec votre nom d\'utilisateur et votre mot de passe BinktermPHP habituels.', 'ui.qwk.basic_auth.download_label' => 'Télécharger le paquet', 'ui.qwk.basic_auth.upload_label' => 'Envoyer le paquet REP', 'ui.qwk.basic_auth.response_label' => 'Réponse JSON de l\'envoi', 'ui.qwk.basic_auth.response_description' => 'Le point d\'accès d\'envoi renvoie du JSON avec un indicateur de succès, le nombre de messages importés, le nombre ignoré et un tableau d\'erreurs de traitement.', 'ui.qwk.reset_confirm' => 'Réinitialiser à toutes les zones abonnées ? Votre sélection personnalisée sera effacée.', // Settings 'ui.settings.echomail_digest' => 'Digest echomail', 'ui.settings.echomail_digest_daily' => 'Quotidien', 'ui.settings.echomail_digest_help' => 'Recevez un e-mail périodique résumant les nouveaux messages dans vos zones echo abonnées. Nécessite une adresse e-mail valide et la configuration SMTP.', 'ui.settings.echomail_badge_mode' => 'Badge Nouvel Echomail', 'ui.settings.echomail_badge_mode_new' => 'Nouveaux depuis la dernière visite', 'ui.settings.echomail_badge_mode_unread' => 'Total non lu', 'ui.settings.echomail_badge_mode_help' => 'Contrôle ce que le badge echomail du tableau de bord comptabilise.', 'ui.settings.echomail_digest_none' => 'Désactivé', 'ui.settings.echomail_digest_weekly' => 'Hebdomadaire', 'ui.settings.forward_netmail_email' => 'Transférer le netmail par e-mail', 'ui.settings.forward_netmail_email_help' => 'Envoyer une copie des messages netmail entrants à votre adresse e-mail. Nécessite une adresse e-mail valide dans votre profil et la configuration SMTP.', 'ui.settings.notifications' => 'Notifications', 'ui.settings.page_position_memory' => 'Mémorisation de la position de page', 'ui.settings.remember_page_position' => 'Mémoriser la dernière page dans echomail et netmail', 'ui.settings.remember_page_position_help' => 'Retourner automatiquement à la page où vous étiez lors de votre retour dans une zone', 'ui.settings.chat_notification_sound' => 'Son de chat', 'ui.settings.echomail_notification_sound' => 'Son de nouvel echomail', 'ui.settings.netmail_notification_sound' => 'Son de nouveau netmail', 'ui.settings.file_notification_sound' => 'Son de nouveau fichier', 'ui.settings.notification_sound_disabled' => 'Désactivé', 'ui.settings.preview_sound' => 'Aperçu du son', 'ui.settings.notification_sound_help' => 'Choisissez le son de notification joué lors de l\'arrivée de nouveaux chats, echomails, netmails ou fichiers.', // Web Errors 'ui.web.errors.not_found' => 'La page que vous avez demandée est introuvable.', // Admin Weather Config 'ui.admin.weather_config.page_title' => 'Configuration du Rapport Météo', 'ui.admin.weather_config.heading' => 'Configuration du Rapport Météo', 'ui.admin.weather_config.daemon_error' => 'Le démon d\'administration n\'est pas en cours d\'exécution. La configuration ne peut pas être chargée ni sauvegardée.', 'ui.admin.weather_config.general_settings' => 'Paramètres Généraux', 'ui.admin.weather_config.title' => 'Titre du Rapport', 'ui.admin.weather_config.title_placeholder' => 'Rapport Météo du Pacifique Nord', 'ui.admin.weather_config.title_help' => 'Titre utilisé dans le sujet des rapports publiés.', 'ui.admin.weather_config.coverage_area' => 'Zone de Couverture', 'ui.admin.weather_config.coverage_area_placeholder' => 'Colombie-Britannique et Pacifique Nord', 'ui.admin.weather_config.coverage_area_help' => 'Étiquette descriptive de la zone géographique couverte.', 'ui.admin.weather_config.api_key' => 'Clé API OpenWeatherMap', 'ui.admin.weather_config.api_key_placeholder' => 'votre_cle_api_ici', 'ui.admin.weather_config.api_key_help' => 'Clé API gratuite de', 'ui.admin.weather_config.api_settings' => 'Paramètres API', 'ui.admin.weather_config.api_timeout' => 'Délai (s)', 'ui.admin.weather_config.api_timeout_help' => 'Délai d\'attente de la requête en secondes.', 'ui.admin.weather_config.max_locations' => 'Max. Emplacements', 'ui.admin.weather_config.units' => 'Unités', 'ui.admin.weather_config.units_metric' => 'Métrique (°C)', 'ui.admin.weather_config.units_imperial' => 'Impérial (°F)', 'ui.admin.weather_config.units_standard' => 'Standard (K)', 'ui.admin.weather_config.locations' => 'Emplacements', 'ui.admin.weather_config.add_location' => 'Ajouter un Emplacement', 'ui.admin.weather_config.edit_location' => 'Modifier l\'Emplacement', 'ui.admin.weather_config.no_locations' => 'Aucun emplacement configuré. Ajoutez-en au moins un.', 'ui.admin.weather_config.location_name' => 'Nom de la Ville', 'ui.admin.weather_config.location_name_placeholder' => 'Vancouver', 'ui.admin.weather_config.location_lat' => 'Latitude', 'ui.admin.weather_config.location_lon' => 'Longitude', 'ui.admin.weather_config.location_coords_help' => 'Utilisez des degrés décimaux. Trouvez les coordonnées sur openweathermap.org ou Google Maps.', 'ui.admin.weather_config.load_example' => 'Charger l\'Exemple', 'ui.admin.weather_config.preview' => 'Aperçu', 'ui.admin.weather_config.preview_title' => 'Aperçu du Rapport Météo', 'ui.admin.weather_config.preview_loading' => 'Génération de l\'aperçu du rapport météo...', 'ui.admin.weather_config.preview_failed' => 'Impossible de générer l\'aperçu du rapport météo.', 'ui.admin.weather_config.preview_error' => 'Une erreur s\'est produite lors de la génération de l\'aperçu.', 'ui.admin.weather_config.save' => 'Enregistrer la Configuration', 'ui.admin.weather_config.save_location' => 'Enregistrer', 'ui.admin.weather_config.cancel' => 'Annuler', 'ui.admin.weather_config.edit' => 'Modifier', 'ui.admin.weather_config.remove' => 'Supprimer', 'ui.admin.weather_config.saved_success' => 'Configuration météo enregistrée avec succès.', 'ui.admin.weather_config.save_failed' => 'Échec de l\'enregistrement de la configuration météo.', 'ui.admin.weather_config.save_error' => 'Une erreur s\'est produite lors de l\'enregistrement.', 'ui.admin.weather_config.show_api_key' => 'Afficher', 'ui.admin.weather_config.hide_api_key' => 'Masquer', // Interests 'ui.base.admin.interests' => 'Centres d\'intérêt', 'ui.admin.file_approvals.page_title' => 'Approbations des téléversements de fichiers', 'ui.admin.file_approvals.heading' => 'Approbations des téléversements de fichiers', 'ui.admin.file_approvals.intro' => 'Vérifiez les fichiers téléversés avant qu\'ils deviennent visibles dans les zones de fichiers.', 'ui.admin.file_approvals.pending_queue' => 'File des téléversements en attente', 'ui.admin.file_approvals.none_pending' => 'Aucun fichier n\'attend une approbation.', 'ui.admin.file_approvals.uploader' => 'Téléversé par', 'ui.admin.file_approvals.approve' => 'Approuver', 'ui.admin.file_approvals.reject' => 'Rejeter', 'ui.admin.file_approvals.approved' => 'Fichier approuvé', 'ui.admin.file_approvals.rejected' => 'Fichier rejeté', 'ui.admin.file_approvals.reject_reason_prompt' => 'Motif facultatif du rejet :', 'ui.admin.file_approvals.scan_disabled_notice' => 'L\'analyse antivirus est désactivée sur ce système, donc l\'analyse depuis la file d\'approbation est indisponible.', 'ui.base.interests' => 'Centres d\'intérêt', 'ui.interests.nav_label' => 'Centres d\'intérêt', 'ui.interests.page_title' => 'Centres d\'intérêt', 'ui.interests.heading' => 'Parcourir les centres d\'intérêt', 'ui.interests.page_intro' => 'Les centres d\'intérêt vous aident à découvrir des zones d\'écho et des zones de fichiers correspondant à vos sujets. S\'abonner à un centre d\'intérêt suit automatiquement toutes ses zones associées.', 'ui.interests.page_intro_unsub' => 'Vous pouvez vous désabonner d\'un centre d\'intérêt et de ses zones à tout moment, ou gérer les abonnements individuels via le {link}.', 'ui.interests.page_intro_unsub_link' => 'gestionnaire d\'abonnements', 'ui.interests.go_to_echo_areas' => 'Aller aux zones d\'écho', 'ui.interests.subscribe' => 'S\'abonner', 'ui.interests.unsubscribe' => 'Se désabonner', 'ui.interests.subscribed' => 'Abonné', 'ui.interests.no_interests' => 'Aucun centre d\'intérêt n\'est souscrit.', 'ui.interests.load_failed' => 'Échec du chargement des centres d\'intérêt', 'ui.interests.area_count' => '{count} zone(s) d\'écho', 'ui.interests.areas_modal_title' => 'Zones d\'écho ? {name}', 'ui.interests.areas_modal_subscribe_title' => 'S\'abonner à {name}', 'ui.interests.areas_modal_unsubscribe_title' => 'Se désabonner de {name}', 'ui.interests.areas_modal_empty' => 'Aucune zone d\'écho assignée.', 'ui.interests.areas_modal_col_tag' => 'Zone d\'écho', 'ui.interests.areas_modal_col_net' => 'Réseau', 'ui.interests.areas_modal_col_desc' => 'Description', 'ui.interests.areas_modal_select_all' => 'Tout sélectionner', 'ui.interests.areas_modal_deselect_all' => 'Tout désélectionner', 'ui.interests.already_subscribed' => 'Déjà abonné', 'ui.interests.areas_modal_confirm_subscribe' => 'S\'abonner à {count} zone(s)', 'ui.interests.areas_modal_confirm_unsubscribe' => 'Se désabonner de {count} zone(s)', 'ui.interests.areas_modal_manage_title' => 'Gérer les zones ? {name}', 'ui.interests.areas_modal_save_btn' => 'Enregistrer {count} zone(s)', 'ui.interests.subscriber_count' => '{count} abonné(s)', 'ui.interests.browse_areas' => 'Parcourir les zones', 'ui.interests.browse_page_title' => 'Trouver des zones d\'écho', 'ui.interests.browse_search_placeholder' => 'Rechercher par balise ou description?', 'ui.interests.tab_messages' => 'Messages', 'ui.interests.tab_files' => 'Fichiers', 'ui.interests.viewer_title' => 'Intérêt : {name}', 'ui.interests.crosspost_button' => 'Publier dans l\'intérêt', 'ui.interests.crosspost_cooldown_warning' => 'Vous devez attendre encore {minutes} minute(s) avant de faire un cross-post.', 'ui.interests.admin.page_title' => 'Gérer les centres d\'intérêt', 'ui.interests.admin.create' => 'Créer un intérêt', 'ui.interests.admin.edit' => 'Modifier l\'intérêt', 'ui.interests.admin.delete' => 'Supprimer', 'ui.interests.admin.delete_confirm' => 'Supprimer cet intérêt ? Toutes les données d\'abonnement seront supprimées.', 'ui.interests.admin.name_label' => 'Nom', 'ui.interests.admin.slug_label' => 'Slug', 'ui.interests.admin.description_label' => 'Description', 'ui.interests.admin.icon_label' => 'Icône (classe FontAwesome)', 'ui.interests.admin.color_label' => 'Couleur', 'ui.interests.admin.sort_order_label' => 'Ordre de tri', 'ui.interests.admin.is_active_label' => 'Actif', 'ui.interests.admin.echo_areas' => 'Zones d\'écho', 'ui.interests.admin.file_areas' => 'Zones de fichiers', 'ui.interests.admin.crosspost_cooldown_enabled' => 'Activer la limitation de cross-post', 'ui.interests.admin.crosspost_cooldown_minutes' => 'Fenêtre de refroidissement (minutes)', 'ui.interests.admin.crosspost_cooldown_threshold' => 'Seuil (nombre min. de zones pour déclencher la limitation)', 'ui.interests.admin.saved_success' => 'Intérêt enregistré.', 'ui.interests.admin.deleted_success' => 'Intérêt supprimé.', 'ui.interests.admin.areas_saved_success' => 'Zones mises à jour.', 'ui.common.show_entire_conversation' => 'Afficher toute la conversation', 'ui.common.showing_entire_conversation' => 'Affichage de toute la conversation', 'ui.common.back_to_message_list' => 'Retour a la liste', 'ui.common.view_conversation' => 'Voir la conversation', 'ui.common.download_message' => 'Telecharger le message', 'ui.common.forward_to_me_by_email' => 'Me le transferer par email', 'ui.common.forwarded_to_email' => 'Message transfere a votre email', 'ui.admin.dashboard.load_average' => 'Charge moyenne :', 'ui.admin.dashboard.ram_usage' => 'Utilisation RAM :', 'ui.admin.dashboard.metric_unavailable' => 'Indisponible', 'ui.admin.dashboard.ram_usage_modal_title' => 'Details de l\'utilisation RAM', 'ui.admin.dashboard.ram_usage_modal_failed' => 'Impossible de charger les details de l\'utilisation RAM.', 'ui.admin.ad_campaigns.run_now_confirm' => 'Exécuter {name} tout de suite ?', 'ui.admin.ad_campaigns.this_campaign' => 'cette campagne', 'ui.admin.wall.incoming' => 'Message entrant de {from}', // Echomail moderation queue 'ui.admin.echomail_moderation.page_title' => 'Modération des echomail', 'ui.admin.echomail_moderation.heading' => 'File de modération des echomail', 'ui.admin.echomail_moderation.about_title' => 'À propos de la modération', 'ui.admin.echomail_moderation.about_text' => 'Les nouveaux utilisateurs qui publient dans des zones echo réseau sont retenus ici pour examen avant que leurs messages ne soient transmis en amont.', 'ui.admin.echomail_moderation.threshold_hint' => 'Configurez le seuil d\'approbation dans les', 'ui.admin.echomail_moderation.bbs_settings_link' => 'Paramètres BBS', 'ui.admin.echomail_moderation.empty_queue' => 'Aucun message en attente de modération.', 'ui.admin.echomail_moderation.col_area' => 'Zone', 'ui.admin.echomail_moderation.col_author' => 'Auteur', 'ui.admin.echomail_moderation.col_subject' => 'Sujet', 'ui.admin.echomail_moderation.col_date' => 'Date', 'ui.admin.echomail_moderation.col_actions' => 'Actions', 'ui.admin.echomail_moderation.action_approve' => 'Approuver', 'ui.admin.echomail_moderation.action_reject' => 'Rejeter', 'ui.admin.echomail_moderation.approved_success' => 'Message approuvé et mis en file d\'attente pour transmission.', 'ui.admin.echomail_moderation.rejected_success' => 'Message rejeté.', // BBS settings - echomail moderation threshold 'ui.admin.bbs_settings.features.echomail_moderation_threshold' => 'Seuil de modération des echomail', 'ui.admin.bbs_settings.features.echomail_moderation_threshold_help' => 'Nombre de publications echomail réseau approuvées requises avant qu\'un nouvel utilisateur puisse publier sans modération. Mettez 0 pour désactiver la modération.', 'ui.admin.bbs_settings.validation.echomail_moderation_threshold_range' => 'Le seuil de modération doit être 0 ou plus (0 = désactivé).', // Nav 'ui.base.admin.echomail_moderation' => 'Modération echomail', // Pending moderation post response 'ui.api.messages.pending_moderation' => 'Votre message a été soumis et est en attente d\'approbation par un modérateur avant d\'être envoyé au réseau.', // User Guide 'ui.base.user_guide' => 'Guide utilisateur', 'ui.userguide.page_title' => 'Guide utilisateur', 'ui.userguide.heading' => 'Guide utilisateur', 'ui.userguide.not_found' => 'Guide utilisateur introuvable.', // AI Assistant - admin settings 'ui.admin.bbs_settings.features.enable_ai_assistant' => 'Activer l\'assistant IA', 'ui.admin.bbs_settings.features.ai_assistant_help' => 'Affiche le bouton assistant IA dans les lecteurs de messages echomail et netmail.', // AI Settings page 'ui.admin.bbs_settings.ai.page_title' => 'Parametres IA', 'ui.admin.bbs_settings.ai.heading' => 'Parametres IA', 'ui.admin.bbs_settings.ai.features_title' => 'Fonctionnalites IA', 'ui.admin.bbs_settings.ai.configure_link' => 'Parametres IA', 'ui.admin.bbs_settings.ai.no_provider_warning' => 'Aucun fournisseur IA n\'est configure. Ajoutez une cle API OpenAI ou Anthropic dans .env pour activer ces fonctionnalites.', 'ui.admin.bbs_settings.ai.enable_share_summary' => 'Activer les resumes IA pour les liens de messages partages', 'ui.admin.bbs_settings.ai.share_summary_help' => 'Lorsqu\'il est active, un bouton IA apparait dans la boite de dialogue de partage pour generer une description d\'apercu en une phrase.', 'ui.admin.bbs_settings.ai.save' => 'Enregistrer les parametres IA', 'ui.admin.bbs_settings.ai.save_failed' => 'Echec de l\'enregistrement des parametres IA.', 'ui.admin.bbs_settings.ai.saved_success' => 'Parametres IA enregistres.', 'ui.admin.bbs_settings.ai.share_summary_prompt_label' => 'Invite systeme du resume de partage', 'ui.admin.bbs_settings.ai.share_summary_prompt_help' => 'Invite systeme envoyee a l\'IA lors de la generation des descriptions d\'apercu. Laissez vide pour utiliser la valeur par defaut integree.', 'ui.admin.bbs_settings.ai.status_title' => 'Etat des fournisseurs', 'ui.admin.bbs_settings.ai.system_default' => 'Defaut systeme', 'ui.admin.bbs_settings.ai.status_enabled' => 'Actif', 'ui.admin.bbs_settings.ai.status_disabled' => 'Non configure', 'ui.admin.bbs_settings.ai.status_default_model' => 'Modele par defaut', 'ui.admin.bbs_settings.ai.status_tools' => 'Appels d\'outils', 'ui.admin.bbs_settings.ai.status_tools_yes' => 'Pris en charge', 'ui.admin.bbs_settings.ai.status_tools_no' => 'Non pris en charge', 'ui.admin.bbs_settings.ai.status_configure_hint' => 'Definissez {env_var} dans .env pour activer.', 'ui.admin.bbs_settings.ai.pricing_title' => 'Tarifs (par million de tokens)', 'ui.admin.bbs_settings.ai.pricing_input' => 'Entree', 'ui.admin.bbs_settings.ai.pricing_output' => 'Sortie', 'ui.admin.bbs_settings.ai.pricing_cached' => 'Entree en cache', 'ui.admin.bbs_settings.ai.pricing_cache_write' => 'Ecriture en cache', 'ui.admin.bbs_settings.ai.pricing_not_configured' => 'Non configure. Definissez les variables AI_PRICE_<PROVIDER>_* pour activer le suivi des couts.', 'ui.admin.bbs_settings.ai.power_cost_title' => 'Cout energetique', 'ui.admin.bbs_settings.ai.power_cost_configured' => '{watts}W a {per_kwh} USD/kWh = environ {per_hour} USD/h', 'ui.admin.bbs_settings.ai.power_cost_not_configured' => 'Non configure. Definissez OLLAMA_GPU_POWER_WATTS et OLLAMA_POWER_COST_PER_KWH_USD.', // Share modal - description field and AI summary 'ui.share.description_label' => 'Description de l\'apercu du lien', 'ui.share.description_placeholder' => 'Facultatif ? decrivez ce message', 'ui.share.ai_summary_button_title' => 'Generer un resume IA', 'ui.share.ai_summary_failed' => 'Impossible de generer un resume. Veuillez reessayer.', // Share modal - OG preview image 'ui.share.og_image_label' => 'Image d\'apercu', 'ui.share.og_image_help' => 'Importez une image pour enrichir les apercu sur les reseaux sociaux (JPG, PNG, GIF ; 5 Mo max)', 'ui.share.og_image_upload_btn' => 'Importer une image', 'ui.share.og_image_remove_btn' => 'Supprimer l\'image', 'ui.share.og_image_uploading' => 'Importation...', 'ui.share.og_image_no_file' => 'Veuillez d\'abord selectionner un fichier image.', 'ui.share.og_image_upload_success' => 'Image d\'apercu mise a jour', 'ui.share.og_image_remove_success' => 'Image d\'apercu supprimee', // AI Assistant (echomail + netmail readers) 'ui.ai_assistant.button' => 'Assistant IA', 'ui.ai_assistant.modal_title' => 'Assistant IA', 'ui.ai_assistant.quick_prompts' => 'Invites rapides', 'ui.ai_assistant.prompt_label' => 'Votre demande', 'ui.ai_assistant.prompt_placeholder' => 'Posez une question a l\'IA sur ce message...', 'ui.ai_assistant.chars_remaining' => '{remaining} caracteres restants', 'ui.ai_assistant.execute' => 'Executer', 'ui.ai_assistant.response_label' => 'Reponse', 'ui.ai_assistant.credits_notice' => 'Des credits seront debites selon l\'utilisation.', 'ui.ai_assistant.credits_used' => '{credits} credits utilises', 'ui.ai_assistant.context_message' => 'Le message #{id} est charge comme contexte ? les invites rapides y feront reference.', 'ui.ai_assistant.context_none' => 'Aucun message n\'est ouvert. Ouvrez d\'abord un message pour des invites avec contexte, ou posez une question generale.', 'ui.ai_assistant.prompt_placeholder_ctx' => 'Posez une question sur ce message...', 'ui.ai_assistant.usage_warning' => 'L\'assistant IA sert uniquement a l\'interpretation. Il n\'est pas prevu pour rediger des reponses ou de nouveaux messages. Verifiez tout avec soin afin d\'eviter de publier des informations incorrectes ou du contenu IA de mauvaise qualite.', // PacketBBS TOTP Authenticator (page parametres) 'ui.settings.packetbbs_totp.title' => 'Authentificateur PacketBBS', 'ui.settings.packetbbs_totp.help' => 'Activez la connexion par code a usage unique pour les acces radio PacketBBS et MeshCore. Apres inscription, utilisez LOGIN <nom_utilisateur> <code-6-chiffres> depuis votre appareil radio au lieu du mot de passe.', 'ui.settings.packetbbs_totp.status_enabled' => 'Authentificateur actif. Vous pouvez vous connecter via radio avec un code a usage unique.', 'ui.settings.packetbbs_totp.status_disabled' => 'Non inscrit. La connexion radio est desactivee jusqu\'a la configuration d\'un authentificateur.', 'ui.settings.packetbbs_totp.enable_btn' => 'Configurer l\'authentificateur', 'ui.settings.packetbbs_totp.disable_btn' => 'Desactiver l\'authentificateur', 'ui.settings.packetbbs_totp.setup_step1' => 'Ouvrez votre application d\'authentification et scannez le code QR ci-dessous, ou saisissez le secret manuellement.', 'ui.settings.packetbbs_totp.setup_qr_label' => 'Code QR d\'inscription', 'ui.settings.packetbbs_totp.setup_qr_alt' => 'Code QR d\'inscription de l\'authentificateur PacketBBS', 'ui.settings.packetbbs_totp.setup_secret_label' => 'Secret (saisie manuelle)', 'ui.settings.packetbbs_totp.setup_uri_label' => 'URI d\'authentification', 'ui.settings.packetbbs_totp.verify_label' => 'Saisissez le code a 6 chiffres de votre application pour confirmer l\'inscription :', 'ui.settings.packetbbs_totp.verify_placeholder' => '000000', 'ui.settings.packetbbs_totp.verify_btn' => 'Verifier et activer', 'ui.settings.packetbbs_totp.verify_success' => 'Authentificateur inscrit. Connectez-vous via radio avec : LOGIN <nom_utilisateur> <code-6-chiffres>', 'ui.settings.packetbbs_totp.disable_confirm' => 'Desactiver l\'authentificateur PacketBBS ? Vous ne pourrez plus vous connecter depuis des appareils radio.', 'ui.settings.packetbbs_totp.disable_success' => 'Authentificateur PacketBBS desactive.', 'ui.settings.packetbbs_totp.login_hint' => 'Connexion radio : LOGIN <nom_utilisateur> <code-6-chiffres>', 'ui.settings.packetbbs_totp.load_failed' => 'Impossible de charger l\'etat de l\'authentificateur.', // Bulletins 'ui.base.bulletins' => 'Bulletins', 'ui.base.admin.bulletins' => 'Bulletins', 'ui.bulletins.title' => 'Bulletins', 'ui.bulletins.count' => 'Bulletin {current} sur {total}', 'ui.bulletins.no_new' => 'Aucun nouveau bulletin', 'ui.bulletins.none_available' => 'Aucun bulletin disponible', 'ui.bulletins.next' => 'Suivant', 'ui.bulletins.prev' => 'Precedent', 'ui.bulletins.skip_all' => 'Tout ignorer', 'ui.bulletins.done' => 'Termine', 'ui.dashboard.bulletins.unread' => '{count} bulletin(s) non lu(s)', 'ui.dashboard.card.bulletins' => 'Bulletins', 'ui.admin.bulletins.title' => 'Bulletins', 'ui.admin.bulletins.list' => 'Liste des bulletins', 'ui.admin.bulletins.create' => 'Creer un bulletin', 'ui.admin.bulletins.edit' => 'Modifier le bulletin', 'ui.admin.bulletins.delete_confirm' => 'Supprimer ce bulletin?', 'ui.admin.bulletins.sort_order' => 'Ordre', 'ui.admin.bulletins.format' => 'Format', 'ui.admin.bulletins.format_plain' => 'Texte brut', 'ui.admin.bulletins.format_markdown' => 'Markdown', 'ui.admin.bulletins.active' => 'Actif', 'ui.admin.bulletins.inactive' => 'Inactif', 'ui.admin.bulletins.active_from' => 'Actif depuis', 'ui.admin.bulletins.active_until' => 'Actif jusqu a', 'ui.admin.bulletins.body' => 'Corps', 'ui.admin.bulletins.preview' => 'Apercu', 'ui.admin.bulletins.none' => 'Aucun bulletin.', 'ui.admin.bulletins.load_failed' => 'Impossible de charger les bulletins.', 'ui.admin.bulletins.save_failed' => 'Impossible d enregistrer le bulletin.', 'ui.admin.bulletins.saved_success' => 'Bulletin enregistre.', 'ui.admin.bulletins.deleted_success' => 'Bulletin supprime.', 'ui.admin.bulletins.reordered_success' => 'Bulletins reordonnes.', 'ui.admin.bbs_settings.media_player.title' => 'Lecteur multimedia', 'ui.admin.bbs_settings.media_player.description' => 'Experimental. Affiche les URL multimedia detectees directement dans les lecteurs de messages. Les utilisateurs peuvent charger les medias par clic ou utiliser l affichage automatique. En mode automatique, les URL multimedia detectees sont chargees ou integrees immediatement et peuvent impliquer des analyses de tiers. Recommande pour LovlyNet.', 'ui.admin.bbs_settings.media_player.enabled' => 'Activer le lecteur multimedia integre', 'ui.admin.bbs_settings.media_player.providers_label' => 'Fournisseurs actives :', 'ui.admin.bbs_settings.media_player.save' => 'Enregistrer les parametres du lecteur', 'ui.admin.bbs_settings.media_player.load_failed' => 'Echec du chargement des parametres du lecteur.', 'ui.admin.bbs_settings.media_player.save_failed' => 'Echec de la sauvegarde des parametres du lecteur.', 'ui.admin.bbs_settings.media_player.saved_success' => 'Parametres du lecteur enregistres.', 'ui.admin.bbs_settings.media_player.provider_settings' => 'Parametres du fournisseur', 'ui.admin.bbs_settings.media_player.soundcloud_client_id' => 'Identifiant client', 'ui.admin.bbs_settings.media_player.soundcloud_client_id_placeholder' => 'Collez votre identifiant client SoundCloud', 'ui.admin.bbs_settings.media_player.soundcloud_client_id_help' => 'Optionnel. Obtenez un identifiant client en enregistrant une application sur le portail developpeur SoundCloud.', 'ui.admin.bbs_settings.media_player.twitter_bearer_token' => 'Jeton porteur', 'ui.admin.bbs_settings.media_player.twitter_bearer_token_placeholder' => 'Collez votre jeton porteur Twitter', 'ui.admin.bbs_settings.media_player.twitter_bearer_token_help' => 'Optionnel. Obtenez un jeton porteur sur le portail developpeur Twitter.', 'ui.admin.bbs_settings.media_player.provider_settings_hint' => 'Les modifications prennent effet lors de l\'enregistrement.', 'ui.base.admin.networks' => 'Networks', 'ui.admin.binkp_config.uplinks.modal.edit_network_settings' => 'Edit network settings', 'ui.admin.binkp_config.uplinks.modal.connection_options' => 'Connection Options', 'ui.admin.binkp_config.uplinks.modal.unconfigured_network' => 'unconfigured', 'ui.admin.binkp_config.validation.uplink_domain_required' => 'Network is required.', 'ui.admin.binkp_config.validation.uplink_domain_unknown' => 'Select a configured network.', 'ui.admin.networks.page_title' => 'Networks', 'ui.admin.networks.heading' => 'Networks', 'ui.admin.networks.add_network' => 'Add Network', 'ui.admin.networks.edit_network' => 'Edit Network', 'ui.admin.networks.type' => 'Type', 'ui.admin.networks.domain' => 'Domain', 'ui.admin.networks.name' => 'Name', 'ui.admin.networks.description' => 'Description', 'ui.admin.networks.website' => 'Website', 'ui.admin.networks.flags' => 'Flags', 'ui.admin.networks.no_charset_override' => 'No override', 'ui.admin.networks.markup' => 'Markup', 'ui.admin.networks.media' => 'Media', 'ui.admin.networks.change_domain' => 'Change Domain', 'ui.admin.networks.new_domain' => 'New Domain', 'ui.admin.networks.change_domain_help' => 'Renames the network domain and updates matching echo areas and uplinks.', 'ui.admin.networks.delete_confirm' => 'Delete this network?', 'ui.admin.networks.load_failed' => 'Failed to load networks', 'ui.admin.networks.save_failed' => 'Failed to save network', 'ui.admin.networks.saved' => 'Network saved', 'ui.admin.networks.delete_failed' => 'Failed to delete network', 'ui.admin.networks.deleted' => 'Network deleted', 'ui.admin.networks.change_domain_failed' => 'Failed to change domain', 'ui.admin.networks.domain_changed' => 'Domain changed', ];