{
    "errors": {
        "http": {
            "get": "Impossible de récupérer les données.",
            "post": "Impossible de créer la ressource.",
            "put": "Impossible de mettre à jour la ressource.",
            "patch": "Impossible de mettre à jour la ressource.",
            "delete": "Impossible de supprimer la ressource."
        },
        "auth": {
            "login": "Identifiants invalides.",
            "logout": "Impossible de se déconnecter.",
            "session": "Session expirée"
        }
    },
    "success": {
        "auth": {
            "login": "Connexion réussie.",
            "logout": "Déconnexion réussie."
        }
    },
    "clients": {
        "created": "Client créé avec succès.",
        "updated": "Client mis à jour avec succès.",
        "deleted": "Client supprimé avec succès.",
        "addClient": "Ajouter un client",
        "editClient": "Modifier un client"
    },
    "projects": {
        "title": "Projets",
        "created": "Projet créé avec succès.",
        "updated": "Projet mis à jour avec succès.",
        "deleted": "Projet supprimé avec succès.",
        "archived": "Projet archivé avec succès.",
        "unarchived": "Projet désarchivé avec succès.",
        "showArchived": "Voir les projets archivés",
        "hideArchived": "Masquer les projets archivés",
        "noProjects": "Aucun projet trouvé.",
        "noArchivedProjects": "Aucun projet archivé.",
        "addProject": "Ajouter un projet",
        "addProjectShort": "Projet",
        "editProject": "Modifier un projet",
        "deleteConfirmTitle": "Supprimer le projet",
        "deleteConfirmMessage": "Êtes-vous sûr de vouloir supprimer ce projet ? Cette action est irréversible.",
        "cannotDelete": "Impossible de supprimer un projet contenant des tickets."
    },
    "taskStatuses": {
        "created": "Statut créé avec succès.",
        "updated": "Statut mis à jour avec succès.",
        "deleted": "Statut supprimé avec succès.",
        "addStatus": "Ajouter un statut",
        "editStatus": "Modifier un statut",
        "deleteStatus": "Supprimer le statut « {label} »",
        "linkedTasks": "{count} tâche est liée à ce statut. Choisissez où les déplacer :",
        "linkedTasksPlural": "{count} tâches sont liées à ce statut. Choisissez où les déplacer :",
        "moveTo": "Déplacer vers",
        "backlog": "Backlog (sans statut)"
    },
    "workflows": {
        "title": "Workflows",
        "addWorkflow": "Ajouter un workflow",
        "editWorkflow": "Modifier le workflow",
        "name": "Nom",
        "isDefault": "Workflow par défaut",
        "statuses": "Statuts",
        "addStatus": "Ajouter un statut",
        "category": "Catégorie",
        "created": "Workflow créé",
        "updated": "Workflow mis à jour",
        "deleted": "Workflow supprimé",
        "switched": "Workflow du projet changé",
        "switchTitle": "Changer de workflow",
        "switchTargetLabel": "Nouveau workflow",
        "switchMappingTitle": "Mapping des statuts",
        "switchSourceCol": "Statut actuel",
        "switchTargetCol": "Statut cible",
        "switchTaskCountCol": "Tâches",
        "switchToBacklog": "Mapper vers le backlog",
        "switchConfirm": "Confirmer la migration",
        "switchSummary": "{count} tâche(s) migrée(s), projet sur workflow « {name} »",
        "deleteUsedBy": "Workflow utilisé par {count} projet(s) — impossible de supprimer.",
        "categories": {
            "todo": "À faire",
            "in_progress": "En cours",
            "blocked": "Bloqué",
            "review": "En validation",
            "done": "Terminé"
        }
    },
    "taskEfforts": {
        "created": "Effort créé avec succès.",
        "updated": "Effort mis à jour avec succès.",
        "deleted": "Effort supprimé avec succès.",
        "addEffort": "Ajouter un effort",
        "editEffort": "Modifier un effort"
    },
    "taskPriorities": {
        "created": "Priorité créée avec succès.",
        "updated": "Priorité mise à jour avec succès.",
        "deleted": "Priorité supprimée avec succès.",
        "addPriority": "Ajouter une priorité",
        "editPriority": "Modifier une priorité"
    },
    "taskTags": {
        "created": "Tag créé avec succès.",
        "updated": "Tag mis à jour avec succès.",
        "deleted": "Tag supprimé avec succès.",
        "addTag": "Ajouter un tag",
        "editTag": "Modifier un tag"
    },
    "taskGroups": {
        "created": "Groupe créé avec succès.",
        "updated": "Groupe mis à jour avec succès.",
        "deleted": "Groupe supprimé avec succès.",
        "archived": "Groupe archivé avec succès.",
        "unarchived": "Groupe désarchivé avec succès.",
        "addGroup": "Ajouter un groupe",
        "editGroup": "Modifier un groupe"
    },
    "taskDocuments": {
        "title": "Documents",
        "dropzone": "Glisser des fichiers ici ou cliquer pour sélectionner",
        "uploaded": "Document ajouté avec succès.",
        "deleted": "Document supprimé avec succès.",
        "uploadError": "Erreur lors de l'upload du document.",
        "confirmDeleteTitle": "Supprimer le document",
        "confirmDeleteMessage": "Êtes-vous sûr de vouloir supprimer ce document ?",
        "download": "Télécharger",
        "copy": "Copier",
        "copied": "Contenu copié !",
        "maxSizeError": "Le fichier dépasse la taille maximale de 50 Mo.",
        "linkShareButton": "Lier depuis le partage",
        "linkShareTitle": "Lier un fichier du partage",
        "linkShareHint": "Cliquez sur un dossier pour naviguer, sur un fichier pour le lier au ticket.",
        "linkShareSuccess": "Fichier du partage lié au ticket.",
        "linkShareError": "Impossible de lier ce fichier (type non autorisé ou introuvable).",
        "shareLinkBadge": "Lien vers le partage",
        "shareLinkLabel": "Partage"
    },
    "tasks": {
        "created": "Ticket créé avec succès.",
        "updated": "Ticket mis à jour avec succès.",
        "deleted": "Ticket supprimé avec succès.",
        "archived": "Ticket archivé avec succès.",
        "unarchived": "Ticket désarchivé avec succès.",
        "deleteConfirmTitle": "Supprimer le ticket",
        "deleteConfirmMessage": "Êtes-vous sûr de vouloir supprimer ce ticket ? Cette action est irréversible.",
        "addTask": "Ajouter un ticket",
        "editTask": "Modifier un ticket",
        "detailsTab": "Détails",
        "planningTab": "Planification",
        "planning": {
            "dates": "Dates",
            "scheduledStart": "Début planifié",
            "scheduledEnd": "Fin planifiée",
            "deadline": "Deadline",
            "calendar": "Calendrier",
            "syncToCalendar": "Envoyer au calendrier Zimbra",
            "syncOk": "Synchronisé",
            "recurrence": "Récurrence",
            "isRecurring": "Tâche récurrente",
            "type": "Type",
            "daily": "Quotidien",
            "weekly": "Hebdomadaire",
            "monthly": "Mensuel",
            "yearly": "Annuel",
            "interval": "Intervalle",
            "daysOfWeek": "Jours de la semaine",
            "days": {
                "mon": "Lu",
                "tue": "Ma",
                "wed": "Me",
                "thu": "Je",
                "fri": "Ve",
                "sat": "Sa",
                "sun": "Di"
            },
            "dayOfMonth": "Jour du mois",
            "dayOfMonthLabel": "Jour (1-31)",
            "weekOfMonth": "Semaine du mois",
            "weekOfMonthLabel": "Semaine",
            "dayLabel": "Jour",
            "endRecurrence": "Fin de la récurrence",
            "neverEnds": "Jamais",
            "afterOccurrences": "Après X occurrences",
            "occurrences": "Occurrences",
            "onDate": "À une date",
            "endDate": "Date de fin"
        }
    },
    "users": {
        "created": "Utilisateur créé avec succès.",
        "updated": "Utilisateur mis à jour avec succès.",
        "deleted": "Utilisateur supprimé avec succès.",
        "addUser": "Ajouter un utilisateur",
        "editUser": "Modifier un utilisateur"
    },
    "timeEntries": {
        "created": "Temps enregistré",
        "updated": "Temps modifié",
        "deleted": "Temps supprimé",
        "noEntries": "Aucune activité pour cette période",
        "addEntry": "Ajouter une Activité",
        "editEntry": "Modifier un temps",
        "export": "Exporter",
        "exportTitle": "Exporter les temps",
        "exportCurrentMonth": "Mois en cours",
        "exportLastMonth": "Mois dernier",
        "exportCustomPeriod": "Période personnalisée",
        "exportFrom": "Du",
        "exportTo": "Au",
        "exportUsers": "Utilisateurs",
        "exportClient": "Client",
        "exportProjects": "Projets",
        "exportTags": "Tags",
        "exportAllClients": "Tous les clients",
        "exportLoading": "Export en cours...",
        "exportSuccess": "Export terminé !",
        "exportError": "Erreur lors de l'export."
    },
    "archive": {
        "title": "Archives",
        "empty": "Aucun ticket archivé.",
        "archiveButton": "Archiver",
        "unarchiveButton": "Désarchiver",
        "showArchived": "Voir les groupes archivés",
        "hideArchived": "Masquer les groupes archivés",
        "statusFinal": "Statut final",
        "groupArchiveDisabled": "Tous les tickets doivent être en statut final pour archiver le groupe.",
        "groupNonFinalTasks": "Il reste {count} ticket(s) sans statut final dans ce groupe."
    },
    "myTasks": {
        "title": "Mes tâches",
        "viewKanban": "Vue Kanban",
        "viewList": "Vue Liste",
        "allProjects": "Tous les projets",
        "allGroups": "Tous les groupes",
        "allTypes": "Tous les types",
        "allPriorities": "Toutes les priorités",
        "allEfforts": "Tous les efforts",
        "allAssignees": "Tous",
        "noTasks": "Aucune tâche",
        "backlog": "Backlog",
        "createTask": "Créer une tâche",
        "sortBy": "Trier par",
        "sortDefault": "Par défaut",
        "sortDeadline": "Échéance",
        "sortScheduledStart": "Date planifiée",
        "dropRefused": "Aucun statut de cette colonne dans le workflow de ce projet"
    },
    "dashboard": {
        "title": "Tableau de bord",
        "noData": "Aucune donnée",
        "noPriority": "Sans priorité",
        "noProject": "Sans projet",
        "hoursWorked": "Heures travaillées",
        "inProgress": "En cours",
        "done": "Terminé",
        "filters": {
            "period": "Période",
            "project": "Projet",
            "user": "Utilisateur",
            "allProjects": "Tous les projets",
            "allUsers": "Tous les utilisateurs"
        },
        "periods": {
            "thisWeek": "Cette semaine",
            "lastWeek": "Semaine dernière",
            "thisMonth": "Ce mois",
            "lastMonth": "Mois dernier"
        },
        "stats": {
            "hoursPeriod": "Heures sur la période",
            "myActiveTasks": "Mes tâches actives",
            "completed": "terminée(s)",
            "totalTasks": "Tâches totales",
            "unassigned": "non assignée(s)",
            "projects": "Projets",
            "users": "utilisateur(s)"
        },
        "charts": {
            "hoursByDay": "Heures par jour",
            "hoursByProject": "Temps par projet",
            "tasksByStatus": "Tâches par statut",
            "tasksByPriority": "Tâches par priorité",
            "tasksByProject": "Tâches par projet"
        },
        "days": {
            "mon": "Lun",
            "tue": "Mar",
            "wed": "Mer",
            "thu": "Jeu",
            "fri": "Ven",
            "sat": "Sam",
            "sun": "Dim"
        }
    },
    "sidebar": {
        "myTasks": "Mes tâches",
        "general": {
            "section": "Gestion de projet",
            "dashboard": "Tableau de bord",
            "myTasks": "Mes tâches",
            "projects": "Projets",
            "timeTracking": "Suivi de temps"
        },
        "admin": {
            "section": "Administration",
            "teamAbsences": "Absences équipe",
            "administration": "Administration"
        }
    },
    "common": {
        "cancel": "Annuler",
        "save": "Enregistrer",
        "edit": "Modifier",
        "delete": "Supprimer",
        "add": "Ajouter",
        "loading": "Chargement...",
        "archived": "Archivé",
        "noClient": "Aucun client",
        "untitled": "Sans titre",
        "dateFilter": "Date",
        "today": "Aujourd'hui",
        "thisWeek": "Cette semaine",
        "clear": "Effacer",
        "day": "Jour",
        "weekShort": "Sem."
    },
    "gitea": {
        "settings": {
            "title": "Configuration Gitea",
            "url": "URL du serveur",
            "urlPlaceholder": "https://git.example.com",
            "token": "Token API",
            "tokenPlaceholder": "Entrez un nouveau token",
            "tokenConfigured": "Token configuré",
            "save": "Enregistrer",
            "saved": "Configuration Gitea sauvegardée.",
            "testConnection": "Tester la connexion",
            "testSuccess": "Connexion réussie.",
            "testFailed": "Connexion échouée."
        },
        "branch": {
            "title": "Git",
            "create": "Créer une branche",
            "created": "Branche créée avec succès.",
            "copy": "Copier le nom",
            "copied": "Nom de branche copié.",
            "type": "Type",
            "baseBranch": "Branche de base",
            "preview": "Aperçu",
            "types": {
                "feature": "feature",
                "fix": "fix",
                "refactor": "refactor",
                "hotfix": "hotfix",
                "chore": "chore"
            },
            "noBranches": "Aucune branche liée.",
            "commits": "Commits",
            "noCommits": "Aucun commit."
        },
        "pr": {
            "title": "Pull Requests",
            "noPrs": "Aucune pull request.",
            "open": "Ouverte",
            "merged": "Mergée",
            "closed": "Fermée",
            "ci": "CI/CD"
        },
        "error": "Erreur de connexion à Gitea.",
        "notConfigured": "Gitea non configuré pour ce projet."
    },
    "notification": {
        "title": "Notifications",
        "markAllRead": "Tout marquer comme lu",
        "empty": "Aucune notification",
        "ticketCreated": "Nouveau ticket client {number}",
        "ticketStatusChanged": "Ticket {number} mis à jour",
        "timeAgo": {
            "now": "À l'instant",
            "minutes": "Il y a {n} min",
            "hours": "Il y a {n}h",
            "days": "Il y a {n}j"
        }
    },
    "profile": {
        "title": "Mon profil",
        "changeAvatar": "Changer l'avatar",
        "removeAvatar": "Supprimer l'avatar",
        "cropAvatar": "Recadrer l'avatar",
        "apiToken": {
            "title": "Token API MCP",
            "help": "Utilisé pour authentifier le serveur MCP HTTP (à coller dans le header Authorization: Bearer …). Ne pas partager.",
            "label": "Token",
            "empty": "Aucun token généré pour le moment.",
            "generate": "Générer un token",
            "regenerate": "Régénérer",
            "copy": "Copier",
            "copied": "Token copié dans le presse-papiers.",
            "copyFailed": "Impossible de copier le token.",
            "regenerated": "Nouveau token généré. L'ancien token est désormais invalide.",
            "confirmTitle": "Régénérer le token MCP ?",
            "confirmMessage": "L'ancien token sera immédiatement invalidé. Tous les clients MCP utilisant ce token devront être reconfigurés."
        }
    },
    "bookstack": {
        "settings": {
            "title": "Configuration BookStack",
            "url": "URL du serveur",
            "urlPlaceholder": "https://wiki.example.com",
            "tokenId": "Token ID",
            "tokenIdPlaceholder": "Entrez le Token ID",
            "tokenSecret": "Token Secret",
            "tokenSecretPlaceholder": "Entrez le Token Secret",
            "tokenConfigured": "Token configuré",
            "save": "Enregistrer",
            "saved": "Configuration BookStack sauvegardée.",
            "testConnection": "Tester la connexion",
            "testSuccess": "Connexion réussie.",
            "testFailed": "Connexion échouée."
        },
        "links": {
            "title": "Documentation",
            "searchPlaceholder": "Rechercher une page ou un livre...",
            "noResults": "Aucun résultat",
            "empty": "Aucun document lié"
        }
    },
    "zimbra": {
        "settings": {
            "title": "Calendrier Zimbra",
            "serverUrl": "URL du serveur CalDAV",
            "serverUrlPlaceholder": "https://mail.ovh.com",
            "username": "Nom d'utilisateur",
            "usernamePlaceholder": "user{'@'}domain.com",
            "calendarPath": "Chemin du calendrier",
            "calendarPathPlaceholder": "/dav/user{'@'}domain.com/Calendar/",
            "password": "Mot de passe",
            "passwordConfigured": "Mot de passe configuré",
            "enabled": "Activer la synchronisation CalDAV",
            "save": "Enregistrer",
            "saved": "Configuration Zimbra enregistrée",
            "testConnection": "Tester la connexion",
            "testSuccess": "Connexion réussie",
            "testFailed": "Connexion échouée"
        }
    },
    "sharedFiles": {
        "title": "Documents",
        "root": "Racine",
        "empty": "Ce dossier est vide.",
        "noResults": "Aucun document ne correspond à votre recherche.",
        "searchPlaceholder": "Rechercher dans tout le partage…",
        "download": "Télécharger",
        "reload": "Recharger",
        "previewError": "Aperçu impossible. Téléchargez le fichier pour l'ouvrir.",
        "colName": "Nom",
        "colSize": "Taille",
        "colModified": "Modifié le",
        "sidebar": {
            "title": "Documents"
        }
    },
    "adminShare": {
        "title": "Partage réseau (SMB)",
        "host": "Serveur",
        "hostPlaceholder": "ex. WIN-SRV ou 192.168.1.10",
        "shareName": "Nom du partage",
        "shareNamePlaceholder": "ex. Documents",
        "basePath": "Sous-dossier racine (optionnel)",
        "basePathPlaceholder": "ex. /Projets",
        "domain": "Domaine / groupe de travail",
        "domainPlaceholder": "WORKGROUP",
        "username": "Identifiant",
        "usernamePlaceholder": "ex. lesstime",
        "password": "Mot de passe",
        "passwordConfigured": "Un mot de passe est déjà enregistré.",
        "enabled": "Activer l'accès au partage",
        "save": "Enregistrer",
        "saved": "Configuration enregistrée.",
        "testConnection": "Tester la connexion",
        "testSuccess": "Connexion réussie.",
        "testFailed": "Échec de la connexion."
    },
    "taskRecurrence": {
        "created": "Récurrence créée",
        "updated": "Récurrence mise à jour",
        "deleted": "Récurrence supprimée"
    },
    "recurrence": {
        "daily": "Quotidien",
        "weekly": "Hebdomadaire",
        "monthly": "Mensuel",
        "yearly": "Annuel"
    },
    "mail": {
        "title": "Messagerie",
        "sidebar": {
            "title": "Messagerie",
            "ariaLabel": "Accès à la messagerie, {count} messages non lus"
        },
        "admin": {
            "title": "Configuration messagerie",
            "protocol": "Protocole",
            "imapSection": "Réception (IMAP)",
            "smtpSection": "Envoi (SMTP)",
            "host": "Serveur",
            "port": "Port",
            "encryption": "Chiffrement",
            "username": "Adresse e-mail",
            "password": "Mot de passe",
            "passwordSet": "Mot de passe déjà configuré — laisser vide pour conserver",
            "sentFolderPath": "Dossier des envois",
            "enabled": "Activer la synchronisation mail",
            "test": "Tester la connexion",
            "testSuccess": "Connexion IMAP réussie",
            "testFailed": "Échec de connexion",
            "save": "Enregistrer",
            "saveSuccess": "Configuration enregistrée",
            "ovhDefaultsHelp": "OVH : ssl0.ovh.net (port 993 IMAP / 465 SMTP)"
        },
        "folders": "Dossiers",
        "messages": "Messages",
        "viewer": "Lecture",
        "empty": {
            "folder": "Aucun dossier disponible.",
            "list": "Aucun message dans ce dossier.",
            "viewer": "Sélectionnez un message pour le lire."
        },
        "preview": {
            "open": "Prévisualiser",
            "close": "Fermer l'aperçu",
            "loading": "Chargement de l'aperçu…",
            "unavailable": "Aperçu indisponible pour ce type de fichier."
        },
        "folderTree": {
            "expand": "Déplier le dossier",
            "collapse": "Replier le dossier"
        },
        "systemFolder": {
            "inbox": "Boîte de réception",
            "sent": "Éléments envoyés",
            "drafts": "Brouillons",
            "archive": "Archives",
            "trash": "Corbeille",
            "junk": "Indésirables"
        },
        "actions": {
            "refresh": "Actualiser",
            "createTask": "Créer une tâche",
            "linkTask": "Lier à une tâche",
            "markRead": "Marquer comme lu",
            "markUnread": "Marquer comme non lu",
            "flag": "Marquer important",
            "unflag": "Retirer l'importance",
            "download": "Télécharger",
            "showImages": "Afficher les images"
        },
        "errors": {
            "syncFailed": "Erreur lors de la synchronisation.",
            "fetchFailed": "Impossible de charger les messages.",
            "notAuthorized": "Vous n'avez pas accès à la messagerie."
        },
        "configuration": {
            "saved": "Configuration mail enregistrée."
        },
        "task": {
            "created": "Tâche créée depuis le mail.",
            "linked": "Mail lié à la tâche.",
            "unlinked": "Lien supprimé."
        },
        "createTaskModal": {
            "title": "Créer une tâche depuis ce mail",
            "submit": "Créer la tâche",
            "projectLabel": "Projet *",
            "projectPlaceholder": "Sélectionner un projet",
            "groupLabel": "Groupe (optionnel)",
            "groupPlaceholder": "Aucun groupe",
            "statusLabel": "Statut",
            "assigneeLabel": "Assigné à",
            "assigneePlaceholder": "Aucun",
            "titleHint": "Le titre sera rempli depuis le sujet du mail.",
            "descriptionHint": "La description sera remplie depuis le corps du mail."
        },
        "linkTaskModal": {
            "title": "Lier à une tâche existante",
            "submit": "Lier la tâche",
            "searchPlaceholder": "Rechercher une tâche par titre…",
            "projectFilter": "Filtrer par projet",
            "projectAll": "Tous les projets",
            "empty": "Aucune tâche correspondante.",
            "loading": "Recherche en cours…"
        },
        "taskTab": {
            "title": "Mails",
            "empty": "Aucun mail lié à cette tâche.",
            "openInMailer": "Ouvrir dans la messagerie",
            "unlinkConfirm": "Délier ce mail ?"
        },
        "sync": {
            "dispatched": "Synchronisation lancée en arrière-plan."
        },
        "attachments": "Pièces jointes",
        "noAttachments": "Aucune pièce jointe.",
        "from": "De",
        "to": "À",
        "cc": "Cc",
        "date": "Date",
        "subject": "Sujet",
        "noSubject": "(Sans objet)",
        "loadMore": "Charger plus",
        "loading": "Chargement…",
        "hasAttachments": "Pièces jointes",
        "unread": "non lu | non lus",
        "remoteImagesBlocked": "Les images distantes sont masquées pour votre sécurité."
    },
    "absences": {
        "title": "Mes absences",
        "teamTitle": "Absences de l'équipe",
        "newRequest": "Nouvelle demande",
        "daySingular": "jour",
        "daysPlural": "jours",
        "noBalance": "Aucun solde à afficher.",
        "noRequests": "Aucune demande.",
        "remaining": "restants",
        "acquired": "acquis",
        "acquiredN1": "Acquis (N-1)",
        "acquiringN": "En cours d'acquisition (N)",
        "acquiringHint": "posables par anticipation",
        "taken": "pris",
        "pending": "en attente",
        "available": "disponible",
        "types": {
            "cp": "Congés payés",
            "mariage_pacs": "Mariage / PACS",
            "naissance": "Naissance",
            "conge_parental": "Congé parental",
            "deces": "Décès proche",
            "maladie": "Arrêt maladie"
        },
        "status": {
            "pending": "En attente",
            "approved": "Approuvée",
            "rejected": "Refusée",
            "cancelled": "Annulée"
        },
        "halfDay": {
            "matin": "Matin",
            "apres_midi": "Après-midi"
        },
        "table": {
            "type": "Type",
            "period": "Période",
            "days": "Jours",
            "status": "Statut",
            "employee": "Salarié",
            "year": "Année",
            "requestedAt": "Demandé le",
            "actions": "Actions"
        },
        "filters": {
            "allStatuses": "Tous les statuts",
            "allTypes": "Tous les types",
            "allYears": "Toutes les années",
            "allEmployees": "Tous les salariés"
        },
        "form": {
            "type": "Type d'absence",
            "startDate": "Date de début",
            "endDate": "Date de fin",
            "startHalfDay": "Demi-journée (début)",
            "endHalfDay": "Demi-journée (fin)",
            "halfDayCheckbox": "Demi-journée",
            "reason": "Motif",
            "reasonPlaceholder": "Précisez le motif si nécessaire…",
            "justification": "Justificatif",
            "computed": "{days} décompté(s)",
            "balanceAfter": "Solde restant après cette demande : {value}",
            "negativeWarning": "Cette demande dépasse votre solde disponible.",
            "noticeWarning": "Le délai de prévenance ({days} jours) n'est pas respecté.",
            "submit": "Soumettre la demande",
            "justificationRequired": "Un justificatif est requis pour ce type d'absence.",
            "fullDay": "Journée entière",
            "balanceAt": "Solde au {date}",
            "balanceAfterValidation": "Solde après validation",
            "duration": "Durée de la demande",
            "commentPlaceholder": "Écrire un commentaire…",
            "serverError": "La demande n'a pas pu être enregistrée.",
            "errors": {
                "typeRequired": "Veuillez choisir un type d'absence.",
                "startRequired": "Veuillez indiquer une date de début.",
                "endRequired": "Veuillez indiquer une date de fin.",
                "endBeforeStart": "La date de fin doit être après la date de début.",
                "zeroDays": "La période sélectionnée ne décompte aucun jour.",
                "justificationRequired": "Un justificatif est obligatoire pour ce type d'absence."
            }
        },
        "detail": {
            "title": "Détail de la demande",
            "timeline": "Historique",
            "created": "Demande créée",
            "reviewed": "Traitée par {name}",
            "rejectionReason": "Motif du refus",
            "downloadJustification": "Télécharger le justificatif",
            "cancel": "Annuler ma demande",
            "cancelConfirm": "Annuler cette demande ?"
        },
        "review": {
            "approve": "Valider",
            "reject": "Refuser",
            "rejectTitle": "Refuser la demande",
            "rejectReasonLabel": "Motif du refus",
            "rejectReasonPlaceholder": "Expliquez la raison du refus…",
            "confirm": "Confirmer"
        },
        "admin": {
            "tabs": {
                "requests": "Demandes",
                "calendar": "Calendrier",
                "balances": "Soldes",
                "employees": "Employés"
            },
            "kpis": {
                "pending": "En attente",
                "todayAbsent": "Absents aujourd'hui",
                "weekAbsent": "Absents cette semaine"
            },
            "balancesTable": {
                "employee": "Salarié",
                "type": "Type",
                "period": "Période",
                "acquired": "Acquis (N-1)",
                "acquiring": "En cours (N)",
                "taken": "Pris",
                "pending": "En attente",
                "available": "Disponible",
                "adjust": "Ajuster"
            },
            "adjust": {
                "title": "Ajuster le solde",
                "acquired": "Acquis (N-1)",
                "acquiring": "En cours d'acquisition (N)",
                "taken": "Pris",
                "save": "Enregistrer"
            },
            "employees": {
                "columns": {
                    "name": "Nom",
                    "contract": "Contrat",
                    "cpTaken": "CP pris",
                    "cpRemaining": "CP restants"
                },
                "empty": "Aucun employé. Cochez « Employé » sur un utilisateur dans l'administration.",
                "noContract": "—",
                "drawer": {
                    "title": "Informations employé",
                    "save": "Enregistrer"
                },
                "fields": {
                    "hireDate": "Date d'embauche",
                    "endDate": "Date de sortie",
                    "contractType": "Type de contrat",
                    "workTimeRatio": "Temps de travail (ex : 1.0)",
                    "annualLeaveDays": "CP annuels (jours)",
                    "referencePeriodStart": "Début période réf. (MM-DD)",
                    "initialLeaveBalance": "Solde CP initial"
                },
                "contract": {
                    "cdi": "CDI",
                    "cdd": "CDD",
                    "stage": "Stage",
                    "alternance": "Alternance",
                    "autre": "Autre"
                }
            }
        },
        "policies": {
            "title": "Politiques d'absence",
            "subtitle": "Réglez les défauts par type d'absence — convention de référence : Syntec (IDCC 1486), à confirmer selon le code APE.",
            "type": "Type",
            "daysPerYear": "Jours / an",
            "daysPerEvent": "Jours / événement",
            "justificationRequired": "Justificatif requis",
            "noticeDays": "Délai prévenance (j)",
            "countWorkingDaysOnly": "Jours ouvrés",
            "active": "Actif",
            "save": "Enregistrer"
        },
        "toast": {
            "created": "Demande d'absence créée.",
            "approved": "Demande validée.",
            "rejected": "Demande refusée.",
            "cancelled": "Demande annulée.",
            "justificationUploaded": "Justificatif ajouté.",
            "balanceAdjusted": "Solde ajusté.",
            "policyUpdated": "Politique mise à jour."
        }
    }
}
