{
    "nav": {
        "mainSidebarAria": "Barre latérale principale",
        "primaryNavigationAria": "Navigation principale",
        "contentAreaAria": "Zone de contenu",
        "analytics": "Analytiques",
        "integration": "Intégrations",
        "dashboardAria": "Aller au tableau de bord",
        "opportunitiesAria": "Aller aux opportunités",
        "goalsAria": "Aller aux objectifs",
        "funnelsAria": "Aller aux entonnoirs",
        "eventsAria": "Aller aux événements",
        "events": "Événements",
        "aiVisibility": "Visibilité IA",
        "aiVisibilityAria": "Aller vers l’analyse de visibilité IA",
        "aiChatbots": "Chatbots IA",
        "aiChatbotsAria": "Aller vers l’analyse des chatbots IA",
        "utmAria": "Aller au tableau UTM",
        "utmBuilder": "Générateur UTM",
        "utmBuilderAria": "Aller au générateur UTM",
        "apiClientsAria": "Aller aux clients API",
        "apiReferenceAria": "Aller à la référence API",
        "dashboard": "Tableau de bord",
        "opportunities": "Opportunités",
        "goals": "Objectifs",
        "funnels": "Entonnoirs",
        "utm": "UTM",
        "apiClients": "Clients API",
        "apiReference": "Référence API",
        "expandItem": "Développer {{item}}",
        "collapseItem": "Réduire {{item}}",
        "imports": "Imports",
        "importsAria": "Aller aux imports",
        "importExport": "Import et export",
        "importExportAria": "Aller à l’import et à l’export",
        "account": "Compte",
        "resources": "Ressources",
        "docs": "Docs",
        "docsAria": "Ouvrir la documentation HitKeep dans un nouvel onglet",
        "support": "Support",
        "supportAria": "Ouvrir le support HitKeep dans un nouvel onglet",
        "settings": "Paramètres",
        "settingsAria": "Aller aux paramètres",
        "emailReports": "Rapports par email",
        "emailReportsAria": "Aller aux rapports par email",
        "administration": "Administration",
        "systemSettings": "Paramètres système",
        "systemSettingsAria": "Aller aux paramètres système",
        "teamOverview": "Aperçu de l'équipe",
        "teamOverviewAria": "Aller à l'aperçu de l'équipe",
        "teamMembers": "Membres de l'équipe",
        "teamMembersAria": "Aller aux membres de l'équipe",
        "team": "Équipe",
        "teamAria": "Aller à la gestion d'équipe",
        "teamSectionToggleAria": "Basculer la navigation d'équipe",
        "teamSettings": "Paramètres de l'équipe",
        "teamSettingsAria": "Aller aux paramètres de l'équipe",
        "ecommerce": "E-commerce",
        "ecommerceAria": "Aller vers l’analyse e-commerce",
        "systemStatus": "État du système",
        "systemStatusAria": "Aller à l’état du système",
        "googleSearchConsole": "Search Console",
        "googleSearchConsoleAria": "Accéder à l'intégration Google Search Console",
        "webVitals": "Web Vitals",
        "webVitalsAria": "Ouvrir les analyses Web Vitals"
    },
    "auditTable": {
        "empty": "Aucune entrée d’audit trouvée",
        "filters": {
            "aria": "Filtres d’audit",
            "action": "Action",
            "outcome": "Résultat",
            "targetType": "Zone",
            "dateRange": "Période",
            "dateRangePlaceholder": "Période",
            "search": "Rechercher",
            "searchPlaceholder": "Rechercher acteurs, cibles, IP ou ID de requête...",
            "allActions": "Toutes les actions",
            "allTargets": "Toutes les zones",
            "allOutcomes": "Tous les résultats"
        },
        "actions": {
            "refresh": "Actualiser",
            "export": "Exporter",
            "clearFilters": "Effacer les filtres",
            "expandRow": "Afficher les preuves",
            "collapseRow": "Masquer les preuves",
            "roleUpdated": "Rôle modifié",
            "mfaDisabled": "MFA désactivée",
            "backupTriggered": "Sauvegarde lancée",
            "backupCompleted": "Sauvegarde terminée",
            "backupFailed": "Sauvegarde échouée",
            "spamRefreshed": "Filtre anti-spam actualisé",
            "mailTested": "Test e-mail",
            "diagnosticsExported": "Diagnostic exporté",
            "accessDenied": "Accès refusé",
            "authLoginSucceeded": "Connexion réussie",
            "authLoginFailed": "Connexion échouée",
            "authMfaRequired": "MFA requise",
            "authMfaSucceeded": "MFA réussie",
            "authLogout": "Déconnexion",
            "authSessionExtended": "Session prolongée",
            "teamCreated": "Équipe créée",
            "teamUpdated": "Équipe mise à jour",
            "teamArchived": "Équipe archivée",
            "teamActiveChanged": "Équipe active changée",
            "memberInvited": "Membre invité",
            "memberInviteAccepted": "Invitation acceptée",
            "memberInviteResent": "Invitation renvoyée",
            "memberInviteRevoked": "Invitation révoquée",
            "memberAdded": "Membre ajouté",
            "memberRoleUpdated": "Rôle du membre modifié",
            "memberRemoved": "Membre retiré",
            "memberLeft": "Membre parti",
            "ownershipTransferred": "Propriété transférée",
            "siteCreated": "Site créé",
            "siteDeleted": "Site supprimé",
            "siteRetentionUpdated": "Rétention modifiée",
            "siteTransferredIn": "Site transféré entrant",
            "siteTransferredOut": "Site transféré sortant",
            "siteExclusionCreated": "Exclusion créée",
            "siteExclusionDeleted": "Exclusion supprimée",
            "permissionSiteMemberGranted": "Accès au site accordé",
            "permissionSiteMemberRoleUpdated": "Rôle d’accès au site modifié",
            "permissionSiteMemberRevoked": "Accès au site révoqué",
            "importUploadCreated": "Import créé",
            "importFileUploaded": "Fichier d’import téléversé",
            "importValidationStarted": "Validation d’import lancée",
            "importValidated": "Import validé",
            "importValidationFailed": "Validation d’import échouée",
            "importQueued": "Import en file",
            "importRequeued": "Import remis en file",
            "importStarted": "Import lancé",
            "importFailed": "Import échoué",
            "importCompleted": "Import terminé",
            "importDeleted": "Import supprimé",
            "importDataCleared": "Données importées effacées",
            "importDataWritten": "Données importées écrites",
            "googleSearchConsoleConnected": "Search Console connecté",
            "googleSearchConsoleConnectFailed": "Connexion Search Console échouée",
            "googleSearchConsoleDisconnected": "Search Console déconnecté",
            "googleSearchConsolePropertiesRefreshed": "Propriétés Search Console actualisées",
            "googleSearchConsolePropertiesRefreshFailed": "Actualisation des propriétés Search Console échouée",
            "googleSearchConsolePropertyMapped": "Propriété Search Console associée",
            "googleSearchConsolePropertyUnmapped": "Association de propriété Search Console retirée",
            "googleSearchConsoleSyncRequested": "Synchronisation Search Console demandée",
            "googleSearchConsoleSyncStarted": "Synchronisation Search Console lancée",
            "googleSearchConsoleSyncImportPrepared": "Import Search Console préparé",
            "googleSearchConsoleSyncImported": "Données Search Console importées",
            "googleSearchConsoleSyncFailed": "Synchronisation Search Console échouée"
        },
        "columns": {
            "evidence": "Preuves",
            "time": "Heure",
            "actor": "Acteur",
            "action": "Action",
            "targetType": "Zone",
            "target": "Cible",
            "outcome": "Résultat",
            "ipAddress": "Adresse IP",
            "country": "Pays",
            "details": "Détails"
        },
        "outcomes": {
            "success": "Réussite",
            "failure": "Échec",
            "denied": "Refusé"
        },
        "targetTypes": {
            "system": "Système",
            "mail": "E-mail",
            "user": "Utilisateur",
            "team": "Équipe",
            "site": "Site",
            "import": "Import",
            "siteExclusion": "Exclusion de site",
            "apiClient": "Client API",
            "backup": "Sauvegarde",
            "spamFilter": "Filtre anti-spam",
            "diagnostics": "Diagnostic",
            "permission": "Permission",
            "googleSearchConsoleConnection": "Connexion Search Console",
            "googleSearchConsoleProperty": "Propriété Search Console",
            "googleSearchConsoleSync": "Synchronisation Search Console"
        },
        "roles": {
            "owner": "Propriétaire",
            "admin": "Admin",
            "member": "Membre",
            "user": "Utilisateur"
        },
        "evidence": {
            "details": "Détails complets",
            "actorId": "ID acteur",
            "actorRole": "Rôle acteur",
            "teamId": "ID équipe",
            "targetType": "Type de cible",
            "targetId": "ID cible",
            "targetUserId": "ID utilisateur cible",
            "requestId": "ID de requête",
            "userAgent": "User agent"
        },
        "pagination": {
            "summary": "{{start}}-{{end}} sur {{total}} entrées",
            "empty": "Aucune entrée à afficher"
        }
    },
    "importExport": {
        "title": "Import et export",
        "tabs": {
            "import": "Importer",
            "export": "Exporter"
        },
        "import": {
            "title": "Importer"
        },
        "export": {
            "title": "Exporter",
            "allSites": {
                "title": "Tous les sites accessibles",
                "description": "Téléchargez les données d’analyse de tous les sites auxquels vous avez accès.",
                "primaryAction": "Télécharger tous les sites",
                "otherFormats": "Autres formats",
                "success": "Export des données d’analyse de tous les sites accessibles téléchargé.",
                "error": "Échec de l’export. Veuillez réessayer."
            },
            "siteExports": {
                "title": "Exports de sites",
                "description": "Téléchargez un site à la fois lorsque vous avez seulement besoin d’une propriété précise.",
                "primaryAction": "Télécharger le site",
                "loading": "Chargement des sites...",
                "empty": "Aucun site disponible à exporter.",
                "success": "Export du site téléchargé.",
                "error": "Échec de l’export. Réessayez ou choisissez un autre format."
            }
        }
    },
    "imports": {
        "title": "Imports",
        "noSiteDescription": "Sélectionnez un site avant d’importer des données historiques.",
        "providerFallback": "Importateur sélectionné",
        "running": "L’import est en cours. Cette page se mettra à jour automatiquement.",
        "completed": "Import terminé.",
        "flow": {
            "title": "Import du site"
        },
        "permission": {
            "title": "Accès d’import requis",
            "description": "Les propriétaires du site, les administrateurs du site et les administrateurs d’instance peuvent importer des données."
        },
        "providers": {
            "title": "Choisir un importateur",
            "loading": "Chargement des importateurs...",
            "selectAria": "Sélectionner l’importateur {{provider}}",
            "guide": "Guide d’import",
            "guideAria": "Ouvrir le guide d’import {{provider}}",
            "empty": "Aucun importateur n’est disponible pour ce site."
        },
        "dropzone": {
            "title": "Déposez les fichiers ici"
        },
        "files": {
            "count": "fichiers",
            "addMore": "Ajouter des fichiers",
            "rejectedUnsupportedSummary": "{0} :",
            "rejectedUnsupportedDetail": "{{expected}} attendu."
        },
        "actions": {
            "removeFile": "Retirer le fichier",
            "clearFiles": "Effacer",
            "uploadValidate": "Téléverser et valider",
            "startImport": "Démarrer l’import",
            "newImport": "Nouvel import",
            "changeProvider": "Changer d’importateur",
            "delete": "Supprimer"
        },
        "validation": {
            "title": "Manifeste de validation"
        },
        "metrics": {
            "rowsAccepted": "Lignes acceptées",
            "rowsSkipped": "Lignes ignorées",
            "files": "Fichiers",
            "range": "Période"
        },
        "datasets": {
            "title": "Jeux de données",
            "dataset": "Jeu de données",
            "rows": "Lignes",
            "pageviews": "Pages vues",
            "events": "Événements"
        },
        "events": {
            "title": "Couverture des événements",
            "total": "Événements",
            "names": "Noms",
            "properties": "Propriétés"
        },
        "properties": {
            "title": "Propriétés d’événement",
            "attributed": "Lignes attribuées",
            "unattributed": "Lignes non attribuées",
            "unattributedEvents": "Événements non attribués"
        },
        "dimensions": {
            "title": "Dimensions d’événement",
            "available": "Disponibles",
            "unavailable": "Indisponibles"
        },
        "overlap": {
            "title": "Chevauchement avec les données natives",
            "description": "{{rows}} lignes importées chevauchent des données HitKeep existantes et seront ignorées."
        },
        "warnings": {
            "title": "Avertissements"
        },
        "history": {
            "title": "Historique des imports",
            "empty": "Aucun import pour le moment.",
            "importer": "Importateur",
            "status": "Statut",
            "rows": "Lignes",
            "created": "Créé"
        },
        "status": {
            "uploading": "Téléversement",
            "validating": "Validation",
            "validated": "Validé",
            "validation_failed": "Validation échouée",
            "queued": "En file",
            "running": "En cours",
            "completed": "Terminé",
            "failed": "Échoué",
            "deleted": "Supprimé"
        },
        "errors": {
            "generic": "L’import a échoué. Veuillez réessayer.",
            "loadImporters": "Impossible de charger les importateurs.",
            "loadHistory": "Impossible de charger l’historique des imports."
        }
    },
    "teams": {
        "switcher": {
            "label": "Équipes",
            "regionAria": "Sélecteur d'équipe",
            "selectAria": "Sélectionner l'équipe active",
            "placeholder": "Sélectionner une équipe",
            "currentTeamAria": "Équipe actuelle : {{name}}",
            "addTeamAria": "Créer une nouvelle équipe",
            "openMenuAria": "Ouvrir le menu de l'équipe {{name}}",
            "menuAria": "Menu de l'équipe",
            "currentLabel": "Équipe actuelle"
        },
        "roles": {
            "owner": "Propriétaire",
            "admin": "Administrateur",
            "member": "Membre"
        },
        "management": {
            "title": "Membres de l'équipe",
            "subtitle": "Gérez les accès et les rôles pour {{team}}.",
            "openAction": "Gérer l'équipe",
            "openAria": "Ouvrir la gestion de l'équipe",
            "dialogTitle": "Gérer {{team}}",
            "inviteDialogTitle": "Inviter un membre de l'équipe",
            "noTeam": "Aucune équipe active sélectionnée.",
            "readOnly": "Vous pouvez voir les membres, mais vous ne pouvez pas gérer l'équipe avec votre rôle actuel.",
            "notAllowed": "Non autorisé",
            "empty": "Aucun membre d'équipe trouvé.",
            "removeAction": "Supprimer",
            "removeAria": "Supprimer {{email}} de l'équipe",
            "resendAction": "Renvoyer l'invitation",
            "revokeInviteAction": "Révoquer l'invitation",
            "transferOwnershipAction": "Transférer la propriété",
            "transferOwnershipAria": "Transférer la propriété de l'équipe à {{email}}",
            "resendInviteAria": "Renvoyer l'invitation de {{email}}",
            "revokeInviteAria": "Révoquer l'invitation de {{email}}",
            "confirmRemove": "Supprimer {{email}} de cette équipe ?",
            "confirmResendInvite": "Renvoyer l'invitation de {{email}} ?",
            "confirmRevokeInvite": "Révoquer l'invitation de {{email}} ?",
            "confirmTransferOwnership": "Transférer la propriété de l'équipe à {{email}} ? Vous deviendrez administrateur.",
            "pendingTitle": "Invitations en attente",
            "pendingSubtitle": "Invitations qui n'ont pas encore été acceptées.",
            "pendingEmpty": "Aucune invitation en attente.",
            "expiresLabel": "Expire",
            "invite": {
                "emailLabel": "Adresse e-mail",
                "emailPlaceholder": "user@example.com",
                "emailInvalid": "Saisissez une adresse e-mail valide.",
                "roleLabel": "Rôle",
                "submitAction": "Inviter un membre"
            },
            "status": {
                "inviteSent": "Invitation envoyée avec succès.",
                "inviteResent": "Invitation renvoyée avec succès.",
                "inviteRevoked": "Invitation révoquée avec succès.",
                "memberUpdated": "Membre mis à jour avec succès.",
                "roleUpdated": "Rôle mis à jour avec succès.",
                "memberRemoved": "Membre supprimé avec succès.",
                "ownershipTransferred": "Propriété transférée avec succès."
            },
            "errors": {
                "loadFailed": "Impossible de charger les membres de l'équipe.",
                "inviteFailed": "Impossible d'inviter le membre.",
                "inviteResendFailed": "Impossible de renvoyer l'invitation.",
                "inviteRevokeFailed": "Impossible de révoquer l'invitation.",
                "roleUpdateFailed": "Impossible de mettre à jour le rôle du membre.",
                "ownershipTransferFailed": "Impossible de transférer la propriété.",
                "removeFailed": "Impossible de supprimer le membre.",
                "forbidden": "Vous n'avez pas l'autorisation de gérer cette équipe.",
                "alreadyMember": "Cet utilisateur est déjà membre de l'équipe.",
                "lastOwner": "Au moins un propriétaire doit rester dans l'équipe.",
                "transferRequired": "Utilisez l'action dédiée au transfert pour attribuer le rôle de propriétaire.",
                "transferTargetInvalid": "La propriété ne peut être transférée qu'à un membre existant de l'équipe.",
                "ownershipTransferConflict": "Le transfert de propriété n'a pas pu être finalisé."
            }
        },
        "createDialog": {
            "title": "Créer une équipe",
            "nameLabel": "Nom de l'équipe",
            "namePlaceholder": "ex. Marketing",
            "nameRequired": "Le nom de l'équipe est obligatoire.",
            "createAction": "Créer l'équipe",
            "errors": {
                "createFailed": "Impossible de créer l'équipe. Veuillez réessayer.",
                "limitReached": "Limite d'équipes atteinte. Mettez à jour votre plan pour créer plus d'équipes."
            }
        }
    },
    "common": {
        "actions": {
            "apply": "Appliquer",
            "cancel": "Annuler",
            "clearAll": "Tout effacer",
            "close": "Fermer",
            "downloadXlsx": "Télécharger XLSX",
            "exportCsv": "Exporter CSV",
            "open": "Ouvrir",
            "refresh": "Actualiser",
            "save": "Enregistrer",
            "more": "Plus d'actions"
        },
        "previous": "Précédent",
        "next": "Suivant",
        "saved": "Enregistré",
        "saveFailed": "Échec de l'enregistrement. Veuillez réessayer.",
        "loading": "Chargement...",
        "columns": {
            "actions": "Actions",
            "added": "Ajouté",
            "created": "Créé",
            "device": "Appareil",
            "domain": "Domaine",
            "email": "E-mail",
            "name": "Nom",
            "owner": "Propriétaire",
            "path": "Chemin",
            "referrer": "Référent",
            "members": "Membres",
            "role": "Rôle",
            "sites": "Sites",
            "status": "Statut",
            "time": "Heure",
            "type": "Type",
            "value": "Valeur"
        },
        "devices": {
            "desktop": "Bureau",
            "mobile": "Mobile"
        },
        "direct": "Direct",
        "durationMinutesSeconds": "{{minutes}}m {{seconds}}s",
        "durationSeconds": "{{seconds}}s",
        "emailAddress": "Adresse e-mail",
        "emailPlaceholder": "you@example.com",
        "empty": {
            "noDataDescription": "Aucune donnée pour cette plage de temps.",
            "noDataTitle": "Pas encore de données"
        },
        "exportFormats": {
            "csv": "CSV",
            "xlsx": "XLSX",
            "parquet": "Parquet",
            "json": "JSON",
            "ndjson": "NDJSON"
        },
        "filters": {
            "country": "Pays: {{value}}",
            "city": "Ville: {{value}}",
            "provider": "Fournisseur: {{value}}",
            "asn": "ASN: {{value}}",
            "device": "Appareil: {{value}}",
            "language": "Langue: {{value}}",
            "page": "Page: {{value}}",
            "source": "Source: {{value}}",
            "browser": "Navigateur : {{value}}"
        },
        "kpis": {
            "conversionRate": "Taux de conversion"
        },
        "loadingSiteData": "Chargement des données du site...",
        "metricGroups": {
            "content": "Contenu",
            "acquisition": "Acquisition",
            "audience": "Audience",
            "location": "Localisation",
            "network": "Réseau"
        },
        "metrics": {
            "audience": "Audience",
            "browsers": "Navigateurs",
            "countries": "Pays",
            "cities": "Villes",
            "providers": "Fournisseurs",
            "asns": "ASN",
            "devices": "Appareils",
            "languages": "Langues",
            "pages": "Pages",
            "landingPages": "Pages d'entrée",
            "exitPages": "Pages de sortie",
            "geoModeAria": "Sélectionner la métrique d'audience",
            "pageModeAria": "Sélectionner la métrique des pages",
            "topPages": "Pages principales",
            "topSources": "Sources principales"
        },
        "noActiveFilter": "Aucun filtre actif",
        "noSiteSelected": "Aucun site sélectionné",
        "openInNewTabAria": "Ouvrir dans un nouvel onglet",
        "openUserMenuAria": "Ouvrir le menu utilisateur",
        "password": "Mot de passe",
        "passwordPlaceholder": "••••••••",
        "preparing": "Préparation...",
        "refreshDataTooltip": "Rafraîchir les données",
        "removeFilterAria": "Supprimer le filtre",
        "searchPlaceholder": "Rechercher...",
        "selectDateRange": "Sélectionner une plage de dates",
        "seriesChartAria": "Graphique de série temporelle avec les données des {{count}} derniers intervalles",
        "switchToDarkModeAria": "Passer au mode sombre",
        "switchToLightModeAria": "Passer au mode clair",
        "timeRangeSelectorAria": "Sélecteur de plage temporelle",
        "timeRanges": {
            "last24Hours": "Dernières 24 heures",
            "last7Days": "Derniers 7 jours",
            "last30Days": "Derniers 30 jours",
            "lastYear": "Dernière année",
            "customRange": "Plage personnalisée",
            "customShort": "Personnalisé",
            "customRangeSummary": "{{start}} - {{end}}",
            "customRangeHint": "Choisissez une heure de début et de fin précise à la minute près.",
            "customStart": "De",
            "customEnd": "À",
            "openCustomRangeAria": "Ouvrir la plage horaire personnalisée"
        },
        "unknownError": "Erreur inconnue",
        "unspecified": "Non spécifié",
        "visitors": "visiteurs",
        "copied": "Copié",
        "copyControl": {
            "copy": "Copier",
            "copied": "Copié",
            "failed": "Échec de la copie",
            "ariaLabel": "Copier dans le presse-papiers"
        },
        "yes": "Oui",
        "no": "Non",
        "enabled": "Activé",
        "disabled": "Désactivé",
        "unknown": "Inconnu"
    },
    "dashboard": {
        "breadcrumbOverview": "Aperçu",
        "filteredBadge": "Filtré",
        "rawHitsTitle": "Derniers hits",
        "noSiteDescription": "Sélectionnez ou créez un site pour voir les analytiques.",
        "openPageInNewTabAria": "Ouvrir la page dans un nouvel onglet",
        "openReferrerInNewTabAria": "Ouvrir le référent dans un nouvel onglet",
        "exportStatus": {
            "success": "Le téléchargement de l'export a démarré.",
            "error": "Échec de l'export des données filtrées. Veuillez réessayer."
        },
        "chartTitleWithRange": "Trafic: {{range}}",
        "chartTitleCustomRange": "Trafic: {{start}} - {{end}}",
        "chartTitleOverview": "Aperçu du trafic",
        "trafficChartAria": "Graphique du trafic avec les données des {{count}} derniers intervalles",
        "traffic": {
            "visitors": "Visiteurs",
            "trendLine": "Courbe de tendance"
        },
        "kpis": {
            "liveVisitors": "Visiteurs en direct",
            "pageviews": "Pages vues",
            "uniqueSessions": "Sessions uniques",
            "bounceRate": "Taux de rebond",
            "avgDuration": "Durée moy.",
            "pagesPerSession": "Pages / session"
        },
        "empty": {
            "noTrafficTitle": "Aucun trafic enregistré pour le moment",
            "noTrafficDescription": "Installez le snippet de suivi sur votre site pour commencer à collecter des données analytiques.",
            "teamTitle": "Aucun site dans {{team}} pour le moment",
            "teamDescription": "Créez le premier site dans {{team}} pour commencer à collecter des données analytiques pour cette équipe.",
            "getTrackingCode": "Obtenir le code de suivi",
            "createSite": "Créer un site"
        },
        "onboarding": {
            "title": "Checklist d’installation",
            "progress": "{{complete}} sur {{total}} terminé",
            "dismiss": "Masquer la checklist",
            "done": "Terminé",
            "current": "Étape actuelle",
            "steps": {
                "create_site": "Créer le premier site",
                "verify_tracking": "Recevoir le premier hit",
                "automatic_events": "Confirmer les événements automatiques",
                "invite_teammate": "Inviter un coéquipier",
                "schedule_report": "Planifier un rapport e-mail"
            },
            "actions": {
                "create_site": "Créer un site",
                "verify_tracking": "Vérifier le suivi",
                "automatic_events": "Ouvrir le suivi",
                "invite_teammate": "Inviter",
                "schedule_report": "Planifier"
            }
        }
    },
    "goals": {
        "manageAction": "Gérer les objectifs",
        "noSiteDescription": "Sélectionnez ou créez un site pour voir les objectifs.",
        "series": {
            "title": "Objectifs",
            "description": "Filtrer la série par objectif.",
            "addFilterPlaceholder": "Ajouter un filtre d'objectif",
            "emptyTitle": "Aucune conversion d'objectif pour le moment",
            "emptyDescription": "Créez un objectif et générez du trafic pour voir les conversions dans le temps."
        },
        "kpis": {
            "totalGoals": "Total des objectifs",
            "conversions": "Conversions"
        },
        "list": {
            "title": "Objectifs",
            "manageTooltip": "Gérer les objectifs",
            "emptyTitle": "Aucun objectif pour le moment",
            "emptyDescription": "Suivez des événements de conversion comme les inscriptions ou les achats.",
            "createAction": "Créer un objectif",
            "conversionsSuffix": "conversions",
            "conversionRateShort": "CR"
        },
        "manager": {
            "dialogTitle": "Gérer les objectifs",
            "dialogDescription": "Définissez des objectifs de conversion pour suivre des actions utilisateur ou des visites de pages spécifiques.",
            "empty": "Aucun objectif défini pour le moment.",
            "newAction": "Nouvel objectif",
            "addTitle": "Ajouter un nouvel objectif",
            "editTitle": "Modifier l’objectif",
            "editTooltip": "Modifier l’objectif",
            "deleteTooltip": "Supprimer l’objectif",
            "confirmDelete": "Supprimer l’objectif « {{name}} » ?",
            "namePlaceholder": "ex. Inscription réussie",
            "typePagePath": "Chemin",
            "typeCustomEvent": "Événement",
            "urlPathLabel": "Chemin",
            "eventNameLabel": "Événement",
            "urlPathPlaceholder": "/merci",
            "eventNamePlaceholder": "signup_completed",
            "urlPathHelp": "Déclenche quand un utilisateur visite une URL spécifique.",
            "eventNameHelpPrefix": "Déclenche quand vous appelez",
            "eventNameHelpSuffix": ".",
            "createAction": "Créer un objectif",
            "saveAction": "Enregistrer les modifications",
            "messages": {
                "createSuccess": "Objectif créé.",
                "createError": "Impossible de créer l’objectif.",
                "updateSuccess": "Objectif mis à jour.",
                "updateError": "Impossible de mettre à jour l’objectif.",
                "deleteSuccess": "Objectif supprimé.",
                "deleteError": "Impossible de supprimer l’objectif."
            }
        }
    },
    "funnels": {
        "manageAction": "Gérer les entonnoirs",
        "createAction": "Créer un entonnoir",
        "noSiteDescription": "Sélectionnez ou créez un site pour voir les entonnoirs.",
        "series": {
            "title": "Entonnoirs",
            "description": "Filtrer la série par entonnoir.",
            "addFilterPlaceholder": "Ajouter un filtre d'entonnoir",
            "emptyTitle": "Aucune activité d'entonnoir pour le moment",
            "emptyDescription": "Créez un entonnoir et générez du trafic pour voir les entrées et finalisations dans le temps."
        },
        "kpis": {
            "funnels": "Entonnoirs",
            "entries": "Entrées",
            "completions": "Finalisations",
            "completionRate": "Taux de finalisation"
        },
        "list": {
            "title": "Entonnoirs",
            "manageTooltip": "Gérer les entonnoirs",
            "emptyTitle": "Aucun entonnoir pour le moment",
            "emptyDescription": "Construisez un parcours d'événements pour mesurer les abandons et les conversions.",
            "createAction": "Créer un entonnoir",
            "stepsCount": "{{count}} étapes"
        },
        "manager": {
            "dialogTitle": "Gérer les entonnoirs",
            "dialogDescription": "Suivez les parcours utilisateur en plusieurs étapes.",
            "stepsLabel": "Étapes",
            "viewStats": "Voir les statistiques",
            "empty": "Aucun entonnoir défini pour le moment.",
            "newAction": "Nouvel entonnoir",
            "createTitle": "Créer un nouvel entonnoir",
            "editTitle": "Modifier l’entonnoir",
            "editTooltip": "Modifier l’entonnoir",
            "deleteTooltip": "Supprimer l’entonnoir",
            "confirmDelete": "Supprimer l’entonnoir « {{name}} » ?",
            "namePlaceholder": "ex: Flux de paiement",
            "stepPathPlaceholder": "/chemin",
            "stepEventPlaceholder": "event_name",
            "addStep": "Ajouter une étape",
            "createAction": "Créer un entonnoir",
            "saveAction": "Enregistrer les modifications",
            "typePagePath": "Chemin",
            "typeCustomEvent": "Événement",
            "messages": {
                "createSuccess": "Entonnoir créé.",
                "createError": "Impossible de créer l’entonnoir.",
                "updateSuccess": "Entonnoir mis à jour.",
                "updateError": "Impossible de mettre à jour l’entonnoir.",
                "deleteSuccess": "Entonnoir supprimé.",
                "deleteError": "Impossible de supprimer l’entonnoir."
            }
        },
        "viewer": {
            "dialogTitle": "Analyse d'entonnoir",
            "editAction": "Modifier l’entonnoir",
            "droppedSuffix": "abandons",
            "retention": "rétention",
            "entry": "Entrée"
        }
    },
    "utm": {
        "noSiteDescription": "Sélectionnez ou créez un site pour voir les métriques UTM.",
        "series": {
            "title": "Performance UTM",
            "description": "Suivez le trafic généré par UTM dans le temps.",
            "emptyTitle": "Aucune activité UTM pour le moment",
            "emptyDescription": "Ajoutez des paramètres UTM à vos liens de campagne pour suivre leurs performances."
        },
        "metrics": {
            "topCampaigns": "Top campagnes",
            "topContents": "Top contenus",
            "topMediums": "Top canaux",
            "topSources": "Top sources",
            "topTerms": "Top termes"
        },
        "filters": {
            "campaign": "Campagne: {{value}}",
            "content": "Contenu: {{value}}",
            "medium": "Canal: {{value}}",
            "source": "Source: {{value}}",
            "term": "Terme: {{value}}"
        },
        "kpis": {
            "campaign": "Campagne",
            "content": "Contenu",
            "medium": "Medium",
            "source": "Source",
            "term": "Terme"
        }
    },
    "utmBuilder": {
        "breadcrumb": "Générateur UTM",
        "subtitle": "Générez des liens de campagne balisés pour suivre les sources de trafic dans vos analyses.",
        "form": {
            "title": "Créer votre lien",
            "siteSelectLabel": "Pré-remplir depuis un site",
            "siteSelectPlaceholder": "Sélectionner un site…",
            "siteSelectHint": "Sélectionner un site remplit le champ URL ci-dessous.",
            "websiteUrlLabel": "URL du site web",
            "websiteUrlHint": "L'URL complète à suivre, avec https://.",
            "sourceLabel": "Source de campagne",
            "sourceHint": "Origine du trafic — p. ex. google, newsletter, twitter.",
            "mediumLabel": "Médium de campagne",
            "mediumHint": "Le canal marketing — p. ex. cpc, email, social.",
            "campaignLabel": "Nom de campagne",
            "campaignHint": "Nom pour identifier cette campagne — p. ex. soldes_ete.",
            "termLabel": "Terme de campagne",
            "termHint": "Identifie les mots-clés de recherche payants.",
            "contentLabel": "Contenu de campagne",
            "contentHint": "Différencie les annonces ou liens au sein de la même campagne."
        },
        "preview": {
            "title": "URL générée",
            "description": "Renseignez l'URL du site web et la source de campagne pour générer un lien balisé."
        },
        "reference": {
            "title": "Référence des paramètres",
            "source": "Identifie l'origine du trafic (p. ex. google, newsletter).",
            "medium": "Le canal marketing (p. ex. cpc, email, social).",
            "campaign": "Associe un ou plusieurs liens à une campagne spécifique.",
            "term": "Identifie les mots-clés de recherche payants.",
            "content": "Différencie les annonces ou liens au sein de la même campagne."
        },
        "validation": {
            "urlRequired": "L'URL du site web est requise.",
            "urlInvalid": "Saisissez une URL valide commençant par https:// ou http://.",
            "sourceRequired": "La source de campagne est requise."
        }
    },
    "settings": {
        "security": {
            "title": "Sécurité",
            "loading": "Chargement des paramètres de sécurité...",
            "changePasswordTitle": "Changer le mot de passe",
            "changePasswordDescription": "Mettez à jour le mot de passe de ce compte.",
            "passwordUpdated": "Mot de passe mis à jour avec succès.",
            "currentPasswordLabel": "Mot de passe actuel",
            "newPasswordLabel": "Nouveau mot de passe",
            "minimumLengthHint": "Minimum 8 caractères",
            "updatePassword": "Mettre à jour le mot de passe",
            "twoFactor": {
                "title": "Authentification à deux facteurs",
                "description": "Protégez votre compte avec un code à usage unique depuis une application d'authentification.",
                "setupDescription": "Démarrez la configuration pour générer un secret et vérifier un code TOTP à 6 chiffres.",
                "enabledDescription": "L'authentification à deux facteurs est actuellement activée sur votre compte.",
                "secretLabel": "Clé de configuration manuelle",
                "otpauthLabel": "URI OTPAuth",
                "verifyCodeLabel": "Code de vérification",
                "disableCodeLabel": "Code actuel de l'application d'authentification",
                "disableHint": "Entrez un code valide à 6 chiffres pour désactiver l'authentification à deux facteurs.",
                "startSetupAction": "Démarrer la configuration",
                "verifyAction": "Activer l'authentification à deux facteurs",
                "disableAction": "Désactiver l'authentification à deux facteurs",
                "enabled": "Authentification à deux facteurs activée.",
                "disabled": "Authentification à deux facteurs désactivée.",
                "errors": {
                    "startFailed": "Impossible de démarrer la configuration de l'authentification à deux facteurs. Veuillez réessayer.",
                    "verifyFailed": "La vérification a échoué. Vérifiez votre code puis réessayez.",
                    "disableFailed": "Impossible de désactiver l'authentification à deux facteurs."
                }
            },
            "passkeys": {
                "title": "Passkeys",
                "description": "Enregistrez une passkey pour utiliser l'authentification de l'appareil.",
                "empty": "Aucune passkey enregistrée pour le moment.",
                "nameLabel": "Nom de la passkey",
                "namePlaceholder": "ex. Ordinateur pro",
                "nameHint": "Libellé facultatif pour identifier l'appareil.",
                "addAction": "Ajouter une passkey",
                "removeAction": "Supprimer",
                "registered": "Passkey enregistrée.",
                "deleted": "Passkey supprimée.",
                "errors": {
                    "notSupported": "Ce navigateur ne prend pas en charge l'enregistrement de passkeys.",
                    "registrationFailed": "L'enregistrement de la passkey a échoué. Veuillez réessayer.",
                    "deleteFailed": "Impossible de supprimer cette passkey pour le moment."
                }
            },
            "recoveryCodes": {
                "title": "Codes de récupération",
                "description": "Générez des codes de secours à usage unique pour récupérer votre compte si vous perdez votre application d'authentification ou votre passkey.",
                "remainingLabel": "Codes de secours",
                "remainingValue": "{{count}} codes restants",
                "generatedBadge": "Générés",
                "requiresMfa": "Activez le TOTP ou enregistrez une passkey avant de générer des codes de récupération.",
                "codesTitle": "Enregistrez ces codes de récupération maintenant",
                "codesHint": "Chaque code ne peut être utilisé qu'une fois. Ils ne sont affichés qu'au moment de leur génération ou régénération.",
                "copyAction": "Tout copier",
                "downloadAction": "Télécharger .txt",
                "generateAction": "Générer les codes",
                "regenerateAction": "Régénérer les codes",
                "generated": "Codes de récupération régénérés.",
                "copied": "Codes de récupération copiés.",
                "downloaded": "Codes de récupération téléchargés.",
                "errors": {
                    "copyFailed": "Impossible de copier les codes de récupération.",
                    "downloadFailed": "Impossible de télécharger les codes de récupération.",
                    "generateFailed": "Impossible de générer les codes de récupération. Veuillez réessayer.",
                    "mfaRequired": "Activez le TOTP ou enregistrez une passkey avant de générer des codes de récupération."
                }
            },
            "errors": {
                "loadFailed": "Impossible de charger les paramètres de sécurité.",
                "invalidCurrentPassword": "Mot de passe actuel incorrect.",
                "updateFailed": "Échec de la mise à jour du mot de passe. Veuillez réessayer."
            }
        },
        "user": {
            "breadcrumb": "Paramètres",
            "subtitle": "Gérez la sécurité et les préférences de votre compte.",
            "profile": {
                "title": "Profil",
                "description": "Mettez à jour vos informations personnelles et votre e-mail de connexion.",
                "emailLabel": "Adresse e-mail",
                "emailPlaceholder": "you@example.com",
                "givenNameLabel": "Prénom",
                "givenNamePlaceholder": "Ada",
                "lastNameLabel": "Nom",
                "lastNamePlaceholder": "Lovelace",
                "userIdLabel": "ID utilisateur",
                "saveAction": "Enregistrer le profil",
                "status": {
                    "saved": "Profil enregistré"
                },
                "validation": {
                    "emailRequired": "L'adresse e-mail est obligatoire.",
                    "emailInvalid": "Veuillez entrer une adresse e-mail valide.",
                    "emailTooLong": "L'adresse e-mail doit contenir 320 caractères maximum.",
                    "nameTooLong": "Le prénom et le nom doivent contenir 120 caractères maximum."
                },
                "errors": {
                    "loadFailed": "Impossible de charger votre profil.",
                    "invalidInput": "Vérifiez les champs mis en évidence et réessayez.",
                    "emailTaken": "Cette adresse e-mail est déjà utilisée.",
                    "notFound": "Votre compte est introuvable.",
                    "updateFailed": "Impossible de mettre à jour le profil. Veuillez réessayer."
                }
            },
            "dataExportTitle": "Export des données",
            "exportAllTitle": "Exporter toutes les données",
            "exportAllDescription": "Téléchargez toutes vos données de tous les sites au format CSV, XLSX, Parquet, JSON ou NDJSON.",
            "exportStatus": {
                "success": "Le téléchargement a démarré.",
                "error": "Échec de l'export des données. Veuillez réessayer."
            },
            "exportShortcut": {
                "title": "Export des analyses",
                "description": "Exportez tous les sites accessibles ou les takeouts de sites individuels depuis le hub Importer et exporter.",
                "action": "Ouvrir Importer et exporter"
            }
        },
        "reports": {
            "breadcrumb": "Rapports par email",
            "subtitle": "Configurez des emails d'analyse planifiés pour vos sites.",
            "digest": {
                "title": "Résumé consolidé",
                "description": "Recevez un email récapitulatif pour tous vos sites."
            },
            "perSite": {
                "title": "Rapports par site",
                "description": "Emails individuels pour chaque site.",
                "empty": "Aucun site trouvé. Ajoutez un site pour configurer des rapports."
            },
            "frequency": {
                "daily": {
                    "label": "Quotidien",
                    "hint": "Statistiques du jour précédent"
                },
                "weekly": {
                    "label": "Hebdomadaire",
                    "hint": "Chaque lundi, les 7 derniers jours"
                },
                "monthly": {
                    "label": "Mensuel",
                    "hint": "Le 1er du mois, mois précédent"
                }
            }
        },
        "apiClients": {
            "title": "Clients API",
            "description": "Créez des clients API délégués avec des permissions limitées à votre propre accès.",
            "loading": "Chargement des clients API...",
            "empty": "Aucun client API pour le moment.",
            "listTitle": "Clients API existants",
            "createDialogTitle": "Ajouter un client API",
            "editDialogTitle": "Modifier le client API",
            "confirmDelete": "Supprimer le client API \"{{name}}\" ?",
            "confirmRotate": "Renouveler le jeton du client API \"{{name}}\" ? L'ancien jeton cessera immédiatement de fonctionner.",
            "noSiteAccess": "Aucun accès aux sites",
            "noSiteAccessInstanceOnly": "Instance/admin uniquement ; aucun accès aux sites",
            "siteGrantCount": "{{count}} accès sites",
            "siteGrantPopoverTitle": "Accès sites",
            "status": {
                "active": "Actif",
                "inactive": "Inactif",
                "revoked": "Révoqué",
                "expired": "Expiré"
            },
            "meta": {
                "instanceRole": "Rôle d'instance",
                "created": "Créé",
                "lastUsed": "Dernière utilisation",
                "expires": "Expire"
            },
            "actions": {
                "add": "Ajouter un client API",
                "create": "Créer un client",
                "save": "Enregistrer les modifications",
                "edit": "Modifier",
                "revoke": "Revoquer",
                "reactivate": "Réactiver",
                "delete": "Supprimer",
                "addScope": "Ajouter une autorisation",
                "refresh": "Actualiser",
                "rollToken": "Renouveler le jeton"
            },
            "form": {
                "nameLabel": "Nom du client",
                "namePlaceholder": "ex. synchronisation analytics CI",
                "descriptionLabel": "Description",
                "descriptionPlaceholder": "À quoi sert ce client",
                "instanceRoleLabel": "Rôle d'instance",
                "expiresAtLabel": "Expiration",
                "expiresAtHint": "Si vide, le jeton n'expire jamais. Ce n'est pas recommandé.",
                "siteScopesLabel": "Autorisations de site",
                "siteScopesHint": "L'accès aux analytics de site, à MCP et à l'ingest nécessite une autorisation de site explicite.",
                "selectSitePlaceholder": "Sélectionner un site",
                "validation": {
                    "nameRequired": "Le nom du client est obligatoire.",
                    "nameTooLong": "Le nom du client doit contenir 120 caractères maximum.",
                    "instanceRoleRequired": "Le rôle d'instance est obligatoire.",
                    "expiresAtPast": "La date d'expiration doit être dans le futur.",
                    "expiresAtInvalid": "La date d'expiration est invalide.",
                    "scopeSiteRequired": "Sélectionnez un site avant d'ajouter une autorisation."
                },
                "teamSiteScopesHint": "Les clients d'équipe ne peuvent accéder qu'aux sites ajoutés ici avec un rôle de site."
            },
            "tokenNotice": {
                "title": "Copiez ce jeton maintenant",
                "description": "Pour des raisons de sécurité, le jeton n'est affiché qu'une seule fois. Stockez-le dans votre gestionnaire de secrets."
            },
            "messages": {
                "created": "Client API créé.",
                "updated": "Client API mis à jour.",
                "deleted": "Client API supprimé.",
                "revoked": "Client API révoqué.",
                "reactivated": "Client API réactivé.",
                "rotated": "Jeton API renouvelé. Copiez le nouveau jeton maintenant."
            },
            "errors": {
                "loadFailed": "Impossible de charger les clients API.",
                "createFailed": "Impossible de créer le client API.",
                "updateFailed": "Impossible de mettre à jour le client API.",
                "rotateFailed": "Impossible de renouveler le jeton API.",
                "deleteFailed": "Impossible de supprimer le client API.",
                "invalidExpiration": "La date d'expiration est invalide.",
                "notFound": "Client API introuvable."
            },
            "teamTitle": "Clients API d'équipe",
            "teamDescription": "Créez des clients API d'équipe pour des automatisations partagées sans les lier à un seul compte utilisateur."
        }
    },
    "setup": {
        "description": "Créez votre compte administrateur pour commencer.",
        "givenNameLabel": "Prénom",
        "givenNamePlaceholder": "Ada",
        "lastNameLabel": "Nom",
        "lastNamePlaceholder": "Lovelace",
        "emailPlaceholder": "admin@example.com",
        "createAdminAction": "Créer un compte administrateur",
        "createAdminAndContinueAction": "Créer un compte administrateur et continuer",
        "errors": {
            "unexpected": "Une erreur inattendue est survenue. Veuillez réessayer."
        }
    },
    "password": {
        "forgot": {
            "title": "Réinitialiser le mot de passe",
            "description": "Entrez votre adresse e-mail et nous vous enverrons un lien pour réinitialiser votre mot de passe.",
            "successTitle": "Vérifiez votre boîte de réception",
            "successDescription": "Si un compte existe pour {{email}}, nous avons envoyé un lien de réinitialisation.",
            "returnToSignIn": "Retour à la connexion",
            "sendResetLink": "Envoyer le lien de réinitialisation",
            "backToSignIn": "Retour à la connexion",
            "errors": {
                "unexpected": "Une erreur est survenue. Veuillez réessayer plus tard."
            }
        },
        "reset": {
            "title": "Définir un nouveau mot de passe",
            "success": "Mot de passe mis à jour avec succès",
            "signInNow": "Se connecter maintenant",
            "newPasswordLabel": "Nouveau mot de passe",
            "minimumLength": "Doit contenir au moins 8 caractères.",
            "submit": "Réinitialiser le mot de passe",
            "errors": {
                "tokenMissing": "Lien invalide. Le jeton est manquant.",
                "invalidLink": "Lien de réinitialisation invalide.",
                "expiredOrInvalid": "Ce lien a expiré ou est invalide.",
                "resetFailed": "Échec de la réinitialisation du mot de passe. Veuillez réessayer."
            }
        }
    },
    "share": {
        "dialog": {
            "title": "Partager le tableau de bord",
            "description": "Toute personne avec ce lien peut voir le tableau de bord en lecture seule.",
            "generateAction": "Générer le lien",
            "shareUrlLabel": "URL de partage",
            "tokenHintLabel": "Jeton",
            "urlUnavailable": "URL masquée pour les liens existants",
            "empty": "Aucun lien partagé pour le moment.",
            "generateFailed": "Impossible de créer un lien de partage maintenant. Veuillez réessayer.",
            "loadFailed": "Impossible de charger les liens de partage maintenant. Veuillez réessayer.",
            "deleteAction": "Supprimer",
            "deleteConfirmTitle": "Supprimer le lien de partage",
            "deleteConfirmMessage": "Toute personne utilisant ce lien perdra l'accès immédiatement.",
            "createSuccess": "Lien de partage créé.",
            "deleteSuccess": "Lien de partage supprimé.",
            "deleteFailed": "Impossible de supprimer le lien de partage maintenant."
        },
        "page": {
            "loading": "Chargement du tableau de bord partage...",
            "missingToken": "Jeton de partage manquant.",
            "invalidOrExpired": "Le lien de partage est invalide ou expire."
        }
    },
    "sites": {
        "addDialog": {
            "title": "Ajouter un site",
            "instructionsLine1": "Entrez votre domaine racine ou sous-domaine (ex: {{apex}}, {{subdomain}}).",
            "instructionsLine2": "Nous suivons automatiquement {{www}} avec votre domaine racine.",
            "domainLabel": "Nom de domaine",
            "domainPlaceholder": "example.com",
            "addAction": "Ajouter un site",
            "errors": {
                "domainRequired": "Le domaine est obligatoire.",
                "domainInvalid": "Format de domaine invalide.",
                "removeProtocol": "Veuillez supprimer http:// ou https://",
                "removeWww": "Veuillez supprimer 'www.'. Entrez uniquement le domaine racine.",
                "createFailed": "Echec de creation du site. Le domaine existe peut-etre deja."
            }
        },
        "danger": {
            "deleteTitle": "Supprimer le site",
            "deleteDescription": "Supprime définitivement ce site et toutes les données analytiques associées.",
            "confirmLabel": "Tapez \"{{domain}}\" pour confirmer",
            "confirmPlaceholder": "example.com",
            "deleteAction": "Supprimer le site",
            "deleteFailed": "Echec de suppression du site."
        },
        "retention": {
            "infoTitle": "Comment fonctionne la rétention",
            "infoDescription": "Les hits bruts plus anciens que la période de rétention sont archivés en fichiers Parquet pour le stockage long terme et supprimés de la base active pour améliorer les performances.",
            "periodLabel": "Période de rétention (jours)",
            "hotDataSuffix": "jours de données actives",
            "defaultHint": "La valeur par défaut est 365 jours.",
            "savePolicy": "Enregistrer la politique"
        },
        "exclusions": {
            "description": "Excluez le trafic interne, de monitoring, de bots ou de pays afin qu'il n'entre jamais dans le stockage analytique.",
            "typeLabel": "Type de règle",
            "cidrLabel": "IP ou CIDR",
            "cidrPlaceholder": "203.0.113.5 ou 192.168.0.0/24",
            "countryLabel": "Pays",
            "countryPlaceholder": "Sélectionner un pays",
            "descriptionLabel": "Description",
            "descriptionPlaceholder": "VPN bureau, sonde synthétique, etc.",
            "addAction": "Ajouter une exclusion",
            "loading": "Chargement des exclusions...",
            "empty": "Aucune exclusion configurée pour ce site.",
            "confirmDelete": "Supprimer l'exclusion {{value}} ?",
            "suggestionsTitle": "Votre IP actuelle",
            "suggestionsHint": "Copiez ce CIDR et collez-le dans le champ IP ou CIDR.",
            "currentIpLoading": "Résolution de votre IP...",
            "currentIpUnavailable": "Impossible de déterminer votre IP actuelle.",
            "ruleTypes": {
                "cidr": "IP/CIDR",
                "country": "Pays"
            },
            "columns": {
                "type": "Type",
                "value": "Valeur",
                "description": "Description",
                "created": "Créé"
            },
            "errors": {
                "invalidCidr": "Saisissez une IP ou un CIDR valide.",
                "invalidCountry": "Sélectionnez un pays.",
                "descriptionTooLong": "La description doit contenir 255 caractères maximum.",
                "loadFailed": "Impossible de charger les exclusions.",
                "createFailed": "Impossible de créer l'exclusion.",
                "deleteFailed": "Impossible de supprimer l'exclusion."
            },
            "status": {
                "createSuccess": "Exclusion {{value}} créée.",
                "deleteSuccess": "Exclusion {{value}} supprimée."
            }
        },
        "selector": {
            "regionAria": "Sélection du site",
            "sitesLabel": "Sites",
            "addSiteAria": "Ajouter un nouveau site",
            "selectPlaceholder": "Sélectionner un site",
            "selectSiteAria": "Sélectionnez un site pour voir les stats",
            "siteSettingsAria": "Paramètres du site",
            "trackingCodeAria": "Code de suivi",
            "shareDashboardAria": "Partager le tableau de bord"
        },
        "settings": {
            "breadcrumb": {
                "sites": "Sites",
                "settings": "Paramètres"
            },
            "title": "Paramètres du site",
            "tabs": {
                "general": "Général",
                "tracking": "Suivi",
                "filtering": "Filtrage",
                "retention": "Rétention",
                "team": "Équipe",
                "dangerZone": "Zone de danger"
            },
            "general": {
                "title": "Paramètres généraux",
                "domainLabel": "Domaine",
                "siteIdLabel": "ID du site",
                "dataExportTitle": "Export de données",
                "exportSiteDataTitle": "Exporter les données du site",
                "exportSiteDataDescription": "Téléchargez tous les hits et événements de ce site au format CSV, XLSX, Parquet, JSON ou NDJSON.",
                "exportStatus": {
                    "success": "Le téléchargement a démarré.",
                    "error": "Échec de l'export des données du site. Veuillez réessayer."
                },
                "exportShortcutTitle": "Export des analyses",
                "exportShortcutDescription": "Exportez ce site, ou tout autre site accessible, depuis le hub Importer et exporter.",
                "exportShortcutAction": "Ouvrir Importer et exporter"
            },
            "unsavedChangesConfirm": "Vous avez des modifications non enregistrées. Les ignorer ?"
        },
        "team": {
            "emailPlaceholder": "user@example.com",
            "addMemberAction": "Ajouter un membre du site",
            "addMemberDialogTitle": "Ajouter un membre du site",
            "addMemberSuccess": "Membre du site ajouté.",
            "removeMemberSuccess": "Membre du site retiré.",
            "confirmRemove": "Retirer {{email}} du site ?",
            "transfer": {
                "title": "Transférer le site",
                "description": "Déplace ce site et ses données analytiques vers une autre équipe que tu peux administrer.",
                "teamLabel": "Équipe de destination",
                "teamPlaceholder": "Sélectionner une équipe de destination",
                "action": "Transférer le site",
                "success": "Site transféré avec succès.",
                "errors": {
                    "forbidden": "Tu n'as pas l'autorisation de transférer ce site vers l'équipe sélectionnée.",
                    "generic": "Le transfert du site a échoué."
                }
            },
            "errors": {
                "addFailed": "Impossible d'ajouter le membre. Vérifiez que l'utilisateur existe.",
                "removeFailed": "Impossible de retirer le membre: {{error}}"
            }
        },
        "tracking": {
            "description": "Copiez et collez le code ci-dessous dans le HTML de votre site. Le suivi automatique des clics sortants, téléchargements et soumissions de formulaires est activé par défaut.",
            "trackingCodeConfiguration": "Configuration du code de suivi",
            "collectDntLabel": "Collecter DNT",
            "collectDntDescription": "Suivre les utilisateurs même si \"Do Not Track\" est activé dans leur navigateur.",
            "disableBeaconLabel": "Désactiver sendBeacon",
            "disableBeaconDescription": "Utiliser des requêtes fetch standard au lieu de navigator.sendBeacon.",
            "autoTrackingTitle": "Suivi automatique des événements",
            "autoTrackingDescription": "HitKeep peut envoyer automatiquement des événements outbound_click, file_download et form_submit avec des métadonnées respectueuses de la vie privée depuis hk.js.",
            "outboundTrackingLabel": "Suivre les clics sortants",
            "outboundTrackingDescription": "Envoie outbound_click lorsque les visiteurs suivent des liens vers un autre nom d’hôte.",
            "downloadTrackingLabel": "Suivre les téléchargements",
            "downloadTrackingDescription": "Envoie file_download pour les liens avec un attribut download ou une extension de fichier connue.",
            "formTrackingLabel": "Suivre les soumissions de formulaires",
            "formTrackingDescription": "Envoie form_submit pour les soumissions de formulaires observées par le navigateur sans capturer les valeurs du formulaire.",
            "htmlLabel": "HTML",
            "copyCode": "Copier le code",
            "verifier": {
                "title": "Vérificateur de suivi live",
                "description": "Confirme que ce site reçoit des signaux opérationnels de suivi.",
                "status": {
                    "waiting": "En attente",
                    "live": "Live",
                    "dormant": "Dormant",
                    "domain_mismatch": "Domaine différent"
                },
                "waitingHint": "En attente du premier hit accepté. Ce panneau s’actualise automatiquement pendant deux minutes.",
                "mismatchHint": "Le dernier nom d’hôte détecté ne correspond pas au domaine configuré pour ce site.",
                "fields": {
                    "firstHit": "Premier hit",
                    "lastHit": "Dernier hit",
                    "lastEvent": "Dernier événement",
                    "detectedHostname": "Nom d’hôte détecté",
                    "automaticEvent": "Dernier événement automatique",
                    "tracker": "Tracker",
                    "updated": "Mis à jour"
                },
                "empty": "Pas encore vu"
            },
            "webVitalsLabel": "Web Vitals",
            "webVitalsDescription": "Charge le bundle Web Vitals séparé et envoie des échantillons LCP, INP, CLS, FCP et TTFB. Désactivé par défaut."
        }
    },
    "admin": {
        "breadcrumb": "Administration de l'instance",
        "tabs": {
            "users": "Utilisateurs",
            "sites": "Sites",
            "teams": "Équipes",
            "globalFilters": "Filtres globaux",
            "overview": "Vue d’ensemble",
            "health": "Santé",
            "storage": "Stockage",
            "ingest": "Ingestion",
            "backups": "Sauvegardes",
            "spam": "Spam",
            "caches": "Caches",
            "mail": "E-mail",
            "audit": "Audit"
        },
        "users": {
            "title": "Utilisateurs",
            "disable2faAction": "Désactiver la MFA"
        },
        "sites": {
            "title": "Sites",
            "ownerUnknown": "Propriétaire inconnu"
        },
        "exclusions": {
            "title": "Filtres de trafic globaux",
            "description": "Ignorez le trafic provenant de réseaux ou de pays sélectionnés pour tous les sites de cette instance HitKeep.",
            "typeLabel": "Type de règle",
            "cidrLabel": "IP ou CIDR",
            "cidrPlaceholder": "203.0.113.5 ou 192.168.0.0/24",
            "countryLabel": "Pays",
            "countryPlaceholder": "Sélectionner un pays",
            "descriptionLabel": "Description",
            "descriptionPlaceholder": "Sonde uptime, plage bureau, etc.",
            "addAction": "Ajouter un filtre global",
            "loading": "Chargement des filtres globaux...",
            "empty": "Aucun filtre global configuré.",
            "confirmDelete": "Supprimer le filtre global {{value}} ?",
            "suggestionsTitle": "Votre IP actuelle",
            "suggestionsHint": "Copiez ce CIDR et collez-le dans le champ IP ou CIDR.",
            "currentIpLoading": "Résolution de votre IP...",
            "currentIpUnavailable": "Impossible de déterminer votre IP actuelle.",
            "ruleTypes": {
                "cidr": "IP/CIDR",
                "country": "Pays"
            },
            "columns": {
                "type": "Type",
                "value": "Valeur",
                "description": "Description",
                "created": "Créé"
            },
            "errors": {
                "invalidCidr": "Saisissez une IP ou un CIDR valide.",
                "invalidCountry": "Sélectionnez un pays.",
                "descriptionTooLong": "La description doit contenir 255 caractères maximum.",
                "loadFailed": "Impossible de charger les filtres globaux.",
                "createFailed": "Impossible de créer le filtre global.",
                "deleteFailed": "Impossible de supprimer le filtre global."
            },
            "status": {
                "createSuccess": "Filtre global {{value}} créé.",
                "deleteSuccess": "Filtre global {{value}} supprimé."
            }
        },
        "roles": {
            "instanceOwner": "Propriétaire de l'instance",
            "instanceAdmin": "Administrateur de l'instance",
            "user": "Utilisateur"
        },
        "errors": {
            "deleteUserBlockedOwnership": "Impossible de supprimer {{email}} tant que la propriété n'a pas été transférée pour : {{teams}}.",
            "deleteUserFailed": "Impossible de supprimer l'utilisateur {{email}}.",
            "deleteSiteFailed": "Impossible de supprimer le site {{domain}}.",
            "deleteTeamFailed": "Impossible de supprimer l'équipe \"{{name}}\".",
            "deleteForbidden": "Vous n'avez pas l'autorisation de supprimer cette ressource.",
            "deleteNotFound": "Cette ressource n'existe plus.",
            "deleteUnavailable": "La suppression est disponible uniquement sur le nœud actif de l'instance.",
            "deleteDefaultTeam": "L'équipe par défaut ne peut pas être supprimée.",
            "deleteTeamNotArchived": "Archivez l'équipe avant de la supprimer.",
            "deleteTeamHasSites": "Transférez ou supprimez tous les sites avant de supprimer cette équipe.",
            "disable2faFailed": "Impossible de désactiver la MFA pour {{email}}."
        },
        "status": {
            "deleteUserSuccess": "Utilisateur {{email}} supprimé.",
            "deleteSiteSuccess": "Site {{domain}} supprimé.",
            "deleteTeamSuccess": "Équipe \"{{name}}\" supprimée.",
            "disable2faSuccess": "La MFA a été désactivée pour {{email}}."
        },
        "confirmDisable2fa": "Désactiver toutes les méthodes MFA pour {{email}} ? Cela invalidera aussi les sessions mémorisées.",
        "confirmDeleteUser": "Supprimer l'utilisateur {{email}} ?",
        "confirmDeleteSite": "Supprimer le site {{domain}} ? Cette action est irréversible.",
        "confirmDeleteTeam": "Supprimer définitivement l'équipe \"{{name}}\" ? Cette action est irréversible.",
        "confirmDeleteTeamWithSites": "Supprimer définitivement l'équipe \"{{name}}\" et ses {{sites}} site(s) ? Toutes les données analytiques seront perdues. Cette action est irréversible.",
        "teams": {
            "title": "Équipes",
            "status": {
                "active": "Actif",
                "archived": "Archivé",
                "default": "Par défaut"
            }
        },
        "team": {
            "tabs": {
                "overview": "Aperçu",
                "members": "Membres",
                "settings": "Paramètres",
                "activity": "Activité"
            },
            "overview": {
                "breadcrumb": "Aperçu de l'équipe",
                "title": "Équipe",
                "teamIdLabel": "ID d’équipe",
                "memberCount": "Membres",
                "quickActions": "Actions rapides",
                "manageMembers": "Gérer les membres",
                "teamSettings": "Paramètres de l'équipe",
                "usage": {
                    "title": "Utilisation et limites",
                    "description": "Suivez l'utilisation actuelle de l'équipe par rapport aux limites du plan avant que l'ingestion ne soit bloquée.",
                    "currentUsage": "{{count}} utilisés",
                    "unlimited": "Illimité",
                    "unlimitedFootnote": "Illimité avec l'offre actuelle",
                    "limitValue": "Limite {{count}}",
                    "progressLabel": "{{count}} % de la limite",
                    "pendingInviteOne": "1 invitation en attente",
                    "pendingInviteMany": "{{count}} invitations en attente",
                    "metrics": {
                        "sites": "Sites",
                        "members": "Membres"
                    }
                },
                "cloud": {
                    "title": "Plan cloud",
                    "managed": "Cloud managé",
                    "description": "Cette équipe tourne sur l'infrastructure HitKeep Cloud managée. Gardez le plan gratuit pour valider, ou passez au niveau supérieur si vous avez besoin de plus de rétention, de membres ou de volume.",
                    "jurisdiction": "Juridiction",
                    "region": "Région",
                    "retention": "Rétention",
                    "retentionDays": "{{count}} jours",
                    "unlimitedRetention": "Rétention illimitée",
                    "manageBillingAction": "Gérer la facturation",
                    "upgradeAction": "Changer de plan",
                    "supportAction": "Contacter le support"
                },
                "plans": {
                    "title": "Changer de plan",
                    "description": "Débloquez une rétention plus longue, plus de sites et de capacité d'équipe.",
                    "currentPlan": "Plan actuel",
                    "recommended": "Recommandé",
                    "upgradeAction": "Passer à {{plan}}",
                    "features": {
                        "sites": "Jusqu'à {{count}} sites",
                        "members": "Jusqu'à {{count}} membres d'équipe",
                        "retention": "{{count}} ans de rétention des données",
                        "retentionDays": "{{count}} jours de rétention des données"
                    }
                }
            },
            "members": {
                "breadcrumb": "Membres de l'équipe",
                "title": "Membres de l'équipe"
            },
            "settings": {
                "breadcrumb": "Paramètres de l'équipe",
                "title": "Paramètres de l'équipe",
                "nameSectionTitle": "Nom de l'équipe",
                "nameSectionDescription": "Le nom d'affichage de cette équipe. Les propriétaires et admins peuvent le modifier.",
                "nameRequired": "Le nom de l'équipe est requis.",
                "logoSectionTitle": "Logo de l'équipe",
                "logoSectionDescription": "Une URL pointant vers l'image du logo de cette équipe.",
                "logoPlaceholder": "https://exemple.fr/logo.png",
                "logoPreviewAlt": "Aperçu du logo de l'équipe",
                "saveAction": "Enregistrer les paramètres",
                "saveSuccess": "Paramètres de l'équipe enregistrés.",
                "saveError": "Échec de l'enregistrement des paramètres de l'équipe. Veuillez réessayer.",
                "leaveSectionTitle": "Quitter l'équipe",
                "leaveSectionDescription": "Retirez-vous de cette équipe et basculez vers une autre équipe dont vous faites partie.",
                "leaveConfirm": "Quitter cette équipe ? Votre contexte d'équipe actif changera immédiatement.",
                "leaveAction": "Quitter l'équipe",
                "leaveSuccess": "Vous avez quitté l'équipe.",
                "archiveSectionTitle": "Archiver l'équipe",
                "archiveSectionDescription": "Archivez cette équipe après avoir transféré ou supprimé tous ses sites.",
                "archiveSectionHint": "L'archivage masque l'équipe des listes d'équipes normales. Transférez ou supprimez d'abord tous les sites de cette équipe.",
                "archiveConfirm": "Archiver cette équipe ? Les membres ne la verront plus dans le sélecteur d'équipe actif.",
                "archiveAction": "Archiver l'équipe",
                "archiveSuccess": "L'équipe a été archivée.",
                "archiveErrors": {
                    "hasSites": "Transférez ou supprimez tous les sites de l'équipe avant de l'archiver.",
                    "defaultTeam": "L'équipe par défaut ne peut pas être archivée.",
                    "forbidden": "Seuls les propriétaires de l'équipe peuvent l'archiver.",
                    "generic": "Impossible d'archiver l'équipe. Veuillez réessayer."
                },
                "leaveErrors": {
                    "lastOwner": "Vous ne pouvez pas quitter l'équipe en tant que dernier propriétaire.",
                    "onlyTeam": "Vous ne pouvez pas quitter votre seule équipe.",
                    "generic": "Impossible de quitter l'équipe. Veuillez réessayer."
                }
            },
            "audit": {
                "readOnly": "Vous n'avez pas la permission de voir l'activité de l'équipe.",
                "empty": "Aucune activité d'équipe pour le moment.",
                "loadError": "Impossible de charger l'activité de l'équipe.",
                "loadMore": "Charger plus d'activité",
                "forbidden": "Vous n'avez pas la permission de voir l'activité de l'équipe.",
                "filterLabel": "Filtrer l'activité",
                "filters": {
                    "all": "Toute l'activité"
                },
                "summary": {
                    "empty": "Aucune entrée chargée pour l'instant.",
                    "partial": "{{loaded}} activités sur {{total}} affichées",
                    "complete": "Les {{total}} activités sont affichées"
                },
                "columns": {
                    "actor": "Acteur",
                    "action": "Action",
                    "target": "Cible",
                    "details": "Détails"
                },
                "actions": {
                    "teamCreated": "Équipe créée",
                    "teamUpdated": "Équipe mise à jour",
                    "teamActiveChanged": "Active team changed",
                    "memberInvited": "Membre invité",
                    "memberInviteAccepted": "Invitation acceptée",
                    "memberInviteResent": "Invitation renvoyée",
                    "memberInviteRevoked": "Invitation révoquée",
                    "memberAdded": "Membre ajouté",
                    "memberRoleUpdated": "Rôle de membre mis à jour",
                    "memberRemoved": "Membre retiré",
                    "memberLeft": "Le membre a quitté l'équipe",
                    "ownershipTransferred": "Propriété transférée",
                    "teamArchived": "Équipe archivée",
                    "siteCreated": "Site created",
                    "siteDeleted": "Site deleted",
                    "siteRetentionUpdated": "Retention updated",
                    "siteTransferredIn": "Site déplacé ici",
                    "siteTransferredOut": "Site déplacé ailleurs",
                    "siteExclusionCreated": "Exclusion created",
                    "siteExclusionDeleted": "Exclusion deleted",
                    "authLoginSucceeded": "Login succeeded",
                    "authLoginFailed": "Login failed",
                    "authMfaRequired": "MFA required",
                    "authMfaSucceeded": "MFA succeeded",
                    "authLogout": "Logout",
                    "authSessionExtended": "Session extended",
                    "importUploadCreated": "Import upload created",
                    "importFileUploaded": "Import file uploaded",
                    "importValidationStarted": "Import validation started",
                    "importValidated": "Import validated",
                    "importValidationFailed": "Import validation failed",
                    "importQueued": "Import queued",
                    "importRequeued": "Import requeued",
                    "importStarted": "Import started",
                    "importFailed": "Import failed",
                    "importCompleted": "Import completed",
                    "importDeleted": "Import deleted",
                    "importDataCleared": "Imported data cleared",
                    "importDataWritten": "Imported data written",
                    "unknown": "Action inconnue"
                }
            }
        },
        "system": {
            "overview": {
                "title": "Vue d’ensemble système",
                "version": "Version",
                "uptime": "Disponibilité",
                "publicUrl": "URL publique",
                "runtimeMode": "Mode",
                "healthStatus": "Santé",
                "enabledFeatures": "Commutateurs de fonctionnalités",
                "actions": {
                    "refresh": "Actualiser"
                }
            },
            "features": {
                "mcp": {
                    "label": "Serveur MCP"
                },
                "mcp_docs": {
                    "label": "Outils docs MCP"
                },
                "automatic_backups": {
                    "label": "Sauvegardes automatiques"
                },
                "spam_auto_update": {
                    "label": "Mise à jour auto anti-spam"
                },
                "mail_delivery": {
                    "label": "Envoi d’e-mails"
                },
                "google_search_console": {
                    "label": "Google Search Console"
                },
                "managed_cloud": {
                    "label": "Cloud managé"
                },
                "cloud_signup": {
                    "label": "Inscription cloud"
                },
                "ai": {
                    "label": "Passerelle IA"
                },
                "ai_opportunities": {
                    "label": "Opportunités IA"
                },
                "billing": {
                    "label": "Facturation"
                }
            },
            "featureDetails": {
                "backup": {
                    "local": "Cible locale",
                    "s3": "Cible S3"
                },
                "driver": "Pilote {{driver}}",
                "interval": "Toutes les {{interval}}",
                "stripe": "Stripe configuré",
                "plan": "Forfait {{plan}}"
            },
            "health": {
                "title": "Contrôle de santé",
                "status": "Statut",
                "database": "Base de données",
                "workers": "Workers",
                "isLeader": "Est leader",
                "ip2locationAttribution": "HitKeep utilise la base de données IP2Location LITE pour la géolocalisation IP.",
                "actions": {
                    "check": "Contrôler"
                }
            },
            "searchConsole": {
                "title": "Search Console",
                "credentials": "Identifiants",
                "worker": "Worker",
                "sync": "Sync",
                "connectedTeams": "Équipes connectées",
                "mappedSites": "Sites associés",
                "inFlight": "En cours",
                "issues": "Incidents",
                "lastAttempt": "Dernière tentative",
                "lastSuccess": "Dernier succès",
                "nextRetry": "Prochaine tentative",
                "status": {
                    "healthy": "Sain",
                    "idle": "Inactif",
                    "syncing": "Synchronisation",
                    "degraded": "Dégradé",
                    "needs_attention": "Attention requise",
                    "not_configured": "Non configuré"
                },
                "credentialsStatus": {
                    "configured": "Configurés",
                    "missing": "Manquants"
                },
                "workerStatus": {
                    "enabled": "Activé",
                    "disabled": "Désactivé"
                },
                "syncStatus": {
                    "healthy": "Sain",
                    "idle": "Inactif",
                    "pending": "En attente",
                    "running": "En cours",
                    "failed": "Échec",
                    "needs_attention": "Attention requise"
                }
            },
            "ai": {
                "title": "Passerelle IA",
                "configuration": "Configuration",
                "enabled": "Activée",
                "disabled": "Désactivée",
                "configured": "Configurée",
                "notConfigured": "Non configurée",
                "configMode": "Mode de configuration",
                "provider": "Fournisseur",
                "model": "Modèle",
                "budgetWindow": "Fenêtre de budget",
                "requests": "Requêtes",
                "tokens": "Jetons",
                "lastAttempt": "Dernière tentative",
                "lastSuccess": "Dernier succès",
                "lastError": "Dernière erreur",
                "readiness": "État de préparation de la passerelle IA",
                "summary": {
                    "ready": "Configurée et dans le budget local.",
                    "disabled": "Désactivée par la configuration d'exécution.",
                    "notConfigured": "Activée lorsque le fournisseur et le modèle sont définis.",
                    "budgetExhausted": "Le budget local de requêtes ou de jetons est épuisé.",
                    "needsAttention": "Les appels récents au fournisseur nécessitent une vérification.",
                    "unknown": "Le statut n'est pas encore chargé."
                },
                "status": {
                    "disabled": "Désactivée",
                    "not_configured": "Non configurée",
                    "configured": "Configurée",
                    "budget_exhausted": "Budget épuisé",
                    "needs_attention": "Attention requise"
                },
                "configModes": {
                    "cloud_managed": "Gérée dans le cloud",
                    "self_hosted": "Auto-hébergée"
                }
            },
            "storage": {
                "title": "Stockage",
                "sharedDb": "Base partagée",
                "sharedDbSize": "Taille",
                "dataPath": "Chemin des données",
                "tenantDbs": "Bases des tenants",
                "diskUsage": "Utilisation disque",
                "diskAvailable": "Disponible",
                "columns": {
                    "tenant": "Tenant",
                    "size": "Taille",
                    "path": "Chemin"
                }
            },
            "ingest": {
                "title": "Ingestion",
                "hits": "Hits (24 h)",
                "events": "Événements (24 h)",
                "rejections": "Rejets",
                "spam": "Spam bloqué",
                "hitsPerSecond": "Hits/s"
            },
            "backups": {
                "title": "Sauvegardes",
                "configPath": "Chemin / cible",
                "enabled": "Activé",
                "disabled": "Désactivé",
                "interval": "Intervalle",
                "retention": "Rétention",
                "lastBackup": "Dernière sauvegarde",
                "nextBackup": "Prochaine sauvegarde",
                "lastFailed": "Dernier échec",
                "lastError": "Dernière erreur",
                "recentFailures": "Échecs récents",
                "actions": {
                    "backupNow": "Sauvegarder maintenant",
                    "backupNowConfirm": "Démarrer une sauvegarde maintenant ?"
                },
                "backupTriggered": "Sauvegarde démarrée",
                "backupFailed": "Sauvegarde échouée"
            },
            "spam": {
                "title": "Filtre anti-spam",
                "dbPath": "Chemin de base",
                "lastRefresh": "Dernière actualisation",
                "ruleCount": "Règles",
                "autoUpdate": "Mise à jour auto",
                "lastError": "Dernière erreur",
                "actions": {
                    "refresh": "Actualiser la base anti-spam"
                },
                "refreshTriggered": "Filtre anti-spam actualisé",
                "refreshFailed": "Impossible d'actualiser le filtre anti-spam"
            },
            "importCleanup": {
                "title": "Zone de staging des imports",
                "enabled": "Nettoyage activé",
                "retention": "Jours de conservation",
                "staleImports": "Imports obsolètes",
                "staleFiles": "Fichiers obsolètes",
                "staleBytes": "Données obsolètes",
                "lastRun": "Dernier nettoyage",
                "lastCleaned": "Dernier volume nettoyé",
                "actions": {
                    "run": "Nettoyer les fichiers de staging"
                },
                "runSuccess": "{{files}} fichier(s) de staging nettoyé(s), {{bytes}} libérés.",
                "runFailed": "Impossible de nettoyer les fichiers d’import en staging."
            },
            "caches": {
                "title": "Caches",
                "status": {
                    "healthy": "Sain",
                    "pressure": "Sous pression"
                },
                "permissions": "Autorisations",
                "apiClients": "Clients API",
                "rateLimiter": "Limitation de débit",
                "columns": {
                    "cache": "Cache",
                    "size": "Taille",
                    "maxSize": "Taille max.",
                    "ttl": "TTL"
                }
            },
            "mail": {
                "title": "E-mail",
                "configured": "Configuré",
                "notConfigured": "Non configuré",
                "driver": "Pilote",
                "host": "Hôte",
                "port": "Port",
                "encryption": "Chiffrement",
                "fromAddress": "Adresse d’envoi",
                "username": "Nom d’utilisateur",
                "passwordSet": "Mot de passe configuré",
                "lastTest": "Dernier test",
                "actions": {
                    "test": "Envoyer un e-mail de test"
                },
                "testSuccess": "E-mail de test envoyé",
                "testFailed": "Échec de l’e-mail de test",
                "recipientLabel": "Destinataire de test",
                "recipientPlaceholder": "ops@example.com",
                "recipientInvalid": "Saisissez une adresse e-mail valide."
            },
            "audit": {
                "title": "Journal d’audit d’instance",
                "filters": {
                    "all": "Tout"
                },
                "filter": {
                    "action": "Action",
                    "targetType": "Type de cible",
                    "outcome": "Résultat",
                    "dateRange": "Plage de dates",
                    "search": "Rechercher..."
                },
                "empty": "Aucune entrée d’audit trouvée",
                "loadError": "Impossible de charger les entrées d’audit",
                "exportSuccess": "Export d'audit téléchargé",
                "exportFailed": "Impossible d'exporter le journal d'audit",
                "loadMore": "Charger plus",
                "columns": {
                    "created": "Heure",
                    "actor": "Acteur",
                    "action": "Action",
                    "targetType": "Zone",
                    "target": "Cible",
                    "outcome": "Résultat",
                    "ipAddress": "IP address",
                    "country": "Country",
                    "details": "Détails"
                },
                "outcome": {
                    "success": "Succès",
                    "failure": "Échec",
                    "denied": "Refusé"
                },
                "targetTypes": {
                    "system": "Système",
                    "mail": "E-mail",
                    "user": "Utilisateur",
                    "team": "Équipe",
                    "site": "Site",
                    "import": "Import",
                    "siteExclusion": "Site exclusion",
                    "apiClient": "API client",
                    "backup": "Sauvegarde",
                    "spamFilter": "Filtre anti-spam",
                    "diagnostics": "Diagnostic"
                },
                "actions": {
                    "export": "Exporter",
                    "roleUpdated": "Rôle modifié",
                    "mfaDisabled": "MFA désactivée",
                    "backupTriggered": "Sauvegarde déclenchée",
                    "backupCompleted": "Sauvegarde terminée",
                    "backupFailed": "Sauvegarde échouée",
                    "spamRefreshed": "Actualisation spam",
                    "mailTested": "Test e-mail",
                    "diagnosticsExported": "Diagnostic exporté",
                    "accessDenied": "Accès refusé",
                    "authLoginSucceeded": "Login succeeded",
                    "authLoginFailed": "Login failed",
                    "authMfaRequired": "MFA required",
                    "authMfaSucceeded": "MFA succeeded",
                    "authLogout": "Logout",
                    "authSessionExtended": "Session extended",
                    "teamCreated": "Team created",
                    "teamUpdated": "Team updated",
                    "teamArchived": "Team archived",
                    "teamActiveChanged": "Active team changed",
                    "memberInvited": "Member invited",
                    "memberInviteAccepted": "Invite accepted",
                    "memberInviteResent": "Invite resent",
                    "memberInviteRevoked": "Invite revoked",
                    "memberAdded": "Member added",
                    "memberRoleUpdated": "Member role updated",
                    "memberRemoved": "Member removed",
                    "memberLeft": "Member left",
                    "ownershipTransferred": "Ownership transferred",
                    "siteCreated": "Site created",
                    "siteDeleted": "Site deleted",
                    "siteRetentionUpdated": "Retention updated",
                    "siteTransferredIn": "Site moved in",
                    "siteTransferredOut": "Site moved out",
                    "siteExclusionCreated": "Exclusion created",
                    "siteExclusionDeleted": "Exclusion deleted",
                    "importUploadCreated": "Import upload created",
                    "importFileUploaded": "Import file uploaded",
                    "importValidationStarted": "Import validation started",
                    "importValidated": "Import validated",
                    "importValidationFailed": "Import validation failed",
                    "importQueued": "Import queued",
                    "importRequeued": "Import requeued",
                    "importStarted": "Import started",
                    "importFailed": "Import failed",
                    "importCompleted": "Import completed",
                    "importDeleted": "Import deleted",
                    "importDataCleared": "Imported data cleared",
                    "importDataWritten": "Imported data written"
                },
                "pagination": {
                    "total": "{{ loaded }} sur {{ total }} entrées affichées"
                }
            },
            "console": {
                "eyebrow": "Opérations d’instance",
                "title": "État du système",
                "subtitle": "Surveillez la santé d’exécution, le stockage, l’envoi d’e-mails, la protection anti-spam et l’activité admin depuis une seule surface opérateur.",
                "runtimePosture": "État d’exécution",
                "summaryAria": "Résumé de l’état du système",
                "healthHint": "Base de données, workers et disponibilité du nœud",
                "managedData": "données gérées",
                "noRecentRun": "Aucune exécution récente",
                "autoUpdated": "Mis à jour automatiquement",
                "manualOnly": "Actualisation manuelle",
                "refreshCard": "Actualiser l’état",
                "cloudStatus": "État du cloud",
                "leader": "Leader",
                "follower": "Follower",
                "loadFailed": "Impossible de charger l’état du système.",
                "noFeatures": "Aucun commutateur de fonctionnalité signalé.",
                "noTenantDbs": "Aucune base de tenants signalée.",
                "pressure": "Pression",
                "tabs": {
                    "runtime": "Exécution",
                    "operations": "Opérations",
                    "access": "Accès",
                    "activation": "Activation",
                    "audit": "Audit"
                },
                "status": {
                    "healthy": "Sain",
                    "attention": "Attention requise",
                    "loading": "Chargement",
                    "unknown": "Inconnu"
                },
                "healthDescription": "Signaux de disponibilité du nœud actuel et du stockage intégré.",
                "overviewDescription": "Build, version, URL publique et mode d’exécution.",
                "featuresDescription": "Commutateurs de fonctionnalités opérateur et capacités d’exécution signalés par l’instance.",
                "storageDescription": "Fichiers DuckDB, stockage des tenants et espace disque disponible.",
                "ingestDescription": "Volume récent de tracking et trafic bloqué sur l’instance.",
                "cachesDescription": "Occupation des caches LRU pour auth, clients API et limitation de débit.",
                "backupsDescription": "Cible de sauvegarde, rétention et santé des exécutions récentes.",
                "spamDescription": "Fraîcheur du cache anti-spam et contrôle d’actualisation manuelle.",
                "mailDescription": "Configuration e-mail expurgée et action de test sécurisée.",
                "usersDescription": "Rôles d’instance, actions de récupération et accès admin.",
                "sitesDescription": "Tous les sites visibles par les administrateurs d’instance.",
                "teamsDescription": "Conteneurs d’équipe et leur état opérationnel.",
                "auditDescription": "Activité append-only pour les opérations sensibles de l’instance.",
                "settingsSubtitle": "Gérez les utilisateurs, sites, équipes et filtres globaux de l’instance."
            },
            "activation": {
                "title": "Activation utilisateur",
                "subtitle": "Voyez quelles équipes et quels sites sont live, en attente, dormants ou bloqués sans inspecter les données tenant.",
                "empty": "Aucune ligne d’activation ne correspond aux filtres actuels.",
                "copySuccess": "Contexte support copié.",
                "copyError": "Impossible de copier le contexte support.",
                "pagination": "{{loaded}} lignes sur {{total}} affichées",
                "filters": {
                    "anyStatus": "Tout statut",
                    "team": "Filtrer l’équipe",
                    "domain": "Filtrer le domaine"
                },
                "metrics": {
                    "liveSites": "Sites live chargés",
                    "loadedRows": "Lignes chargées",
                    "totalRows": "Total lignes"
                },
                "columns": {
                    "team": "Équipe",
                    "lastHit": "Dernier hit",
                    "lastEvent": "Dernier événement",
                    "hits24h": "Hits 24h",
                    "hits7d": "Hits 7j",
                    "events7d": "Événements 7j"
                },
                "status": {
                    "waiting": "En attente",
                    "live": "Live",
                    "dormant": "Dormant",
                    "domain_mismatch": "Domaine différent"
                },
                "actions": {
                    "filterTeam": "Filtrer sur cette équipe",
                    "copyContext": "Copier le contexte support",
                    "openTeam": "Ouvrir l’admin équipe"
                }
            }
        }
    },
    "roles": {
        "owner": "Propriétaire",
        "admin": "Administrateur",
        "member": "Membre",
        "editor": "Éditeur",
        "viewer": "Lecteur"
    },
    "userMenu": {
        "administration": "Administration",
        "userSettings": "Paramètres",
        "preferences": "Préférences",
        "sessionStatus": "Session : encore {{remaining}}",
        "rememberedSessionStatus": "Se souvenir de moi : encore {{remaining}}",
        "extendSession": "Prolonger la session",
        "signOut": "Se déconnecter"
    },
    "session": {
        "label": "Session",
        "rememberedLabel": "Se souvenir de moi",
        "tooltip": "Votre session du tableau de bord dure {{duration}}. HitKeep vous avertit {{warning}} avant son expiration.",
        "rememberedTooltip": "Se souvenir de moi est activé. Le minuteur suit la période de connexion mémorisée.",
        "warningTitle": "Votre session va bientôt expirer",
        "warningDescription": "Vous serez déconnecté dans {{remaining}} si vous ne prolongez pas la session.",
        "policyDescription": "Cette instance est configurée avec des sessions de tableau de bord de {{duration}}.",
        "extendAction": "Rester connecté",
        "signOutAction": "Se déconnecter",
        "extendError": "Impossible de prolonger la session. Reconnectez-vous si elle expire."
    },
    "login": {
        "subtitle": "Connectez-vous à votre tableau de bord",
        "cloudSignupPrompt": "Nouveau sur HitKeep Cloud ?",
        "cloudSignupAction": "Créer un espace {{jurisdiction}}",
        "cloudSignupAlternatePrompt": "Besoin d’une autre juridiction ?",
        "cloudSignupAlternateAction": "Utiliser le cloud {{jurisdiction}}",
        "emailLabel": "Adresse e-mail",
        "emailPlaceholder": "you@example.com",
        "emailInvalid": "Veuillez entrer une adresse e-mail valide.",
        "passwordLabel": "Mot de passe",
        "passwordPlaceholder": "••••••••",
        "passwordRequired": "Le mot de passe est obligatoire.",
        "forgotPassword": "Mot de passe oublié ?",
        "rememberMe": "Se souvenir de moi",
        "sessionHelp": "Vous restez connecté sur cet appareil selon la politique de l’instance. HitKeep affiche toujours les avertissements d’expiration et demande confirmation avant de prolonger lorsque c’est nécessaire.",
        "signIn": "Se connecter",
        "or": "ou",
        "signInWithPasskey": "Se connecter avec une passkey",
        "mfaTitle": "Vérification à deux facteurs",
        "mfaSubtitle": "Terminez la connexion avec votre code d'authentification, un code de récupération, un lien de connexion ou une passkey.",
        "sendEmailLink": "M'envoyer un lien de connexion",
        "emailLinkSent": "Nous avons envoyé un lien de connexion à votre adresse e-mail.",
        "totpCodeLabel": "Code d'authentification",
        "recoveryCodeLabel": "Code de récupération",
        "recoveryCodePlaceholder": "ABCD-EFGH",
        "verifyTotp": "Vérifier le code",
        "verifyRecoveryCode": "Utiliser un code de récupération",
        "footerRights": "HitKeep. Tous droits réservés.",
        "errors": {
            "invalidCredentials": "E-mail ou mot de passe invalide.",
            "passkeyNotSupported": "La connexion par passkey n'est pas prise en charge sur cet appareil.",
            "passkeyFailed": "Échec de la connexion par passkey. Veuillez réessayer.",
            "invalidTotp": "Code d'authentification invalide.",
            "invalidRecoveryCode": "Code de récupération invalide.",
            "emailLinkFailed": "Nous n'avons pas pu envoyer votre lien de connexion. Veuillez réessayer.",
            "mfaEmailLinkInvalid": "Ce lien de connexion est invalide ou expiré. Demandez-en un nouveau pour continuer.",
            "unexpected": "Une erreur inattendue est survenue. Veuillez réessayer."
        }
    },
    "signup": {
        "title": "Commencez gratuitement",
        "subtitle": "Créez votre espace de travail et commencez le suivi en moins d'une minute. Aucune carte bancaire requise.",
        "jurisdictionLabel": "Juridiction",
        "jurisdictionDescription": "Cet espace restera rattaché à la frontière légale et à la région AWS sélectionnées.",
        "jurisdictionRedirectHint": "Vous avez sélectionné {{jurisdiction}}. En continuant, nous vous redirigerons vers l’inscription régionale appropriée.",
        "jurisdictions": {
            "eu": "EU",
            "us": "US"
        },
        "givenNameLabel": "Prénom",
        "givenNamePlaceholder": "Ada",
        "lastNameLabel": "Nom",
        "lastNamePlaceholder": "Lovelace",
        "teamNameLabel": "Nom de l'équipe",
        "teamNamePlaceholder": "Acme Analytics",
        "teamNameRequired": "Le nom de l'équipe est requis.",
        "emailPlaceholder": "you@example.com",
        "submit": "Créer l'espace",
        "haveAccount": "Vous avez déjà un compte ?",
        "signInAction": "Se connecter",
        "otherJurisdictionPrompt": "Besoin d’une autre juridiction ?",
        "otherJurisdictionAction": "Utiliser l’inscription {{jurisdiction}}",
        "plans": {
            "free": {
                "name": "Free",
                "price": "€0",
                "description": "60 jours de rétention pour valider vos sites avant une montée en gamme."
            },
            "pro": {
                "name": "Pro",
                "price": "€15/mois",
                "description": "Plus de rétention et plus de marge pour une petite équipe."
            },
            "business": {
                "name": "Business",
                "price": "€39/mois",
                "description": "Plus d'échelle pour les agences, les équipes produit et un volume d'événements plus élevé."
            }
        },
        "selfHostLink": "Vous préférez héberger vous-même ? Voir la documentation →",
        "tosLabel": "J'accepte les",
        "tosLink": "Conditions d'utilisation",
        "tosAnd": "et la",
        "privacyLink": "Politique de confidentialité",
        "tosRequired": "Vous devez accepter les Conditions d'utilisation et la Politique de confidentialité.",
        "verifyTitle": "Vérifiez votre boîte de réception",
        "verifySubtitle": "Nous avons envoyé un lien de vérification à {{email}}. Cliquez dessus pour activer votre espace.",
        "errors": {
            "emailExists": "Un compte existe déjà avec cette adresse e-mail.",
            "planUnavailable": "Cette option d'inscription n'est pas disponible pour le moment.",
            "unexpected": "Une erreur inattendue est survenue. Veuillez réessayer.",
            "verificationExpired": "Ce lien de vérification a expiré. Veuillez vous inscrire à nouveau."
        }
    },
    "preferences": {
        "breadcrumb": "Préférences",
        "subtitle": "Gérez les préférences de votre application.",
        "actions": {
            "saveChanges": "Enregistrer les modifications"
        },
        "status": {
            "saved": "Enregistré",
            "saveFailed": "Échec de l'enregistrement"
        },
        "errors": {
            "loadFailed": "Impossible de charger les préférences. Rafraîchissez et réessayez."
        },
        "language": {
            "heading": "Préférences de langue",
            "description": "La langue de votre navigateur est utilisée par défaut jusqu'à personnalisation.",
            "defaultLabel": "Langue par défaut",
            "defaultPlaceholder": "Sélectionnez une langue par défaut",
            "defaultHint": "C'est la langue principale de l'interface du tableau de bord.",
            "rtlBadge": "RTL"
        }
    },
    "comparison": {
        "vsLabel": "c/a",
        "pageviewsLabel": "Pages vues (préc.)",
        "visitorsLabel": "Visiteurs (préc.)"
    },
    "events": {
        "title": "Événements",
        "docsAction": "Guide du suivi automatique",
        "noSiteDescription": "Sélectionnez ou créez un site pour voir l'analyse des événements.",
        "eventNameLabel": "Événement",
        "eventNamePlaceholder": "Sélectionner un événement",
        "propertyKeyLabel": "Ventiler par",
        "propertyKeyPlaceholder": "Sélectionner une propriété",
        "automatic": {
            "badge": "Auto"
        },
        "series": {
            "title": "Activité des événements",
            "description": "Occurrences d'événements sur la période sélectionnée.",
            "emptyTitle": "Aucune donnée d'événement",
            "emptyDescription": "Sélectionnez un événement pour voir l'activité dans le temps.",
            "emptySelectedTitle": "Aucune activité pour cet événement",
            "emptySelectedDescription": "Aucun événement correspondant sur la période sélectionnée."
        },
        "breakdown": {
            "title": "Ventilation des propriétés",
            "selectEventFirst": "Sélectionnez un événement pour afficher la ventilation des propriétés.",
            "selectPropertyFirst": "Sélectionnez une propriété pour afficher la ventilation."
        },
        "kpis": {
            "totalEvents": "Total des événements"
        },
        "importedLimitations": {
            "title": "Limites des agrégats importés"
        }
    },
    "aiChatbots": {
        "title": "Chatbots IA",
        "docsAction": "Guide d’instrumentation",
        "noSiteDescription": "Sélectionnez ou créez un site pour afficher l’analyse des chatbots IA.",
        "header": {
            "title": "Analyse des chatbots IA sur le site",
            "description": "Suivez les débuts de conversation, les prompts, les réponses, les transferts et les conversions assistées à partir de l’instrumentation de votre chatbot."
        },
        "filters": {
            "groupBy": "Périmètre",
            "value": "Valeur",
            "allValues": "Toutes les valeurs",
            "unfiltered": "Affichage de tout le trafic chatbot",
            "provider": "Fournisseur",
            "botId": "Bot",
            "surface": "Surface",
            "model": "Modèle"
        },
        "kpis": {
            "conversations": "Conversations",
            "prompts": "Prompts",
            "responses": "Réponses",
            "assistedConversions": "Conversions assistées",
            "handoffRate": "Taux de transfert",
            "citationCtr": "CTR des citations",
            "handoffs": "Transferts"
        },
        "chart": {
            "title": "Activité des conversations",
            "description": "Voyez comment les sessions du chatbot évoluent dans le temps, du premier message au transfert et aux résultats assistés.",
            "emptyTitle": "Aucune activité chatbot",
            "emptyDescription": "Suivez assistant.chat_started et les événements associés pour alimenter ce rapport."
        },
        "breakdowns": {
            "intents": "Principales intentions",
            "providers": "Principaux fournisseurs",
            "surfaces": "Principales surfaces"
        },
        "exportStatus": {
            "success": "Le téléchargement de l’export a commencé.",
            "error": "Échec de l’export des données des chatbots IA. Veuillez réessayer."
        }
    },
    "aiVisibility": {
        "title": "Visibilité IA",
        "docsAction": "Guide de configuration",
        "noSiteDescription": "Sélectionne ou crée un site pour voir l’analyse des fetchs IA et des corrélations.",
        "header": {
            "title": "Analyse de visibilité IA",
            "description": "Suis les fetchs server-side des crawlers IA, où les erreurs de crawl se concentrent et quelles pages récupérées attirent ensuite des visites référées par l’IA."
        },
        "filters": {
            "assistant": "Assistant",
            "family": "Opérateur",
            "resourceType": "Type de ressource",
            "allAssistants": "Tous les assistants",
            "allFamilies": "Tous les opérateurs",
            "allResourceTypes": "Tous les types de ressource",
            "unfiltered": "Affichage de toute l’activité de fetch IA"
        },
        "kpis": {
            "totalFetches": "Fetchs totaux",
            "uniquePaths": "Chemins uniques",
            "uniqueAssistants": "Assistants uniques",
            "errorRate4xx": "Taux 4xx",
            "errorRate5xx": "Taux 5xx",
            "medianResponse": "Réponse médiane",
            "bytesServed": "Octets servis"
        },
        "chart": {
            "title": "Volume de fetchs dans le temps",
            "description": "Vois quand les fetchs transférés des crawlers IA touchent ton contenu et comment la demande évolue sur la période sélectionnée.",
            "fetches": "Fetchs",
            "emptyTitle": "Aucune activité de fetch IA",
            "emptyDescription": "Transmets des enregistrements à /api/sites/{id}/ingest/ai-fetch pour alimenter ce rapport. hk.js seul n’enregistre pas les fetchs de crawlers."
        },
        "breakdowns": {
            "assistants": "Assistants principaux",
            "families": "Opérateurs principaux",
            "paths": "Chemins les plus récupérés",
            "errorPaths": "Chemins avec erreurs",
            "resourceTypes": "Types de ressource"
        },
        "correlation": {
            "title": "Corrélation fetch-visite",
            "description": "Mesure quels chemins récupérés attirent ensuite des visites humaines référées par l’IA et quelles pages fortement fetchées ne créent toujours pas de trafic aval.",
            "note": "Les filtres d’assistant, d’opérateur et de type de ressource s’appliquent uniquement au côté fetch. Les visites corrélées incluent toute visite humaine ultérieure référée par l’IA sur le même chemin dans la fenêtre sélectionnée.",
            "kpis": {
                "correlatedPaths": "Chemins corrélés",
                "aiVisits": "Visites référées par l’IA",
                "uncorrelatedFetches": "Fetchs non corrélés"
            },
            "helpAria": "Afficher l’aide de corrélation",
            "help": {
                "correlatedPaths": "Chemins récupérés ayant ensuite reçu des visites humaines référées par l’IA dans la fenêtre sélectionnée.",
                "aiVisits": "Visites humaines attribuées à des référents IA sur des chemins également fetchés par des crawlers IA.",
                "uncorrelatedFetches": "Fetchs sur des chemins n’ayant produit aucune visite référée par l’IA correspondante dans cette fenêtre.",
                "citationYieldCard": "Sert à repérer les pages où la demande des crawlers IA se transforme en visites aval.",
                "opportunityCard": "Sert à trouver les pages très fetchées qui nécessitent encore de meilleurs contenus, liens ou une meilleure disponibilité.",
                "failureHotspotCard": "Sert à trouver les paires assistant/préfixe de chemin où l’accès des crawlers rencontre des erreurs."
            }
        },
        "tables": {
            "citationYield": {
                "title": "Rendement de citation",
                "description": "Chemins où les fetchs IA se transforment le plus souvent en visites ultérieures référées par l’IA.",
                "empty": "Aucun chemin récupéré n’a produit de visites IA corrélées sur cette période."
            },
            "opportunityPages": {
                "title": "Pages d’opportunité",
                "description": "Pages très fetchées avec peu de visites aval ou une forte pression d’erreurs.",
                "cardSubtitle": "À surveiller",
                "empty": "Aucune page d’opportunité ne correspond aux filtres actuels."
            },
            "failureHotspots": {
                "title": "Points chauds d’échec",
                "description": "Les combinaisons assistant/préfixe de chemin avec la plus forte pression d’erreurs de fetch.",
                "empty": "Aucun point chaud d’échec ne correspond aux filtres actuels."
            }
        },
        "columns": {
            "path": "Chemin",
            "assistant": "Assistant",
            "pathPrefix": "Préfixe de chemin",
            "fetches": "Fetchs",
            "requests": "Requêtes",
            "aiVisits": "Visites IA",
            "errors": "Erreurs",
            "errorRate": "Taux d’erreur",
            "yield": "Rendement"
        },
        "exportStatus": {
            "success": "Téléchargement de l'export lancé.",
            "error": "Échec de l'export des données AI fetch. Veuillez réessayer."
        }
    },
    "integration": {
        "apiClients": {
            "subtitle": "Créez et gérez des clients API pour vos intégrations.",
            "manageTeamClients": "Gérer les clients API d'équipe"
        },
        "apiReference": {
            "subtitle": "Référence REST versionnée avec les détails d'authentification par session et clé API.",
            "versionLabel": "Version API",
            "searchLabel": "Rechercher des endpoints",
            "searchPlaceholder": "Rechercher par méthode, chemin, tag ou résumé",
            "refresh": "Actualiser",
            "latest": "dernière",
            "operationsTitle": "Opérations",
            "loading": "Chargement de la référence API...",
            "empty": "Aucune opération API ne correspond à votre recherche.",
            "noSummary": "Aucun résumé",
            "auth": {
                "title": "Authentification",
                "description": "Utilisez l'une de ces informations selon les exigences de sécurité de l'endpoint.",
                "bearerLabel": "Jeton Bearer",
                "apiKeyLabel": "En-tête X-API-Key",
                "cookieLabel": "Cookie de session"
            },
            "errors": {
                "loadVersions": "Impossible de charger les versions de la documentation API.",
                "loadSpec": "Impossible de charger la référence API pour cette version."
            }
        },
        "googleSearchConsole": {
            "title": "Google Search Console",
            "subtitle": "Connecter des propriétés.",
            "status": {
                "credentials_missing": "Identifiants manquants",
                "connected": "Connecté",
                "disconnected": "Déconnecté",
                "loading": "Chargement",
                "mapped": "Associé",
                "unmapped": "Non associé"
            },
            "labels": {
                "account": "Compte",
                "site": "Site",
                "property": "Propriété",
                "searchProperties": "Rechercher des propriétés",
                "propertyMapping": "Association de propriété",
                "permission": "Autorisation",
                "syncStatus": "État de synchronisation",
                "lastSuccess": "Dernière réussite",
                "lastAttempt": "Dernière tentative",
                "importedRange": "Période importée",
                "nextRetry": "Prochaine tentative",
                "lastError": "Dernière erreur"
            },
            "actions": {
                "refresh": "Actualiser",
                "docs": "Guide de setup",
                "connect": "Connecter",
                "reconnect": "Reconnecter",
                "disconnect": "Déconnecter",
                "confirmDisconnect": "Déconnecter Search Console ?",
                "mapProperty": "Associer la propriété",
                "removeMapping": "Retirer l’association",
                "confirmRemoveMapping": "Retirer l’association ?",
                "syncNow": "Synchroniser maintenant",
                "syncRequesting": "Demande...",
                "syncQueued": "En file",
                "syncRunning": "En cours"
            },
            "sync": {
                "pending": "En attente",
                "running": "En cours",
                "succeeded": "Réussie",
                "failed": "Échouée",
                "needs_attention": "Action requise",
                "idle": "Aucune synchronisation",
                "manualPending": "Synchronisation en file.",
                "queuedFeedback": "Synchronisation en file.",
                "runningFeedback": "Synchronisation en cours.",
                "succeededWithRange": "{{start}}-{{end}} importé.",
                "noHistory": "Aucun import pour l’instant.",
                "quota_limited": "Quota limité",
                "authorization_revoked": "Autorisation révoquée",
                "token_refresh_failed": "Échec du renouvellement du jeton",
                "property_access_lost": "Accès à la propriété perdu",
                "credentials_invalid": "Identifiants invalides",
                "credentials_missing": "Identifiants manquants",
                "api_disabled": "API Search Console désactivée",
                "google_unavailable": "Google indisponible",
                "unknown": "Erreur de synchronisation inconnue"
            },
            "states": {
                "missingCredentials": "Identifiants OAuth requis.",
                "connected": "Connecté.",
                "disconnected": "Déconnecté.",
                "propertyMapped": "Associé à {{property}}.",
                "propertyUnmapped": "Aucune propriété associée.",
                "loadingMapping": "Chargement de l’association.",
                "noProperties": "Aucune propriété retournée.",
                "noMatchingProperties": "Aucune propriété Search Console ne correspond à ce site.",
                "noSite": "Sélectionnez d’abord un site.",
                "readonly": "Lecture seule pour votre rôle.",
                "noMappingSync": "Associez d’abord une propriété Search Console.",
                "syncRequested": "Synchronisation demandée.",
                "disconnectSuccess": "Déconnecté.",
                "reconnectHint": "Reconnectez pour renouveler l’accès."
            },
            "confirm": {
                "disconnectMessage": "Les futurs imports s’arrêtent. Les données importées restent.",
                "removeMappingMessage": "Les futurs imports de ce site s’arrêtent.",
                "disconnectAccept": "Déconnecter",
                "removeMappingAccept": "Retirer l’association",
                "cancel": "Annuler"
            },
            "errors": {
                "load": "État indisponible.",
                "connect": "Connexion échouée.",
                "disconnect": "Déconnexion échouée.",
                "properties": "Propriétés indisponibles.",
                "apiDisabled": "Activez l’API Search Console, puis actualisez.",
                "reconnect": "Reconnectez pour renouveler l’accès.",
                "propertyAccess": "Accès à la propriété perdu.",
                "mapping": "Association indisponible.",
                "mapProperty": "Association échouée.",
                "unmapProperty": "Retrait échoué.",
                "sync": "Demande de synchronisation échouée."
            }
        }
    },
    "searchConsole": {
        "title": "Search Console",
        "description": "Données agrégées Search Console.",
        "kpis": {
            "clicks": "Clics",
            "impressions": "Impressions",
            "ctr": "CTR",
            "position": "Position moy."
        },
        "sections": {
            "trend": "Tendance",
            "topQueries": "Requêtes principales",
            "topPages": "Pages principales",
            "countries": "Pays",
            "devices": "Appareils"
        },
        "context": {
            "label": "Contexte Search Console",
            "range": "Période : {{value}}"
        },
        "states": {
            "pending": "Import des données Search Console.",
            "empty": "Aucune ligne pour cette période.",
            "error": "Données Search Console indisponibles."
        },
        "setup": {
            "title": "Connecter Search Console",
            "manageText": "Connectez ou associez Search Console pour afficher ici les requêtes de recherche.",
            "readonlyText": "Demandez à votre équipe ou au responsable du site de connecter Search Console.",
            "action": "Configurer Search Console"
        }
    },
    "ecommerce": {
        "docsAction": "Configurer l’e-commerce",
        "kpis": {
            "revenue": "Chiffre d’affaires",
            "orders": "Commandes",
            "averageOrderValue": "Panier moyen",
            "checkoutConversion": "Conversion du paiement"
        },
        "chart": {
            "title": "Chiffre d’affaires dans le temps",
            "description": "Suivez le chiffre d’affaires et les achats finalisés sur la période active.",
            "revenue": "Chiffre d’affaires",
            "orders": "Commandes"
        },
        "filters": {
            "product": "Produit : {{value}}",
            "utmSource": "Source UTM : {{value}}"
        },
        "filtersPanels": {
            "sources": "Principales sources",
            "referrers": "Principaux référents",
            "devices": "Principaux appareils",
            "countries": "Principaux pays"
        },
        "breakdowns": {
            "title": "Répartition du chiffre d'affaires",
            "description": "Comparez les performances produit et l'attribution du chiffre d'affaires au même endroit."
        },
        "products": {
            "title": "Produits principaux",
            "description": "Voyez quels produits génèrent le plus de chiffre d’affaires et de commandes finalisées.",
            "empty": "Aucun article acheté ne correspond aux filtres actuels."
        },
        "sources": {
            "title": "Sources de chiffre d’affaires",
            "description": "Attribuez le chiffre d’affaires à la source, au support, à la campagne et au référent.",
            "empty": "Aucune source de chiffre d’affaires ne correspond aux filtres actuels."
        },
        "columns": {
            "product": "Produit",
            "quantity": "Quantité",
            "orders": "Commandes",
            "revenue": "Chiffre d’affaires",
            "source": "Source",
            "campaign": "Campagne",
            "referrer": "Référent"
        },
        "actions": {
            "filterProduct": "Filtrer",
            "clearProductFilter": "Effacer",
            "filterSource": "Filtrer",
            "clearSourceFilter": "Effacer"
        },
        "empty": {
            "title": "Aucune donnée e-commerce pour le moment",
            "description": "Suivez les événements purchase, begin_checkout, add_to_cart et view_item pour alimenter l’analyse e-commerce."
        },
        "noSiteDescription": "Sélectionnez un site pour afficher l’analyse e-commerce."
    },
    "opportunities": {
        "filters": {
            "ariaLabel": "Filtres des opportunités",
            "typeTitle": "Type d’opportunité",
            "statusTitle": "Statut du workflow",
            "types": {
                "all": "Toutes",
                "conversion": "Fuites de conversion",
                "ai": "Visibilité IA",
                "search": "Search",
                "setup": "Configuration",
                "performance": "Performance",
                "traffic": "Signaux trafic"
            },
            "statuses": {
                "all": "Toutes",
                "new": "Nouvelle",
                "saved": "Enregistrée",
                "done": "Terminée",
                "dismissed": "Ignorée"
            }
        },
        "confidence": {
            "high": "Forte confiance",
            "medium": "Confiance moyenne"
        },
        "actions": {
            "previewDigest": "Aperçu du résumé",
            "previewOn": "Aperçu actif",
            "generate": "Actualiser les opportunités",
            "generating": "Actualisation",
            "save": "Enregistrer",
            "inspect": "Inspecter",
            "markDone": "Marquer terminé",
            "dismiss": "Ignorer"
        },
        "errors": {
            "load": "Impossible de charger les opportunités.",
            "generate": "Impossible d'actualiser les opportunités.",
            "status": "Impossible de mettre à jour l'opportunité."
        },
        "digest": {
            "title": "Aperçu du digest hebdomadaire",
            "subtitle": "Principales recommandations qui seraient envoyées par email pour ce site.",
            "statusReady": "Serait envoyé",
            "frequency": {
                "daily": "Quotidien",
                "weekly": "Hebdomadaire"
            },
            "nextAction": "Prochaine action",
            "evidence": "Preuve",
            "confidence": "Confiance",
            "noSend": "Aucun email d'opportunités ne serait encore envoyé pour ce site.",
            "error": "Impossible de charger l'aperçu du digest."
        },
        "inbox": {
            "ariaLabel": "Boîte d’opportunités",
            "title": "Boîte d’opportunités",
            "subtitle": "{{count}} suggestions priorisées pour cette période",
            "cloudBadge": "Copy IA prêt pour Cloud"
        },
        "impact": {
            "monthlyRevenue": "activité",
            "qualifiedVisits": "visites qualifiées",
            "conversionLift": "gain de conversion",
            "searchClicks": "clics search",
            "blindSpots": "angles morts",
            "ai_touched_pages": "pages touchées par l’IA",
            "pageviews_to_route": "pages vues à orienter",
            "estimated_search_clicks": "clics search estimés",
            "conversion_signal_coverage": "trafic sans signal de conversion",
            "tracked_conversion_events": "événements de conversion suivis",
            "conversion_events_to_measure": "événements de conversion à mesurer",
            "funnel_steps_to_measure": "étapes de funnel à mesurer",
            "web_vitals_samples": "échantillons Web Vitals",
            "checkout_starts": "Débuts de checkout"
        },
        "routes": {
            "checkout": "Checkout : {{path}}",
            "path": "{{path}}",
            "source": "{{source}}",
            "search_console": "Search Console",
            "events": "Événements",
            "event": "Événement : {{event_name}}",
            "funnel": "Funnel : {{start_path}}",
            "web_vitals": "Web Vitals : {{metric}} sur {{path}}",
            "tracker": "{{asset}}"
        },
        "evidence": {
            "checkout_starts": "Débuts de checkout",
            "orders": "Commandes",
            "checkout_conversion_rate": "Conversion checkout",
            "ai_requests": "Requêtes de crawlers IA",
            "ai_paths": "Chemins crawlés uniques",
            "top_ai_path": "Chemin IA principal",
            "ai_referrals": "Visites référées par l’IA",
            "ai_path_pageviews": "Pages vues sur le chemin touché par l’IA",
            "pageviews": "Pages vues",
            "sessions": "Sessions",
            "top_source": "Source principale",
            "top_city": "Ville principale globale",
            "top_provider": "Fournisseur principal global",
            "top_asn": "ASN principale globale",
            "search_impressions": "Impressions search",
            "search_ctr": "CTR search",
            "search_position": "Position moyenne",
            "event_names": "Noms d’événements suivis",
            "tracked_events": "Événements suivis",
            "suggested_goal_event": "Événement d’objectif suggéré",
            "suggested_goal_event_count": "Nombre d’événements observé",
            "suggested_funnel_start": "Départ de funnel suggéré",
            "suggested_funnel_start_pageviews": "Pages vues au départ",
            "suggested_funnel_conversion_event": "Étape de conversion suggérée",
            "suggested_funnel_event_count": "Événements de conversion observés",
            "source_hits": "Visites de la source",
            "web_vital_metric": "Métrique Web Vital",
            "web_vital_p75": "Valeur p75",
            "web_vital_rating": "Évaluation",
            "web_vital_samples": "Échantillons",
            "web_vital_poor_samples": "Échantillons mauvais",
            "web_vital_top_page": "Page la plus lente",
            "web_vital_top_page_p75": "p75 de la page la plus lente",
            "total_pageviews": "Pages vues totales"
        },
        "catalog": {
            "checkout_conversion": {
                "title": "Examiner l’abandon du checkout",
                "summary": "Les débuts de checkout convertissent à {{conversion_rate}} sur {{checkout_starts}} débuts.",
                "action": "Inspectez la friction du checkout avant d’ajouter plus de trafic.",
                "digest": "La conversion checkout est de {{conversion_rate}}."
            },
            "ai_visibility": {
                "title": "Examiner l’attention des crawlers IA",
                "summary": "Les assistants IA ont demandé {{requests}} pages ; le chemin le plus fort est {{top_path}}.",
                "action": "Renforcez la page crawlée avec des réponses plus claires et du contexte de conversion.",
                "digest": "Les crawlers IA se sont concentrés sur {{top_path}}."
            },
            "traffic_quality": {
                "title": "Examiner le trafic de {{source}}",
                "summary": "{{source}} a généré {{source_hits}} visites sur {{total_pageviews}} pages vues dans cette période.",
                "action": "Inspectez les pages d’arrivée et l’intention des visites venant de {{source}}.",
                "digest": "Examiner le trafic de {{source}}."
            },
            "web_vitals_performance": {
                "title": "Examiner la performance {{metric}} sur {{path}}",
                "summary": "Le p75 {{metric}} est {{p75}} avec une évaluation {{rating}} sur {{samples}} échantillons.",
                "action": "Priorisez la page la plus lente avant qu’elle entraîne plus de sessions vers de mauvais Web Vitals.",
                "digest": "Le p75 {{metric}} est {{p75}} sur {{path}}."
            },
            "search_visibility": {
                "title": "Examiner les pages déjà visibles en recherche",
                "summary": "La recherche affiche {{impressions}} impressions à {{ctr}} de CTR ; clics manqués estimés : {{estimated_clicks}}.",
                "action": "Améliorez le snippet, le titre et la réponse sur la page pour les requêtes qui génèrent déjà des impressions.",
                "digest": "La recherche indique environ {{estimated_clicks}} clics manqués."
            },
            "conversion_signal": {
                "title": "Examiner les événements suivis comme signaux de conversion",
                "summary": "{{event_names}} sont suivis sur {{pageviews}} pages vues, mais aucun événement de conversion ne priorise encore les opportunités.",
                "action": "Choisissez l’événement qui représente le mieux un lead, une inscription ou un achat, puis marquez-le comme signal de conversion.",
                "digest": "Les événements suivis ont besoin d’un signal de conversion."
            },
            "setup_goal_suggestion": {
                "title": "Créer un objectif pour {{event_name}}",
                "summary": "{{event_name}} s’est déclenché {{event_count}} fois, mais n’est pas encore enregistré comme objectif.",
                "action": "Créez un objectif d’événement avec la valeur {{goal_value}} afin que HitKeep puisse prioriser les opportunités de conversion autour de lui.",
                "digest": "{{event_name}} devrait devenir un objectif."
            },
            "setup_funnel_suggestion": {
                "title": "Créer un funnel de {{start_path}} à {{conversion_event}}",
                "summary": "{{start_path}} reçoit du trafic et {{conversion_event}} s’est déclenché {{event_count}} fois, mais ces étapes ne sont pas encore enregistrées comme funnel.",
                "action": "Créez un funnel de {{step_count}} étapes pour {{funnel_steps}} afin que HitKeep puisse suivre les abandons avant la conversion.",
                "digest": "{{start_path}} vers {{conversion_event}} devrait devenir un funnel."
            },
            "tracking_setup": {
                "title": "Collecter assez de signal pour les recommandations",
                "summary": "Ajoutez des événements de conversion pour prioriser les opportunités.",
                "action": "Vérifiez le tracker et ajoutez un événement de conversion.",
                "digest": "Le tracking a besoin de plus de signal."
            }
        },
        "aiStatus": {
            "disabled": "IA désactivée",
            "selfHosted": "IA auto-hébergée : {{provider}} {{model}}",
            "cloudManaged": "IA gérée par Cloud",
            "notConfigured": "IA non configurée",
            "providerUnknown": "fournisseur inconnu",
            "modelUnknown": "modèle inconnu",
            "disabledHint": "Les opportunités enregistrées restent disponibles. Les nouvelles explications rédigées par IA sont ignorées jusqu’à ce qu’un propriétaire d’instance active l’IA.",
            "notConfiguredHint": "Les opportunités enregistrées restent disponibles. Configurez un fournisseur IA pour actualiser les résumés avec le contexte du modèle.",
            "budgetExhaustedHint": "Les actualisations IA sont en pause, car le budget de requêtes ou de tokens configuré est épuisé pour cette fenêtre."
        },
        "card": {
            "priority": "Priorité"
        },
        "detail": {
            "estimatedImpact": "Impact estimé",
            "priorityScore": "Score de priorité",
            "priorityHint": "Pondéré par les preuves",
            "why": "Pourquoi HitKeep pense que c’est important",
            "nextBestAction": "Meilleure action suivante",
            "readOnly": "Vous disposez d’un accès en lecture seule à ce site. Demandez à un admin du site d’enregistrer, d’ignorer ou de marquer les opportunités comme terminées."
        },
        "empty": {
            "title": "Aucune opportunité ne correspond à cette vue",
            "body": "Essayez un autre filtre de type ou de statut."
        },
        "noSiteDescription": "Sélectionnez un site pour afficher les recommandations d’opportunités."
    },
    "webVitals": {
        "docsAction": "Guide de configuration",
        "error": "Impossible de charger les données Web Vitals.",
        "noSiteDescription": "Sélectionnez ou créez un site pour inspecter les Web Vitals dans le temps.",
        "metrics": {
            "LCP": "LCP",
            "INP": "INP",
            "CLS": "CLS",
            "FCP": "FCP",
            "TTFB": "TTFB"
        },
        "ratings": {
            "good": "Bon",
            "needs_improvement": "À améliorer",
            "poor": "Mauvais",
            "none": "Aucun échantillon"
        },
        "cards": {
            "samples": "{{count}} échantillons",
            "selectMetricAria": "Inspecter {{metric}} dans le temps",
            "goodUntil": "Bon jusqu’à {{value}}"
        },
        "filters": {
            "metric": "Métrique",
            "rating": "Évaluation",
            "path": "Chemin de page",
            "allRatings": "Toutes les évaluations",
            "ratingChip": "Évaluation : {{rating}}",
            "pathChip": "Chemin : {{path}}"
        },
        "chart": {
            "title": "Tendance p75 {{metric}}",
            "description": "Le 75e percentile sur la période sélectionnée, regroupé pour une revue rapide des incidents.",
            "p75": "{{metric}} p75"
        },
        "distribution": {
            "title": "Répartition des évaluations",
            "description": "Échantillons {{metric}} sur tout le site. Cliquez sur une évaluation pour trouver les pages dans cette bande de qualité."
        },
        "pages": {
            "title": "Détail par page",
            "description": "Tous les chemins avec des échantillons {{metric}} sur la période sélectionnée. Cliquez sur une évaluation ci-dessus pour classer les pages à examiner.",
            "filteredTitle": "Pages {{metric}} {{rating}}",
            "filteredDescription": "Affiche les chemins qui ont produit des échantillons {{rating}} {{metric}} sur la période sélectionnée. Réduisez la période ci-dessus pour inspecter une fenêtre d’incident précise.",
            "empty": "Aucun échantillon Web Vitals ne correspond aux filtres actuels."
        },
        "breakdown": {
            "title": "Détail {{dimension}}",
            "description": "p75 {{metric}} par contexte visiteur pour le chemin et l’évaluation sélectionnés.",
            "empty": "Aucune ligne ne correspond aux filtres actuels.",
            "unknown": "Inconnu",
            "tabs": {
                "pages": "Pages",
                "countries": "Pays",
                "languages": "Langues",
                "browsers": "Navigateurs",
                "devices": "Appareils",
                "cities": "Villes",
                "providers": "Fournisseurs",
                "asns": "ASN"
            }
        },
        "columns": {
            "path": "Chemin",
            "p75": "p75",
            "samples": "Échantillons",
            "ratingSamples": "Échantillons {{rating}}",
            "rating": "Évaluation"
        },
        "empty": {
            "title": "Aucun Web Vitals pour le moment",
            "description": "Activez Web Vitals dans le snippet de suivi pour collecter des échantillons de performance opt-in."
        }
    }
}
