# Menu principal
menu:
  subtitle: 'Tuteur de Frappe en Terminal'
  adaptive_drill: 'Exercice Adaptatif'
  adaptive_drill_desc: 'Mots phonétiques avec déverrouillage adaptatif des touches'
  code_drill: 'Exercice de Code'
  code_drill_desc: 'Entraînez-vous à taper la syntaxe du code'
  passage_drill: 'Exercice de Passage'
  passage_drill_desc: 'Tapez des passages de livres'
  skill_tree: 'Arbre de Compétences'
  skill_tree_desc: 'Voir les branches de progression et lancer des exercices'
  keyboard: 'Clavier'
  keyboard_desc: 'Explorer la disposition du clavier et les statistiques'
  statistics: 'Statistiques'
  statistics_desc: 'Voir vos statistiques de frappe'
  settings: 'Paramètres'
  settings_desc: 'Configurer keydr'
  day_streak: ' | %{days} jours consécutifs'
  key_progress: ' Progression %{unlocked}/%{total} (%{mastered} maîtrisées) | Objectif %{target} WPM%{streak}'
  hint_start: 'Démarrer'
  hint_skill_tree: 'Arbre de Compétences'
  hint_keyboard: 'Clavier'
  hint_stats: 'Statistiques'
  hint_settings: 'Paramètres'
  hint_quit: 'Quitter'

# Écran d'exercice
drill:
  title: ' Exercice '
  mode_adaptive: 'Adaptatif'
  mode_code: 'Code (Non classé)'
  mode_passage: 'Passage (Non classé)'
  focus_char: 'Focus : ''%{ch}'''
  focus_bigram: 'Focus : "%{bigram}"'
  focus_both: 'Focus : ''%{ch}'' + "%{bigram}"'
  header_wpm: 'WPM'
  header_acc: 'Pré'
  header_err: 'Err'
  code_source: ' Source du code '
  passage_source: ' Source du passage '
  footer: '[ESC] Fin  [Backspace] Effacer'
  keys_reenabled: 'Touches réactivées en %{ms}ms'
  hint_end: 'Fin de l''exercice'
  hint_backspace: 'Effacer'

# Tableau de bord / résultat de l'exercice
dashboard:
  title: ' Exercice Terminé '
  results: 'Résultats'
  unranked_note_prefix: '  (Non classé'
  unranked_note_suffix: ' ne compte pas pour l''arbre de compétences)'
  speed: '  Vitesse :   '
  accuracy_label: '  Précision : '
  time_label: '  Temps :     '
  errors_label: '  Erreurs :   '
  correct_detail: '  (%{correct}/%{total} corrects)'
  input_blocked: '  Saisie temporairement bloquée '
  input_blocked_ms: '(%{ms}ms restantes)'
  hint_continue: 'Continuer'
  hint_retry: 'Réessayer'
  hint_menu: 'Menu'
  hint_stats: 'Statistiques'
  hint_delete: 'Supprimer'

# Barre latérale de statistiques (pendant l'exercice)
sidebar:
  title: ' Statistiques '
  wpm: 'WPM : '
  target: 'Objectif : '
  target_wpm: '%{wpm} WPM'
  accuracy: 'Précision : '
  progress: 'Progression : '
  correct: 'Corrects : '
  errors: 'Erreurs : '
  time: 'Temps : '
  last_drill: ' Dernier Exercice '
  vs_avg: '  vs moy : '

