# 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: '[1-3] Démarrer' hint_skill_tree: '[t] Arbre de Compétences' hint_keyboard: '[b] Clavier' hint_stats: '[s] Statistiques' hint_settings: '[c] Paramètres' hint_quit: '[q] 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: '[ESC] Fin de l''exercice' hint_backspace: '[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: '[c/Enter/Space] Continuer' hint_retry: '[r] Réessayer' hint_menu: '[q] Menu' hint_stats: '[s] Statistiques' hint_delete: '[x] 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: '[ESC] Retour' hint_next_tab: '[Tab] Onglet suivant' hint_switch_tab: '[1-6] Changer d''onglet' hint_navigate: '[j/k] Naviguer' hint_page: '[PgUp/PgDn] Défiler' hint_delete: '[x] 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}' tri_label: ' | Tri : %{count}' hes_label: ' | Hés : >%{ms}ms' gain_label: ' | Gain : %{value}' gain_interval: ' (tous les 50)' 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: '[ESC] Sauvegarder et retour' hint_change_value: '[Enter/flèches] Changer la valeur' hint_edit_path: '[Enter sur chemin] Éditer' hint_move: '[←→] Déplacer' hint_tab_complete: '[Tab] Compléter (à la fin)' hint_confirm: '[Enter] Confirmer' hint_cancel: '[Esc] 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: '[Up/Down/PgUp/PgDn] Naviguer' hint_confirm: '[Enter] Confirmer' hint_back: '[ESC] 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: '[↑↓/jk] Naviguer' hint_scroll: '[PgUp/PgDn ou Ctrl+U/Ctrl+D] Défiler' hint_back: '[q] Retour' hint_unlock: '[Enter] Déverrouiller' hint_start_drill: '[Enter] 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: '[t] 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 !' # Explorateur de clavier keyboard: title: ' Clavier ' subtitle: 'Appuyez ou cliquez sur une touche' hint_navigate: '[←→↑↓/hjkl/Tab] Naviguer' hint_back: '[q/ESC] 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: '[Up/Down] Naviguer' hint_adjust: '[Left/Right] Ajuster' hint_edit: '[Type/Backspace] Éditer' hint_confirm: '[Enter] Confirmer' hint_cancel: '[ESC] 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'