/** * French — translated from locales/en.js. * * Register: formal (vouvoiement). * `hub`, `node` and `GEK` are left in English: they name the CLI * (`meshbay-node`), node.toml and the docs, which are English throughout. */ export default { // Nav 'nav.toggle_menu': 'Afficher le menu', 'nav.light_mode': 'Thème clair', 'nav.dark_mode': 'Thème sombre', 'nav.logout': 'Déconnexion', 'nav.login': 'Connexion', // Sidebar 'sidebar.my_groups': 'Mes groupes', 'sidebar.no_groups': 'Aucun groupe pour le moment', 'sidebar.discover': 'Découvrir', 'sidebar.public_groups': 'Groupes publics', // Login 'login.title': 'Connexion', 'login.username': "Nom d'utilisateur", 'login.password': 'Mot de passe', 'login.submit': 'Se connecter', 'login.loading': 'Connexion en cours...', 'login.no_account': 'Pas encore de compte ?', 'login.register_link': 'Créer un compte', // Register 'register.title': 'Créer un compte', 'register.username': "Nom d'utilisateur", 'register.email': 'Adresse e-mail', 'register.password': 'Phrase secrète (12 caractères minimum)', 'register.confirm': 'Confirmer le mot de passe', 'register.submit': 'Créer le compte', 'register.loading': 'Création du compte...', 'register.has_account': 'Vous avez déjà un compte ?', 'register.login_link': 'Se connecter', 'register.success_title': 'Compte créé', 'register.success_msg': 'Vous pouvez maintenant vous connecter avec vos identifiants.', 'register.go_login': 'Aller à la connexion', 'register.err_mismatch': 'Les mots de passe ne correspondent pas', 'register.err_min_len': { one: 'Utilisez au moins {n} caractère', other: 'Utilisez au moins {n} caractères', }, 'register.err_too_weak': 'Trop facile à deviner. Votre phrase secrète est ce qui ' + 'protège vos clés là où elles sont stockées — quelques mots sans rapport entre ' + 'eux font très bien l’affaire.', 'register.strength': 'Robustesse : environ {bits} bits. Elle protège la copie de ' + 'vos clés conservée sur les nodes que vous rejoignez, cela vaut donc la peine ' + 'de la soigner.', // Home 'home.welcome': 'Bienvenue sur MeshBay', 'home.no_groups': "Vous n'êtes membre d'aucun groupe pour le moment.", 'home.browse_prefix': 'Parcourez les ', 'home.browse_link': 'groupes publics', 'home.browse_suffix': " ou demandez à l'administrateur d'un groupe de vous inviter.", 'home.my_groups': 'Mes groupes', // Explore 'explore.title': 'Groupes publics', 'explore.search': 'Rechercher un groupe...', 'explore.loading': 'Chargement...', 'explore.empty': 'Aucun groupe public disponible.', 'explore.create_group': 'Créer un groupe', 'explore.join': 'Rejoindre', 'explore.member': 'Membre', // Group page 'group.default_name': 'Groupe', 'group.tab_files': 'Fichiers', 'group.tab_chat': 'Discussion', 'group.tab_members': 'Membres', 'group.filter': 'Filtrer les fichiers...', 'group.col_name': 'Nom', 'group.col_size': 'Taille', 'group.col_type': 'Type', 'group.col_date': 'Date', 'group.empty_filter': 'Aucun fichier ne correspond au filtre', 'group.empty_dir': 'Ce dossier est vide', 'group.download': 'Télécharger', 'group.play': 'Lire', 'group.offline_title': "Aucun node n'est actuellement en ligne pour ce groupe.", 'group.offline_hint': 'Les fichiers apparaîtront dès qu’un node hébergeant ce ' + 'groupe se connectera.', 'group.upload': 'Envoyer', 'group.mkdir': 'Nouveau dossier', 'group.mkdir_prompt': 'Nom du nouveau dossier :', 'group.view': 'Afficher', 'group.delete': 'Supprimer', 'group.delete_confirm': 'Supprimer {name} ?', 'group.delete_group': 'Supprimer le groupe', 'group.delete_group_confirm': 'Supprimer définitivement « {name} » et en retirer ' + 'tous les membres ? Les fichiers présents sur le node sont conservés.', 'group.err_transport': 'Module de transport non chargé', // Status 'status.idle': 'Inactif', 'status.discovering': 'Recherche de nodes...', 'status.connecting': 'Connexion via WebRTC...', 'status.fetching': "Récupération de l'index...", 'status.files': { one: '{n} fichier', other: '{n} fichiers', }, 'status.offline': 'Aucun node en ligne', 'status.error': 'Échec de la connexion', // Chat 'chat.empty': 'Aucun message pour le moment. Lancez la conversation !', 'chat.placeholder': 'Écrivez un message...', 'chat.send': 'Envoyer', 'chat.attach': 'Joindre un fichier', // Video player 'video.loading': 'Chargement de {name}...', 'video.buffering': 'Mise en mémoire tampon...', 'video.resumed_at': "Reprise à {time}", 'video.from_start': "Reprendre depuis le début", 'video.close': 'Fermer (Échap)', 'preview.pdf_fallback': 'Ce navigateur n’affichera pas le PDF directement. ' + 'Téléchargez-le plutôt — il a été déchiffré ici dans les deux cas.', 'group.upload_indexing': 'indexation…', 'video.err_transport': 'Transport non connecté', 'video.err_mse': 'Codec non pris en charge pour la diffusion : {codec}', // Settings 'settings.title': 'Paramètres', 'settings.coming_soon': 'Bientôt disponible.', 'settings.downloads': 'Téléchargements', 'settings.dl_auto': 'Enregistrer automatiquement', 'settings.dl_auto_hint': 'Les fichiers vont directement dans le dossier choisi ' + 'ci-dessous, sans boîte de dialogue. Télécharger vingt fichiers en dépose vingt.', 'settings.dl_ask': 'Demander à chaque fois', 'settings.dl_ask_hint': 'Une boîte de dialogue « Enregistrer sous » par fichier — ' + 'un par fichier, y compris lorsque vous téléchargez une sélection.', 'settings.dl_folder': 'Dossier : {name}', 'settings.dl_no_folder': 'Aucun dossier choisi — les téléchargements vont là où ' + 'votre navigateur les place', 'settings.dl_choose': 'Choisir un dossier', 'settings.dl_change': 'Changer', 'settings.dl_forget': 'Oublier', 'settings.dl_path_note': 'On ne peut pas indiquer un chemin à une page web, il n’y ' + 'a donc rien à saisir ici : votre navigateur donne accès au dossier que vous ' + 'désignez, et MeshBay n’écrit jamais ailleurs qu’à l’intérieur. Une ' + 'confirmation peut vous être demandée une fois par session.', 'settings.dl_unsupported': 'Ce navigateur ne sait pas écrire dans un dossier de ' + 'votre choix (pas de File System Access API) ; les téléchargements vont donc ' + 'dans son propre dossier de téléchargement. Chrome et Edge permettent d’en ' + 'choisir un.', 'settings.profile': 'Profil', 'settings.username': "Nom d'utilisateur", 'settings.node_pins': 'Identités des nodes', 'settings.node_pins_hint': "La clé d'identité de chaque node est mémorisée lors de " + 'la première connexion. Si elle change, la connexion est refusée — ce qui n’est ' + 'normal que lorsqu’un opérateur réinstalle un node. Vérifiez auprès de lui ' + 'avant d’effacer.', 'settings.node_pins_count': { one: '{n} épinglée', other: '{n} épinglées', }, 'settings.node_pins_clear': 'Effacer les identités épinglées', 'settings.danger': 'Supprimer le compte', 'settings.delete_hint': 'Supprime votre compte, vos adhésions aux groupes et vos ' + 'notifications du hub, et libère votre nom d’utilisateur. Cela n’atteint pas ' + 'ce qui se trouve sur les nodes : les fichiers que vous avez envoyés restent là ' + 'où leur opérateur les conserve, et chaque node garde l’identité qu’il a ' + 'épinglée pour vous jusqu’à ce que son opérateur la retire. Les journaux de ' + 'connexion sont conservés un an, comme la loi l’exige.', 'settings.delete_account': 'Supprimer mon compte', 'settings.delete_confirm': 'Saisissez votre phrase secrète pour confirmer. ' + 'Cette action est irréversible.', 'settings.delete_confirm_btn': 'Supprimer définitivement', 'settings.cancel': 'Annuler', 'settings.appearance': 'Apparence', 'settings.theme': 'Thème', 'settings.theme_light': 'Clair', 'settings.theme_dark': 'Sombre', 'settings.theme_system': 'Système', 'settings.language': 'Langue', 'settings.about': 'À propos', 'settings.version': 'Version', 'settings.protocol': 'Protocole', 'settings.role': 'Rôle', 'settings.groups': 'Notifications de groupe', 'settings.notifications': 'Notifications', 'settings.node_key': 'Associer un node', 'settings.node_key_desc': 'Si vous exploitez un node MeshBay, collez ici sa clé ' + 'publique Ed25519 pour l’associer à votre compte. Vous trouverez cette clé ' + 'dans le tableau de bord d’administration de votre node.', 'settings.node_key_placeholder': 'Collez la clé publique Ed25519 du node (base64)', 'settings.node_key_submit': 'Associer le node', 'settings.node_key_success': 'Node associé avec succès', 'settings.node_key_current': 'Clé du node associé', // Sidebar 'sidebar.create_group': 'Créer un groupe', 'sidebar.settings': 'Paramètres', 'sidebar.admin': 'Administration', // User menu 'usermenu.language': 'Langue', 'usermenu.settings': 'Paramètres', 'usermenu.theme_light': 'Thème clair', 'usermenu.theme_dark': 'Thème sombre', 'usermenu.logout': 'Déconnexion', // Admin panel 'admin.title': 'Administration', 'admin.tab_stats': 'Statistiques', 'admin.tab_users': 'Utilisateurs', 'admin.tab_groups': 'Groupes', 'admin.tab_nodes': 'Nodes', 'admin.tab_logs': 'Journaux', 'admin.col_observed_ip': 'Vu depuis', 'admin.col_hint': 'Adresse annoncée', 'admin.col_last_seen': 'Dernière annonce', 'admin.node_online': 'en ligne', 'admin.node_offline': 'hors ligne', 'admin.no_nodes': 'Aucun node enregistré', 'admin.nodes_hint': '« Vu depuis » est l’adresse d’où l’annonce nous est ' + 'parvenue, sur une requête signée avec la clé du node — c’est celle sur ' + 'laquelle s’appuyer pour répondre à une réquisition. L’adresse annoncée est ' + 'celle que le node croit être la sienne, apprise d’un serveur STUN puis ' + 'transmise ; elle sert à joindre le node et ne prouve rien.', 'admin.tab_blocklist': 'Liste de blocage', // Admin stats 'admin.stat_users': 'Utilisateurs', 'admin.stat_groups': 'Groupes', 'admin.stat_nodes': 'Nodes', 'admin.stat_online': 'Nodes en ligne', // Admin users 'admin.users_search': 'Rechercher un utilisateur...', 'admin.col_username': "Nom d'utilisateur", 'admin.col_role': 'Rôle', 'admin.col_status': 'Statut', 'admin.col_created': 'Création', 'admin.col_actions': 'Actions', 'admin.col_email': 'E-mail', 'admin.col_groups': 'Groupes', 'admin.no_users': 'Aucun utilisateur trouvé', 'admin.btn_suspend': 'Suspendre', 'admin.btn_unsuspend': 'Réactiver', 'admin.btn_details': 'Détails', 'admin.btn_delete': 'Supprimer', 'admin.delete_confirm': 'Supprimer le compte « {user} » ? Cette action est ' + 'irréversible. Les fichiers qu’il a envoyés restent sur les nodes qui les ' + 'hébergent, et chaque node conserve l’identité qu’il a épinglée jusqu’à ce ' + 'que son opérateur la retire. La suspension est l’option réversible.', 'admin.user_detail': "Détails de l'utilisateur", 'admin.btn_close': 'Fermer', 'admin.self_note': '(vous)', // Admin groups 'admin.col_name': 'Nom', 'admin.col_visibility': 'Visibilité', 'admin.col_members': 'Membres', 'admin.no_groups': 'Aucun groupe trouvé', // Admin logs 'admin.col_time': 'Horodatage', 'admin.col_event': 'Événement', 'admin.col_user': 'Utilisateur', 'admin.col_ip': 'IP', 'admin.col_detail': 'Détail', 'admin.filter_all': 'Tous les événements', 'admin.no_logs': 'Aucun journal trouvé', 'admin.btn_load_more': 'Charger plus', // Admin blocklist 'admin.col_hash': 'Empreinte', 'admin.col_reason': 'Motif', 'admin.col_date': 'Date', 'admin.col_added_by': 'Ajoutée par', 'admin.no_blocked': 'Aucune empreinte bloquée', 'admin.add_hash': 'Ajouter une empreinte à la liste de blocage', 'admin.hash_placeholder': 'empreinte blake3 (64 caractères hexadécimaux)', 'admin.reason_placeholder': 'Motif', 'admin.btn_block': 'Bloquer', 'admin.btn_unblock': 'Débloquer', // Notifications // Create group 'create_group.title': 'Créer un groupe', 'create_group.name': 'Nom du groupe', 'create_group.name_placeholder': 'ex. Photos de famille, Documents du projet...', 'create_group.visibility': 'Visibilité', 'create_group.private': 'Privé', 'create_group.private_desc': 'Seuls les membres invités voient les fichiers et y accèdent', 'create_group.public': 'Public', 'create_group.public_desc': 'Tout le monde peut découvrir et parcourir ce groupe', 'create_group.join_policy': "Politique d'adhésion", 'create_group.invite': 'Sur invitation', 'create_group.invite_desc': 'Les membres doivent être invités par un administrateur', 'create_group.open': 'Ouvert (tout le monde peut rejoindre)', 'create_group.open_desc': 'Tout le monde peut rejoindre sans validation', 'create_group.description': 'Description', 'create_group.description_hint': 'De quoi parle ce groupe ? (facultatif)', 'create_group.submit': 'Créer', 'create_group.hint': 'Un groupe a besoin d’un node pour héberger les fichiers. ' + 'Vous pouvez créer le groupe maintenant et connecter un node plus tard.', 'create_group.creating': 'Création...', // Members 'members.col_role': 'Rôle', 'members.group_role': 'Rôle dans le groupe', 'members.admin': 'Administrateur', 'members.group_admin': 'Administrateur du groupe', 'members.owner': 'Propriétaire', 'members.member': 'Membre', 'members.invite_title': 'Inviter un membre', 'members.username_placeholder': "Nom d'utilisateur", 'members.invite_btn': 'Inviter', 'members.invite_needs_pairing': 'Les invitations sont signées avec la clé que ce ' + 'node a épinglée pour votre navigateur : appairez-le ci-dessous avant ' + 'd’inviter qui que ce soit.', 'members.invite_ask_operator': 'Seul l’opérateur du node qui héberge ce groupe ' + 'peut inviter, depuis un navigateur appairé avec lui.', 'members.remove': 'Retirer', 'members.remove_confirm': 'Retirer {user} de ce groupe ? Son compte, ses autres ' + 'groupes et les fichiers qu’il a envoyés ne sont pas affectés.', 'members.remove_hint': 'Retirer quelqu’un lui ôte son adhésion et empêche le node ' + 'de lui remettre la clé du groupe. Cela ne supprime pas son compte, et cela ne ' + 'reprend pas la clé qu’il détient déjà — faites-la tourner sur le node ' + '(meshbay-node gek-init) si cela compte.', 'members.pair_title': 'Appairer ce navigateur avec votre node', 'members.pair_hint': 'Votre node n’accepte les actions d’opérateur — invitations, ' + 'suppression de fichiers — que depuis un navigateur avec lequel il a été ' + 'appairé. Lancez `meshbay-node operator pair` sur le node et saisissez le code ' + 'ici. Le code ne transite jamais par le hub.', 'members.pair_btn': 'Appairer', 'members.pair_success': 'Ce navigateur est désormais appairé avec le node.', 'members.invite_code_ready': 'Code d’invitation pour {user} — transmettez-le-lui ' + 'par le moyen dont vous avez l’habitude. Il ne fonctionne qu’une fois, et ne ' + 'transite jamais par le hub.', 'members.invite_code_hint': 'La personne le saisit la première fois qu’elle ouvre ' + 'ce groupe. Vous n’avez pas besoin d’être en ligne à ce moment-là.', 'transfers.title': 'Transferts', 'transfers.clear': 'Effacer les terminés', 'transfers.cancel': 'Annuler', 'transfers.open': 'Ouvrir', 'transfers.done': 'Terminé', 'transfers.cancelled': 'Annulé', 'transfers.failed': 'Échec', 'group.select': 'Sélectionner', 'group.select_done': 'Terminé', 'group.actions': 'Actions ({n})', 'group.download_n': 'Télécharger ({n})', 'group.download_zip_n': 'Télécharger les dossiers en zip ({n})', 'group.delete_n': 'Supprimer ({n})', 'group.delete_n_confirm': { one: 'Supprimer {n} élément ? {names}', other: 'Supprimer {n} éléments ? {names}', }, 'group.download_zip': { one: 'Télécharger en zip ({n} fichier)', other: 'Télécharger en zip ({n} fichiers)', }, 'group.zip_empty': 'Ce dossier ne contient rien à télécharger.', 'group.zip_no_stream': 'Ce navigateur ne sait pas écrire un téléchargement ' + 'directement sur le disque : {name} ({size}) doit donc être assemblé en mémoire ' + 'au préalable. Sur une archive volumineuse, cela peut échouer. Continuer ?', 'group.rmdir': 'Supprimer le dossier', 'group.rmdir_confirm': 'Supprimer le dossier « {name} » ? Il doit être vide.', 'group.rmdir_not_empty': 'Ce dossier n’est pas vide. Supprimez d’abord ce qu’il ' + 'contient — rien ici ne supprime des fichiers que vous ne voyez pas.', 'group.desc_edit': 'Modifier la description', 'group.desc_add': 'Ajouter une description', 'group.desc_save': 'Enregistrer', 'group.desc_cancel': 'Annuler', 'group.desc_placeholder': 'À quoi sert ce groupe — les membres le voient sur leur ' + 'page d’accueil.', 'group.join_code_title': 'Ce node doit vous reconnaître', 'group.join_code_hint': 'Demandez son code à usage unique à la personne qui vous a ' + 'invité, et saisissez-le ici. Ensuite, ce navigateur est reconnu et la question ' + 'ne vous sera plus posée.', 'group.join_code_btn': 'Rejoindre', 'notif.purge': 'Tout effacer', 'notif.title': 'Notifications', 'notif.empty': 'Aucune notification', 'notif.mark_all_read': 'Tout marquer comme lu', // Sidebar 'sidebar.search': 'Rechercher des fichiers', // Status // Search 'search.title': 'Rechercher des fichiers', 'search.placeholder': 'Rechercher dans tous les groupes...', 'search.no_results': 'Aucun fichier ne correspond à votre recherche.', 'search.synced': 'synchronisé {ago}', 'search.cache_note': 'La recherche s’appuie sur l’état de chaque groupe lors de ' + 'votre dernière visite. Ouvrez un groupe pour mettre ses fichiers à jour ici.', 'search.col_group': 'Groupe', 'search.result_count': { one: '{n} fichier trouvé', other: '{n} fichiers trouvés', }, 'search.hint': 'Recherche les noms de fichiers dans tous les index de groupe en cache.', // Presence, chat paging, leaving a group, the profile page 'presence.online': 'Un node servant ce groupe est en ligne', 'presence.offline': 'Aucun node joignable pour ce groupe', 'presence.unknown': 'Pas encore vérifié', 'chat.load_older': 'Charger {n} messages plus anciens', 'chat.start_of_history': 'Début de la conversation', 'chat.today': 'Aujourd’hui', 'chat.yesterday': 'Hier', 'chat.unread': 'Nouveaux messages', 'chat.jump_latest': 'Aller au plus récent', 'chat.jump_new': 'Nouveaux messages', 'group.leave': 'Quitter le groupe', 'group.leave_confirm': 'Quitter « {name} » ? Vous perdrez l’accès à ses fichiers et à sa discussion. Les fichiers que vous avez envoyés restent sur le node, et celui-ci conserve l’identité qu’il a épinglée pour vous jusqu’à ce que son opérateur la retire.', 'profile.title': 'Profil', 'usermenu.profile': 'Profil', 'create_group.public_is_open': 'N’importe qui peut trouver un groupe public et le rejoindre. Pour choisir qui entre, créez-le en privé.', };