# Tableau de bord des statistiques
stats:
  title: ' Statistiques '
  empty: 'Aucun exercice terminé. Commencez à taper !'
  tab_dashboard: '[1] Tableau de bord'
  tab_history: '[2] Historique'
  tab_activity: '[3] Activité'
  tab_accuracy: '[4] Précision'
  tab_timing: '[5] Chronométrage'
  tab_ngrams: '[6] N-grammes'
  hint_back: 'Retour'
  hint_next_tab: 'Onglet suivant'
  hint_switch_tab: 'Changer d''onglet'
  hint_navigate: 'Naviguer'
  hint_page: 'Défiler'
  hint_delete: 'Supprimer'
  summary_title: ' Résumé '
  drills: '  Exercices : '
  avg_wpm: '    WPM Moy : '
  best_wpm: '    Meilleur WPM : '
  accuracy_label: '  Précision : '
  total_time: '    Temps total : '
  wpm_chart_title: ' WPM par Exercice (20 derniers, Objectif : %{target}) '
  accuracy_chart_title: ' Précision %% (50 derniers Exercices) '
  chart_drill: 'Exercice #'
  chart_accuracy_pct: 'Précision %%'
  sessions_title: ' Sessions Récentes '
  session_header: '   #     WPM    Raw    Pré%%    Temps     Date/Heure        Mode       Classé  Partiel'
  session_separator: '  ─────────────────────────────────────────────────────────────────────'
  delete_confirm: 'Supprimer la session #%{idx} ? (y/n)'
  confirm_title: ' Confirmer '
  yes: 'oui'
  no: 'non'
  keyboard_accuracy_title: ' Précision du Clavier %% '
  keyboard_timing_title: ' Chronométrage du Clavier (ms) '
  slowest_keys_title: ' Touches les plus Lentes (ms) '
  fastest_keys_title: ' Touches les plus Rapides (ms) '
  worst_accuracy_title: ' Pire Précision (%%) '
  best_accuracy_title: ' Meilleure Précision (%%) '
  not_enough_data: ' Données insuffisantes'
  streaks_title: ' Séries '
  current_streak: '  Actuelle : '
  best_streak: '    Meilleure : '
  active_days: '    Jours actifs : '
  top_days_none: '  Meilleurs jours : aucun'
  top_days: '  Meilleurs jours : %{days}'
  wpm_label: '  WPM : %{avg}/%{target} (%{pct}%%)'
  acc_label: '  Pré : %{pct}%%'
  keys_label: '  Touches : %{unlocked}/%{total} (%{mastered} maîtrisées)'
  ngram_empty: 'Terminez des exercices adaptatifs pour voir les données de n-grammes'
  ngram_header_speed_narrow: ' Bgrm Vit   Att   Anom%'
  ngram_header_error_narrow: ' Bgrm Err Éch Taux Att Anom%'
  ngram_header_speed: ' Bigramme Vit    Att     Échan.   Anom%'
  ngram_header_error: ' Bigramme Erreurs Échan.   Taux  Att     Anom%'
  focus_title: ' Focus Actif '
  focus_char_label: '  Focus : '
  focus_bigram_value: 'Bigramme %{label}'
  focus_plus: ' + '
  anomaly_error: 'erreur'
  anomaly_speed: 'vitesse'
  focus_detail_both: '  Caractère ''%{ch}'' : touche la plus faible | Bigramme %{label} : anomalie de %{type} %{pct}%%'
  focus_detail_char_only: '  Caractère ''%{ch}'' : touche la plus faible, aucune anomalie de bigramme confirmée'
  focus_detail_bigram_only: '  (anomalie de %{type} : %{pct}%%)'
  focus_empty: '  Terminez des exercices adaptatifs pour voir les données de focus'
  error_anomalies_title: ' Anomalies d''Erreur (%{count}) '
  no_error_anomalies: ' Aucune anomalie d''erreur détectée'
  speed_anomalies_title: ' Anomalies de Vitesse (%{count}) '
  no_speed_anomalies: ' Aucune anomalie de vitesse détectée'
  scope_label_prefix: ' '
  bi_label: ' | Bi : %{count}'
  hes_label: ' | Hés : >%{ms}ms'
  focus_char_value: 'Caractère ''%{ch}'''

# Carte d'activité
heatmap:
  title: ' Activité Quotidienne (Sessions par Jour) '
  jan: 'Jan'
  feb: 'Fév'
  mar: 'Mar'
  apr: 'Avr'
  may: 'Mai'
  jun: 'Jun'
  jul: 'Jul'
  aug: 'Aoû'
  sep: 'Sep'
  oct: 'Oct'
  nov: 'Nov'
  dec: 'Déc'

# Graphique
chart:
  wpm_over_time: ' WPM au fil du temps '
  drill_number: 'Exercice #'

