{
  "_meta": {
    "code": "fr",
    "name": "Français",
    "direction": "ltr",
    "author": "STL Gallery Team",
    "version": "1.0.0"
  },
  "alert.new_tag_prompt": "Nom du nouveau tag :",
  "auto_tag.add_category": "Ajouter une catégorie/un tag",
  "auto_tag.applied": "{count} fichiers taggés",
  "auto_tag.apply": "Appliquer",
  "auto_tag.cancel": "Annuler",
  "auto_tag.click_remove": "Cliquer pour retirer",
  "auto_tag.count": "{count} suggestions",
  "auto_tag.error": "Erreur lors du chargement des suggestions.",
  "auto_tag.filter_all": "Tous",
  "auto_tag.loading": "Analyse des fichiers…",
  "auto_tag.no_suggestions": "Aucune suggestion — tous les fichiers sont déjà taggés ou n'ont pas pu être reconnus.",
  "auto_tag.none_selected": "Aucune suggestion sélectionnée.",
  "auto_tag.select_all": "Tous",
  "auto_tag.select_none": "Aucun",
  "auto_tag.selected_label": "sélectionné(s)",
  "auto_tag.sidebar_categories": "Catégories",
  "auto_tag.sidebar_confidence": "Confiance",
  "auto_tag.title": "Auto-Tagging",
  "card.analyze_tooltip": "Analyser",
  "confirm.cancel": "Annuler",
  "confirm.non_mesh_title": "Fichier {ext}",
  "confirm.non_mesh_msg": "STL Gallery ne peut pas afficher ce fichier directement. Voulez-vous l'ouvrir dans le logiciel associé ?",
  "confirm.non_mesh_open": "Ouvrir le logiciel",
  "confirm.delete_category": "Supprimer la catégorie « {name} » ?",
  "confirm.delete_category_full": "Vraiment supprimer la catégorie « {name} » ?\n\nLa catégorie sera retirée de tous les fichiers.",
  "confirm.delete_tag": "Supprimer le tag « {name} » ?",
  "confirm.delete_tag_full": "Vraiment supprimer le tag « {name} » ?\n\nLe tag sera retiré de tous les fichiers.",
  "confirm.remove_btn": "Retirer",
  "confirm.remove_folder": "Retirer le dossier de la bibliothèque ?\n\n{path}\n\nTous les fichiers indexés et les miniatures seront supprimés.",
  "confirm.remove_folder_msg": "{path}\n\nTous les fichiers indexés et les miniatures seront supprimés.",
  "confirm.remove_folder_title": "Retirer le dossier",
  "confirm.remove_subfolder": "Supprimer tous les fichiers du sous-dossier ?\n\n{name}\n\nLes fichiers indexés et les miniatures seront supprimés. Le dossier sera conservé.",
  "confirm.remove_subfolder_msg": "{name}\n\nLes fichiers indexés et les miniatures seront supprimés. Le dossier sera conservé.",
  "confirm.remove_subfolder_title": "Retirer le sous-dossier",
  "confirm.restart_server": "Vraiment redémarrer le serveur ?\n\nLa page se rechargera automatiquement après le redémarrage.",
  "confirm.untag_all_category": "Retirer tous les fichiers de la categorie « {name} » ?\n\nLa categorie sera conservee.",
  "confirm.untag_all_tag": "Retirer tous les fichiers du tag « {name} » ?\n\nLe tag sera conserve.",
  "ctx.auto_tag": "Suggérer un auto-tag",
  "ctx.link_gcode": "Lier un GCode",
  "ctx.link_gcode_reverse": "Lier au modele",
  "gcode.match.detected": "GCode detecte",
  "ctx.categories_header": "CATÉGORIES",
  "ctx.clear_all_categories": "📂 Retirer toutes les categories",
  "ctx.clear_all_tags": "🏷 Retirer tous les tags",
  "ctx.complete_3mf": "📦 3MF complet",
  "ctx.configure_slicer": "⚙️ Configurer le slicer",
  "ctx.delete_file": "🗑 Supprimer",
  "ctx.download": "📥 Télécharger",
  "ctx.find_similar": "Rechercher des similaires",
  "ctx.folder.pin": "Épingler le dossier",
  "ctx.folder.regen_thumbs": "🖼 Régénérer les miniatures",
  "ctx.folder.reindex": "🔄 Réindexer",
  "ctx.folder.remove_files": "🗑 Supprimer les fichiers",
  "ctx.folder.remove_from_list": "🗑 Retirer de la liste",
  "ctx.folder.rescan": "🔄 Réanalyser",
  "ctx.folder.unpin": "Désépingler",
  "ctx.group.open_explorer": "📂 Ouvrir dans le gestionnaire de fichiers",
  "ctx.group.pin": "Épingler le dossier",
  "ctx.group.regen_thumbs": "🖼 Régénérer les miniatures",
  "ctx.group.rescan": "🔄 Réanalyser",
  "ctx.group.unpin": "Désépingler",
  "ctx.mark_seen": "✓ Marquer comme vu",
  "ctx.new_files.mark_all_seen": "✓ Tout marquer comme vu",
  "ctx.new_tag": "+ Nouveau tag...",
  "ctx.open_explorer": "📂 Ouvrir dans l'explorateur",
  "ctx.rating_label": "Évaluation :",
  "ctx.regen_thumb": "🔄 Régénérer la miniature",
  "ctx.remove_favorite": "★ Retirer des favoris",
  "ctx.selection": "🔹 Sélection : {name}",
  "ctx.send_to": "Envoyer à {name}",
  "ctx.send_to_slicer": "🖨 Envoyer au slicer",
  "ctx.set_favorite": "☆ Ajouter aux favoris",
  "ctx.tag_cat.delete": "🗑 Supprimer",
  "ctx.tag_cat.edit": "✏️ Modifier",
  "ctx.tag_cat.regen_thumbs": "🔄 Régénérer les miniatures",
  "ctx.tag_cat.untag_all": "🏷 Retirer tous les fichiers",
  "ctx.tag_cat.keywords_label": "Search terms:",
  "ctx.tag_cat.no_keywords": "No search terms defined",
  "ctx.tag_cat.auto_scan": "🔍 Run auto-scan",
  "ctx.tags_header": "TAGS",
  "dashboard.chart.week_short": "S {nr}",
  "dashboard.dup.duplicate_files": "Fichiers en double ({size} gaspillé)",
  "dashboard.dup.groups": "Groupes de doublons",
  "dashboard.dup.none_found": "Aucun doublon trouvé",
  "dashboard.dup.open_manager": "Ouvrir le gestionnaire de doublons →",
  "dashboard.empty.chartjs_unavailable": "Chart.js non disponible",
  "dashboard.empty.loading": "Chargement…",
  "dashboard.empty.no_categories": "Aucune catégorie attribuée",
  "dashboard.empty.no_prints": "Aucune impression pour le moment",
  "dashboard.empty.no_tags": "Aucun tag disponible",
  "dashboard.empty.no_time_data": "Pas encore de données temporelles",
  "dashboard.fmt.billion": "Md",
  "dashboard.fmt.million": "M",
  "dashboard.fmt.million_short": "M",
  "dashboard.fmt.thousand_short": "K",
  "dashboard.header": "📊 Tableau de bord",
  "dashboard.kpi.favorites": "Favoris",
  "dashboard.kpi.favorites_pct": "Favoris ({pct} %)",
  "dashboard.kpi.files": "Fichiers",
  "dashboard.kpi.format_ratio": "STL / 3MF / OBJ",
  "dashboard.kpi.total_size": "Taille totale",
  "dashboard.kpi.total_triangles": "Total triangles",
  "dashboard.rating.no_files": "Aucun fichier",
  "dashboard.rating.unrated": "{count} fichiers sans évaluation",
  "dashboard.tile.categories": "📂 Catégories",
  "dashboard.tile.duplicates": "🔍 Doublons",
  "dashboard.tile.format_distribution": "🍩 Répartition des formats",
  "dashboard.tile.material_ranking": "🧵 Classement des matériaux",
  "dashboard.tile.most_printed": "🏆 Top 5 des plus imprimés",
  "dashboard.tile.print_timeline": "🖨️ Chronologie d'impression (mois)",
  "dashboard.tile.ratings": "⭐ Évaluations",
  "dashboard.tile.recently_added": "📈 Ajoutés récemment (semaines)",
  "dashboard.tile.tag_cloud": "🏷️ Nuage de tags",
  "dashboard.tile.triangle_details": "🔺 Détails des triangles",
  "dashboard.tile.triangle_histogram": "📊 Histogramme des triangles",
  "dashboard.tri.average": "Moyenne",
  "dashboard.tri.fewest": "Minimum",
  "dashboard.tri.most": "Maximum",
  "dashboard.tri.total": "Total",
  "error.folder_not_found": "Dossier parent introuvable",
  "error.generic": "Erreur : {message}",
  "error.http": "Erreur {status}",
  "error.scan_failed": "Erreur d'indexation : {status}",
  "error.slicer_failed": "Échec du lancement du slicer",
  "error.subfolder_scan_failed": "Erreur d'analyse : {status}",
  "error.tag_exists": "Le tag existe déjà",
  "format.object_single": "Objet {index}",
  "format.objects": "Objets",
  "gallery.all_objects": "Tous ({count} objets)",
  "gallery.corrupt_file": "⚠ corrompu",
  "gallery.empty": "Aucun fichier STL trouvé.",
  "gallery.file_count": "{count} fichiers",
  "gallery.indexing": "Indexation...",
  "gallery.jump_to_singles": "⬇ Aller aux fichiers individuels",
  "gallery.loading": "Chargement des fichiers...",
  "gallery.mesh_warning": "Problèmes de maillage détectés",
  "gallery.new_ribbon": "NOUVEAU",
  "gallery.object_nav_next": "Objet suivant",
  "gallery.object_nav_prev": "Objet précédent",
  "gallery.plugin.open_app": "Ouvrir {app}",
  "gallery.plugin.open_slicer": "Ouvrir le Slicer",
  "gallery.scroll_top": "Retour en haut",
  "gcode_archive.details": "Détails",
  "gcode_archive.empty": "Aucune impression archivée pour le moment. Envoyez un fichier au slicer et téléversez le .gcode.3mf dans le journal d'impression.",
  "gcode_archive.reprint": "🔄 Réimprimer",
  "gcode_archive.title": "🖨 Réimpressions",
  "header.dashboard": "Tableau de bord",
  "header.debug_monitor": "Moniteur de débogage",
  "header.file_count": "{count} fichiers",
  "header.home": "Retour à l'accueil",
  "header.refresh": "Actualiser",
  "header.rescan": "Réanalyser",
  "header.settings": "Paramètres",
  "header.theme_toggle": "Changer de thème",
  "header.to_gallery": "Aller à la galerie",
  "modal.add_category.edit_title": "✏️ Modifier la catégorie",
  "modal.add_category.icon_btn_title": "Choisir une icône",
  "modal.add_category.name_placeholder": "Nom de la catégorie",
  "modal.add_category.no_results": "Aucun résultat",
  "modal.add_category.search_placeholder": "Rechercher...",
  "modal.add_category.tab_emoji": "😀 Emoji",
  "modal.add_category.tab_tech": "🔧 Technique",
  "modal.add_category.title": "➕ Ajouter une catégorie",
  "modal.add_category.iconify_search_placeholder": "Search icons...",
  "modal.add_category.iconify_searching": "Searching...",
  "modal.add_category.iconify_offline": "No internet connection",
  "modal.add_category.iconify_error": "Search failed",
  "modal.add_category.emoji_fallback_link": "Choose emoji →",
  "modal.add_category.iconify_back_link": "← Online search",
  "modal.add_category.keywords_label": "Search terms (for auto-scan)",
  "modal.add_category.keyword_placeholder": "Enter search term...",
  "modal.add_category.keyword_hint": "Enter to add · × to remove",
  "modal.add_tag.edit_title": "🏷 Renommer le tag",
  "modal.add_tag.name_placeholder": "Nom du tag",
  "modal.add_tag.title": "🏷 Ajouter un tag",
  "modal.delete_confirm.cancel": "Annuler",
  "modal.delete_confirm.checkbox": "Ne plus afficher ce message",
  "modal.delete_confirm.delete": "Supprimer",
  "modal.delete_confirm.msg": "Voulez-vous déplacer ce fichier vers la corbeille ?",
  "modal.delete_confirm.title": "Supprimer le fichier",
  "modal.duplicate_finder.all_cleaned_msg": "Bien joué ! 🎉",
  "modal.duplicate_finder.all_cleaned_title": "Tous les doublons ont été nettoyés !",
  "modal.duplicate_finder.duplicate_files": "fichiers en double",
  "modal.duplicate_finder.error": "Erreur lors du chargement des doublons.",
  "modal.duplicate_finder.groups": "Groupes",
  "modal.duplicate_finder.loading": "Recherche de doublons...",
  "modal.duplicate_finder.move_to_trash": "Mettre à la corbeille",
  "modal.duplicate_finder.no_duplicates_msg": "Tous les fichiers de votre bibliothèque sont uniques ! 🎉",
  "modal.duplicate_finder.no_duplicates_title": "Aucun doublon trouvé",
  "modal.duplicate_finder.refresh": "🔄 Actualiser",
  "modal.duplicate_finder.refresh_title": "Vérifier à nouveau",
  "modal.duplicate_finder.sort_count": "Nombre",
  "modal.duplicate_finder.sort_date": "Date (plus ancien)",
  "modal.duplicate_finder.sort_name": "Nom",
  "modal.duplicate_finder.sort_size": "Taille",
  "modal.duplicate_finder.title": "🔍 Rechercher les doublons",
  "modal.duplicate_finder.trash_btn": "🗑️ Corbeille",
  "modal.duplicate_finder.wasted_space": "~ {size} d'espace gaspillé",
  "modal.duplicate_trash.confirm_empty": "⚠️ Supprimer définitivement tous les fichiers de la corbeille ?",
  "modal.duplicate_trash.delete_all": "🗑️ Tout supprimer définitivement",
  "modal.duplicate_trash.delete_permanent": "Supprimer définitivement",
  "modal.duplicate_trash.empty_msg": "Aucun doublon supprimé trouvé.",
  "modal.duplicate_trash.empty_title": "La corbeille est vide",
  "modal.duplicate_trash.error": "Erreur lors du chargement.",
  "modal.duplicate_trash.files": "Fichiers",
  "modal.duplicate_trash.loading": "Chargement...",
  "modal.duplicate_trash.moved_at": "Déplacé : {date} · {size}",
  "modal.duplicate_trash.restore": "Restaurer",
  "modal.duplicate_trash.space_used": "{size} utilisé(s)",
  "modal.duplicate_trash.title": "🗑️ Doublons supprimés",
  "modal.file_browser.add_btn": "Ajouter",
  "modal.file_browser.add_count_btn": "Ajouter {count} dossiers",
  "modal.file_browser.already_added": "✓ Ajouté",
  "modal.file_browser.breadcrumb_root": "Ordinateur",
  "modal.file_browser.browse_label": "Parcourir les dossiers",
  "modal.file_browser.loading": "Chargement...",
  "modal.file_browser.no_subfolders": "Aucun sous-dossier",
  "modal.file_browser.path_placeholder": "Saisir un chemin ou naviguer ci-dessus...",
  "modal.file_browser.quick_access": "Accès rapide",
  "modal.file_browser.title": "📁 Sélectionner un dossier",
  "modal.manual_path.description": "Saisissez le chemin complet vers votre dossier STL.<br>Il peut aussi s'agir d'un lecteur réseau.",
  "modal.manual_path.placeholder": "/home/user/Modeles-3D ou chemin réseau",
  "modal.manual_path.title": "⌨ Saisir un chemin",
  "modal.missing_folder.checking": "Vérification...",
  "modal.missing_folder.ignore": "Ignorer",
  "modal.missing_folder.info": "Les fichiers indexés et les miniatures sont toujours disponibles, mais le dossier n'existe plus ou a été déplacé.",
  "modal.missing_folder.intro": "Le dossier suivant est introuvable :",
  "modal.missing_folder.not_found_again": "Le dossier est toujours introuvable. Veuillez vérifier que le chemin est correct et accessible.",
  "modal.missing_folder.remove_files": "🗑 Nettoyer les fichiers",
  "modal.missing_folder.remove_folder": "🗑 Supprimer le dossier",
  "modal.missing_folder.removing": "Suppression...",
  "modal.missing_folder.retry": "🔄 Réessayer",
  "modal.missing_folder.scan_error": "Erreur d'analyse : HTTP {status}",
  "modal.missing_folder.title": "⚠️ Dossier introuvable",
  "modal.scan_wait.discovering": "{count} fichiers trouvés…",
  "modal.scan_wait.progress": "{done} / {total} fichiers traités",
  "modal.scan_wait.text": "L'analyse initiale peut prendre un certain temps pour les grands dossiers. Les fichiers apparaîtront progressivement dans la galerie.",
  "modal.scan_wait.title": "⏳ Analyse en cours",
  "modal.server_down.close": "Fermer la fenêtre",
  "modal.server_down.reload": "Recharger la page",
  "modal.server_down.text": "La connexion au serveur a été perdue. Le serveur (server.py) ne fonctionne plus.",
  "modal.server_down.title": "Serveur inaccessible",
  "modal.settings.title": "⚙️ Paramètres",
  "modal.trash.confirm_empty": "⚠️ Supprimer définitivement tous les fichiers de la corbeille ?",
  "modal.trash.delete_all": "🗑 Tout supprimer définitivement",
  "modal.trash.delete_permanent": "Supprimer définitivement",
  "modal.trash.empty_msg": "Aucun fichier supprimé.",
  "modal.trash.empty_title": "La corbeille est vide",
  "modal.trash.error": "Erreur lors du chargement.",
  "modal.trash.files": "fichiers",
  "modal.trash.loading": "Chargement...",
  "modal.trash.moved_at": "Supprimé : {date} · {size}",
  "modal.trash.restore": "Restaurer",
  "modal.trash.space_used": "{size} utilisé(s)",
  "modal.trash.title": "🗑 Corbeille",
  "print.default_title": "Enregistrer une impression",
  "print.discard": "Annuler",
  "print.history_title": "Historique d'impression",
  "print.hours_ago": "il y a {n} h",
  "print.just_now": "à l'instant",
  "print.minutes_ago": "il y a {n} min",
  "print.more_pending": "impressions en attente",
  "print.prints": "impressions",
  "print_overlay.bed": "Plateau",
  "print_overlay.brim": "Bordure",
  "print_overlay.btn.discard": "Ne pas enregistrer",
  "print_overlay.btn.later": "Plus tard",
  "print_overlay.btn.reprint": "🔄 Réimprimer",
  "print_overlay.btn.save": "💾 Archiver le GCode et enregistrer",
  "print_overlay.btn.update": "💾 Mettre à jour",
  "print_overlay.fil_color": "Couleur",
  "print_overlay.fil_cost": "Coût",
  "print_overlay.fil_diameter": "Diamètre",
  "print_overlay.fil_profile": "Profil",
  "print_overlay.fil_type": "Type",
  "print_overlay.fil_used": "Utilisé",
  "print_overlay.fil_weight": "Poids",
  "print_overlay.first_layer": "Première couche",
  "print_overlay.gcode_version": "Version du GCode",
  "print_overlay.gcode_version_label": "v{version}",
  "print_overlay.gcode_version_latest": "(actuelle)",
  "print_overlay.gcode_version_legacy": "Legacy",
  "print_overlay.infill": "Remplissage",
  "print_overlay.inner_wall": "Paroi intérieure",
  "print_overlay.ironing": "Repassage",
  "print_overlay.kpi.height": "Hauteur",
  "print_overlay.kpi.layers": "Couches",
  "print_overlay.kpi.length": "Filament",
  "print_overlay.kpi.time": "Durée d'impression",
  "print_overlay.kpi.weight": "Poids",
  "print_overlay.layer_height": "Hauteur de couche",
  "print_overlay.notes_placeholder": "Notes d'impression... (qualité, problèmes, post-traitement, améliorations)",
  "print_overlay.nozzle": "Buse",
  "print_overlay.nozzle_temp": "Température buse",
  "print_overlay.outer_wall": "Paroi extérieure",
  "print_overlay.print_profile": "Profil d'impression",
  "print_overlay.printer": "Imprimante",
  "print_overlay.saved": "Impression enregistrée",
  "print_overlay.status.cancelled": "⏹ Annulé",
  "print_overlay.status.failed": "❌ Échoué",
  "print_overlay.status.printed": "✅ Impression réussie",
  "print_overlay.support": "Supports",
  "print_overlay.tile.filament": "Filament",
  "print_overlay.tile.log": "Journal d'impression",
  "print_overlay.tile.plate": "Aperçu du plateau",
  "print_overlay.tile.platform": "Plateau et matériel",
  "print_overlay.tile.settings": "Paramètres d'impression",
  "print_overlay.tile.speed": "Vitesse",
  "print_overlay.title": "🖨️ Enregistrer une impression",
  "print_overlay.top_bottom": "Dessus / Dessous",
  "print_overlay.upload_hint": "Déposez un .gcode.3mf ici<br>ou cliquez pour téléverser",
  "print_overlay.uploaded": "GCode analysé et archivé",
  "print_overlay.uploading": "Téléversement du GCode...",
  "print_overlay.walls": "Parois",
  "print_popup.dismiss": "Plus tard",
  "print_popup.hours_placeholder": "Heures",
  "print_popup.hours_unit": "h",
  "print_popup.material_placeholder": "Matériau (PLA, PETG...)",
  "print_popup.minutes_placeholder": "Min",
  "print_popup.minutes_unit": "m",
  "print_popup.notes_placeholder": "Notes d'impression...",
  "print_popup.save": "Enregistrer",
  "print_popup.saving": "Enregistrement...",
  "print_popup.status.cancelled": "⏹ Annulé",
  "print_popup.status.failed": "❌ Échoué",
  "print_popup.status.printed": "✅ Imprimé",
  "print_popup.title": "🖨 Imprimé ?",
  "renderer_warn.dismiss": "✕ Compris",
  "renderer_warn.message": "L'indexation est environ 20 à 100 fois plus lente sans <code>stl_thumb</code>. Veuillez exécuter <code>build.bat</code> (Windows) ou <code>build.sh</code> (Linux) et redémarrer le serveur.",
  "restart.failed": "Le serveur ne répond pas. Veuillez le redémarrer manuellement.",
  "restart.reconnected": "Le serveur est de retour ! Rechargement de la page…",
  "restart.title": "Le serveur redémarre…",
  "restart.waiting": "En attente du serveur…",
  "restart.waiting_count": "En attente du serveur… ({seconds}s)",
  "scan.complete_notification": "Analyse terminée !",
  "scan.eta_calculating": "Calcul de l'ETA…",
  "scan.loading_thumbnails": "Chargement des miniatures...",
  "scan.phase_discovery": "Recherche de fichiers...",
  "scan.status": "Indexation : {file} ({done}/{total})",
  "scan.status_queue": "Indexation : {file} ({done}/{total}) (Dossier {queue_done}/{queue_total})",
  "scan.thumbnail_progress": "Miniatures : {done}/{total}",
  "settings.auto_tag.auto_run_none": "Aucune modification effectuee",
  "settings.auto_tag.auto_run_result": "{count} fichiers ont recu un AutoTag",
  "settings.auto_tag.cleanup_result": "{count} fichiers retires de la categorie",
  "settings.auto_tag.keywords_desc": "Definissez des mots-cles par categorie. Confirmer avec Enter, × pour supprimer, double-clic pour modifier. Les fichiers contenant ces termes dans leur nom ou chemin seront automatiquement assignes.",
  "settings.auto_tag.keywords_placeholder": "p.ex. gear, bracket, mount...",
  "settings.auto_tag.keywords_remove": "Supprimer",
  "settings.auto_tag.keywords_save": "Enregistrer les mots-cles",
  "settings.auto_tag.keywords_saved": "Mots-cles enregistres",
  "settings.auto_tag.keywords_title": "Correspondance de mots-cles",
  "settings.auto_tag.overwrite": "Inclure les fichiers déjà taggés",
  "settings.auto_tag.run": "Lancer maintenant",
  "settings.auto_tag.suggestions_add": "Attribuer a une categorie",
  "settings.auto_tag.suggestions_desc": "Termes frequents dans votre bibliotheque. Cliquez sur + pour attribuer un mot a une categorie.",
  "settings.auto_tag.suggestions_empty": "Aucune suggestion trouvee",
  "settings.auto_tag.suggestions_loading": "Chargement...",
  "settings.auto_tag.suggestions_title": "Suggestions a partir des noms de fichiers",
  "settings.auto_tag.title": "Auto-Tagging",
  "settings.btn.cancel": "Annuler",
  "settings.btn.save": "Enregistrer",
  "settings.colors.badge_3mf": "Badge 3MF",
  "settings.colors.badge_obj": "Badge OBJ",
  "settings.colors.badge_stl": "Badge STL",
  "settings.colors.model_dark": "Modèle (Sombre)",
  "settings.colors.model_light": "Modèle (Clair)",
  "settings.colors.title": "🎨 Couleurs",
  "settings.controls.invert_pan_h": "Inverser déplacement H",
  "settings.controls.invert_pan_v": "Inverser déplacement V",
  "settings.controls.invert_rot_h": "Inverser rotation H",
  "settings.controls.invert_rot_v": "Inverser rotation V",
  "settings.controls.title": "🔄 Contrôles de la visionneuse 3D",
  "settings.delete.no_confirm_hint": "Déplacer les fichiers directement à la corbeille sans boîte de dialogue",
  "settings.delete.no_confirm_label": "Supprimer sans confirmation",
  "settings.delete.title": "🗑 Suppression de fichiers",
  "settings.delete.view_trash_btn": "📂 Voir la corbeille",
  "settings.dup_trash.description": "Les doublons déplacés ici peuvent être restaurés ou supprimés définitivement.",
  "settings.dup_trash.title": "🗑️ Corbeille des doublons",
  "settings.dup_trash.view_btn": "📂 Voir les doublons supprimés",
  "settings.gallery.default_sort.desc": "Critère de tri au lancement de la galerie",
  "settings.gallery.group_default": "Regrouper automatiquement les objets",
  "settings.gallery.default_sort.label": "Tri par défaut",
  "settings.gallery.default_sort_order.date.asc": "Plus ancien d'abord",
  "settings.gallery.default_sort_order.date.desc": "Plus récent d'abord",
  "settings.gallery.default_sort_order.label": "Ordre de tri",
  "settings.gallery.default_sort_order.name.asc": "A → Z",
  "settings.gallery.default_sort_order.name.desc": "Z → A",
  "settings.gallery.default_sort_order.rating.asc": "Note la plus basse d'abord",
  "settings.gallery.default_sort_order.rating.desc": "Note la plus haute d'abord",
  "settings.gallery.default_sort_order.size.asc": "Plus petit d'abord",
  "settings.gallery.default_sort_order.size.desc": "Plus grand d'abord",
  "settings.gallery.default_sort_order.triangles.asc": "Moins de triangles d'abord",
  "settings.gallery.default_sort_order.triangles.desc": "Plus de triangles d'abord",
  "settings.gallery.title": "🖼 Galerie et affichage",
  "settings.gallery.ui_scale": "Taille de l'interface",
  "settings.gallery.ui_scale.large": "Grand",
  "settings.gallery.ui_scale.medium": "Moyen",
  "settings.gallery.ui_scale.small": "Petit",
  "settings.gallery.ui_scale.standard": "Standard",
  "settings.gallery.ui_scale.xlarge": "Très grand",
  "settings.info.auto_tag_overwrite": "Lorsque activé, les tags existants sont remplacés par ceux générés automatiquement. Sinon, seuls les nouveaux tags sont ajoutés.",
  "settings.info.badge_color": "Couleur du badge de format de fichier dans l'aperçu de la galerie.",
  "settings.info.bed_preset": "Sélectionne un plateau d'impression préconfiguré avec les dimensions correspondant à votre imprimante.",
  "settings.info.bed_toggle": "Affiche un plateau d'impression à l'échelle sous le modèle 3D dans la visionneuse.",
  "settings.info.debug": "Ouvre un moniteur en direct avec les journaux du scanner, du serveur et du watcher dans le navigateur.",
  "settings.info.default_sort": "Définit le tri par défaut des fichiers dans la galerie.",
  "settings.info.default_sort_order": "Ordre de tri croissant ou décroissant.",
  "settings.info.delete_no_confirm": "Les fichiers sont déplacés directement à la corbeille sans boîte de dialogue de confirmation.",
  "settings.info.full_3mf": "Analyse immédiatement tous les fichiers 3MF au lieu du chargement différé. Ralentit considérablement l'analyse.",
  "settings.info.hidden_folders": "Les dossiers commençant par un point ou un tiret bas sont ignorés lors de l'analyse.",
  "settings.info.invert_pan_h": "Inverse le sens de déplacement horizontal dans la visionneuse 3D.",
  "settings.info.invert_pan_v": "Inverse le sens de déplacement vertical dans la visionneuse 3D.",
  "settings.info.invert_rot_h": "Inverse le sens de rotation horizontale dans la visionneuse 3D.",
  "settings.info.invert_rot_v": "Inverse le sens de rotation verticale dans la visionneuse 3D.",
  "settings.info.language": "Change la langue de toute l'interface. « Auto » détecte la langue du navigateur.",
  "settings.info.model_dark": "Couleur du modèle 3D dans la visionneuse avec le thème sombre.",
  "settings.info.model_light": "Couleur du modèle 3D dans la visionneuse avec le thème clair.",
  "settings.info.print_delay": "Après l'envoi au slicer, une fenêtre de journal d'impression apparaît après ce délai.",
  "settings.info.group_default": "Lorsqu'activé, les fichiers sont automatiquement regroupés par dossier à chaque changement de vue. Le bouton de regroupement dans la barre d'outils peut toujours être basculé temporairement.",
  "settings.info.ratings": "Active le système d'évaluation à 5 étoiles dans la galerie et la visionneuse.",
  "settings.info.ui_scale": "Agrandit ou réduit tous les éléments de l'interface (cartes, texte, boutons).",
  "settings.info.watcher_enabled": "Surveille automatiquement les dossiers de la bibliothèque pour détecter les fichiers nouveaux, modifiés ou supprimés.",
  "settings.info.watcher_interval": "Intervalle entre les vérifications. Des intervalles plus courts détectent les changements plus vite mais consomment plus de ressources.",
  "settings.info.watcher_notify": "Affiche une notification du navigateur lorsque de nouveaux fichiers sont trouvés lors de l'analyse automatique.",
  "settings.info.workers": "Nombre de processus parallèles pour la génération de miniatures. Plus de workers = analyse plus rapide, mais utilisation CPU plus élevée.",
  "settings.language.auto": "Auto (Navigateur)",
  "settings.language.desc": "Détection automatique du navigateur ou choix manuel",
  "settings.language.label": "🌐 Langue",
  "settings.performance.debug_hint": "Consoles en direct pour le scanner, le serveur et le watcher dans le navigateur",
  "settings.performance.debug_label": "Moniteur de débogage",
  "settings.performance.expert_badge": "EXPERT",
  "settings.performance.full_3mf_hint": "⚠ Ralentit considérablement l'analyse ! Analyse immédiatement tous les fichiers 3MF au lieu du chargement différé. Utile pour la détection de similitudes.",
  "settings.performance.full_3mf_label": "Analyse complète des 3MF",
  "settings.performance.restart_btn": "⟳ Redémarrer le serveur",
  "settings.performance.restart_hint": "Uniquement nécessaire en cas d'instabilité",
  "settings.performance.title": "⚡ Paramètres avancés de performance",
  "settings.performance.warning_msg": "Des paramètres incorrects peuvent fortement dégrader les performances.",
  "settings.performance.warning_title": "Réservé aux utilisateurs expérimentés !",
  "settings.performance.workers_hint": "Nombre de processus C parallèles lors de l'analyse (1–4)",
  "settings.performance.workers_label": "Workers d'analyse",
  "settings.scanner.exclude_add": "Ajouter un dossier",
  "settings.scanner.exclude_empty": "Aucun dossier exclu",
  "settings.scanner.exclude_hint": "Ces dossiers seront ignorés lors de l'analyse et de la surveillance des fichiers.",
  "settings.scanner.exclude_manage": "Gérer les dossiers",
  "settings.scanner.exclude_modal_done": "Terminé",
  "settings.scanner.exclude_modal_title": "Exclure des dossiers",
  "settings.scanner.exclude_remove_title": "Cliquer pour retirer",
  "settings.scanner.exclude_title": "Dossiers exclus",
  "settings.shortcut.create_btn": "Créer un raccourci",
  "settings.shortcut.description": "Crée un raccourci sur le bureau pour lancer STL Gallery directement.",
  "settings.shortcut.title": "Raccourci bureau",
  "settings.sidebar.add_new": "+ Nouveau",
  "settings.sidebar.click_to_rename": "Cliquer pour renommer",
  "settings.sidebar.edit_label": "Modifier",
  "settings.sidebar.edit_title": "Modifier (nom et icône)",
  "settings.sidebar.manage_categories": "📁 Gérer les catégories",
  "settings.sidebar.manage_tags": "🏷 Gérer les tags",
  "settings.sidebar.no_categories": "Aucune catégorie disponible",
  "settings.sidebar.no_tags": "Aucun tag disponible",
  "settings.sidebar.ratings_hint": "Afficher les étoiles dans la galerie et la visionneuse",
  "settings.sidebar.ratings_label": "⭐ Système d'évaluation",
  "settings.sidebar.title": "📋 Barre latérale et fonctionnalités",
  "settings.slicer.add_btn": "+ Ajouter un slicer",
  "settings.slicer.all_added": "Tous les slicers détectés sont déjà ajoutés ✓",
  "settings.slicer.args_hint": "Arguments : <code>{file}</code> sera remplacé par le chemin du fichier STL",
  "settings.slicer.count": "{count} slicers configurés",
  "settings.slicer.delete_title": "Supprimer",
  "settings.slicer.detect_btn": "🔍 Détecter les slicers",
  "settings.slicer.detect_error": "Erreur de détection",
  "settings.slicer.detecting": "🔍 Recherche...",
  "settings.slicer.name_placeholder": "Nom (ex. BambuStudio)",
  "settings.slicer.none_found": "Aucun slicer trouvé. Veuillez ajouter manuellement.",
  "settings.slicer.path_placeholder": "Chemin vers le .exe",
  "settings.slicer.title": "🖨 Configuration du Slicer",
  "settings.thumbnails.hidden_folders": "📂 Ignorer les dossiers cachés",
  "settings.thumbnails.hidden_folders_hint": "Ignorer les dossiers avec préfixe . ou _",
  "settings.thumbnails.scan_hint": "La modification prend effet lors de la prochaine analyse. Il peut être nécessaire de régénérer les miniatures.",
  "settings.thumbnails.title": "📷 Miniatures et scanner",
  "settings.ui_scale.label": "Taille de l'interface",
  "settings.viewer.bed_preset": "Préréglage imprimante",
  "settings.viewer.bed_preset_pick": "— Choisir une imprimante —",
  "settings.viewer.bed_title": "Plateau d'impression",
  "settings.viewer.bed_toggle": "Afficher le plateau dans la visionneuse",
  "settings.viewer.bed_x": "Largeur (X) mm",
  "settings.viewer.bed_y": "Profondeur (Y) mm",
  "settings.viewer.bed_z": "Hauteur (Z) mm",
  "settings.watcher.enabled_hint": "Détection automatique des fichiers nouveaux/modifiés",
  "settings.watcher.enabled_label": "Surveiller les dossiers",
  "settings.watcher.interval.1m": "1 minute",
  "settings.watcher.interval.30s": "30 secondes",
  "settings.watcher.interval.5m": "5 minutes",
  "settings.watcher.interval.5s": "5 secondes",
  "settings.watcher.interval_hint": "Fréquence de vérification du watcher",
  "settings.watcher.interval_label": "Intervalle d'analyse automatique",
  "settings.watcher.notify_hint": "Notification du navigateur à la fin de l'analyse",
  "settings.watcher.notify_label": "🔔 Notification de bureau",
  "settings.watcher.print_delay_label": "Délai du popup (impression)",
  "settings.watcher.print_delay_unit": "Min",
  "settings.gcode_watch.title": "Surveillance GCode",
  "settings.gcode_watch.enabled": "Détecter automatiquement les fichiers GCode",
  "settings.gcode_watch.folders_label": "Dossiers surveillés",
  "settings.gcode_watch.default_tag": "Standard",
  "settings.gcode_watch.add_folder": "+ Ajouter un dossier",
  "gcode.toast.detected": "GCode détecté",
  "gcode.toast.pending_match": "File d'attente",
  "gcode.toast.library_match": "correspond à",
  "gcode.toast.no_match": "Aucun fichier correspondant trouvé",
  "gcode.toast.import_button": "Importer",
  "gcode.toast.ignore_button": "Ignorer",
  "gcode.toast.assign_button": "Attribuer manuellement",
  "gcode.toast.import_success": "GCode importé",
  "gcode.toast.import_error": "Échec de l'importation GCode",
  "gcode.toast.converting_stl": "STL converti",
  "gcode.match.title": "GCode détecté",
  "gcode.match.target": "Fichier cible",
  "gcode.match.confirm": "Lier",
  "gcode.match.cancel": "Annuler",
  "gcode.match.only_3mf_tooltip": "Seuls les modèles 3MF peuvent intégrer le GCode — enregistrer en 3MF dans le slicer",
  "gcode.picker.title": "Attribuer le fichier",
  "gcode.picker.search_placeholder": "Rechercher un nom de fichier...",
  "gcode.link.title": "Associer GCode",
  "gcode.link.default_folders": "Dossiers par défaut",
  "gcode.link.folder": "Dossier",
  "gcode.link.no_gcode": "Aucun fichier GCode trouvé",
  "gcode.link.importing": "Import du GCode en cours...",
  "gcode.link.search_ph": "Rechercher…",
  "gcode.link.suggestions": "Suggestions",
  "gcode.link.all": "Tous (plus récents d'abord)",
  "gcode.link.count": "{n} entrées",
  "gcode.link.type_gcode": "GCODE",
  "gcode.link.type_gcode3mf": "GCODE·3MF",
  "gcode.link.type_3mf": "3MF",
  "gcode.link.title_reverse": "Associer modèle",
  "gcode.link.empty_hint_reverse": "Aucun fichier 3MF dans la bibliothèque.",
  "gcode.link.empty_hint": "Aucun fichier GCode indexé. Placez des GCodes dans un dossier de bibliothèque ou utilisez 'Depuis un fichier…'",
  "gcode.link.no_search_match": "Aucun résultat",
  "gcode.link.delete_source": "Déplacer les fichiers originaux vers la corbeille",
  "gcode.link.browse_fallback": "Depuis un fichier…",
  "gcode.link.browse_title": "Sélectionner un fichier GCode",
  "gcode.link.back": "Retour à la bibliothèque",
  "gcode.link.cancel": "Annuler",
  "gcode.link.submit": "Associer",
  "gcode.link.toast_success": "GCode associé : {name}",
  "gcode.link.toast_error": "Échec de l'association",
  "gcode.link.loading": "Chargement…",
  "gcode.link.today": "aujourd'hui",
  "gcode.link.yesterday": "hier",
  "settings.watcher.title": "👁 Surveillance",
  "sidebar.add_category": "Ajouter une catégorie",
  "sidebar.add_folder": "Ajouter un dossier",
  "sidebar.add_tag": "Ajouter un tag",
  "sidebar.all_files": "Tous les fichiers",
  "sidebar.categories_header": "Catégories",
  "sidebar.favorites": "Favoris",
  "sidebar.filter_header": "Filtres",
  "sidebar.folder_not_found": "Dossier introuvable",
  "sidebar.folders_header": "Dossiers",
  "sidebar.has_gcode": "Avec archive GCode",
  "sidebar.gcode_files": "Fichiers GCode",
  "sidebar.library_header": "Bibliothèque",
  "sidebar.material_header": "Filament",
  "sidebar.new": "Nouveautés",
  "sidebar.new_files": "{count} nouveaux fichiers",
  "sidebar.no_folders": "Aucun dossier",
  "sidebar.no_prints_yet": "Aucune impression enregistrée",
  "sidebar.nozzle_header": "Taille de buse",
  "sidebar.pinned_header": "Dossiers épinglés",
  "sidebar.quick_access": "Accès rapide",
  "sidebar.imported_objects": "Objets importés",
  "sidebar.printed": "Imprimé",
  "sidebar.printed_header": "Imprimé",
  "sidebar.printer_header": "Imprimante",
  "sidebar.rating_header": "Évaluation",
  "sidebar.right_click_delete_cat": "{name} — Clic droit pour supprimer",
  "sidebar.right_click_delete_tag": "{name} — Clic droit pour supprimer",
  "sidebar.tags_header": "Tags",
  "sidebar.toggle_tooltip": "Afficher/masquer la barre latérale",
  "sidebar.trash": "Corbeille",
  "sidebar.unpin_folder": "Désépingler",
  "toast.file_restored": "Fichier restauré",
  "trash.restored_with_meta": "Restauré (+{tags} étiquettes, +{categories} catégories)",
  "toast.file_trashed": "Fichier mis à la corbeille",
  "toast.auto_scan_done": "{count} new files assigned to category '{name}'",
  "toast.auto_scan_added": "{count} ajoutés",
  "toast.auto_scan_removed": "{count} supprimés",
  "toast.auto_scan_error": "Auto-scan failed",
  "toast.regen_thumbs_started": "{count} fichiers en attente de régénération…",
  "toast.scan_complete": "Analyse terminée — prêt à l'emploi",
  "toast.untag_all_done": "Tous les fichiers retires de « {name} »",
  "toolbar.duplicates_btn": "Doublons",
  "toolbar.duplicates_title": "Rechercher les doublons",
  "toolbar.group_btn": "Grouper",
  "toolbar.group_title": "Activer/désactiver le regroupement par dossier",
  "toolbar.search_placeholder": "🔍 Rechercher...",
  "toolbar.sidebar_toggle": "Barre latérale",
  "toolbar.sort.date": "Date",
  "toolbar.sort.name": "Nom",
  "toolbar.sort.rating": "Évaluation",
  "toolbar.sort.size": "Taille",
  "toolbar.sort.triangles": "Triangles",
  "toolbar.sort_reverse": "Inverser l'ordre de tri",
  "toolbar.trash_btn": "Corbeille",
  "toolbar.trash_title": "Corbeille",
  "toolbar.view.detail": "Détail",
  "toolbar.view.grid": "Grille",
  "toolbar.view.list": "Liste",
  "update.cancel_button": "Annuler",
  "update.check_button": "Vérifier les mises à jour",
  "update.confirm_button": "Mettre à jour",
  "update.confirm_message": "Installer la mise à jour vers v{version} ? L'application va redémarrer.",
  "update.confirm_title": "Installer la mise à jour",
  "update.downloading": "Téléchargement de la mise à jour…",
  "update.error": "La mise à jour a échoué. Veuillez télécharger manuellement.",
  "update.preparing": "Préparation de la mise à jour…",
  "update.restarting": "L'application redémarre…",
  "viewer.3mf.image_label": "Image {current}/{total} — Cliquez pour la vue 3D",
  "viewer.3mf.loading_model": "Chargement du modèle 3D…",
  "viewer.3mf.no_objects": "Aucun objet 3D trouvé dans ce fichier",
  "viewer.3mf.object_label": "{name}  ({current} / {total})",
  "viewer.3mf.preview_cached": "Aperçu (depuis le cache)",
  "viewer.3mf.preview_label": "Aperçu — Cliquez › pour la vue 3D",
  "viewer.bed.too_large": "Le modèle dépasse le plateau d'impression !",
  "viewer.btn.open_slicer": "🖨 Ouvrir dans le Slicer ▾",
  "viewer.ctrl.auto_orient": "Orientation automatique (plus grande surface plane en bas)",
  "viewer.ctrl.cycle_orient": "Changer l'orientation",
  "viewer.ctrl.reset_camera": "Réinitialiser la caméra",
  "viewer.ctrl.wireframe": "Fil de fer",
  "viewer.label.notes": "Notes",
  "viewer.label.notes_placeholder": "Notes...",
  "viewer.label.print_history": "Historique d'impression",
  "viewer.loading_metadata": "Chargement…",
  "viewer.mesh.degenerate": "Triangles dégénérés",
  "viewer.mesh.flipped": "Normales inversées",
  "viewer.mesh.non_manifold": "Arêtes non-manifold",
  "viewer.mesh.ok": "Aucun problème",
  "viewer.mesh.title": "Qualité du maillage",
  "viewer.mismatch.warning": "⚠ Incohérence de fichier ! Attendu : △{expected} hash={expected_hash} — Reçu : △{received} hash={received_hash} path={path}",
  "viewer.nav.next_file": "Fichier suivant (→)",
  "viewer.nav.next_object": "Objet suivant",
  "viewer.nav.prev_file": "Fichier précédent (←)",
  "viewer.nav.prev_object": "Objet précédent",
  "viewer.newx.badge.favorite": "🔖 Favori",
  "viewer.newx.badge.printed": "🖨 {count}× imprimé",
  "viewer.newx.btn_delete": "🗑 Supprimer",
  "viewer.newx.btn_explorer": "📁 Explorateur",
  "viewer.newx.btn_favorite": "☆ Favori",
  "viewer.newx.btn_favorite_active": "🔖 Favori",
  "viewer.newx.btn_printed": "✅ Imprimé",
  "viewer.newx.image_label": "Image {index}",
  "viewer.newx.path_hide": "✕ Masquer le chemin",
  "viewer.newx.path_trigger": "📍 Chemin",
  "viewer.newx.rate_label": "Évaluer",
  "viewer.newx.stat.dimensions": "Dimensions (mm)",
  "viewer.newx.stat.format": "Format",
  "viewer.newx.stat.modified": "Modifié",
  "viewer.newx.stat.objects": "Objets",
  "viewer.newx.stat.printed": "Imprimé",
  "viewer.newx.stat.size": "Taille",
  "viewer.newx.stat.triangles": "Triangles",
  "viewer.object_label": "Objet {n}",
  "viewer.similar.loading": "Recherche de similaires…",
  "viewer.similar.none": "Aucun modèle similaire trouvé",
  "viewer.similar.score": "{score} % de similarité",
  "viewer.similar.title": "Modèles similaires",
  "viewer.tag.create_new": "+ Créer « {name} »",
  "viewer.tag.new_placeholder": "Nouveau tag...",
  "viewer.tmf.and_more": "...et {count} de plus",
  "viewer.tmf.author_label": "Auteur :",
  "viewer.tmf.objects_label": "Objets :",
  "viewer.tmf.slicer_profile": "Profil Slicer :",
  "viewer.tmf.title_label": "Titre :",
  "welcome.add_folder": "Ajouter un dossier",
  "welcome.btn.manual_path": "Saisir un chemin",
  "welcome.btn.manual_path_sub": "Lecteurs réseau et chemins spéciaux",
  "welcome.btn.open_folder": "Sélectionner un dossier",
  "welcome.btn.open_folder_sub": "Parcourir le système de fichiers",
  "welcome.btn.open_gallery": "Ouvrir la galerie",
  "welcome.btn.open_gallery_sub": "Parcourir tous les fichiers indexés",
  "welcome.cc.action.add_folder": "Ajouter un dossier",
  "welcome.cc.action.dashboard": "Tableau de bord",
  "welcome.cc.action.duplicates": "Rechercher les doublons",
  "welcome.cc.action.reprint": "Réimpressions",
  "welcome.cc.action.settings": "Paramètres",
  "welcome.cc.action.trash": "Corbeille",
  "welcome.cc.actions_header": "⚡ Actions rapides",
  "welcome.cc.activity_empty": "Aucune activité pour le moment",
  "welcome.cc.activity_header": "🕐 Activité récente",
  "welcome.cc.kpi.files": "Fichiers",
  "welcome.cc.kpi.folders": "Dossiers",
  "welcome.cc.kpi.prints": "Impressions",
  "welcome.cc.kpi.size": "Bibliothèque",
  "welcome.cc.kpi.tmf": "3MF",
  "welcome.cleaning": "Nettoyage en cours...",
  "welcome.folder_missing": "Dossier introuvable",
  "welcome.folder_missing_confirm": "Le dossier « {path} » n'existe plus. Le retirer de la bibliothèque ?",
  "welcome.folder_removed": "Dossier supprimé",
  "welcome.folders_header": "Dossiers de la bibliothèque",
  "welcome.recent_files": "{count} fichiers",
  "welcome.recent_remove": "Supprimer",
  "welcome.shortcut_created": "Raccourci bureau créé",
  "welcome.shortcut_no": "Non merci",
  "welcome.shortcut_prompt": "Créer un raccourci bureau pour STL Gallery ?",
  "welcome.shortcut_yes": "Oui, s'il vous plaît",
  "welcome.status.connecting": "Démarrage du serveur…",
  "welcome.status.database": "Base de données",
  "welcome.status.db_files": "{count} fichiers",
  "welcome.status.db_init": "Initialisée",
  "welcome.status.loading": "Chargement…",
  "welcome.status.renderer": "Moteur de rendu",
  "welcome.status.renderer_c": "stl_thumb (C) ⚡",
  "welcome.status.renderer_python": "Python/Pillow",
  "welcome.status.slicer": "Slicer",
  "welcome.status.slicer_detected": "{count} détecté(s) : {names}",
  "welcome.status.slicer_none": "Aucun détecté",
  "welcome.status.thumbnails": "Miniatures",
  "welcome.status.thumbs_count": "{count} disponible(s)",
  "welcome.subtitle": "Votre bibliothèque de modèles 3D. Gérez visuellement, étiquetez et parcourez des milliers de fichiers STL — ultra rapidement.",
  "welcome.theme_toggle": "Changer de thème",
  "welcome.update_available": "Nouvelle version {version} disponible — télécharger maintenant",
  "welcome.update_current": "La version est à jour",
  "welcome.update_error": "Échec de la vérification des mises à jour",
  "toolbar.select_btn": "Select",
  "toolbar.select_title": "Select files",
  "toast.bulk_cat_success": "{count} models updated",
  "toast.bulk_cat_error": "Error: {message}",
  "bulk.count": "{count} models selected",
  "bulk.count_one": "1 model selected",
  "bulk.categories": "Categories",
  "bulk.select_visible": "Select visible",
  "bulk.clear_selection": "Clear selection",
  "bulk.cancel": "Cancel",
  "bulk.no_selection": "No models selected",
  "bulk.cat_dialog.title": "Assign categories",
  "bulk.cat_dialog.title_n": "Categories for {count} models",
  "bulk.cat_dialog.mode_add": "Add",
  "bulk.cat_dialog.mode_remove": "Remove",
  "bulk.cat_dialog.mode_replace": "Replace",
  "bulk.cat_dialog.clear_all": "Remove all categories",
  "bulk.cat_dialog.clear_confirm": "Really remove all categories from {count} models?",
  "bulk.cat_dialog.apply": "Apply",
  "ctx.bulk_categories": "Assign categories…",
  "ctx.bulk_clear_cats": "Remove all categories",
  "ctx.bulk_deselect": "Deselect all",
  "bulk.favorite": "★ Favorite",
  "bulk.unfavorite": "☆ Unfavorite",
  "toast.bulk_fav_success": "{count} models favorite updated",
  "settings.cat.import_suggestions": "📦 Importer les suggestions",
  "settings.cat.import_suggestions_title": "Importe 30 catégories prédéfinies d'impression 3D avec mots-clés (les existantes sont ignorées)",
  "settings.cat.import_confirm": "{count} sur {total} catégories suggérées seront importées. Continuer ?",
  "settings.cat.import_result": "{count} catégories importées",
  "settings.cat.import_none": "Les {total} catégories suggérées existent déjà",
  "dnd.conflict.title": "Conflits lors du déplacement",
  "dnd.conflict.summary": "{count} sur {total} fichiers existent déjà dans la cible",
  "dnd.conflict.target_label": "dans »{target}«",
  "dnd.conflict.existing": "Existant",
  "dnd.conflict.incoming": "Entrant",
  "dnd.conflict.question": "Comment voulez-vous procéder ?",
  "dnd.conflict.skip": "Ignorer",
  "dnd.conflict.rename": "Garder les deux (renommer)",
  "dnd.cancel": "Annuler",
  "toast.move.success": "{count} fichier(s) déplacé(s) vers '{folder}'",
  "toast.move.partial": "{done} déplacés, {skipped} ignorés",
  "toast.move.trash": "{count} fichier(s) à la corbeille",
  "toast.move.error": "Déplacement échoué : {reason}",
  "toast.move.same_folder": "Fichier(s) déjà dans le dossier cible",
  "toast.move.outside_library": "Cible hors de la bibliothèque enregistrée",
  "toast.move.cancelled": "Annulé",
  "toast.move.db_failed": "{count} fichier(s) déplacés, mais mise à jour de la base de données échouée",
  "toast.move.inconsistent": "Avertissement : état incohérent, voir le journal",
  "toast.select.incomplete": "Sélection incomplète — toutes les pages n'ont pas pu être chargées"
}
