{
  "app": {
    "name": "GitCoach",
    "tagline": "Votre Assistant Git Interactif",
    "version": "v{{version}}",
    "welcome": "Bienvenue sur GitCoach !",
    "goodbye": "Au revoir ! Bon code !"
  },
  "menu": {
    "title": "Menu Principal",
    "status": "Statut",
    "statusDesc": "Voir les modifications",
    "add": "Ajouter",
    "addDesc": "Preparer les fichiers",
    "commit": "Commit",
    "commitDesc": "Enregistrer les modifications",
    "push": "Push",
    "pushDesc": "Envoyer au serveur",
    "pull": "Pull",
    "pullDesc": "Telecharger les modifications",
    "branch": "Branche",
    "branchDesc": "Gerer les branches",
    "undo": "Annuler",
    "undoDesc": "Annuler des actions",
    "history": "Historique",
    "historyDesc": "Voir l'historique des commits",
    "stash": "Stash",
    "stashDesc": "Mettre de cote temporairement",
    "config": "Parametres",
    "configDesc": "Configurer GitCoach",
    "stats": "Statistiques",
    "statsDesc": "Voir votre progression",
    "help": "Aide",
    "helpDesc": "Obtenir de l'assistance",
    "quit": "Quitter",
    "quitDesc": "Fermer GitCoach",
    "back": "Retour",
    "backDesc": "Revenir au menu precedent",

    "statusBeginner": "Statut - Voir l'etat actuel de vos fichiers",
    "statusIntermediate": "Statut - Voir les modifications",
    "statusExpert": "git status",

    "addBeginner": "Ajouter - Preparer vos fichiers pour l'enregistrement",
    "addIntermediate": "Ajouter - Indexer les fichiers",
    "addExpert": "git add",

    "commitBeginner": "Commit - Enregistrer vos modifications avec un message",
    "commitIntermediate": "Commit - Enregistrer",
    "commitExpert": "git commit",

    "pushBeginner": "Push - Envoyer vos modifications au serveur distant",
    "pushIntermediate": "Push - Envoyer",
    "pushExpert": "git push",

    "pullBeginner": "Pull - Telecharger les modifications du serveur",
    "pullIntermediate": "Pull - Telecharger",
    "pullExpert": "git pull",

    "branchBeginner": "Branche - Travailler sur des versions separees",
    "branchIntermediate": "Branche - Gerer les branches",
    "branchExpert": "git branch",

    "remote": "Remote",
    "remoteDesc": "Configurer le depot distant",
    "remoteBeginner": "Remote - Configurer le depot distant",
    "remoteIntermediate": "Remote - Configurer le remote",
    "remoteExpert": "git remote",

    "undoBeginner": "Annuler - Revenir en arriere en securite",
    "undoIntermediate": "Annuler - Revenir en arriere",
    "undoExpert": "git reset/restore",

    "historyBeginner": "Historique - Voir les commits passes",
    "historyIntermediate": "Historique - Voir les commits",
    "historyExpert": "git log",

    "stashBeginner": "Stash - Sauvegarder temporairement votre travail",
    "stashIntermediate": "Stash - Sauvegarder temporairement",
    "stashExpert": "git stash",

    "configBeginner": "Parametres - Configurer GitCoach",
    "configIntermediate": "Parametres - Configurer",
    "configExpert": "config",

    "statsBeginner": "Statistiques - Voir votre progression",
    "statsIntermediate": "Statistiques - Voir les stats",
    "statsExpert": "stats",

    "helpBeginner": "Aide - Obtenir de l'assistance",
    "helpIntermediate": "Aide - Obtenir de l'aide",
    "helpExpert": "help",

    "quitBeginner": "Quitter - Fermer GitCoach",
    "quitIntermediate": "Quitter - Fermer",
    "quitExpert": "quit"
  },
  "levels": {
    "beginner": "Débutant",
    "beginnerDesc": "Explications détaillées et guidage pas à pas",
    "intermediate": "Intermédiaire",
    "intermediateDesc": "Conseils utiles avec explications modérées",
    "expert": "Expert",
    "expertDesc": "Sortie minimale, uniquement avertissements et erreurs"
  },
  "themes": {
    "colored": "Coloré",
    "coloredDesc": "Sortie colorée avec coloration syntaxique",
    "monochrome": "Monochrome",
    "monochromeDesc": "Sortie en texte brut sans couleurs"
  },
  "commands": {
    "status": {
      "title": "Statut du Depot",
      "clean": "L'arbre de travail est propre. Rien a commiter.",
      "staged": "Modifications indexees (pretes a commiter) :",
      "unstaged": "Modifications non indexees :",
      "untracked": "Fichiers non suivis :",
      "branch": "Sur la branche : {{branch}}",
      "ahead": "Votre branche est en avance sur '{{remote}}' de {{count}} commit(s).",
      "behind": "Votre branche est en retard sur '{{remote}}' de {{count}} commit(s).",
      "diverged": "Votre branche et '{{remote}}' ont diverge."
    },
    "add": {
      "title": "Indexer les Fichiers",
      "selectFiles": "Selectionnez les fichiers a indexer :",
      "noFiles": "Aucun fichier a indexer.",
      "allFiles": "Indexer tous les fichiers",
      "success": "{{count}} fichier(s) indexe(s) avec succes.",
      "staged": "Indexe : {{file}}",
      "filesToStage": "{{count}} fichier(s) a indexer :",
      "addAll": "git add -A",
      "addPatch": "git add -p",
      "staging": "Indexation de {{count}} fichier(s)..."
    },
    "commit": {
      "title": "Commiter les Modifications",
      "noStaged": "Aucune modification indexee. Utilisez 'Ajouter' d'abord.",
      "enterMessage": "Entrez le message de commit :",
      "generateAI": "Generer le message avec l'IA",
      "generating": "Generation du message...",
      "suggested": "Message suggere : {{message}}",
      "useGenerated": "Utiliser ce message ?",
      "editMessage": "Modifier le message",
      "success": "Commit reussi : {{message}}",
      "cancelled": "Commit annule.",
      "emptyToCancel": "(Laissez vide pour annuler)",
      "messageTooShort": "Le message de commit doit contenir au moins 3 caracteres",
      "copilotUnavailable": "GitHub Copilot CLI non disponible - entrez le message manuellement",
      "aiGenerationFailed": "Generation IA echouee - entrez le message manuellement",
      "enterManually": "Entrez votre message de commit :",
      "conflictsDetected": "Conflits de fusion detectes ! Resolvez-les avant de commiter.",
      "conflictedFiles": "Fichiers en conflit :",
      "stagedCount": "{{count}} fichier(s) indexe(s) :",
      "committing": "Commit en cours...",
      "commitAI": "git commit (IA)",
      "commitManual": "git commit -m",
      "convertToConventional": "Convertir en format commit conventionnel ?",
      "keepAsIs": "Non, garder tel quel",
      "typeFeature": "feat: (nouvelle fonctionnalite)",
      "typeFix": "fix: (correction de bug)",
      "typeDocs": "docs: (documentation)",
      "typeRefactor": "refactor: (refactorisation)",
      "typeChore": "chore: (maintenance)"
    },
    "push": {
      "title": "Envoyer les Modifications",
      "confirm": "Envoyer {{count}} commit(s) vers {{remote}}/{{branch}} ?",
      "nothingToPush": "Rien a envoyer. Votre branche est a jour.",
      "pushing": "Envoi vers {{remote}}...",
      "success": "Envoi reussi vers {{remote}}/{{branch}}.",
      "failed": "Echec de l'envoi : {{error}}",
      "forcePush": "Forcer l'envoi",
      "forcePushWarning": "Forcer l'envoi ecrasera l'historique distant. Etes-vous sur ?",
      "remoteBehind": "Le serveur a {{count}} nouveau(x) commit(s). Vous devriez pull d'abord !",
      "behindAction": "Que souhaitez-vous faire ?",
      "pullThenPush": "Pull d'abord, puis push",
      "noUpstream": "La branche '{{branch}}' n'a pas d'upstream. {{count}} commit(s) seront envoyes.",
      "firstPush": "Premier Push",
      "noRemoteConfigured": "Aucun depot distant configure.",
      "addRemoteQuestion": "Voulez-vous ajouter un remote origin pour push ?",
      "forceConfirmFinal": "Etes-vous absolument sur ? Cette action est irreversible.",
      "forcePushing": "Envoi force vers {{remote}}...",
      "commitsToDownload": "{{count}} commit(s) a telecharger depuis {{remote}}/{{branch}}"
    },
    "pull": {
      "title": "Recuperer les Modifications",
      "pulling": "Recuperation depuis {{remote}}...",
      "success": "{{count}} commit(s) recupere(s) avec succes.",
      "upToDate": "Deja a jour.",
      "conflicts": "Conflits de fusion detectes. Veuillez les resoudre manuellement.",
      "failed": "Echec de la recuperation : {{error}}",
      "noRemoteConfigured": "Aucun depot distant configure. Ajoutez un remote pour pouvoir pull.",
      "selectRemote": "Selectionnez le remote depuis lequel recuperer :",
      "noUpstream": "La branche '{{branch}}' n'a pas de branche de suivi configuree.",
      "setUpstreamQuestion": "Configurer le suivi vers {{remote}}/{{branch}} ?",
      "diverged": "Votre branche et le remote ont diverge.",
      "divergedExplain": "Vous avez {{ahead}} commit(s) local(aux) et {{behind}} commit(s) distant(s) a integrer.",
      "mergeOrRebase": "Comment souhaitez-vous integrer les modifications distantes ?",
      "optionMerge": "Merge (cree un commit de fusion)",
      "optionRebase": "Rebase (rejoue vos commits par-dessus)",
      "conflictsDetected": "{{count}} fichier(s) ont des conflits de fusion a resoudre.",
      "conflictedFiles": "Fichiers en conflit :",
      "resolveInstructions": "Pour resoudre les conflits :\n1. Ouvrez chaque fichier en conflit dans votre editeur\n2. Cherchez les marqueurs de conflit : <<<<<<< (vos modifications), ======= (separateur), >>>>>>> (modifications distantes)\n3. Choisissez la version a garder (ou combinez les deux), puis supprimez TOUS les marqueurs\n4. Sauvegardez le fichier\n5. Lancez 'git add' sur chaque fichier resolu\n6. Lancez 'git commit' pour finaliser le merge",
      "resolveOptions": "Que souhaitez-vous faire ?",
      "abortMerge": "Annuler le merge et restaurer l'etat precedent",
      "abortSuccess": "Merge annule avec succes. Votre branche est revenue a son etat precedent.",
      "continueMerge": "Je vais resoudre les conflits manuellement",
      "mergeInProgress": "Un merge est actuellement en cours.",
      "rebaseInProgress": "Un rebase est actuellement en cours.",
      "uncommittedWarning": "Vous avez des modifications non commitees. Elles pourraient etre perdues pendant le pull.",
      "uncommittedOptions": "Que faire de vos modifications non commitees ?",
      "optionCommit": "Commiter d'abord",
      "optionStash": "Mettre de cote temporairement (stash)",
      "optionContinue": "Continuer quand meme (risque)",
      "guidedResolution": "Resoudre les conflits pas a pas (guide)"
    },
    "conflicts": {
      "title": "Resolution des Conflits",
      "fileProgress": "Fichier {{current}}/{{total}} :",
      "localVersion": "Votre version (locale) :",
      "remoteVersion": "Version distante :",
      "chooseResolution": "Que voulez-vous garder ?",
      "keepLocal": "Garder ma version (locale)",
      "keepRemote": "Garder la version distante",
      "keepBoth": "Garder les deux (combiner)",
      "editManually": "Editer manuellement dans mon editeur",
    "askCopilot": "Demander a Copilot IA",
    "acceptSuggestion": "Accepter cette suggestion ?",
    "copilotSuggests": "Copilot suggere",
      "fileResolved": "{{file}} resolu ({{current}}/{{total}})",
      "allResolved": "Les {{count}} conflit(s) ont ete resolus !",
      "finalizeCommit": "Finaliser le merge avec git commit ?",
      "markersRemaining": "Des marqueurs de conflit sont encore presents dans {{file}}. Supprimez tous les marqueurs <<<<<<< ======= >>>>>>>.",
      "pressEnterWhenDone": "Appuyez sur Entree quand vous avez fini d'editer...",
      "editInstructions": "Ouvrez {{file}} dans votre editeur, resolvez les conflits, sauvegardez, puis revenez ici."
    },
    "branch": {
      "title": "Gestion des Branches",
      "current": "Branche actuelle : {{branch}}",
      "list": "Branches disponibles :",
      "create": "Creer une nouvelle branche",
      "switch": "Changer de branche",
      "delete": "Supprimer une branche",
      "merge": "Fusionner une branche",
      "enterName": "Entrez le nom de la branche :",
      "createSuccess": "Branche creee : {{branch}}",
      "switchSuccess": "Bascule vers la branche : {{branch}}",
      "deleteSuccess": "Branche supprimee : {{branch}}",
      "deleteConfirm": "Supprimer la branche '{{branch}}' ? Cette action est irreversible.",
      "cannotDeleteCurrent": "Impossible de supprimer la branche actuelle.",
      "noOtherBranches": "Aucune autre branche disponible.",
      "mergeExplain": "Fusionner combine les modifications d'une branche dans la branche actuelle.\nVous etes sur '{{branch}}'. Quelle branche voulez-vous fusionner ici ?",
      "selectToMerge": "Selectionnez la branche a fusionner :",
      "willExecute": "Commande a executer :",
      "mergeConfirm": "Fusionner la branche '{{branch}}' ? Continuer ?",
      "merging": "Fusion de {{branch}}...",
      "mergeSuccess": "Branche '{{branch}}' fusionnee avec succes !",
      "mergeConflicts": "Conflits detectes ! Resolvez-les avant de continuer.",
      "conflictedFiles": "Fichiers en conflit :",
      "invalidName": "Nom de branche invalide",
      "creating": "Creation de la branche {{branch}}...",
      "switching": "Bascule vers {{branch}}...",
      "deleting": "Suppression de la branche {{branch}}...",
      "noBranchesAvailable": "Aucune autre branche disponible"
    },
    "remote": {
      "title": "Gestion du Remote",
      "selectAction": "Que souhaitez-vous faire ?",
      "viewCurrent": "Voir le remote actuel",
      "addOrigin": "Ajouter un remote origin",
      "changeUrl": "Modifier l'URL du remote",
      "removeRemote": "Supprimer le remote",
      "currentRemote": "Remote origin : {{url}}",
      "noRemoteConfigured": "Aucun remote configure.",
      "changeRemoteConfirm": "Changer l'URL du remote origin ?",
      "remoteRemoved": "Remote 'origin' supprime.",
      "confirmRemove": "Supprimer le remote 'origin' ? Vous ne pourrez plus push/pull.",
      "noRemoteToRemove": "Aucun remote configure a supprimer."
    },
    "undo": {
      "title": "Annuler des Actions",
      "selectAction": "Que souhaitez-vous annuler ?",
      "softReset": "Annuler le dernier commit (garder les fichiers)",
      "softResetDesc": "Supprime le commit mais garde vos modifications indexees",
      "hardReset": "Annuler le dernier commit (tout supprimer)",
      "hardResetDesc": "Supprime le commit ET toutes les modifications",
      "unstage": "Retirer des fichiers de l'index",
      "unstageDesc": "Desindexer des fichiers",
      "restore": "Annuler les modifications d'un fichier",
      "restoreDesc": "Revenir a la derniere version commitee",
      "whatItDoes": "Ce que ca fait :",
      "softResetExplain": "Ceci va annuler votre dernier commit mais garder toutes vos modifications. Vous pourrez ensuite editer et recommiter.",
      "hardResetWarning": "Ceci va supprimer definitivement votre dernier commit ET toutes les modifications non commitees. Cette action est irreversible !",
      "unstageExplain": "Ceci va retirer les fichiers selectionnes de l'index. Vos modifications resteront dans le repertoire de travail.",
      "restoreWarning": "Ceci va supprimer definitivement toutes les modifications des fichiers selectionnes. Votre travail sera perdu !",
      "noCommits": "Aucun commit a annuler.",
      "lastCommit": "Dernier commit :",
      "confirmSoftReset": "Annuler ce commit ? (les fichiers seront conserves)",
      "confirmHardReset": "Etes-vous sur ? Ceci va SUPPRIMER toutes les modifications !",
      "confirmHardReset2": "DERNIER AVERTISSEMENT : Cette action est definitive",
      "softResetSuccess": "Commit annule ! Vos modifications sont toujours indexees.",
      "hardResetSuccess": "Commit et toutes les modifications ont ete supprimes.",
      "filesKept": "Vos fichiers sont toujours indexes. Vous pouvez editer et recommiter.",
      "noStagedFiles": "Aucun fichier n'est actuellement indexe.",
      "stagedFiles": "Fichiers indexes :",
      "selectFilesToUnstage": "Selectionnez les fichiers a desindexer :",
      "unstageSuccess": "{{count}} fichier(s) desindexe(s) avec succes.",
      "noModifiedFiles": "Aucun fichier modifie a restaurer.",
      "modifiedFiles": "Fichiers modifies :",
      "selectFilesToRestore": "Selectionnez les fichiers a restaurer :",
      "confirmRestore": "Annuler les modifications de {{count}} fichier(s) ? Cette action est irreversible !",
      "restoreSuccess": "{{count}} fichier(s) restaure(s) a la derniere version."
    },
    "history": {
      "title": "Historique des Commits",
      "recentCommits": "Commits recents :",
      "noCommits": "Aucun commit dans ce depot.",
      "viewMore": "Charger plus de commits",
      "selectCommit": "Selectionnez un commit pour voir les details :",
      "commitDetails": "Details du Commit",
      "commitNotFound": "Commit introuvable.",
      "changedFiles": "Fichiers modifies dans ce commit :",
      "commitLabel": "Commit :",
      "authorLabel": "Auteur :",
      "dateLabel": "Date :",
      "messageLabel": "Message :",
      "fullDiffHint": "(Utilisez git show {{hash}} pour voir le diff complet)"
    },
    "stash": {
      "title": "Stash - Mettre de Cote Temporairement",
      "selectAction": "Que souhaitez-vous faire ?",
      "save": "Sauvegarder le travail en cours",
      "saveDesc": "Mettre de cote toutes les modifications",
      "list": "Voir les stashs",
      "listDesc": "Afficher tous les stashs sauvegardes",
      "apply": "Appliquer un stash",
      "applyDesc": "Restaurer les modifications (garder le stash)",
      "pop": "Recuperer le dernier stash",
      "popDesc": "Restaurer et supprimer le dernier stash",
      "drop": "Supprimer un stash",
      "dropDesc": "Supprimer definitivement un stash",
      "whatItDoes": "Ce que ca fait :",
      "saveExplain": "Ceci va sauvegarder toutes vos modifications non commitees et nettoyer votre repertoire de travail. Vous pourrez les restaurer plus tard.",
      "applyExplain": "Ceci va restaurer le stash selectionne mais le garder dans la liste.",
      "popExplain": "Ceci va restaurer le dernier stash et le supprimer de la liste.",
      "dropWarning": "Ceci va supprimer definitivement le stash selectionne. Cette action est irreversible !",
      "nothingToStash": "Rien a mettre de cote. Votre repertoire de travail est deja propre.",
      "enterMessage": "Entrez une description (optionnel) :",
      "saveSuccess": "Modifications mises de cote avec succes !",
      "workingTreeClean": "Votre repertoire de travail est maintenant propre.",
      "noStashes": "Aucun stash sauvegarde.",
      "yourStashes": "Vos stashs :",
      "selectStash": "Selectionnez un stash a appliquer :",
      "selectStashToDrop": "Selectionnez un stash a supprimer :",
      "applySuccess": "Stash applique avec succes !",
      "stashKept": "Le stash est toujours sauvegarde. Utilisez 'pop' pour l'appliquer et le supprimer.",
      "popSuccess": "Stash applique et supprime !",
      "confirmDrop": "Supprimer ce stash ? Cette action est irreversible !",
      "dropSuccess": "Stash supprime."
    }
  },
  "time": {
    "justNow": "a l'instant",
    "minutesAgo": "il y a {{count}} min",
    "hoursAgo": "il y a {{count}} heures",
    "daysAgo": "il y a {{count}} jours",
    "weeksAgo": "il y a {{count}} semaines",
    "monthsAgo": "il y a {{count}} mois"
  },
  "warnings": {
    "title": "Attention",
    "dangerous": "dangereux",
    "uncommittedChanges": "Vous avez des modifications non commitees qui seront perdues !",
    "uncommittedChangesAction": "Commitez ou mettez de cote vos modifications avant de continuer.",
    "forcePush": "Forcer l'envoi ecrasera l'historique distant !",
    "forcePushAction": "Cette action est irreversible. Assurez-vous de savoir ce que vous faites.",
    "wrongBranch": "Vous etes sur la branche '{{current}}', pas '{{expected}}'.",
    "wrongBranchAction": "Changez de branche avant de continuer.",
    "detachedHead": "Vous etes en etat HEAD detache !",
    "detachedHeadAction": "Creez une branche pour sauvegarder votre travail.",
    "noRemote": "Aucun depot distant configure.",
    "notGitRepo": "Ce repertoire n'est pas un depot Git.",
    "copilotUnavailable": "GitHub Copilot CLI n'est pas disponible. Certaines fonctionnalites peuvent etre limitees.",
    "mergeInProgress": "Un merge est actuellement en cours.",
    "mergeInProgressAction": "Terminez le merge avec 'git commit' ou annulez avec 'git merge --abort'.",
    "rebaseInProgress": "Un rebase est actuellement en cours.",
    "rebaseInProgressAction": "Continuez avec 'git rebase --continue' ou annulez avec 'git rebase --abort'.",
    "cherryPickInProgress": "Un cherry-pick est actuellement en cours.",
    "cherryPickInProgressAction": "Continuez avec 'git cherry-pick --continue' ou annulez avec 'git cherry-pick --abort'.",
    "bisectInProgress": "Une session de bisect est en cours.",
    "bisectInProgressAction": "Continuez le bisect ou terminez avec 'git bisect reset'."
  },
  "errors": {
    "title": "Erreur",
    "generic": "Une erreur s'est produite : {{message}}",
    "gitNotInstalled": "Git n'est pas installe ou pas dans le PATH.",
    "networkError": "Erreur reseau. Verifiez votre connexion.",
    "permissionDenied": "Permission refusee. Verifiez vos identifiants.",
    "invalidInput": "Entree invalide : {{message}}",
    "branchExists": "La branche '{{branch}}' existe deja.",
    "branchNotFound": "Branche '{{branch}}' introuvable.",
    "mergeConflict": "Conflit de fusion dans {{file}}.",
    "unknownError": "Une erreur inconnue s'est produite.",
    "authenticationFailed": "Echec d'authentification. Verifiez vos identifiants ou votre cle SSH. Lancez 'git config --list' pour verifier l'URL du remote.",
    "pushRejected": "Le push a ete rejete. Le remote contient des commits que vous n'avez pas. Faites un pull d'abord, puis reessayez le push.",
    "alreadyExists": "La ressource existe deja. Choisissez un autre nom ou supprimez celle existante.",
    "fileNotFound": "Fichier ou chemin introuvable. Verifiez le nom du fichier et assurez-vous qu'il existe dans le depot.",
    "diskFull": "Plus d'espace disque disponible. Liberez de l'espace et reessayez.",
    "lockFileExists": "Un fichier de verrouillage Git existe (.git/index.lock). Un autre processus Git est peut-etre en cours. Sinon, supprimez le fichier manuellement.",
    "timeout": "L'operation a expire. Verifiez votre connexion reseau et reessayez.",
    "rateLimited": "Limite de requetes atteinte. Attendez un moment et reessayez.",
    "detachedHead": "Vous etes en etat HEAD detache. Creez une branche pour sauvegarder votre travail avant de continuer.",
    "explainWithAI": "Voulez-vous une explication IA de cette erreur ?",
    "analyzing": "Analyse de l'erreur...",
    "explanation": "Explication",
    "noExplanation": "Impossible d'expliquer l'erreur",
    "explainFailed": "Echec de l'explication"
  },
  "success": {
    "title": "Succes",
    "operationComplete": "Operation terminee avec succes.",
    "saved": "Modifications enregistrees.",
    "configUpdated": "Configuration mise a jour."
  },
  "setup": {
    "welcome": "Bienvenue dans la configuration de GitCoach !",
    "selectLanguage": "Selectionnez votre langue preferee :",
    "selectTheme": "Selectionnez votre theme prefere :",
    "selectLevel": "Quel est votre niveau d'experience avec Git ?",
    "complete": "Configuration terminee ! Vous etes pret a utiliser GitCoach.",
    "tip": "Astuce : Vous pouvez modifier ces parametres a tout moment dans le menu de configuration.",
    "notGitRepo": "Ce repertoire n'est pas un depot Git.",
    "menuTitle": "Que souhaitez-vous faire ?",
    "init": "Init",
    "initDesc": "Initialiser un nouveau depot Git",
    "clone": "Clone",
    "cloneDesc": "Cloner un depot existant",
    "quitDesc": "Quitter GitCoach",
    "initInProgress": "Initialisation du depot Git...",
    "initSuccess": "Depot Git initialise avec succes !",
    "addRemoteQuestion": "Voulez-vous ajouter un remote origin ?",
    "remoteUrlPrompt": "Entrez l'URL du remote (GitHub, GitLab, etc.) :",
    "remoteUrlRequired": "L'URL du remote est requise.",
    "remoteUrlInvalid": "Veuillez entrer une URL Git valide.",
    "remoteAdded": "Remote 'origin' ajoute : {{url}}",
    "repoReady": "Votre depot est pret ! Vous pouvez commencer a travailler.",
    "cloneUrlPrompt": "Entrez l'URL du depot a cloner :",
    "cloneUrlRequired": "L'URL du depot est requise.",
    "cloneDirPrompt": "Nom du dossier (laissez vide pour le defaut) :",
    "cloneInProgress": "Clonage du depot...",
    "cloneSuccess": "Depot clone avec succes dans '{{dir}}' !",
    "cloneNextStep": "Executez 'cd {{dir}}' puis 'gitcoach' pour commencer.",
    "gitignoreQuestion": "Voulez-vous creer un fichier .gitignore ?",
    "gitignoreType": "Type de projet :",
    "gitignoreNode": "Node.js",
    "gitignorePython": "Python",
    "gitignoreJava": "Java",
    "gitignoreGeneric": "Generique",
    "gitignoreCreated": "Fichier .gitignore cree !",
    "copilotTitle": "GitHub Copilot CLI",
    "copilotDetected": "GitHub Copilot CLI est installe et pret !",
    "copilotNotInstalled": "GitHub Copilot CLI n'est pas installe.",
    "copilotBenefits": "Copilot CLI active les fonctionnalites IA :\n• Generer des messages de commit intelligents\n• Repondre a vos questions Git\n• Obtenir des suggestions contextuelles",
    "copilotInstallQuestion": "Voulez-vous installer GitHub Copilot CLI maintenant ?",
    "copilotSkipped": "Continuer sans Copilot CLI. Vous pourrez l'installer plus tard.",
    "copilotInstalling": "Installation de GitHub Copilot CLI...",
    "copilotInstallSuccess": "GitHub Copilot CLI installe avec succes !",
    "copilotInstallNote": "Vous devrez peut-etre vous authentifier avec 'copilot login' lors de la premiere utilisation.",
    "copilotNotAuthenticated": "GitHub Copilot CLI est installe mais vous n'etes pas connecte. Executez 'copilot login' pour vous authentifier.",
    "copilotInstallFailed": "Echec de l'installation de GitHub Copilot CLI",
    "copilotInstallFailedDetail": "L'installation automatique a echoue. Cela peut etre du a des problemes de permissions ou de reseau.",
    "copilotManualInstall": "Pour installer manuellement, executez :\nnpm install -g @github/copilot",
    "gitignoreOverwrite": ".gitignore existe deja. Ecraser ?"
  },
  "config": {
    "title": "Parametres",
    "language": "Langue",
    "theme": "Theme",
    "experienceLevel": "Niveau d'Experience",
    "showTips": "Afficher les Astuces",
    "confirmDestructive": "Confirmer les Actions Destructives",
    "autoCommitMsg": "Generer les Messages Automatiquement",
    "defaultBranch": "Branche par Defaut",
    "reset": "Reinitialiser par Defaut",
    "resetConfirm": "Reinitialiser tous les parametres ?",
    "copilotRefresh": "Re-verifier Copilot CLI",
    "copilotAvailable": "GitHub Copilot CLI est disponible et pret !",
    "copilotNotAvailable": "GitHub Copilot CLI n'est pas disponible.",
    "copilotChecking": "Verification de Copilot CLI..."
  },
  "stats": {
    "title": "Vos Statistiques",
    "totalCommits": "Total des Commits",
    "errorsPrevented": "Erreurs Evitees",
    "aiCommits": "Commits Generes par l'IA",
    "timeSaved": "Temps Estime Economise",
    "noData": "Pas encore de statistiques. Commencez a utiliser GitCoach !",
    "aiPercentage": "Commits assistes par l'IA : {{percentage}}%",
    "mistakesAvoided": "Vous avez evite {{count}} erreur(s) potentielle(s) !"
  },
  "tipTitle": "Astuce",
  "tips": {
    "beginner": {
      "status": "Utilisez 'Statut' pour voir les fichiers modifies avant de commiter.",
      "add": "Indexez les fichiers avec 'Ajouter' avant de commiter. L'indexation prepare vos modifications.",
      "commit": "Ecrivez des messages clairs qui expliquent POURQUOI vous avez fait la modification.",
      "push": "Envoyez regulierement pour sauvegarder votre travail sur le serveur distant.",
      "pull": "Recuperez avant de commencer a travailler pour eviter les conflits.",
      "branch": "Utilisez les branches pour travailler sur des fonctionnalites sans affecter le code principal."
    },
    "intermediate": {
      "commit": "Utilisez les commits conventionnels (feat:, fix:, docs:) pour un meilleur historique.",
      "rebase": "Considerez le rebase pour un historique plus propre avant de fusionner."
    }
  },
  "help": {
    "title": "Aide",
    "selectAction": "Que souhaitez-vous faire ?",
    "askQuestion": "Poser une question sur Git (IA)",
    "quickHelp": "Reference rapide",
    "about": "A propos de GitCoach",
    "askHint": "Posez une question sur Git en langage naturel. Laissez vide pour annuler.",
    "askExamples": "Exemples : \"Comment annuler mon dernier commit ?\" ou \"C'est quoi un rebase ?\"",
    "enterQuestion": "Votre question :",
    "questionTooShort": "Veuillez entrer une question plus detaillee",
    "thinking": "Reflexion en cours...",
    "answer": "Reponse",
    "noAnswer": "Impossible d'obtenir une reponse",
    "errorAsking": "Erreur lors de la demande",
    "copilotUnavailable": "GitHub Copilot CLI n'est pas disponible. Installez-le pour poser des questions.",
    "quickRefTitle": "Reference Rapide",
    "navigation": "Navigation :",
    "navArrows": "Utilisez les fleches pour naviguer dans les menus",
    "navEnter": "Appuyez sur Entree pour selectionner",
    "navCtrlC": "Appuyez sur Ctrl+C pour quitter a tout moment",
    "mainCommands": "Commandes Principales :",
    "additionalCommands": "Commandes Supplementaires :",
    "tips": "Astuces :",
    "tip1": "GitCoach vous avertit avant les operations dangereuses",
    "tip2": "L'IA peut generer des messages de commit a partir de vos modifications",
    "tip3": "Changez le niveau d'experience dans les parametres pour plus/moins de guidage",
    "aboutDesc": "GitCoach est un outil CLI interactif qui aide les developpeurs a maitriser Git",
    "aboutDesc2": "grace a des menus guides, des suggestions intelligentes et la prevention d'erreurs en temps reel.",
    "features": "Fonctionnalites :",
    "feature1": "Menus interactifs pour toutes les operations Git",
    "feature2": "Messages de commit generes par l'IA avec Copilot CLI",
    "feature3": "Prevention des erreurs et avertissements",
    "feature4": "Support multilingue (EN, FR, ES)",
    "feature5": "Modes Debutant, Intermediaire et Expert",
    "aboutTitle": "A propos de GitCoach",
    "builtFor": "Concu pour le GitHub Copilot CLI Challenge 2026"
  },
  "prompts": {
    "confirm": "Etes-vous sur ?",
    "yes": "Oui",
    "no": "Non",
    "yesKey": "O",
    "noKey": "n",
    "cancel": "Annuler",
    "continue": "Continuer",
    "pressEnter": "Appuyez sur Entree pour continuer...",
    "select": "Selectionnez une option",
    "enterValue": "Entrez une valeur"
  },
  "analysis": {
    "untrackedFiles": "{{count}} fichier(s) non suivi(s) detecte(s)",
    "modifiedNotStaged": "{{count}} fichier(s) modifie(s) non indexe(s)",
    "readyToCommit": "{{count}} fichier(s) pret(s) a commiter",
    "aheadOfRemote": "{{count}} commit(s) en avance sur le remote",
    "behindRemote": "{{count}} commit(s) en retard sur le remote",
    "startCoding": "Commencer a coder",
    "cleanAndUpToDate": "L'arbre de travail est propre et a jour"
  },
  "copilot": {
    "aiExplanation": "Copilot explique",
    "analyzing": "Analyse de l'erreur...",
    "analyzingChanges": "Analyse des changements...",
    "diffSummary": "Resume des changements"
  },
  "detachedHead": {
    "title": "HEAD Detache",
    "explanation": "Vous etes en etat HEAD detache.\n\nCela signifie que vous n'etes sur aucune branche. Vos commits risquent d'etre perdus si vous changez de branche.\n\nCela arrive souvent apres un rebase interrompu ou un checkout d'un commit specifique.",
    "selectAction": "Que souhaitez-vous faire ?",
    "createBranch": "Creer une nouvelle branche",
    "returnToMain": "Revenir sur la branche principale",
    "stashAndReturn": "Sauvegarder et revenir",
    "ignore": "Ignorer et continuer",
    "enterBranchName": "Nom de la nouvelle branche :",
    "branchCreated": "Branche '{{branch}}' creee ! Vos commits sont maintenant securises.",
    "returnedToMain": "Revenu sur {{branch}}.",
    "stashedAndReturned": "Modifications sauvegardees et revenu sur {{branch}}.",
    "commandExecuted": "Commande executee : {{command}}",
    "stashMessage": "Modifications HEAD detache"
  }
}