# Paramètres
settings:
  title: ' Paramètres '
  subtitle: 'Utilisez les flèches pour naviguer, Entrée/Droite pour changer, ESC pour sauvegarder et quitter'
  target_wpm: 'WPM Objectif'
  theme: 'Thème'
  word_count: 'Nombre de Mots'
  ui_language: 'Langue de l''Interface'
  dictionary_language: 'Langue du Dictionnaire'
  keyboard_layout: 'Disposition du Clavier'
  code_language: 'Langage de Code'
  code_downloads: 'Téléchargements de Code'
  on: 'Oui'
  off: 'Non'
  code_download_dir: 'Rép. Téléchargement Code'
  snippets_per_repo: 'Extraits par Dépôt'
  unlimited: 'Illimité'
  download_code_now: 'Télécharger Code Maintenant'
  run_downloader: 'Lancer le téléchargeur'
  passage_downloads: 'Téléchargements de Passages'
  passage_download_dir: 'Rép. Téléchargement Passages'
  paragraphs_per_book: 'Paragraphes par Livre'
  whole_book: 'Livre entier'
  download_passages_now: 'Télécharger Passages Maintenant'
  export_path: 'Chemin d''Export'
  export_data: 'Exporter les Données'
  export_now: 'Exporter maintenant'
  import_path: 'Chemin d''Import'
  import_data: 'Importer les Données'
  import_now: 'Importer maintenant'
  hint_save_back: 'Sauvegarder et retour'
  hint_change_value: 'Changer la valeur'
  hint_edit_path: 'Éditer'
  hint_move: 'Déplacer'
  hint_tab_complete: 'Compléter (à la fin)'
  hint_confirm: 'Confirmer'
  hint_cancel: 'Annuler'
  success_title: ' Succès '
  error_title: ' Erreur '
  press_any_key: 'Appuyez sur une touche'
  file_exists_title: ' Fichier Existant '
  file_exists: 'Un fichier existe déjà à ce chemin.'
  overwrite_rename: '[d] Écraser  [r] Renommer  [Esc] Annuler'
  erase_warning: 'Ceci effacera vos données actuelles.'
  export_first: 'Exportez d''abord si vous voulez les conserver.'
  proceed_yn: 'Continuer ? (y/n)'
  confirm_import_title: ' Confirmer l''Importation '

# Écrans de sélection
select:
  dictionary_language_title: ' Sélectionner la Langue du Dictionnaire '
  keyboard_layout_title: ' Sélectionner la Disposition du Clavier '
  code_language_title: ' Sélectionner le Langage de Code '
  passage_source_title: ' Sélectionner la Source de Passages '
  ui_language_title: ' Sélectionner la Langue de l''Interface '
  more_above: '... %{count} de plus au-dessus ...'
  more_below: '... %{count} de plus en-dessous ...'
  current: ' (actuel)'
  disabled: ' (désactivé)'
  enabled_default: ' (activé, par défaut : %{layout})'
  enabled: ' (activé)'
  disabled_blocked: ' (désactivé : bloqué)'
  built_in: ' (intégré)'
  cached: ' (en cache)'
  disabled_download: ' (désactivé : téléchargement requis)'
  download_required: ' (téléchargement requis)'
  hint_navigate: 'Naviguer'
  hint_confirm: 'Confirmer'
  hint_back: 'Retour'
  language_resets_layout: 'Sélectionner une langue réinitialise la disposition à celle par défaut de cette langue.'
  layout_no_language_change: 'Changer la disposition ne change pas la langue du dictionnaire.'
  disabled_network_notice: 'Certaines langues sont désactivées : activez les téléchargements dans intro/paramètres.'
  disabled_sources_notice: 'Certaines sources sont désactivées : activez les téléchargements dans intro/paramètres.'
  passage_all: 'Tous (Intégrés + tous les livres)'
  passage_builtin: 'Passages intégrés uniquement'
  passage_book_prefix: 'Livre : %{title}'

# Progression
progress:
  overall_key_progress: 'Progression Globale des Touches'
  unlocked_mastered: '%{unlocked}/%{total} déverrouillées (%{mastered} maîtrisées)'

# Arbre de compétences
skill_tree:
  title: ' Arbre de Compétences '
  locked: 'Verrouillé'
  unlocked: 'déverrouillé'
  mastered: 'maîtrisé'
  in_progress: 'en cours'
  complete: 'terminé'
  locked_status: 'verrouillé'
  locked_notice: 'Terminez %{count} lettres primaires pour débloquer les branches'
  branches_separator: 'Branches (disponibles après %{count} lettres primaires)'
  unlocked_letters: 'Déverrouillées %{unlocked}/%{total} lettres'
  level: 'Niveau %{current}/%{total}'
  level_zero: 'Niveau 0/%{total}'
  in_focus: '  en focus'
  hint_navigate: 'Naviguer'
  hint_scroll: 'Défiler'
  hint_back: 'Retour'
  hint_unlock: 'Déverrouiller'
  hint_start_drill: 'Lancer l''Exercice'
  unlock_msg_1: 'Une fois déverrouillé, l''exercice adaptatif inclura les touches de cette branche qui sont déverrouillées.'
  unlock_msg_2: 'Si vous voulez vous concentrer sur cette branche, lancez un exercice directement depuis cette branche dans l''Arbre de Compétences.'
  confirm_unlock: 'Déverrouiller %{branch} ?'
  confirm_yn: '[y] Déverrouiller  [n/ESC] Annuler'
  lvl_prefix: 'Niv'
  branch_primary_letters: 'Lettres Primaires'
  branch_capital_letters: 'Lettres Majuscules'
  branch_numbers: 'Chiffres 0-9'
  branch_prose_punctuation: 'Ponctuation de Prose'
  branch_whitespace: 'Espaces Blancs'
  branch_code_symbols: 'Symboles de Code'
  level_frequency_order: 'Ordre de Fréquence'
  level_common_sentence_capitals: 'Majuscules de Phrases Courantes'
  level_name_capitals: 'Majuscules de Noms'
  level_remaining_capitals: 'Majuscules Restantes'
  level_common_digits: 'Chiffres Courants'
  level_all_digits: 'Tous les Chiffres'
  level_essential: 'Essentiel'
  level_common: 'Courant'
  level_expressive: 'Expressif'
  level_enter_return: 'Entrée/Retour'
  level_tab_indent: 'Tab/Indentation'
  level_arithmetic_assignment: 'Arithmétique et Affectation'
  level_grouping: 'Groupement'
  level_logic_reference: 'Logique et Référence'
  level_special: 'Spécial'

# Jalons
milestones:
  unlock_title: ' Touche Déverrouillée ! '
  mastery_title: ' Touche Maîtrisée ! '
  branches_title: ' Nouvelles Branches Disponibles ! '
  branch_complete_title: ' Branche Terminée ! '
  all_unlocked_title: ' Toutes les Touches Déverrouillées ! '
  all_mastered_title: ' Maîtrise Totale du Clavier ! '
  unlocked: 'déverrouillée'
  mastered: 'maîtrisée'
  use_finger: 'Utilisez votre %{finger}'
  hold_right_shift: 'Maintenez Shift Droit (auriculaire droit)'
  hold_left_shift: 'Maintenez Shift Gauche (auriculaire gauche)'
  congratulations_all_letters: 'Félicitations ! Vous avez maîtrisé les %{count} lettres primaires'
  new_branches_available: 'De nouvelles branches de compétences sont disponibles :'
  visit_skill_tree: 'Visitez l''Arbre de Compétences pour déverrouiller une nouvelle branche'
  and_start_training: 'et commencez l''entraînement !'
  open_skill_tree: 'Appuyez sur [t] pour ouvrir l''Arbre de Compétences'
  branch_complete_msg: 'Vous avez terminé la branche %{branch} !'
  all_levels_mastered: 'Les %{count} niveaux sont maîtrisés.'
  all_keys_confident: 'Chaque touche de cette branche est à confiance maximale.'
  all_unlocked_msg: 'Vous avez déverrouillé toutes les touches du clavier !'
  all_unlocked_desc: 'Chaque caractère, symbole et modificateur est disponible dans vos exercices.'
  keep_practicing_mastery: 'Continuez à pratiquer pour atteindre la maîtrise — quand chaque touche atteindra'
  confidence_complete: 'la confiance maximale, vous aurez atteint la maîtrise totale du clavier !'
  all_mastered_msg: 'Félicitations — vous avez atteint la maîtrise totale du clavier !'
  all_mastered_desc: 'Chaque touche du clavier est à confiance maximale.'
  mastery_takes_practice: 'La maîtrise n''est pas une destination — elle nécessite une pratique continue.'
  keep_drilling: 'Continuez à vous entraîner pour garder votre niveau.'
  hint_skill_tree_continue: 'Ouvrir l''Arbre de Compétences  [Autre touche] Continuer'
  hint_any_key: 'Appuyez sur une touche pour continuer'
  input_blocked: 'Saisie temporairement bloquée (%{ms}ms restantes)'
  unlock_msg_1: 'Bon travail ! Continuez à améliorer vos compétences.'
  unlock_msg_2: 'Une touche de plus dans votre arsenal !'
  unlock_msg_3: 'Votre clavier s''agrandit ! Continuez !'
  unlock_msg_4: 'Un pas de plus vers la maîtrise totale !'
  mastery_msg_1: 'Cette touche est à confiance maximale !'
  mastery_msg_2: 'Vous maîtrisez cette touche parfaitement !'
  mastery_msg_3: 'Mémoire musculaire acquise !'
  mastery_msg_4: 'Une touche de plus conquise !'

# Superposition d'introduction à l'exercice adaptatif
adaptive_intro:
  title: ' Bienvenue sur keydr ! '
  how_it_works: 'Comment fonctionnent les exercices adaptatifs :'
  description: 'Vous commencez avec un petit ensemble des lettres les plus courantes déverrouillées. L''exercice ne génère que des mots qui utilisent ces lettres. Au fur et à mesure que vous les tapez avec confiance, de nouvelles touches se déverrouillent progressivement jusqu''à ce que vous ayez maîtrisé le clavier complet.'
  target_wpm_label: 'WPM Objectif :'
  target_wpm_desc: 'Cela influence la vitesse de déverrouillage des touches — des objectifs plus élevés nécessitent une frappe plus rapide. 35 WPM est un bon point de départ si vous n''êtes pas sûr. Vous pouvez toujours modifier cela plus tard dans les paramètres.'
  hint_adjust: 'Régler WPM'
  hint_start: 'Commencer l''exercice'
  hint_back: 'Menu principal'

# Explorateur de clavier
keyboard:
  title: ' Clavier '
  subtitle: 'Appuyez ou cliquez sur une touche'
  hint_navigate: 'Naviguer'
  hint_back: 'Retour'
  key_label: 'Touche : '
  finger_label: 'Doigt : '
  hand_left: 'Gauche'
  hand_right: 'Droite'
  finger_index: 'Indicateur'
  finger_middle: 'Majeur'
  finger_ring: 'Annulaire'
  finger_pinky: 'Auriculaire'
  finger_thumb: 'Pouce'
  overall_accuracy: '  Précision globale : %{correct}/%{total} (%{pct}%%)'
  ranked_accuracy: '  Précision classée : %{correct}/%{total} (%{pct}%%)'
  confidence: 'Confiance : '
  no_data: 'Pas encore de données'
  no_data_short: 'Pas de données'
  key_details: ' Détails de la Touche '
  key_details_char: ' Détails de la Touche : ''%{ch}'' '
  key_details_name: ' Détails de la Touche : %{name} '
  press_key_hint: 'Appuyez sur une touche pour voir ses détails'
  shift_label: 'Shift : '
  shift_no: 'Non'
  overall_avg_time: 'Temps Moy. Global : '
  overall_best_time: 'Meilleur Temps Global : '
  overall_samples: 'Échantillons Globaux : '
  overall_accuracy_label: 'Précision Globale : '
  branch_label: 'Branche : '
  level_label: 'Niveau : '
  built_in_key: 'Touche Intégrée'
  unlocked_label: 'Déverrouillée : '
  yes: 'Oui'
  no: 'Non'
  in_focus_label: 'En Focus ? : '
  mastery_label: 'Maîtrise : '
  mastery_locked: 'Verrouillé'
  ranked_avg_time: 'Temps Moy. Classé : '
  ranked_best_time: 'Meilleur Temps Classé : '
  ranked_samples: 'Échantillons Classés : '
  ranked_accuracy_label: 'Précision Classée : '

# Dialogues d'introduction
intro:
  passage_title: ' Configuration Téléchargement de Passages '
  code_title: ' Configuration Téléchargement de Code '
  enable_downloads: 'Activer les téléchargements réseau'
  download_dir: 'Répertoire de téléchargement'
  paragraphs_per_book: 'Paragraphes par livre (0 = entier)'
  whole_book: 'livre entier'
  snippets_per_repo: 'Extraits par dépôt (0 = illimité)'
  unlimited: 'illimité'
  start_passage_drill: 'Lancer l''exercice de passage'
  start_code_drill: 'Lancer l''exercice de code'
  confirm: 'Confirmer'
  hint_navigate: 'Naviguer'
  hint_adjust: 'Ajuster'
  hint_edit: 'Éditer'
  hint_confirm: 'Confirmer'
  hint_cancel: 'Annuler'
  preparing_download: 'Préparation du téléchargement...'
  download_passage_title: ' Téléchargement de la Source de Passage '
  download_code_title: ' Téléchargement de la Source de Code '
  book_label: ' Livre : %{name}'
  repo_label: ' Dépôt : %{name}'
  progress_bytes: '[%{name}] %{downloaded}/%{total}  bytes'
  downloaded_bytes: 'Téléchargé : %{bytes} bytes'
  downloading_book_progress: 'Téléchargement du livre : [%{bar}] %{downloaded}/%{total} bytes'
  downloading_book_bytes: 'Téléchargement du livre : %{bytes} bytes'
  downloading_code_progress: 'Téléchargement : [%{bar}] %{downloaded}/%{total} bytes'
  downloading_code_bytes: 'Téléchargement : %{bytes} bytes'
  current_book: 'Actuel : %{name}  (livre %{done}/%{total})'
  current_repo: 'Actuel : %{name}  (dépôt %{done}/%{total})'
  passage_instructions_1: 'keydr peut télécharger des passages de Project Gutenberg pour la pratique de frappe.'
  passage_instructions_2: 'Les livres sont téléchargés une fois et mis en cache localement.'
  passage_instructions_3: 'Configurez les paramètres ci-dessous, puis lancez un exercice de passage.'
  code_instructions_1: 'keydr peut télécharger du code open-source de GitHub pour la pratique de frappe.'
  code_instructions_2: 'Le code est téléchargé une fois et mis en cache localement.'
  code_instructions_3: 'Configurez les paramètres ci-dessous, puis lancez un exercice de code.'

# Messages de statut (de app.rs)
status:
  recovery_files: 'Fichiers de récupération trouvés suite à une importation interrompue. Les données peuvent être incohérentes — envisagez de réimporter.'
  dir_not_exist: 'Le répertoire n''existe pas : %{path}'
  no_data_store: 'Aucun stockage de données disponible'
  serialization_error: 'Erreur de sérialisation : %{error}'
  exported_to: 'Exporté vers %{path}'
  export_failed: 'Échec de l''exportation : %{error}'
  could_not_read: 'Impossible de lire le fichier : %{error}'
  invalid_export: 'Fichier d''export invalide : %{error}'
  unsupported_version: 'Version d''export non supportée : %{got} (attendue %{expected})'
  import_failed: 'Échec de l''importation : %{error}'
  imported_theme_fallback: 'Importé avec succès (thème ''%{theme}'' introuvable, utilisation du défaut)'
  imported_success: 'Importé avec succès'
  adaptive_unavailable: 'Mode adaptatif classé non disponible : %{error}'
  switched_to: 'Basculé vers %{name}'
  layout_changed: 'Disposition changée en %{name}'

# Erreurs (pour traduction des limites d'UI)
errors:
  unknown_language: 'Langue inconnue : %{key}'
  unknown_layout: 'Disposition de clavier inconnue : %{key}'
  unsupported_pair: 'Paire langue/disposition non supportée : %{language} + %{layout}'
  language_blocked: 'Langue bloquée par le niveau de support : %{key}'

# Commun
common:
  wpm: 'WPM'
  cpm: 'CPM'
  back: 'Retour'
