{
  "order-vouchers": {
    "apply": "Appliquer un bon",
    "help": "Scannez le bon ou saisissez son code pour le déduire de la commande n° {number}. Vous pouvez appliquer plusieurs bons, y compris à une table sans client associé.",
    "success": "Bon appliqué à la commande",
    "error": "Impossible d’appliquer ce bon à cette commande."
  },
  "job-progress": {
    "title": "Traitements en cours",
    "footer": "Vous pouvez continuer à naviguer, tout se poursuit en arrière-plan.",
    "minimize": "Réduire le suivi des traitements",
    "expand": "Afficher le suivi des traitements",
    "dismiss": "Masquer",
    "cancel": "Annuler",
    "running-count": "{count, plural, =1 {# traitement en cours} other {# traitements en cours}}",
    "completed-count": "{count, plural, =1 {# traitement terminé} other {# traitements terminés}}",
    "failed-count": "{count, plural, =0 {Échec du traitement} =1 {# échec} other {# échecs}}",
    "failed-tasks-count": "{count, plural, =1 {# traitement en échec} other {# traitements en échec}}",
    "elapsed-seconds": "{seconds} s",
    "elapsed-minutes": "{minutes} min {seconds} s",
    "stop": "Arrêter : {task}",
    "continue": "Continuer",
    "stopping-in": "Arrêt dans {seconds} s",
    "stopped-summary": "Arrêté · {processed} sur {total}",
    "stopped": "Arrêté",
    "auto-publish-meta": "{counter} · étalées jusqu'à {time}",
    "view-drafts": "Voir les brouillons",
    "stop-error": "Impossible d'arrêter le traitement. Réessayez.",
    "kind": {
      "translation": "Traduction du menu",
      "marketing-campaign": "Envoi de la campagne",
      "review-sync": "Récolte des avis",
      "review-analysis": "Analyse des avis",
      "review-bulk-suggestion": "Réponses IA aux avis",
      "review-bulk-publish": "Publication des réponses",
      "review-auto-publish": "Réponses automatiques",
      "loyalty-migration": "Migration des cartes de fidélité",
      "google-places-sync": "Synchronisation Google",
      "flyers-zip": "Génération des flyers",
      "export-orders": "Export des commandes",
      "export-customers": "Export des clients",
      "export-reservations": "Export des réservations",
      "gallery-upload": "Envoi des photos",
      "bulk-image-assignment": "Envoi des images produits"
    }
  },
  "date-picker": {
    "previous-year": "Année précédente",
    "next-year": "Année suivante"
  },
  "pull-to-refresh": {
    "pull": "Tirez pour rafraîchir",
    "release": "Relâchez pour rafraîchir",
    "refreshing": "Actualisation…"
  },
  "native-restricted": {
    "title": "Disponible uniquement sur le web",
    "description": "Pour gérer votre abonnement et vos crédits SMS, ouvrez l'application web depuis votre navigateur.",
    "url-label": "Adresse"
  },
  "source-badge": {
    "website": "Site web",
    "widget": "Widget",
    "admin": "Admin",
    "google-reserve": "Réserver avec Google",
    "uber-eats": "Uber Eats",
    "deliveroo": "Deliveroo",
    "suzzy": "Suzzy"
  },
  "fonts": {
    "inter": "Inter",
    "roboto": "Roboto",
    "open-sans": "Open Sans",
    "lato": "Lato",
    "montserrat": "Montserrat",
    "poppins": "Poppins",
    "nunito": "Nunito",
    "raleway": "Raleway",
    "playfair-display": "Playfair Display",
    "merriweather": "Merriweather",
    "source-sans-pro": "Source Sans Pro",
    "oswald": "Oswald",
    "dm-sans": "DM Sans",
    "work-sans": "Work Sans",
    "outfit": "Outfit"
  },
  "border-radius": {
    "none": "Aucun",
    "xs": "Très petit",
    "sm": "Petit",
    "md": "Moyen",
    "lg": "Grand",
    "xl": "Très grand",
    "2xl": "Extra grand",
    "3xl": "Énorme",
    "full": "Complet"
  },
  "notFound": {
    "title": "Page introuvable",
    "description": "Oups ! La page que vous recherchez semble avoir pris le large.",
    "back-to-home": "Retour à l'accueil"
  },
  "countries": {
    "fr": "France",
    "usa": "États-Unis",
    "es": "Espagne",
    "de": "Allemagne",
    "it": "Italie",
    "cn": "Chine",
    "pt": "Portugal",
    "jp": "Japon",
    "kr": "Corée du Sud",
    "nl": "Pays-Bas",
    "gb": "Royaume-Uni",
    "ar": "Argentine",
    "ru": "Russie",
    "br": "Brésil"
  },
  "wheel-themes": {
    "classic-bw": "Classique Noir & Blanc",
    "casino-red": "Casino Rouge",
    "ocean-blue": "Océan Bleu",
    "forest-green": "Forêt Verte",
    "royal-purple": "Violet Royal",
    "sunset-orange": "Coucher de Soleil",
    "gold-luxury": "Or Luxueux",
    "pink-party": "Fête Rose",
    "mint-fresh": "Menthe Fraîche",
    "candy-pop": "Bonbon Pop",
    "cherry-blossom": "Fleur de Cerisier",
    "neon-nights": "Nuits Néon",
    "earth-tones": "Tons Terre",
    "arctic-frost": "Givre Arctique",
    "tropical-vibes": "Ambiance Tropicale",
    "midnight-blue": "Bleu Minuit",
    "autumn-harvest": "Récolte d'Automne",
    "lavender-dream": "Rêve de Lavande",
    "fire-ice": "Feu & Glace",
    "monochrome": "Monochrome"
  },
  "theme-presets": {
    "default": "Par défaut",
    "citrus": "Agrumes",
    "ocean": "Océan",
    "forest": "Forêt",
    "sunset": "Coucher de soleil",
    "lavender": "Lavande",
    "midnight": "Minuit",
    "rose": "Rose",
    "coral": "Corail",
    "mint": "Menthe",
    "gold": "Or",
    "slate": "Ardoise",
    "berry": "Baie",
    "earth": "Terre",
    "aqua": "Aqua",
    "wine": "Vin",
    "cherry": "Cerise"
  },
  "shop-settings": {
    "page": {
      "title": "Paramètres boutique",
      "description": "Gérez les informations et paramètres de votre boutique"
    },
    "tabs": {
      "shop": "Boutique",
      "links": "Liens",
      "theme": "Thème",
      "subscription": "Abonnement",
      "features": "Fonctionnalités",
      "open-hours": "Horaires",
      "team": "Équipe",
      "sms": "SMS"
    },
    "features": {
      "title": "Fonctionnalités disponibles",
      "status": {
        "active": "Actif",
        "inactive": "Inactif"
      },
      "expires-at": "Expire le {date}"
    }
  },
  "theme-settings": {
    "page": {
      "title": "Thème",
      "description": "Personnalisez l'apparence de votre tableau de bord"
    },
    "presets": {
      "title": "Thèmes prédéfinis",
      "description": "Sélectionnez un thème pour appliquer toutes les couleurs"
    },
    "colors": {
      "title": "Couleurs",
      "description": "Personnalisez les couleurs de l'interface",
      "primary": "Couleur principale",
      "primary-description": "Boutons, liens et éléments principaux",
      "secondary": "Couleur secondaire",
      "secondary-description": "Éléments secondaires et badges",
      "accent": "Couleur d'accent",
      "accent-description": "Surbrillances et états de survol",
      "success": "Couleur de succès",
      "success-description": "Messages et états de réussite",
      "warning": "Couleur d'avertissement",
      "warning-description": "Alertes et avertissements",
      "destructive": "Couleur de danger",
      "destructive-description": "Erreurs et actions destructives"
    },
    "backgrounds": {
      "title": "Arrière-plans",
      "description": "Couleurs d'arrière-plan de l'interface",
      "page": "Fond de page",
      "page-description": "Couleur de fond principale",
      "card": "Fond des cartes",
      "card-description": "Couleur de fond des cartes et modales"
    },
    "typography": {
      "title": "Typographie",
      "description": "Personnalisez les polices de caractères",
      "font-family": "Police principale",
      "font-family-description": "Police utilisée pour le texte courant",
      "heading-font-family": "Police des titres",
      "heading-font-family-description": "Police utilisée pour les titres et en-têtes",
      "select-font": "Choisir une police",
      "default": "Par défaut"
    },
    "border-radius": {
      "title": "Arrondis",
      "description": "Personnalisez les coins arrondis des éléments",
      "small": "Petit",
      "small-description": "Boutons, badges et petits éléments",
      "medium": "Moyen",
      "medium-description": "Cartes et conteneurs moyens",
      "large": "Grand",
      "large-description": "Modales et grands conteneurs",
      "full": "Complet",
      "full-description": "Avatars et éléments circulaires",
      "select-size": "Choisir une taille"
    },
    "preview": {
      "title": "Aperçu en direct",
      "description": "Visualisez l'apparence de votre thème",
      "sample-card": "Carte exemple",
      "buttons": "Boutons",
      "badges": "Badges",
      "form-elements": "Formulaire",
      "progress": "Progression",
      "calendar": "Calendrier",
      "product-card": "Carte produit",
      "sample-product": "Produit exemple",
      "sample-description": "Description du produit",
      "search-placeholder": "Rechercher un produit...",
      "order-options": "Options de commande",
      "reservation": "Réservation",
      "reservation-description": "Réservez une table",
      "click-collect": "Click & Collect",
      "click-collect-description": "Commandez et récupérez",
      "sample-product-name": "Burger Signature",
      "sample-product-details": "Bœuf, cheddar, bacon croustillant",
      "sample-product-price": "14,90 €",
      "weekdays": {
        "mon": "Lun",
        "tue": "Mar",
        "wed": "Mer",
        "thu": "Jeu",
        "fri": "Ven",
        "sat": "Sam",
        "sun": "Dim"
      },
      "day-aria": "Jour {day}",
      "today-aria": "Jour {day}, aujourd'hui",
      "selected-aria": "Jour {day}, sélectionné",
      "previous-month": "Mois précédent",
      "next-month": "Mois suivant"
    },
    "reset": "Réinitialiser"
  },
  "validation": {
    "replay-delay-max": "Le délai ne peut pas dépasser 365 jours.",
    "invalid": "Valeur invalide",
    "required": "Ce champ est requis",
    "positive-number": "Doit être un nombre positif",
    "min-zero": "La valeur doit être supérieure ou égale à 0",
    "integer": "Doit être un nombre entier",
    "referral-bonus-required": "Activez au moins un bonus supérieur à 0",
    "referral-rejection-reason-max": "Le motif ne peut pas dépasser 500 caractères",
    "delivery-tiers-ascending": "Les distances doivent augmenter d'un palier à l'autre",
    "name-min-2": "Le nom doit contenir au moins 2 caractères",
    "print-label-max-32": "Le libellé cuisine ne peut pas dépasser 32 caractères",
    "name-min-3": "Le nom doit contenir au moins 3 caractères",
    "name-required": "Le nom est requis",
    "name-max-50": "Le nom ne doit pas dépasser 50 caractères",
    "email-invalid": "Format d'email invalide",
    "email-or-phone-required": "Un email ou un numéro de téléphone est requis",
    "points-required": "Le nombre de points est requis",
    "amount-required": "Le montant est requis",
    "password-min-6": "Le mot de passe doit contenir au moins 6 caractères",
    "password-min-8": "Le mot de passe doit contenir au moins 8 caractères",
    "password-required": "Le mot de passe est requis",
    "passwords-mismatch": "Les mots de passe ne correspondent pas",
    "passwords-not-match": "Les mots de passe ne correspondent pas",
    "phone-invalid": "Numéro de téléphone invalide",
    "phone-required": "Le numéro de téléphone est requis",
    "phone-10-digits": "Le numéro de téléphone doit contenir 10 chiffres",
    "address-required": "L'adresse est requise",
    "logo-required": "Le logo est requis",
    "cover-image-required": "L'image de couverture est requise",
    "gallery-images-required": "Au moins une photo de galerie est requise",
    "city-required": "La ville est requise",
    "postal-code-required": "Le code postal est requis",
    "country-required": "Le pays est requis",
    "location-required": "La localisation est requise. Sélectionnez une adresse dans la liste.",
    "content-required": "Le contenu est requis",
    "subject-required": "L'objet est requis",
    "description-required": "La description est requise",
    "description-max-500": "La description ne doit pas dépasser 500 caractères",
    "price-required": "Le prix est requis",
    "price-positive": "Le prix doit être un nombre positif",
    "price-integer": "Le prix doit être un nombre entier",
    "price-max": "Le prix est trop élevé",
    "category-required": "La catégorie est requise",
    "url-invalid": "Format d'URL invalide",
    "url-invalid-or-empty": "L'URL doit être valide ou vide",
    "uuid-invalid": "ID invalide",
    "color-invalid": "Format de couleur invalide (ex: #FF5733)",
    "start-date-required": "La date de début est requise",
    "end-date-required": "La date de fin est requise",
    "end-date-after-start": "La date de fin doit être après la date de début",
    "redirect-url-https-required": "L'URL de redirection HTTPS est requise pour ce type de campagne",
    "platform-required": "La plateforme est requise pour ce type de campagne",
    "probability-required": "La probabilité est requise",
    "probability-positive": "La probabilité doit être positive",
    "probability-max-100": "La probabilité ne peut pas dépasser 100%",
    "probability-max-decimals": "La probabilité ne peut avoir plus de 2 décimales",
    "points-or-stamps-required": "Veuillez saisir un nombre de points ou de tampons",
    "stamps-required-range": "Doit être d'au moins 5 tampons",
    "value-invalid": "Valeur invalide",
    "expiration-date-required": "La date d'expiration est requise",
    "expiration-days-min-1": "Le nombre de jours doit être au moins 1",
    "min-greater-than-max": "La valeur minimum doit être inférieure ou égale à la valeur maximum",
    "occasional-visits-greater-than-regular": "Le seuil « occasionnel » doit être inférieur ou égal au seuil « régulier »",
    "regular-visits-greater-than-loyal": "Le seuil « régulier » doit être inférieur ou égal au seuil « fidèle »",
    "date-required": "La date est requise",
    "scheduled-date-required": "La date est requise pour programmer la campagne",
    "scheduled-time-required": "L'heure est requise pour programmer la campagne",
    "scheduled-date-must-be-future": "La date programmée doit être dans le futur",
    "time-required": "L'heure est requise",
    "phone-min-length": "Le numéro de téléphone doit contenir au moins 7 caractères",
    "phone-max-length": "Le numéro de téléphone ne doit pas dépasser 20 caractères",
    "nb-clients-min": "Le nombre de personnes doit être au moins 1",
    "note-max-length": "La note ne doit pas dépasser 500 caractères",
    "internal-note-max-length": "La note interne ne doit pas dépasser 1000 caractères",
    "pin-format": "Le code PIN doit contenir 6 chiffres",
    "terms-required": "Vous devez accepter les CGU et la Politique de confidentialité pour continuer.",
    "signature-max": "La signature ne peut pas dépasser 100 caractères",
    "custom-instructions-max": "Les consignes ne peuvent pas dépasser 500 caractères",
    "persona-name-max": "Le nom ne peut pas dépasser 100 caractères",
    "custom-mention-max": "Une mention ne peut pas dépasser 200 caractères",
    "custom-mentions-max-count": "Vous ne pouvez pas ajouter plus de 5 mentions",
    "example-text-max": "Le texte ne peut pas dépasser 500 caractères",
    "rating-min-1": "La note doit être au minimum 1",
    "rating-max-5": "La note doit être au maximum 5",
    "auto-reply-delay-min": "Le délai doit être positif",
    "auto-reply-delay-min-max": "Le délai minimum ne peut pas dépasser 60 minutes",
    "auto-reply-delay-max": "Le délai maximum ne peut pas dépasser 180 minutes",
    "auto-reply-delay-min-greater-than-max": "Le délai minimum doit être inférieur au délai maximum",
    "availability-date-required": "La date de début de validité est requise",
    "availability-days-min-1": "Le nombre de jours doit être au moins 1",
    "availability-date-before-expiration": "La date de début de validité doit être antérieure à la date d'expiration",
    "availability-days-before-expiration": "Les jours avant disponibilité doivent être inférieurs aux jours avant expiration",
    "name-too-long": "Le nom est trop long (120 caractères maximum)",
    "option-name-required": "Le nom de l'option est obligatoire",
    "option-name-too-long": "Le nom de l'option est trop long (120 caractères maximum)",
    "option-price-required": "Le supplément est obligatoire",
    "option-price-must-be-integer": "Le supplément doit être un montant valide",
    "option-price-must-be-positive": "Le supplément ne peut pas être négatif",
    "option-max-quantity-required": "La quantité maximum est obligatoire",
    "option-max-quantity-must-be-integer": "La quantité maximum doit être un nombre entier",
    "option-max-quantity-min": "La quantité maximum doit être au moins de 1",
    "max-selections-required": "Le nombre maximum de choix est obligatoire",
    "max-selections-must-be-integer": "Le nombre maximum de choix doit être un nombre entier",
    "max-selections-min": "Le nombre maximum de choix doit être au moins de 1",
    "free-selection-required": "Le nombre de choix inclus est obligatoire",
    "free-selection-must-be-integer": "Le nombre de choix inclus doit être un nombre entier",
    "free-selection-min": "Le nombre de choix inclus ne peut pas être négatif",
    "free-selection-exceeds-max": "Le nombre de choix inclus ne peut pas dépasser le nombre maximum de choix",
    "options-required": "Ajoutez au moins une option à ce groupe",
    "options-too-many": "Ce groupe contient trop d’options (50 maximum)",
    "single-default-only": "Un groupe à choix unique ne peut avoir qu’une seule option sélectionnée par défaut",
    "name-max-255": "Le nom ne doit pas dépasser 255 caractères",
    "room-requires-interval": "En mode Salle, choisissez un intervalle entre les créneaux (pas « toute la session »)",
    "split-requires-combinations": "Les groupes séparés nécessitent les combinaisons de tables.",
    "room-name-required": "Le nom de la salle est requis",
    "room-name-max": "Le nom de la salle ne doit pas dépasser 80 caractères",
    "room-grid-min": "La salle doit faire au moins 4 cases de côté",
    "room-grid-max": "La salle ne peut pas dépasser 80 cases de côté",
    "combination-name-required": "Le nom du groupement est requis",
    "combination-name-max": "Le nom du groupement ne doit pas dépasser 80 caractères",
    "combination-seats-min": "Le nombre de couverts doit être au moins 1",
    "combination-seats-max": "Le nombre de couverts ne peut pas dépasser 500",
    "sms-cap-max": "Le plafond ne peut pas dépasser 100 €",
    "sms-price-range": "Le prix doit être compris entre 0,09 € et 1,00 € HT",
    "closure-end-time-after-start": "L'heure de fin doit être après l'heure de début",
    "closure-reason-max": "Le motif ne doit pas dépasser 300 caractères",
    "availability-tables-required": "Sélectionnez au moins une table",
    "alcohol-abv-invalid": "Indiquez un degré entre 0,01 et 100 (ex : 12,5)",
    "date-not-past": "La date ne peut pas être passée",
    "services-required": "Choisissez au moins un service",
    "capacity-max-500": "La capacité ne peut pas dépasser 500"
  },
  "page": {
    "title": "Bienvenue sur Suzzy App",
    "subtitle": "Votre dashboard de gestion préféré",
    "get-started": "Commencez par modifier",
    "save-changes": "Enregistrez et voyez vos changements instantanément.",
    "deploy-now": "Déployer maintenant",
    "read-docs": "Lire notre documentation",
    "learn": "Apprendre",
    "examples": "Exemples",
    "go-to-nextjs": "Aller sur nextjs.org"
  },
  "common": {
    "seconds-short": "s",
    "color-picker-eyedropper": "Prélever une couleur à l'écran",
    "coming-soon": "Bientôt",
    "language": "Langue",
    "switch-language": "Changer de langue",
    "save": "Enregistrer",
    "saving": "Enregistrement...",
    "cancel": "Annuler",
    "see-more": "Voir plus",
    "preview-image": "Aperçu de l'image",
    "close": "Fermer",
    "apply": "Appliquer",
    "validation-error": "Erreur de validation",
    "select-rating": "Sélectionner une note",
    "star": "étoile",
    "stars": "étoiles",
    "enabled": "Activé",
    "disabled": "Désactivé",
    "enable": "Activer",
    "disable": "Désactiver",
    "custom-value": "Valeur personnalisée",
    "back": "Retour",
    "next": "Suivant",
    "continue": "Continuer",
    "confirm": "Confirmer",
    "increment": "Augmenter",
    "decrement": "Diminuer",
    "send": "Envoyer",
    "edit": "Modifier",
    "delete": "Supprimer",
    "add": "Ajouter",
    "add-item": "Ajouter un élément...",
    "remove": "Retirer",
    "remove-item": "Retirer {item}",
    "search": "Rechercher",
    "filter": "Filtrer",
    "remove-filter": "Supprimer le filtre",
    "all": "Tout",
    "previous": "Précédent",
    "carousel": {
      "previous-slide": "Section précédente",
      "next-slide": "Section suivante",
      "go-to-slide": "Aller à la section {index}"
    },
    "total": "Total",
    "no-results": "Aucun résultat",
    "loading": "Chargement...",
    "error": "Erreur",
    "success": "Succès",
    "warning": "Attention",
    "info": "Information",
    "menu": "Menu",
    "more": "Plus",
    "scroll-to-top": "Revenir en haut",
    "orders": "Commandes",
    "history": "Historique",
    "reviews": "Avis",
    "modified": "Modifié",
    "theme": "Thème",
    "toggle-theme": "Changer de thème",
    "theme-light": "Clair",
    "theme-dark": "Sombre",
    "theme-system": "Système",
    "open": "Ouvrir",
    "active": "Actif",
    "inactive": "Inactif",
    "other": "Autre",
    "statistics": "Statistiques",
    "winners-count": "{count, plural, =1 {récompense} other {récompenses}}",
    "column-visibility": {
      "button": "Colonnes",
      "title": "Afficher les colonnes"
    },
    "table": {
      "empty": "Aucun résultat trouvé.",
      "error": "Une erreur est survenue.",
      "load-more": "Charger plus",
      "drag-to-reorder": "Glisser pour réorganiser",
      "select-row": "Sélectionner la ligne",
      "select-all": "Tout sélectionner",
      "expand-row": "Déplier la ligne",
      "collapse-row": "Replier la ligne"
    },
    "show-less": "Afficher moins",
    "show-more": "Afficher plus",
    "error-boundary": {
      "error-message": "Une erreur est survenue",
      "retry": "Réessayer"
    },
    "loading-failed": "Erreur de chargement",
    "loading-failed-description": "Impossible de charger les données. Veuillez réessayer.",
    "today": "Aujourd'hui",
    "items-per-page": "Éléments par page",
    "actions": "Actions",
    "see": "Voir",
    "see-less": "Voir moins"
  },
  "game-types": {
    "wheel": "Roue de la fortune",
    "scratch": "Carte à gratter",
    "slot-machine": "Machine à sous",
    "dice": "Lancer de dés",
    "flip-card": "Carte à retourner"
  },
  "features": {
    "disabled": {
      "title": "Cette fonctionnalité est désactivée",
      "description": "Cette fonctionnalité est actuellement désactivée pour vos clients. Ils ne peuvent pas l'utiliser. Vous pouvez l'activer à tout moment.",
      "go-to-settings": "Aller aux paramètres",
      "manage-features": "Gérer les fonctionnalités"
    },
    "page": {
      "title": "Gestion des fonctionnalités",
      "description": "Activez ou désactivez les fonctionnalités pour vos clients",
      "error-loading": "Erreur lors du chargement des fonctionnalités",
      "my-features": "Mes fonctionnalités",
      "available-features": "Fonctionnalités disponibles",
      "available-features-description": "Contactez votre administrateur pour activer ces fonctionnalités.",
      "expired-features": "Fonctionnalités expirées",
      "expired-features-description": "Ces fonctionnalités ont expiré. Contactez votre administrateur pour les renouveler."
    },
    "card": {
      "active": "Actif",
      "disabled": "Désactivé",
      "admin": "Admin",
      "expired": "Expiré",
      "unavailable": "Non disponible",
      "monthly-price": "{price}/mois",
      "current-status": "Statut actuel",
      "enabled": "Activé",
      "expiration-date": "Date d'expiration",
      "admin-disabled-message": "Cette fonctionnalité a été désactivée par l'administrateur.",
      "expired-message": "Votre abonnement pour cette fonctionnalité a expiré. Renouvelez votre abonnement pour continuer à l'utiliser.",
      "renew-subscription": "Renouveler l'abonnement",
      "expired-on": "Expiré le {date}",
      "expires-at": "Expire le {date}",
      "no-subscription-warning": "Sans abonnement actif, vos clients ne verront pas cette fonctionnalité."
    },
    "no-subscription": {
      "title": "Aucun abonnement actif",
      "description": "Vous n'avez actuellement aucun abonnement à notre plateforme",
      "why-subscribe": "Pourquoi souscrire ?",
      "benefit-1": "Accédez à toutes les fonctionnalités de gestion de votre restaurant",
      "benefit-2": "Gérez vos réservations, commandes et menus en temps réel",
      "benefit-3": "Profitez d'un support client dédié et réactif",
      "contact-message": "Pour souscrire à un abonnement et débloquer toutes les fonctionnalités, veuillez contacter notre équipe commerciale. Nous serons ravis de vous accompagner dans le choix de l'offre la mieux adaptée à vos besoins."
    }
  },
  "settings": {
    "orders": {
      "amounts": {
        "title": "Montants des commandes",
        "description": "Définissez les limites de montant pour les commandes",
        "min-amount": "Montant minimum",
        "max-amount": "Montant maximum"
      },
      "scheduled": {
        "title": "Commandes programmées",
        "description": "Configurez les options de programmation des commandes",
        "max-days": "Programmation jusqu'à",
        "max-days-description": "Au-delà de cette durée, le client ne peut plus choisir de date."
      },
      "notifications": {
        "title": "Notifications",
        "description": "Gérez les notifications pour les nouvelles commandes",
        "new-order": "Notification nouvelle commande",
        "new-order-description": "Recevoir une notification pour chaque nouvelle commande",
        "staff-link-description": "Chaque membre choisit ses alertes dans Mes alertes."
      },
      "verification": {
        "title": "Vérification",
        "description": "Vérifier l'identité du client avant la commande",
        "email": "Vérification par email",
        "email-description": "Envoyer un code de vérification par email",
        "sms": "Vérification par SMS",
        "sms-description": "Envoyer un code de vérification par SMS ({price} HT par SMS)"
      },
      "automation": {
        "title": "Automatisation des commandes",
        "description": "Configurez les transitions automatiques des statuts de commande",
        "instant": "Instantané",
        "minutes-value": "{value} min",
        "ordered-to-preparation": {
          "label": "Commandé → En préparation",
          "description": "Accepter automatiquement les nouvelles commandes"
        },
        "preparation-to-ready": {
          "label": "En préparation → Prêt",
          "description": "Marquer automatiquement les commandes comme prêtes"
        },
        "ready-to-pickup": {
          "label": "Prêt → Récupéré",
          "description": "Marquer automatiquement les commandes comme récupérées"
        }
      },
      "kitchen-labels": {
        "title": "Libellés cuisine",
        "description": "Imprimez un nom court sur le ticket cuisine au lieu du nom complet du plat.",
        "enabled": "Utiliser les libellés cuisine",
        "enabled-description": "Une fois activé, renseignez un libellé court (ex. S2) sur vos plats : il s'imprime à la place du nom en cuisine."
      }
    },
    "reservation": {
      "hours": {
        "title": "Horaires de réservation",
        "description": "Configurez les horaires d'ouverture pour les réservations",
        "manage-hours": "Gérer les horaires d'ouverture"
      },
      "capacity": {
        "title": "Capacité",
        "description": "Définissez les limites de taille de groupe pour les réservations",
        "min-party-size": "Taille minimum du groupe",
        "max-party-size": "Taille maximum du groupe"
      }
    },
    "reviews": {
      "moderation": {
        "title": "Modération",
        "description": "Configurez la modération automatique des avis clients",
        "auto-approve": "Approbation automatique",
        "auto-approve-description": "Approuver automatiquement les avis avec cette note ou plus"
      },
      "review-request-email": {
        "title": "Emails de demande d'avis Google",
        "description": "Envoyez automatiquement un email pour demander un avis Google après un passage ou une commande",
        "reservation": {
          "title": "Réservations",
          "description": "Email de demande d'avis après une réservation",
          "managed-enabled": "Activée dans les messages de réservation",
          "managed-disabled": "Désactivée dans les messages de réservation"
        },
        "order": {
          "title": "Click & Collect",
          "description": "Email de demande d'avis après une commande"
        },
        "enable": "Activer l'envoi automatique",
        "enable-description": "Envoyer un email de demande d'avis Google après le passage du client",
        "delay": "Délai d'envoi",
        "delay-description": "Temps d'attente après l'événement avant d'envoyer l'email"
      },
      "ai-reply": {
        "title": "Réponses IA",
        "description": "Configurez la génération automatique de réponses aux avis Google grâce à l'IA",
        "reply-mode-label": "Mode de réponse IA",
        "reply-modes": {
          "off": "Désactivé",
          "draft": "Brouillons à valider (recommandé)",
          "auto": "Publication automatique"
        },
        "signature-label": "Signature",
        "signature-placeholder": "L'équipe",
        "signature-helper": "Préfixe de la signature. Le nom du restaurant est ajouté automatiquement à la fin (ex: « L'équipe Noodle House »).",
        "tone-label": "Ton de la réponse",
        "tones": {
          "convivial": "Convivial",
          "formal": "Professionnel",
          "casual": "Décontracté"
        },
        "reply-length-label": "Longueur des réponses",
        "reply-lengths": {
          "concise": "Concise (1-2 phrases)",
          "standard": "Standard (2-4 phrases)",
          "detailed": "Détaillée (3-6 phrases)"
        },
        "presets-label": "Type de réponse",
        "presets": {
          "chaleureux": "Chaleureux",
          "patron": "Patron du coin",
          "maison": "Maison",
          "attentionne": "Attentionné"
        },
        "preset-descriptions": {
          "chaleureux": "Ton convivial, quelques phrases, sans reprendre les détails de l'avis.",
          "patron": "Ton décontracté et une phrase courte, comme un patron qui répond entre deux services.",
          "maison": "Ton professionnel et sans émoji, pour un établissement classique.",
          "attentionne": "Réponses plus longues, qui reprennent les mots du client."
        },
        "presets-custom-helper": "Réglages sur mesure : vos choix ne correspondent à aucun type de réponse.",
        "personalization-label": "Reprise de l'avis",
        "personalizations": {
          "generic": "Rester général",
          "detailed": "Reprendre ses mots"
        },
        "emoji-policy-label": "Émojis",
        "emoji-policies": {
          "never": "Jamais",
          "sometimes": "Parfois"
        },
        "custom-instructions": {
          "label": "Vos consignes",
          "placeholder": "Ex : proposer de réserver pour le week-end, ne jamais parler des travaux en cours.",
          "helper": "Suivies à chaque réponse, en plus des réglages ci-dessus. Elles ne lèvent pas les garde-fous : un avis grave reste transmis pour validation."
        },
        "negative-strategy-label": "Stratégie pour les mauvais avis (note ≤ 2)",
        "negative-strategies": {
          "always-escalate": "Ne pas répondre — escalation manuelle uniquement",
          "apologize-and-escalate": "Brouillon d'excuses + validation manuelle (recommandé)"
        },
        "advanced": {
          "title": "Paramètres avancés"
        },
        "custom-mentions": {
          "title": "Mentions personnalisées",
          "description": "Éléments à mettre en avant dans les réponses (terrasse, menu végétarien, etc.)",
          "placeholder": "Ajouter une mention...",
          "add": "Ajouter",
          "remove": "Supprimer la mention {mention}",
          "empty": "Aucune mention pour le moment",
          "limit-reached": "Limite de {max} mentions atteinte"
        },
        "few-shot-examples": {
          "title": "Exemples de réponses",
          "description": "Fournissez des exemples pour guider le style des réponses générées",
          "add": "Ajouter un exemple",
          "remove": "Supprimer l'exemple",
          "rating-label": "Note",
          "review-excerpt-label": "Extrait de l'avis",
          "review-excerpt-placeholder": "Très bonne soirée, accueil chaleureux...",
          "reply-example-label": "Réponse modèle",
          "reply-example-placeholder": "Merci infiniment pour votre retour ! Nous sommes ravis...",
          "empty": "Aucun exemple ajouté pour le moment"
        },
        "auto-reply": {
          "title": "Réponse automatique",
          "description": "Publier automatiquement les réponses générées sans validation manuelle",
          "by-rating-title": "Notes publiées automatiquement sans validation",
          "by-rating-description": "Les avis dont la note n'est pas cochée génèrent un brouillon en attente de validation manuelle.",
          "rating-stars": "{count, plural, =1 {# étoile} other {# étoiles}}"
        },
        "style": {
          "title": "Style de réponse",
          "description": "Configurez comment l'IA rédige les réponses"
        },
        "publish": {
          "title": "Publication automatique",
          "description": "Définissez quand les réponses sont publiées automatiquement"
        },
        "personalization": {
          "title": "Personnalisation",
          "description": "Ajoutez des éléments personnalisés aux réponses"
        }
      }
    },
    "campaigns": {
      "moderation": {
        "title": "Modération",
        "description": "Configurez les paramètres de modération des jeux",
        "reward-min-rating": "Note minimum pour les récompenses",
        "reward-min-rating-description": "Note minimum requise pour que les clients puissent accéder aux jeux",
        "allow-spin-below-rating": "Autoriser le jeu pour tous les avis",
        "allow-spin-below-rating-description": "Quand activé, tous les clients peuvent jouer au jeu, même avec une note inférieure au seuil",
        "collect-customer-info": "Collecter les infos client au gain",
        "collect-customer-info-description": "Si désactivé, le client reçoit sa récompense directement sans saisir d'email.",
        "spin-flow-mode-review-first": "Avis Google avant le jeu",
        "spin-flow-mode-review-first-description": "Le client laisse un avis avant de pouvoir accéder au jeu.",
        "spin-flow-mode-spin-first": "Jeu avant avis Google",
        "spin-flow-mode-spin-first-description": "Le client joue d’abord, puis l’avis Google devient optionnel après le résultat."
      }
    },
    "feature-disabled-message": "Cette fonctionnalité est désactivée pour vos clients. Activez-la pour permettre l'accès.",
    "feature-status": {
      "reservations": {
        "title": "Statut des réservations",
        "description": "Activer ou désactiver les réservations pour vos clients"
      },
      "orders": {
        "title": "Statut Click & Collect",
        "description": "Activer ou désactiver les commandes à emporter pour vos clients"
      },
      "reviews": {
        "title": "Statut des avis",
        "description": "Activer ou désactiver les avis clients"
      },
      "campaigns": {
        "title": "Statut des campagnes",
        "description": "Activer ou désactiver les campagnes marketing pour vos clients"
      },
      "loyalty": {
        "title": "Programme de fidélité",
        "description": "Activer ou désactiver le programme de fidélité pour vos clients"
      },
      "marketing": {
        "title": "Statut des campagnes marketing",
        "description": "Activer ou désactiver les campagnes marketing SMS et Email pour vos clients"
      },
      "digital-menu": {
        "title": "Statut du menu digital",
        "description": "Activer ou désactiver le menu digital pour vos clients"
      }
    },
    "printer": {
      "title": "Impression",
      "device-scope": "Ces réglages s’appliquent uniquement à cet appareil. Les paramètres Click & Collect et Livraison restent partagés par l’établissement.",
      "description": "Imprimez automatiquement les tickets quand une commande passe en préparation.",
      "auto-print": "Impression automatique",
      "auto-print-hint": "Dès qu'une commande passe en préparation",
      "receipt-copies": "Tickets de caisse",
      "kitchen-copies": "Tickets de cuisine",
      "decrease": "Diminuer",
      "increase": "Augmenter",
      "bluetooth": {
        "title": "Imprimantes de tickets",
        "hint": "Bluetooth ou Wi-Fi. Une imprimante Bluetooth ne se connecte qu'à un appareil à la fois.",
        "empty-list": "Aucune imprimante pour l'instant. Ajoutez-en une pour imprimer sans fenêtre d'impression.",
        "add": "Ajouter une imprimante",
        "sheet-description": "Allumez l'imprimante et gardez-la près du téléphone.",
        "searching": "Recherche des imprimantes Bluetooth et Wi-Fi…",
        "found": "{count, plural, =0 {Aucune imprimante trouvée} one {# imprimante trouvée} other {# imprimantes trouvées}}",
        "stop": "Arrêter",
        "search-again": "Relancer",
        "section-bluetooth": "Bluetooth",
        "section-network": "Réseau Wi-Fi",
        "empty-bluetooth": "Aucune imprimante Bluetooth trouvée. Allumez-la, rapprochez-vous, puis relancez.",
        "empty-network": "Aucune imprimante trouvée sur ce Wi‑Fi. Saisissez l'adresse IP imprimée sur son ticket d'autotest.",
        "local-network-hint": "Rien n'apparaît ? Autorisez « Réseau local » pour Suzzy Pro.",
        "show-all": "Votre imprimante n'apparaît pas ? Afficher tous les appareils Bluetooth",
        "address-label": "Adresse IP de l'imprimante",
        "address-hint": "Elle figure sur le ticket d'autotest de l'imprimante.",
        "address-add": "Ajouter",
        "address-invalid": "Saisissez une adresse comme 192.168.1.50.",
        "added-title": "{name} est ajoutée",
        "added-body": "Un ticket de test vient de sortir. Choisissez les tickets que cette imprimante imprime.",
        "roles-legend": "Tickets imprimés",
        "done": "Terminer",
        "retest": "Le ticket n'est pas sorti ? Réimprimer le test",
        "roles": {
          "receipt": "Tickets de caisse",
          "kitchen": "Tickets de cuisine"
        },
        "no-role": "Cette imprimante n'imprime rien. Cochez au moins un type de ticket.",
        "transport": {
          "bluetooth": "Bluetooth",
          "network": "Réseau Wi-Fi",
          "sunmi": "Imprimante intégrée",
          "bluetooth-classic": "Bluetooth appairé"
        },
        "test": "Imprimer un test",
        "forget": "Retirer",
        "test-title": "Test d'impression",
        "test-body": "{name} est prête.",
        "test-sent": "Ticket de test envoyé",
        "reconnect": "Vérifier",
        "reconnected": "{name} est connectée",
        "open-printer-settings": "Réglages",
        "no-printer": {
          "receipt": "Aucune imprimante pour les tickets de caisse",
          "kitchen": "Aucune imprimante pour les tickets de cuisine"
        },
        "status": {
          "unknown": "Non vérifiée",
          "connecting": "Connexion…",
          "connected": "Connectée",
          "disconnected": "Déconnectée",
          "error": "Injoignable",
          "last-attempt": "Dernière tentative à {time}"
        },
        "retry": "Réessayer",
        "removed": "{name} retirée",
        "undo": "Annuler",
        "errors": {
          "disabled": "Le Bluetooth est désactivé. Activez-le puis réessayez.",
          "permission": "Suzzy Pro n'a pas accès au Bluetooth. Autorisez-le dans les réglages du téléphone.",
          "paper": "Plus de papier ou capot ouvert. Rechargez le rouleau, fermez le capot, puis réessayez.",
          "not-found": "Imprimante introuvable. Vérifiez qu'elle est allumée et sur le même Wi-Fi, puis réessayez.",
          "out-of-range": "Imprimante injoignable. Vérifiez qu'elle est allumée et près du téléphone, puis réessayez.",
          "builtin-unavailable": "L'imprimante intégrée ne répond pas. Réessayez, puis redémarrez le terminal si le problème continue."
        },
        "guide": {
          "permission-title": "Autorisez le Bluetooth pour trouver vos imprimantes",
          "disabled-title": "Activez le Bluetooth pour trouver vos imprimantes",
          "ios-permission-1": "Touchez « Ouvrir les réglages ».",
          "ios-permission-2": "Activez « Bluetooth » et « Réseau local ».",
          "ios-permission-3": "Revenez dans Suzzy Pro : la recherche reprend toute seule.",
          "android-permission-1": "Touchez « Autoriser », puis acceptez la demande.",
          "android-permission-2": "Rien ne s'affiche ? Ouvrez les réglages, puis Autorisations > Appareils à proximité > Autoriser.",
          "ios-disabled-1": "Ouvrez le Centre de contrôle (balayez depuis le coin en haut à droite) et touchez l'icône Bluetooth.",
          "ios-disabled-2": "Touchez « Réessayer ».",
          "android-disabled-1": "Touchez « Activer le Bluetooth », puis acceptez.",
          "open-settings": "Ouvrir les réglages",
          "allow": "Autoriser",
          "enable": "Activer le Bluetooth",
          "retry": "Réessayer"
        },
        "group-searching": "Recherche…",
        "section-bluetooth-hint": "Imprimantes allumées à proximité du téléphone.",
        "section-network-hint": "Imprimantes branchées à la même box que ce téléphone.",
        "sunmi-name": "Imprimante intégrée Sunmi",
        "section-builtin": "Imprimante intégrée",
        "section-builtin-hint": "L'imprimante de ce terminal Sunmi.",
        "section-paired": "Bluetooth appairé",
        "section-paired-hint": "Imprimantes déjà appairées dans les réglages Bluetooth du téléphone, comme l'Epson TM-m30.",
        "empty-paired": "Aucune imprimante appairée. Appairez-la dans les réglages Bluetooth (code souvent 0000), puis revenez ici.",
        "pair": "Appairer une imprimante",
        "paper-width": "Papier",
        "paper-mm": "{width} mm"
      }
    },
    "shop-scope": "Ces réglages s’appliquent à tout l’établissement.",
    "illustrations": {
      "slot-interval": {
        "caption": "toutes les {duration}"
      },
      "room-capacity": {
        "caption": "{count, plural, one {# couvert} other {# couverts}}"
      },
      "per-slot-limit": {
        "caption": "{count, plural, one {# couvert} other {# couverts}} max. à chaque heure"
      },
      "per-service-quota": {
        "caption": "{count, plural, one {# couvert} other {# couverts}} pour tout le service",
        "free": "libre"
      },
      "tables-mode": {
        "caption": "une table libre pour le groupe"
      },
      "meal-duration": {
        "meal": "repas {duration}",
        "buffer": "+{duration} de battement",
        "next": "suivant"
      },
      "auto-complete-seated": {
        "booked": "heure prévue",
        "over": "fin prévue + {duration}",
        "completed": "puis « Terminée »"
      },
      "restaurant-approval": {
        "direct": "≤ {count} : direct",
        "approve": "{count}+ : vous validez"
      },
      "waitlist": {
        "full": "complet",
        "caption": "averti dès qu'une place se libère"
      },
      "deposit": {
        "caption": "débité seulement si absent"
      },
      "change-deadline": {
        "editable": "modifiable",
        "blocked": "bloqué {duration} avant"
      },
      "free-cancellation": {
        "free": "annulation gratuite",
        "paid": "payante",
        "day": "J"
      },
      "remaining-places": {
        "places": "{count, plural, one {# place} other {# places}}",
        "caption": "ce que voit le client"
      },
      "closed-day": {
        "caption": "fermé ce jour-là"
      },
      "special-hours": {
        "usual": "habituel {start} – {end}",
        "that-day": "ce jour-là {start} – {end}"
      },
      "reduced-capacity": {
        "usual": "{count, plural, one {# habituel} other {# habituels}}",
        "reduced": "{count} ce jour-là"
      },
      "schedule-horizon": {
        "caption": "{count, plural, =0 {commande le jour même} one {commande possible jusqu'à # jour} other {commande possible jusqu'à # jours}}"
      },
      "basket-range": {
        "caption": "panier accepté",
        "no-max": "sans maximum"
      }
    },
    "advanced-options": "Options avancées"
  },
  "units": {
    "currency": "€",
    "day": "jour",
    "days": "jours",
    "days-label": "Jours",
    "weeks": "semaines",
    "weeks-months-label": "Semaines / Mois",
    "month": "mois",
    "months": "mois",
    "year": "an",
    "people": "personnes",
    "stars": "étoiles",
    "minutes": "min"
  },
  "duration": {
    "full-session": "Session complète",
    "five-min": "5 min",
    "ten-min": "10 min",
    "fifteen-min": "15 min",
    "thirty-min": "30 min",
    "forty-five-min": "45 min",
    "one-hour": "1h",
    "one-hour-fifteen": "1h15",
    "one-hour-thirty": "1h30",
    "one-hour-forty-five": "1h45",
    "two-hours": "2h",
    "unit-label": "Unité de temps",
    "unit-minutes": "min",
    "unit-hours": "heures",
    "unit-days": "jours"
  },
  "pages": {
    "statistics": {
      "title": "Statistiques",
      "description": "Statistiques détaillées"
    },
    "dashboard": {
      "title": "Dashboard",
      "description": "Vue d'ensemble des métriques de votre boutique",
      "live-data": "Données en direct"
    },
    "reservations": {
      "title": "Réservations",
      "description": "Gérez vos réservations facilement"
    },
    "menu": {
      "title": "Menu",
      "description": "Gérez les produits et le stock de votre menu",
      "settings-title": "Paramètres du menu digital",
      "settings-description": "Configurez les paramètres du menu digital"
    },
    "translations": {
      "title": "Traductions du menu",
      "description": "Gérez les traductions de vos produits et catégories"
    },
    "campaigns": {
      "title": "Campagnes",
      "description": "Consultez et gérez vos campagnes marketing"
    },
    "winners": {
      "title": "Gagnants",
      "description": "Consultez les gagnants de vos campagnes"
    },
    "click-and-collect": {
      "title": "Click and Collect",
      "description": "Gestion des commandes à emporter"
    },
    "delivery": {
      "title": "Livraison",
      "description": "Gestion des commandes en livraison",
      "statistics-title": "Statistiques livraison"
    },
    "orders": {
      "title": "Commandes",
      "description": "Gestion des commandes"
    },
    "customer-reviews": {
      "title": "Avis clients",
      "description": "Consultez et gérez les avis de vos clients"
    },
    "settings": {
      "title": "Paramètres",
      "description": "Configurez les paramètres de votre boutique"
    },
    "features": {
      "title": "Gestion des fonctionnalités",
      "description": "Gérez les fonctionnalités de votre boutique"
    },
    "deposits": {
      "title": "Acomptes"
    },
    "sms-transactions": {
      "title": "Historique SMS",
      "description": "Consultez l'historique des transactions SMS"
    },
    "customers": {
      "title": "Clients",
      "description": "Gérez vos clients et leurs informations"
    },
    "marketing-campaigns": {
      "title": "Campagnes Marketing",
      "description": "Créez et gérez vos campagnes SMS et Email"
    },
    "open-hours": {
      "title": "Horaires d'ouverture",
      "description": "Configurez vos horaires d'ouverture"
    },
    "open-hours-and-closures": {
      "title": "Horaires et fermetures",
      "closures-title": "Fermetures",
      "closures-description": "Gérez les exceptions, créneaux indisponibles et fermetures de salle.",
      "add-closure": "Ajouter une fermeture",
      "inherited-title": "Horaires d'ouverture utilisés",
      "inherited-description": "Ce service reprend les horaires d'ouverture tant qu'aucun horaire dédié n'est défini.",
      "customize": "Personnaliser",
      "no-upcoming-closures": "Aucune fermeture à venir.",
      "weekly-title": "Semaine type",
      "weekly-description": "Réservations, Click & Collect et livraison suivent ces horaires, sauf si vous leur en donnez d'autres.",
      "special-days": {
        "title": "Jours spéciaux",
        "description": "Fermetures, horaires différents et jours à capacité réduite, au même endroit.",
        "add": "Ajouter un jour",
        "sheet-description": "Choisissez ce qui change ce jour-là.",
        "choice-label": "Ce jour-là",
        "empty": "Aucun jour spécial à venir. Ajoutez un jour pour fermer, changer les horaires ou réduire les places à une date.",
        "pause-today": "Suspendre les réservations en ligne aujourd'hui",
        "pause-today-description": "Vos clients ne peuvent plus réserver en ligne pour aujourd'hui. Reprise automatique demain.",
        "kind-closed": "Fermé",
        "kind-different-hours": "Horaires différents",
        "kind-reduced-capacity": "Moins de places : {count} {unit}",
        "kind-online-paused": "Réservations en ligne suspendues",
        "kind-room-closed": "Salle fermée",
        "choice-closed-description": "Plus de réservations ni de commandes ce jour-là.",
        "choice-hours-description": "Ouvrir plus tard ou fermer plus tôt, par exemple le 24 décembre.",
        "choice-capacity-title": "Moins de places",
        "choice-capacity-description": "Réduire la capacité des réservations pour une date.",
        "date": "Date",
        "services": "Services fermés",
        "whole-shop": "Tout l'établissement",
        "whole-shop-hint": "Réservations, commandes et horaires affichés.",
        "follows-opening": "Suit l'établissement : fermez tout l'établissement ou donnez-lui ses propres horaires.",
        "close-day-submit": "Fermer ce jour",
        "service": "Service concerné",
        "hours-hint": "Vous choisirez ensuite les dates et les horaires. Les services sans horaires propres suivent l'établissement.",
        "capacity": "Capacité ce jour-là",
        "capacity-submit": "Enregistrer la capacité",
        "replaces-capacity": "Remplace la capacité déjà prévue ce jour-là : {count} {unit}.",
        "unit-per-slot": "pers. par heure",
        "unit-per-session": "pers. par service",
        "variable-hours": "Horaires variables",
        "close-day-conflict": "{services} : des horaires différents sont déjà prévus ce jour-là. Modifiez-les ou retirez ce service.",
        "close-day-failed": "{services} : fermeture impossible ({message})."
      }
    },
    "shop-settings": {
      "title": "Paramètres de la boutique",
      "description": "Gérez les informations de votre boutique",
      "select-shop": "Veuillez sélectionner un magasin pour gérer ses paramètres."
    },
    "admin": {
      "shops": {
        "title": "Liste des commerces",
        "description": "Gérez et consultez tous les commerces enregistrés"
      }
    },
    "shops-overview": {
      "title": "Vue d'ensemble des commerces",
      "description": "Gérez tous les commerces enregistrés"
    },
    "loyalty": {
      "title": "Fidélité",
      "description": "Gérez votre programme de fidélité",
      "members": "Membres",
      "program": "Programme",
      "rewards": "Récompenses"
    },
    "prospection": {
      "title": "Prospection Porte-à-Porte",
      "description": "Rechercher, scorer et assigner des commerces en batch"
    },
    "billing": {
      "title": "Facturation",
      "description": "Gérez votre abonnement et vos crédits SMS"
    },
    "event-menus": {
      "title": "Menus événementiels"
    },
    "widgets": {
      "title": "Widgets"
    },
    "scan": {
      "title": "Poste d'accueil"
    },
    "automations": {
      "title": "Automati­sations",
      "history": "Historique des exécutions"
    },
    "google-posts": {
      "title": "Google Posts",
      "description": "Publiez des actualités sur votre fiche Google"
    },
    "rewards": {
      "title": "Récompenses",
      "description": "Toutes les récompenses gagnées ou offertes à vos clients"
    }
  },
  "statistics": {
    "error": "Impossible de charger les statistiques.",
    "no-data": "Aucune donnée disponible pour cette période.",
    "kpi": {
      "total-revenue": "Chiffre d'affaires",
      "total-orders": "Total commandes",
      "total-reservations": "Total réservations",
      "total-covers": "Couverts totaux",
      "avg-party-size": "Taille moyenne du groupe",
      "unique-customers": "Clients uniques",
      "no-show-rate": "Taux de no-show",
      "avg-order-value": "Panier moyen",
      "avg-rating": "Note moyenne",
      "total-reviews": "Total avis",
      "positive-rate": "Taux d'avis positifs",
      "five-stars": "5 étoiles",
      "new-customers": "Nouveaux clients",
      "active-shops": "Shops actifs",
      "total-customers": "Total clients",
      "active-customers": "Clients actifs",
      "messages-sent": "Messages envoyés",
      "credits-consumed": "Crédits consommés",
      "delivery-rate": "Taux de livraison",
      "current-balance": "Solde actuel",
      "campaigns-active": "Campagnes actives",
      "delivered": "Délivrés",
      "total-plays": "Total de participations",
      "claim-rate": "Taux de réclamation",
      "active-campaigns": "Campagnes actives",
      "claimed-count": "Lots réclamés",
      "transactions": "Transactions",
      "points-earned": "Points gagnés",
      "points-redeemed": "Points utilisés",
      "active-cards": "Cartes actives",
      "redemption-rate": "Taux d'utilisation",
      "points-issued": "Points émis",
      "transactions-in-period": "Transactions sur la période",
      "total-people-reserved": "Couverts réservés",
      "average-party-size": "Taille moy. groupe",
      "returning-customers": "Clients fidèles",
      "peak-reservation-hour": "Heure de pointe",
      "average-reservations-per-day": "Réservations / jour",
      "completion-rate": "Taux de complétion",
      "cancel-rate": "Taux d'annulation",
      "absent-rate": "Taux d'absence",
      "average-orders-per-day": "Commandes / jour",
      "total-items-sold": "Articles vendus",
      "average-items-per-order": "Articles / commande",
      "peak-order-hour": "Heure de pointe",
      "average-reviews-per-day": "Avis / jour",
      "peak-review-day": "Jour de pointe",
      "current-average-rating": "Note actuelle",
      "positive-review-rate": "Taux d'avis positifs",
      "avg-orders": "Commandes moy.",
      "avg-reservations": "Réservations moy.",
      "avg-no-show-rate": "Taux d'absence moy.",
      "credits-recharged": "Crédits rechargés",
      "total-sent": "Total envoyés",
      "delivered-count": "Total délivrés",
      "trialing-shops": "Shops en essai",
      "cancelled-in-period": "Annulés (période)",
      "expired-count": "Expirés"
    },
    "chart": {
      "revenue": "Chiffre d'affaires",
      "order-count": "Commandes",
      "reservation-count": "Réservations",
      "total-people": "Couverts",
      "review-count": "Avis",
      "average-rating": "Note moy.",
      "new-customers": "Nouveaux clients",
      "points-earned": "Pts gagnés",
      "points-redeemed": "Pts échangés",
      "messages-sent": "Envoyés",
      "credits-consumed": "Crédits",
      "total-sent": "Envoyés",
      "total-delivered": "Délivrés",
      "status-distribution": "Répartition par statut",
      "star-distribution": "Distribution des notes",
      "top-items": "Top produits",
      "top-items-empty": "Aucun produit vendu",
      "top-spenders": "Top clients",
      "tier-distribution": "Répartition par palier",
      "variant-distribution": "Par type de jeu",
      "delivery-status": "Statut de livraison",
      "campaign-status": "Statut des campagnes",
      "total": "Total",
      "no-tier": "Sans palier",
      "anonymous-customer": "Anonyme"
    }
  },
  "admin-stats": {
    "title": "Statistiques",
    "export": "Exporter CSV",
    "views": {
      "ranking": "Classement",
      "watch": "À surveiller"
    },
    "filters": {
      "subscribers": "Abonnés + essais",
      "all": "Tous",
      "search": "Rechercher un restaurant"
    },
    "errors": {
      "load": "Impossible de charger les statistiques."
    },
    "period": {
      "previous": "Période précédente",
      "next": "Période suivante",
      "custom": "Personnalisée",
      "presets": {
        "this-week": "Cette semaine",
        "last-week": "Semaine dernière",
        "this-month": "Ce mois-ci",
        "last-month": "Mois dernier",
        "last-30-days": "30 derniers jours",
        "this-year": "Cette année",
        "all-time": "Depuis le début"
      },
      "labels": {
        "week": "Semaine du {date}",
        "date": "{date}"
      }
    },
    "groups": {
      "reservations": "Réservations",
      "post-visit-reviews": "Avis après la visite",
      "google-reviews": "Avis Google et IA",
      "orders": "Commandes et CA",
      "customers": "Clients",
      "health": "Santé du compte"
    },
    "columns": {
      "restaurant": "Restaurant",
      "progression": "Progression",
      "reservations": "Réservations",
      "covers": "Couverts",
      "no-show-rate": "No-show",
      "check-in-rate": "Pointage",
      "cancel-rate": "Annulation",
      "google-reserve-share": "Part Google Reserve",
      "no-show-charged": "No-shows facturés",
      "review-requests-sent": "Demandes d’avis",
      "review-open-rate": "Taux d’ouverture",
      "review-response-rate": "Taux de réponse",
      "review-average-rating": "Note moyenne",
      "reviews-sent-to-google": "Envoyés vers Google",
      "google-reviews": "Nouveaux avis Google",
      "google-period-rating": "Note de la période",
      "google-rating-evolution": "Note arrivée → aujourd’hui",
      "google-monthly-evolution": "Avis/mois avant → après",
      "google-reply-rate": "Réponse Google",
      "google-reply-median": "Délai médian",
      "google-ai-share": "Part IA",
      "google-external-replies": "Écrites sur Google",
      "orders": "Commandes",
      "revenue": "CA",
      "average-basket": "Panier moyen",
      "new-customers": "Nouveaux contacts",
      "returning-customers": "Clients revenus",
      "sms-opt-ins": "Opt-in SMS",
      "subscription": "Abonnement",
      "last-team-seen": "Dernière connexion équipe",
      "last-customer-activity": "Dernière activité client",
      "pending-google-replies": "Avis Google sans réponse",
      "signals": "Signaux",
      "usage-score": "Score d'usage"
    },
    "table": {
      "empty": "Aucun restaurant pour ces filtres.",
      "never": "Jamais",
      "trial-end": "Fin d’essai {date}",
      "delay-hours": "{value} h",
      "delay-days": "{value} j"
    },
    "csv": {
      "rating-at-arrival": "Note Google à l’arrivée",
      "rating-now": "Note Google aujourd’hui",
      "monthly-before-arrival": "Avis/mois avant l’arrivée",
      "monthly-since-arrival": "Avis/mois depuis l’arrivée"
    },
    "kpi": {
      "points": "{value} pt"
    },
    "signals": {
      "team-inactive": "Aucune connexion depuis {value} j",
      "team-never-seen": "Jamais connecté",
      "activity-drop": "Activité {value} % sur 4 semaines",
      "no-customers": "{value} j sans client",
      "no-customers-ever": "Aucun client",
      "google-reviews-pending": "{value} avis Google sans réponse",
      "google-disconnected": "Google déconnecté",
      "subscription-at-risk": "Abonnement fragile",
      "subscription-past-due": "Paiement en échec",
      "subscription-cancel-scheduled": "Résiliation dans {value} j",
      "subscription-trial-ending": "Essai terminé dans {value} j",
      "sms-credits-exhausted": "SMS bloqués (plafond ou abonnement)",
      "unused-feature": "Fonction activée, inutilisée",
      "unused-reservations": "Réservations activées, 0 en {value} j",
      "unused-orders": "Commandes activées, 0 en {value} j",
      "churn-intent": "Intention de résiliation",
      "churn-cancellation-requested": "Résiliation demandée {value, plural, =0 {aujourd’hui} other {il y a # j}}",
      "churn-cancellation-dialog": "Fenêtre de résiliation ouverte {value, plural, =0 {aujourd’hui} other {il y a # j}}",
      "churn-billing-portal": "Portail de facturation ouvert {value, plural, =0 {aujourd’hui} other {il y a # j}}",
      "churn-billing-visits": "{value} visites de la page abonnement en 14 j"
    },
    "watch": {
      "usage-score": "Usage {score}/100",
      "empty": "Aucun restaurant à surveiller.",
      "signal-count": "{count, plural, one {# signal} other {# signaux}}",
      "snoozed": "Contacté le {date} · « {note} » · masqué jusqu’au {until}"
    },
    "follow-up": {
      "mark-contacted": "Marquer contacté",
      "add": "Ajouter un suivi",
      "title-contacted": "Marquer comme contacté",
      "title-add": "Ajouter un suivi",
      "description-contacted": "La note reste visible dans la fiche du restaurant. Il sort de la liste « À surveiller » pendant 14 jours, sauf si un nouveau signal apparaît.",
      "description-add": "La note reste visible dans la fiche du restaurant.",
      "note-label": "Note",
      "note-placeholder": "Ex. : rush de rentrée, rappeler le 24",
      "note-required": "Ajoutez une note.",
      "cancel": "Annuler",
      "submit": "Enregistrer",
      "history-title": "Suivi SAV",
      "history-empty": "Aucun suivi pour ce restaurant.",
      "history-error": "Impossible de charger le suivi.",
      "unknown-author": "Auteur inconnu",
      "snoozed-until": "Masqué jusqu’au {date}",
      "toasts": {
        "loading": "Enregistrement du suivi…",
        "success": "Suivi enregistré",
        "error": "Impossible d’enregistrer le suivi"
      }
    },
    "trend": {
      "granularity": {
        "week": "Semaine",
        "month": "Mois"
      },
      "charts": {
        "reservations": "Réservations et couverts",
        "google-reviews": "Avis Google",
        "orders": "Commandes et CA"
      },
      "empty": "Aucune donnée sur cette période."
    },
    "metrics": {
      "reservations": "Réservations",
      "covers": "Couverts",
      "no-show": "No-show",
      "google-reviews": "Nouveaux avis Google",
      "google-rating": "Note des nouveaux avis",
      "orders": "Commandes",
      "revenue": "CA commandes",
      "new-customers": "Nouveaux contacts",
      "rating-since-arrival": "Note Google arrivée → aujourd’hui : {value}"
    },
    "chart": {
      "by-day": "Par jour",
      "by-week": "Par semaine",
      "by-month": "Par mois"
    },
    "ranking": {
      "columns": {
        "reservations": "Réservations",
        "google": "Avis Google",
        "orders": "Commandes",
        "customers": "Clients",
        "health": "Santé",
        "details": "Détail"
      },
      "covers": "{count, plural, one {# couvert} other {# couverts}}",
      "reservations": "{count, plural, one {# résa} other {# résas}} · no-show {noShow}",
      "google-reviews": "{count, plural, one {# nouvel avis} other {# nouveaux avis}}",
      "google-detail": "Note {rating} · réponse {replyRate}",
      "orders": "{count, plural, one {# commande} other {# commandes}} · panier {basket}",
      "new-customers": "{count, plural, one {# nouveau} other {# nouveaux}}",
      "returning-customers": "{count, plural, one {# client revenu} other {# clients revenus}}",
      "no-signal": "Aucun signal",
      "team-seen": "Équipe vue {distance}",
      "expand": "Voir le détail",
      "collapse": "Masquer le détail"
    },
    "detail": {
      "open": "Fiche restaurant"
    },
    "usage": {
      "title": "Usage du back-office (28 j)",
      "score": "Score d'usage",
      "score-value": "{score}/100",
      "active-days": "Jours actifs",
      "apps": "Apps utilisées",
      "apps-value": "{used}/{enabled}",
      "views": "Pages vues",
      "area-value": "{views, plural, one {# vue} other {# vues}} · {duration}",
      "no-data": "Aucune visite suivie pour l’instant.",
      "duration-less-than-minute": "< 1 min",
      "duration-minutes": "{minutes} min",
      "duration-hours": "{hours} h {minutes} min",
      "areas": {
        "dashboard": "Accueil",
        "reservations": "Réservations",
        "orders": "Commandes",
        "table-service": "Service à table",
        "click-and-collect": "Click & collect",
        "delivery": "Livraison",
        "loyalty": "Fidélité",
        "rewards": "Récompenses",
        "game-campaigns": "Jeux",
        "customers": "Clients",
        "customer-reviews": "Avis clients",
        "marketing-campaigns": "Campagnes marketing",
        "google-posts": "Posts Google",
        "automations": "Automatisations",
        "menu-stocks": "Menu",
        "performance": "Performance",
        "flyers": "Flyers",
        "widgets": "Widgets",
        "sms-transactions": "SMS",
        "billing": "Abonnement",
        "settings": "Paramètres",
        "other": "Autres pages"
      }
    }
  },
  "distribution": {
    "search": {
      "title": "Recherche",
      "placeholder": "Rechercher un commerce sur Google Places...",
      "no-results": "Aucun résultat trouvé",
      "error": "La recherche a échoué. Veuillez réessayer."
    },
    "templates": {
      "title": "Commerces Template",
      "select-shop": "Sélectionnez un template pour assigner à {placeName}"
    },
    "stats": {
      "available": "Disponible",
      "assigned": "Assigné",
      "total": "Total"
    },
    "table": {
      "email": "Email",
      "status": "Statut",
      "shop-name": "Nom du commerce",
      "available": "Disponible",
      "assigned": "Assigné",
      "select": "Sélectionner",
      "no-templates": "Aucun commerce template disponible"
    },
    "assign": {
      "title": "Assigner le commerce",
      "description": "Vérifiez les détails et confirmez l'assignation",
      "cancel": "Annuler",
      "confirm": "Assigner",
      "assigning": "Assignation..."
    },
    "success": {
      "title": "Commerce assigné avec succès !",
      "credentials": "Identifiants de connexion",
      "email": "Email",
      "password": "Mot de passe",
      "new-shop": "Assigner un autre commerce"
    },
    "opening-hours": "Horaires d'ouverture",
    "reviews": "avis"
  },
  "admin-activity": {
    "title": "Activité",
    "error": "Impossible de charger l'activité",
    "empty": "Aucune activité pour ces filtres",
    "load-more-error": "Impossible de charger la suite de l'activité",
    "alert": "Alerte",
    "filters": {
      "shop": "Restaurant",
      "all-shops": "Tous les restaurants",
      "categories": "Catégories"
    },
    "categories": {
      "team": "Équipe",
      "alert": "Alertes",
      "review": "Avis",
      "account": "Compte",
      "reservation-order": "Réservations et commandes",
      "customer": "Clients"
    },
    "kinds": {
      "google-review-received": {
        "title": "Avis Google {rating}★",
        "message": "{author} · {hasComment, select, true {« {comment} »} other {sans commentaire}}"
      },
      "google-review-replied": {
        "title": "Réponse Google publiée",
        "message": "Avis de {author}"
      },
      "shop-created": {
        "title": "Restaurant créé",
        "message": "Nouveau restaurant sur Suzzy"
      },
      "sms-credits-purchased": {
        "title": "Crédits SMS achetés",
        "message": "{credits, plural, one {# crédit} other {# crédits}}"
      },
      "subscription-cancelled": {
        "title": "Abonnement résilié",
        "message": "L'abonnement a été résilié"
      },
      "cancellation-requested": {
        "title": "Demande de résiliation",
        "message": "{hasReason, select, true {« {reason} »} other {Sans motif}}"
      },
      "cancellation-dialog-opened": {
        "title": "Fenêtre de résiliation ouverte",
        "message": "Le restaurant a ouvert la demande de résiliation"
      },
      "billing-portal-opened": {
        "title": "Portail de facturation ouvert",
        "message": "Gestion de l’abonnement sur Stripe"
      },
      "automation-sms-credits-exhausted": {
        "title": "SMS bloqués (plafond ou abonnement)",
        "message": "Une automatisation n'a pas pu envoyer ses SMS"
      },
      "automation-team-message": {
        "title": "Message d'automatisation",
        "message": "{message}"
      },
      "order-out-for-delivery": {
        "title": "Commande en livraison",
        "message": "#{displayId} · {customerName}"
      },
      "order-delivered": {
        "title": "Commande livrée",
        "message": "#{displayId} · {customerName}"
      },
      "unknown": {
        "title": "Événement",
        "message": "{kind}"
      }
    }
  },
  "admin": {
    "title": "Panel Admin",
    "subtitle": "Administration",
    "nav": {
      "title": "Navigation",
      "shops-overview": "Vue d'ensemble",
      "prospection": "Prospection",
      "subscriptions": "Abonnements",
      "go-to-dashboard": "Aller au Dashboard",
      "metrics": "Métriques",
      "activity": "Activité",
      "users": "Utilisateurs",
      "google-reserve": "Google Reserve",
      "discovery": "Découverte",
      "features": "Fonctionnalités",
      "consumer-accounts": "Comptes clients",
      "billing-products": "Catalogue produits",
      "ai-connections": "Connexions IA"
    },
    "discovery": {
      "title": "Découverte",
      "search-placeholder": "Rechercher un restaurant...",
      "table": {
        "name": "Nom",
        "address": "Adresse",
        "coordinates": "Coordonnées",
        "actions": "Actions",
        "publication": "Publication",
        "pending": "Propositions en attente",
        "valid": "Valides",
        "missing": "Manquantes",
        "publish": "Publier",
        "unpublish": "Masquer",
        "all-publications": "Toutes les publications",
        "all-categories": "Toutes les catégories",
        "all-coordinates": "Toutes les coordonnées",
        "all-proposals": "Toutes les propositions",
        "no-pending": "Aucune proposition",
        "reset": "Réinitialiser",
        "publish-count": "Publier ({count})",
        "unpublish-count": "Masquer ({count})",
        "confirm": "Confirmer la modification de visibilité pour {count} restaurant(s) ? Les catégories proposées restent inchangées.",
        "updated": "{count} restaurant(s) mis à jour",
        "failed": "{count} échec(s)",
        "failures-description": "Ces restaurants n’ont pas été modifiés. Rechargez leurs paramètres avant de réessayer."
      },
      "coordinates": {
        "present": "Localisé",
        "missing": "Sans coordonnées",
        "title": "Coordonnées du commerce",
        "description": "Ces coordonnées sont enregistrées sur la fiche du commerce et utilisées par Discovery. Recherchez une adresse puis choisissez un résultat, ou saisissez les coordonnées. Seules la latitude et la longitude seront modifiées.",
        "search-label": "Rechercher une adresse en France",
        "searching": "Recherche en cours…",
        "search-error": "La recherche est indisponible. Réessayez ou saisissez les coordonnées manuellement.",
        "no-results": "Aucune adresse trouvée. Précisez la recherche ou saisissez les coordonnées manuellement.",
        "latitude": "Latitude",
        "longitude": "Longitude",
        "validation": "Renseignez les deux valeurs : latitude de −90 à 90, longitude de −180 à 180.",
        "save-error": "Impossible d’enregistrer les coordonnées. Vos valeurs sont conservées : réessayez.",
        "saved": "Coordonnées enregistrées sur la fiche du commerce.",
        "saving": "Enregistrement…",
        "save": "Enregistrer les coordonnées"
      },
      "manage": "Gérer",
      "empty": "Aucun restaurant trouvé.",
      "error": "Impossible de charger les restaurants.",
      "panel-title": "Découverte",
      "panel-description": "Publiez ce restaurant et choisissez ses catégories.",
      "panel-error": "Impossible de charger les paramètres de découverte",
      "publish-label": "Publier dans la découverte",
      "publish-description": "Rendez ce restaurant visible dans le fil Découverte de l'application.",
      "published-badge": "Publié",
      "unpublished-badge": "Non publié",
      "coordinates-required-title": "Coordonnées requises",
      "coordinates-required": "Ce restaurant doit avoir des coordonnées valides avant d'être publié.",
      "conflict-title": "Paramètres modifiés",
      "conflict": "Les paramètres de découverte ont changé. Rechargez avant d'enregistrer.",
      "reload": "Recharger",
      "pending-title": "Catégories proposées par le commerçant",
      "pending-description": "Le commerçant a suggéré des catégories en attente de votre validation.",
      "pending-apply": "Utiliser les catégories proposées",
      "pending-badge": "Proposée",
      "categories-label": "Catégories",
      "no-categories": "Aucune catégorie disponible.",
      "save": "Enregistrer"
    },
    "navigation": {
      "title": "Admin",
      "section": "Administration",
      "all-shops": "Tous les commerces"
    },
    "feature-control": {
      "title": "Administration globale des fonctionnalités",
      "card-title": "Fonctionnalités",
      "card-description": "La disponibilité s'applique immédiatement à tous les commerces.",
      "error": "Impossible de charger les fonctionnalités.",
      "empty": "Aucune fonctionnalité trouvée.",
      "disable": "Désactiver",
      "enable": "Activer",
      "table": {
        "feature": "Fonctionnalité",
        "access": "Accès",
        "status": "Statut",
        "reason": "Motif interne",
        "actions": "Actions"
      },
      "access": {
        "shop": "Par commerce",
        "global": "Global"
      },
      "status": {
        "active": "Active",
        "disabled": "Désactivée globalement"
      },
      "features": {
        "digital-menu": {
          "name": "Menu numérique",
          "description": "Affiche la carte grâce à des QR codes"
        },
        "online-ordering": {
          "name": "Commande en ligne",
          "description": "Accepte les commandes à emporter et en livraison"
        },
        "reservations": {
          "name": "Réservations",
          "description": "Accepte et gère les réservations de tables"
        },
        "reviews": {
          "name": "Avis clients",
          "description": "Collecte et gère les avis et les notes des clients"
        },
        "game-campaigns": {
          "name": "Jeux",
          "description": "Crée des campagnes de jeu interactives avec des récompenses"
        },
        "theme": {
          "name": "Apparence personnalisée",
          "description": "Personnalise l'apparence et l'identité du commerce"
        },
        "loyalty": {
          "name": "Programme de fidélité",
          "description": "Crée et gère des programmes de fidélité avec des cartes numériques"
        },
        "delivery": {
          "name": "Livraison",
          "description": "Accepte les commandes en livraison avec frais et estimation de délai"
        },
        "table-service": {
          "name": "Service à table",
          "description": "Accepte les commandes partagées sur place depuis les QR codes des tables"
        },
        "marketing-campaigns": {
          "name": "Campagnes marketing",
          "description": "Crée et gère les campagnes marketing"
        },
        "automations": {
          "name": "Automatisations",
          "description": "Automatise les parcours de communication client"
        },
        "google-posts": {
          "name": "Publications Google",
          "description": "Crée et publie des actualités sur Google"
        },
        "deposits": {
          "name": "Acomptes",
          "description": "Demande un acompte par lien de paiement, seul ou pour une réservation"
        }
      },
      "disable-dialog": {
        "title": "Désactiver {name} ?",
        "description": "Ce contrôle agit sur la disponibilité globale.",
        "impact": "Tous les commerces perdront immédiatement l'accès. Les données existantes restent conservées et redeviennent accessibles après réactivation.",
        "reason-label": "Motif interne",
        "reason-placeholder": "Expliquez pourquoi cette fonctionnalité est désactivée",
        "reason-help": "{count}/500 caractères (minimum 3)",
        "reason-error": "Saisissez entre 3 et 500 caractères ({count}/500).",
        "cancel": "Annuler",
        "confirm": "Désactiver globalement",
        "pending": "Désactivation…"
      },
      "enable-dialog": {
        "title": "Activer {name} ?",
        "description": "Confirmez la disponibilité globale.",
        "impact": "Tous les commerces retrouveront l'accès et leur état existant reprendra.",
        "cancel": "Annuler",
        "confirm": "Activer globalement",
        "pending": "Activation…"
      },
      "toasts": {
        "disable-loading": "Désactivation globale en cours…",
        "disable-success": "Fonctionnalité désactivée globalement.",
        "disable-error": "Impossible de désactiver la fonctionnalité.",
        "enable-loading": "Activation globale en cours…",
        "enable-success": "Fonctionnalité activée globalement.",
        "enable-error": "Impossible d'activer la fonctionnalité."
      }
    },
    "shops": {
      "table": {
        "index": "#",
        "name": "Commerce",
        "email": "Email",
        "subscription": "Abonnement",
        "google-reserve": "Google Reserve",
        "address": "Adresse",
        "contact": "Contact",
        "sms-credits": "Crédits SMS",
        "created-at": "Date création",
        "no-results": "Aucun commerce trouvé",
        "load-more": "Charger plus",
        "error": "Erreur"
      },
      "filters": {
        "search-by-name": "Rechercher par nom...",
        "search-by-email": "Rechercher par email...",
        "search-by-member": "Rechercher par membre (nom, email)...",
        "status": "Statut",
        "all": "Tous",
        "advanced-filters": "Filtres avancés",
        "reset": "Réinitialiser",
        "package": "Package",
        "all-packages": "Tous les packages",
        "feature": "Fonctionnalité",
        "all-features": "Toutes les fonctionnalités",
        "items-per-page": "Éléments par page",
        "name-label": "Nom",
        "email-label": "Email",
        "member-label": "Membre",
        "status-label": "Statut",
        "package-label": "Package",
        "feature-label": "Fonctionnalité",
        "count": "{count, plural, =0 {Aucun commerce} one {# commerce} other {# commerces}}"
      },
      "detail": {
        "general-info": "Informations générales",
        "location": "Localisation",
        "not-found": "Commerce introuvable",
        "go-to-dashboard": "Aller au dashboard",
        "account-owner": "Propriétaire du compte",
        "tabs": {
          "general": "Général",
          "stats": "Statistiques",
          "follow-ups": "Suivi SAV",
          "activity": "Activité"
        }
      },
      "bulk-delete": {
        "action": "Supprimer ({count})",
        "title": "Supprimer les établissements sélectionnés ?",
        "description": "Ces établissements et leurs données associées seront définitivement supprimés, et leurs abonnements Stripe annulés : {names}. Cette action est irréversible."
      },
      "bulk-feature": {
        "action": "Activer une fonctionnalité",
        "choose": "Choisir une fonctionnalité",
        "description": "Accorder un essai de cette fonctionnalité aux établissements suivants : {names}. La même date d’expiration sera appliquée à tous."
      }
    },
    "subscription": {
      "title": "Abonnement",
      "current-subscription": "Abonnement actuel",
      "no-subscription": "Aucun abonnement actif",
      "no-subscription-description": "Ce commerce n'a pas d'abonnement",
      "package": "Package",
      "cycle": "Cycle",
      "period": "Période",
      "canceled-on": "Annulé le",
      "cancel-subscription": "Annuler l'abonnement",
      "confirm-cancel-title": "Annuler l'abonnement",
      "confirm-cancel-description": "Êtes-vous sûr de vouloir annuler cet abonnement ? Le commerce perdra l'accès aux fonctionnalités premium.",
      "cancel": "Annuler",
      "confirm": "Confirmer",
      "canceling": "Annulation...",
      "manage-title": "Gérer l'abonnement",
      "manage-subtitle": "Actuel : {packageCode} - {billingCycle}",
      "manage-subscription": "Gérer l'abonnement",
      "create-subscription": "Créer un abonnement",
      "update": "Mettre à jour",
      "create": "Créer",
      "updating": "Mise à jour...",
      "creating": "Création...",
      "select-new-package": "Sélectionnez un nouveau forfait",
      "current-tag": "Actuel",
      "per-month": "/ mois",
      "tabs": {
        "package": "Forfait",
        "period": "Période",
        "billing": "Facturation"
      },
      "period-mode": {
        "months": "Prolonger de mois",
        "date": "Définir une date de fin"
      },
      "months-label": "Nombre de mois",
      "end-date-label": "Date de fin",
      "select-billing-cycle": "Sélectionnez un cycle de facturation",
      "active-features-title": "Fonctionnalités actives",
      "no-active-features": "Aucune fonctionnalité active",
      "billing-cycle-label": {
        "MONTHLY": "Mensuel"
      },
      "validation": {
        "months-min": "Le nombre de mois doit être au minimum {min}",
        "months-max": "Le nombre de mois ne peut pas dépasser {max}",
        "date-must-be-after-current": "La date doit être postérieure à la date de fin actuelle"
      },
      "manage": "Gérer tous les abonnements",
      "table": {
        "shop": "Commerce",
        "plan": "Forfait",
        "status": "Statut",
        "billing-cycle": "Cycle de facturation",
        "period": "Période",
        "trial-end": "Fin d'essai",
        "edit-trial": "Modifier l'essai",
        "empty": "Aucun abonnement trouvé",
        "error": "Impossible de charger les abonnements",
        "all-statuses": "Tous les statuts",
        "previous": "Précédent",
        "next": "Suivant",
        "search": "Rechercher un établissement…",
        "unknown-shop": "Établissement inconnu",
        "all-plans": "Tous les plans",
        "all-cycles": "Tous les cycles",
        "period-end": "Échéance",
        "cancellation": "Résiliation",
        "scheduled": "À l’échéance",
        "manage": "Gérer",
        "cancel-selected": "Résilier à l’échéance…",
        "cancel-description": "Les établissements ci-dessous conserveront leur accès jusqu’à leur échéance. Aucun remboursement ni effacement d’historique.",
        "cancel-confirm": "Confirmer la résiliation",
        "ineligible": "Sélectionnez uniquement des abonnements éligibles sans résiliation programmée.",
        "cancel-error": "Impossible de programmer la résiliation",
        "cancel-success": "{count} résiliation(s) programmée(s)"
      },
      "detail": {
        "title": "Détails de l'abonnement",
        "status": "Statut",
        "plan": "Forfait",
        "billing-cycle": "Cycle de facturation",
        "dates": "Dates",
        "current-period": "Période actuelle",
        "trial-period": "Période d'essai",
        "cancelled-at": "Annulé le",
        "cancels-at-period-end": "Annulation en fin de période",
        "stripe-info": "Informations Stripe",
        "stripe-customer": "ID client",
        "stripe-subscription": "ID abonnement",
        "latest-invoice": "Dernière facture",
        "close": "Fermer",
        "edit-trial": "Modifier l'essai"
      },
      "trial-dialog": {
        "title": "Gérer l'essai",
        "description": "Modifier la date de fin d'essai pour cet abonnement",
        "current-trial-end": "Fin d'essai actuelle",
        "new-trial-end": "Nouvelle date de fin d'essai",
        "cancel": "Annuler",
        "confirm": "Confirmer",
        "saving": "Enregistrement..."
      },
      "payment-link": {
        "title": "Lien de paiement",
        "email-label": "Email de la facture",
        "email-custom-option": "Autre email…",
        "email-custom-placeholder": "facturation@exemple.com",
        "email-invalid": "Adresse email invalide",
        "trial-days-label": "Jours d'essai (optionnel)",
        "trial-days-placeholder": "ex. 14",
        "promo-code-label": "Code promo (optionnel)",
        "promo-code-placeholder": "ex. SUZZY20",
        "promo-code-hint": "Si renseigné, la réduction est pré-appliquée. Si laissé vide, le client peut saisir le sien.",
        "generate": "Générer le lien",
        "generating": "Génération...",
        "copy": "Copier",
        "copied": "Copié",
        "expires-at": "Expire le",
        "error": "Échec de la génération du lien de paiement",
        "manage-products": "Gérer le catalogue",
        "price-invalid": "Chaque prix doit être supérieur à 0",
        "target-label": "Objet du lien",
        "target-plan": "Abonnement Suzzy",
        "period-label": "Période",
        "period-one-time": "Paiement unique",
        "discount-label": "Remise",
        "discount-none": "Aucune",
        "discount-percent": "Pourcentage",
        "discount-amount": "Montant",
        "discount-percent-value": "Remise (%)",
        "discount-amount-value": "Remise HT (€)",
        "discount-duration-label": "Appliquée sur",
        "duration-once": "Première échéance",
        "duration-forever": "Toutes les échéances",
        "discount-invalid": "Remise invalide : entre 1 et 100 %, ou un montant positif",
        "price-per-month": "Soit {amount} HT / mois",
        "cancel-subscription": "Annuler l'abonnement existant",
        "cancel-confirm": "Cela annulera immédiatement l'abonnement en cours. Continuer ?",
        "cancelling": "Annulation...",
        "cancel-success": "Abonnement annulé",
        "cancel-error": "Échec de l'annulation",
        "commitment-months-label": "Engagement (mois)",
        "commitment-months-placeholder": "ex. 12",
        "commitment-months-hint": "Exceptionnel, sur demande. L'engagement démarre à la fin de l'essai. Laisser vide pour l'offre standard sans engagement.",
        "lines-label": "Lignes facturées",
        "add-line": "Ajouter une ligne",
        "remove-line": "Retirer la ligne",
        "price-short-label": "Prix HT (€)",
        "links-preview": "{count, plural, one {# lien à envoyer} other {# liens à envoyer}}"
      }
    },
    "sms-credit": {
      "title": "Crédits SMS",
      "available-credits": "crédits disponibles",
      "critical-warning": "Crédits critiques ! Rechargez rapidement.",
      "low-warning": "Stock de crédits faible."
    },
    "features": {
      "title": "Fonctionnalités",
      "not-subscribed": "Non abonné",
      "activate": "Activer",
      "deactivate": "Désactiver",
      "no-features": "Aucune fonctionnalité disponible.",
      "expires-at": "Expire le {date}",
      "expired-on": "Expiré le {date}",
      "monthly-price": "{price}/mois",
      "active-section": "Actives",
      "expired-section": "Expirées",
      "status": {
        "active": "Actif",
        "inactive": "Inactif",
        "expired": "Expiré"
      },
      "plans": {
        "essentiel": "Essentiel",
        "pro": "Pro",
        "business": "Business"
      },
      "activate-dialog": {
        "title": "Activer la fonctionnalité",
        "description": "Activer {title} pour ce commerce.",
        "duration-label": "Durée",
        "custom-duration": "Ou durée personnalisée",
        "months-suffix": "mois",
        "expires-on": "Expire le {date}",
        "duration": {
          "1-month": "1 mois",
          "3-months": "3 mois",
          "6-months": "6 mois",
          "1-year": "1 an"
        }
      },
      "deactivate-all": "Tout désactiver",
      "deactivate-dialog": {
        "title": "Désactiver la fonctionnalité",
        "description": "Êtes-vous sûr de vouloir désactiver {title} pour ce commerce ?"
      },
      "grant-all": "Tout accorder",
      "source": {
        "subscription": "Abonnement",
        "admin": "Admin",
        "trial": "Essai"
      },
      "grant-dialog": {
        "title": "Accorder l'accès",
        "description": "Accorder l'accès à {title} pour ce commerce.",
        "duration-label": "Durée",
        "custom-days": "Nombre de jours personnalisé",
        "days-suffix": "jours",
        "trial-duration": {
          "7-days": "7 jours",
          "14-days": "14 jours",
          "30-days": "30 jours"
        },
        "expires-on": "Expire le {date}",
        "custom": "Personnalisé",
        "stripe-hint": "Cet essai ne modifie pas l'abonnement Stripe du commerce."
      }
    },
    "onboarding": {
      "page-title": "Nouvel onboarding",
      "new-button": "Onboarder un shop",
      "steps": {
        "shop": "Shop",
        "game-rewards": "Lots roue",
        "game-flyer": "Flyer roue",
        "loyalty-config": "Fidélité",
        "loyalty-flyer": "Flyer fidélité",
        "recap": "Récap & Envoi"
      },
      "shop": {
        "create-and-continue": "Créer et continuer",
        "owner-section-title": "Propriétaire du shop",
        "owner-section-description": "Cette personne recevra le mail d'onboarding (login + lien Stripe + flyers).",
        "owner-required": "Email du propriétaire requis"
      },
      "game": {
        "title": "Configuration du jeu",
        "description": "Configurez les récompenses de la roue. Le total doit être 100%.",
        "add-reward": "Ajouter une récompense",
        "remove-reward-aria": "Supprimer la récompense",
        "reward-description-placeholder": "Ex : Café offert",
        "reward-description-label": "Description de la récompense",
        "reward-probability-label": "Probabilité",
        "min-rewards-error": "Minimum {min} récompenses requises",
        "total-not-100-error": "Le total doit être 100 %",
        "descriptions-required-error": "Toutes les descriptions doivent être remplies"
      },
      "loyalty": {
        "title": "Programme fidélité — Tampons",
        "description": "Configurez le programme de tampons fidélité.",
        "stamps-required-label": "Nombre de tampons requis",
        "reward-label-label": "Libellé de la récompense",
        "reward-label-placeholder": "Ex: Récompense fidélité",
        "discount-label": "Remise accordée (%)",
        "stamps-label": "Nombre de tampons",
        "stamps-help": "Au moins {min} tampons",
        "reward-label": "Récompense",
        "reward-placeholder": "Ex: -15%",
        "preview-label": "Aperçu",
        "preview": "Après {stamps} tampons, recevez {reward}"
      },
      "recap": {
        "title": "Récap & Envoi",
        "description": "Vérifiez la configuration avant d'envoyer l'invitation.",
        "shop-section": "Commerce",
        "shop-name": "Nom",
        "owner-email": "Email du propriétaire",
        "game-section": "Jeu – Roue",
        "loyalty-section": "Fidélité",
        "stamps-required": "Tampons requis",
        "discount": "Remise",
        "stripe-plan-label": "Plan abonnement",
        "send-button": "Envoyer onboarding",
        "sending": "Envoi en cours...",
        "success-toast": "Email envoyé à {email}",
        "preview-email": "Aperçu de l'email",
        "preview-email-title": "Aperçu de l'email d'onboarding",
        "campaign-id": "ID de campagne",
        "program-id": "ID du programme"
      },
      "stripe-plans": {
        "monthly": "Mensuel (89€/mois)"
      },
      "resume": {
        "page-title": "Reprendre l'onboarding",
        "coming-soon": "Reprise en cours de développement"
      }
    },
    "google-reserve": {
      "title": "Google Reserve",
      "error": "Échec du chargement des données Google Reserve",
      "overview": {
        "title": "Vue d'ensemble",
        "opted-in-count": "Commerces inscrits",
        "eligible-count": "Éligibles au feed",
        "last-run": "Dernier export",
        "no-run": "Aucune exécution",
        "records": "{shops} commerce(s) · {availabilities} créneau(x)",
        "needs-action": "À corriger",
        "active-eligible": "Actifs et éligibles",
        "bookings": "Réservations",
        "covers": "Couverts",
        "suzzy-source": "Réservations Suzzy · source GOOGLE_RESERVE"
      },
      "run-status": {
        "running": "En cours",
        "success": "Réussi",
        "failed": "Échoué"
      },
      "status": {
        "live": "Activé",
        "opted-in-excluded": "Opt-in exclu",
        "disabled": "Désactivé"
      },
      "tooltip": {
        "excluded-no-stripe-sub": "Ce commerce a activé Google Reserve mais n'a pas d'abonnement Stripe actif : il est exclu du feed.",
        "excluded-status": "Ce commerce a activé Google Reserve mais son abonnement est {status} : il est exclu du feed.",
        "excluded-status-unknown": "Ce commerce a activé Google Reserve mais son abonnement est en cours d'initialisation : il est exclu du feed."
      },
      "table": {
        "empty": "Aucun commerce concerné ne correspond à ces filtres",
        "name": "Nom",
        "place-id": "Place ID",
        "has-place-id": "Place ID défini",
        "has-place-id-yes": "Oui",
        "has-place-id-no": "Non",
        "subscription": "Abonnement",
        "status": "Statut Google",
        "enabled": "Activé",
        "enabled-yes": "Activé",
        "access": "Accès effectif",
        "stripe-status": "Stripe",
        "feed": "Flux / blocage",
        "google-status": "Statut Google",
        "coverage": "Couverture (jours)",
        "bookings": "Réservations Suzzy",
        "covers": "Couverts Suzzy",
        "actions": "Actions",
        "effective": "Effectif",
        "missing": "Manquant",
        "eligible": "Éligible",
        "blocked": "Bloqué",
        "active": "Actif",
        "inactive": "Inactif",
        "activate": "Activer",
        "deactivate": "Désactiver",
        "fix-view": "Corriger / voir",
        "deactivate-title": "Désactiver Google Reserve ?",
        "deactivate-description": "La diffusion future sur Google s'arrêtera après le prochain flux. Le Place ID et les réservations restent inchangés.",
        "source": {
          "SUBSCRIPTION": "Abonnement",
          "TRIAL": "Essai",
          "ADMIN": "Admin"
        },
        "stripe": {
          "TRIALING": "Essai",
          "ACTIVE": "Actif",
          "PAST_DUE": "Impayé",
          "CANCELLED": "Annulé",
          "EXPIRED": "Expiré",
          "INCOMPLETE": "Incomplet"
        },
        "blockers": {
          "PLATFORM_DISABLED": "Google Reserve est indisponible sur toute la plateforme",
          "FEATURE_UNAVAILABLE": "Fonction indisponible",
          "NO_EFFECTIVE_ACCESS": "Aucun accès effectif",
          "RESERVATIONS_DISABLED": "Réservations désactivées",
          "NOT_OPTED_IN": "Non inscrit",
          "MISSING_PLACE_ID": "Place ID manquant",
          "NO_AVAILABILITY": "Aucune disponibilité"
        },
        "bulk-result": "{success} réussis · {failed} échoués. Les échecs restent sélectionnés.",
        "bulk-confirm": "Appliquer cette action à {count} établissements ? Seuls les établissements compatibles avec cette action sont concernés."
      },
      "filters": {
        "search": "Rechercher un commerce",
        "start-date": "Date de début",
        "end-date": "Date de fin",
        "custom-range-required": "Sélectionnez les deux dates pour charger cette période.",
        "custom-range-invalid": "La date de début doit précéder ou être égale à la date de fin.",
        "custom-range-inclusive": "Les deux dates sélectionnées sont incluses.",
        "status": {
          "label": "Statut",
          "options": {
            "ALL": "Tous",
            "NEEDS_ACTION": "À corriger",
            "ACTIVE": "Actif",
            "READY": "Prêt"
          }
        },
        "access": {
          "label": "Accès",
          "options": {
            "ALL": "Tous",
            "EFFECTIVE": "Effectif",
            "TRIAL": "Essai",
            "MISSING": "Manquant"
          }
        },
        "feed": {
          "label": "Flux",
          "options": {
            "ALL": "Tous",
            "ELIGIBLE": "Éligible",
            "BLOCKED": "Bloqué"
          }
        },
        "googleReserve": {
          "label": "Statut Google",
          "options": {
            "ALL": "Tous",
            "ACTIVE": "Actif",
            "INACTIVE": "Inactif"
          }
        },
        "placeId": {
          "label": "Place ID",
          "options": {
            "ALL": "Tous",
            "PRESENT": "Présent",
            "MISSING": "Manquant"
          }
        },
        "periodDays": {
          "label": "Période",
          "options": {
            "7": "7 jours",
            "30": "30 jours",
            "90": "90 jours",
            "CUSTOM": "Personnalisée"
          }
        }
      }
    },
    "stripe-connect": {
      "title": "Compte Stripe Connect",
      "error": "Impossible de charger l’état du compte Stripe",
      "not-connected": "Ce commerce n’a pas encore de compte Stripe : aucune garantie de réservation ne peut être encaissée.",
      "capabilities": {
        "charges": "Encaissements",
        "payouts": "Virements",
        "details": "Dossier envoyé"
      },
      "requirements-title": "Stripe attend ces informations",
      "requirements-hint": "Codes Stripe bruts, tant que le commerçant ne les a pas fournis.",
      "payouts-blocked": "Les virements ne sont pas encore actifs : ce solde reste retenu chez Stripe.",
      "balance-unavailable": "Stripe n’a pas renvoyé le solde de ce compte. Rechargez la page dans un instant.",
      "account-id": "Identifiant du compte Stripe",
      "last-synced": "Synchronisé avec Stripe le {date}"
    },
    "billing-products": {
      "title": "Catalogue produits",
      "create": "Nouveau produit",
      "edit": "Modifier",
      "archive": "Archiver",
      "filter-all": "Tous",
      "empty": "Aucun produit dans le catalogue",
      "load-error": "Impossible de charger le catalogue",
      "columns": {
        "product": "Produit",
        "tags": "Tags",
        "interval": "Périodicité",
        "price": "Prix HT"
      },
      "intervals": {
        "one_time": "Ponctuel",
        "month": "Mensuel",
        "year": "Annuel"
      },
      "dialog": {
        "create-title": "Nouveau produit",
        "edit-title": "Modifier le produit",
        "name": "Nom",
        "name-placeholder": "Nom de domaine",
        "name-error": "Le nom est requis",
        "description": "Description (optionnelle)",
        "description-placeholder": "Affichée sur la page de paiement",
        "price": "Prix HT (€)",
        "price-error": "Indiquez un prix supérieur à 0",
        "interval": "Périodicité",
        "tags": "Tags (séparés par des virgules)",
        "tags-placeholder": "Site web, Domaine",
        "price-change-hint": "Un nouveau prix s'applique aux prochains liens de paiement. Les abonnements en cours gardent l'ancien.",
        "cancel": "Annuler",
        "save": "Enregistrer",
        "create": "Créer"
      },
      "archive-dialog": {
        "title": "Archiver ce produit ?",
        "description": "{name} ne sera plus proposé dans les liens de paiement. Les abonnements qui le facturent déjà continuent."
      },
      "toasts": {
        "save-success": "Produit enregistré",
        "save-error": "Échec de l'enregistrement du produit",
        "archive-success": "Produit archivé",
        "archive-error": "Échec de l'archivage du produit"
      }
    },
    "comped-access": {
      "title": "Accès sans paiement",
      "description-none": "Ce commerçant n'a pas d'abonnement : il est bloqué à l'entrée du back-office tant qu'il n'a pas renseigné de moyen de paiement. Vous pouvez lui ouvrir l'accès exceptionnellement.",
      "description-granted": "Ce commerçant accède au back-office sans abonnement payant. Vous pouvez révoquer cet accès à tout moment.",
      "description-paying": "Ce commerçant a un abonnement payant actif. Aucune action nécessaire.",
      "granted-badge": "Activé",
      "grant-action": "Autoriser l'accès sans paiement",
      "revoke-action": "Révoquer l'accès",
      "grant-success": "Accès sans paiement autorisé",
      "grant-error": "Échec de l'autorisation d'accès",
      "cancel": "Annuler",
      "pending": "En cours...",
      "grant-dialog": {
        "title": "Autoriser l'accès sans paiement",
        "description": "Le commerçant pourra utiliser le back-office sans renseigner d'IBAN ni de carte. À réserver aux cas exceptionnels.",
        "confirm": "Autoriser",
        "trial-label": "En période d'essai",
        "trial-hint": "Au lieu d'un accès permanent, l'accès est marqué comme essai gratuit."
      },
      "revoke-dialog": {
        "title": "Révoquer l'accès sans paiement",
        "description": "Le commerçant sera de nouveau bloqué à l'entrée du back-office tant qu'il ne souscrit pas un abonnement. Effet immédiat.",
        "confirm": "Révoquer"
      }
    }
  },
  "inline-edit": {
    "no-notes": "Aucune note",
    "save-hint": "Ctrl+Entrée pour sauvegarder",
    "validate": "Valider",
    "cancel": "Annuler"
  },
  "buttons": {
    "create": "Créer",
    "creating": "Création en cours...",
    "save": "Enregistrer",
    "saving": "Enregistrement...",
    "save-changes": "Sauvegarder les modifications",
    "cancel": "Annuler",
    "delete": "Supprimer",
    "deleting": "Suppression...",
    "delete-shop": "Supprimer la boutique",
    "edit": "Modifier",
    "editing": "Modification...",
    "confirm": "Confirmer",
    "previous": "Précédent",
    "next": "Suivant",
    "add": "Ajouter",
    "remove": "Retirer",
    "update": "Mettre à jour",
    "updating": "Mise à jour...",
    "create-shop": "Créer le magasin",
    "create-campaign": "Créer la campagne",
    "create-reward": "Créer la récompense",
    "add-product": "Ajouter un produit",
    "add-category": "Ajouter une catégorie",
    "cancel-reservation": "Annuler la réservation",
    "complete-reservation": "Marquer comme terminée",
    "mark-absent": "Marquer comme absente",
    "cancel-order": "Annuler la commande",
    "export-orders": "Exporter les commandes",
    "import-menu": "Importer le menu",
    "validate-redemption": "Valider l'échange",
    "cancel-subscription": "Annuler l'abonnement",
    "delete-reservation": "Supprimer définitivement"
  },
  "dialogs": {
    "delete-order": {
      "title": "Supprimer définitivement cette commande ?",
      "description": "La commande et son historique seront définitivement supprimés. Cette action est irréversible et ne déclenche aucun remboursement.",
      "protected-description": "Les commandes liées à un paiement en ligne ou à une plateforme ne peuvent pas être supprimées. Vous pouvez modifier leur statut."
    },
    "confirmation": {
      "title": "Confirmer l'action",
      "description": "Êtes-vous sûr de vouloir continuer ? Cette action ne peut pas être annulée."
    },
    "delete-shop": {
      "title": "Confirmer la suppression",
      "description": "Êtes-vous sûr de vouloir supprimer le magasin <shopName></shopName> ? Cette action est irréversible et supprimera toutes les données associées.",
      "trigger": "Supprimer la boutique",
      "confirm": "Supprimer",
      "cancel": "Annuler",
      "deleting": "Suppression..."
    },
    "sms-credit": {
      "title": "Ajuster les crédits SMS",
      "description": "Gérer les crédits SMS pour {shopName}",
      "trigger": "Ajuster",
      "tabs": {
        "add": "Recharger",
        "remove": "Retirer",
        "set": "Définir"
      },
      "labels": {
        "add": "Crédits à ajouter",
        "remove": "Crédits à retirer",
        "set": "Nouveau solde"
      },
      "buttons": {
        "add": "Recharger",
        "remove": "Retirer",
        "set": "Définir"
      },
      "current-balance": "Solde actuel:",
      "new-balance": "Nouveau solde:",
      "credits": "crédits",
      "errors": {
        "amount-must-be-positive": "Le montant doit être supérieur à 0",
        "cannot-remove-more": "Impossible de retirer plus que le solde actuel"
      },
      "cancel": "Annuler",
      "processing": "En cours..."
    },
    "bulk-delete-products": {
      "title": "Supprimer {count} produit(s)",
      "description": "Cette action est irréversible. Les produits sélectionnés seront définitivement supprimés."
    },
    "bulk-delete-categories": {
      "title": "Supprimer {count} catégorie(s)",
      "description": "Cette action est irréversible. Les catégories sélectionnées seront définitivement supprimées."
    },
    "cancel-order": {
      "title": "Confirmer l'annulation",
      "description": "La commande sera marquée comme annulée et restera dans l’historique. Aucun remboursement n’est déclenché par cette action."
    },
    "cancel-reservation": {
      "title": "Confirmer l'annulation",
      "description": "Veuillez sélectionner un motif d'annulation. Cette action ne peut pas être annulée.",
      "reason-label": "Motif d'annulation",
      "reasons": {
        "no-space": "Il n'y a plus de place",
        "not-sure": "Nous ne sommes pas sûrs d'assurer la réservation",
        "closed": "Nous sommes fermés",
        "other": "Autre"
      },
      "custom-reason-placeholder": "Précisez la raison de l'annulation..."
    },
    "send-message": {
      "title": "Envoyer un message",
      "description": "Envoyez un message personnalisé au client",
      "channel-label": "Canal d'envoi",
      "channel": {
        "auto": "Auto",
        "sms": "SMS",
        "email": "Email",
        "wallet-push": "Wallet Push"
      },
      "sms-too-long": "Message trop long pour un SMS (max {max} caractères)",
      "sms-insufficient-credit": "SMS indisponible : plafond du mois atteint ou abonnement inactif",
      "variables": {
        "label": "Variables disponibles",
        "customer-name": "Nom",
        "date": "Date",
        "time": "Heure",
        "nb-clients": "Personnes",
        "reservation-link": "Lien"
      },
      "preset-label": "Choisir un message",
      "preset-labels": {
        "confirm-presence": "Confirmer la présence",
        "confirm-guests": "Confirmer le nombre de personnes",
        "table-ready": "Table prête",
        "reminder": "Rappel de réservation",
        "custom": "Message personnalisé"
      },
      "presets": {
        "sms": {
          "confirm-presence": "'{{customerName}}', confirmez votre venue le '{{date}}' à '{{time}}'.",
          "confirm-guests": "'{{customerName}}', confirmez '{{nbClients}}' pers. pour votre réservation.",
          "table-ready": "'{{customerName}}', votre table est prête. Rendez-vous à l'accueil.",
          "reminder": "'{{customerName}}', rappel : réservation à '{{time}}'.",
          "custom": "Message personnalisé"
        },
        "email": {
          "confirm-presence": "'{{customerName}}', confirmez votre venue le '{{date}}' à '{{time}}'.\n\nVotre réservation : '{{reservationLink}}'",
          "confirm-guests": "'{{customerName}}', confirmez '{{nbClients}}' pers. pour votre réservation.\n\nVotre réservation : '{{reservationLink}}'",
          "table-ready": "'{{customerName}}', votre table est prête. Rendez-vous à l'accueil.\n\nVotre réservation : '{{reservationLink}}'",
          "reminder": "'{{customerName}}', rappel : réservation à '{{time}}'.\n\nVotre réservation : '{{reservationLink}}'",
          "custom": "Message personnalisé"
        }
      },
      "message-preview": "Aperçu du message",
      "custom-placeholder": "Saisissez votre message...",
      "character-count": "{count}/{max} caractères",
      "custom-greeting": "Bonjour '{{customerName}}',\n\nVoici le lien de votre réservation : '{{reservationLink}}'\n\n"
    },
    "create-campaign": {
      "title": "Créer une campagne",
      "description": "Créer une nouvelle campagne marketing"
    },
    "create-reward": {
      "title": "Créer une récompense",
      "description": "Ajouter une nouvelle récompense à votre campagne"
    },
    "delete-reward": {
      "title": "Supprimer la récompense",
      "description": "Êtes-vous sûr de vouloir supprimer cette récompense ? Cette action est irréversible."
    },
    "delete-campaign": {
      "title": "Supprimer la campagne",
      "description": "Êtes-vous sûr de vouloir supprimer la campagne \"{campaignName}\" ? Cette action est irréversible."
    },
    "add-category": {
      "title": "Ajouter une nouvelle catégorie",
      "description": "Renseignez les informations de la nouvelle catégorie"
    },
    "edit-category": {
      "title": "Modifier la catégorie",
      "description": "Modifiez les informations de la catégorie"
    },
    "add-product": {
      "title": "Ajouter un nouveau produit",
      "description": "Renseignez les informations du nouveau produit"
    },
    "edit-product": {
      "title": "Modifier le produit",
      "description": "Modifiez les informations du produit"
    },
    "import-menu": {
      "title": "Importer le menu",
      "description": "Téléchargez un fichier CSV pour importer votre menu"
    },
    "export-orders": {
      "title": "Exporter les commandes",
      "description": "Exporter les commandes au format CSV"
    },
    "cancel-subscription": {
      "title": "Annuler l'abonnement",
      "description": "Êtes-vous sûr de vouloir annuler votre abonnement ?"
    },
    "create-customer": {
      "title": "Ajouter un client",
      "description": "Créez un nouveau client pour votre boutique",
      "hint": "Au moins un email ou un numéro de téléphone est requis."
    },
    "closed-slot-confirm": {
      "title": "Créer sur un créneau fermé ?",
      "description": "Ce créneau est fermé à la réservation en ligne. Confirmer la création manuelle ?",
      "confirm": "Confirmer"
    },
    "create-reservation": {
      "title": "Créer une réservation",
      "description": "Créez une nouvelle réservation pour votre restaurant",
      "notifications-title": "Notifications",
      "send-email": "Envoyer un email de confirmation",
      "send-sms": "Envoyer un SMS de confirmation",
      "sms-requires-phone": "Renseignez un numéro de téléphone",
      "sms-requires-credit": "SMS indisponible : plafond du mois atteint ou abonnement inactif",
      "email-requires-address": "Renseignez une adresse email",
      "sms-credit-info": "1 crédit SMS sera utilisé",
      "advanced-options-title": "Options avancées",
      "created-at-label": "Date de création",
      "created-at-description": "Laisser vide pour utiliser l'heure actuelle. Utile pour enregistrer une réservation engagée antérieurement.",
      "created-at-placeholder": "Aucune (utiliser maintenant)",
      "external-id-label": "ID externe",
      "external-id-description": "Identifiant unique côté source (ex: ID TheFork). Permet l'upsert idempotent lors de réimports.",
      "external-id-placeholder": "ex: thefork-r8X2kF9",
      "source-label": "Source",
      "source-placeholder": "ex: THEFORK",
      "date-today": "Aujourd'hui",
      "date-tomorrow": "Demain",
      "date-other": "Autre date",
      "more-options": "Plus d'options",
      "submit": "Créer · {count, plural, one {# couvert} other {# couverts}}",
      "table-prefilled": "Table {table}"
    },
    "delete-reservation": {
      "title": "Supprimer définitivement cette réservation ?",
      "description-active": "Cette action est irréversible. Le client sera notifié de l'annulation avant la suppression.",
      "description-terminal": "Cette action est irréversible. La réservation sera retirée de vos listes. L'historique client reste préservé."
    }
  },
  "forms": {
    "show-password": "Afficher le mot de passe",
    "hide-password": "Masquer le mot de passe",
    "select-date": "Sélectionner une date",
    "add-date": "Ajouter une date",
    "sections": {
      "contact-info": "Informations de contact",
      "social-links": "Réseaux sociaux et avis",
      "shop-identity": "Identifiant de la boutique",
      "billing": "Facturation"
    },
    "help": {
      "slug-preview": "Votre boutique sera accessible sur : suzzyapp.com/{slug}",
      "identifier-info": "Cet identifiant permet d'identifier votre boutique auprès de vos clients sur l'application. Pour le modifier, veuillez nous contacter à <link>contact@suzzyapp.com</link>.",
      "billing-note": "Si l'adresse de facturation n'est pas renseignée, l'adresse du restaurant sera utilisée.",
      "billing-company-search": "Recherchez par raison sociale, SIREN ou SIRET."
    },
    "validation": {
      "required": {
        "field-required": "Ce champ est requis",
        "name-required": "Le nom est requis",
        "email-required": "L'email est requis",
        "phone-required": "Le numéro de téléphone est requis",
        "address-required": "L'adresse est requise",
        "password-required": "Le mot de passe est requis",
        "category-required": "La catégorie est requise",
        "price-required": "Le prix est requis",
        "description-required": "La description est requise",
        "probability-required": "La probabilité est requise",
        "location-required": "La localisation est requise. Sélectionnez une adresse dans la liste.",
        "package-required": "Le code du forfait est requis",
        "feature-required": "Au moins une fonctionnalité est requise",
        "campaign-name-required": "Le nom de la campagne est requis",
        "start-date-required": "La date de début est requise",
        "end-date-required": "La date de fin est requise",
        "expiration-date-required": "La date d'expiration est requise",
        "schedule-required": "Veuillez sélectionner un forfait",
        "billing-cycle-required": "Veuillez sélectionner un cycle de facturation"
      },
      "format": {
        "passwords-not-match": "Les mots de passe ne correspondent pas",
        "invalid-email": "Format d'email invalide",
        "invalid-phone": "Numéro de téléphone invalide",
        "phone-10-digits": "Le numéro de téléphone doit contenir 10 chiffres",
        "invalid-url": "Format d'URL invalide",
        "invalid-number": "Doit être un nombre valide",
        "url-or-empty": "L'URL doit être valide ou vide",
        "invalid-uuid": "ID invalide",
        "invalid-color": "Format de couleur invalide",
        "invalid-color-example": "Format de couleur invalide (ex: #FF5733)",
        "redirect-url-https": "L'URL de redirection HTTPS est requise pour ce type de campagne",
        "billing-cycle-invalid": "Le cycle de facturation doit être mensuel"
      },
      "length": {
        "min-2-characters": "Doit contenir au moins 2 caractères",
        "min-3-characters": "Doit contenir au moins 3 caractères",
        "min-6-characters": "Doit contenir au moins 6 caractères",
        "min-8-characters": "Doit contenir au moins 8 caractères",
        "max-50-characters": "Ne doit pas dépasser 50 caractères",
        "max-100-characters": "Ne doit pas dépasser 100 caractères",
        "max-500-characters": "Ne doit pas dépasser 500 caractères"
      },
      "range": {
        "positive-number": "Doit être un nombre positif",
        "positive-price": "Le prix doit être un nombre supérieur à 0",
        "between-0-100": "Doit être entre 0 et 100",
        "probability-positive": "La probabilité doit être positive",
        "probability-max-100": "La probabilité ne peut pas dépasser 100%",
        "probability-max-decimals": "La probabilité ne peut avoir plus de 2 décimales",
        "min-value": "La valeur minimum est {min}",
        "max-value": "La valeur maximum est {max}",
        "invalid-value": "Valeur invalide",
        "min-zero": "Min: 0",
        "max-hundred": "Max: 100",
        "total-exceeds": "Total: {total}% (max 100%)",
        "min-1-day": "Le nombre de jours doit être au moins 1",
        "price-integer": "Le prix doit être un nombre entier",
        "price-too-high": "Le prix est trop élevé"
      },
      "date": {
        "end-after-start": "La date de fin doit être après la date de début",
        "end-must-follow-start": "La date de fin doit être postérieure à la date de début"
      },
      "password": {
        "passwords-must-match": "Les mots de passe doivent correspondre",
        "password-too-weak": "Le mot de passe est trop faible"
      },
      "reservation": {
        "min-greater-than-max": "La taille minimum doit être inférieure ou égale à la taille maximum"
      },
      "orders": {
        "min-greater-than-max": "Le montant minimum doit être inférieur ou égal au montant maximum"
      },
      "campaign": {
        "platform-required": "La plateforme est requise pour ce type de campagne"
      },
      "import": {
        "min-1-product": "Au moins un produit est requis",
        "max-500-products": "Maximum 500 produits par import"
      },
      "errors": {
        "unsupported-time-range": "Plage de temps non supportée : {range}",
        "no-refresh-token": "Aucun token de rafraîchissement",
        "unknown-feature-type": "Type de fonctionnalité inconnu : {type}",
        "failed-to-fetch-reviews": "Erreur lors de la récupération des avis",
        "failed-to-fetch-data": "Erreur lors de la récupération des données"
      }
    },
    "fields": {
      "shop-name": "Nom du magasin",
      "new-shop": "Nouveau magasin",
      "email": "Email",
      "phone": "Numéro de téléphone",
      "address": "Adresse",
      "logo": "Logo",
      "campaign-name": "Nom de la campagne",
      "campaign-type": "Type de campagne",
      "start-date": "Date de début",
      "end-date": "Date de fin",
      "redirect-url": "URL de redirection",
      "platform": "Plateforme",
      "reward-name": "Nom de la récompense",
      "reward-type": "Type de récompense",
      "reward-value": "Valeur de la récompense",
      "winning-probability": "Probabilité de gain",
      "category-name": "Nom de la catégorie",
      "product-name": "Nom du produit",
      "product-description": "Description du produit",
      "product-price": "Prix",
      "product-category": "Catégorie",
      "stock-quantity": "Quantité en stock",
      "password": "Mot de passe",
      "confirm-password": "Confirmer le mot de passe",
      "current-password": "Mot de passe actuel",
      "new-password": "Nouveau mot de passe",
      "min-party-size": "Taille minimum du groupe",
      "max-party-size": "Taille maximum du groupe",
      "min-amount": "Montant minimum",
      "max-amount": "Montant maximum",
      "max-days": "Jours maximum",
      "auto-approve-rating": "Note d'approbation automatique",
      "type": "Type",
      "game-type": "Type de jeu",
      "background-color": "Couleur de fond",
      "background-image": "Image de fond",
      "wheel-theme": "Thème de la roue",
      "instagram-url": "URL Instagram",
      "facebook-url": "URL Facebook",
      "tiktok-url": "URL TikTok",
      "tripadvisor-url": "URL TripAdvisor",
      "country": "Pays",
      "slug": "Identifiant URL",
      "identifier": "Identifiant",
      "name-placeholder": "Ex: Jean Dupont",
      "shop-name-placeholder": "Ex: Sushi Paradise",
      "email-placeholder": "Ex: contact@sushiparadise.com",
      "phone-placeholder": "Ex: +33-1-42-97-48-85",
      "address-placeholder": "Tapez votre adresse...",
      "campaign-name-placeholder": "Ex: Soldes d'été, Black Friday...",
      "redirect-url-placeholder": "Ex: https://exemple.com",
      "platform-placeholder": "Sélectionner une plateforme",
      "type-placeholder": "Sélectionner un type",
      "category-placeholder": "Sélectionner une catégorie",
      "product-name-placeholder": "Ex: California Roll",
      "description-placeholder": "Entrez une description...",
      "price-placeholder": "0.00",
      "quantity-placeholder": "0",
      "custom-reason-placeholder": "Veuillez préciser...",
      "select-placeholder": "Sélectionner",
      "add-placeholder": "Ajouter",
      "new-password-placeholder": "Entrez un nouveau mot de passe",
      "confirm-password-placeholder": "Confirmez le mot de passe",
      "instagram-url-placeholder": "Ex: https://instagram.com/monrestaurant",
      "facebook-url-placeholder": "Ex: https://facebook.com/monrestaurant",
      "tiktok-url-placeholder": "Ex: https://tiktok.com/@monrestaurant",
      "tripadvisor-url-placeholder": "Ex: https://tripadvisor.com/Restaurant_Review-xxx",
      "country-placeholder": "Sélectionner un pays",
      "slug-placeholder": "Ex: mon-restaurant",
      "billing-company-name": "Raison sociale",
      "billing-company-name-placeholder": "Rechercher une entreprise",
      "billing-address": "Adresse de facturation",
      "billing-siren": "SIREN"
    },
    "company-search": {
      "empty": "Aucune entreprise trouvée.",
      "error": "La recherche est indisponible. Vous pouvez saisir les informations manuellement."
    },
    "select-date-range": "Sélectionner une période",
    "google-reserve": {
      "section": "Réserver via Google",
      "place-id-label": "Google Place ID",
      "note": "Renseignez votre Google Place ID pour permettre les réservations depuis Google. Vous pouvez le récupérer automatiquement depuis votre fiche Google Business connectée dans les paramètres Avis.",
      "fetch-button": "Récupérer depuis Google",
      "fetch-success": "Google Place ID récupéré depuis Google !",
      "fetch-empty": "Aucune fiche Google avec un Place ID. Connectez votre compte Google dans les paramètres Avis."
    },
    "google-connect": {
      "section": "Google",
      "note": "Recherchez votre établissement ou renseignez votre Place ID. Le lien d'avis Google est généré automatiquement à partir de votre fiche.",
      "derived-review-url": "Lien d'avis Google : {url}"
    }
  },
  "empty-states": {
    "no-orders": "Aucune commande pour le moment",
    "no-reservations": "Aucune réservation pour cette date",
    "no-campaigns": "Aucune campagne pour le moment",
    "no-winners": "Aucun gagnant pour le moment",
    "no-reviews": "Aucun avis pour le moment",
    "no-products": "Aucun produit dans cette catégorie",
    "no-categories": "Aucune catégorie pour le moment",
    "no-results": "Aucun résultat trouvé",
    "no-data": "Aucune donnée disponible",
    "campaign-not-found": "Campagne introuvable"
  },
  "statuses": {
    "reservation": {
      "pending": "En attente de confirmation",
      "confirmed": "Confirmée",
      "reserved": "Confirmé",
      "cancelled": "Annulée",
      "completed": "Terminée",
      "absent": "Absente"
    },
    "order": {
      "pending": "En attente",
      "completed": "Terminée",
      "cancelled": "Annulée"
    },
    "campaign": {
      "ongoing": "En cours",
      "upcoming": "À venir",
      "expired": "Expirée",
      "inactive": "Inactive",
      "all": "Toutes"
    },
    "redemption": {
      "pending": "À remettre",
      "validated": "Remise",
      "expired": "Expiré",
      "cancelled": "Annulé"
    },
    "subscription": {
      "active": "Actif",
      "trialing": "Essai",
      "past-due": "Paiement en retard",
      "cancelled": "Annulé",
      "canceled": "Annulé",
      "expired": "Expiré",
      "incomplete": "Incomplet",
      "none": "Aucun",
      "comped": "Offert (sans Stripe)"
    }
  },
  "actions": {
    "toggle": "Basculer",
    "enable": "Activer",
    "disable": "Désactiver",
    "activate": "Activer",
    "deactivate": "Désactiver",
    "edit": "Modifier",
    "delete": "Supprimer",
    "view": "Voir",
    "confirm": "Confirmer",
    "approve": "Approuver",
    "reject": "Rejeter",
    "cancel": "Annuler",
    "complete": "Terminer",
    "mark-absent": "Marquer comme absent",
    "export": "Exporter",
    "import": "Importer",
    "download": "Télécharger",
    "upload": "Télécharger",
    "refresh": "Actualiser"
  },
  "messages": {
    "success": {
      "saved": "Enregistré avec succès",
      "created": "Créé avec succès",
      "updated": "Mis à jour avec succès",
      "deleted": "Supprimé avec succès",
      "cancelled": "Annulé avec succès",
      "completed": "Terminé avec succès",
      "imported": "Importé avec succès",
      "exported": "Exporté avec succès",
      "shop-created": "Magasin créé avec succès",
      "campaign-created": "Campagne créée avec succès",
      "reward-created": "Récompense créée avec succès",
      "product-created": "Produit créé avec succès",
      "category-created": "Catégorie créée avec succès",
      "reservation-cancelled": "Réservation annulée avec succès",
      "reservation-completed": "Réservation marquée comme terminée",
      "order-cancelled": "Commande annulée avec succès",
      "subscription-cancelled": "Abonnement annulé avec succès"
    },
    "error": {
      "failed-to-save": "Échec de l'enregistrement",
      "failed-to-create": "Échec de la création",
      "failed-to-update": "Échec de la mise à jour",
      "failed-to-delete": "Échec de la suppression",
      "failed-to-load": "Échec du chargement des données",
      "network-error": "Erreur réseau. Veuillez réessayer",
      "server-error": "Erreur serveur. Veuillez réessayer plus tard",
      "validation-error": "Veuillez vérifier les erreurs dans le formulaire",
      "unauthorized": "Vous n'êtes pas autorisé à effectuer cette action",
      "not-found": "Ressource introuvable",
      "generic-error": "Une erreur s'est produite. Veuillez réessayer",
      "failed-to-load-schedules": "Erreur lors du chargement des plannings"
    },
    "info": {
      "no-changes": "Aucune modification à enregistrer",
      "loading": "Chargement...",
      "processing": "Traitement...",
      "feature-disabled": "Cette fonctionnalité est actuellement désactivée",
      "coming-soon": "Bientôt disponible",
      "beta-feature": "Il s'agit d'une fonctionnalité bêta",
      "loading-schedules": "Chargement des plannings...",
      "no-schedules": "Aucun planning configuré",
      "no-schedules-for-category": "Aucun planning pour cette catégorie"
    },
    "warning": {
      "unsaved-changes": "Vous avez des modifications non enregistrées",
      "cannot-undo": "Cette action ne peut pas être annulée",
      "confirm-action": "Veuillez confirmer cette action",
      "data-loss-warning": "Des données peuvent être perdues si vous continuez"
    }
  },
  "campaign-types": {
    "direct": "Direct",
    "review": "Avis clients",
    "social-follow": "Réseaux sociaux"
  },
  "platforms": {
    "social": {
      "facebook": "Facebook",
      "instagram": "Instagram",
      "tiktok": "TikTok",
      "twitter": "Twitter",
      "linkedin": "LinkedIn",
      "youtube": "YouTube"
    },
    "review": {
      "google": "Google",
      "tripadvisor": "TripAdvisor",
      "yelp": "Yelp",
      "trustpilot": "Trustpilot"
    },
    "delivery": {
      "hub-title": "Uber Eats et Deliveroo",
      "title": "Plateformes de livraison",
      "description": "Recevez vos commandes Uber Eats et Deliveroo dans Suzzy. La carte, les prix et les pauses se règlent ici, une seule fois.",
      "load-error": "Impossible de charger vos plateformes.",
      "ordering-required": "Activez d'abord le Click & Collect ou la livraison : sans eux, vos commandes Uber Eats et Deliveroo n'apparaîtraient pas dans Suzzy.",
      "providers": {
        "UBER_EATS": "Uber Eats",
        "DELIVEROO": "Deliveroo"
      },
      "status": {
        "not-linked": "Non reliée",
        "linked": "Reliée",
        "paused": "En pause",
        "error": "Erreur"
      },
      "card": {
        "never-published": "Jamais publiée",
        "error-title": "La plateforme signale un problème",
        "paused-title": "Commandes en pause",
        "paused-description": "Votre boutique apparaît fermée sur {platform}. Reprenez les commandes quand vous êtes prêt.",
        "preview-and-publish": "Voir et publier la carte",
        "pause-orders": "Mettre en pause",
        "resume-orders": "Reprendre",
        "pause-dialog": {
          "title": "Mettre {platform} en pause ?",
          "description": "Votre boutique apparaîtra fermée sur {platform}. Vous ne recevrez plus de commandes jusqu'à la reprise."
        },
        "resume-dialog": {
          "title": "Reprendre les commandes {platform} ?",
          "description": "Votre boutique rouvre sur {platform} selon vos horaires de livraison."
        },
        "not-linked-description": "Recevez vos commandes {platform} directement dans Suzzy, avec votre carte et vos prix à jour.",
        "contact-suzzy": "Contactez Suzzy pour relier votre compte",
        "bulk-title": "Forcer sur toute la carte",
        "bulk-reset": "Retirer les prix forcés",
        "bulk-hint": "Fixe chaque prix au prix Suzzy actuel, ajustement compris. Ces prix ne suivront plus vos changements de prix Suzzy tant que vous ne les retirez pas.",
        "bulk-apply": "Appliquer",
        "bulk-dialog": {
          "title": "Forcer les prix {platform} ?",
          "description": "Chaque produit passera au prix Suzzy {adjustment} sur {platform}, arrondi aux 10 centimes supérieurs. Les prix forcés existants seront remplacés."
        },
        "bulk-reset-dialog": {
          "title": "Retirer les prix forcés {platform} ?",
          "description": "Chaque produit reprend le prix calculé avec la majoration {platform}."
        },
        "menu-published-at": "Carte publiée {time}",
        "connect-uber-eats": "Connecter Uber Eats",
        "connect-uber-eats-hint": "Connectez-vous avec le compte Uber Eats de votre restaurant.",
        "connect-uber-eats-browser": "Reliez Uber Eats depuis un navigateur.",
        "admin-only": "Seul un administrateur peut relier une plateforme ou modifier ses réglages.",
        "alcohol-dialog": {
          "title": "Vendre de l'alcool sur Uber Eats ?",
          "description": "Vos boissons alcoolisées seront publiées sur Uber Eats. Une fois publié, un produit reste marqué comme alcool chez Uber : seul leur support peut l'annuler.",
          "confirm": "Vendre de l'alcool"
        }
      },
      "markup": {
        "label": "Majoration",
        "save": "Enregistrer",
        "hint": "Ajoutée à vos prix Suzzy, arrondie aux 10 centimes supérieurs.",
        "invalid": "Indiquez un pourcentage (0 pour aucune majoration)."
      },
      "auto-accept": {
        "label": "Acceptation automatique",
        "hint": "Quand elle est désactivée, chaque commande attend votre validation dans Suzzy. Sans réponse, la plateforme l'annule (Uber Eats : au bout de 11 min 30)."
      },
      "prep-time": {
        "label": "Temps de préparation",
        "suffix": "min",
        "save": "Enregistrer",
        "hint": "Délai annoncé à Uber Eats quand une commande est acceptée.",
        "invalid": "Indiquez un nombre entier de minutes entre 5 et 90."
      },
      "preview": {
        "title": "Carte {platform}",
        "description": "Ce qui changera sur {platform} si vous publiez votre carte Suzzy.",
        "error": "Impossible de lire la carte en ligne sur {platform}. Vous pouvez quand même publier votre carte Suzzy.",
        "empty": "Aucun écart : la carte {platform} est identique à votre carte Suzzy.",
        "added": "À ajouter sur {platform} ({count})",
        "removed": "À retirer de {platform} ({count})",
        "price-changes": "Prix à mettre à jour ({count})",
        "unchanged": "{count, plural, =0 {Aucun produit déjà à jour.} one {# produit déjà à jour.} other {# produits déjà à jour.}}",
        "publish-note": "La publication remplace toute la carte sur {platform} par votre carte Suzzy : catégories, produits, options, prix et horaires de livraison.",
        "publish": "Publier ma carte Suzzy",
        "withheld-alcohol": "Alcool retiré de la carte ({count})",
        "withheld-reasons": {
          "ALCOHOL_OFF": "La vente d'alcool est désactivée sur cette plateforme",
          "ABV_MISSING": "Degré d'alcool manquant",
          "LICENCE": "Spiritueux ou plus de 18° : interdit avec la petite licence",
          "OPTION": "L'alcool n'est jamais proposé en option"
        },
        "alcohol-suggestions": "Peut-être de l'alcool ? ({count})",
        "mark-alcoholic": "Marquer 18+",
        "mark-alcoholic-label": "Marquer 18+ : {name}"
      },
      "toasts": {
        "saving": "Enregistrement…",
        "markup-saved": "Majoration enregistrée",
        "orders-paused": "Commandes mises en pause",
        "orders-resumed": "Commandes reprises",
        "update-error": "Impossible d'enregistrer la modification",
        "publishing": "Envoi de la carte…",
        "published": "Carte envoyée. Elle sera en ligne d'ici quelques minutes.",
        "publish-error": "Impossible d'envoyer la carte",
        "bulk-prices-saved": "Prix mis à jour sur {count} produits",
        "bulk-prices-error": "Impossible de mettre à jour les prix",
        "connect-error": "Impossible d'ouvrir la connexion Uber Eats",
        "uber-eats-connecting": "Connexion à Uber Eats…",
        "uber-eats-connected": "Uber Eats est relié à votre boutique",
        "uber-eats-connect-failed": "La connexion Uber Eats n'a pas abouti. Réessayez.",
        "uber-eats-no-store": "Ce compte Uber n'a aucune boutique. Connectez-vous avec le compte Uber Eats de votre restaurant.",
        "uber-eats-store-ambiguous": "Plusieurs boutiques de ce compte Uber Eats peuvent correspondre à ce restaurant. Contactez Suzzy pour relier la bonne.",
        "auto-accept-enabled": "Acceptation automatique activée",
        "auto-accept-disabled": "Les commandes attendront votre validation",
        "prep-time-saved": "Temps de préparation enregistré",
        "alcohol-enabled": "Vente d'alcool activée",
        "alcohol-disabled": "Vente d'alcool désactivée",
        "alcohol-saved": "Réglage alcool enregistré"
      },
      "price": {
        "hidden": "Masqué",
        "forced": "Prix forcé"
      },
      "product": {
        "section": "Plateformes",
        "visible-on": "Visible sur {platform}",
        "forced-price": "Prix forcé (facultatif)",
        "computed-hint": "Laissez vide pour le prix calculé : {price}.",
        "markup-hint": "Laissez vide pour le prix Suzzy avec la majoration de la plateforme.",
        "reset": "Retirer"
      },
      "category": {
        "hide-on": "Masquer sur",
        "hint": "Une catégorie masquée n'apparaît pas sur la plateforme, ses produits non plus."
      },
      "admin": {
        "title": "Plateformes de livraison",
        "description": "Reliez ce commerce à sa boutique Uber Eats ou à son site Deliveroo.",
        "empty": "Aucune plateforme reliée.",
        "link-title": "Relier une plateforme",
        "provider": "Plateforme",
        "external-id": "Identifiant de la boutique",
        "external-id-hint": "Deliveroo : identifiant du site. Uber Eats : identifiant de la boutique (store ID). Il est vérifié auprès de la plateforme.",
        "external-id-required": "Saisissez l'identifiant de la boutique.",
        "link": "Relier",
        "linked": "Reliée à {name}",
        "link-failed": "Liaison refusée",
        "link-error": "Impossible de relier la plateforme",
        "unnamed-store": "Boutique sans nom",
        "unlink": "Délier",
        "unlink-dialog": {
          "title": "Délier {platform} ?",
          "description": "{store} ne recevra plus ses commandes {platform} dans Suzzy. La carte reste en ligne sur la plateforme."
        },
        "unlinked": "Plateforme déliée",
        "unlink-error": "Impossible de délier la plateforme"
      },
      "alcohol": {
        "label": "Vendre de l'alcool",
        "licence": "Licence",
        "licences": {
          "SMALL_RESTAURANT": "Petite licence restaurant (vin, bière, cidre… 18° max)",
          "RESTAURANT": "Licence restaurant (tous alcools)"
        },
        "cutoff": "Masquer l'alcool après",
        "cutoff-recommended": "{time} (recommandé)",
        "no-cutoff": "Pas de limite (permis de vente de nuit)",
        "hint": "Sans permis de vente de nuit, la loi interdit de vendre de l'alcool entre 22 h et 8 h."
      },
      "invalid-period": "La fin ne peut pas précéder le début",
      "uber-promotions": {
        "title": "Promotions Uber Eats",
        "new": "Nouvelle promotion",
        "empty": "Aucune promotion en cours ou à venir.",
        "not-enabled": "Uber Eats n'a pas encore ouvert les promotions à Suzzy. Elles arrivent bientôt.",
        "load-error": "Impossible de charger les promotions Uber Eats",
        "percent-off": "−{percent} % sur la commande",
        "free-delivery": "Livraison offerte",
        "other": "Autre offre",
        "period": "{start} → {end}",
        "min-spend": "dès {amount} d'achat",
        "states": {
          "active": "En cours",
          "pending": "À venir"
        },
        "stop": "Arrêter",
        "stop-dialog": {
          "title": "Arrêter cette promotion ?",
          "description": "Elle disparaît tout de suite d'Uber Eats. Pour la relancer, créez-en une nouvelle."
        },
        "form": {
          "title": "Nouvelle promotion Uber Eats",
          "description": "Tous vos clients Uber Eats en profitent, du premier au dernier jour inclus.",
          "type": "Offre",
          "types": {
            "PERCENTOFF": "Réduction en %",
            "FREEDELIVERY": "Livraison offerte"
          },
          "percent": "Réduction",
          "min-spend": "Panier minimum",
          "start": "Premier jour",
          "end": "Dernier jour",
          "submit": "Créer la promotion",
          "invalid-percent": "Entre 5 et 50 %",
          "invalid-min-spend": "Entre 0,01 € et 1 000 €"
        },
        "toasts": {
          "created": "Promotion créée sur Uber Eats",
          "create-error": "Impossible de créer la promotion",
          "stopped": "Promotion arrêtée",
          "stop-error": "Impossible d'arrêter la promotion"
        }
      },
      "uber-reports": {
        "title": "Rapports Uber Eats",
        "type": "Rapport",
        "types": {
          "PAYMENT_DETAILS_REPORT": "Détail des paiements",
          "ORDERS_AND_ITEMS_REPORT": "Commandes et articles",
          "FINANCE_SUMMARY_REPORT": "Synthèse financière"
        },
        "start": "Du",
        "end": "Au",
        "submit": "Demander le rapport",
        "hint": "Uber Eats prépare le fichier en quelques minutes. 30 jours maximum, 15 pour les commandes et articles.",
        "empty": "Aucun rapport demandé ces 7 derniers jours.",
        "pending": "En préparation",
        "no-file": "Aucun fichier",
        "download": "Télécharger",
        "period": "{start} → {end}",
        "load-error": "Impossible de charger les rapports",
        "toasts": {
          "requested": "Rapport demandé à Uber Eats",
          "request-error": "Impossible de demander le rapport"
        }
      }
    }
  },
  "confirmation-channels": {
    "email": "Email",
    "sms": "SMS",
    "sms-insufficient-credit-action": "SMS indisponible, voir la consommation SMS",
    "sms-insufficient-credit-tooltip": "SMS indisponibles : plafond du mois atteint ou abonnement inactif. Cliquez pour voir le détail.",
    "phone": "Téléphone"
  },
  "filters": {
    "clear": "Réinitialiser",
    "active-filters": "Filtres actifs",
    "reservations": "Réservation(s)",
    "covers": "Couvert(s)",
    "total": "Total",
    "search-by-name": "Rechercher par nom...",
    "search-reservations": "Rechercher par nom, email, téléphone...",
    "filter-by-status": "Filtrer par statut",
    "all-statuses": "Tous les statuts",
    "pending": "En attente de confirmation",
    "confirmed": "Confirmée",
    "reserved": "Confirmé",
    "cancelled": "Annulée",
    "completed": "Terminée",
    "absent": "Absente",
    "waitlisted": "Liste d'attente",
    "advanced": "Filtres",
    "advanced-title": "Filtres avancés",
    "reset": "Réinitialiser",
    "no-show-financial-status": "Situation financière des absences",
    "no-show-none": "Toutes les réservations",
    "party-size": "Nombre de couverts",
    "min": "Min",
    "max": "Max",
    "sort-by": "Trier par",
    "sort-fields": {
      "display-id": "Numéro",
      "reservation-date": "Date de réservation",
      "created-at": "Date de création",
      "status": "Statut",
      "party-size": "Nombre de couverts"
    },
    "sort-order": {
      "asc": "Ordre croissant",
      "desc": "Ordre décroissant"
    }
  },
  "sidebar": {
    "shop-settings": "Paramètres boutique",
    "features": "Fonctionnalités",
    "shop": "Boutique",
    "open-hours": "Horaires d'ouverture",
    "subscription": "Abonnement",
    "e-reputation": "E-Réputation",
    "games": "Jeux",
    "disabled-features": "Fonctionnalités désactivées",
    "settings-label": "Paramètres",
    "admin-label": "Admin",
    "search-customers": "Rechercher un client",
    "help": "Aide",
    "changelog": "Nouveautés",
    "rewards": "Récompenses",
    "service-mode": "Mode service",
    "pages": "Pages du menu",
    "pages-description": "Choisissez les pages affichées dans le menu, en temps normal et pendant le service.",
    "pages-normal": "Normal",
    "pages-service": "Service",
    "page-always-visible": "Toujours visible",
    "focus-mode-enter": "Plein écran",
    "focus-mode-exit": "Quitter le plein écran",
    "resize": "Réduire ou agrandir le menu"
  },
  "customer-search": {
    "placeholder": "Rechercher par nom, email ou téléphone…",
    "empty-query": "Commencez à saisir pour rechercher un client",
    "empty-results": "Aucun client trouvé",
    "loading": "Recherche en cours…",
    "shortcut-hint": "⌘K",
    "view-full-profile": "Voir le profil complet",
    "activity": {
      "title": "Activité récente",
      "order": "Commande",
      "reservation": "Réservation",
      "review": "Avis",
      "redemption": "Récompense utilisée",
      "no-activities": "Aucune activité récente",
      "pax": "{count, plural, one {# pers.} other {# pers.}}",
      "checkin": "Passage",
      "checkin-validated": "Passage validé",
      "checkin-scanned": "Passage scanné",
      "create-reservation": "Nouvelle réservation",
      "no-shows": "{count, plural, one {# no-show} other {# no-shows}}",
      "fetch-error": "Impossible de charger les informations du client"
    }
  },
  "subscription": {
    "title": "Abonnement",
    "description": "Gérez votre abonnement et vos fonctionnalités",
    "modify": "Modifier l'abonnement",
    "current-subscription-title": "Votre Abonnement Actuel",
    "current-plan": "Plan actuel",
    "next-payment": "Prochain paiement",
    "canceled": "Abonnement annulé",
    "active-until": "Actif jusqu'au",
    "billing": {
      "monthly": "Mensuel"
    }
  },
  "customer-tags": {
    "vip": "VIP",
    "loyal": "Fidèle",
    "new": "Nouveau",
    "inactive": "Inactif",
    "premium": "Premium",
    "regular": "Régulier",
    "business": "Entreprise",
    "prospect": "Prospect",
    "auto": {
      "nouveau": "Nouveau",
      "occasionnel": "Occasionnel",
      "regulier": "Régulier",
      "fidele": "Fidèle",
      "vip": "VIP",
      "en-sommeil": "En sommeil",
      "no-show": "No-show",
      "annulation": "Annulation"
    }
  },
  "auto-tagging": {
    "title": "Tags automatiques",
    "description": "Attribuez automatiquement des tags à vos clients selon leur fréquence de visite, leurs dépenses et leur comportement.",
    "settings": {
      "error": "Impossible de charger les réglages des tags automatiques.",
      "save": "Enregistrer",
      "saving": "Enregistrement...",
      "activation": {
        "title": "Activation",
        "description": "Activez l'attribution automatique des tags clients.",
        "enabled": "Activer les tags automatiques"
      },
      "frequency": {
        "title": "Fréquence de visites",
        "description": "Seuils de visites pour classer vos clients.",
        "occasional": "Client occasionnel",
        "occasional-description": "Nombre de visites minimum pour être marqué « occasionnel ».",
        "regular": "Client régulier",
        "regular-description": "Nombre de visites minimum pour être marqué « régulier ».",
        "loyal": "Client fidèle",
        "loyal-description": "Nombre de visites minimum pour être marqué « fidèle »."
      },
      "vip": {
        "title": "Clients VIP",
        "description": "Vos meilleurs clients selon leurs dépenses.",
        "top-percent": "Top clients",
        "top-percent-description": "Pourcentage des clients les plus dépensiers marqués « VIP »."
      },
      "recency": {
        "title": "Récence",
        "description": "Repérez les clients qui ne viennent plus.",
        "dormant-after": "Client en sommeil",
        "dormant-after-description": "Nombre de jours sans visite avant d'être marqué « en sommeil »."
      },
      "no-show": {
        "title": "No-show",
        "description": "Repérez les clients qui ne se présentent pas.",
        "min-count": "Seuil de no-show",
        "min-count-description": "Nombre de no-shows minimum pour être marqué « no-show »."
      },
      "suffix": {
        "visits": "visites",
        "percent": "%",
        "days": "jours",
        "no-shows": "no-shows"
      }
    }
  },
  "dashboard": {
    "periods": {
      "day": "Jour",
      "week": "Semaine",
      "month": "Mois"
    },
    "date-range": {
      "today": "Aujourd'hui",
      "this-week": "Cette semaine",
      "this-month": "Ce mois-ci",
      "last-month": "Mois dernier",
      "this-year": "Cette année",
      "all-time": "Depuis le début",
      "custom": "Personnaliser",
      "start-date": "Date de début",
      "end-date": "Date de fin",
      "apply": "Appliquer"
    },
    "metrics": {
      "total-reservations": "Total réservations",
      "total-people": "Total personnes",
      "average-group-size": "Taille moyenne du groupe",
      "total-orders": "Total commandes",
      "revenue": "Chiffre d'affaires",
      "google-rating": "Note Google",
      "reviews": "avis",
      "based-on-reviews": "basé sur {count} avis"
    },
    "activity": {
      "title": "Activité",
      "orders-and-reservations": "{orders} commandes et {reservations} réservations"
    },
    "combined": {
      "title": "Combiné",
      "total": "Total"
    },
    "orders": {
      "title": "Commandes",
      "label": "Commandes"
    },
    "reservations": {
      "title": "Réservations",
      "label": "Réservations"
    },
    "chart-labels": {
      "orders-vs-reservations": "Commandes vs Réservations"
    },
    "gsc-chart": {
      "revenue": "CA Total",
      "orders": "Commandes",
      "avg-basket": "Panier Moyen",
      "customers": "Clients",
      "reservations": "Réservations",
      "people": "Personnes",
      "avg-party-size": "Taille Moy.",
      "unique-customers": "Clients Uniq.",
      "orders-title": "Performance Commandes",
      "reservations-title": "Performance Réservations"
    },
    "config": {
      "customize": "Personnaliser",
      "charts": "Graphiques",
      "cards": "Cartes",
      "feed": "Flux",
      "orders-chart": "Graphique Commandes",
      "reservations-chart": "Graphique Réservations",
      "reservations-summary": "Résumé Réservations",
      "google-rating": "Note Google",
      "reservation-status": "Statut Réservations",
      "top-selling": "Produits Phare",
      "notifications": "Notifications"
    },
    "reservation-status": {
      "title": "Répartition réservations",
      "completed": "Terminées",
      "reserved": "Confirmé",
      "canceled": "Annulées",
      "absent": "Absents",
      "total": "Total"
    },
    "top-selling": {
      "title": "Produits phare",
      "orders": "cmd",
      "empty": "Aucun produit vendu"
    },
    "recent-notifications": {
      "title": "Dernières notifications",
      "empty": "Aucune notification récente"
    },
    "notifications": {
      "types": {
        "reservation-created": "Nouvelle réservation",
        "reservation-confirmed": "Réservation confirmée",
        "reservation-cancelled": "Réservation annulée",
        "reservation-completed": "Réservation terminée",
        "reservation-marked-absent": "Client absent",
        "reservation-updated": "Réservation modifiée",
        "order-created": "Nouvelle commande",
        "order-ready-for-pickup": "Commande prête",
        "order-picked-up": "Commande récupérée",
        "order-cancelled": "Commande annulée",
        "review-received": "Nouvel avis reçu",
        "customer-profile-created": "Nouveau client",
        "game-reward-claimed": "Récompense réclamée",
        "subscription-created": "Nouvel abonnement",
        "subscription-cancelled": "Abonnement annulé",
        "subscription-package-changed": "Forfait modifié",
        "customer-interaction-recorded": "Interaction client",
        "shop-settings-updated": "Paramètres modifiés",
        "shop-schedule-created": "Horaires créés",
        "shop-access-created": "Accès accordé",
        "shop-feature-config-created": "Fonction configurée",
        "shop-feature-config-toggled": "Fonction modifiée",
        "user-welcome": "Bienvenue",
        "user-email-changed": "Email modifié",
        "user-password-changed": "Mot de passe modifié",
        "user-profile-updated": "Profil mis à jour",
        "time-slot-created": "Créneau créé",
        "category-created": "Catégorie créée",
        "category-updated": "Catégorie modifiée",
        "category-deleted": "Catégorie supprimée",
        "item-created": "Article créé",
        "package-created": "Forfait créé",
        "feature-created": "Fonctionnalité créée",
        "email-sent": "Email envoyé",
        "email-failed": "Échec d'envoi",
        "sms-sent": "SMS envoyé",
        "sms-failed": "Échec d'envoi SMS",
        "sms-delivered": "SMS délivré",
        "sms-delivery-failed": "Échec de livraison SMS",
        "loyalty-card-created": "Carte fidélité créée",
        "loyalty-points-earned": "Points fidélité gagnés",
        "loyalty-reward-redeemed": "Récompense fidélité échangée",
        "loyalty-balance-adjusted": "Solde fidélité ajusté",
        "marketing-campaign-started": "Campagne marketing démarrée",
        "marketing-campaign-completed": "Campagne marketing terminée",
        "marketing-campaign-failed": "Campagne marketing échouée",
        "marketing-campaign-updated": "Campagne marketing mise à jour"
      }
    }
  },
  "disabled-slots": {
    "slot-counts-label": "Créneau",
    "cumulative-covers-label": "Cumul des couverts du service",
    "cumulative-covers-progress": "{current}/{capacity} couverts",
    "cumulative-covers-total": "{count, plural, one {# couvert} other {# couverts}}",
    "stats-accessible-label": "{reservations, plural, one {# réservation} other {# réservations}} · {persons, plural, one {# personne} other {# personnes}}",
    "disabled": "Désactivé",
    "enabled": "Activé",
    "reason-placeholder": "Raison (optionnel)",
    "confirm-disable-title": "Désactiver ce créneau ?",
    "confirm-disable-description": "Ce créneau ne sera plus disponible à la réservation.",
    "confirm-disable": "Désactiver",
    "no-reservations": "Aucune réservation",
    "capacity": "{current}/{max} pers.",
    "session-title": "Session {number} : {start} – {end}",
    "slots-count": "{total} créneaux · {disabled} désactivés",
    "empty-no-schedule": "Aucun planning de réservation configuré pour ce jour.",
    "empty-no-sessions": "Aucune session configurée pour ce jour.",
    "empty-no-slots": "Aucun créneau disponible pour cette session.",
    "error-loading": "Erreur lors du chargement des créneaux.",
    "persons-count": "{count} pers.",
    "toggle-slot-availability": "Activer ou désactiver ce créneau",
    "outside-schedule": "Hors planning",
    "outside-schedule-session": "Réservations hors planning",
    "manage-slots": "Gérer les créneaux",
    "toggle-session-availability": "Activer ou désactiver toute la session",
    "reservations-count": "{count, plural, one {# résa} other {# résas}}"
  },
  "store-switcher": {
    "create-new-shop": "Créer une nouvelle boutique"
  },
  "schedule": {
    "form": {
      "description": "Description",
      "start-date": "Date de début",
      "end-date": "Date de fin",
      "creating": "Création...",
      "category": "Catégorie",
      "category-placeholder": "Sélectionnez une catégorie",
      "period": "Période"
    },
    "create-slots": "Créer les créneaux",
    "step-2-description": "Étape 2/2 : Définissez les créneaux de réservation",
    "create-schedule": "Créer un horaire",
    "step-1-description": "Étape 1/2 : Créez un nouveau planning d'exception",
    "finish-setup": "Terminer la configuration",
    "slots-count": "{count} créneaux",
    "loading-schedules": "Chargement des horaires...",
    "loading-slots": "Chargement des créneaux...",
    "select-schedule": "Sélectionnez un planning pour voir les créneaux",
    "weekdays": "Jours de semaine",
    "weekend": "Week-end",
    "all-days": "Tous les jours",
    "copy": "Copier",
    "copy-day": {
      "title": "Copier vers",
      "trigger-aria": "Copier les créneaux vers d'autres jours",
      "will-replace": "remplace",
      "apply": "Appliquer ({count})"
    },
    "days": {
      "sunday": "Dimanche",
      "monday": "Lundi",
      "tuesday": "Mardi",
      "wednesday": "Mercredi",
      "thursday": "Jeudi",
      "friday": "Vendredi",
      "saturday": "Samedi"
    },
    "create-this-slot": "Créer ce créneau",
    "save-modifications": "Sauvegarder les modifications",
    "remove-slot": "Supprimer ce créneau",
    "slots": "Créneaux",
    "delete-schedule": "Supprimer ce planning",
    "closed": "Fermé",
    "add-slot": "Ajouter",
    "add-menu": {
      "continue": "Continuer après le dernier",
      "lunch": "Service midi",
      "dinner": "Service soir",
      "custom": "Personnalisé",
      "add-slot-aria": "Ajouter un créneau"
    },
    "start-time": "Heure de début",
    "end-time": "Heure de fin",
    "next-day-short": "(+1 jour)",
    "day-open": "{day} ouvert",
    "error": {
      "invalid-time-format": "Format d'heure invalide (HH:MM attendu)",
      "invalid-time-range": "L'heure de début doit être avant l'heure de fin",
      "delete-slots-failed": "Échec de la suppression des créneaux. Les modifications ont été annulées."
    },
    "stats": {
      "days-open": "{count} jour ouvert",
      "days-open-plural": "{count} jours ouverts",
      "hours-per-week": "{hours}h{minutes}/semaine"
    },
    "setup": {
      "last-step": "Dernière étape",
      "title": "Configurez vos horaires d'ouverture",
      "description": "Pour terminer, définissez vos horaires d'ouverture pour les réservations",
      "configuring": "Configuration en cours...",
      "finish": "Terminer la configuration",
      "finish-with-slots": "Terminer la configuration ({count} créneaux)",
      "loading": "Chargement du planning...",
      "no-base-schedule": "Aucun planning de base trouvé pour ce magasin.",
      "error": "Impossible de charger le planning",
      "copy-from-base": "Copier depuis le planning habituel",
      "finish-closed": "Terminer (fermé)"
    },
    "page": {
      "title": "Configuration des horaires",
      "description": "Définissez vos horaires d'ouverture pour votre nouveau magasin",
      "loading": "Chargement du planning...",
      "error": "Erreur lors du chargement du planning"
    },
    "templates": {
      "start-with-template": "Commencer avec un modèle",
      "restaurant": "Restaurant",
      "restaurant-desc": "Midi et soir, Lun-Sam",
      "cafe": "Café",
      "cafe-desc": "Journée continue, 7j/7",
      "bar": "Bar",
      "bar-desc": "Soirées Jeu-Dim",
      "overnight-disabled": "Activez les services après minuit dans les paramètres de réservation",
      "custom": "Personnalisé",
      "custom-desc": "Configurer manuellement"
    },
    "categories": {
      "opening": "Ouverture",
      "reservation": "Réservation",
      "click-and-collect": "Click & Collect",
      "delivery": "Livraison"
    },
    "descriptions": {
      "opening": "Horaires d'ouverture",
      "reservation": "Horaires de réservation",
      "click-and-collect": "Horaires de click & collect",
      "delivery": "Horaires de livraison"
    },
    "filter": {
      "all": "Toutes"
    },
    "types": {
      "base": "Habituel",
      "exception": "Spécial"
    },
    "base-schedule": {
      "title": "Horaires réguliers",
      "empty": "Aucun horaire régulier configuré"
    },
    "exceptions": {
      "title": "Exceptions",
      "add": "Ajouter une exception",
      "empty": "Aucune exception programmée.",
      "vs-regular": "régulier"
    }
  },
  "orders": {
    "delete-order": "Supprimer définitivement",
    "change-status": "Changer le statut",
    "platform": {
      "number": "N° {platform}",
      "paid-on": "Payé sur {platform}",
      "mark-handed-over": "Remise au livreur",
      "cancel-description": "{platform} est prévenu et rembourse le client. Cette action ne peut pas être annulée.",
      "allergies": "Allergies",
      "courier": {
        "assigned": "Livreur assigné",
        "arriving": "Livreur en route",
        "at-restaurant": "Livreur arrivé",
        "picked-up": "Récupérée"
      },
      "accept": "Accepter",
      "ready-at": "Prête à {time}",
      "accept-before": "À accepter avant {time}",
      "delay": {
        "label": "Repousser l'heure de prêt",
        "minutes": "+{minutes} min",
        "saving": "Envoi du nouveau délai…",
        "success": "Heure de prêt repoussée à {time}",
        "error": "Impossible de repousser l'heure de prêt",
        "deliveroo-hint": "Deliveroo n'accepte qu'un seul retard par commande."
      },
      "cancel-description-accepted-deliveroo": "Deliveroo n'accepte pas l'annulation d'une commande déjà acceptée depuis Suzzy : annulez-la aussi sur la tablette ou le Partner Hub Deliveroo pour que le client soit remboursé.",
      "unavailable": {
        "action": "Indisponible",
        "dialog-title": "« {item} » indisponible ?",
        "dialog-description": "Uber Eats demande au client de le remplacer ou de le retirer. La commande se met à jour dès qu'il répond dans l'app.",
        "confirm": "Prévenir le client",
        "success": "Le client est prévenu sur Uber Eats",
        "error": "Impossible de prévenir Uber Eats"
      }
    },
    "actions": {
      "start": "Commencer",
      "ready": "Prête",
      "picked-up": "Récupérée",
      "delivered": "Livrée"
    },
    "type-filter": {
      "all": "Toutes",
      "click-and-collect": "Click & Collect",
      "delivery": "Livraison",
      "scheduled": "Programmées",
      "dine-in": "Sur place"
    },
    "no-orders": "Aucune commande",
    "no-orders-in-category": "Aucune commande dans cette catégorie",
    "no-scheduled-orders": "Aucune commande programmée",
    "order-number": "Commande #{id}",
    "order-details": "Détails de la commande",
    "cancel-order": "Annuler la commande",
    "confirm-cancellation": "Confirmer l'annulation",
    "refund-auto-message": "Le client sera remboursé automatiquement. Cette action ne peut pas être annulée.",
    "order-cancelled-refunded": "Commande annulée et remboursée avec succès!",
    "order-updated": "Commande mise à jour avec succès!",
    "settings-title": "Paramètres Click & Collect",
    "settings-description": "Configurez les paramètres de gestion des commandes à emporter",
    "item": "article",
    "items": "articles",
    "contact": "Contacter",
    "search-placeholder": "Rechercher une commande...",
    "realtime-disconnected": "Connexion perdue — reconnexion…",
    "view": {
      "daily": "Vue journalière",
      "monthly": "Vue mensuelle"
    },
    "layout": {
      "accordion": "Détail accordéon",
      "panel": "Détail à droite"
    },
    "detail": {
      "customer": "Client",
      "phone": "Téléphone",
      "email": "Email",
      "items": "Articles",
      "delivery-address": "Adresse de livraison",
      "note": "Note"
    },
    "edit": {
      "customer": "Client",
      "name": "Nom",
      "schedule-time": "Date et heure",
      "status": "Statut",
      "order-type": "Type de commande",
      "address-complement": "Complément d'adresse",
      "add-product": "Ajouter un produit",
      "items-required": "La commande doit contenir au moins un article.",
      "unknown-product": "Produit indisponible",
      "unavailable-product-description": "Ce produit n'est plus dans le menu. Supprimez cette ligne pour enregistrer les autres modifications.",
      "quantity": "Quantité",
      "item-note": "Note de l'article",
      "notify-title": "Notifier le client",
      "notify-sms": "SMS",
      "notify-email": "Email",
      "notify-optional": "Ne cochez aucun canal pour enregistrer sans notification."
    },
    "monthly": {
      "more-statuses": "+{count} statuts"
    },
    "ticket": {
      "order": "Commande",
      "type": {
        "click-and-collect": "À emporter",
        "delivery": "Livraison",
        "dine-in": "Sur place"
      },
      "schedule": {
        "pickup": "Retrait",
        "delivery": "Livraison",
        "service": "Service"
      },
      "schedule-asap": "au plus vite",
      "client": "Client",
      "phone": "Tél",
      "delivery-section": "Livraison",
      "distance": "Distance",
      "mode": "Mode",
      "mode-asap": "Au plus vite",
      "mode-scheduled": "Programmée",
      "eta": "ETA",
      "subtotal": "Sous-total",
      "total": "TOTAL",
      "thanks": "Merci et à bientôt !",
      "ordered-at": "Commandé le {date}",
      "document-title": "Ticket #{id} — {shop}",
      "kitchen-title": "CUISINE",
      "kitchen-document-title": "Cuisine #{id} — {shop}",
      "delivery-fee": "Livraison"
    },
    "print-receipt": "Ticket de caisse",
    "print-kitchen": "Ticket de cuisine",
    "board-views": {
      "kanban": "Vue colonnes",
      "list": "Vue liste",
      "slots": "Vue créneaux",
      "wall": "Écran cuisine"
    },
    "waiting-minutes": "{value} min",
    "waiting-hours": "{value} h",
    "waiting-days": "{value} j",
    "dine-in": {
      "actions": {
        "cancel-bill-request": "Annuler la demande d'addition",
        "decrease-guests": "Retirer un convive",
        "increase-guests": "Ajouter un convive",
        "cancel-order": "Annuler la commande",
        "delete-item": "Supprimer ce produit",
        "detach-reservation": "Détacher la réservation",
        "merge": "Fusionner",
        "more": "Actions",
        "transfer": "Transférer"
      },
      "attachment": {
        "none": "Sans table"
      },
      "bill-title": "Addition",
      "cancel-order": {
        "description": "Toute la commande de cette table sera annulée. Cette action est tracée et irréversible.",
        "title": "Annuler la commande ?"
      },
      "declared": "déclarés",
      "delete-item": {
        "title": "Supprimer ce produit ?",
        "description": "{quantity} × {name} sera retiré de l'addition. La suppression est définitive, seul le journal en garde la trace."
      },
      "duration-hours": "{hours} h {minutes}",
      "duration-minutes": "{minutes} min",
      "empty": "Aucune visite à afficher",
      "error": "Impossible de charger le service à table",
      "guest-count": "Convives",
      "item-count": "{count} art.",
      "merge": {
        "description": "Les tours de la table choisie seront ajoutés à cette addition, et sa table sera libérée.",
        "placeholder": "Choisir une table à fusionner",
        "title": "Fusionner deux tables",
        "action": "Fusionner"
      },
      "no-contributor": "Sans nom",
      "no-items": "Aucun article commandé.",
      "no-reservation": "Aucune réservation",
      "no-table-reservation": "Aucune réservation sur cette table",
      "open-visit": {
        "action": "Ouvrir un service"
      },
      "panel-views": {
        "person": "Personne",
        "round": "Tour",
        "total": "Tout",
        "title": "Regroupement"
      },
      "people-count": "{count} pers.",
      "reservation": "Réservation liée",
      "reservation-move": {
        "confirm-merge": "Fusionner",
        "confirm-move": "Déplacer",
        "confirm-transfer": "Transférer le service",
        "merge-description": "Un service est en cours sur {from} pour {name}, et {to} en a un aussi. Les tours de {from} rejoindront l'addition de {to}, et {from} sera libérée.",
        "merge-title": "Fusionner les deux tables ?",
        "move-description": "{name} est posée sur {from}. Elle en sera déliée et rattachée à {to}.",
        "move-title": "Déplacer cette réservation ?",
        "transfer-description": "Un service est en cours sur {from} pour {name}. Déplacer la réservation seule laisserait les convives là-bas : tout le service part sur {to}.",
        "transfer-title": "Transférer le service ?"
      },
      "reservation-option": "{time} · {name} · {guests} couv.",
      "round-count": "{count, plural, one {# tour} other {# tours}}",
      "round-title": "Round {number}",
      "search-reservation": "Rechercher une réservation…",
      "service-state": {
        "active": "Ouverte",
        "bill-requested": "Addition demandée",
        "closed": "Clôturée",
        "cancelled": "Annulée"
      },
      "settle": {
        "action": "Encaisser {total}",
        "confirm": "Encaisser",
        "description": "Le paiement au comptoir sera enregistré et la table libérée. Les lignes que les convives n'ont pas encore envoyées seront perdues.",
        "release-action": "Libérer la table",
        "release-confirm": "Libérer",
        "release-description": "Rien n'a été commandé : aucune vente ne sera enregistrée, la table redevient libre.",
        "release-title": "Libérer la table ?",
        "title": "Encaisser {total} ?"
      },
      "total": "Total",
      "transfer": {
        "description": "La commande passera sur la table choisie. Seules les tables libres sont proposées.",
        "placeholder": "Choisir une table libre",
        "title": "Transférer vers une autre table",
        "warning-reservation": "{name} est attendu ici à {time} pour {guests} personne(s). Sa réservation suivra sur cette table.",
        "warning-capacity": "Table de {seats} place(s) pour {guests} couvert(s).",
        "warning-guests": "Les convives connectés devront scanner le QR de la nouvelle table."
      },
      "unknown-contributor": "Convive",
      "voided": "annulé",
      "history": {
        "status-changed": "Statut modifié",
        "payment-collected": "Addition encaissée",
        "payment-cancelled": "Encaissement annulé",
        "refunded": "Remboursement",
        "item-deleted": "Ligne supprimée",
        "table-transferred": "Service transféré",
        "orders-merged": "Tables fusionnées",
        "actor-staff": "Équipe",
        "actor-customer": "Client",
        "actor-system": "Automatique",
        "empty": "Aucun geste enregistré sur ce service.",
        "error": "Historique indisponible"
      },
      "reservation-summary": "{guests} personne(s) · {time}"
    },
    "payment": {
      "collect": "Encaisser",
      "status": {
        "pending": "À encaisser",
        "paid": "Payée",
        "failed": "Échouée",
        "refunded": "Remboursée",
        "partially-refunded": "Remb. partiel"
      },
      "cancel": "Annuler l'encaissement"
    },
    "merchant": {
      "quantity": "Quantité",
      "note": "Note cuisine",
      "selection-range": "{min} à {max} choix",
      "save": "Enregistrer",
      "add": "Ajouter",
      "empty-search": "Aucun produit trouvé",
      "search": "Rechercher un produit",
      "all": "Tous",
      "menu-error": "Impossible de charger la carte",
      "view-cart": "Voir la commande",
      "cart": "Commande",
      "empty-cart": "Sélectionnez un produit pour commencer",
      "decrease": "Diminuer {name}",
      "increase": "Augmenter {name}",
      "edit": "Modifier",
      "remove": "Retirer",
      "total": "Total",
      "submit-error": "Impossible de confirmer l’enregistrement. Votre panier est conservé ; réessayez.",
      "submitting": "Enregistrement…",
      "submit": "Créer la commande",
      "add-products": "Ajouter des produits",
      "close-service": "Terminer la table",
      "close-description": "La table sera libérée et la commande considérée comme réglée.",
      "edit-sent": "Modifier un article envoyé",
      "items-added": "Produits ajoutés",
      "item-updated": "Article modifié",
      "service-closed": "Service terminé",
      "history-item_name": "Article",
      "history-item_quantity": "Quantité",
      "history-item_note": "Note cuisine",
      "history-item_options": "Options",
      "cart-summary": "{count, plural, one {# article} other {# articles}} · {lines, plural, one {# ligne} other {# lignes}}",
      "in-cart": "{count} au panier",
      "back-products": "Retour aux produits",
      "back-table": "Retour à la table",
      "options-badge": "Options",
      "out-of-stock": "Indisponible",
      "required": "Obligatoire",
      "included": "Inclus",
      "decrease-quantity": "Diminuer la quantité",
      "increase-quantity": "Augmenter la quantité",
      "table-label": "Table {name}",
      "guest-count": "{count, plural, one {# couvert} other {# couverts}}",
      "edit-note": "Note cuisine : {name}",
      "edit-options": "Modifier les options",
      "remove-item": "Retirer {name}",
      "removed": "{name} retiré du panier",
      "undo": "Annuler",
      "delivery-fee": "Livraison",
      "fee-pending": "Frais à calculer",
      "note-action": "Note",
      "subtotal": "Articles",
      "catalogue-prices-updated": "Les prix du catalogue ont changé. Le total ci-dessous utilise les prix actuels."
    }
  },
  "reservations": {
    "detail": {
      "notifications-history": "Historique des notifications",
      "no-notifications": "Aucune notification pour cette réservation"
    },
    "date-picker": {
      "previous-day": "Jour précédent",
      "next-day": "Jour suivant"
    },
    "error-loading": "Erreur lors du chargement des réservations",
    "no-results": "Aucune réservation trouvée",
    "loading-reservations": "Chargement des réservations...",
    "count-short": "{count} résa",
    "no-reservation-for-date": "Aucune réservation trouvée pour le",
    "reservations-label": "Réservations",
    "reservations-of": "Réservations du",
    "auto-confirm": "Confirmer automatiquement les réservations",
    "details-title": "Détails de la réservation de {name}",
    "information": "Informations",
    "no-details-title": "Détails de réservation",
    "select-to-view": "Sélectionnez une réservation pour voir les détails",
    "technical-info": "Informations techniques",
    "display-id": "ID d'affichage",
    "reservation-id": "ID Réservation",
    "created-at": "Créée le",
    "people-before-reservation": "Personnes avant réservation",
    "confirmed-people": "Personnes confirmées",
    "confirmation-sent-at": "Confirmation envoyée le",
    "confirmed-at": "Confirmée le",
    "nb-people-confirmed": "Nb personnes confirmées",
    "special-requests": "Demandes spéciales",
    "note-placeholder": "Ajoutez une note pour cette réservation...",
    "add-note": "Ajouter une note",
    "internal-note": "Note interne",
    "internal-note-placeholder": "Ajoutez une note interne sur cette réservation...",
    "add-internal-note": "Ajouter une note interne",
    "quote-document": {
      "title": "Devis",
      "default-name": "Document de devis",
      "input-label": "Document de devis",
      "upload": "Importer",
      "replace": "Remplacer",
      "open": "Ouvrir le devis",
      "preview": "Prévisualiser le devis",
      "preview-title": "Aperçu du devis",
      "remove": "Retirer le devis",
      "empty-status": "Aucun",
      "empty-title": "Ajouter un devis",
      "empty-description": "PDF, Word, Excel ou image jusqu'à {maxSize} Mo",
      "invalid-file": "Choisissez un PDF, Word, Excel ou une image",
      "file-too-large": "Le document ne doit pas dépasser {maxSize} Mo"
    },
    "edit-guest-count": "Modifier",
    "edit-time": "Modifier",
    "reservation-for": "{date} à {time}",
    "date": "Date",
    "time": "Heure",
    "table": "Table",
    "queue-position": "{position} personnes avant vous",
    "queue-position-compact": "{position} avant vous",
    "reservation": "Réservation",
    "person": "personne",
    "people": "personnes",
    "person-count": "{count} personne(s)",
    "contact": "Contact",
    "verified": "Vérifié",
    "cancelled": "Réservation annulée avec succès",
    "error-cancelling": "Erreur lors de l'annulation de la réservation",
    "error-marking": "Erreur lors du marquage de la réservation",
    "settings-title": "Paramètres des réservations",
    "settings-description": "Configurez les paramètres de gestion des réservations",
    "tables": {
      "settings-title": "Tables de salle",
      "empty": "Aucune table configurée pour le moment.",
      "empty-active": "Aucune table active disponible.",
      "error-loading": "Impossible de charger les tables.",
      "form": {
        "name": "Nom",
        "name-placeholder": "Table 1, Terrasse 2...",
        "min-seats": "Min.",
        "max-seats": "Max.",
        "create": "Ajouter",
        "online-bookable": "Disponible en ligne",
        "priority-rank": "Priorité de placement",
        "priority-rank-hint": "Les plus petits nombres sont prioritaires."
      },
      "editor": {
        "grid-size": "{columns} colonnes × {rows} lignes",
        "add-column": "Ajouter colonne",
        "add-row": "Ajouter ligne",
        "selection": "Table sélectionnée",
        "no-selection": "Aucune table sélectionnée",
        "width": "Largeur",
        "height": "Hauteur",
        "active": "Active",
        "save": "Enregistrer",
        "delete": "Supprimer",
        "create-table": "Ajouter une table",
        "move-table": "Déplacer {name}",
        "stats": {
          "tables": "tables",
          "active": "actives",
          "capacity": "couverts max."
        },
        "popover": {
          "title": "Éditer {name}",
          "close": "Fermer"
        },
        "delete-confirm": {
          "title": "Supprimer {name} ?",
          "description": "Cette table sera supprimée définitivement. Les réservations qui y étaient assignées seront désassignées (mais conservées).",
          "cancel": "Annuler",
          "confirm": "Supprimer"
        },
        "shape": "Forme",
        "default-table-name": "Table {index}",
        "decor": {
          "toggle": "Décor",
          "done": "Terminer",
          "palette": "Éléments de décor",
          "color": "Couleur",
          "colors": {
            "neutral": "Gris",
            "blue": "Bleu",
            "green": "Vert",
            "orange": "Orange",
            "yellow": "Jaune",
            "purple": "Violet"
          },
          "hint": "Glissez pour tracer ou étirer, touchez un élément pour l'effacer.",
          "items": {
            "wall": "Mur",
            "partition": "Cloison amovible",
            "bar": "Bar",
            "plant": "Plante",
            "pillar": "Pilier",
            "entrance": "Entrée",
            "cashier": "Caisse",
            "kitchen": "Cuisine",
            "toilets": "Toilettes",
            "cloakroom": "Vestiaire"
          }
        }
      },
      "shapes": {
        "square": "Carrée",
        "rectangle": "Rectangle",
        "round": "Ronde",
        "oval": "Ovale",
        "banquette": "Banquette"
      },
      "add-dialog": {
        "trigger": "Nouvel article",
        "title": "Ajouter un élément",
        "description": "Choisissez une forme pour la nouvelle table.",
        "categories": {
          "rect": "Carrées / Rectangles",
          "round": "Rondes",
          "special": "Spéciales"
        }
      },
      "columns": {
        "name": "Table",
        "capacity": "Capacité",
        "status": "Statut",
        "actions": "Actions"
      },
      "actions": {
        "activate": "Activer {name}"
      },
      "assignment": {
        "title": "Table",
        "placeholder": "Assigner une table",
        "unassigned": "Aucune table",
        "option": "{name} · {min}-{max} pers.",
        "helper": "Le créneau reste porté par la réservation.",
        "multiple": "{count} tables assignées"
      },
      "operations": {
        "title": "Salles et combinaisons",
        "room": "Salle",
        "no-room": "Sans salle",
        "error": "Impossible d’enregistrer. Vérifiez les données puis réessayez.",
        "save": "Enregistrer",
        "add": "Ajouter",
        "cancel": "Annuler",
        "edit": "Modifier",
        "close": "Fermer",
        "open": "Ouvrir",
        "delete": "Supprimer",
        "delete-confirm": "Supprimer cet élément ?",
        "combinations-disabled": "Les combinaisons restent inactives tant que leur utilisation n’est pas activée dans les réglages.",
        "combinations": "Combinaisons de tables",
        "name": "Nom",
        "choose-room": "Choisir une salle",
        "min-seats": "Couverts minimum",
        "max-seats": "Couverts maximum",
        "seating": "Disposition",
        "joined": "Tables réunies",
        "split": "Tables séparées",
        "split-disabled": "Activez les groupes séparés dans les réglages pour proposer ces combinaisons en ligne.",
        "tables": "Tables",
        "closures": "Fermetures de salles",
        "start-date": "Date de début",
        "end-date": "Date de fin",
        "start-time": "Heure de début",
        "end-time": "Heure de fin",
        "closure-times-hint": "Sans horaires : fermeture toute la journée. Sinon, renseignez les deux heures.",
        "reason": "Motif",
        "availability": "Disponibilité des tables par service",
        "overrides-disabled": "Les exceptions sont conservées mais inactives tant que leur option n’est pas activée dans les réglages.",
        "date": "Date",
        "service": "Service",
        "choose-service": "Choisir un service",
        "online": "Ouverte en ligne",
        "staff-only": "Réservée au personnel",
        "closed": "Fermée",
        "reset": "Rétablir la règle habituelle",
        "affected-reservations": "{count} réservation(s) déjà placée(s) à vérifier.",
        "optimize": "Optimiser le service",
        "optimize-help": "Les tables non verrouillées sont libérées puis réattribuées au mieux. Rien ne change tant que vous n’appliquez pas ce placement.",
        "reservation": "Réservation",
        "all-reservations": "Toutes les réservations",
        "preview": "Calculer un aperçu",
        "preview-stale": "Les réservations ont changé. Un nouvel aperçu est nécessaire.",
        "preview-refreshed": "L’aperçu a été actualisé. Vérifiez-le avant de l’appliquer.",
        "unassigned": "Sans nouvelle proposition",
        "before": "Avant",
        "after": "Après",
        "same-tables": "Mêmes tables",
        "no-change": "Aucun changement",
        "current-unavailable": "État actuel indisponible",
        "apply-placement": "Appliquer ce placement",
        "add-closure": "Ajouter la fermeture",
        "full-day": "Journée entière",
        "full-day-hint": "Désactivez pour ne fermer qu'une plage horaire.",
        "choose-time": "Choisir une heure",
        "reason-placeholder": "Travaux, privatisation…",
        "delete-closure-title": "Supprimer cette fermeture ?",
        "selected-count": "{count} sur {total}",
        "no-service": "Aucun service ce jour-là",
        "availability-for-selection": "Ouverture des tables sélectionnées",
        "current-overrides": "Dérogations de ce service",
        "no-closures": "Aucune fermeture prévue pour cette salle.",
        "closures-link-description": "Fermez une salle pour une date ou une plage horaire dans Horaires et fermetures, section Jours spéciaux."
      }
    },
    "open-hours-link": "Horaires d'ouverture",
    "open-hours-description": "Gérez les créneaux disponibles pour les réservations",
    "people-per-reservation": "Nombre de personnes par réservation",
    "slot-config": "Configuration des créneaux",
    "slot-config-description": "Paramètres des créneaux de réservation",
    "max-people-per-slot": "Nombre maximum de personnes par créneau",
    "alert-messages": "Messages d'alerte",
    "alert-messages-description": "Messages affichés aux clients lors de la réservation et repris dans leurs e-mails de confirmation et de rappel",
    "verification-options": "Options de vérification des réservations",
    "confirmation-status": {
      "pending": "En attente",
      "reminder-sent": "Relancé × {count}",
      "reminder-sent-label": "Relancé",
      "reconfirmed": "Reconfirmée",
      "declined": "Annulée par client",
      "declined-cancelled": "Annulée suite à relance"
    },
    "confirmation": {
      "title": "Confirmation client",
      "channel": "Canal",
      "sent-at": "Envoyé le",
      "confirmed-at": "Confirmé le",
      "people-confirmed": "Personnes confirmées",
      "initially": "initialement {count}",
      "last-sent": "Dernière relance envoyée le",
      "via": "via",
      "reminders-count": "Nombre de relances : {count}"
    },
    "actions": {
      "create": "Créer une réservation",
      "completed": "Terminé",
      "absent": "Absent",
      "send-confirmation": "Envoyer une relance",
      "send-confirmation-via": "Envoyer une relance par {channel}",
      "resend-confirmation": "Renvoyer une relance",
      "resend-confirmation-via": "Renvoyer une relance par {channel}",
      "send-message": "Envoyer un message",
      "promote": "Passer en confirmation",
      "confirm": "Réservé",
      "validate-restaurant-approval": "Valider la demande",
      "set-pending": "En attente",
      "change-status": "Changer le statut",
      "show-detail-panel": "Afficher le panneau de détail",
      "hide-detail-panel": "Masquer le panneau de détail",
      "show-floor-plan": "Afficher le plan de salle",
      "hide-floor-plan": "Masquer le plan de salle",
      "call": "Appeler",
      "sms": "SMS",
      "seat": "Installer les clients",
      "lock-tables-error": "Impossible de modifier le verrouillage. Réessayez.",
      "show-timeline": "Afficher la timeline des tables",
      "hide-timeline": "Masquer la timeline des tables",
      "open-details": "Voir la fiche",
      "message": "Message",
      "show-table-mode": "Filtrer la liste par table",
      "hide-table-mode": "Quitter le mode Par table"
    },
    "pickers": {
      "time-title": "Changer l'heure",
      "date-title": "Changer la date",
      "guests-title": "Couverts",
      "guests-out-of-range": "Hors de la plage autorisée dans vos réglages ({min} à {max} couverts).",
      "guests-prompt-title": "Combien de couverts ?",
      "guests-prompt-description": "Indiquez la taille du groupe pour cette réservation.",
      "table-title": "Assigner une table",
      "quick-presets": "Suggestions"
    },
    "activity": {
      "title": "Historique",
      "error": "Impossible de charger l’historique de la réservation",
      "empty": "Aucun historique pour cette réservation",
      "see-more": "Voir plus",
      "unknown-date": "Date inconnue",
      "unknown-time": "Heure inconnue",
      "actions": {
        "created": "Réservation créée",
        "updated": "Réservation modifiée",
        "status-changed": "Statut de la réservation modifié"
      },
      "actors": {
        "customer": "Client",
        "system": "Système",
        "unknown-staff": "Membre de l’équipe inconnu"
      },
      "fields": {
        "status": "Statut",
        "reservation-date": "Date et heure",
        "party-size": "Nombre de personnes",
        "name": "Nom",
        "email": "E-mail",
        "phone-number": "Téléphone",
        "note": "Note",
        "internal-note": "Note interne",
        "ends-at": "Heure de fin"
      },
      "values": {
        "empty": "Non renseigné",
        "party-size": "{count, plural, one {# personne} other {# personnes}}"
      }
    },
    "message": {
      "last-sent": "Dernier message envoyé le"
    },
    "status": {
      "reserved": "Confirmé",
      "pending-confirmation": "À confirmer",
      "pending-restaurant-approval": "En attente restaurant",
      "cancelled": "Annulée",
      "canceled": "Annulée",
      "completed": "Terminée",
      "absent": "Absente",
      "waitlisted": "Liste d'attente",
      "confirmed": "Confirmé",
      "seated": "Assise"
    },
    "status-labels": {
      "title": "Noms des statuts",
      "description": "Choisissez le mot affiché à l'équipe pour chaque statut de réservation.",
      "fields": {
        "reserved": "Réservation acceptée",
        "seated": "Clients à table",
        "completed": "Repas terminé",
        "absent": "Client non venu"
      },
      "options": {
        "reserved": "Réservé",
        "installed": "Installé",
        "left": "Parti",
        "no-show": "Non présent"
      }
    },
    "agenda": {
      "empty": "Aucune réservation à venir"
    },
    "view-modes": {
      "weekly": "Vue journalière",
      "monthly": "Vue mensuelle",
      "slots": "Vue créneaux",
      "floor-plan": "Plan de salle",
      "agenda": "Vue agenda"
    },
    "floor-plan-settings": {
      "sections": {
        "composition": "Composition",
        "assignment-priority": "Priorité d'assignation",
        "display": "Affichage du plan",
        "rooms": "Salles",
        "room-settings": "Réglages de la salle",
        "services": "Services",
        "combinations": "Groupements de tables"
      },
      "composition": {
        "width": "Largeur (colonnes)",
        "height": "Longueur (lignes)",
        "decrease-width": "Réduire la largeur",
        "increase-width": "Augmenter la largeur",
        "decrease-height": "Réduire la longueur",
        "increase-height": "Augmenter la longueur",
        "hint": "Le plan se redimensionne automatiquement pour rester visible.",
        "save": "Enregistrer",
        "unsaved-changes": "Modifications non sauvegardées"
      },
      "coming-soon": {
        "title": "Bientôt disponible",
        "description": "Cette section arrive dans une prochaine version. En attendant, vous pouvez configurer la composition de votre plan de salle."
      }
    },
    "floor-plan": {
      "title": "Plan de salle",
      "mobile-view": {
        "list": "Liste",
        "plan": "Plan"
      },
      "canvas": {
        "empty": "Aucune table configurée. Allez dans Paramètres pour créer votre plan de salle.",
        "empty-title": "Aucune table configurée",
        "empty-description": "Créez votre plan de salle pour pouvoir assigner les réservations.",
        "empty-cta": "Configurer le plan",
        "assigning-label": "Sélection de table pour",
        "help-drag": "Glissez une réservation sur une table pour l'assigner.",
        "reservation-not-found": "Réservation introuvable, veuillez rafraîchir la page avant de réessayer.",
        "reset-zoom": "Réinitialiser le zoom"
      },
      "display": {
        "title": "Affichage du plan",
        "description": "Couleurs, taille du texte et repères du plan de salle des réservations, pour tout le restaurant.",
        "preview": "Aperçu",
        "preview-caption": "Exemple à {time}, réservations simulées",
        "presets": "Préréglage",
        "preset": {
          "night": "Nuit",
          "light": "Clair",
          "classic": "Classique"
        },
        "colors": {
          "background": "Fond",
          "table": "Tables",
          "table-text": "Numéros",
          "walls": "Murs et décor"
        },
        "low-contrast": "Les numéros seront peu lisibles sur cette couleur de table.",
        "text-size": "Taille du texte",
        "size": {
          "small": "Petit",
          "medium": "Moyen",
          "large": "Grand"
        },
        "number-position": "Position du numéro",
        "number-position-description": "Où s'affiche le numéro des tables libres. Une table occupée le porte toujours en haut.",
        "number-positions": {
          "center": "Au milieu",
          "top": "En haut"
        },
        "mark-style": "Repères des disponibilités",
        "mark-style-description": "Ce que la lecture « Dispos » affiche dans chaque table.",
        "mark-styles": {
          "icon": "Icône et heure",
          "text": "Texte",
          "compact": "Icône seule"
        },
        "dispo-view": "Lecture des dispos",
        "dispo-view-description": "Une disponibilité pour la journée, ou la frise de chaque table, service par service.",
        "dispo-views": {
          "day": "Journée",
          "band": "Frise de la journée"
        }
      },
      "stats": {
        "free-tables": "tables libres",
        "free-tables-count": "{free}/{active} tables libres",
        "guests": "couverts",
        "unassigned": "à placer",
        "next-arrival": "Prochain"
      },
      "header": {
        "all-slots": "Tous",
        "more-slots": "Voir tous les créneaux",
        "late-count": "{count, plural, one {# réservation en retard} other {# réservations en retard}}",
        "free-now": "Couverts libres maintenant",
        "free-now-count": "{free}/{capacity} couverts libres maintenant"
      },
      "slot-sheet": {
        "title": "Filtrer par créneau"
      },
      "tooltip": {
        "header": "{name} · {min}-{max} pers.",
        "no-reservations": "Aucune réservation sur cette table."
      },
      "actions-popover": {
        "header": "{name} · {min}-{max} pers.",
        "new-reservation": "Nouvelle réservation",
        "assigned-section": "Réservations sur cette table",
        "inactive-section": "Table inactive",
        "unassign": "Retirer {name} de cette table",
        "unassign-hint": "Cliquez sur ✕ pour désassigner une réservation.",
        "install": "Installer des clients"
      },
      "table": {
        "guests-aria": "Table {name}, {min} à {max} couverts",
        "guests-inactive-aria": "Table {name}, {min} à {max} couverts, inactive",
        "occupant-aria": "{guest}, {covers} couverts à {time}",
        "count-upcoming-aria": "{count, plural, =1 {# réservation à venir} other {# réservations à venir}}",
        "overlap-aria": "prise par {guest} ({covers} couverts), chevauche {minutes} min",
        "near-aria": "réservée par {guest} ({covers} couverts), sans chevauchement"
      },
      "sidebar": {
        "empty": "Aucune réservation pour cette date.",
        "error-title": "Impossible de charger les réservations",
        "assign": "Assigner",
        "assigning": "En cours…",
        "assign-aria": "Assigner une table à {name}",
        "call-aria": "Appeler",
        "email-aria": "Envoyer un email",
        "capacity-stat": "{guests}/{capacity}",
        "tables-stat": "{count} tables"
      },
      "empty-table": {
        "title": "Table {name}",
        "note-reservation": "Noter une réservation",
        "new-reservation": "Nouvelle réservation"
      },
      "assignment": {
        "title": "Assignation de table",
        "party-size": "{count, plural, =1 {1 couvert} other {# couverts}}",
        "helper": "{count, plural, =0 {Sélectionnez une table sur le plan} one {1 table sélectionnée} other {# tables sélectionnées}}",
        "remaining-guests": "Plus que {count, plural, =1 {1 couvert} other {# couverts}} à placer",
        "ready": "Capacité suffisante. Vous pouvez valider.",
        "validate": "Valider",
        "cancel": "Annuler",
        "close-aria": "Fermer",
        "choose-tables": "Choisissez des tables",
        "capacity": "{seats} / {covers}",
        "missing": "manque {count}",
        "enough": "suffisant",
        "taken": "{count, plural, one {# table prise} other {# tables prises}}",
        "remove-table": "Retirer {table} du placement",
        "kept-table": "Table gardée",
        "region": "Placement de {name}",
        "overlap-until": "→ {time}",
        "overlap-from": "dès {time}",
        "switch-title": "Abandonner le placement de {name} ?",
        "switch-description": "Les tables choisies pour {name} ne sont pas enregistrées.",
        "switch-keep": "Continuer avec {name}",
        "switch-confirm": "Placer {name}",
        "suggesting": "Recherche des meilleures tables…",
        "no-suggestion": "Aucune table proposée automatiquement : choisissez-la sur le plan.",
        "exit": "Quitter le placement",
        "remove-tables": "Retirer les tables",
        "tables-removed": "Tables retirées pour {name}"
      },
      "add-sheet": {
        "title": "Nouvel article",
        "description": "Choisissez un élément à ajouter à votre plan de salle.",
        "add-table-title": "Ajouter une table"
      },
      "editor": {
        "rotation": {
          "label": "Rotation",
          "left-aria": "Tourner à gauche de 15°",
          "right-aria": "Tourner à droite de 15°"
        }
      },
      "conflict-dialog": {
        "title": "Conflit d'horaire détecté",
        "description": "Cette table a déjà des réservations sur un créneau proche. Voulez-vous quand même continuer ?",
        "confirm": "Continuer quand même",
        "cancel": "Annuler",
        "cancelled": "Modification annulée",
        "existing-reservation": "Réservation existante",
        "at-time": "à {time}",
        "capacity-title": "Capacité insuffisante",
        "mixed-title": "À vérifier avant de placer",
        "capacity-description": "Les tables choisies n’ont pas assez de places. Vous pouvez placer quand même ou ajouter une table.",
        "missing-covers": "{count, plural, one {Il manque # couvert} other {Il manque # couverts}}",
        "overlap": "chevauche {minutes} min"
      },
      "room-select": {
        "label": "Salle affichée"
      },
      "card": {
        "covers-short": "{count}p",
        "covers-range": "{min}-{max}p"
      },
      "unplaced": {
        "title": "À placer",
        "empty": "Toutes les réservations ont une table."
      },
      "view": {
        "label": "Affichage du plan",
        "plan": "Plan",
        "timeline": "Timeline",
        "table": "Par table"
      },
      "timeline": {
        "empty": "Aucune réservation sur ce service : toutes les tables sont libres.",
        "free": "Libre",
        "free-now": "maintenant",
        "free-from": "dès {time}",
        "lost": "perdues",
        "guests-short": "{count} p.",
        "pending": "à confirmer",
        "conflict": "{minutes} min de trop",
        "with-tables": "+ {tables}",
        "full": "pleine",
        "closed": "Fermé · {from} – {to}",
        "expand-table": "Déplier {table}",
        "collapse-table": "Replier {table}",
        "axis-arrivals": "+ arrivent",
        "axis-in-room": "en salle /{capacity}",
        "free-slots": "Places libres",
        "no-free-slots": "Plus de place libre",
        "in-room": "En salle",
        "block-label": "{name}, {count, plural, one {# personne} other {# personnes}}, {start} à {end}, tables {tables}",
        "summary": {
          "now": "Maintenant",
          "peak": "pic {count} vers {time}",
          "arriving": "Arrivent",
          "to-optimize": "À optimiser",
          "lost-item": "{table} : {duration} perdues à partir de {time}",
          "to-fix": "À régler",
          "conflict-item": "{table} : {name} arrive {minutes} min avant le départ de {previous}",
          "nothing-to-optimize": "Rien à optimiser",
          "nothing-to-fix": "Rien à régler"
        },
        "past": "terminée",
        "conflict-short": "conflit",
        "free-zones": "Zones libres",
        "show-free-zones": "Afficher les créneaux où chaque table est libre",
        "hide-free-zones": "Revenir aux réservations",
        "zoom": "Zoom de la timeline",
        "zoom-in": "Zoomer",
        "zoom-out": "Dézoomer",
        "zoom-reset": "Revenir à 100 %",
        "zoom-fit": "Tout voir sur l’écran",
        "create-ghost": "+ {time} · {duration}",
        "create-label": "Ajouter des clients sur {table} dès {time}",
        "resize-end": "Tirer pour changer l'heure de fin",
        "late": "en retard"
      },
      "scope": {
        "show-past": "{count, plural, =0 {Voir toutes les réservations} one {Voir toutes les réservations (1 passée)} other {Voir toutes les réservations (# passées)}}",
        "hide-past": "Masquer les réservations passées"
      },
      "walk-in": {
        "guests": "Couverts",
        "arrival": "Arrivée",
        "duration": "Durée",
        "free-from": "Libre dès {time}",
        "name": "Nom",
        "default-name": "Sans réservation",
        "submit": "Installer",
        "too-late": "Arrivée plus tardive : utilisez « Nouvelle réservation ».",
        "too-early": "Arrivée trop ancienne : vérifiez l'heure.",
        "now": "Maintenant",
        "edit": "Modifier",
        "less": "Réduire",
        "overlap": "{duration} dépasse : départ avant {time} pour {name} ({next})",
        "stay": "Libre {duration} · départ avant {time}",
        "shorten": "Raccourcir à {duration}",
        "too-small": "{table} seule est trop petite pour {count}",
        "suggestions": "Tables proposées",
        "no-suggestion": "Aucune table pour {count} couverts : ajoutez des regroupements dans Tables.",
        "free-at": "Libre à {time}"
      },
      "lens": {
        "label": "Lecture du plan",
        "service": "Service",
        "service-hint": "Les réservations du service sur chaque table",
        "dispos": "Dispos",
        "dispos-hint": "Où installer un client, maintenant ou plus tard"
      },
      "seating": {
        "remaining": "Reste {duration}",
        "over": "+{duration}"
      },
      "marks": {
        "free": "Libre",
        "later": "Dès {time}",
        "full": "Complète",
        "until": "Libre jusqu'à {time}",
        "until-short": "Jusqu'à {time}",
        "seated": "Clients installés, départ prévu à {time}",
        "seated-short": "Départ {time}",
        "booked": "Réservée, arrivée prévue à {time}",
        "booked-short": "Arrivée {time}",
        "late": "En retard : attendus à {time}",
        "late-short": "Retard {time}"
      },
      "services": {
        "periods": {
          "morning": "Matin",
          "lunch": "Midi",
          "dinner": "Soir"
        },
        "past": "Terminé",
        "guest-named": "{name} · {covers}p · {duration}"
      },
      "dispo-stats": {
        "free": "{count, plural, =0 {Aucune table libre maintenant} one {# table libre maintenant} other {# tables libres maintenant}}",
        "later": "{count, plural, =0 {Aucune table libre plus tard} one {# table libre plus tard} other {# tables libres plus tard}}",
        "full": "{count, plural, =0 {Aucune table complète} one {# table complète jusqu'à la fin du service} other {# tables complètes jusqu'à la fin du service}}"
      },
      "service-stats": {
        "free": "{count, plural, =0 {Aucune table libre} one {# table libre} other {# tables libres}}",
        "booked": "{count, plural, =0 {Aucune table réservée en attente} one {# table réservée, clients attendus} other {# tables réservées, clients attendus}}",
        "late": "{count, plural, =0 {Aucun retard} one {# table en retard, clients absents} other {# tables en retard, clients absents}}",
        "seated": "{count, plural, =0 {Aucune table occupée} one {# table occupée} other {# tables occupées}}"
      }
    },
    "grouping-modes": {
      "title": "Mise en page",
      "list": "Liste",
      "session": "Session",
      "hour": "Heure",
      "slot": "Créneau"
    },
    "grouping": {
      "out-of-hours": "Hors horaires"
    },
    "monthly": {
      "previous-year": "Année précédente",
      "next-year": "Année suivante",
      "previous-month": "Mois précédent",
      "next-month": "Mois suivant",
      "shifts": {
        "range-label": "{start}-{end}h",
        "count-only": "{count} pers.",
        "morning": "Matin",
        "lunch": "Midi",
        "dinner": "Soir"
      }
    },
    "status-legend": {
      "total": "Total",
      "completed": "Terminé",
      "reserved": "Confirmé",
      "canceled": "Annulé",
      "absent": "Absent",
      "people": "Personnes"
    },
    "filters": {
      "search-placeholder": "Rechercher par nom...",
      "status-placeholder": "Statut",
      "all": "Tous",
      "pending": "En attente",
      "reserved": "Confirmé",
      "cancelled": "Annulé",
      "completed": "Terminé",
      "absent": "Absent",
      "waitlisted": "Liste d'attente"
    },
    "day-summary": {
      "total-reservations": "Réservations",
      "total-covers": "Couverts",
      "status-breakdown": "Répartition par statut",
      "upcoming-arrivals": "Prochaines arrivées",
      "no-upcoming": "Aucune arrivée à venir",
      "covers-short": "{count} couv."
    },
    "channel-labels": {
      "email": "Email",
      "sms": "SMS",
      "phone": "Téléphone"
    },
    "slot-closed-reason": {
      "session": "Session fermée",
      "disabled": "Créneau désactivé"
    },
    "fields": {
      "date": "Date",
      "time": "Heure",
      "select-time": "Sélectionner l'heure",
      "select-date-first": "Sélectionnez d'abord une date",
      "loading-slots": "Chargement des créneaux...",
      "no-slots-available": "Aucun créneau disponible",
      "name": "Nom",
      "email": "Email",
      "phone": "Téléphone",
      "nb-clients": "Nombre de personnes",
      "note": "Note client",
      "internal-note": "Note interne",
      "accepts-marketing-sms": "Accepte les SMS marketing",
      "existing-customer": "Client existant",
      "name-placeholder": "Nom du client...",
      "email-placeholder": "email@example.com",
      "phone-placeholder": "+33 6 12 34 56 78",
      "note-placeholder": "Demandes spéciales du client...",
      "internal-note-placeholder": "Note visible uniquement par l'équipe...",
      "preferred-room": "Salle souhaitée",
      "no-room-preference": "Sans préférence de salle",
      "room-load-error": "Impossible de charger les salles"
    },
    "export": {
      "button": "Exporter",
      "format-label": "Format",
      "format-pdf": "PDF",
      "format-pdf-description": "Document imprimable avec en-tête Suzzy",
      "format-excel": "Excel",
      "format-excel-description": "Tableur avec colonnes ajustées",
      "title": "Exporter les réservations",
      "description": "Sélectionnez les colonnes à inclure",
      "columns-label": "Colonnes",
      "select-all": "Tout sélectionner",
      "deselect-all": "Tout désélectionner",
      "widths-label": "Largeurs des colonnes",
      "reset-widths": "Réinitialiser",
      "empty-notes-column": "Vide",
      "pdf-title": "Réservations - {date}",
      "pdf-subtitle": "{count, plural, =1 {# réservation} other {# réservations}}",
      "reservation-count": "{count, plural, =1 {# réservation} other {# réservations}}",
      "covers-count": "{count, plural, =1 {# couvert} other {# couverts}}",
      "preview": {
        "title": "Aperçu",
        "no-columns": "Sélectionnez des colonnes pour voir l'aperçu",
        "more-rows": "+{count} autres réservations",
        "column-count": "{count, plural, =1 {# col.} other {# cols.}}"
      },
      "toast": {
        "no-reservations": "Aucune réservation à exporter",
        "no-columns": "Veuillez sélectionner au moins une colonne",
        "exporting": "Export en cours...",
        "success": "{count, plural, =1 {# réservation exportée} other {# réservations exportées}}",
        "error": "Impossible d'exporter le fichier"
      },
      "sort-fields": {
        "created-at": "Date de création"
      },
      "truncation-warning": "Plus de {max} réservations pour cette journée — seules les {max} premières seront exportées."
    },
    "settings": {
      "steps": {
        "hours": {
          "title": "Horaires",
          "description": "Quand vos clients peuvent réserver",
          "disabled": "Réservations suspendues aujourd’hui",
          "loading": "Chargement des horaires",
          "error": "Horaires indisponibles",
          "own": "Horaires de réservation propres",
          "inherited": "Suit les horaires d’ouverture",
          "none": "Aucun horaire défini"
        },
        "groups": {
          "title": "Taille des groupes",
          "description": "Les groupes acceptés en ligne et leurs seuils",
          "summary": "{min}–{max} pers."
        },
        "availability": {
          "title": "Disponibilité et durée des repas",
          "description": "Comment les places libres sont calculées",
          "summary": "{mode} · {minutes} min",
          "summary-seats": "{mode} · {count} couverts",
          "summary-persons": "{mode} · {count} pers."
        },
        "placement": {
          "title": "Placement des tables",
          "description": "Attribution automatique et choix de la salle",
          "automatic": "Attribution automatique activée",
          "manual": "Attribution manuelle",
          "room-choice": "choix de salle"
        },
        "conditions": {
          "title": "Demandes et conditions",
          "description": "Validation, liste d’attente, vérification et empreinte bancaire",
          "waitlist": "Liste d’attente",
          "online-cutoff": "Fermeture en ligne au début du service",
          "min-booking-lead": "Délai minimum de réservation",
          "service-rules": "Règles par service",
          "sms": "Code SMS",
          "email": "Code email",
          "none": "Aucune condition supplémentaire",
          "approval": "Validation {count}+"
        },
        "changes": {
          "title": "Modification et annulation",
          "description": "Délai d’action du client et annulation gratuite",
          "deadline": "Jusqu’à {minutes} min avant",
          "unrestricted": "Modification sans limite",
          "free-cancellation": "annulation gratuite jusqu’à {days, plural, one {# jour} other {# jours}} avant"
        },
        "visibility": {
          "title": "Visibilité en ligne",
          "description": "Google, places restantes et messages affichés",
          "google-on": "Google activé",
          "google-off": "Google désactivé",
          "places-on": "places visibles",
          "places-off": "places masquées",
          "messages-on": "messages activés"
        }
      },
      "group-overview": {
        "title": "Effet des seuils par taille de groupe",
        "description": "Chaque ligne indique ce qui s’applique à cette taille de groupe.",
        "online": "Réservable en ligne",
        "approval": "Validation",
        "guarantee": "Empreinte bancaire",
        "reminder": "Rappel de confirmation",
        "visit-reminder": "Rappel de visite",
        "meal": "Durée de repas adaptée",
        "unreachable": "Hors plage",
        "all": "Tous"
      },
      "hours": {
        "title": "Horaires d'ouverture",
        "description": "Définissez vos services, y compris ceux qui se terminent le lendemain",
        "configure": "Configurer les horaires",
        "manage": "Gérer"
      },
      "capacity": {
        "title": "Taille des groupes",
        "description": "Définissez les groupes que les clients peuvent réserver en ligne",
        "range-label": "Groupes acceptés",
        "range-description": "Tailles de groupe que vos clients peuvent réserver en ligne. Votre équipe peut toujours noter d'autres tailles.",
        "range-summary": "Accepter les réservations de {min} à {max} personnes",
        "min-people": "Minimum de personnes",
        "max-people": "Maximum de personnes",
        "suffix": "pers.",
        "plan-range": "Votre plan accueille des groupes de {min} à {max} personnes",
        "plan-range-help": "Avec « Selon les tables », ces bornes sont calculées depuis les tables et combinaisons réservables en ligne. Modifiez le plan de salle pour les changer.",
        "plan-range-empty-title": "Aucune table du plan n'est réservable en ligne",
        "plan-range-empty": "Avec « Selon les tables du plan », aucun créneau ne s'ouvrira tant qu'une table n'est pas active et réservable en ligne."
      },
      "slot-capacity-overrides": {
        "label": "Capacité exceptionnelle pour une date",
        "description": "Remplace la capacité habituelle pour toute la date, selon la méthode de calcul choisie",
        "empty": "Aucune exception configurée",
        "add": "Ajouter une exception",
        "add-title": "Ajouter une capacité exceptionnelle",
        "add-description": "Définissez la capacité maximale pour toute une date. En mode quota par service, elle s'applique à chaque service de cette date.",
        "date-label": "Date",
        "max-persons-per-slot-label": "Capacité maximale ce jour-là",
        "duplicate-date": "Une exception existe déjà pour cette date"
      },
      "slots": {
        "title": "Disponibilité et capacité",
        "description": "Choisissez les heures proposées et la façon dont les places disponibles sont calculées",
        "duration": "Fréquence des heures proposées",
        "duration-description": "Par exemple, toutes les 30 minutes : 12 h 00, 12 h 30, 13 h 00…",
        "capacity": "Limite à chaque heure proposée",
        "capacity-description": "Nombre maximum de personnes pouvant réserver la même heure d'arrivée",
        "show-remaining": "Afficher les places restantes",
        "show-remaining-description": "Les clients verront le nombre de places disponibles par créneau",
        "overnight-shifts": "Services après minuit",
        "overnight-shifts-description": "Autoriser un service à se terminer le jour suivant",
        "capacity-mode": "Comment limiter les réservations ?",
        "capacity-mode-description": "Une seule méthode est appliquée à la fois. Choisissez celle qui correspond à votre fonctionnement.",
        "mode-settings-title": "Réglages de la méthode choisie",
        "per-slot": "À chaque heure proposée",
        "per-session": "Quota total par service",
        "max-per-session": "Quota par service",
        "max-per-session-description": "Nombre maximum de personnes sur un même service, par exemple le midi ou le soir",
        "per-room": "Selon l'occupation de la salle (recommandé)",
        "per-room-description": "Indiquez la capacité de votre salle et la durée moyenne d'un repas — les places se libèrent au rythme des départs",
        "per-slot-description": "Limite fixe pour chaque heure d'arrivée proposée, sans tenir compte de la durée des repas",
        "per-session-description": "Quota partagé par toutes les heures d'arrivée d'un même service",
        "room-capacity": "Capacité de la salle",
        "room-capacity-description": "Nombre de couverts disponibles en même temps dans votre établissement",
        "room-capacity-suffix": "couverts",
        "meal-duration": "Durée moyenne d'un repas",
        "meal-duration-description": "Une réservation occupe la salle pendant cette durée ; la disponibilité des créneaux suivants en tient compte",
        "meal-duration-description-plan": "Durée pendant laquelle une table reste occupée sur le plan de salle. Dans ce mode, elle ne limite pas les réservations en ligne.",
        "meal-duration-description-tables": "Une réservation occupe sa table pendant cette durée ; un créneau n'ouvre que si une table reste libre tout ce temps.",
        "floor-plan": "Plan de salle",
        "floor-plan-description": "La capacité ci-dessus pilote les disponibilités ; le plan de salle sert à organiser et attribuer les tables.",
        "floor-plan-action": "Gérer le plan de salle",
        "max-arrivals": "Limite d'arrivées par créneau",
        "max-arrivals-description": "Optionnel : limite le nombre de personnes qui arrivent sur un même créneau pour protéger la cuisine",
        "per-tables": "Selon les tables du plan",
        "per-tables-description": "Un créneau reste ouvert tant qu'une table libre, ou un groupement autorisé, peut accueillir le groupe pendant toute la durée du repas",
        "room-capacity-from-plan": "Calculée depuis le plan : {seats} places sur {tables} tables actives. Chaque créneau est vérifié table par table.",
        "floor-plan-description-tables": "Les tables actives du plan décident des créneaux ouverts en ligne ; le plan sert aussi à attribuer les tables."
      },
      "meal-duration-section": {
        "title": "Durée des repas",
        "description": "Combien de temps une table reste occupée, puis la pause avant le groupe suivant."
      },
      "waiting-list": {
        "title": "Liste d'attente",
        "description": "Gestion de la liste d'attente pour les réservations",
        "enable": "Liste d'attente lorsque complet",
        "enable-description": "Si une heure n'a plus assez de places, le client peut envoyer une demande en liste d'attente. Aucun temps d'attente estimé n'est affiché."
      },
      "online-cutoff": {
        "enable": "Fermer la réservation en ligne pendant le service",
        "enable-description": "Dès le début d'un service, les clients ne peuvent plus le réserver en ligne. Votre équipe peut toujours ajouter des réservations.",
        "delay": "Fermer avant le début du service",
        "delay-description": "0 = à l'heure de début du service."
      },
      "min-booking-lead": {
        "label": "Délai minimum de réservation",
        "description": "En ligne et sur Google, il faut réserver au moins ce temps avant l'heure choisie (0 = aucun). Votre équipe n'est pas concernée."
      },
      "service-rules": {
        "title": "Règles par service",
        "description": "Chaque plage de vos horaires de réservation est un service. « Par défaut » suit les réglages ci-dessus. Votre équipe n'est jamais bloquée.",
        "hours": "{start} – {end}",
        "every-day": "Tous les jours",
        "online": "En ligne",
        "online-label": "Réservable en ligne, {hours}",
        "close-label": "Fermeture au début, {hours}",
        "close-default": "Fermeture : par défaut",
        "close-on": "Ferme en ligne au début",
        "close-off": "Ne ferme pas au début",
        "lead-label": "Délai minimum, {hours}",
        "lead-default": "Délai : par défaut",
        "lead-none": "Délai : aucun",
        "lead-minutes": "Délai : {minutes} min",
        "lead-hours": "Délai : {hours} h",
        "loading": "Chargement des services…",
        "error": "Impossible de charger les horaires de réservation.",
        "empty": "Aucun horaire de réservation : ajoutez vos horaires pour régler chaque service."
      },
      "request-management": {
        "title": "Gestion des demandes",
        "description": "Décidez quelles réservations doivent être approuvées et ce qui se passe lorsqu'un horaire est complet"
      },
      "restaurant-approval": {
        "title": "Demandes à approuver",
        "description": "Demander une validation interne avant de confirmer certaines réservations",
        "enable": "Demander une approbation pour les grands groupes",
        "enable-description": "Les demandes concernées restent en attente jusqu'à ce que votre équipe les accepte ou les refuse.",
        "min-party-size": "Approbation à partir de",
        "min-party-size-description": "Nombre de personnes à partir duquel la réservation n'est plus confirmée automatiquement"
      },
      "alerts": {
        "title": "Messages d'alerte",
        "description": "Messages affichés aux clients lors de la réservation"
      },
      "notifications": {
        "title": "Notifications de réservation",
        "description": "Configurez les messages envoyés à chaque étape du parcours client",
        "email-always-sent": "Email toujours envoyé",
        "sms-toggle": "Envoyer un SMS",
        "default-template": "Message par défaut",
        "custom-message": "Message personnalisé (optionnel)",
        "custom-message-placeholder": "Personnalisez votre message...",
        "link-always-included": "Le lien de réservation est toujours ajouté automatiquement",
        "gsm-warning": "Votre message contient des caractères spéciaux (ex : ê, ç, î) qui doublent le coût des SMS. Pensez à les remplacer par des équivalents sans accents.",
        "variables-title": "Variables disponibles",
        "preview": "Aperçu",
        "variables": {
          "customer-name": "Nom du client",
          "date": "Date de la réservation (ex: 15/04)",
          "time": "Heure de la réservation (ex: 19:30)",
          "nb-clients": "Nombre de personnes",
          "shop-name": "Nom du restaurant",
          "reservation-link": "Lien vers la réservation"
        },
        "step-1": {
          "title": "Confirmation",
          "description": "Envoyé immédiatement à la création de la réservation"
        },
        "step-2": {
          "title": "Demande de confirmation",
          "description": "Le client doit confirmer sa réservation. Sans réponse, elle reste à confirmer.",
          "enable": "Activer le rappel de confirmation",
          "enable-description": "Le client devra confirmer sa réservation",
          "min-party-size": "Confirmation à partir de",
          "min-party-size-suffix": "personnes",
          "reminders-title": "Rappels",
          "add-reminder": "Ajouter un rappel",
          "remove-reminder": "Supprimer",
          "no-reminders": "Aucun rappel configuré",
          "show-pre-booking-message": "Afficher un message avant la réservation"
        },
        "step-3": {
          "title": "Annulation",
          "description": "Envoyé quand une réservation est annulée"
        },
        "visit-reminder": {
          "title": "Rappel avant la visite",
          "description": "Un email rappelle sa réservation au client avant sa venue, sans lui demander de confirmer.",
          "delay": "Envoyer avant la réservation",
          "add-reminder": "Ajouter un rappel",
          "remove-reminder": "Supprimer le rappel",
          "min-party-size": "Rappel à partir de"
        },
        "journey": {
          "title": "Parcours du client",
          "step-title": "Quand ça part",
          "branches": "Seulement si…",
          "arrival": "Arrivée",
          "disabled": "Désactivé",
          "marked-absent": "Marqué absent",
          "party-size": "dès {count} pers.",
          "collision": "Plusieurs messages partent au même moment ({moment}) : le client les reçoit ensemble.",
          "arrival-hint": "L'heure réservée par le client. Chaque message part avant ou après elle.",
          "channel": {
            "email": "email",
            "sms": "SMS"
          },
          "duration": {
            "days": "{count, plural, one {# jour} other {# jours}}",
            "hours": "{count} h",
            "minutes": "{count} min"
          },
          "moment": {
            "booking": "À la réservation",
            "arrival": "Heure réservée",
            "cancellation": "Si annulée",
            "before-unset": "Avant l'arrivée",
            "after-unset": "Après l'arrivée",
            "before": "{duration} avant",
            "after": "{duration} après",
            "immediately-after": "Juste après"
          },
          "branch": {
            "cancellation": "Si la réservation est annulée",
            "no-show": "Si le client n'est pas là {duration} après l'heure"
          },
          "summary": {
            "restaurant-approval": "Envoyé par {channels} quand la demande attend votre validation, puis quand vous l'acceptez ou la refusez.",
            "confirmation": "Envoyé par {channels} dès que la réservation est créée.",
            "confirmation-reminder": "Envoyé par {channels} {delays} avant l'heure réservée. Le client doit confirmer ; sans réponse, la réservation reste à confirmer.",
            "visit-reminder": "Envoyé par {channels} {delays} avant l'heure réservée, pour rappeler la réservation sans demander de confirmation.",
            "review-request": "Envoyé par {channels} {delays} après l'heure réservée pour demander un avis.",
            "cancellation": "Envoyé par {channels} dès que la réservation est annulée, par le client ou par vous.",
            "no-show": "Si le client n'est pas arrivé {delays} après l'heure réservée, la réservation passe en absent et il reçoit un message par {channels}.",
            "no-channel": "Aucun canal activé : rien n'est envoyé.",
            "disabled": "Désactivé pour l'instant. Une fois activé :",
            "party-size": "Seulement pour les groupes de {count} personnes et plus."
          }
        },
        "step-4": {
          "title": "Absent (No-show)",
          "description": "Marquer automatiquement absent après la réservation",
          "enable": "Activer le marquage automatique",
          "enable-description": "Le client sera marqué absent automatiquement après le délai",
          "delay": "Délai après l'heure de réservation",
          "delay-suffix": "min"
        },
        "step-5": {
          "title": "Demander un avis par email",
          "description": "Un email est envoyé automatiquement 24 h après la réservation pour demander un avis au client.",
          "enable": "Demander un avis par email",
          "enable-description": "Un email est envoyé automatiquement 24 h après la réservation pour demander un avis au client.",
          "delay": "Délai d'envoi (minutes)",
          "delay-hint": "1440 min = 24 h"
        },
        "restaurant-approval": {
          "title": "Validation restaurant",
          "description": "Notifications envoyées quand une réservation attend une validation interne",
          "disabled": "Activez la validation restaurant dans l'onglet configuration pour utiliser ces notifications.",
          "request-received": {
            "title": "Demande reçue",
            "description": "Envoyé au client quand sa demande est transmise au restaurant"
          },
          "approved": {
            "title": "Demande validée",
            "description": "Envoyé au client quand le restaurant valide la demande"
          },
          "declined": {
            "title": "Demande annulée",
            "description": "Utilisez la notification d’annulation standard si la demande est annulée"
          }
        },
        "default-templates": {
          "confirmation": "Réservation confirmée chez '{{shopName}}' le '{{date}}' à '{{time}}' pour '{{nbClients}}' pers.",
          "confirmation-reminder": "Confirmez votre réservation du '{{date}}' à '{{time}}' chez '{{shopName}}' pour '{{nbClients}}' pers.",
          "cancellation": "Votre réservation du '{{date}}' à '{{time}}' chez '{{shopName}}' a été annulée.",
          "no-show": "Vous ne vous êtes pas présenté pour votre réservation du '{{date}}' à '{{time}}' chez '{{shopName}}'.",
          "review-request": "Merci pour votre visite chez '{{shopName}}' ! Donnez-nous votre avis. '{{reservationLink}}'",
          "restaurant-approval-request": "Votre demande de réservation chez '{{shopName}}' le '{{date}}' à '{{time}}' est en attente de validation.",
          "restaurant-approval-approved": "Votre demande de réservation chez '{{shopName}}' le '{{date}}' à '{{time}}' a été validée par le restaurant.",
          "restaurant-approval-declined": "Votre demande de réservation chez '{{shopName}}' le '{{date}}' à '{{time}}' a été annulée.",
          "visit-reminder": "Rappel : votre réservation chez '{{shopName}}' le '{{date}}' à '{{time}}' pour '{{nbClients}}' pers. '{{reservationLink}}'"
        }
      },
      "contact-requirement": {
        "title": "Coordonnées du client",
        "description": "Choisissez les coordonnées nécessaires pour réserver en ligne.",
        "label": "Coordonnées demandées",
        "both": "Email et téléphone",
        "either": "Au moins l’un des deux",
        "email-verification-required": "La vérification par email reste activée : un email est obligatoire, même si un téléphone est renseigné.",
        "sms-verification-required": "La vérification par SMS reste activée : un téléphone est obligatoire, même si un email est renseigné.",
        "notifications-notice": "Sans email, le client reçoit uniquement les messages pour lesquels vous avez activé les SMS dans « Messages aux clients ». Les avis de débit et de remboursement sont envoyés uniquement par email."
      },
      "verification": {
        "title": "Vérification",
        "description": "Vérifier l'identité du client avant la réservation",
        "email": "Vérification par email",
        "email-description": "Envoyer un code de vérification par email",
        "sms": "Vérification par SMS",
        "sms-description": "Envoyer un code de vérification par SMS ({price} HT par SMS)"
      },
      "temporary-disable": {
        "title": "Désactivation temporaire",
        "description": "Suspendre les réservations pour aujourd'hui",
        "disable-today": "Désactiver aujourd'hui",
        "disable-today-description": "Les réservations sont suspendues pour aujourd'hui"
      },
      "tabs": {
        "config": "Configuration",
        "customer-messages": "Messages aux clients",
        "notifications": "Notifications",
        "advanced": "Avancé",
        "floor-plan": "Plan de salle",
        "floor-plan-display": "Affichage du plan",
        "status-labels": "Statuts",
        "event-menus": "Menus événementiels"
      },
      "save": "Enregistrer",
      "saving": "Enregistrement...",
      "customer-deadline": {
        "title": "Délai d'action client",
        "description": "Limite de temps pour les actions client avant la réservation",
        "delay": "Délai de blocage",
        "delay-description": "Délai avant la réservation après lequel le client ne peut plus annuler ou modifier (0 = pas de restriction)"
      },
      "google-reserve": {
        "title": "Réserver via Google",
        "description": "Recevez des réservations directement depuis Google Search et Google Maps",
        "enable": "Activer Réserver via Google",
        "enable-description": "Un Google Place ID doit être renseigné sur la page d'informations de la boutique pour activer cette fonctionnalité",
        "configure-place-id": "Configurer le Place ID",
        "no-place-id-hint": "Renseignez d'abord un Google Place ID dans les informations du commerce."
      },
      "meal-duration-overrides": {
        "label": "Durées par taille de groupe",
        "description": "Les grands groupes restent souvent plus longtemps — ajustez la durée du repas à partir d'une taille donnée",
        "empty": "Aucune règle — la durée moyenne s'applique à tous les groupes",
        "from": "À partir de",
        "persons-eat-for": "personnes, le repas dure",
        "minutes": "minutes",
        "min-party-size-label": "Taille de groupe minimale",
        "duration-label": "Durée du repas (minutes)",
        "add": "Ajouter une règle"
      },
      "placement": {
        "title": "Placement des réservations",
        "room-required": "Salle choisie obligatoire",
        "description": "Activez uniquement les règles utiles à votre restaurant.",
        "explicit": "Créer un plan de salle n’active aucune option. Le contrôle par couverts reste disponible sans attribution de table.",
        "auto-assignment": "Attribution automatique des tables",
        "auto-assignment-help": "Place chaque nouvelle réservation sur une table libre. Si aucune ne convient, la réservation est acceptée et apparaît dans « À placer ».",
        "split-error": "Les groupes séparés nécessitent les combinaisons de tables.",
        "combinations": "Combinaisons de tables",
        "combinations-help": "Utiliser les combinaisons déclarées dans le plan de salle.",
        "split": "Groupes sur tables séparées",
        "split-help": "Proposer deux tables de la même salle avec l’accord explicite du client.",
        "overrides": "Exceptions de disponibilité des tables",
        "overrides-help": "Appliquer les ouvertures et fermetures par table, date et service.",
        "single-table": "Préférer une table unique",
        "single-table-help": "Choisir une table seule avant une combinaison lorsqu’elle convient.",
        "preference-strict": "Respect strict de la préférence de salle",
        "preference-strict-help": "Ne pas placer automatiquement dans une autre salle.",
        "room-choice": "Choix de salle par le client",
        "room-choice-help": "Afficher les salles sélectionnées dans la réservation en ligne.",
        "room-strict": "Garantir la salle choisie",
        "room-strict-help": "Refuser un placement qui ne respecte pas la salle choisie.",
        "seated": "Statut « Assis »",
        "seated-help": "Permettre au personnel de distinguer les clients arrivés et installés.",
        "auto-complete": "Terminer les tables dépassées",
        "auto-complete-help": "Une table assise passe seule en « Terminée » une fois son temps dépassé. Le temps compte depuis l'heure prévue : un client en retard ne gagne pas de minutes. Désactivé, chaque table se termine à la main.",
        "auto-complete-delay": "Délai après la fin prévue",
        "auto-complete-delay-help": "Marge laissée aux clients avant que la table se libère.",
        "notes": "Notes de service",
        "notes-help": "Activer les notes internes par plage de dates.",
        "buffer": "Battement entre deux groupes (minutes)",
        "buffer-help": "Temps réservé au nettoyage avant la prochaine réservation.",
        "rooms": "Salles proposées",
        "rooms-help": "Sélectionnez les salles proposées aux clients. Aucune sélection : toutes les salles actives.",
        "rooms-error": "Impossible de charger les salles. Réessayez avant de modifier leur sélection.",
        "room-order": "Priorité des salles",
        "room-order-help": "Les salles en haut de la liste sont privilégiées pour le placement.",
        "up": "Monter {room}",
        "down": "Descendre {room}",
        "group-tables": "Tables",
        "group-rooms": "Salles",
        "group-service": "En service",
        "requires-combinations": "Activez « Combinaisons de tables » pour régler ceci.",
        "requires-room-choice": "Activez « Choix de salle par le client » pour régler ceci.",
        "requires-auto-complete": "Activez « Terminer les tables dépassées » pour régler ceci.",
        "buffer-label": "Battement entre deux groupes",
        "auto-assignment-required": "Toujours activée avec « Selon les tables »",
        "used-tables": "Remplir d'abord les tables déjà occupées",
        "used-tables-help": "Place une nouvelle réservation sur une table déjà utilisée à une autre heure du service avant d'en ouvrir une nouvelle."
      },
      "toc-label": "Sommaire des réglages",
      "capacity-method": {
        "recommended": "Recommandé",
        "room": {
          "title": "Selon la salle",
          "description": "Les places se libèrent au rythme des départs."
        },
        "per-slot": {
          "title": "Par heure",
          "description": "Même limite à chaque heure d'arrivée."
        },
        "per-session": {
          "title": "Par service",
          "description": "Un quota partagé par tout le service."
        },
        "tables": {
          "title": "Selon les tables",
          "description": "Ouvert tant qu'une table peut accueillir le groupe."
        }
      },
      "special-days": {
        "title": "Jours spéciaux",
        "capacity-dates": "{count, plural, one {# date à capacité ajustée} other {# dates à capacité ajustée}}",
        "none": "Aucun jour spécial à venir",
        "overview": "Fermetures, horaires et capacités par date"
      },
      "potential": {
        "toggle": "Voir le potentiel",
        "description": "Maximum théorique avec les réglages ci-dessus : chaque place occupée à chaque rotation.",
        "covers": "{count, plural, one {# couvert} other {# couverts}}",
        "weekly": "Total par semaine",
        "unavailable": "Aucune table active",
        "empty": "Aucun horaire de réservation configuré."
      }
    },
    "bulk": {
      "selected-count": "{count} sélectionnée(s)",
      "toggle-selection": "Basculer la sélection",
      "toggle-all": "Tout sélectionner",
      "select-all": "Tout",
      "update-status": "Modifier le statut",
      "send-message": "Envoyer un message",
      "clear-selection": "Désélectionner",
      "update-status-title": "Modifier le statut",
      "update-status-description": "Choisissez le nouveau statut pour les réservations sélectionnées",
      "new-status": "Nouveau statut",
      "cancellation-reason": "Raison de l'annulation",
      "cancellation-reason-placeholder": "Indiquez la raison de l'annulation...",
      "preview-title": "Réservations concernées",
      "confirm-update": "Confirmer ({count})",
      "send-message-title": "Envoyer un message",
      "send-message-description": "Composez un message pour les réservations sélectionnées",
      "channel": "Canal",
      "message": "Message",
      "message-placeholder": "Tapez votre message ici...",
      "variables-label": "Variables",
      "recipients-count": "{count} destinataire(s)",
      "confirm-send": "Envoyer ({count})",
      "characters": "{current}/{max} caractères",
      "sms-cost-estimate": "Coût estimé : {credits} crédits SMS ({recipients} destinataires)",
      "sms-insufficient-credit": "SMS indisponible : plafond du mois atteint ou abonnement inactif",
      "notify-channels-label": "Canaux de notification",
      "notify-channel-sms": "Envoyer un SMS",
      "notify-channel-email": "Envoyer un email",
      "notify-channels-empty-warning": "Aucune notification ne sera envoyée aux clients",
      "variables": {
        "customer-name": "Nom du client",
        "date": "Date",
        "time": "Heure",
        "nb-clients": "Nb personnes",
        "reservation-link": "Lien réservation"
      }
    },
    "import": {
      "button": "Importer",
      "title": "Importer des réservations",
      "description": "Importez des réservations depuis un fichier CSV",
      "file-label": "Fichier CSV",
      "file-selected": "Fichier sélectionné",
      "file-too-large": "Le fichier est trop volumineux ({size} Mo)",
      "max-size": "Taille maximale : {max} Mo",
      "importing": "Importation en cours...",
      "import-action": "Importer les réservations",
      "cancel": "Annuler",
      "rows-count": "{count, plural, =0 {Aucune réservation} one {# réservation à importer} other {# réservations à importer}}",
      "no-rows": "Aucune réservation trouvée dans le fichier",
      "delete-row": "Supprimer",
      "csv-format-info": "Le fichier CSV doit contenir les colonnes suivantes :",
      "column-date": "Date (JJ/MM/AAAA HH:mm)",
      "column-name": "Nom",
      "column-email": "Email (optionnel)",
      "column-phone": "Téléphone",
      "column-nb-clients": "Nombre de personnes",
      "column-note": "Note (optionnel)",
      "column-internal-note": "Note interne (optionnel)",
      "download-template": "Télécharger le modèle CSV",
      "parse-error": "Erreur lors de la lecture du fichier",
      "edit-row": "Modifier",
      "save-edit": "Enregistrer",
      "cancel-edit": "Annuler",
      "confirm-import": "Confirmer l'importation",
      "confirm-import-description": "Vous êtes sur le point d'importer {count} réservation(s). Cette action est irréversible.",
      "column-external-id": "ID externe (optionnel)",
      "column-source": "Source (optionnel)",
      "column-created-at": "Date de création (optionnel)"
    },
    "shift-filter": {
      "all-services": "Tous les services",
      "other": "Hors session"
    },
    "day-notes": {
      "title": "Notes de service",
      "from": "Du",
      "to": "Au",
      "error": "Impossible de charger ou enregistrer les notes. Vérifiez la période et réessayez.",
      "loading": "Chargement…",
      "archived": "Archivée",
      "edit": "Modifier",
      "restore": "Restaurer",
      "archive": "Archiver",
      "more": "Voir plus",
      "name": "Titre",
      "description": "Note interne",
      "color": "Couleur",
      "save": "Enregistrer",
      "add": "Ajouter une note",
      "cancel": "Annuler"
    },
    "placement-warning": "Réservation enregistrée. Le placement nécessite une vérification manuelle.",
    "split-seating-detail": "Tables séparées : {distribution}",
    "rooms": {
      "list": {
        "reorder-hint": "Glissez pour définir l'ordre de remplissage"
      },
      "create": "Ajouter une salle",
      "create-title": "Nouvelle salle",
      "rename": "Renommer",
      "delete": "Supprimer",
      "delete-confirm": {
        "title": "Supprimer cette salle ?",
        "description": "Les tables et les groupements de cette salle seront supprimés. Les réservations déjà placées seront libérées, mais conservées.",
        "confirm": "Supprimer"
      },
      "form": {
        "name": "Nom de la salle",
        "name-placeholder": "Salle principale, Terrasse...",
        "width": "Largeur (colonnes)",
        "height": "Longueur (lignes)",
        "active": "Salle active",
        "submit": "Enregistrer",
        "cancel": "Annuler"
      },
      "counters": {
        "tables": "{count, plural, =0 {Aucune table} =1 {1 table} other {# tables}}",
        "seats": "{count, plural, =0 {Aucun couvert} =1 {1 couvert} other {# couverts}}",
        "full": "Complet"
      },
      "errors": {
        "load-failed": "Les salles n'ont pas pu être chargées. Le plan affiche toutes vos tables."
      },
      "empty-state": {
        "title": "Aucune salle configurée",
        "description": "Créez votre première salle pour dessiner son plan de tables.",
        "action": "Créer une salle"
      },
      "services": {
        "title": "Services associés",
        "description": "Choisissez les services pendant lesquels cette salle accueille des clients.",
        "no-slots": "Aucun créneau de réservation configuré",
        "no-service-warning": "Aucun service coché : cette salle sera utilisée sur tous les services.",
        "no-service-badge": "Tous les services",
        "some-selected-hint": "Cette salle n'est utilisée que sur les services cochés.",
        "save": "Enregistrer les services"
      }
    },
    "combinations": {
      "title": "Groupements de tables",
      "description": "Collez plusieurs tables voisines pour accueillir un grand groupe.",
      "list": {
        "empty": "Aucun groupement pour le moment."
      },
      "create": "Ajouter un groupement",
      "create-mode": "Créer un groupement",
      "exit-create-mode": "Quitter le mode création",
      "clear-selection": "Tout désélectionner",
      "selection": {
        "count": "{count, plural, =0 {Aucune table sélectionnée} =1 {1 table sélectionnée} other {# tables sélectionnées}}",
        "none": "Aucune table sélectionnée"
      },
      "form": {
        "name": "Nom du groupement",
        "name-placeholder": "Grande tablée, Tables 4+5...",
        "name-prefix": "Groupe",
        "min-seats": "Couverts min.",
        "max-seats": "Couverts max.",
        "submit": "Enregistrer",
        "cancel": "Annuler",
        "active": "Proposé aux réservations"
      },
      "hints": {
        "min-tables": "Sélectionnez au moins 2 tables",
        "seats-prefilled": "Minimum au-dessus de la plus grande table, ajustable"
      },
      "seats-range": "{min} à {max} couverts",
      "delete": "Supprimer le groupement",
      "delete-confirm": {
        "title": "Supprimer ce groupement ?",
        "description": "Les tables restent en place. Elles ne seront plus proposées ensemble pour les grands groupes."
      },
      "errors": {
        "same-room": "Toutes les tables doivent être dans la même salle",
        "min-max": "Le minimum ne peut pas dépasser le maximum"
      },
      "edit": "Modifier le groupement",
      "paused": "En pause"
    },
    "auto-assignment": {
      "reasons": {
        "no-suitable-table": "Aucune table libre pour ce nombre de couverts",
        "room-closed": "La salle est fermée sur ce service"
      }
    },
    "table-chips": {
      "label": "Tables · {seats} places pour {covers}",
      "remove": "Retirer {table}",
      "removed": "{table} retirée",
      "undo": "Annuler",
      "keep": "Garder ces tables",
      "keep-hint": "L’optimisation automatique et les modifications de la réservation ne déplaceront pas ces tables.",
      "kept": "Table gardée"
    },
    "table-badge": {
      "none": "Sans table",
      "none-hint": "Aucune table. Cliquez pour placer automatiquement, puis validez.",
      "partial": "{table} · {seats}/{covers}",
      "partial-hint": "{tables} : {seats} places pour {covers} couverts. Cliquez pour compléter.",
      "placed-hint": "{tables}. Cliquez pour changer de table.",
      "placing-hint": "Placement en cours sur le plan. Cliquez pour l'arrêter.",
      "to-place-first": "Réservations à placer en premier"
    },
    "end-time": {
      "until": "Fin {time}"
    },
    "duration": {
      "label": "Durée",
      "sheet-title": "Heure et durée",
      "until": "jusqu'à {time}",
      "reset": "Revenir à la durée par défaut ({duration})",
      "impact-title": "Réservations touchées",
      "impact-meta": "{count} pers. · {time} · {tables}",
      "impact-moved": "passe sur {tables}",
      "impact-unplaced": "À placer : aucune table libre",
      "impact-conflict": "reste sur {tables} : conflit",
      "impact-loading": "Vérification des tables suivantes…",
      "impact-error": "Impossible de vérifier les réservations suivantes.",
      "dialog-title": "Prolonger cette réservation ?",
      "dialog-description": "D'autres clients arrivent sur ces tables avant la nouvelle fin.",
      "dialog-confirm": "Prolonger",
      "dialog-cancel": "Annuler",
      "decrease": "Retirer {step} min",
      "increase": "Ajouter {step} min"
    },
    "conflict-badge": {
      "label": "Conflit de table",
      "hint": "{table} : chevauche {name} ({start} – {end}), {minutes} min en trop"
    },
    "table-mode": {
      "clear": "Retirer le filtre {table}",
      "seat-walk-in": "Installer des clients",
      "free-and-seat": "Libérer et installer",
      "occupied-by": "{table} encore occupée par {name}",
      "free": "Libre",
      "free-for": "Libre {duration}",
      "next-status": "Passer en {status}",
      "empty": "Aucune réservation sur cette table",
      "status": {
        "upcoming": "Dans {duration}",
        "late": "En retard · +{duration}",
        "over": "Dépassé · +{duration}"
      },
      "gap": {
        "free": "Libre {duration}",
        "overlap": "Chevauche de {duration}",
        "arriving": "{name} arrive dans {duration}",
        "waiting": "{name} attend la table"
      }
    }
  },
  "shop": {
    "clear-search": "Effacer la recherche",
    "select-shop-required": "Veuillez sélectionner une boutique pour accéder à cette page.",
    "deleting": "Suppression...",
    "delete-shop": "Supprimer la boutique",
    "delete-contact-message": "Pour supprimer cette boutique, veuillez nous contacter à",
    "updating": "Mise à jour...",
    "save-modifications": "Sauvegarder les modifications",
    "confirm-deletion": "Confirmer la suppression",
    "contact-info": "Informations de contact",
    "created": "Magasin créé avec succès!",
    "updated": "Boutique modifiée avec succès !",
    "deleted": "Magasin supprimé avec succès!",
    "create-shop": "Créer un magasin",
    "create-new-shop": "Créer une nouvelle boutique",
    "create-shop-description": "Ajoutez un nouveau magasin à votre réseau",
    "schedule-description": "Définissez vos horaires d'ouverture pour votre nouveau magasin",
    "search-shop": "Rechercher des boutiques...",
    "no-shop-found": "Aucune boutique trouvée.",
    "load-error": "Impossible de charger vos boutiques. Veuillez rafraîchir la page.",
    "select-shop": "Sélectionner une boutique",
    "form-steps": {
      "create-shop": "Créer un magasin",
      "contact-info": "Informations de contact",
      "location": "Localisation",
      "step-1-description": "Donnez un nom à votre nouveau magasin",
      "step-2-description": "Ajoutez les informations de contact de votre magasin",
      "step-3-description": "Indiquez la localisation de votre magasin"
    },
    "google-places": {
      "title": "Rechercher votre commerce",
      "selected-title": "Commerce sélectionné",
      "placeholder": "Rechercher un commerce sur Google...",
      "no-results": "Aucun résultat trouvé",
      "error": "La recherche a échoué. Veuillez réessayer.",
      "loading": "Chargement...",
      "loading-details": "Importation des informations Google...",
      "use-this-place": "Utiliser",
      "change-selection": "Changer de commerce"
    },
    "create-form": {
      "schedule-section": {
        "title": "Horaires d'ouverture",
        "google-hours-detected": "Horaires Google",
        "google-hours-available": "Les horaires d'ouverture de votre commerce ont été détectés sur Google.",
        "use-google-hours": "Utiliser les horaires Google",
        "skip-for-now": "Configurer plus tard",
        "sync-categories-title": "Appliquer aussi ces horaires pour"
      }
    }
  },
  "categories": {
    "edit-category": "Modifier la catégorie",
    "category-name": "Nom de la catégorie",
    "select-category": "Sélectionner une catégorie...",
    "search-category": "Rechercher une catégorie...",
    "no-category-found": "Aucune catégorie trouvée.",
    "create-category": "Créer une catégorie",
    "create-new-category": "Créer une nouvelle catégorie",
    "create-category-button": "Créer la catégorie",
    "filter-categories": "Filtrer les catégories...",
    "created": "Catégorie créée avec succès !",
    "updated": "Catégorie modifiée avec succès !",
    "deleted": "Catégorie supprimée avec succès!",
    "list-label": "Liste des catégories",
    "selected-count": "{count} catégorie(s) sélectionnée(s)",
    "reorder": "Réorganiser",
    "reorder-mode": "Mode réorganisation",
    "done-reordering": "Terminé",
    "drag-to-reorder": "Glisser pour réorganiser",
    "products-empty": "Aucun produit dans cette catégorie.",
    "products-error": "Impossible de charger les produits.",
    "products-list-label": "Produits de {name}",
    "open-category": "Modifier {name}",
    "expand-products": "Afficher les produits de {name}",
    "collapse-products": "Masquer les produits de {name}",
    "drag-product": "Réordonner {name}",
    "move-category-up": "Monter la catégorie {name}",
    "move-category-down": "Descendre la catégorie {name}",
    "move-product-up": "Monter le produit {name}",
    "move-product-down": "Descendre le produit {name}"
  },
  "products": {
    "edit-product": "Modifier le produit",
    "product-name": "Nom du produit",
    "price": "Prix",
    "category": "Catégorie",
    "add-product": "Ajouter un produit",
    "add-new-product": "Ajouter un nouveau produit",
    "add-product-button": "Ajouter le produit",
    "no-product-found": "Aucun produit trouvé.",
    "filter-products": "Filtrer les produits...",
    "created": "Produit créé avec succès !",
    "updated": "Produit modifié avec succès !",
    "deleted": "Produit supprimé avec succès !",
    "imported": "{count} produit(s) importé(s) avec succès !",
    "list-label": "Liste des produits",
    "selected-count": "{count} produit(s) sélectionné(s)",
    "filters": {
      "search-placeholder": "Rechercher un produit...",
      "stock": "Stock",
      "category": "Catégorie",
      "all-categories": "Toutes les catégories",
      "reset": "Réinitialiser",
      "advanced-title": "Filtres avancés"
    },
    "alcohol": {
      "badge": "18+",
      "mark": "Marquer 18+",
      "unmark": "Retirer 18+"
    }
  },
  "game-campaigns": {
    "participation": {
      "title": "Participation",
      "frequency": "Fréquence de participation",
      "once": "Une seule fois",
      "daily": "Toutes les 24 heures",
      "weekly": "Tous les 7 jours",
      "custom": "Délai personnalisé",
      "unlimited": "Sans délai",
      "duration": "Délai entre deux parties",
      "unit": "Unité du délai",
      "hours": "Heures",
      "days": "Jours",
      "description": "Le délai commence à la dernière partie, gagnante ou perdante, pour cette campagne et cette adresse email. Par exemple : lundi à 15 h → mardi à 15 h pour 24 heures. Maximum : 365 jours.",
      "block-early-return": "Bloquer les retours trop rapides",
      "block-early-return-seconds-label": "Délai avant retour",
      "block-early-return-seconds-helper": "Temps d'attente imposé (2 à 20 secondes) sur la page externe avant de débloquer le jeu.",
      "block-early-return-seconds-min": "Le délai doit être d'au moins 2 secondes",
      "block-early-return-seconds-max": "Le délai ne peut pas dépasser 20 secondes",
      "timer-description": "Activé : le joueur doit attendre après avoir ouvert le lien externe. Désactivé : il peut continuer immédiatement, sans avertissement ni défaite liée au temps d’attente."
    },
    "page-title": "Campagnes",
    "page-description": "Gérez vos campagnes marketing",
    "settings-title": "Paramètres des campagnes",
    "settings-description": "Configurez les paramètres des campagnes marketing",
    "create-campaign": "Créer une campagne",
    "create-game": "Créer un jeu",
    "create-button": "Créer la campagne",
    "new-campaign": "Nouvelle campagne",
    "new-campaign-description": "Créez une nouvelle campagne marketing pour votre boutique.",
    "campaign-name": "Nom de la campagne",
    "campaign-name-placeholder": "Ex: Soldes d'été, Black Friday...",
    "campaign-type": "Type de campagne",
    "select-type": "Sélectionner un type",
    "redirect-url": "URL de redirection",
    "platform": "Plateforme",
    "select-platform": "Sélectionner une plateforme",
    "url-configured": "URL configurée",
    "start-date": "Date de début",
    "end-date": "Date de fin",
    "add-start-date": "Ajouter une date de début",
    "add-end-date": "Ajouter une date de fin",
    "duration": {
      "label": "Durée de la campagne",
      "1week": "1 semaine",
      "1month": "1 mois",
      "3months": "3 mois",
      "permanent": "Permanente",
      "custom": "Personnalisée",
      "start-date": "Date de début",
      "end-date": "Date de fin",
      "select-date": "Sélectionner une date"
    },
    "search-campaign": "Rechercher une campagne...",
    "filter-by-status": "Filtrer par statut",
    "no-campaign-found": "Aucune campagne trouvée.",
    "campaign-not-found": "Campagne introuvable.",
    "rewards": "Récompenses",
    "created": "Campagne créée avec succès!",
    "status-changed": "Statut de la campagne modifié avec succès!",
    "updated": "Campagne mise à jour avec succès!",
    "download-flyers": "Télécharger les flyers",
    "table": {
      "name": "Nom",
      "period": "Période",
      "time": "Temps",
      "status": "Statut",
      "active": "Actif"
    },
    "status": {
      "all": "Tous les statuts",
      "ongoing": "En cours",
      "upcoming": "À venir",
      "expired": "Terminée",
      "inactive": "Désactivée"
    },
    "progress": {
      "expired": "Terminée",
      "not-started": "Pas encore démarrée",
      "remaining-day": "{count} jour restant",
      "remaining-days": "{count} jours restants"
    },
    "types": {
      "direct": "Direct",
      "review": "Avis clients",
      "social-follow": "Réseaux sociaux"
    },
    "empty": {
      "title": "Aucune campagne",
      "description": "Vous n'avez pas encore créé de campagne."
    },
    "error": {
      "title": "Erreur",
      "loading": "Une erreur est survenue lors du chargement des campagnes.",
      "loading-campaign": "Une erreur est survenue lors du chargement de la campagne.",
      "loading-rewards": "Une erreur est survenue lors du chargement des récompenses."
    },
    "detail": {
      "information": "Information",
      "rewards": "Récompenses",
      "appearance": "Apparence",
      "flyers": "Flyers",
      "preview": "Aperçu",
      "preview-coming-soon": "Aperçu à venir...",
      "back-link": "Campagnes"
    },
    "appearance": {
      "background": "Arrière-plan",
      "background-description": "Personnalisez l'arrière-plan de votre jeu.",
      "wheel": "Roue",
      "wheel-description": "Choisissez un thème de couleurs pour votre roue.",
      "applying-theme": "Application du thème en cours...",
      "no-rewards": "Ajoutez des récompenses pour pouvoir appliquer un thème."
    },
    "preview": {
      "lose-segment": "Perdu",
      "no-rewards": "Ajoutez des récompenses pour voir l'aperçu",
      "wheel-aria-label": "Aperçu de la roue de la fortune",
      "spin-action": "Faire tourner la roue",
      "spinning": "La roue tourne...",
      "rolling": "Tirage en cours...",
      "scratch-hint": "Grattez ici",
      "scratch-revealed": "Résultat révélé !",
      "win": "Gagné !",
      "dice-hint": "Cliquez pour lancer le dé",
      "dice-rolling": "Lancement du dé en cours...",
      "flip-hint": "Choisissez une carte",
      "flip-card": "Carte"
    },
    "rewards-tab": {
      "title": "Récompenses",
      "total-weight": "Pondération totale",
      "loss-percentage": "{percentage}% de perte",
      "loss-info": "{percentage}% de chance de perte",
      "no-loss": "Pas de perte",
      "overflow": "Dépassement de {percentage}%",
      "rewards-count": "récompenses",
      "balance": "Équilibrer",
      "loss-rate": "Taux de perte",
      "add-slot": "Ajouter un lot",
      "error": "Impossible de charger les récompenses du catalogue",
      "slot-summary": "{percent} % · {used} / {total}",
      "slot-summary-unlimited": "{percent} % · illimité",
      "slot-menu": "Actions du lot",
      "edit-slot": "Modifier le lot",
      "remove-slot": "Retirer de la roue",
      "remove-confirm": {
        "title": "Retirer « {name} » de la roue ?",
        "description": "La récompense reste au catalogue et les coupons déjà gagnés restent valables.",
        "cancel": "Annuler",
        "confirm": "Retirer"
      },
      "slot-sheet": {
        "title-add": "Ajouter un lot",
        "title-edit": "Modifier le lot",
        "subtitle": "Le taux de gain, le stock et les couleurs appartiennent à cette roue.",
        "reward": "Récompense",
        "probability": "Taux de gain",
        "stock": "Stock (0 = illimité)",
        "color": "Fond de la case",
        "text-color": "Texte de la case",
        "submit-add": "Ajouter à la roue",
        "submit-edit": "Enregistrer",
        "errors": {
          "reward-required": "Choisissez une récompense",
          "total-exceeds": "Le total des lots dépasserait 100 %"
        }
      },
      "missing-catalogue": "{count, plural, =1 {1 lot n’a pas de fiche au catalogue et n’est pas affiché} other {# lots n’ont pas de fiche au catalogue et ne sont pas affichés}}"
    },
    "use-my-link": "Utiliser mon lien",
    "no-shop-link": "Aucun lien configuré pour cette plateforme.",
    "configure-shop": "Configurez votre boutique"
  },
  "rewards": {
    "add-reward": "Ajouter une récompense",
    "new-reward": "Nouvelle récompense",
    "new-reward-description": "Créez une nouvelle récompense pour cette campagne.",
    "description": "Description",
    "description-placeholder": "Ex: 10% de réduction",
    "weight-label": "Pondération",
    "weight-placeholder": "Ex: 25",
    "total-quantity": "Quantité totale (optionnel)",
    "quantity-placeholder": "Laisser vide pour illimité",
    "valid-from": "Valable à partir du",
    "valid-from-placeholder": "Disponible immédiatement",
    "expiration-type": "Type d'expiration",
    "expiration-date": "Date d'expiration",
    "expiration-date-placeholder": "Sélectionner une date",
    "days-count": "Nombre de jours",
    "days-count-placeholder": "Ex: 30",
    "select": "Sélectionner",
    "select-date": "Sélectionner une date",
    "days-after-win": "Jours après gain",
    "no-rewards": "Aucune récompense pour cette campagne.",
    "created": "Récompense créée avec succès!",
    "updated": "Récompense mise à jour avec succès!",
    "deleted": "Récompense supprimée avec succès!",
    "balanced": "Récompenses équilibrées avec succès!",
    "reset-changes": "Réinitialiser les modifications",
    "proposed-gain": "Gain proposé",
    "weight": "Poids",
    "quantity-short": "Qté",
    "expiration": "Expiration",
    "probability-label": "Probabilité de gain",
    "remaining-probability": "{percentage}% restant",
    "stock-label": "Stock disponible",
    "unlimited": "Illimité",
    "color": "Couleur du segment",
    "color-placeholder": "Sélectionner une couleur",
    "text-color": "Couleur du texte",
    "text-color-placeholder": "Sélectionner une couleur",
    "image": "Image de la récompense",
    "image-placeholder": "Ajouter une image",
    "end-date": "Date de fin",
    "conditions": "Conditions",
    "conditions-placeholder": "Ajouter une condition...",
    "custom-condition-placeholder": "Personnalisé...",
    "condition-amount-placeholder": "Montant",
    "suggested-conditions": {
      "next-order": "À la prochaine commande",
      "weekdays-only": "Valable du lundi au vendredi",
      "weekend-only": "Valable le week-end uniquement",
      "valid-lunch": "Valable uniquement le midi",
      "valid-dinner": "Valable uniquement le soir",
      "min-order": "Commande minimum",
      "min-items": "Nombre d'articles minimum",
      "dine-in-only": "Sur place uniquement",
      "takeaway-only": "À emporter uniquement",
      "delivery-only": "Livraison uniquement",
      "new-customers": "Nouveaux clients uniquement",
      "one-per-customer": "Limité à un par client",
      "one-per-visit": "Limité à un par visite",
      "members-only": "Réservé aux membres",
      "not-combinable": "Non cumulable avec d'autres offres",
      "excluding-alcohol": "Hors boissons alcoolisées",
      "excluding-promotions": "Hors articles en promotion",
      "excluding-menus": "Hors formules et menus",
      "main-course-required": "Plat principal obligatoire",
      "dessert-required": "Dessert obligatoire",
      "beverage-required": "Boisson obligatoire"
    },
    "expiration-types": {
      "game-end": "Fin du jeu",
      "fixed-date": "Date fixe",
      "relative-days": "Jours après gain"
    },
    "errors": {
      "condition-too-long": "La condition est trop longue",
      "duplicate-condition": "Cette condition existe déjà",
      "max-conditions-reached": "Nombre maximum de conditions atteint"
    },
    "availability-type": "Type de début de validité",
    "availability-date": "Date de début de validité",
    "availability": "Début de validité",
    "start-date": "Date de début",
    "days-until-available": "Jours avant disponibilité",
    "availability-types": {
      "immediate": "Immédiat",
      "fixed-date": "Date fixe",
      "relative-days": "Jours après gain"
    },
    "not-yet-active": {
      "title": "Récompense pas encore active",
      "warning": "Cette récompense sera utilisable à partir du {date}, heure de Paris. Souhaitez-vous la remettre maintenant ?",
      "confirm": "Remettre quand même"
    },
    "advanced-settings": "Paramètres avancés",
    "set-max": "Max",
    "set-max-title": "Attribuer le pourcentage restant"
  },
  "reward-catalogue": {
    "offer": {
      "redeem-mode": "Utilisation du bon",
      "counter": "Au comptoir",
      "cart": "Dans une commande",
      "both": "Au comptoir et dans une commande",
      "stackable": "Autoriser le cumul avec d’autres bons",
      "summary": "Offre à {amount} + suppléments",
      "title": "Offre groupée à commander",
      "help": "Le client choisit les produits de chaque groupe sur la page de l’offre. Le prix de vente et les suppléments sont indépendants de l’avantage du bon. Les options des produits restent facturées en supplément.",
      "enable": "Proposer cette offre à la commande",
      "price": "Prix de l’offre (€)",
      "group": "Choix {number}",
      "label": "Nom du groupe (ex. : Plat)",
      "quantity": "Nombre de produits à choisir",
      "products": "Produits au choix",
      "supplement": "Supplément pour {name} (€)",
      "add-group": "Ajouter un groupe de choix",
      "invalid": "Indiquez un prix positif, 1 à 20 groupes nommés et 1 à 100 produits distincts par groupe. Les quantités doivent être entières (1 à 100), les montants positifs ou nuls avec deux décimales maximum."
    },
    "tabs": {
      "catalogue": "Catalogue",
      "granted": "En poche"
    },
    "status": {
      "draft": "Brouillon",
      "active": "Active",
      "archived": "Archivée"
    },
    "benefit": {
      "percentage": "−{value} %",
      "fixed-amount": "−{amount}",
      "free-item": "{count, plural, =1 {1 offert} other {# offerts}}",
      "free-delivery": "Livraison offerte",
      "bundle-price": "Lot {amount}",
      "custom-text": "Texte libre",
      "max-discount": "plafond {amount}"
    },
    "sentence": {
      "no-minimum": "sans minimum",
      "min-subtotal": "dès {amount}",
      "every-day": "tous les jours",
      "counter-only": "comptoir uniquement",
      "cart-only": "panier uniquement",
      "expires-after-days": "expire {days} j après réception",
      "expires-on": "expire le {date}",
      "expires-game-end": "expire à la fin du jeu",
      "no-expiry": "sans expiration"
    },
    "order-types": {
      "DINE_IN": "sur place",
      "CLICK_AND_COLLECT": "à emporter",
      "DELIVERY": "en livraison"
    },
    "preview": {
      "title": "Ce que le client voit"
    },
    "granted-count": "{count, plural, =0 {aucun coupon} =1 {1 en poche} other {# en poche}}",
    "copy-name": "{name} (copie)",
    "filters": {
      "search-placeholder": "Rechercher une récompense…",
      "all": "Toutes",
      "status": "Statut"
    },
    "table": {
      "reward": "Récompense",
      "granted-count": "En poche",
      "status": "Statut",
      "updated-at": "Modifiée le",
      "error": "Impossible de charger le catalogue",
      "empty": "Aucune récompense dans le catalogue",
      "count": "{count, plural, =1 {récompense} other {récompenses}}"
    },
    "actions": {
      "menu": "Actions",
      "publish": "Publier",
      "duplicate": "Dupliquer",
      "archive": "Archiver",
      "archive-confirm": {
        "title": "Archiver « {name} » ?",
        "description": "{count, plural, =0 {Elle ne sera plus proposée. Aucun coupon n’est en circulation.} =1 {Elle ne sera plus proposée. Le coupon déjà distribué reste valable.} other {Elle ne sera plus proposée. Les # coupons déjà distribués restent valables.}}",
        "cancel": "Annuler",
        "confirm": "Archiver"
      },
      "edit": "Modifier"
    },
    "toasts": {
      "activate-success": "Récompense publiée",
      "activate-error": "Impossible de publier la récompense",
      "archive-success": "Récompense archivée",
      "archive-error": "Impossible d’archiver la récompense",
      "duplicate-success": "Copie créée en brouillon",
      "duplicate-error": "Impossible de dupliquer la récompense",
      "create-success": "Récompense créée et publiée",
      "create-error": "Impossible de créer la récompense",
      "pending": "Enregistrement…",
      "save-success": "Récompense enregistrée",
      "save-error": "Impossible d’enregistrer la récompense"
    },
    "days": {
      "short": {
        "0": "dim",
        "1": "lun",
        "2": "mar",
        "3": "mer",
        "4": "jeu",
        "5": "ven",
        "6": "sam"
      }
    },
    "picker": {
      "placeholder": "Choisir une récompense…",
      "search": "Rechercher dans le catalogue…",
      "empty": "Aucune récompense ne correspond",
      "recent": "Utilisées récemment",
      "all": "Tout le catalogue",
      "create": "Créer une récompense",
      "edit": "Modifier la récompense",
      "draft-reason": "Non publiée — impossible de l’envoyer",
      "error": "Impossible de charger le catalogue"
    },
    "quick-form": {
      "title": "Nouvelle récompense",
      "subtitle": "Créez votre récompense et publiez-la tout de suite. Les autres conditions se règlent ensuite dans le catalogue.",
      "name": "Nom interne",
      "description": "Ce que le client lit",
      "benefit-type": "Type d’avantage",
      "value": "Valeur",
      "expiration": "Validité",
      "expiration-days": "Nombre de jours après réception",
      "expiration-date": "Date limite",
      "days": "j",
      "submit": "Créer et publier",
      "benefit-types": {
        "PERCENTAGE": "Pourcentage de remise",
        "FIXED_AMOUNT": "Montant offert",
        "FREE_ITEM": "Produit offert",
        "FREE_DELIVERY": "Livraison offerte",
        "CUSTOM_TEXT": "Texte libre, remis au comptoir"
      },
      "expiration-types": {
        "RELATIVE_DAYS": "Quelques jours après réception",
        "FIXED_DATE": "Jusqu’à une date",
        "NEVER": "Sans expiration"
      },
      "errors": {
        "name-required": "Donnez un nom à la récompense",
        "name-too-long": "60 caractères maximum",
        "description-required": "Indiquez ce que le client lira",
        "value-required": "Indiquez une valeur",
        "value-max-100": "Une remise ne dépasse pas 100 %",
        "expiration-days-required": "Indiquez un nombre de jours",
        "expiration-date-required": "Choisissez une date"
      }
    },
    "editor": {
      "create": "Créer une récompense",
      "edit": "Modifier la récompense",
      "subtitle": "Définissez l’avantage et les conditions à vérifier par votre équipe au comptoir.",
      "counter-help": "Pour déduire un bon du total, ouvrez la commande et choisissez « Appliquer un bon ». La validation au comptoir reste disponible pour une remise directe.",
      "details": "Détails de la récompense",
      "bundle-price": "Lot à prix fixe",
      "game-end": "Jusqu’à la fin du jeu",
      "free-quantity": "Quantité offerte",
      "max-discount": "Remise maximale (€ ; laissez vide pour ne pas limiter)",
      "pick-cheapest": "Choisir les produits éligibles les moins chers",
      "image": "Photo de l’offre (facultatif)",
      "image-placeholder": "Glissez une image ou cliquez pour parcourir (JPG, PNG, max 5 Mo)",
      "image-help": "Sans photo, celle du produit lié à l’offre est utilisée.",
      "auto-apply": "Appliquer automatiquement sur la carte en ligne",
      "auto-apply-help": "L’offre s’affiche comme un bon sur votre carte en ligne, visible par tous vos clients, et se déduit sans code au paiement, en Click & Collect et en livraison.",
      "free-targets": "Produits ou catégories offerts",
      "required-targets": "Produits ou catégories à acheter",
      "discounted-targets": "Produits ou catégories remisés",
      "all-products": "Sans produit ni catégorie sélectionnés, la remise porte sur toute la commande.",
      "conditions": "Conditions d’utilisation",
      "conditions-help": "Votre équipe doit vérifier le minimum d’achat, les produits requis, les jours et les horaires autorisés au comptoir.",
      "min-subtotal": "Minimum d’achat (€ ; laissez vide pour ne pas imposer de minimum)",
      "max-uses": "Utilisations maximales par client (laissez vide pour ne pas limiter)",
      "customer-conditions": "Conditions affichées au client (une par ligne)",
      "order-types": "Types de commande",
      "empty-means-all": "Ne cochez aucune option pour ne pas imposer de restriction.",
      "days": "Jours de la semaine",
      "first-order": "Première commande uniquement",
      "time-ranges": "Créneaux horaires",
      "time-help": "Utilisez le format HH:mm, par exemple 11:30. Laissez vide pour ne pas limiter les horaires. Un créneau peut dépasser minuit, par exemple 22:00–02:00.",
      "add-time-range": "Ajouter un créneau",
      "time-from": "Heure de début",
      "time-to": "Heure de fin",
      "add-target": "Ajouter un produit ou une catégorie",
      "search-targets": "Rechercher un produit ou une catégorie…",
      "no-targets": "Aucun produit ni catégorie disponible",
      "category": "Catégorie",
      "categories": "Catégories",
      "required-quantity": "Quantité requise",
      "unavailable-target": "Produit ou catégorie indisponible ({id})",
      "publication-failed": "La récompense a été enregistrée en brouillon, mais sa publication a échoué. Réessayez de la publier sans la recréer.",
      "save-draft": "Enregistrer le brouillon",
      "save-publish": "Enregistrer et publier",
      "read-only": "Vous n’avez pas l’autorisation de modifier les récompenses.",
      "errors": {
        "amount": "Indiquez un montant valide avec 2 décimales maximum",
        "quantity": "Indiquez un nombre entier supérieur à zéro",
        "description": "La description ne doit pas dépasser 500 caractères",
        "conditions": "Chaque condition ne doit pas dépasser 300 caractères",
        "target": "Sélectionnez soit un produit, soit une catégorie",
        "free-target": "Sélectionnez au moins un produit ou une catégorie à offrir",
        "bundle-target": "Sélectionnez au moins un produit ou une catégorie pour le lot",
        "auto-apply-counter": "Pour l’appliquer automatiquement, l’offre doit être utilisable dans une commande en ligne (pas uniquement au comptoir).",
        "auto-apply-custom-text": "Un avantage en texte libre ne peut pas s’appliquer automatiquement. Choisissez une remise, un produit offert, un lot ou la livraison offerte.",
        "auto-apply-offer": "Une offre groupée à commander ne peut pas s’appliquer automatiquement. Retirez-la ou désactivez cette option.",
        "auto-apply-first-order": "« Première commande uniquement » empêche l’application automatique. Décochez-la ou désactivez cette option.",
        "auto-apply-max-uses": "Une limite d’utilisations par client empêche l’application automatique. Laissez-la vide ou désactivez cette option.",
        "time": "Indiquez des horaires valides au format HH:mm"
      }
    },
    "availability": {
      "label": "Utilisable à partir de",
      "immediate": "Immédiatement",
      "next-day": "Le lendemain",
      "after-days": "Après plusieurs jours",
      "days": "Nombre de jours après réception",
      "legacy-days": "Après plusieurs jours, à l’heure de réception",
      "fixed-date": "Date déjà définie",
      "fixed-date-value": "Le {date} (heure de Paris)",
      "fixed-help": "Cette date est conservée tant que vous ne choisissez pas un autre début de validité.",
      "help": "Chaque bon devient utilisable à minuit, heure de Paris, après le délai choisi. L’expiration reste calculée depuis la réception et doit laisser le temps d’utiliser le bon.",
      "legacy-help": "Ce réglage conserve l’heure de réception. Choisissez « Le lendemain » ou « Après plusieurs jours » pour démarrer à minuit, heure de Paris.",
      "expiration-label": "Expire",
      "sentence-calendar": "utilisable {days, plural, one {le lendemain} other {après # jours}}, à minuit (Paris)",
      "sentence-relative": "utilisable après {days} j, à l’heure de réception",
      "sentence-fixed": "utilisable le {date} (Paris)",
      "errors": {
        "days": "Indiquez un nombre entier de 1 à 365 jours.",
        "date": "Indiquez une date de début valide.",
        "interval": "Le début de validité doit précéder l’expiration. Pour une expiration après réception, choisissez un délai d’utilisation plus court.",
        "legacy-days": "Indiquez un nombre entier de 1 à 3650 jours."
      },
      "immediate-help": "Chaque bon est utilisable dès sa réception. L’expiration reste calculée depuis la réception."
    }
  },
  "color-picker": {
    "select-color": "Sélectionner une couleur",
    "remove-color": "Supprimer la couleur",
    "quick-colors": "Couleurs rapides",
    "color-aria-label": "Couleur {color}"
  },
  "winners": {
    "no-winners-found": "Aucun gagnant trouvé.",
    "error-loading": "Erreur lors du chargement des gagnants.",
    "filter-by-status": "Filtrer par statut",
    "all-statuses": "Tous les statuts",
    "validated": "Lot validé avec succès!",
    "actions": {
      "collect": "Remettre",
      "mark-uncollected": "Annuler la remise"
    },
    "confirmations": {
      "collect": {
        "title": "Remettre la récompense ?",
        "description": "La récompense sera marquée comme remise au client."
      },
      "mark-uncollected": {
        "title": "Annuler la remise ?",
        "description": "La récompense redeviendra « À remettre ». Vous pourrez la remettre plus tard."
      }
    },
    "status": {
      "pending": "En attente",
      "validated": "Récupéré",
      "expired": "Expiré",
      "cancelled": "Annulé"
    },
    "table": {
      "code": "Code",
      "name": "Nom",
      "reward": "Lot",
      "status": "Statut",
      "date": "Date",
      "load-more": "Charger plus",
      "empty": "Aucune récompense",
      "error": "Erreur de chargement",
      "retry": "Réessayer",
      "origin": "Origine",
      "origin-unknown": "Supprimée",
      "origin-manual": "Offert au comptoir"
    },
    "filters": {
      "count": "{count, plural, =0 {Aucune récompense} =1 {1 récompense} other {# récompenses}}",
      "search-placeholder": "Rechercher par code, nom, email ou téléphone...",
      "status": "Statut",
      "all-statuses": "Tous les statuts",
      "sort-by": "Trier par",
      "sort": {
        "date-desc": "Plus récent",
        "date-asc": "Plus ancien",
        "date": "Date"
      },
      "advanced": "Filtres avancés",
      "advanced-title": "Filtres avancés",
      "reset": "Réinitialiser",
      "period": "Période",
      "start-date": "Date de début",
      "end-date": "Date de fin",
      "select-date": "Sélectionner une date",
      "items-per-page": "Éléments par page",
      "source": {
        "label": "Source",
        "all": "Tout",
        "game": "Jeux",
        "campaign": "Campagnes",
        "manual": "Comptoir"
      }
    },
    "details": {
      "reward": "Lot",
      "code": "Code",
      "email": "Email",
      "phone": "Téléphone",
      "claimed-date": "Date de gain",
      "expiration": "Expiration",
      "available-from": "Utilisable à partir du (heure de Paris)"
    }
  },
  "subscriptions": {
    "status": {
      "active": "Actif",
      "canceled": "Annulé"
    },
    "edit-subscription": "Modifier l'abonnement",
    "active-until": "Actif jusqu'au",
    "active-features": "Fonctionnalités Actives",
    "cancel-subscription": "Annuler l'abonnement",
    "confirm-cancellation": "Confirmer l'annulation",
    "cancelling": "Annulation en cours...",
    "no-active-subscription": "Aucun abonnement actif",
    "manage-description": "Gérez vos réservations, commandes et menus en temps réel",
    "subscription": "Abonnement",
    "subscription-description": "Gérez votre abonnement et vos fonctionnalités",
    "cancelled": "Abonnement annulé avec succès!",
    "features-updated": "Fonctionnalités modifiées avec succès!"
  },
  "reviews": {
    "search-by-name": "Rechercher par nom...",
    "name": "Nom",
    "comment": "Commentaire",
    "no-comment": "Aucun commentaire",
    "no-reviews-found": "Aucun avis trouvé",
    "settings-title": "Paramètres des avis",
    "page-title": "Avis clients",
    "page-description": "Consultez et gérez les avis de vos clients",
    "settings-page-title": "Paramètres des avis",
    "settings-page-description": "Configurez les paramètres de gestion des avis clients",
    "settings-tabs": {
      "general": "Général",
      "emails": "Emails",
      "ai": "Réponses IA"
    },
    "google-link-not-configured-title": "Lien Google Avis non configuré",
    "google-link-not-configured-description": "Pour permettre à vos clients de laisser des avis sur Google, veuillez configurer votre lien Google Avis dans les paramètres. Ce lien sera utilisé pour rediriger vos clients vers votre page Google.",
    "later": "Plus tard",
    "go-to-settings": "Aller aux paramètres",
    "low-ratings": "1-3 étoiles",
    "high-ratings": "4-5 étoiles",
    "error-loading": "Erreur lors du chargement des avis.",
    "review-count-label": "avis",
    "load-more": "Charger plus",
    "table": {
      "recovery-date": "Date de récupération",
      "game-date": "Date de jeu",
      "name": "Nom",
      "rating": "Note",
      "comment": "Commentaire"
    },
    "details": {
      "email": "Email",
      "phone": "Téléphone",
      "recovery-date": "Date de récupération",
      "game-date": "Date de jeu"
    },
    "filters": {
      "count": "{count, plural, =0 {Aucun avis} =1 {1 avis} other {# avis}}",
      "search-placeholder": "Rechercher par nom, email ou téléphone...",
      "sort-by": "Trier par",
      "advanced": "Filtres avancés",
      "advanced-title": "Filtres avancés",
      "reset": "Réinitialiser",
      "select-date": "Sélectionner une période",
      "rating-filter": "Filtrer par note",
      "source": "Source",
      "has-comment": "Avec commentaire",
      "items-per-page": "Éléments par page",
      "all": "Tous",
      "yes": "Oui",
      "no": "Non",
      "sort": {
        "date-desc": "Plus récents",
        "date-asc": "Plus anciens",
        "rating-desc": "Meilleures notes",
        "rating-asc": "Notes les plus basses",
        "date": "Date",
        "rating": "Note"
      },
      "from": "Du",
      "until": "Jusqu'au",
      "date-range": "Période"
    },
    "sources": {
      "game": "Jeu",
      "order": "Commande",
      "reservation": "Réservation",
      "direct": "Direct"
    },
    "google-link-moved": {
      "title": "Lien Google Avis",
      "description": "Le lien Google et le Place ID se gèrent désormais dans Réglages boutique → Réseaux.",
      "action": "Ouvrir les réglages boutique"
    }
  },
  "external-reviews": {
    "section-title": "Avis Google externes",
    "insights": {
      "title": "Analyse des avis Google",
      "reanalyze": {
        "button": "Réanalyser les avis",
        "running": "Réanalyse en cours…",
        "tooltip": "Relancer l'analyse des avis déjà collectés"
      },
      "error": "Impossible de charger l'analyse des avis Google.",
      "kpi": {
        "response-time-hours": "{value} h",
        "response-time-days": "{value} j"
      },
      "themes": {
        "empty": "L'analyse des thèmes sera disponible après le passage du traitement IA.",
        "chip-aria": "{positive} avis positifs, {negative} négatifs, {neutral} neutres",
        "mentions": "mentions"
      },
      "topics": {
        "cuisine": "Cuisine",
        "prix": "Prix",
        "service": "Service",
        "ambiance": "Ambiance",
        "hygiene": "Hygiène",
        "attente": "Attente"
      },
      "trend": {
        "title": "Tendance mensuelle",
        "positive": "Positifs",
        "negative": "Négatifs"
      },
      "mini": {
        "response-rate": "{value} % de réponse",
        "median": "médiane {value}",
        "reviews": "{count} avis"
      },
      "ai": {
        "title": "Ce que vos avis disent",
        "loading": "Analyse IA en cours…",
        "empty": "Notre IA décrypte vos avis pour révéler vos points forts et les tendances clients. Votre synthèse s'affiche ici dès les premiers avis traités.",
        "error": "Impossible de générer l'analyse IA.",
        "strengths": "Points forts",
        "weaknesses": "Points à améliorer",
        "updated-on": "Mis à jour le {date}"
      },
      "actions": {
        "title": "Actions à suivre",
        "summary-label": "À retenir",
        "open-count": "{count} à traiter",
        "monitoring-title": "Corrigé et surveillé",
        "source-count": "{count, plural, one {# avis} other {# avis}}",
        "recurrence-count": "{count, plural, one {# nouvel avis} other {# nouveaux avis}}",
        "view-sources": "Voir les avis sources",
        "first-objection": "Objection principale",
        "suggestions-label": "Pistes possibles à vérifier",
        "mark-corrected": "Marquer corrigé",
        "start": "Commencer",
        "reopen": "Rouvrir",
        "complete": "Clôturer",
        "corrected-on": "Corrigé le {date}",
        "returned": "Problème revenu",
        "last-mentioned": "Dernière mention le {date}",
        "source-title": "Avis sources",
        "source-description": "Avis négatifs classés sur ce thème par l'IA.",
        "source-author": "Auteur",
        "source-rating": "Note",
        "source-date": "Date",
        "source-objection": "Objection repérée",
        "objection-unavailable": "Objection non disponible pour cet ancien avis.",
        "anonymous": "Auteur anonyme",
        "show-in-list": "Voir dans la liste",
        "show-full-review": "Voir l'avis complet",
        "hide-full-review": "Masquer l'avis complet",
        "resolution-title": "Marquer l'action comme corrigée",
        "resolution-description": "Cette date démarre la surveillance des nouveaux avis.",
        "correction-date": "Date de correction",
        "correction-note": "Ce qui a changé (facultatif)",
        "correction-placeholder": "Ex. Brief de l'équipe et nouveau passage cuisine–salle",
        "confirm-correction": "Confirmer la correction",
        "update-success": "Suivi de l'action mis à jour.",
        "update-error": "Impossible de mettre à jour l'action.",
        "collapse-analysis": "Réduire",
        "expand-analysis": "Développer",
        "status": {
          "TODO": "À faire",
          "IN_PROGRESS": "En cours",
          "MONITORING": "Surveillance",
          "DONE": "Clôturé"
        },
        "topic-action": {
          "cuisine": "Améliorer la régularité de la cuisine",
          "prix": "Clarifier la perception du rapport qualité-prix",
          "service": "Fluidifier le service en salle",
          "ambiance": "Corriger les irritants liés à l'ambiance",
          "hygiene": "Renforcer les contrôles d'hygiène",
          "attente": "Réduire le temps d'attente"
        },
        "nothing-to-fix": "Aucun point à corriger sur cette période."
      },
      "source-google": "Google",
      "metrics": {
        "replies": "Réponses",
        "replies-detail": "{answered} sur {total} avis",
        "response-time": "Délai de réponse",
        "median-detail": "en médiane",
        "with-ai": "Avec l'IA",
        "with-ai-detail": "{count, plural, one {sur # réponse} other {sur # réponses}}",
        "empty": "Aucun avis commenté sur cette période."
      }
    },
    "review-index": "Avis n°{number}",
    "count-badge": "{count, plural, one {# avis} other {# avis}}",
    "search": {
      "placeholder": "Rechercher (auteur, contenu, réponse)…"
    },
    "empty": "Aucun avis externe pour le moment.",
    "error-loading": "Impossible de charger les avis externes.",
    "anonymous-author": "Auteur anonyme",
    "processing-badge": "Génération IA en cours…",
    "publishing-badge": "Publication en cours…",
    "status": {
      "draft": "Brouillon",
      "published": "Publié",
      "rejected-by-google": "Refusé par Google",
      "dismissed": "Ignoré"
    },
    "confidence": {
      "low": "Confiance faible",
      "medium": "Confiance moyenne",
      "high": "Confiance haute"
    },
    "ai": {
      "generate-suggestion": "Générer une suggestion IA",
      "generating": "Génération en cours...",
      "your-reply": "Votre réponse",
      "reply-placeholder": "Rédigez ou ajustez votre réponse...",
      "publish": "Publier",
      "regenerate": "Régénérer",
      "dismiss": "Ignorer",
      "restore": "Réactiver",
      "edited": "Modifié manuellement",
      "char-count": "{current} / {max} caractères",
      "published-on": "Publié le {date}",
      "rejected-by-google-notice": "Google a refusé cette réponse. Vous pouvez en générer une nouvelle.",
      "dismissed-notice": "Avis ignoré.",
      "suggestion-label": "Suggestion IA"
    },
    "customer-match": {
      "identified": "Client identifié",
      "confirm": "Confirmer le client",
      "reject": "Rejeter le client",
      "view-customer": "Voir la fiche client"
    },
    "actions": {
      "reply": "Répondre",
      "edit-reply": "Modifier la réponse",
      "sync-single-tooltip": "Synchroniser cet avis",
      "sync-single-aria": "Resynchroniser cet avis depuis Google",
      "more": "Plus d'actions",
      "dismiss": "Ne plus suggérer",
      "dismiss-hint": "Cet avis ne sera plus repris par les générations automatiques. Tu pourras le restaurer plus tard.",
      "suggest-ai": "Suggérer par IA"
    },
    "reply-sheet": {
      "title": "Répondre à cet avis",
      "edit-title": "Modifier la réponse",
      "description": "Rédigez votre réponse ou demandez à l'IA de la générer.",
      "edit-description": "Modifiez la réponse actuellement publiée sur Google.",
      "review-section": "Avis du client",
      "no-comment": "Aucun commentaire écrit.",
      "draft-label": "Votre réponse",
      "draft-placeholder": "Écrivez votre réponse ou générez une suggestion IA...",
      "character-count": "{count} / {max} caractères",
      "generate-button": "Générer avec IA",
      "improve-button": "Améliorer mon brouillon",
      "improving": "Amélioration en cours...",
      "publish-button": "Publier",
      "publishing": "Publication...",
      "update-button": "Mettre à jour",
      "updating": "Mise à jour...",
      "cancel": "Annuler"
    },
    "bulk-respond": {
      "trigger": "Générer les réponses",
      "title": "Générer les réponses",
      "description": "Génère des réponses IA pour tous les avis non répondus. Choisissez de les mettre en attente ou de les publier directement.",
      "warning-title": "Action irréversible",
      "warning-description": "Cette action va publier automatiquement sur Google une réponse IA pour TOUS les avis non répondus, sans validation manuelle. Vous ne pourrez pas vérifier chaque réponse avant publication.",
      "ratings-filter-label": "Filtrer par note (optionnel)",
      "ratings-filter-hint": "Laisser vide pour traiter toutes les notes.",
      "action-label": "Action",
      "action-draft-label": "Mettre en attente de validation",
      "action-draft-helper": "Génère les brouillons sans publier. Vous validez chaque réponse avant qu'elle parte sur Google.",
      "action-publish-label": "Publier directement sur Google",
      "action-publish-helper": "Génère et publie sans validation manuelle. Action irréversible.",
      "confirm-button-draft": "Générer les brouillons",
      "confirm-button-publish": "Générer et publier",
      "preview-label": "Avis à traiter ({count})",
      "preview-loading": "Chargement de l'aperçu...",
      "preview-error": "Impossible de charger l'aperçu des avis.",
      "preview-empty": "Aucun avis à traiter avec les filtres actuels.",
      "preview-more": "+ {count} autres"
    },
    "bulk-publish": {
      "trigger": "Publier toutes les réponses",
      "title": "Publier toutes les réponses",
      "description": "Publie sur Google tous les brouillons de réponse déjà générés. Filtrez par note si besoin.",
      "warning-title": "Action irréversible",
      "warning-description": "Cette action va publier sur Google TOUS les brouillons de réponse correspondants, sans validation manuelle. Une fois en ligne, les réponses ne pourront plus être annulées.",
      "ratings-filter-label": "Filtrer par note (optionnel)",
      "ratings-filter-hint": "Laisser vide pour publier tous les brouillons.",
      "confirm-button": "Publier sur Google"
    },
    "escalation": {
      "required": "Validation humaine requise",
      "reasons": {
        "sensitive-keyword": "Mot-clé sensible détecté dans l'avis (intoxication, allergie, ou autre).",
        "low-rating": "Avis avec note basse — réponse à valider manuellement.",
        "low-confidence": "Confiance trop faible pour publier automatiquement.",
        "unmatched-customer": "Client non identifié dans votre base.",
        "ai-disabled": "L'IA n'est pas activée. Active-la dans Paramètres → Réponses IA pour générer des suggestions.",
        "negative-review-apology": "Note basse détectée — brouillon d'excuses généré, à valider avant publication.",
        "ai-escalation": "L'IA a détecté un cas particulier qui nécessite une validation manuelle.",
        "unknown": "Validation manuelle requise."
      }
    },
    "sources": {
      "google": "Google",
      "tripadvisor": "TripAdvisor (bientôt)",
      "facebook": "Facebook (bientôt)"
    },
    "filters": {
      "advanced-title": "Filtres avancés",
      "reset": "Réinitialiser",
      "ratings": "Étoiles",
      "statuses": "Statut de la réponse",
      "sources": "Source",
      "date-range": "Plage de dates",
      "select-date": "Sélectionner une plage de dates",
      "draft-status": "Brouillon IA",
      "draft-status-options": {
        "all": "Tous",
        "with-draft": "Avec brouillon IA",
        "without-draft": "Sans brouillon (en attente)"
      },
      "chip": {
        "since-date": "Depuis {date}",
        "until-date": "Jusqu'au {date}"
      }
    },
    "auto-reply-mode": {
      "title": "Mode auto-réponse IA",
      "badges": {
        "off": "IA désactivée",
        "draft": "IA en brouillon",
        "auto": "IA auto-publication"
      },
      "tooltips": {
        "off": "L'IA ne génère aucune réponse à vos avis. Activez le mode dans les paramètres.",
        "draft": "L'IA prépare des brouillons selon les notes sélectionnées. Vous les validez manuellement avant publication.",
        "auto": "L'IA répond et publie automatiquement les réponses pour les notes sélectionnées."
      },
      "descriptions": {
        "off": "Aucune réponse n'est générée par l'IA.",
        "draft": "L'IA prépare des brouillons pour les notes {ratings}★, à valider manuellement.",
        "auto": "Réponses publiées automatiquement pour les notes {ratings}★."
      },
      "configure": "Configurer"
    },
    "pending-validation-count": "{count, plural, =0 {Aucun avis à valider} one {# avis à valider} other {# avis à valider}}",
    "draft-actions": {
      "publish": "Publier",
      "edit": "Modifier",
      "dismiss": "Ignorer"
    },
    "sync": {
      "button": "Synchroniser maintenant",
      "tooltip": "Récupérer les derniers avis depuis Google"
    },
    "publish-confirm": {
      "title": "Publier cette réponse sur Google ?",
      "description": "La réponse sera publiée publiquement sur votre fiche Google, visible par tous. Vérifiez le texte avant de confirmer.",
      "confirm": "Publier sur Google"
    },
    "dismiss-confirm": {
      "title": "Ignorer cet avis ?",
      "description": "Cet avis ne sera plus repris par les générations automatiques. Vous pourrez le restaurer plus tard.",
      "confirm": "Ignorer l'avis"
    },
    "reply-source": {
      "AI": "IA",
      "AI_EDITED": "IA · retouchée",
      "MANUAL": "Écrite dans Suzzy",
      "EXTERNAL": "Sur Google"
    },
    "card": {
      "to-fix": "À corriger"
    }
  },
  "customer-reviews": {
    "tabs": {
      "internal": "Avis internes",
      "external": "Avis externes"
    }
  },
  "external-platforms": {
    "coming-soon": "Bientôt disponible",
    "config-section": {
      "title": "Connexions et plateformes"
    },
    "connect-prompt": {
      "title": "Connectez vos plateformes d'avis",
      "description": "Centralisez et répondez à vos avis externes directement depuis Suzzy."
    },
    "not-configured": {
      "not-connected": {
        "title": "Aucune plateforme externe connectée",
        "description": "Connectez Google Business Profile depuis les paramètres pour afficher vos avis externes ici.",
        "action": "Configurer dans les paramètres"
      },
      "no-location": {
        "title": "Aucune fiche Google sélectionnée",
        "description": "Sélectionnez votre fiche Google dans les paramètres pour commencer à synchroniser vos avis.",
        "action": "Sélectionner ma fiche"
      }
    },
    "google": {
      "title": "Google Business Profile",
      "description": "Synchronisez vos avis Google et répondez avec l'aide de l'IA.",
      "connect-button": "Connecter",
      "connected": "Connecté à Google",
      "disconnect": "Déconnecter",
      "status-error": "Impossible de vérifier le statut de connexion.",
      "disconnect-dialog": {
        "title": "Déconnecter Google Business Profile ?",
        "description": "Vous ne pourrez plus synchroniser ni répondre aux avis Google jusqu'à la prochaine connexion.",
        "confirm": "Déconnecter"
      },
      "location-picker": {
        "title": "Sélectionnez votre fiche Google",
        "description": "Choisissez la fiche Google Business Profile à connecter à ce magasin. Les avis affichés correspondront à cette fiche.",
        "select": "Sélectionner ma fiche Google",
        "change": "Changer de fiche",
        "confirm": "Confirmer la sélection",
        "current-badge": "Sélectionnée",
        "error": "Impossible de récupérer vos fiches Google. Réessayez dans un instant.",
        "no-locations": "Aucune fiche Google détectée sur ce compte. Vérifiez que vous avez une fiche Google Business Profile validée.",
        "open-google": "Ouvrir Google Business",
        "no-reviews": "Aucun avis",
        "pending-update": "Mise à jour Google en attente",
        "duplicate": "Fiche dupliquée"
      },
      "reconnect-required": {
        "title": "Reconnexion à Google requise",
        "description": "L'accès à votre fiche Google Business Profile a été refusé (autorisation révoquée ou insuffisante). Vos avis ne se synchronisent plus. Reconnectez votre compte Google pour reprendre la synchronisation.",
        "action": "Reconnecter Google"
      }
    },
    "tripadvisor": {
      "title": "TripAdvisor",
      "description": "Bientôt disponible — synchronisez vos avis TripAdvisor."
    },
    "facebook": {
      "title": "Facebook Pages",
      "description": "Bientôt disponible — récupérez les avis de votre page Facebook."
    },
    "yelp": {
      "title": "Yelp",
      "description": "Bientôt disponible — synchronisez vos avis Yelp."
    },
    "instagram": {
      "title": "Instagram Business",
      "description": "Bientôt disponible — connectez votre compte Instagram Business."
    }
  },
  "import-export": {
    "import-menu": "Importer le menu",
    "importing": "Importation...",
    "import": "Importer",
    "export": "Exporter",
    "export-orders": "Exporter les commandes",
    "export-period-description": "Sélectionnez la période pour laquelle vous souhaitez exporter les commandes",
    "exported": "{count} commande(s) exportée(s) avec succès",
    "export-error": "Impossible d'exporter: {error}",
    "invalid-response": "Format de réponse invalide reçu du serveur"
  },
  "csv": {
    "category": "Catégorie",
    "name": "Nom",
    "download-template": "Télécharger le modèle CSV"
  },
  "time-slots": {
    "created": "Créneaux créés avec succès!",
    "updated": "Créneau modifié avec succès",
    "schedule-deleted": "Planning supprimé avec succès",
    "schedule-delete-error": "Erreur lors de la suppression du planning",
    "schedule-created": "Planning créé avec succès !",
    "invalid-time-format": "Format d'heure invalide (HH:MM attendu)",
    "saving-error": "Erreur lors de la sauvegarde des créneaux"
  },
  "auth": {
    "login": {
      "title": "Se connecter",
      "description": "Entrez vos identifiants pour accéder à votre tableau de bord",
      "submit": "Se connecter",
      "no-account": "Vous n'avez pas de compte ?",
      "create-account": "Créez-en un ici",
      "forgot-password": "Mot de passe oublié ?",
      "remember-me": "Se souvenir de moi",
      "error": "Erreur de connexion",
      "fields": {
        "password": "Mot de passe",
        "password-placeholder": "Entrez votre mot de passe"
      }
    },
    "register": {
      "title": "Créer un compte",
      "submit": "Créer ma boutique",
      "have-account": "Vous avez déjà un compte ?",
      "login-here": "Connectez-vous ici",
      "success": "Compte créé avec succès !",
      "decorative": {
        "title": "À quelques clics de créer votre boutique",
        "subtitle": "Commencez à gérer en quelques minutes."
      },
      "stepper": {
        "personal-info": "Compte",
        "shop-info": "Boutique",
        "images": "Images",
        "schedule": "Horaires",
        "pricing": "Plan"
      },
      "steps": {
        "personal-info-title": "Créez votre compte",
        "personal-info-description": "Ces informations seront utilisées pour créer votre compte",
        "shop-info-title": "Informations de votre boutique",
        "shop-info-description": "Ajoutez les détails de votre établissement",
        "images-title": "Images de la boutique",
        "images-description": "Ajoutez une image de couverture et des photos de votre établissement",
        "schedule-title": "Horaires d'ouverture",
        "schedule-description": "Définissez vos horaires d'ouverture ou importez-les depuis Google",
        "pricing-title": "Choisissez votre plan",
        "pricing-description": "Toutes les fonctionnalités. Zéro commission. Sans engagement.",
        "pricing-error": "Impossible de charger les plans tarifaires. Veuillez réessayer."
      },
      "fields": {
        "first-name": "Prénom",
        "last-name": "Nom",
        "name": "Nom complet",
        "name-placeholder": "Entrez votre nom complet",
        "password-placeholder": "Entrez votre mot de passe"
      },
      "pricing": {
        "description": "Toutes les fonctionnalités. Zéro commission. Sans engagement.",
        "per-month": "/mois HT",
        "badges": {
          "monthly": "Mensuel"
        },
        "features": {
          "reservations": "Réservations en ligne 0% commission",
          "booking-reminders": "Rappels automatiques de réservation",
          "website": "Site web professionnel",
          "menu-qr": "Menu digital + QR code",
          "google-reviews": "Collecte d'avis Google",
          "ai-reviews": "Réponses IA aux avis",
          "boost-google": "Boost Google & SEO local",
          "loyalty": "Programme fidélité",
          "email-marketing": "Email marketing",
          "sms-campaigns": "Campagnes SMS & Email",
          "click-collect": "Click & Collect 0% commission",
          "analytics": "Analytics consolidé",
          "multi-location": "Multi-sites"
        }
      },
      "preview-label": "Aperçu",
      "confirm-password": "Confirmer le mot de passe",
      "description": "Remplissez les informations ci-dessous pour créer votre compte",
      "terms-consent": "J'accepte les <cgu>Conditions Générales d'Utilisation</cgu> et la <privacy>Politique de confidentialité</privacy> de Suzzy."
    },
    "confirm-email": {
      "success": "Email confirmé avec succès ! Redirection..."
    },
    "reset-password": {
      "title": "Nouveau mot de passe",
      "description": "Choisissez un nouveau mot de passe sécurisé pour votre compte.",
      "submit": "Réinitialiser",
      "back-to-login": "Retour à la connexion",
      "success": "Mot de passe réinitialisé avec succès !",
      "confirm-password": "Confirmer le mot de passe",
      "fields": {
        "new-password": "Nouveau mot de passe",
        "new-password-placeholder": "Entrez votre nouveau mot de passe",
        "confirm-password": "Confirmer le mot de passe",
        "confirm-password-placeholder": "Confirmez votre nouveau mot de passe"
      }
    },
    "forgot-password": {
      "email-sent": "Email envoyé !",
      "fields": {
        "email": "Adresse email"
      }
    },
    "invalid-token": {
      "title": "Lien invalide",
      "description": "Le lien de réinitialisation est invalide ou a expiré.",
      "request-new-link": "Demander un nouveau lien",
      "back-to-login": "Retour à la connexion"
    },
    "password-reset-success": {
      "title": "Mot de passe réinitialisé !",
      "description": "Votre mot de passe a été modifié avec succès. Vous pouvez maintenant vous connecter.",
      "login": "Se connecter"
    },
    "welcome": "Bienvenue sur Suzzy App",
    "tagline": "Gérez votre établissement avec simplicité et efficacité",
    "copyright": "© Suzzy. Tous droits réservés.",
    "side": {
      "reservations": "Réservations",
      "satisfaction": "Satisfaction",
      "slide-2-title": "Gérez vos réservations",
      "slide-2-description": "Suivez et organisez toutes vos réservations en temps réel",
      "slide-3-title": "Analysez vos performances",
      "slide-3-description": "Accédez à des insights détaillés pour développer votre activité",
      "today-reservations": "Réservations du jour",
      "occupancy-rate": "Taux d'occupation",
      "revenue": "Revenu mensuel",
      "new-customers": "Nouveaux clients"
    }
  },
  "tables": {
    "name": "Nom",
    "people": "Personnes",
    "guest-count-short": "{count}p",
    "no-results": "Aucun résultat trouvé.",
    "sort-by": "Trier par",
    "time": "Heure",
    "phone": "Téléphone",
    "email": "Email",
    "note": "Note",
    "internal-note": "Note interne",
    "status": "Statut",
    "created-at": "Date création",
    "order-id": "N° commande",
    "pickup-time": "Heure de retrait",
    "customer": "Client",
    "total": "Total",
    "new-updates": "Nouvelles mises à jour",
    "pagination": {
      "rows-selected": "{selected} sur {total} ligne(s) sélectionnée(s).",
      "previous": "Précédent",
      "next": "Suivant",
      "page-of": "Page {page} sur {total}",
      "label": "Pagination",
      "range": "{start}–{end} sur {total}",
      "page-size": "Nombre de lignes par page",
      "per-page": "{count} par page"
    },
    "payment": "Paiement",
    "bulk": {
      "selected": "{count} sélectionné(s) sur cette page",
      "clear": "Effacer la sélection"
    }
  },
  "menu-tabs": {
    "products": "Produits",
    "categories": "Catégories"
  },
  "monthly-calendar": {
    "exceptionally-closed": "Fermé exceptionnellement",
    "closed-day": "Jour fermé",
    "open-day": "Ouvert",
    "covers": "couverts",
    "reservations": "réservations",
    "reservations-count": "{count, plural, =0 {Aucune réservation} one {# réservation} other {# réservations}}",
    "show-reservations": "Voir les réservations",
    "actions": {
      "create-reservation": "Nouvelle réservation",
      "close-day": "Fermer ce jour",
      "reopen-day": "Rouvrir ce jour",
      "open-day": "Ouvrir ce jour"
    },
    "opening": {
      "loading": "Ouverture de la journée…",
      "success": "La journée est ouverte aux réservations.",
      "error": "Impossible d’ouvrir cette journée."
    }
  },
  "menu": {
    "tabs": {
      "products": "Produits",
      "categories": "Catégories",
      "event-menus": "Menus événementiels",
      "option-groups": "Groupes d'options",
      "selections": "Sélections"
    },
    "table": {
      "image": "Image",
      "name": "Nom",
      "price": "Prix",
      "stock": "Stock",
      "created-at": "Créé le",
      "actions": "Actions"
    },
    "created-on": "Créé le {date}",
    "stock": {
      "available": "Disponible",
      "out-of-stock": "Indisponible",
      "low": "Stock faible"
    },
    "actions": {
      "edit-item": "Modifier",
      "delete-item": "Supprimer",
      "restock": "Remettre en stock",
      "mark-low-stock": "Marquer stock faible",
      "mark-out-of-stock": "Marquer en rupture"
    },
    "delete-product-dialog": {
      "title": "Supprimer le produit",
      "description": "Êtes-vous sûr de vouloir supprimer « {name} » ? Cette action est irréversible."
    },
    "delete-category-dialog": {
      "title": "Supprimer la catégorie",
      "description": "Êtes-vous sûr de vouloir supprimer « {name} » ? Cette action est irréversible."
    },
    "import": {
      "title": "Importer le menu",
      "description": "Importez vos produits et catégories depuis un fichier CSV ou Excel.",
      "button": "Importer le menu",
      "file-label": "Fichier à importer",
      "file-selected": "Fichier sélectionné",
      "cancel": "Annuler",
      "import": "Importer",
      "importing": "Importation...",
      "file-too-large": "Fichier trop volumineux ({size}MB)",
      "max-size": "La taille maximale est de {max}MB",
      "error-retry": "Veuillez corriger les erreurs et réessayer",
      "generic-error": "Une erreur est survenue lors de l'importation"
    },
    "csv": {
      "format-info": "Respectez ce format exact dans votre fichier CSV :",
      "required-columns": "Colonnes requises :",
      "column-category": "Catégorie",
      "column-name": "Nom",
      "column-description": "Description",
      "column-price": "Prix",
      "note-label": "Note :",
      "image-note": "Ne pas inclure de colonne image - vous pourrez les ajouter manuellement après l'importation.",
      "separator-note": "Utilisez la virgule (,) comme séparateur de colonnes, pas le point-virgule (;).",
      "download-template": "Télécharger le modèle CSV"
    },
    "bulk-images": {
      "title": "Ajouter des images",
      "subtitle": "Cliquez sur un plat pour ajouter son image",
      "progress": "{count}/{total} images",
      "finish": "Terminer",
      "selected": "{count} plat(s) sélectionné(s)",
      "upload-for-selected": "Cliquez pour uploader l'image",
      "select-all": "Tout sélectionner",
      "add-image": "Ajouter images",
      "uploading": "Upload...",
      "products-label": "Produits",
      "images-label": "Images",
      "click-to-assign": "cliquez pour assigner à \"{name}\"",
      "select-product-first": "Sélectionnez d'abord un produit",
      "drop-images": "Déposez vos images ici ou cliquez",
      "saving": "Enregistrement...",
      "search-products": "Rechercher...",
      "auto-matched": "{count} image(s) assignée(s) automatiquement"
    }
  },
  "product-form": {
    "price-error": "Vous devez renseigner un prix valide (ex: 2,50€)",
    "category-error": "Vous devez sélectionner une catégorie",
    "fields": {
      "name": "Nom du produit",
      "name-placeholder": "Ex: Espresso, Croissant...",
      "description": "Description",
      "description-placeholder": "Description détaillée du produit...",
      "price": "Prix",
      "image": "Image du produit (optionnel)",
      "image-placeholder": "Cliquez pour télécharger",
      "category": "Catégorie",
      "dietary-labels": "Régimes",
      "alcoholic": "Boisson alcoolisée (18+)",
      "alcohol-abv": "Degré d'alcool (%)",
      "alcohol-abv-hint": "Obligatoire sur Uber Eats, et partout avec la petite licence.",
      "contains-spirits": "Spiritueux ou cocktail",
      "contains-spirits-hint": "Rhum, gin, vodka, whisky… et les cocktails qui en contiennent. Jamais vendu avec la petite licence.",
      "print-label": "Libellé cuisine",
      "print-label-hint": "Nom court (ex. S2) imprimé sur le ticket cuisine à la place du nom complet. Laissez vide pour garder le nom complet."
    },
    "dietary-labels": {
      "VEGETARIAN": "Végétarien",
      "VEGAN": "Végan",
      "GLUTEN_FREE": "Sans gluten",
      "HALAL": "Halal"
    }
  },
  "category-form": {
    "fields": {
      "name": "Nom de la catégorie",
      "name-placeholder": "Ex: Sushis, Pizzas, Burgers..."
    }
  },
  "delivery": {
    "gps-required": {
      "title": "Adresse géolocalisée manquante",
      "description": "Renseignez l'adresse géolocalisée de votre boutique avant d'activer la livraison.",
      "action": "Renseigner l'adresse"
    },
    "settings-title": "Paramètres de livraison",
    "history-title": "Historique des livraisons",
    "status": {
      "all": "Toutes",
      "ordered": "Reçues",
      "in-preparation": "Préparation",
      "done": "En route",
      "delivered": "Livrées",
      "cancelled": "Annulées",
      "scheduled": "Programmées",
      "history": "Historique",
      "badge": {
        "ordered": "Reçue",
        "in-preparation": "En préparation",
        "done": "En route",
        "delivered": "Livrée",
        "cancelled": "Annulée",
        "scheduled": "Programmée"
      }
    },
    "feature-status": {
      "title": "Livraison",
      "description": "Activez la livraison pour servir vos clients à domicile"
    },
    "order-type": {
      "dine-in": "Sur place",
      "click-and-collect": "Click & Collect",
      "delivery": "Livraison"
    },
    "settings": {
      "prep-time": {
        "title": "Temps de préparation",
        "description": "Temps de préparation moyen utilisé pour estimer le délai de livraison",
        "label": "Temps de préparation"
      },
      "tiers": {
        "title": "Paliers de distance",
        "description": "Définissez des frais de livraison par tranche de distance, triés par distance croissante",
        "empty": "Aucun palier configuré. Ajoutez un premier palier de distance.",
        "add": "Ajouter un palier",
        "tier-label": "Palier {number}",
        "max-km": "Jusqu'à",
        "km-suffix": "km",
        "fee": "Frais de livraison",
        "remove": "Supprimer le {label}"
      },
      "overflow": {
        "title": "Commandes hors zone",
        "description": "Choisissez le comportement au-delà du dernier palier de distance",
        "mode-refuse": "Refuser au-delà",
        "mode-refuse-description": "Les clients hors de la zone couverte ne peuvent pas commander",
        "mode-flat-fee": "Livrer à tarif fixe",
        "mode-flat-fee-description": "Appliquer un tarif unique au-delà du dernier palier, jusqu'à une distance maximale",
        "flat-fee": "Tarif fixe",
        "max-km": "Distance maximale"
      },
      "thresholds": {
        "title": "Montants de commande",
        "description": "Définissez éventuellement un montant minimum de commande et un seuil de livraison gratuite",
        "min-order": "Montant minimum de commande",
        "no-minimum": "Aucun minimum",
        "free-delivery": "Livraison gratuite dès",
        "never-free": "Jamais gratuite"
      },
      "hours": {
        "title": "Horaires de livraison",
        "description": "Définissez les horaires pendant lesquels la livraison est disponible",
        "manage": "Gérer les horaires de livraison"
      },
      "timing": {
        "title": "Préparation et horaires"
      }
    },
    "order": {
      "section-title": "Livraison",
      "distance": "Distance",
      "fee": "Frais de livraison",
      "eta": "Temps estimé",
      "fulfillment-mode": "Mode",
      "amount-to-collect": "Total",
      "subtotal": "Sous-total",
      "total": "Total",
      "km-suffix": "km",
      "minutes-suffix": "min",
      "fulfillment": {
        "asap": "Dès que possible",
        "scheduled": "Programmée"
      },
      "actions": {
        "mark-delivered": "Marquer comme livrée"
      },
      "title": "Commande #{displayId}",
      "ordered-date": "Date de commande",
      "delivery-label": "Livraison",
      "delivery-time": "Livraison : {date}",
      "error-loading": "Erreur lors du chargement des commandes",
      "no-orders": "Aucune commande"
    },
    "shop-address": {
      "title": "Adresse de l'établissement",
      "edit": "Modifier l'adresse"
    }
  },
  "click-and-collect": {
    "pickup-time-tooltip": "Heure de récupération",
    "settings-title": "Click & Collect",
    "settings-description": "Configurez les paramètres de gestion des commandes à emporter",
    "history-title": "Historique Click & Collect",
    "history-description": "Consultez vos commandes Click & Collect passées",
    "status": {
      "all": "Toutes",
      "scheduled": "Programmées",
      "history": "Historique",
      "ordered": "Reçues",
      "in-preparation": "Préparation",
      "done": "Prêtes",
      "picked-up": "Récupérées",
      "delivered": "Livrées",
      "cancelled": "Annulées"
    },
    "scheduled-panel": {
      "description": "Commandes prévues pour un autre jour. Elles passent automatiquement dans « Reçues » le jour prévu."
    },
    "actions": {
      "start": "Commencer",
      "mark-ready": "Marquer prêt",
      "picked-up": "Récupérée"
    },
    "filters": {
      "all": "Tous",
      "picked-up": "Récupérées",
      "delivered": "Livrées",
      "cancelled": "Annulées",
      "sort-by": "Trier par",
      "ascending": "Croissant",
      "descending": "Décroissant"
    },
    "sort": {
      "created-at": "Date de création",
      "schedule-time": "Heure de retrait",
      "display-id": "Numéro de commande",
      "total": "Montant total"
    },
    "export": {
      "button": "Exporter",
      "title": "Exporter les commandes",
      "description": "Sélectionnez la période pour laquelle vous souhaitez exporter les commandes",
      "period-label": "Période d'export",
      "custom-date": "Date personnalisée",
      "choose-period": "Choisir une période",
      "current-week": "Semaine en cours",
      "current-month": "Mois en cours",
      "cancel": "Annuler",
      "sort-fields": {
        "created-at": "Date de création",
        "schedule-time": "Heure de retrait",
        "total": "Montant",
        "name": "Client"
      },
      "toast": {
        "exporting": "Export en cours...",
        "success": "{count} commande(s) exportée(s) avec succès",
        "no-orders": "Aucune commande trouvée pour cette période",
        "no-date-range": "Veuillez sélectionner une période d'export",
        "error": "Impossible d'exporter les commandes",
        "max-pages": "Export limité à {maxPages} pages. Contactez le support pour plus de données.",
        "max-orders": "Export limité à {maxOrders} commandes maximum."
      },
      "columns": {
        "index": "#",
        "number": "Numéro",
        "created-at": "Date de création",
        "schedule-time": "Heure de retrait",
        "customer": "Client",
        "email": "Email",
        "phone": "Téléphone",
        "status": "Statut",
        "total": "Total (€)",
        "items": "Articles"
      }
    },
    "order": {
      "title": "Commande #{displayId}",
      "ordered-on": "Commandé le : {date}",
      "pickup": "Récupération : {date}",
      "item": "article",
      "items": "articles",
      "refunded-on": "Remboursé le {date}",
      "details": "Détails de la commande",
      "error-loading": "Erreur lors du chargement des commandes",
      "no-orders": "Aucune commande",
      "no-orders-scheduled": "Aucune commande programmée",
      "no-orders-in-category": "Aucune commande dans cette catégorie",
      "customer": "Client",
      "phone": "Téléphone",
      "email": "Email",
      "ordered-date": "Date de commande",
      "pickup-label": "Récupération"
    },
    "history": {
      "advanced-filters": "Filtres avancés",
      "period": "Période",
      "start-date": "Date de début",
      "end-date": "Date de fin",
      "select-date": "Sélectionner une date",
      "apply-filter": "Appliquer",
      "reset-to-month": "Revenir au mois",
      "previous-period": "Période précédente",
      "next-period": "Période suivante",
      "filter-status": "Statut",
      "filter-all": "Tous"
    },
    "history-empty": "Aucune commande pour cette période"
  },
  "feature-config": {
    "active": "Actif",
    "disabled": "Désactivé",
    "current-status": "Statut actuel"
  },
  "alerts": {
    "google-review-not-configured": "Lien Google Avis non configuré",
    "google-review-description": "Configurez le lien Google Avis dans les paramètres. Ce lien sera utilisé pour rediriger vos clients",
    "add-message": "Ajouter un message",
    "add-alert-message": "Ajouter un message d'alerte",
    "add-alert-message-description": "Ce message sera affiché aux clients lors de la réservation et repris dans leurs e-mails de confirmation et de rappel.",
    "message-label": "Message",
    "message-placeholder": "Message d'alerte...",
    "enter-message-placeholder": "Saisissez votre message d'alerte...",
    "delete-message": "Supprimer le message",
    "delete-message-description": "Êtes-vous sûr de vouloir supprimer ce message d'alerte ? Cette action est irréversible.",
    "add": "Ajouter",
    "cancel": "Annuler",
    "delete": "Supprimer",
    "date-picker-label": "Date exceptionnelle (optionnel)",
    "no-date": "Tous les jours",
    "exceptional-day": "Jour exceptionnel",
    "clear-date": "Effacer la date",
    "add-date": "Ajouter une date",
    "date-helper": "Laissez vide pour afficher ce message tous les jours.",
    "toggle-active": "Activer ou désactiver le message"
  },
  "google-review-form": {
    "title": "Lien Google Reviews",
    "description": "Configurez le lien de votre page Google pour permettre aux clients de laisser des avis",
    "url-label": "URL de la page Google Reviews"
  },
  "image-upload": {
    "upload-image": "Télécharger une image",
    "delete-image": "Supprimer l'image",
    "uploading": "Téléchargement...",
    "click-to-upload": "Cliquez pour télécharger",
    "invalid-image": "Veuillez sélectionner une image valide",
    "image-too-large": "L'image ne doit pas dépasser {maxSize} Mo",
    "upload-failed": "Échec du téléchargement de l'image",
    "preview": "Aperçu",
    "uploaded": "Image enregistrée"
  },
  "flyer-image-picker": {
    "title": "Choisir une image",
    "choose-image": "Choisir une image",
    "upload-tab": "Téléverser",
    "library-tab": "Bibliothèque",
    "upload-placeholder": "Glissez une image ou cliquez pour téléverser",
    "library-empty": "Aucune image n’est encore disponible dans votre bibliothèque.",
    "library-image-alt": "Image de la bibliothèque",
    "select-image": "Sélectionner cette image"
  },
  "shop-logo-upload": {
    "label": "Logo de la boutique",
    "remove": "Supprimer le logo"
  },
  "shop-logo-edit": {
    "title": "Modifier le logo",
    "description": "Téléchargez un fichier ou collez une URL, puis recadrez votre logo",
    "tab-file": "Télécharger",
    "tab-url": "URL",
    "file-hint": "Cliquez ou glissez-déposez une image",
    "url-placeholder": "https://exemple.com/logo.png",
    "url-load": "Charger l'image",
    "url-invalid": "Veuillez entrer une URL valide",
    "url-load-error": "Impossible de charger l'image",
    "loading": "Chargement...",
    "crop-hint": "Faites glisser pour ajuster la zone de recadrage",
    "processing": "Traitement...",
    "save": "Enregistrer",
    "cancel": "Annuler",
    "reset": "Choisir une autre image",
    "crop-error": "Échec du traitement de l'image"
  },
  "image-crop": {
    "title": "Modifier l'image",
    "description": "Téléchargez un fichier ou collez une URL, puis recadrez votre image",
    "tab-file": "Télécharger",
    "tab-url": "URL",
    "file-hint": "Cliquez ou glissez-déposez une image",
    "url-placeholder": "https://exemple.com/image.png",
    "url-load": "Charger l'image",
    "url-invalid": "Veuillez entrer une URL valide",
    "url-load-error": "Impossible de charger l'image",
    "loading": "Chargement...",
    "aspect-ratio": "Format",
    "ratio-free": "Libre",
    "processing": "Traitement...",
    "save": "Enregistrer",
    "cancel": "Annuler",
    "reset": "Choisir une autre image",
    "crop-error": "Échec du traitement de l'image"
  },
  "address": {
    "address": "Adresse",
    "search-error": "Erreur lors de la recherche d'adresse"
  },
  "trustpilot-dialog": {
    "title": "Vous aimez utiliser Suzzy ?",
    "subtitle": "Votre avis fait toute la différence",
    "description": "Prenez 30 secondes pour partager votre expérience sur Trustpilot. Vos retours aident d'autres restaurateurs indépendants et soutiennent le développement continu de vos outils.",
    "cta": "Noter Suzzy sur Trustpilot",
    "later": "Plus tard",
    "already-done": "C'est déjà fait !"
  },
  "settings-page": {
    "title": "Paramètres",
    "description": "Gérez vos informations personnelles et préférences",
    "subscription": "Abonnement",
    "subscription-description": "Gérer votre abonnement et facturation",
    "open-hours": "Horaires d'ouverture",
    "open-hours-description": "Gérer les horaires et créneaux de votre boutique",
    "logout": "Se déconnecter",
    "logging-out": "Déconnexion...",
    "notifications": "Notifications",
    "trustpilot": {
      "title": "Votre avis compte",
      "description": "Vous appréciez Suzzy ? Laissez-nous 5 étoiles sur Trustpilot pour soutenir nos équipes et aider d'autres restaurateurs indépendants.",
      "rating": "Excellent sur Trustpilot",
      "cta-short": "Donner mon avis"
    },
    "legal": {
      "title": "Documents légaux",
      "description": "Les documents qui encadrent votre utilisation de Suzzy.",
      "mentions-legales": "Mentions légales",
      "cgv": "Conditions générales de vente",
      "dpa": "Accord de sous-traitance (DPA)",
      "privacy-policy": "Politique de confidentialité",
      "cookies": "Politique cookies",
      "right-to-erasure": "Droit à l'effacement (RGPD)",
      "my-acceptances": "Mes acceptations",
      "docs": {
        "cgv": "Abonnement, facturation et résiliation",
        "dpa": "Protection des données de vos clients",
        "privacy": "Comment Suzzy traite vos données",
        "cookies": "Traceurs utilisés sur le service",
        "mentions": "Éditeur et hébergeur du service"
      },
      "my-acceptances-description": "Conditions acceptées et attestations PDF"
    },
    "preferences": {
      "title": "Préférences",
      "description": "Apparence, langue et notifications",
      "theme": "Thème",
      "theme-description": "Clair, sombre ou selon votre appareil",
      "language": "Langue",
      "language-description": "Langue de l'interface",
      "notifications-description": "Canaux et catégories que vous recevez",
      "manage": "Gérer"
    },
    "session": {
      "title": "Session",
      "description": "Vous déconnecter de Suzzy sur cet appareil."
    }
  },
  "account": {
    "active-account": "Compte actif",
    "email": "Email :",
    "phone": "Téléphone :",
    "member-since": "Membre depuis :",
    "edit-profile": "Modifier le profil",
    "edit-profile-description": "Modifiez vos informations personnelles",
    "personal-info": "Informations personnelles",
    "change-password": "Changer le mot de passe",
    "change-password-description": "Laissez vide pour conserver le mot de passe actuel",
    "danger-zone": {
      "title": "Zone de danger",
      "button": "Supprimer mon compte",
      "lead": "Supprimer votre compte est définitif et ne peut pas être annulé.",
      "items": {
        "data": "Vos données personnelles sont anonymisées",
        "devices": "Tous vos appareils sont déconnectés",
        "subscription": "Tout abonnement actif est annulé",
        "shops": "Les boutiques dont vous êtes l'unique administrateur sont supprimées"
      }
    },
    "delete-dialog": {
      "title": "Supprimer définitivement votre compte",
      "step-1-description": "Cette action est irréversible. Pour continuer, saisissez exactement la phrase suivante : {phrase}",
      "step-1-placeholder": "SUPPRIMER MON COMPTE",
      "step-2-description": "Confirmez votre identité en saisissant votre mot de passe actuel.",
      "step-2-placeholder": "Mot de passe actuel",
      "cancel": "Annuler",
      "continue": "Continuer",
      "confirm": "Supprimer mon compte"
    }
  },
  "toasts": {
    "info": {
      "sync-external-reviews-skipped": "Vos avis sont déjà à jour — rien à récupérer pour le moment."
    },
    "loading": {
      "delete-order": "Suppression de la commande…",
      "update-user": "Mise à jour du profil...",
      "login": "Connexion en cours...",
      "logout": "Déconnexion en cours...",
      "register": "Création du compte en cours...",
      "confirm-email": "Confirmation en cours...",
      "reset-password": "Réinitialisation en cours...",
      "request-password-reset": "Envoi du lien en cours...",
      "create-shop": "Création du magasin en cours...",
      "update-shop": "Modification en cours...",
      "delete-shop": "Suppression en cours...",
      "update-shop-settings": "Mise à jour en cours...",
      "update-auto-tagging-settings": "Mise à jour des tags automatiques...",
      "update-theme-settings": "Mise à jour du thème en cours...",
      "create-category": "Création de la catégorie en cours...",
      "update-category": "Modification de la catégorie en cours...",
      "delete-category": "Suppression de la catégorie en cours...",
      "create-product": "Création du produit en cours...",
      "update-product": "Modification du produit en cours...",
      "delete-product": "Suppression du produit en cours...",
      "bulk-delete-products": "Suppression des produits en cours...",
      "bulk-delete-categories": "Suppression des catégories en cours...",
      "reorder-categories": "Réorganisation des catégories en cours...",
      "reorder-products": "Réorganisation des produits en cours...",
      "bulk-create-products": "Importation des produits en cours...",
      "create-schedule": "Création du planning en cours...",
      "delete-schedule": "Suppression du planning...",
      "create-time-slots": "Création des créneaux en cours...",
      "update-time-slot": "Modification du créneau...",
      "delete-time-slot": "Suppression du créneau...",
      "update-order": "Mise à jour de la commande...",
      "cancel-order": "Annulation de la commande...",
      "export-orders": "Export des commandes en cours...",
      "create-reservation": "Création de la réservation...",
      "cancel-reservation": "Annulation de la réservation en cours...",
      "complete-reservation": "Marquage de la réservation comme terminée...",
      "absent-reservation": "Marquage de la réservation comme absent...",
      "send-confirmation": "Envoi de la relance...",
      "send-message": "Envoi du message...",
      "update-reservation": "Mise à jour de la réservation...",
      "create-campaign": "Création de la campagne...",
      "update-campaign": "Mise à jour de la campagne...",
      "toggle-campaign": "Modification du statut...",
      "toggle-game-campaign": "Modification du statut...",
      "create-game-campaign": "Création de la campagne...",
      "update-game-campaign": "Mise à jour de la campagne...",
      "delete-game-campaign": "Suppression de la campagne...",
      "update-marketing-campaign": "Mise à jour de la campagne marketing...",
      "delete-marketing-campaign": "Suppression de la campagne marketing...",
      "toggle-marketing-campaign": "Démarrage/arrêt de la campagne...",
      "create-reward": "Création de la récompense...",
      "update-reward": "Mise à jour de la récompense...",
      "delete-reward": "Retrait du lot…",
      "batch-update-rewards": "Équilibrage en cours...",
      "billing-portal": "Redirection vers le portail de facturation...",
      "apply-wheel-theme": "Application du thème...",
      "validate-redemption": "Validation en cours...",
      "mark-redemption-collected": "Marquage comme récupérée...",
      "mark-redemption-uncollected": "Marquage comme non récupérée...",
      "toggle-features": "Modification des fonctionnalités...",
      "activate-features": "Activation des fonctionnalités...",
      "deactivate-features": "Désactivation des fonctionnalités...",
      "create-customer": "Création du client...",
      "update-customer": "Mise à jour du client...",
      "delete-customer": "Suppression du client...",
      "adjust-sms": "Ajustement des crédits SMS...",
      "create-subscription": "Création de l'abonnement...",
      "update-subscription": "Mise à jour de l'abonnement...",
      "create-loyalty-program": "Création du programme...",
      "update-loyalty-program": "Mise à jour du programme...",
      "reject-loyalty-referral": "Refus du parrainage...",
      "delete-loyalty-program": "Suppression du programme...",
      "toggle-loyalty-program": "Modification du statut...",
      "create-loyalty-tier": "Création du palier...",
      "update-loyalty-tier": "Mise à jour du palier...",
      "delete-loyalty-tier": "Suppression du palier...",
      "create-loyalty-reward": "Création de la récompense...",
      "update-loyalty-reward": "Mise à jour de la récompense...",
      "delete-loyalty-reward": "Suppression de la récompense...",
      "delete-loyalty-card": "Suppression de la carte...",
      "enroll-loyalty-card": "Inscription en cours...",
      "adjust-loyalty-balance": "Ajustement du solde...",
      "redeem-loyalty-reward": "Échange de la récompense...",
      "credit-loyalty-card": "Crédit en cours...",
      "lookup-loyalty-card": "Recherche du membre...",
      "download-apple-pass": "Téléchargement du pass Apple...",
      "generate-google-wallet-url": "Génération du lien Google Wallet...",
      "save-translation": "Sauvegarde de la traduction...",
      "delete-translation": "Suppression de la traduction...",
      "bulk-translate": "Lancement de la traduction IA...",
      "create-disabled-slot": "Désactivation en cours...",
      "delete-disabled-slot": "Réactivation en cours...",
      "create-restaurant-table": "Création de la table...",
      "update-restaurant-table": "Mise à jour de la table...",
      "delete-restaurant-table": "Suppression de la table...",
      "assign-reservation-table": "Assignation de la table...",
      "promote-reservation": "Promotion de la réservation en cours...",
      "confirm-reservation": "Confirmation de la réservation...",
      "set-pending-reservation": "Mise en attente de la réservation...",
      "change-reservation-status": "Changement de statut en cours...",
      "bulk-update-reservations": "Mise à jour des réservations en cours...",
      "bulk-send-message": "Envoi des messages en cours...",
      "import-reservations": "Importation des réservations...",
      "import-customers": "Importation des clients...",
      "resume-subscription": "Reprise de l'abonnement...",
      "update-trial": "Mise à jour de la période d'essai...",
      "create-checkout-link": "Génération du lien de paiement...",
      "delete-payment-method": "Suppression de la carte...",
      "update-payment-method": "Mise à jour du moyen de paiement...",
      "set-default-payment-method": "Mise à jour...",
      "update-widget-config": "Mise à jour du widget...",
      "accept-invitation": "Acceptation de l'invitation en cours...",
      "invite-member": "Envoi de l'invitation...",
      "change-member-role": "Modification du rôle...",
      "remove-member": "Suppression du membre...",
      "revoke-invitation": "Annulation de l'invitation...",
      "delete-reservation": "Suppression en cours…",
      "update-schedule": "Mise à jour du planning...",
      "create-event-menu": "Création du menu événementiel…",
      "update-event-menu": "Mise à jour du menu événementiel…",
      "delete-event-menu": "Suppression du menu événementiel…",
      "change-event-menu-mode": "Changement du mode…",
      "add-event-menu-time-range": "Ajout de la plage…",
      "remove-event-menu-time-range": "Suppression de la plage…",
      "upsert-event-menu-translation": "Enregistrement de la traduction…",
      "suggest-reply": "Génération de la suggestion IA...",
      "publish-reply": "Publication de la réponse...",
      "update-reply": "Mise à jour de la réponse...",
      "confirm-customer-match": "Confirmation du client...",
      "dismiss-reply": "Mise au rebut de l'avis...",
      "update-ai-reply-settings": "Mise à jour des paramètres IA...",
      "improve-reply": "Amélioration du brouillon en cours...",
      "revoke-oauth": "Déconnexion en cours...",
      "set-google-location": "Enregistrement de la fiche Google...",
      "sync-single-review": "Synchronisation de l'avis...",
      "update-notification-preferences": "Enregistrement des préférences de notification...",
      "delete-account": "Suppression de votre compte en cours...",
      "switch-loyalty-mode": "Changement de mode de fidélité...",
      "admin-onboarding": "Onboarding en cours d'envoi...",
      "seed-game-rewards": "Création des lots prédéfinis...",
      "request-cancellation": "Envoi de votre demande...",
      "create-option-group": "Création du groupe d'options…",
      "update-option-group": "Mise à jour du groupe d'options…",
      "delete-option-group": "Suppression du groupe d'options…",
      "reorder-option-groups": "Réorganisation des groupes…",
      "save-item-option-groups": "Enregistrement des groupes d'options…",
      "create-automation": "Création de l’automatisation…",
      "update-automation": "Mise à jour de l’automatisation…",
      "publish-automation": "Publication de l’automatisation…",
      "pause-automation": "Mise en pause…",
      "archive-automation": "Archivage…",
      "update-automation-settings": "Mise à jour des paramètres…",
      "test-run-automation": "Test en cours…",
      "duplicate-automation": "Duplication en cours...",
      "google-reserve-activate": "Activation de Google Reserve...",
      "google-reserve-deactivate": "Désactivation de Google Reserve...",
      "discovery-update": "Enregistrement des paramètres de découverte...",
      "collect-order-payment": "Encaissement en cours...",
      "cancel-order-payment": "Annulation en cours...",
      "create-menu-selection": "Création de la sélection…",
      "update-menu-selection": "Mise à jour de la sélection…",
      "delete-menu-selection": "Suppression de la sélection…",
      "reorder-menu-selections": "Réorganisation des sélections…",
      "save-menu-selection-items": "Enregistrement des produits…",
      "create-room": "Création de la salle...",
      "update-room": "Mise à jour de la salle...",
      "delete-room": "Suppression de la salle...",
      "reorder-rooms": "Mise à jour de l'ordre des salles...",
      "set-room-services": "Mise à jour des services de la salle...",
      "create-table-combination": "Création du groupement...",
      "update-table-combination": "Mise à jour du groupement...",
      "delete-table-combination": "Suppression du groupement...",
      "record-consent": "Enregistrement…",
      "update-sms-cap": "Mise à jour du plafond SMS...",
      "update-sms-price": "Mise à jour du prix SMS..."
    },
    "success": {
      "delete-order": "Commande supprimée définitivement",
      "update-user": "Profil mis à jour avec succès !",
      "login": "Connexion réussie!",
      "logout": "Déconnexion réussie!",
      "register": "Compte créé avec succès !",
      "confirm-email": "Email confirmé avec succès ! Redirection...",
      "reset-password": "Mot de passe réinitialisé avec succès !",
      "request-password-reset": "Lien de réinitialisation envoyé ! Vérifiez vos emails.",
      "create-shop": "Magasin créé avec succès!",
      "update-shop": "Boutique modifiée avec succès !",
      "delete-shop": "Magasin supprimé avec succès!",
      "update-shop-settings": "Paramètres mis à jour avec succès !",
      "update-auto-tagging-settings": "Tags automatiques mis à jour avec succès !",
      "update-theme-settings": "Thème mis à jour avec succès !",
      "create-category": "Catégorie créée avec succès !",
      "update-category": "Catégorie modifiée avec succès !",
      "delete-category": "Catégorie supprimée avec succès!",
      "create-product": "Produit créé avec succès !",
      "update-product": "Produit modifié avec succès !",
      "bulk-update-products": "{count} produit(s) modifié(s) avec succès !",
      "bulk-update-products-partial": "{succeeded} produit(s) modifié(s), {failed} échec(s)",
      "delete-product": "Produit supprimé avec succès !",
      "bulk-delete-products": "{count} produit(s) supprimé(s) avec succès !",
      "bulk-delete-products-partial": "{successCount} produit(s) supprimé(s), {failureCount} échec(s)",
      "bulk-delete-categories": "{count} catégorie(s) supprimée(s) avec succès !",
      "bulk-delete-categories-partial": "{successCount} catégorie(s) supprimée(s), {failureCount} échec(s)",
      "reorder-categories": "Catégories réorganisées avec succès !",
      "reorder-products": "Produits réorganisés avec succès !",
      "bulk-create-products": "{count} produit(s) importé(s) avec succès !",
      "create-schedule": "Planning créé avec succès !",
      "delete-schedule": "Planning supprimé avec succès",
      "create-time-slots": "Créneaux créés avec succès!",
      "update-time-slot": "Créneau modifié avec succès",
      "delete-time-slot": "Créneau supprimé avec succès",
      "update-order": "Commande mise à jour avec succès!",
      "cancel-order": "Commande annulée et remboursée avec succès!",
      "export-orders": "{count} commande(s) exportée(s) avec succès",
      "create-reservation": "Réservation créée avec succès!",
      "cancel-reservation": "Réservation annulée avec succès",
      "complete-reservation": "Réservation marquée comme terminée",
      "absent-reservation": "Réservation marquée comme absent",
      "send-confirmation": "Relance envoyée avec succès",
      "send-message": "Message envoyé avec succès",
      "send-message-with-channel": "Message envoyé par {channel}",
      "update-reservation": "Réservation mise à jour avec succès",
      "create-campaign": "Campagne créée avec succès!",
      "update-campaign": "Campagne mise à jour avec succès!",
      "toggle-campaign": "Statut de la campagne modifié avec succès!",
      "toggle-game-campaign": "Statut de la campagne modifié avec succès!",
      "create-game-campaign": "Campagne créée avec succès!",
      "update-game-campaign": "Campagne mise à jour avec succès!",
      "delete-game-campaign": "Campagne supprimée avec succès!",
      "create-marketing-campaign": "Campagne marketing créée avec succès!",
      "update-marketing-campaign": "Campagne marketing mise à jour avec succès!",
      "delete-marketing-campaign": "Campagne marketing supprimée avec succès!",
      "toggle-marketing-campaign": "Statut de la campagne marketing modifié avec succès!",
      "create-reward": "Récompense créée avec succès!",
      "update-reward": "Récompense mise à jour avec succès!",
      "delete-reward": "Lot retiré de la roue",
      "batch-update-rewards": "Récompenses équilibrées avec succès!",
      "billing-portal": "Redirection en cours...",
      "apply-wheel-theme": "Thème appliqué avec succès!",
      "validate-redemption": "Lot validé avec succès!",
      "mark-redemption-collected": "Récompense marquée comme récupérée.",
      "mark-redemption-uncollected": "Récompense marquée comme non récupérée.",
      "toggle-features": "Fonctionnalités modifiées avec succès!",
      "activate-features": "Fonctionnalités activées avec succès!",
      "deactivate-features": "Fonctionnalités désactivées avec succès!",
      "create-customer": "Client créé avec succès!",
      "update-customer": "Client mis à jour avec succès!",
      "delete-customer": "Client supprimé avec succès!",
      "adjust-sms": "Crédits SMS ajustés avec succès!",
      "create-subscription": "Abonnement créé avec succès!",
      "update-subscription": "Abonnement mis à jour avec succès!",
      "create-loyalty-program": "Programme créé avec succès!",
      "update-loyalty-program": "Programme mis à jour avec succès!",
      "reject-loyalty-referral": "Parrainage refusé avec succès!",
      "delete-loyalty-program": "Programme supprimé avec succès!",
      "toggle-loyalty-program": "Statut du programme modifié avec succès!",
      "create-loyalty-tier": "Palier créé avec succès!",
      "update-loyalty-tier": "Palier mis à jour avec succès!",
      "delete-loyalty-tier": "Palier supprimé avec succès!",
      "create-loyalty-reward": "Récompense créée avec succès!",
      "update-loyalty-reward": "Récompense mise à jour avec succès!",
      "delete-loyalty-reward": "Récompense supprimée avec succès!",
      "delete-loyalty-card": "Client retiré de la fidélité",
      "enroll-loyalty-card": "Inscription réussie !",
      "adjust-loyalty-balance": "Solde ajusté avec succès!",
      "redeem-loyalty-reward": "Récompense échangée avec succès!",
      "credit-loyalty-card": "Points crédités avec succès!",
      "wallet-update-queued": "La mise à jour de la carte Wallet est lancée",
      "download-apple-pass": "Pass Apple téléchargé avec succès",
      "generate-google-wallet-url": "Lien Google Wallet généré avec succès",
      "save-translation": "Traduction sauvegardée avec succès !",
      "delete-translation": "Traduction supprimée avec succès !",
      "bulk-translate": "Traduction IA lancée avec succès !",
      "create-disabled-slot": "Créneau désactivé",
      "delete-disabled-slot": "Créneau réactivé",
      "create-restaurant-table": "Table créée",
      "update-restaurant-table": "Table mise à jour",
      "delete-restaurant-table": "Table supprimée",
      "assign-reservation-table": "Table assignée",
      "promote-reservation": "Réservation passée en confirmation",
      "confirm-reservation": "Réservation confirmée",
      "set-pending-reservation": "Réservation mise en attente",
      "change-reservation-status": "Statut de la réservation modifié",
      "bulk-update-reservations": "{count} réservation(s) mise(s) à jour",
      "bulk-update-reservations-partial": "{succeeded} mise(s) à jour, {failed} échec(s)",
      "bulk-send-message": "{count} message(s) envoyé(s)",
      "bulk-send-message-partial": "{succeeded} envoyé(s), {failed} échec(s)",
      "import-reservations": "Réservations importées avec succès",
      "import-reservations-partial": "{succeeded} importée(s), {failed} échouée(s), {duplicates} doublon(s) ignoré(s)",
      "import-customers": "{created} client(s) créé(s), {updated} mis à jour, {nonMarketable} hors marketing",
      "import-customers-partial": "{created} créé(s), {updated} mis à jour, {nonMarketable} hors marketing, {conflicts} conflit(s), {failed} échec(s)",
      "resume-subscription": "Abonnement repris avec succès !",
      "update-trial": "Période d'essai mise à jour avec succès !",
      "create-checkout-link": "Lien de paiement généré !",
      "delete-payment-method": "Carte supprimée",
      "update-payment-method": "Moyen de paiement mis à jour",
      "add-card": "Carte ajoutée avec succès",
      "set-default-payment-method": "Moyen de paiement par défaut mis à jour",
      "update-widget-config": "Configuration du widget enregistrée",
      "accept-invitation": "Invitation acceptée avec succès !",
      "invite-member": "Invitation envoyée avec succès !",
      "change-member-role": "Rôle modifié avec succès !",
      "remove-member": "Membre supprimé avec succès !",
      "revoke-invitation": "Invitation annulée avec succès !",
      "delete-reservation": "Réservation supprimée",
      "update-schedule": "Planning mis à jour",
      "create-event-menu": "Menu événementiel créé",
      "update-event-menu": "Menu événementiel mis à jour",
      "delete-event-menu": "Menu événementiel supprimé",
      "activate-event-menu": "Menu activé",
      "deactivate-event-menu": "Menu désactivé",
      "change-event-menu-mode": "Mode mis à jour",
      "add-event-menu-time-range": "Plage ajoutée",
      "remove-event-menu-time-range": "Plage supprimée",
      "upsert-event-menu-translation": "Traduction enregistrée",
      "suggest-reply": "Suggestion IA générée !",
      "publish-reply": "Réponse publiée avec succès !",
      "update-reply": "Réponse mise à jour avec succès !",
      "confirm-customer-match": "Client confirmé",
      "dismiss-reply": "Avis ignoré",
      "update-ai-reply-settings": "Paramètres IA mis à jour avec succès !",
      "improve-reply": "Brouillon amélioré avec succès !",
      "bulk-respond-draft": "{count} avis en cours de traitement. Les brouillons apparaîtront au fur et à mesure.",
      "bulk-respond-publish": "{count} avis en cours de traitement. Les réponses seront publiées au fur et à mesure.",
      "bulk-publish": "{count} réponse(s) en cours de publication sur Google.",
      "revoke-oauth": "Connexion déconnectée avec succès.",
      "set-google-location": "Fiche Google connectée avec succès.",
      "sync-external-reviews": "Synchronisation lancée — les avis se mettront à jour dans quelques instants.",
      "reanalyze-external-reviews": "Réanalyse lancée — les résultats vont se mettre à jour progressivement.",
      "sync-single-review": "Avis synchronisé avec succès",
      "update-notification-preferences": "Préférences de notification enregistrées !",
      "delete-account": "Compte supprimé avec succès. À bientôt !",
      "switch-loyalty-mode": "Changement de mode de fidélité lancé",
      "seed-game-rewards": "Lots prédéfinis créés!",
      "request-cancellation": "Votre demande a été transmise, notre équipe vous recontacte.",
      "publish-reply-enqueued": "Publication lancée — la réponse apparaîtra sur Google d'ici quelques instants.",
      "create-option-group": "Groupe d'options créé",
      "update-option-group": "Groupe d'options mis à jour",
      "delete-option-group": "Groupe d'options supprimé",
      "reorder-option-groups": "Groupes réorganisés",
      "save-item-option-groups": "Groupes d'options enregistrés",
      "create-automation": "Automatisation créée",
      "update-automation": "Automatisation mise à jour",
      "publish-automation": "Automatisation publiée",
      "pause-automation": "Automatisation mise en pause",
      "archive-automation": "Automatisation archivée",
      "update-automation-settings": "Paramètres mis à jour",
      "test-run-automation": "Test lancé",
      "duplicate-automation": "Automatisation dupliquée",
      "collect-campaign-reward": "Récompense remise",
      "google-reserve-activate": "Google Reserve activé",
      "google-reserve-deactivate": "Google Reserve désactivé",
      "discovery-update": "Paramètres de découverte enregistrés",
      "collect-order-payment": "Commande encaissée !",
      "cancel-order-payment": "Encaissement annulé",
      "open-dine-in-visit": "Service ouvert sur cette table",
      "create-menu-selection": "Sélection créée",
      "update-menu-selection": "Sélection mise à jour",
      "delete-menu-selection": "Sélection supprimée",
      "reorder-menu-selections": "Sélections réorganisées",
      "save-menu-selection-items": "Produits enregistrés",
      "create-room": "Salle créée",
      "update-room": "Salle mise à jour",
      "delete-room": "Salle supprimée",
      "reorder-rooms": "Ordre des salles mis à jour",
      "set-room-services": "Services de la salle mis à jour",
      "create-table-combination": "Groupement créé",
      "update-table-combination": "Groupement mis à jour",
      "delete-table-combination": "Groupement supprimé",
      "record-consent": "Merci, c'est enregistré",
      "update-sms-cap": "Plafond SMS mis à jour",
      "update-sms-price": "Prix SMS mis à jour",
      "table-released": "Table libérée à {time}"
    },
    "error": {
      "delete-order": "Échec de la suppression de la commande",
      "update-user": "Échec de la mise à jour du profil",
      "login": "Erreur de connexion",
      "logout": "Échec de la déconnexion",
      "register": "Échec de la création du compte",
      "confirm-email": "Échec de la confirmation",
      "reset-password": "Échec de la réinitialisation",
      "request-password-reset": "Échec de l'envoi du lien",
      "create-shop": "Échec de la création du magasin",
      "update-shop": "Échec de la modification",
      "delete-shop": "Échec de la suppression",
      "update-shop-settings": "Échec de la mise à jour",
      "update-auto-tagging-settings": "Échec de la mise à jour des tags automatiques",
      "update-theme-settings": "Échec de la mise à jour du thème",
      "create-category": "Échec de la création",
      "update-category": "Échec de la modification",
      "delete-category": "Échec de la suppression",
      "create-product": "Échec de la création du produit",
      "fetch-products": "Échec du chargement des produits",
      "update-product": "Échec de la modification du produit",
      "delete-product": "Échec de la suppression du produit",
      "bulk-delete-products": "Échec de la suppression des produits",
      "bulk-delete-categories": "Échec de la suppression des catégories",
      "reorder-categories": "Échec de la réorganisation des catégories",
      "reorder-products": "Échec de la réorganisation des produits",
      "bulk-create-products": "Échec de l'importation des produits",
      "create-schedule": "Échec de la création du planning",
      "delete-schedule": "Erreur lors de la suppression du planning",
      "create-time-slots": "Échec de la création des créneaux horaires",
      "update-time-slot": "Échec de la modification du créneau",
      "delete-time-slot": "Échec de la suppression du créneau",
      "update-order": "Échec de la mise à jour",
      "cancel-order": "Échec de l'annulation",
      "export-orders": "Impossible d'exporter: {error}",
      "create-reservation": "Échec de la création de la réservation",
      "cancel-reservation": "Erreur lors de l'annulation de la réservation",
      "complete-reservation": "Erreur lors du marquage de la réservation",
      "absent-reservation": "Erreur lors du marquage de la réservation",
      "send-confirmation": "Échec de l'envoi de la relance",
      "send-message": "Échec de l'envoi du message",
      "update-reservation": "Échec de la mise à jour de la réservation",
      "upload-document": "Échec du téléchargement du document",
      "create-campaign": "Échec de la création de la campagne",
      "update-campaign": "Échec de la mise à jour de la campagne",
      "toggle-campaign": "Échec du changement de statut de la campagne",
      "toggle-game-campaign": "Échec du changement de statut de la campagne",
      "create-game-campaign": "Échec de la création de la campagne",
      "update-game-campaign": "Échec de la mise à jour de la campagne",
      "delete-game-campaign": "Échec de la suppression de la campagne",
      "create-marketing-campaign": "Échec de la création de la campagne marketing",
      "update-marketing-campaign": "Échec de la mise à jour de la campagne marketing",
      "delete-marketing-campaign": "Échec de la suppression de la campagne marketing",
      "toggle-marketing-campaign": "Échec du démarrage/arrêt de la campagne marketing",
      "create-reward": "Échec de la création de la récompense",
      "update-reward": "Échec de la mise à jour de la récompense",
      "delete-reward": "Échec de la suppression de la récompense",
      "batch-update-rewards": "Échec de l'équilibrage des récompenses",
      "billing-portal": "Échec de l'ouverture du portail de facturation",
      "apply-wheel-theme": "Échec de l'application du thème",
      "validate-redemption": "Échec de la validation du lot",
      "mark-redemption-collected": "Impossible de marquer la récompense comme récupérée",
      "mark-redemption-uncollected": "Impossible de marquer la récompense comme non récupérée",
      "toggle-features": "Échec de la modification des fonctionnalités",
      "activate-features": "Échec de l'activation des fonctionnalités",
      "deactivate-features": "Échec de la désactivation des fonctionnalités",
      "upload-image": "Échec du téléchargement de l'image",
      "address-search": "Erreur lors de la recherche d'adresse",
      "slot-save-partial": "Échec de sauvegarde de {count} créneau(x)",
      "slot-save-error": "Erreur lors de la sauvegarde des créneaux",
      "create-customer": "Échec de la création du client",
      "update-customer": "Échec de la mise à jour du client",
      "delete-customer": "Échec de la suppression du client",
      "adjust-sms": "Échec de l'ajustement des crédits SMS",
      "create-subscription": "Échec de la création de l'abonnement",
      "update-subscription": "Échec de la mise à jour de l'abonnement",
      "create-loyalty-program": "Échec de la création du programme",
      "update-loyalty-program": "Échec de la mise à jour du programme",
      "reject-loyalty-referral": "Échec du refus du parrainage",
      "delete-loyalty-program": "Échec de la suppression du programme",
      "toggle-loyalty-program": "Échec du changement de statut",
      "create-loyalty-tier": "Échec de la création du palier",
      "update-loyalty-tier": "Échec de la mise à jour du palier",
      "delete-loyalty-tier": "Échec de la suppression du palier",
      "create-loyalty-reward": "Échec de la création de la récompense",
      "update-loyalty-reward": "Échec de la mise à jour de la récompense",
      "delete-loyalty-reward": "Échec de la suppression de la récompense",
      "delete-loyalty-card": "Échec de la suppression de la carte de fidélité",
      "enroll-loyalty-card": "Échec de l'inscription",
      "adjust-loyalty-balance": "Échec de l'ajustement du solde",
      "redeem-loyalty-reward": "Échec de l'échange de la récompense",
      "credit-loyalty-card": "Échec du crédit de points",
      "lookup-loyalty-card": "Échec de la recherche du membre",
      "scan": "Échec du scan",
      "scan-timeout": "Le scan a expiré, réessayez",
      "lookup-loyalty-card-not-found": "Membre non trouvé",
      "download-apple-pass": "Échec du téléchargement du pass Apple",
      "generate-google-wallet-url": "Échec de la génération du lien Google Wallet",
      "save-translation": "Échec de la sauvegarde de la traduction",
      "delete-translation": "Échec de la suppression de la traduction",
      "bulk-translate": "Échec du lancement de la traduction IA",
      "translation-already-in-progress": "Une traduction est déjà en cours",
      "translation-quota-exceeded": "Trop de demandes de traduction, veuillez réessayer plus tard",
      "create-disabled-slot": "Erreur lors de la désactivation",
      "delete-disabled-slot": "Erreur lors de la réactivation",
      "create-restaurant-table": "Échec de la création de la table",
      "update-restaurant-table": "Échec de la mise à jour de la table",
      "delete-restaurant-table": "Échec de la suppression de la table",
      "assign-reservation-table": "Échec de l'assignation de la table",
      "promote-reservation": "Erreur lors de la promotion de la réservation",
      "confirm-reservation": "Erreur lors de la confirmation de la réservation",
      "set-pending-reservation": "Erreur lors de la mise en attente de la réservation",
      "change-reservation-status": "Erreur lors du changement de statut",
      "bulk-update-reservations": "Échec de la mise à jour des réservations",
      "bulk-send-message": "Échec de l'envoi des messages",
      "import-reservations": "Échec de l'importation des réservations",
      "import-customers": "Échec de l'importation des clients",
      "resume-subscription": "Échec de la reprise de l'abonnement",
      "update-trial": "Échec de la mise à jour de la période d'essai",
      "create-checkout-link": "Échec de la génération du lien de paiement",
      "delete-payment-method": "Échec de la suppression",
      "update-payment-method": "Échec de la mise à jour du moyen de paiement",
      "set-default-payment-method": "Échec de la mise à jour",
      "customer-session": "Échec de la création de la session client",
      "update-widget-config": "Échec de la mise à jour du widget",
      "generic": "Une erreur est survenue",
      "accept-invitation": "Échec de l'acceptation de l'invitation",
      "invite-member": "Échec de l'envoi de l'invitation",
      "change-member-role": "Échec de la modification du rôle",
      "remove-member": "Échec de la suppression du membre",
      "revoke-invitation": "Échec de l'annulation de l'invitation",
      "delete-reservation": "Échec de la suppression",
      "update-schedule": "Échec de la mise à jour du planning",
      "create-event-menu": "Échec de la création du menu événementiel",
      "update-event-menu": "Échec de la mise à jour du menu événementiel",
      "delete-event-menu": "Échec de la suppression du menu événementiel",
      "toggle-event-menu-active": "Échec du changement de statut du menu événementiel",
      "change-event-menu-mode": "Échec du changement de mode",
      "add-event-menu-time-range": "Échec de l'ajout de la plage",
      "remove-event-menu-time-range": "Échec de la suppression de la plage",
      "upsert-event-menu-translation": "Échec de l'enregistrement de la traduction",
      "suggest-reply": "Échec de la génération de la suggestion IA",
      "publish-reply": "Échec de la publication de la réponse",
      "update-reply": "Échec de la mise à jour de la réponse",
      "confirm-customer-match": "Échec de la confirmation du client",
      "dismiss-reply": "Échec de la mise au rebut de l'avis",
      "update-ai-reply-settings": "Échec de la mise à jour des paramètres IA",
      "improve-reply": "Échec de l'amélioration du brouillon",
      "bulk-respond": "Échec de la réponse groupée aux avis",
      "bulk-publish": "Échec de la publication groupée des réponses",
      "revoke-oauth": "Échec de la déconnexion.",
      "get-oauth-authorization-url": "Impossible de générer le lien de connexion.",
      "set-google-location": "Impossible d'enregistrer la fiche Google.",
      "sync-external-reviews": "Impossible de synchroniser les avis Google.",
      "reanalyze-external-reviews": "Impossible de relancer l'analyse des avis Google.",
      "sync-single-review": "Impossible de synchroniser l'avis.",
      "update-notification-preferences": "Échec de l'enregistrement des préférences de notification",
      "delete-account-wrong-password": "Mot de passe incorrect. Veuillez réessayer.",
      "delete-account-rate-limited": "Trop de tentatives. Patientez quelques minutes avant de réessayer.",
      "delete-account-generic": "Échec de la suppression du compte. Veuillez réessayer plus tard.",
      "switch-loyalty-mode": "Échec du changement de mode de fidélité",
      "preview-loyalty-migration": "Échec de l’aperçu de migration",
      "seed-game-rewards": "Échec de la création des lots prédéfinis",
      "request-cancellation": "Échec de l'envoi de la demande de résiliation",
      "publish-rejected-by-google": "Google a refusé cette réponse (politique de contenu). Modifiez-la puis republiez.",
      "create-option-group": "Échec de la création du groupe d'options",
      "update-option-group": "Échec de la mise à jour du groupe d'options",
      "delete-option-group": "Échec de la suppression du groupe d'options",
      "reorder-option-groups": "Échec de la réorganisation des groupes",
      "save-item-option-groups": "Échec de l'enregistrement des groupes d'options",
      "create-automation": "Échec de la création de l’automatisation",
      "update-automation": "Échec de la mise à jour de l’automatisation",
      "publish-automation": "Échec de la publication",
      "pause-automation": "Échec de la mise en pause",
      "archive-automation": "Échec de l’archivage",
      "update-automation-settings": "Échec de la mise à jour des paramètres",
      "test-run-automation": "Échec du test",
      "duplicate-automation": "Échec de la duplication",
      "collect-campaign-reward": "Impossible de remettre la récompense",
      "google-reserve-activate": "Échec de l'activation de Google Reserve",
      "google-reserve-deactivate": "Échec de la désactivation de Google Reserve",
      "discovery-update": "Échec de l'enregistrement des paramètres de découverte",
      "discovery-conflict": "Les paramètres de découverte ont changé. Rechargez avant d'enregistrer.",
      "discovery-coordinates": "Des coordonnées valides sont requises avant la publication.",
      "collect-order-payment": "Échec de l'encaissement",
      "cancel-order-payment": "Échec de l'annulation",
      "dine-in": {
        "not-found": "Introuvable. La commande, la ligne ou la table a peut-être déjà été supprimée.",
        "order-closed": "Cette table est déjà clôturée.",
        "bill-already-requested": "Le client a déjà demandé son addition sur cette table.",
        "table-occupied": "Cette table a déjà une addition ouverte. Utilisez « Fusionner » plutôt que « Transférer ».",
        "merge-not-allowed": "Fusion impossible avec cette table.",
        "cart-not-empty": "La table source a une commande en cours de saisie. Attendez qu'elle soit envoyée.",
        "reservation-already-seated": "Cette réservation est déjà servie à une autre table. Transférez ce service ou fusionnez les deux tables.",
        "order-revision-conflict": "Commande modifiée entre-temps. Fermez puis rouvrez l’article avant de réessayer.",
        "payment-transition-not-allowed": "Ce changement de statut de paiement n’est pas disponible.",
        "cart-validation-failed": "Vérifiez les produits, quantités et options de la commande."
      },
      "create-menu-selection": "Échec de la création de la sélection",
      "update-menu-selection": "Échec de la mise à jour de la sélection",
      "delete-menu-selection": "Échec de la suppression de la sélection",
      "reorder-menu-selections": "Échec de la réorganisation des sélections",
      "save-menu-selection-items": "Échec de l'enregistrement des produits",
      "create-room": "Échec de la création de la salle",
      "update-room": "Échec de la mise à jour de la salle",
      "delete-room": "Échec de la suppression de la salle",
      "reorder-rooms": "Échec de la mise à jour de l'ordre des salles",
      "set-room-services": "Échec de la mise à jour des services de la salle",
      "create-table-combination": "Échec de la création du groupement",
      "update-table-combination": "Échec de la mise à jour du groupement",
      "delete-table-combination": "Échec de la suppression du groupement",
      "record-consent": "Échec de l'enregistrement",
      "start-checkout": "Impossible d'ouvrir la page de paiement. Réessayez.",
      "update-sms-cap": "Échec de la mise à jour du plafond SMS",
      "update-sms-price": "Échec de la mise à jour du prix SMS",
      "reopen-day-not-found": "Aucune fermeture exceptionnelle trouvée pour ce jour"
    },
    "warning": {
      "export-orders-select-period": "Veuillez sélectionner une période d'export",
      "export-orders-no-orders": "Aucune commande trouvée pour cette période",
      "export-orders-limit": "Export limité à {max} commandes maximum.",
      "suggest-reply-requires-human": "Cet avis nécessite une réponse manuelle"
    }
  },
  "notification-options": {
    "email": "Email",
    "sms": "SMS"
  },
  "share-links": {
    "page": {
      "title": "Liens de vos services",
      "description": "Partagez ces liens avec vos clients pour accéder à vos services"
    },
    "copy": "Copier",
    "copied": "Copié !",
    "copy-failed": "Échec de la copie",
    "flyer-action": "Page flyer",
    "base-url": {
      "title": "Fiche d'établissement",
      "description": "L'adresse principale de votre application client",
      "shop-url": "URL de votre boutique :"
    },
    "custom-domain": {
      "title": "Domaine personnalisé"
    },
    "domain-selector": {
      "label": "Format d'URL :",
      "subdomain": "{slug}.suzzyapp.com",
      "path": "app.suzzyapp.com/{slug}",
      "custom": "{domain}"
    },
    "features": {
      "title": "Liens des fonctionnalités",
      "reservation": {
        "label": "Réservations",
        "description": "Page de réservation pour vos clients"
      },
      "take-away": {
        "label": "Click & Collect",
        "description": "Commande à emporter en ligne"
      },
      "delivery": {
        "label": "Livraison",
        "description": "Lien public pour commander en livraison"
      },
      "dine-in": {
        "label": "Menu digital",
        "description": "Menu interactif sur place"
      },
      "review": {
        "label": "Avis clients",
        "description": "Page pour laisser un avis"
      },
      "loyalty": {
        "label": "Programme de fidélité",
        "description": "Carte de fidélité pour vos clients"
      },
      "actions": {
        "enable": "Activer",
        "disable": "Désactiver",
        "settings": "Paramètres"
      }
    },
    "game-campaigns": {
      "title": "Liens des campagnes",
      "description": "Lien de la campagne marketing",
      "empty": "Aucune campagne créée pour le moment",
      "actions": {
        "enable": "Activer",
        "disable": "Désactiver",
        "edit": "Modifier"
      }
    },
    "qr-code": {
      "button": "QR Code",
      "title": "QR Code",
      "download": "Télécharger",
      "print": "Imprimer",
      "formats": {
        "png": "PNG (Image)",
        "jpeg": "JPEG (Image)",
        "svg": "SVG (Vectoriel)"
      }
    }
  },
  "marketing-campaigns": {
    "page-title": "Campagnes Marketing",
    "page-description": "Créez et gérez vos campagnes SMS et Email",
    "settings-title": "Paramètres des campagnes marketing",
    "settings-description": "Configurez les paramètres des campagnes marketing",
    "create-campaign": "Créer une campagne",
    "new-campaign": "Nouvelle campagne",
    "new-campaign-description": "Créez une nouvelle campagne marketing pour votre boutique.",
    "no-campaign-found": "Aucune campagne trouvée.",
    "table": {
      "name": "Nom",
      "channel": "Canal",
      "status": "Statut",
      "scheduled-at": "Programmée le",
      "stats": "Statistiques"
    },
    "status": {
      "draft": "Brouillon",
      "scheduled": "Programmée",
      "sending": "En cours d'envoi",
      "completed": "Terminée",
      "cancelled": "Annulée",
      "failed": "Échouée"
    },
    "channel": {
      "sms": "SMS",
      "email": "Email",
      "wallet-push": "Wallet Push"
    },
    "wallet-push-info": "Seuls les clients ayant installé la carte de fidélité dans Apple Wallet recevront cette notification",
    "predefined-messages": {
      "label": "Messages prédéfinis",
      "placeholder": "Choisir un modèle de message...",
      "flash-sale": {
        "label": "Vente flash",
        "title": "Vente flash !",
        "content": "'{{firstName}}', profitez de remises exceptionnelles chez '{{shopName}}' aujourd'hui seulement !"
      },
      "happy-hour": {
        "label": "Happy hour",
        "title": "Happy Hour !",
        "content": "'{{firstName}}', c'est l'heure des offres spéciales chez '{{shopName}}' ! Venez en profiter maintenant. Réservez : '{{reservationLink}}'"
      },
      "new-product": {
        "label": "Nouveau produit",
        "title": "Nouveauté !",
        "content": "'{{firstName}}', découvrez nos dernières nouveautés chez '{{shopName}}'. On vous attend !"
      },
      "loyalty-reward": {
        "label": "Récompense fidélité",
        "title": "Récompense fidélité",
        "content": "'{{firstName}}', vos points fidélité vous attendent ! Venez les utiliser chez '{{shopName}}'."
      },
      "limited-offer": {
        "label": "Offre limitée",
        "title": "Offre limitée !",
        "content": "'{{firstName}}', ne manquez pas notre offre exclusive chez '{{shopName}}'. Quantités limitées !"
      },
      "weekend-special": {
        "label": "Spécial week-end",
        "title": "Spécial week-end !",
        "content": "'{{firstName}}', ce week-end chez '{{shopName}}', des offres incroyables vous attendent ! Réservez : '{{reservationLink}}'"
      }
    },
    "filters": {
      "search-placeholder": "Rechercher une campagne...",
      "status": "Statut",
      "channel": "Canal",
      "all-statuses": "Tous les statuts",
      "all-channels": "Tous les canaux"
    },
    "empty": {
      "title": "Aucune campagne",
      "description": "Créez votre première campagne marketing pour communiquer avec vos clients."
    },
    "form": {
      "name": "Nom de la campagne",
      "name-placeholder": "Ex: Promo d'été, Newsletter...",
      "recipient-filters": "Filtres des destinataires",
      "create-button": "Créer la campagne",
      "reward-description": "Récompense offerte (optionnel)",
      "reward-description-hint": "Ajoute un lien personnel dans le message. Chaque destinataire voit son propre code à présenter au comptoir. Rallonge le SMS."
    },
    "message-editor": {
      "subject": "Objet de l'email",
      "subject-placeholder": "Saisissez l'objet de l'email",
      "wallet-push-subject": "Titre de la notification",
      "wallet-push-subject-placeholder": "Saisissez le titre de la notification",
      "content": "Contenu du message",
      "content-placeholder": "Rédigez votre message ici...",
      "wallet-push-content": "Corps de la notification",
      "wallet-push-content-placeholder": "Rédigez le corps de la notification...",
      "character-count": "{count}/{max} caractères",
      "over-limit": "Le message dépasse la limite de {max} caractères"
    },
    "variables": {
      "first-name": "Prénom",
      "last-name": "Nom",
      "customer-name": "Nom complet",
      "shop-name": "Nom du commerce",
      "shop-address": "Adresse",
      "shop-phone": "Téléphone",
      "shop-email": "Email",
      "shop-url": "Lien du commerce",
      "reservation-link": "Lien de réservation",
      "reward-link": "Lien de la récompense"
    },
    "recipient-filters": {
      "title": "Filtres des destinataires",
      "tags": "Tags",
      "orders-range": "Nombre de commandes",
      "spent-range": "Montant dépensé",
      "min": "Min",
      "max": "Max"
    },
    "scheduling": {
      "title": "Quand envoyer",
      "save-as-draft": "Conserver en brouillon",
      "save-as-draft-description": "La campagne sera créée en brouillon, sans aucun envoi. Vous pourrez l'envoyer depuis sa fiche.",
      "send-immediately": "Envoyer immédiatement",
      "send-immediately-description": "La campagne sera envoyée dès sa création",
      "schedule-later": "Programmer pour plus tard",
      "schedule-later-description": "Choisissez une date et une heure d'envoi",
      "date": "Date",
      "time": "Heure",
      "select-date": "Sélectionner une date",
      "select-time": "Sélectionner une heure",
      "time-out-of-range": "L'envoi est autorisé uniquement entre 08h00 et 20h00"
    },
    "detail": {
      "back-link": "Retour aux campagnes",
      "info": "Informations",
      "stats": "Statistiques",
      "content": "Contenu",
      "subject": "Objet",
      "wallet-push-subject": "Titre de la notification",
      "filters": "Filtres des destinataires",
      "created-at": "Créée le",
      "scheduled-at": "Programmée le",
      "completed-at": "Terminée le",
      "recipients": "Destinataires",
      "sent": "Envoyés",
      "failed": "Échoués",
      "success-rate": "Taux de réussite",
      "credits-used": "Crédits utilisés",
      "error": "Erreur",
      "filter-tags": "Tags",
      "filter-min-orders": "Min. commandes",
      "filter-max-orders": "Max. commandes",
      "filter-min-spent": "Min. dépensé",
      "filter-max-spent": "Max. dépensé",
      "channel": "Canal"
    },
    "actions": {
      "send-now": "Envoyer maintenant",
      "schedule": "Programmer",
      "edit": "Modifier",
      "delete": "Supprimer",
      "ready-to-send": "Prêt à envoyer",
      "ready-to-schedule": "Prêt à programmer",
      "will-send-to": "Sera envoyé à {count} destinataires",
      "save-before-send": "Enregistrer avant d'envoyer",
      "unsaved-changes": "Des modifications n'ont pas été enregistrées",
      "outside-sending-hours": "Envoi indisponible",
      "sending-hours-hint": "L'envoi immédiat (Email, SMS, Wallet Push) est autorisé du lundi au vendredi, de 08h00 à 20h00"
    },
    "estimate": {
      "title": "Estimation",
      "recipients": "Destinataires",
      "credits-needed": "Crédits nécessaires",
      "current-credits": "Crédits disponibles",
      "remaining-after": "Restant après envoi",
      "wallet-push-recipients": "Abonnés Wallet",
      "wallet-push-note": "Le push Wallet est gratuit. Seuls les clients ayant ajouté la carte de fidélité dans Apple Wallet ou Google Wallet sont comptabilisés comme destinataires.",
      "insufficient-credits": "Crédits insuffisants pour envoyer cette campagne",
      "unavailable": "Estimation non disponible",
      "free": "Gratuit"
    },
    "preview": {
      "title": "Aperçu des destinataires",
      "total-recipients": "Total des destinataires",
      "sample-recipients": "Exemples de destinataires",
      "anonymous": "Anonyme",
      "wallet-recipient": "Carte fidélité Apple Wallet",
      "unavailable": "Aperçu non disponible"
    },
    "recipients": {
      "title": "Destinataires",
      "name": "Nom",
      "contact": "Contact",
      "points": "Points",
      "total-spent": "Total dépensé",
      "tier": "Palier",
      "visits": "Visites",
      "error": "Erreur lors du chargement des destinataires",
      "empty": "Aucun destinataire trouvé",
      "total": "{count} destinataire(s)"
    },
    "edit": {
      "title": "Modifier la campagne",
      "description": "Modifiez les détails de votre campagne marketing.",
      "save-button": "Enregistrer les modifications"
    },
    "delete-dialog": {
      "title": "Supprimer la campagne",
      "description": "Êtes-vous sûr de vouloir supprimer cette campagne ? Cette action est irréversible."
    },
    "error": {
      "title": "Erreur",
      "loading-campaign": "Impossible de charger la campagne",
      "not-found": "Campagne introuvable",
      "not-found-description": "La campagne que vous recherchez n'existe pas ou a été supprimée."
    },
    "compliance": {
      "marketing-sms-blocked-holiday": "Envoi bloqué : les campagnes marketing ne peuvent pas être envoyées les jours fériés.",
      "marketing-sms-blocked-sunday": "Envoi bloqué : les campagnes marketing ne peuvent pas être envoyées le dimanche.",
      "marketing-sms-blocked-saturday-hours": "Envoi bloqué : les campagnes marketing sont autorisées le samedi uniquement entre 10h00 et 19h00.",
      "marketing-sms-blocked-weekday-hours": "Envoi bloqué : les campagnes marketing sont autorisées du lundi au vendredi uniquement entre 08h00 et 20h00."
    },
    "funnel": {
      "title": "Résultat",
      "title-reward": "Récompense offerte",
      "reward-fallback": "Récompense",
      "no-expiry": "Sans date limite · une par personne",
      "sent-count": "{count} messages envoyés",
      "headline": "<strong>{count, plural, =0 {Personne n'est encore venu} =1 {1 client est revenu} other {# clients sont revenus}}</strong> grâce à cette campagne.",
      "viewed": "Coupons pris",
      "honoured": "Venus au comptoir",
      "honour-rate": "Coupons honorés",
      "visit-rate": "Venues / envoyés",
      "step-sent": "Envoyés",
      "step-delivered": "Délivrés",
      "step-viewed": "Page vue",
      "step-honoured": "Venus",
      "collected": "Récompenses récupérées",
      "issued": "Coupons envoyés",
      "return-rate": "Taux de retour",
      "step-opened": "Ouverts",
      "step-collected": "Récupérés"
    },
    "tracking": {
      "title": "Destinataires",
      "count": "{count, plural, =0 {Aucun} =1 {1 personne} other {# personnes}}",
      "search-placeholder": "Rechercher un nom, un téléphone ou un email...",
      "empty": "Aucun destinataire",
      "error": "Erreur de chargement",
      "name": "Nom",
      "contact": "Contact",
      "sent": "Envoyé",
      "delivered": "Reçu",
      "opened": "Ouvert",
      "code": "Code",
      "action": "Récompense",
      "collect": "Remettre",
      "collected": "Remise",
      "collect-confirm-title": "Remettre la récompense ?",
      "collect-confirm-description": "La récompense de {name} sera marquée comme remise. Cette action est définitive.",
      "state": {
        "all": "Tout",
        "undelivered": "Non reçu",
        "not-collected": "À remettre",
        "collected": "Remise"
      }
    },
    "reward-card": {
      "title": "Récompense offerte",
      "none": "Aucune récompense : la campagne est une simple annonce.",
      "hint": "Changez la récompense tant que la campagne n’est pas partie. Les coupons déjà distribués gardent ce qui leur a été promis.",
      "error": "Impossible de charger la récompense"
    }
  },
  "sms-transactions": {
    "page-title": "Historique SMS",
    "page-description": "Consultez l'historique des transactions SMS de votre boutique",
    "title": "Transactions SMS",
    "count": "{count} transactions",
    "tabs": {
      "billing": "Facturation",
      "transactions": "Transactions"
    },
    "balance-card": {
      "title": "Crédits prépayés",
      "description": "Crédits SMS disponibles pour votre boutique",
      "credits": "crédits"
    },
    "load-more": "Charger plus",
    "filter-by-type": "Filtrer par type",
    "filter-by-sms-type": "Type de SMS",
    "filter-by-delivery-status": "Statut de livraison",
    "filter": {
      "all": "Tous les types",
      "all-delivery-statuses": "Tous les statuts"
    },
    "sms-type": {
      "transactional": "Transactionnel",
      "marketing": "Marketing"
    },
    "filters": {
      "search-placeholder": "Rechercher par numéro de téléphone...",
      "sort-by": "Trier par",
      "sort": {
        "date-desc": "Date (plus récent)",
        "date-asc": "Date (plus ancien)",
        "amount-desc": "Quantité (décroissant)",
        "amount-asc": "Quantité (croissant)",
        "date": "Date",
        "amount": "Montant"
      },
      "advanced": "Filtres avancés",
      "advanced-title": "Filtres avancés",
      "reset": "Réinitialiser",
      "period": "Période",
      "start-date": "Date de début",
      "end-date": "Date de fin",
      "select-date": "Sélectionner une date"
    },
    "type": {
      "recharge": "Recharge",
      "usage": "Utilisation",
      "sent": "Envoyé",
      "failed": "Échoué",
      "refund": "Remboursement",
      "admin-adjustment": "Ajustement"
    },
    "table": {
      "date": "Date",
      "type": "Type",
      "category": "Catégorie",
      "recipient": "Destinataire",
      "details": "Détails",
      "amount": "Quantité",
      "balance": "Solde",
      "billing": "Facturation"
    },
    "details": {
      "recharge": "Recharge de crédits",
      "manual-adjustment": "Ajustement manuel",
      "reservation": "Réservation #{id}",
      "message-parts": "{count} parties SMS",
      "error": "Erreur"
    },
    "empty": "Aucune transaction SMS",
    "error": "Une erreur s'est produite lors du chargement des transactions SMS",
    "pagination": {
      "page": "Page {page}",
      "previous": "Précédent",
      "next": "Suivant"
    },
    "dialog": {
      "title": "Détails de la transaction",
      "transaction-info": "Informations de la transaction",
      "metadata": "Métadonnées",
      "id": "ID",
      "date": "Date",
      "type": "Type",
      "amount": "Quantité",
      "balance-after": "Solde après",
      "admin-id": "Admin ID",
      "manual-adjustment": "Ajustement manuel",
      "previous-credit": "Crédit précédent",
      "reason": "Raison",
      "reservation-id": "ID Réservation",
      "reservation-display-id": "Réservation",
      "recipient": "Destinataire",
      "message": "Message",
      "message-id": "ID du message",
      "message-parts": "Parties SMS",
      "error": "Erreur",
      "yes": "Oui",
      "no": "Non",
      "close": "Fermer",
      "delivery-status": "Statut de livraison",
      "delivered-at": "Livré à",
      "phone-number": "Numéro de téléphone",
      "sms-type": "Type de SMS"
    },
    "delivery-status": {
      "pending": "En attente",
      "sent": "Envoyé",
      "delivered": "Livré",
      "buffered": "En file d'attente",
      "not-delivered": "Non livré",
      "failed": "Échoué"
    },
    "billing-status": {
      "billed": "Facturé · {amount} HT",
      "prepaid": "Crédit prépayé"
    }
  },
  "time-range": {
    "day": "Jour",
    "week": "Semaine",
    "month": "Mois",
    "vs-yesterday": "vs hier",
    "vs-last-week": "vs semaine dernière",
    "vs-last-month": "vs mois dernier"
  },
  "customers": {
    "filters": {
      "count": "{count} clients",
      "search-placeholder": "Rechercher un client...",
      "sort-by": "Trier par",
      "advanced": "Filtres",
      "advanced-title": "Filtres avancés",
      "reset": "Réinitialiser",
      "orders-range": "Nombre de commandes",
      "spent-range": "Montant dépensé (€)",
      "marketing-consent": "Consentement marketing",
      "tags": "Tags",
      "filter-by-tags": "Filtrer par tags",
      "select-tags": "Sélectionner des tags...",
      "clear": "Effacer",
      "no-tags": "Aucun tag disponible",
      "tags-selected": "{count, plural, =1 {# tag sélectionné} other {# tags sélectionnés}}",
      "min": "Min",
      "max": "Max",
      "all": "Tous",
      "yes": "Oui",
      "no": "Non",
      "items-per-page": "Éléments par page",
      "sort": {
        "last-interaction-desc": "Activité récente",
        "last-interaction-asc": "Activité ancienne",
        "spent-desc": "Plus dépensé",
        "spent-asc": "Moins dépensé",
        "orders-desc": "Plus de commandes",
        "orders-asc": "Moins de commandes",
        "name-asc": "Nom A-Z",
        "name-desc": "Nom Z-A",
        "created-desc": "Plus récent",
        "created-asc": "Plus ancien",
        "last-interaction": "Dernière interaction",
        "spent": "Total dépensé",
        "orders": "Commandes",
        "name": "Nom",
        "created-at": "Date de création"
      }
    },
    "table": {
      "customer": "Client",
      "contact": "Contact",
      "orders": "Commandes",
      "spent": "Dépensé",
      "tags": "Tags",
      "reservations": "Réservations",
      "no-shows": "No-shows",
      "last-visit": "Dernière visite",
      "empty": "Aucun client trouvé",
      "load-more": "Charger plus"
    },
    "no-selection": {
      "title": "Aucun client sélectionné",
      "description": "Sélectionnez un client dans la liste pour voir ses détails"
    },
    "member-since": "Client depuis {date}",
    "member-since-unknown": "Date d'inscription inconnue",
    "total-spent": "Total dépensé",
    "marketing-consent": "Accepte le marketing",
    "last-interaction": "Dernière interaction {date}",
    "sections": {
      "contact": "Contact",
      "activity": "Activité",
      "tags": "Tags",
      "notes": "Notes"
    },
    "metrics": {
      "orders": "commandes",
      "reservations": "réservations",
      "no-shows": "no-shows",
      "games": "jeux joués",
      "rating": "{count, plural, =0 {aucun avis} =1 {# avis} other {# avis}}"
    },
    "no-show-count": "{count, plural, =1 {# no-show} other {# no-shows}}",
    "cancelled-orders-count": "{count, plural, =1 {# commande annulée} other {# commandes annulées}}",
    "edit-profile": "Modifier le profil client",
    "empty": {
      "name": "Nom non renseigné",
      "email": "Email non renseigné",
      "phone": "Téléphone non renseigné",
      "notes": "Aucune note"
    },
    "actions": {
      "create": "Ajouter un client",
      "edit": "Modifier",
      "delete": "Supprimer le client",
      "view-full-profile": "Voir la fiche complète"
    },
    "edit": {
      "title": "Modifier le client",
      "description": "Modifiez les informations du client"
    },
    "fields": {
      "name": "Nom",
      "email": "Email",
      "phone": "Téléphone",
      "birth-date": "Date de naissance",
      "notes": "Notes",
      "marketing-consent": "Consentement marketing",
      "tags": "Tags",
      "name-placeholder": "Nom du client",
      "email-placeholder": "Email du client",
      "phone-placeholder": "Téléphone du client",
      "notes-placeholder": "Ajoutez des notes sur ce client..."
    },
    "tags": {
      "add-placeholder": "Ajouter un tag...",
      "max-reached": "Maximum de {max} tags atteint",
      "custom-placeholder": "Ajouter un tag..."
    },
    "delete-dialog": {
      "title": "Supprimer le client",
      "description": "Êtes-vous sûr de vouloir supprimer {name} ? Cette action est irréversible."
    },
    "import": {
      "button": "Importer",
      "title": "Importer des clients",
      "description": "Ajoutez des clients depuis un fichier CSV ou Excel.",
      "consent-title": "Clients hors marketing",
      "consent-description": "Les lignes sans marketingConsent=true seront importées, mais resteront exclues des campagnes email/SMS. Quand le consentement est accepté, la source, la date et le détail sont ajoutés aux notes du client.",
      "source-label": "Source",
      "sources": {
        "suzzy": "Suzzy",
        "thefork": "TheFork",
        "zenchef": "Zenchef",
        "custom": "Personnalisé"
      },
      "file-label": "Fichier",
      "file-selected": "Fichier sélectionné",
      "file-too-large": "Fichier trop volumineux ({size} Mo)",
      "max-size": "Taille maximale : {max} Mo",
      "parse-error": "Impossible de lire le fichier",
      "no-rows": "Aucune ligne trouvée",
      "empty-value": "Non renseigné",
      "ready-count": "{count} marketing OK",
      "non-marketable-count": "{count} hors marketing",
      "invalid-count": "{count} invalide(s)",
      "import-action": "Importer les clients",
      "importing-action": "Import en cours",
      "progress": "{completed}/{total} lignes traitées · lot {batch}/{batches}",
      "status": {
        "ready": "Marketing OK",
        "non-marketable": "Hors marketing",
        "invalid": "Invalide"
      },
      "errors": {
        "invalid-email": "Email invalide",
        "invalid-phone": "Téléphone invalide",
        "missing-contact": "Email ou téléphone requis",
        "invalid-no-shows": "No-shows invalides",
        "invalid-date": "Date invalide",
        "invalid-consent-date": "Date de consentement invalide",
        "unknown": "Erreur"
      },
      "table": {
        "row": "Ligne",
        "name": "Nom",
        "contact": "Contact",
        "status": "Statut",
        "details": "Détails",
        "consent-accepted": "Consentement OK · {source} · {date}",
        "consent-missing": "Pas de consentement marketing · {source}",
        "consent-date-missing": "date non fournie"
      }
    },
    "export": {
      "button": "Exporter",
      "title": "Exporter les clients",
      "description": "Choisissez le format d'export",
      "format-label": "Format",
      "format-csv": "CSV",
      "format-csv-description": "Tableau pour tableurs (Excel, Google Sheets)",
      "format-pdf": "PDF",
      "format-pdf-description": "Document imprimable",
      "format-vcard": "vCard",
      "format-vcard-description": "Contacts pour téléphone (iOS, Android)",
      "cancel": "Annuler",
      "export-button": "Exporter",
      "toast": {
        "exporting": "Export en cours...",
        "success": "{count} client(s) exporté(s)",
        "error": "Erreur lors de l'export",
        "no-customers": "Aucun client à exporter"
      },
      "columns": {
        "name": "Nom",
        "email": "Email",
        "phone": "Téléphone",
        "totalOrders": "Commandes",
        "totalSpentCents": "Dépensé",
        "tags": "Tags",
        "lastInteractionAt": "Dernière visite"
      },
      "pdf": {
        "title": "Liste des clients",
        "subtitle": "{count} client(s) — {date}"
      },
      "sort-fields": {
        "name": "Nom",
        "total-orders": "Commandes",
        "total-spent": "Montant dépensé",
        "last-interaction": "Dernière visite",
        "created-at": "Date de création"
      }
    },
    "preview": {
      "recent-activity": "Activité récente",
      "recent-communications": "Communications récentes",
      "empty-activity": "Aucune activité récente",
      "empty-communications": "Aucune communication récente",
      "view-all": "Voir tout"
    },
    "detail": {
      "back-link": "Retour aux clients",
      "error": "Échec du chargement de la fiche client",
      "not-found": "Client introuvable",
      "tabs": {
        "activity": "Activité",
        "communications": "Communications"
      }
    },
    "communications": {
      "error": "Échec du chargement des communications",
      "toggle": "Afficher les communications",
      "empty": "Aucune communication pour ce client",
      "related-to": "Concernant",
      "channels": {
        "email": "Email",
        "sms": "SMS",
        "wallet-push": "Wallet"
      },
      "statuses": {
        "queued": "En file d'attente",
        "sent": "Envoyé",
        "delivered": "Délivré",
        "failed": "Échec",
        "bounced": "Rejeté",
        "complained": "Spam"
      },
      "filters": {
        "all-channels": "Tous les canaux",
        "all-statuses": "Tous les statuts"
      },
      "sent-via": "Envoyé via",
      "detail": {
        "title": "Détail de la communication",
        "content": "Contenu",
        "recipient": "Destinataire",
        "sent-at": "Envoyé le",
        "delivered-at": "Délivré le",
        "failed-at": "Échec le",
        "error": "Erreur"
      }
    }
  },
  "customer-linking": {
    "linked-customer": "Profil lié",
    "inline-data": "Données saisies",
    "link-customer": "Lier un client",
    "change-customer": "Changer",
    "edit-customer": "Modifier le client",
    "unlink-customer": "Supprimer le lien",
    "search-placeholder": "Rechercher un client...",
    "no-customer-found": "Aucun client trouvé",
    "no-name": "Sans nom",
    "cancel": "Annuler",
    "customer-load-error": "Erreur de chargement"
  },
  "notifications": {
    "mark-seen-failed": "Impossible d’enregistrer la lecture. Rouvrez les notifications pour réessayer.",
    "title": "Notifications",
    "description": "Vos notifications récentes",
    "empty": "Aucune notification",
    "empty-filtered": "Aucune notification avec ces filtres",
    "error-title": "Impossible de charger les notifications",
    "view": {
      "all": "Tout",
      "action-required": "Action requise"
    },
    "action-required": {
      "empty-title": "Aucune demande en attente",
      "empty-description": "Les demandes de réservation à valider et les clients en liste d'attente apparaîtront ici.",
      "error-title": "Impossible de charger les demandes"
    },
    "new": "Nouveau",
    "mark-all-read": "Tout marquer comme lu",
    "manage-preferences": "Gérer les préférences",
    "unread-count": "{count, plural, one {# notification non lue} other {# notifications non lues}}",
    "filters": {
      "category": "Catégorie",
      "all-categories": "Toutes",
      "categories": {
        "reservation": "Réservations",
        "order": "Commandes",
        "customer": "Clients",
        "review": "Avis",
        "shop": "Boutique",
        "game": "Jeux",
        "email": "Emails",
        "sms": "SMS",
        "loyalty": "Fidélité",
        "marketing": "Campagnes",
        "other": "Autres"
      },
      "seen": {
        "label": "Statut",
        "all": "Toutes",
        "unread": "Non lues",
        "read": "Lues"
      },
      "scope": {
        "label": "Source",
        "all": "Toutes",
        "shop": "Boutique",
        "user": "Compte",
        "system": "Système"
      },
      "sort": {
        "newest": "Récentes",
        "oldest": "Anciennes"
      },
      "type": {
        "label": "Type",
        "all": "Tous",
        "search": "Rechercher un type...",
        "no-results": "Aucun type trouvé",
        "types": {
          "RESERVATION_CREATED": "Résa · Créée",
          "RESERVATION_CONFIRMED": "Résa · Confirmée",
          "RESERVATION_CANCELLED": "Résa · Annulée",
          "RESERVATION_COMPLETED": "Résa · Terminée",
          "RESERVATION_MARKED_ABSENT": "Résa · Absent",
          "RESERVATION_UPDATED": "Résa · Modifiée",
          "ORDER_CREATED": "C&C · Créée",
          "ORDER_READY_FOR_PICKUP": "C&C · Prête",
          "ORDER_PICKED_UP": "C&C · Retirée",
          "ORDER_CANCELLED": "C&C · Annulée",
          "REVIEW_RECEIVED": "Avis · Reçu",
          "GAME_REWARD_CLAIMED": "Jeu · Réclamée",
          "CUSTOMER_PROFILE_CREATED": "Client · Créé",
          "CUSTOMER_INTERACTION_RECORDED": "Client · Interaction",
          "SHOP_SETTINGS_UPDATED": "Boutique · Paramètres",
          "SHOP_SCHEDULE_CREATED": "Boutique · Horaires",
          "SHOP_ACCESS_CREATED": "Boutique · Accès",
          "SHOP_FEATURE_CONFIG_CREATED": "Boutique · Fonction créée",
          "SHOP_FEATURE_CONFIG_TOGGLED": "Boutique · Fonction modifiée",
          "SUBSCRIPTION_CREATED": "Abo · Créé",
          "SUBSCRIPTION_CANCELLED": "Abo · Annulé",
          "SUBSCRIPTION_PACKAGE_CHANGED": "Abo · Forfait modifié",
          "TIME_SLOT_CREATED": "Boutique · Créneau créé",
          "CATEGORY_CREATED": "Boutique · Catégorie créée",
          "CATEGORY_UPDATED": "Boutique · Catégorie modifiée",
          "CATEGORY_DELETED": "Boutique · Catégorie supprimée",
          "ITEM_CREATED": "Boutique · Article créé",
          "PACKAGE_CREATED": "Abo · Forfait créé",
          "FEATURE_CREATED": "Boutique · Fonctionnalité créée",
          "LOYALTY_CARD_CREATED": "Fidélité · Carte créée",
          "LOYALTY_POINTS_EARNED": "Fidélité · Points gagnés",
          "LOYALTY_STAMPS_EARNED": "Fidélité · Tampons gagnés",
          "LOYALTY_REWARD_REDEEMED": "Fidélité · Récompense échangée",
          "LOYALTY_BALANCE_ADJUSTED": "Fidélité · Solde ajusté",
          "MARKETING_CAMPAIGN_STARTED": "Campagne · Démarrée",
          "MARKETING_CAMPAIGN_COMPLETED": "Campagne · Terminée",
          "MARKETING_CAMPAIGN_FAILED": "Campagne · Échec",
          "MARKETING_CAMPAIGN_UPDATED": "Campagne · Modifiée"
        }
      }
    },
    "date-groups": {
      "today": "Aujourd'hui",
      "yesterday": "Hier"
    },
    "view-sms-transaction": "Voir la transaction SMS",
    "note-modified": "Note modifiée",
    "anonymous-customer": "Client anonyme",
    "types": {
      "RESERVATION_CREATED": {
        "title": "Nouvelle réservation",
        "message": "#{displayId} · {customerName} · {partySize} pers. · {reservationDate}"
      },
      "RESERVATION_CONFIRMED": {
        "title": "Réservation confirmée",
        "message": "#{displayId} · {customerName} · {reservationDate}"
      },
      "RESERVATION_CANCELLED": {
        "title": "Réservation annulée",
        "message": "#{displayId} · {customerName} · {reservationDate}"
      },
      "RESERVATION_COMPLETED": {
        "title": "Réservation terminée",
        "message": "#{displayId} · {customerName} · {reservationDate}"
      },
      "RESERVATION_MARKED_ABSENT": {
        "title": "Client absent",
        "message": "#{displayId} · {customerName} · {reservationDate}"
      },
      "RESERVATION_UPDATED": {
        "title": "Réservation modifiée",
        "message": "#{displayId} · {customerName} · {changes}"
      },
      "ORDER_CREATED": {
        "title": "Nouvelle commande",
        "message": "#{displayId} · {customerName} · {total}€"
      },
      "ORDER_READY_FOR_PICKUP": {
        "title": "Commande prête",
        "message": "#{displayId} · {customerName}"
      },
      "ORDER_PICKED_UP": {
        "title": "Commande récupérée",
        "message": "#{displayId} · {customerName}"
      },
      "ORDER_CANCELLED": {
        "title": "Commande annulée",
        "message": "#{displayId} · {customerName}"
      },
      "SUBSCRIPTION_CREATED": {
        "title": "Nouvel abonnement",
        "message": "Votre abonnement a été activé"
      },
      "SUBSCRIPTION_CANCELLED": {
        "title": "Abonnement annulé",
        "message": "Votre abonnement a été annulé"
      },
      "SUBSCRIPTION_PACKAGE_CHANGED": {
        "title": "Forfait modifié",
        "message": "Votre forfait a été mis à jour"
      },
      "GAME_REWARD_CLAIMED": {
        "title": "Récompense réclamée",
        "message": "{customerName} a réclamé sa récompense"
      },
      "REVIEW_RECEIVED": {
        "title": "Nouvel avis client",
        "message": "{customerName} vous a laissé un avis de {rating} étoiles"
      },
      "CUSTOMER_PROFILE_CREATED": {
        "title": "Nouveau client",
        "message": "{customerName} s'est inscrit dans votre établissement"
      },
      "SHOP_SETTINGS_UPDATED": {
        "title": "Paramètres modifiés",
        "message": "Les paramètres de votre établissement ont été mis à jour"
      },
      "USER_WELCOME": {
        "title": "Bienvenue !",
        "message": "Bienvenue {firstName} ! Votre compte a été créé avec succès"
      },
      "USER_EMAIL_CHANGED": {
        "title": "Email modifié",
        "message": "Votre adresse email a été changée de {oldEmail} vers {newEmail}"
      },
      "USER_PASSWORD_CHANGED": {
        "title": "Mot de passe modifié",
        "message": "Votre mot de passe a été modifié avec succès"
      },
      "USER_PROFILE_UPDATED": {
        "title": "Profil mis à jour",
        "message": "Votre profil a été mis à jour"
      },
      "SHOP_SCHEDULE_CREATED": {
        "title": "Horaires créés",
        "message": "Nouveaux horaires ajoutés pour {day}"
      },
      "SHOP_ACCESS_CREATED": {
        "title": "Accès accordé",
        "message": "Accès {role} accordé à {email}"
      },
      "SHOP_FEATURE_CONFIG_CREATED": {
        "title": "Fonctionnalité configurée",
        "message": "La fonctionnalité {featureName} a été configurée"
      },
      "SHOP_FEATURE_CONFIG_TOGGLED": {
        "title": "Fonctionnalité modifiée",
        "message": "La fonctionnalité {featureName} a été {enabled, select, true {activée} other {désactivée}}"
      },
      "TIME_SLOT_CREATED": {
        "title": "Créneau créé",
        "message": "Nouveau créneau de {startTime} à {endTime} · {capacity} places"
      },
      "CATEGORY_CREATED": {
        "title": "Catégorie créée",
        "message": "Nouvelle catégorie : {name}"
      },
      "CATEGORY_UPDATED": {
        "title": "Catégorie modifiée",
        "message": "Catégorie renommée de {previousName} à {name}"
      },
      "CATEGORY_DELETED": {
        "title": "Catégorie supprimée",
        "message": "La catégorie {name} a été supprimée · {itemsAffected} articles affectés"
      },
      "ITEM_CREATED": {
        "title": "Article créé",
        "message": "Nouvel article : {name} · {price}€"
      },
      "PACKAGE_CREATED": {
        "title": "Forfait créé",
        "message": "Nouveau forfait : {name} · {price}{currency}"
      },
      "FEATURE_CREATED": {
        "title": "Fonctionnalité créée",
        "message": "Nouvelle fonctionnalité : {name}"
      },
      "CUSTOMER_INTERACTION_RECORDED": {
        "title": "Interaction enregistrée",
        "message": "Interaction {interactionType} enregistrée"
      },
      "EMAIL_SENT": {
        "title": "Email envoyé",
        "message": "Email envoyé à {recipient} : {subject}"
      },
      "EMAIL_FAILED": {
        "title": "Échec d'envoi d'email",
        "message": "Échec de l'envoi à {recipient} : {failureReason}"
      },
      "SMS_SENT": {
        "title": "SMS envoyé",
        "message": "SMS envoyé à {phoneNumber} · {sentAt}"
      },
      "SMS_FAILED": {
        "title": "Échec d'envoi SMS",
        "message": "Échec de l'envoi du SMS à {phoneNumber} : {failureReason}"
      },
      "LOYALTY_CARD_CREATED": {
        "title": "Nouvelle carte de fidélité",
        "message": "Une carte de fidélité a été créée"
      },
      "LOYALTY_POINTS_EARNED": {
        "title": "Points gagnés",
        "message": "+{pointsEarned} points · Nouveau solde : {newBalance}"
      },
      "LOYALTY_STAMPS_EARNED": {
        "title": "Tampons gagnés",
        "message": "+{stampsEarned} tampons · Nouveau solde : {newBalance}"
      },
      "LOYALTY_REWARD_REDEEMED": {
        "title": "Récompense échangée",
        "message": "{rewardName} a été échangée"
      },
      "LOYALTY_BALANCE_ADJUSTED": {
        "title": "Solde ajusté",
        "message": "{description}"
      },
      "MARKETING_CAMPAIGN_STARTED": {
        "title": "Campagne démarrée",
        "message": "{campaignName} · {channel} · {recipientCount} destinataires"
      },
      "MARKETING_CAMPAIGN_COMPLETED": {
        "title": "Campagne terminée",
        "message": "{campaignName} · {totalSent} envoyés · {totalFailed} échoués · {duration}"
      },
      "MARKETING_CAMPAIGN_FAILED": {
        "title": "Campagne échouée",
        "message": "{campaignName} · {errorMessage}"
      },
      "MARKETING_CAMPAIGN_UPDATED": {
        "title": "Campagne modifiée",
        "message": "{campaignName} · Champs modifiés : {updatedFields}"
      },
      "SMS_DELIVERED": {
        "title": "SMS livré",
        "message": "Le SMS a été livré avec succès au destinataire"
      },
      "SMS_DELIVERY_FAILED": {
        "title": "Échec de livraison SMS",
        "message": "Le SMS n'a pas pu être livré au destinataire"
      }
    },
    "preferences": {
      "title": "Préférences de notification",
      "description": "Ces préférences s'appliquent à votre compte pour {shopName}. Choisissez les notifications que vous souhaitez recevoir et par quels canaux.",
      "event": "Événement",
      "save": "Enregistrer les préférences",
      "all": "Tout",
      "fetch-error": "Échec du chargement des préférences de notification",
      "mandatory": "Obligatoire",
      "in-app-description": "Les notifications in-app restent toujours activées afin que vous retrouviez chaque événement dans Suzzy.",
      "in-app-always-on": "Toujours activé pour garder un historique complet dans Suzzy.",
      "email-unavailable": "Aucun email n'est envoyé pour cet événement.",
      "shop-name": {
        "title": "Nom de la boutique dans les notifications push",
        "automatic": "Automatique (recommandé)",
        "automatic-description": "Le nom est masqué si vous avez accès à une seule boutique, et affiché si vous en avez plusieurs.",
        "always": "Toujours",
        "never": "Jamais"
      },
      "channels": {
        "in-app": "In-app",
        "email": "Email",
        "push": "Push",
        "sms": "SMS"
      },
      "categories": {
        "reservations": "Réservations",
        "orders": "Commandes",
        "reviews": "Avis",
        "loyalty": "Fidélité",
        "marketing": "Marketing",
        "customers": "Clients",
        "shop": "Établissement",
        "schedules": "Plannings",
        "categories": "Menu & Catégories"
      }
    }
  },
  "shop-images": {
    "title": "Images du restaurant",
    "description": "Ajoutez une image de couverture et des photos de votre établissement",
    "cover-image": {
      "label": "Image de couverture",
      "placeholder": "Ajouter une bannière"
    },
    "gallery": {
      "label": "Galerie photos"
    }
  },
  "gallery-images": {
    "label": "Photos de la galerie",
    "add": "Ajouter",
    "count": "{count, plural, =0 {Aucune image} one {# image} other {# images}}",
    "select": "Sélectionner",
    "select-all": "Tout sélectionner",
    "deselect-all": "Tout désélectionner",
    "delete-selected": "Supprimer ({count})",
    "drop-zone": "Glissez vos images ici ou cliquez pour parcourir",
    "uploading": "Envoi en cours...",
    "bulk-upload-success": "{count, plural, one {# image ajoutée} other {# images ajoutées}}",
    "bulk-upload-error": "Erreur lors de l'envoi des images",
    "file-too-large": "Le fichier {name} est trop volumineux (max 5 Mo)",
    "image-alt": "Image {number}",
    "dragging": "Déplacement en cours",
    "drag-to-reorder": "Glisser pour réorganiser",
    "remove-image": "Supprimer l'image",
    "view-all": "Voir toutes les photos ({count})",
    "manage-title": "Gérer les photos de la galerie",
    "more-count": "+{count}",
    "open-gallery": "Ouvrir la galerie",
    "upload-images": "Télécharger des images"
  },
  "loyalty": {
    "actions": {
      "test-apple-pass": "Tester Apple Pass"
    },
    "tier-basis": {
      "total-spent": "Total dépensé",
      "total-visits": "Total visites"
    },
    "transaction-types": {
      "earn": "Gain",
      "redeem": "Échange",
      "adjustment": "Ajustement",
      "migration": "Migration"
    },
    "transaction-sources": {
      "auto": "Automatique",
      "manual": "Manuel"
    },
    "tabs": {
      "program": "Programme",
      "rewards": "Récompenses",
      "members": "Membres",
      "referrals": "Parrainages"
    },
    "referrals": {
      "unknown-customer": "Client inconnu",
      "error": "Impossible de charger les parrainages",
      "empty": "Aucun parrainage trouvé",
      "status": {
        "pending": "En attente",
        "validated": "Validé",
        "rejected": "Refusé"
      },
      "stats": {
        "total": "Total",
        "pending": "En attente",
        "validated": "Validés",
        "rejected": "Refusés"
      },
      "filters": {
        "search-placeholder": "Rechercher un parrain ou un filleul...",
        "search-short": "Rechercher...",
        "status": "Filtrer par statut",
        "all-statuses": "Tous les statuts"
      },
      "views": {
        "tracking": "Suivi",
        "bonuses": "Bonus"
      },
      "settings": {
        "title": "Bonus de parrainage",
        "description": "Le suivi des parrainages reste toujours actif. Configurez uniquement les bonus versés lors de la validation.",
        "enabled": "Verser les bonus",
        "enabled-description": "Si cette option est désactivée, les parrainages sont toujours validés mais aucun bonus n'est versé, y compris rétroactivement.",
        "referrer-title": "Bonus du parrain",
        "referrer-description": "Montant crédité au client qui partage son lien.",
        "referee-title": "Bonus du filleul",
        "referee-description": "Montant crédité au nouveau membre lors de sa première transaction fidélité.",
        "amount": "Montant",
        "unit": "Unité actuelle",
        "unit-description": "L'unité suit automatiquement le mode du programme de fidélité.",
        "save": "Enregistrer",
        "saving": "Enregistrement..."
      },
      "table": {
        "referrer": "Parrain",
        "referee": "Filleul",
        "status": "Statut",
        "created-at": "Inscription",
        "validated-at": "Validation",
        "rejected-at": "Refus",
        "bonuses": "Bonus versés",
        "rejection-reason": "Motif du refus",
        "actions": "Actions",
        "count-singular": "parrainage",
        "count-plural": "parrainages"
      },
      "bonuses": {
        "referrer": "Parrain",
        "referee": "Filleul",
        "points": "{count, plural, =0 {0 point} one {# point} other {# points}}",
        "stamps": "{count, plural, =0 {0 tampon} one {# tampon} other {# tampons}}"
      },
      "reject-dialog": {
        "action": "Refuser",
        "title": "Refuser ce parrainage",
        "description": "Ce parrainage restera visible et ne pourra plus déclencher de bonus.",
        "reason": "Motif (optionnel)",
        "confirm": "Confirmer le refus"
      }
    },
    "program": {
      "name": "Nom du programme",
      "tier-basis": "Base de calcul",
      "select-tier-basis": "Sélectionner une base",
      "points-per-euro": "Points par euro",
      "points-per-visit": "Points par visite",
      "description": "Description",
      "status": "Statut",
      "active": "Actif",
      "inactive": "Inactif",
      "create": "Créer un programme",
      "edit": "Modifier le programme",
      "empty-state": "Aucun programme de fidélité configuré. Créez-en un pour commencer.",
      "error-loading": "Erreur lors du chargement du programme",
      "not-found": "Programme introuvable",
      "check-in-pin": "Code PIN",
      "check-in-pin-description": "Code à 6 chiffres pour le check-in tablette",
      "visit-cooldown": "Délai entre visites",
      "no-cooldown": "Pas de délai",
      "pin-configured": "PIN configuré",
      "pin-not-configured": "Pas de PIN",
      "stamps-required": "tampons requis",
      "mode": "Mode de fidélité",
      "select-mode": "Sélectionner un mode"
    },
    "tiers": {
      "title": "Paliers",
      "name": "Nom du palier",
      "min-points": "Points minimum",
      "multiplier": "Multiplicateur",
      "color": "Couleur",
      "empty": "Aucun palier configuré",
      "create": "Ajouter un palier",
      "edit": "Modifier le palier",
      "delete": "Supprimer le palier",
      "min-spent": "Dépense minimum",
      "min-threshold": "Seuil minimum",
      "points-multiplier": "Multiplicateur de points",
      "discount": "Réduction (%)"
    },
    "rewards": {
      "title": "Récompenses",
      "name": "Nom de la récompense",
      "description": "Description",
      "points-cost": "Coût en points",
      "stamps-required": "Tampons requis",
      "stamps-cost": "{count, plural, one {# tampon} other {# tampons}}",
      "active": "Active",
      "inactive": "Inactive",
      "empty": "Aucune récompense configurée",
      "create": "Ajouter une récompense",
      "edit": "Modifier la récompense",
      "image": "Image de la récompense",
      "image-placeholder": "Cliquez pour ajouter une image",
      "palier-label": "Palier {index}",
      "palier-points": "{count} pts",
      "palier-count": "{count, plural, one {# récompense} other {# récompenses}}"
    },
    "cards": {
      "title": "Membres",
      "customer": "Client",
      "balance": "Solde",
      "total-earned": "Total gagné",
      "total-redeemed": "Total échangé",
      "tier": "Palier",
      "wallet": "Wallet",
      "member-since": "Membre depuis",
      "scan": "Scanner",
      "enroll": "Inscrire un client",
      "adjust-balance": "Ajuster le solde",
      "remove-member": "Retirer de la fidélité",
      "remove-member-title": "Retirer ce client de la fidélité ?",
      "remove-member-description": "Sa carte, son solde et son historique seront supprimés. Le client reste dans votre fichier et pourra être réinscrit.",
      "redeem": "Échanger une récompense",
      "empty": "Aucun membre inscrit",
      "search": "Rechercher un membre...",
      "filter-tier": "Filtrer par palier",
      "back-link": "Retour à la fidélité",
      "detail-title": "Détail du membre",
      "phone": "Téléphone",
      "email": "Email",
      "name": "Nom",
      "load-more": "Charger plus",
      "total-spent": "Total dépensé",
      "total-visits": "Total visites",
      "credit-purchase": "Ajuster une dépense",
      "credit-visit": "Ajuster une visite",
      "add-stamp": "+1 tampon",
      "tabs": {
        "add": "Ajouter",
        "remove": "Retirer",
        "adjust": "Ajuster"
      },
      "manage-points": "Gérer les points",
      "count": "{count, plural, =0 {Aucun membre} one {# membre} other {# membres}}",
      "index": "#"
    },
    "transactions": {
      "title": "Transactions",
      "type": "Type",
      "source": "Source",
      "amount": "Montant",
      "stripe-fee": "Frais Stripe",
      "platform-fee": "Commission Suzzy",
      "net": "Net reçu",
      "balance-after": "Solde après",
      "description": "Description",
      "date": "Date",
      "reward": "Récompense",
      "empty": "Aucune transaction"
    },
    "wallet": {
      "apple": "Apple Wallet",
      "google": "Google Wallet",
      "title": "Portefeuille numérique"
    },
    "dialogs": {
      "delete-program": {
        "title": "Supprimer le programme",
        "description": "Êtes-vous sûr de vouloir supprimer ce programme de fidélité ? Cette action est irréversible et supprimera toutes les données associées."
      },
      "delete-tier": {
        "title": "Supprimer le palier",
        "description": "Êtes-vous sûr de vouloir supprimer ce palier ? Les membres associés seront déplacés."
      },
      "delete-reward": {
        "title": "Supprimer la récompense",
        "description": "Êtes-vous sûr de vouloir supprimer cette récompense ?"
      },
      "actions": {
        "title": "Gérer les points",
        "description": "Ajoutez, retirez ou ajustez les points de ce membre.",
        "purchase": "Dépense",
        "visit": "Visite"
      },
      "adjust-balance": {
        "title": "Ajuster le solde",
        "description": "Ajoutez ou retirez des points du solde de ce membre.",
        "amount": "Montant",
        "amount-placeholder": "Ex: 50 ou -20",
        "reason": "Raison (optionnel)",
        "reason-placeholder": "Raison de l'ajustement..."
      },
      "adjust-stamps": {
        "title": "Ajuster les tampons",
        "description": "Ajoutez ou retirez des tampons sur la carte de ce membre.",
        "amount": "Tampons (±)",
        "amount-placeholder": "Ex: 1 ou -1",
        "reason": "Raison (optionnel)",
        "reason-placeholder": "Raison de l'ajustement...",
        "stamp-decrease": "Retirer un tampon",
        "stamp-increase": "Ajouter un tampon"
      },
      "redeem-reward": {
        "title": "Échanger une récompense",
        "description": "Sélectionnez une récompense à échanger pour ce membre.",
        "select-reward": "Choisir une récompense",
        "insufficient-points": "Points insuffisants"
      },
      "enroll-customer": {
        "title": "Inscrire un client",
        "description": "Recherchez et sélectionnez un client à inscrire au programme de fidélité.",
        "search-placeholder": "Rechercher un client...",
        "no-results": "Aucun client trouvé",
        "enroll-new-client": "Inscrire avec cet email"
      },
      "enroll-by-contact": {
        "title": "Inscrire un nouveau client",
        "description": "Renseignez les informations du client pour l'inscrire au programme de fidélité.",
        "email": "Email",
        "phone": "Téléphone",
        "phone-placeholder": "06 12 34 56 78",
        "name": "Nom",
        "name-placeholder": "Jean Dupont",
        "submit": "Inscrire"
      },
      "credit-purchase": {
        "title": "Ajuster une dépense",
        "description": "Ajoutez un montant dépensé pour créditer les points de ce membre.",
        "amount": "Montant (€)",
        "amount-placeholder": "Ex: 25.50"
      },
      "credit-visit": {
        "title": "Ajuster une visite",
        "description": "Enregistrez une visite pour créditer les points de ce membre.",
        "amount": "Nombre de visites",
        "amount-placeholder": "Ex: 1 ou -1"
      },
      "credit-stamp": {
        "title": "Ajouter un tampon",
        "description": "Enregistrez une visite pour ajouter un tampon sur la carte de ce membre.",
        "confirm": "Ajouter le tampon"
      },
      "scan-card": {
        "title": "Scanner une carte",
        "description": "Scannez le QR code de la carte de fidélité du client",
        "camera-permission": "Autorisation de la caméra...",
        "camera-denied": "Accès à la caméra refusé",
        "camera-not-found": "Aucune caméra détectée",
        "camera-in-use": "La caméra est utilisée par une autre application",
        "camera-error": "Erreur lors de l'accès à la caméra",
        "camera-unavailable": "La caméra n'est pas disponible dans ce navigateur ou cette application",
        "camera-help": "Autorisez la caméra dans les réglages du navigateur ou de l'application, puis réessayez.",
        "scan-again": "Scanner à nouveau",
        "scanning": "Positionnez le QR code dans le cadre",
        "guidance": "Gardez le QR code bien cadré, augmentez la luminosité et stabilisez le téléphone.",
        "scanner-region": "Zone de scan du QR code",
        "manual-input": "Saisie manuelle",
        "use-camera": "Utiliser la caméra",
        "member-found": "Membre trouvé",
        "manual-placeholder": "12345678, email@exemple.com ou 06 12 34 56 78",
        "enroll-new-client": "Inscrire un nouveau client"
      },
      "scan-action": {
        "title": "Que souhaitez-vous faire ?",
        "description": "Choisissez une action pour ce membre",
        "credit": "Créditer",
        "credit-description": "Ajouter des points",
        "redeem": "Dépenser",
        "redeem-reward": "Récupérer {reward}",
        "redeem-description": "Échanger une récompense",
        "stamp-count": "Nombre de tampons",
        "stamp-decrease": "Retirer un tampon",
        "stamp-increase": "Ajouter un tampon",
        "reward-label": "Récompense"
      }
    },
    "dashboard": {
      "title": "Programme de fidélité"
    },
    "pkpass-preview": {
      "points": "Points",
      "tier": "Palier",
      "total-spent": "Total dépensé",
      "member-since": "Membre depuis",
      "email": "Email",
      "card-id": "ID Carte",
      "member-name": "Nom du membre",
      "current-tier": "Palier actuel",
      "shop-address": "Adresse",
      "contact": "Contact",
      "points-multiplier-suffix": "multiplicateur de points",
      "stamps": "Tampons",
      "stamps-card": "Carte de tampons",
      "done": "OK",
      "flip-hint": "Cliquez sur la carte pour voir le verso",
      "placeholder-email": "client@exemple.com",
      "placeholder-name": "Nom du client",
      "placeholder-card-id": "xxxx-xxxx-xxxx",
      "strip-placeholder": "Image de bannière"
    },
    "settings": {
      "title": "Paramètres de fidélité",
      "description": "Configurez les paramètres de votre programme de fidélité",
      "points": {
        "title": "Configuration des points",
        "description": "Définissez comment vos clients gagnent des points",
        "per-visit": "Points par visite",
        "per-currency": "Points par euro dépensé",
        "per-currency-description": "Les points sont crédités lors du passage en caisse."
      },
      "tier-basis": {
        "title": "Calcul des niveaux",
        "description": "Choisissez comment les niveaux clients sont calculés"
      },
      "cooldown": {
        "title": "Délai entre visites",
        "description": "Définissez le temps minimum entre deux visites",
        "duration": "Durée du délai"
      },
      "check-in": {
        "title": "Check-in tablette",
        "description": "Configurez le code PIN pour le check-in en magasin",
        "pin": "Code PIN check-in",
        "pin-description": "Code PIN à 6 chiffres pour le check-in client sur tablette",
        "signup-sms": "Lien d'inscription par SMS",
        "signup-sms-description": "Au premier passage, le client reçoit par SMS le lien pour finir son inscription et ajouter sa carte (crédits SMS). Désactivé, un QR code s'affiche sur la tablette.",
        "reward-ready": "Prévenir quand une récompense est prête",
        "reward-ready-description": "Le client est prévenu dès qu'il peut réclamer une récompense (carte pleine ou points atteints). Par e-mail si possible.",
        "reward-ready-sms-fallback": "SMS de secours si pas d'e-mail",
        "reward-ready-sms-fallback-description": "Envoie un SMS (payant) quand le client n'a pas d'e-mail. Nécessite l'option ci-dessus."
      },
      "save": "Enregistrer",
      "saving": "Enregistrement...",
      "error": "Erreur lors du chargement des paramètres de fidélité",
      "empty": "Aucun programme de fidélité trouvé",
      "tabs": {
        "configuration": "Configuration",
        "appearance": "Apparence"
      },
      "appearance": {
        "title": "Apparence de la carte",
        "description": "Personnalisez l'apparence visuelle de votre carte de fidélité",
        "preview-hint": "Aperçu de la carte dans le wallet",
        "accent-color-description-points": "Met en avant le solde de points (optionnelle, défaut sinon)",
        "banner": "Bannière",
        "banner-description": "Image affichée en haut de la carte dans Apple Wallet et Google Wallet. Sans bannière, la photo de couverture de l'établissement est utilisée.",
        "banner-placeholder": "Ajouter une bannière",
        "banner-dimmed": "Assombrir la bannière",
        "banner-dimmed-description": "Ajoute un voile sombre derrière les tampons pour qu'ils restent lisibles sur une photo. Désactivez-le pour une bannière claire ou illustrée."
      }
    },
    "scan-hub": {
      "title": "Tamponner une carte",
      "subtitle": "Scannez un QR code ou saisissez manuellement l'email d'un client",
      "scan": "Scanner un QR code",
      "scan-description": "Utilisez la caméra pour scanner une carte",
      "manual": "Saisie manuelle",
      "manual-description": "Saisissez l'email d'un client"
    },
    "nav": {
      "members": "Membres",
      "program": "Programme",
      "rewards": "Récompenses"
    },
    "modes": {
      "points": "Points",
      "stamps": "Tampons",
      "points-description": "Les clients gagnent des points sur les dépenses ou les visites.",
      "stamps-description": "Les clients collectent des tampons pour une récompense unique."
    },
    "mode-section": {
      "title": "Mode de fidélité",
      "description": "Choisissez comment les clients sont récompensés",
      "change-action": "Changer de mode"
    },
    "stamp-config": {
      "title": "Configuration des tampons",
      "description": "Définissez la carte de tampons et son icône",
      "stamps-required": "Taille de la carte",
      "stamps-required-description": "Nombre total de cases de la carte (5 à 10). Doit être au moins égal au plus grand palier de récompense.",
      "initial-stamps": "Tampons de bienvenue",
      "initial-stamps-description": "Nombre de tampons offerts automatiquement à chaque nouveau client",
      "icon": "Icône de tampon",
      "icon-description": "Icône personnalisée optionnelle affichée sur les tampons remplis",
      "icon-placeholder": "Ajouter une icône",
      "bg-color": "Couleur de fond",
      "bg-color-description": "Couleur de fond de la carte de fidélité (optionnelle, défaut sinon)",
      "accent-color": "Couleur d’accent",
      "accent-color-description": "Couleur des tampons collectés (optionnelle, défaut sinon)"
    },
    "stamp-preview": {
      "title": "Carte de tampons",
      "reward-title": "Récompense",
      "last-visit": "Dernier passage",
      "reward-available": "Récompense disponible",
      "remaining": "{remaining, plural, one {# tampon avant récompense} other {# tampons avant récompense}}"
    },
    "mode-switch": {
      "title": "Passer en mode {mode}",
      "description": "Définissez le ratio de conversion, vérifiez l’impact, puis confirmez le passage en {mode}.",
      "referral-reset-warning-title": "Les bonus de parrainage seront réinitialisés",
      "referral-reset-warning-description": "Le changement de mode désactive le versement des bonus et remet les montants du parrain et du filleul à 0. Vous devrez les reconfigurer dans la nouvelle unité.",
      "points-per-stamp": "Points par tampon",
      "stamps-required": "Tampons requis",
      "preview-action": "Aperçu de l’impact",
      "confirm-action": "Passer en {mode}",
      "preview": {
        "affected-cards": "{count} cartes concernées",
        "becoming-full": "{count} cartes deviennent pleines",
        "examples-title": "Exemples de conversion",
        "full-badge": "Pleine",
        "distribution-title": "Répartition",
        "distribution-stamps": "{count, plural, =0 {0 tampon} one {# tampon} other {# tampons}}",
        "distribution-customers": "{count, plural, one {# personne} other {# personnes}}"
      },
      "reward": {
        "title": "Récompense de tampon",
        "use-existing": "Utiliser une existante",
        "create-new": "En créer une",
        "select-existing": "Sélectionner une récompense",
        "new-name": "Nom de la récompense",
        "new-description": "Description",
        "new-image": "Image de la récompense",
        "new-image-placeholder": "Ajouter une image"
      },
      "migrating": {
        "title": "Migration en cours",
        "description": "Les cartes clients sont en cours de conversion. Les actions sensibles sont temporairement désactivées."
      }
    },
    "rewards-config": {
      "title": "Récompenses de fidélité",
      "description": "Ajustez les points ou tampons offerts à l'inscription et à la complétion du profil.",
      "profile-field-label": "Par champ de profil complété",
      "profile-field-helper": "Offerte à chaque information ajoutée au profil (nom, email, anniversaire…).",
      "profile-complete-label": "Bonus profil complet",
      "profile-complete-helper": "Offerte une fois lorsque le profil est entièrement rempli."
    }
  },
  "translations": {
    "tab": "Traductions",
    "details-tab": "Détails",
    "default-locale": "Langue par défaut",
    "add-language": "Ajouter une langue",
    "save-translations": "Enregistrer les traductions",
    "delete-translation": "Supprimer la traduction",
    "delete-translation-confirm": "Cette traduction sera définitivement supprimée. Cette action est irréversible.",
    "name": "Nom",
    "description": "Description",
    "translated": "traduit",
    "missing": "Traduction manquante",
    "status-complete": "Complet",
    "status-partial": "Partiel",
    "status-missing": "Manquant",
    "all": "Tous",
    "content-language": "Langue du contenu",
    "items-missing": "{count} produits sans traduction {lang}",
    "no-translations": "Aucune traduction ajoutée",
    "select-language": "Sélectionner une langue",
    "categories-missing": "{count} catégories sans traduction {lang}",
    "option-groups": {
      "select-group": "Groupe d'options",
      "no-selection": "Sélectionnez un groupe d'options à traduire",
      "group-name": "Nom du groupe",
      "options": "Options",
      "error": "Échec du chargement des traductions du groupe d'options"
    }
  },
  "ai-translation": {
    "trigger-button": "Traduction IA",
    "translate-this-entity": "Traduire avec IA",
    "dialog-title": "Traduction IA",
    "dialog-description": "Traduisez automatiquement vos produits et catégories avec l'intelligence artificielle.",
    "mode-label": "Mode de traduction",
    "mode": {
      "empty-only": "Champs vides uniquement",
      "empty-only-description": "Traduire seulement les champs sans traduction existante.",
      "overwrite": "Écraser les traductions",
      "overwrite-description": "Remplacer toutes les traductions existantes par de nouvelles.",
      "improve": "Améliorer les traductions",
      "improve-description": "Améliorer les traductions existantes tout en préservant le sens."
    },
    "entity-type-label": "Type d'entité",
    "entity-type": {
      "all": "Tout (produits + catégories + menus événementiels)",
      "item": "Produits uniquement",
      "category": "Catégories uniquement",
      "event-menu": "Menus événementiels uniquement"
    },
    "locales-label": "Langues cibles",
    "submit": "Lancer la traduction",
    "cancel": "Annuler",
    "banner": {
      "queued": "Traduction IA en file d'attente...",
      "processing": "Traduction IA en cours...",
      "completed": "Traduction IA terminée !",
      "completed-with-errors": "Traduction IA terminée avec erreurs",
      "failed": "Échec de la traduction IA"
    },
    "status": {
      "queued": "En attente",
      "processing": "En cours",
      "completed": "Terminé",
      "failed": "Échoué",
      "cancelled": "Arrêté"
    },
    "counter": {
      "translated": "{count} traduits",
      "failed": "{count} échoués"
    },
    "retry": "Réessayer",
    "source": {
      "ai": "IA"
    },
    "error": {
      "conflict-title": "Traduction déjà en cours",
      "conflict-description": "Une traduction est déjà en cours. Veuillez attendre qu'elle se termine.",
      "rate-limit-title": "Limite atteinte",
      "rate-limit-description": "Trop de demandes de traduction. Veuillez réessayer dans quelques minutes.",
      "generic-title": "Erreur de traduction",
      "generic-description": "Une erreur est survenue lors de la traduction. Veuillez réessayer."
    },
    "section-title": "Traduction automatique"
  },
  "prospection": {
    "tabs": {
      "search": "Recherche",
      "import": "Import CSV"
    },
    "search": {
      "title": "Recherche de commerces",
      "placeholder": "Rechercher des restaurants, cafés...",
      "results-count": "{count} résultats",
      "no-results": "Aucun résultat trouvé",
      "error": "Erreur lors de la recherche"
    },
    "import": {
      "drop-zone": "Glissez un fichier CSV ici ou cliquez pour parcourir",
      "browse": "Parcourir",
      "imported": "{count} prospects importés",
      "errors": "{count} lignes ignorées",
      "invalid-headers": "En-têtes invalides. Colonnes requises : placeId, name, formattedAddress",
      "empty-file": "Le fichier est vide",
      "import-new": "Importer un autre fichier"
    },
    "filters": {
      "all": "Tous",
      "hot": "Hot",
      "warm": "Warm",
      "cold": "Cold",
      "selected": "{count} sélectionnés",
      "select-all": "Tout sélectionner",
      "deselect-all": "Désélectionner tout"
    },
    "score": {
      "hot": "Hot",
      "warm": "Warm",
      "cold": "Cold",
      "reviews": "{count} avis",
      "no-website": "Pas de site web",
      "no-reservation": "Pas de résa en ligne",
      "has-website": "Site web",
      "has-reservation": "Résa en ligne",
      "maps-link": "Maps",
      "game-link": "Game"
    },
    "batch": {
      "title": "Assignation batch",
      "description": "Assigner les commerces sélectionnés aux template shops",
      "available-shops": "{count} template shops disponibles",
      "not-enough-shops": "Pas assez de template shops ({available}/{needed})",
      "start": "Lancer l'assignation",
      "processing": "Traitement en cours... ({current}/{total})",
      "complete": "Terminé — {success} réussis, {errors} échoués",
      "generate-socles": "Générer les socles",
      "cancel": "Annuler",
      "reset": "Nouvelle recherche"
    },
    "status": {
      "pending": "En attente",
      "processing": "En cours",
      "assigned": "Assigné",
      "error": "Erreur"
    },
    "export": {
      "title": "Export des socles",
      "generating": "Génération en cours...",
      "download": "Télécharger",
      "download-sheet": "Télécharger planche A4",
      "download-all": "Tout télécharger",
      "no-socles": "Lancez le batch d'abord"
    },
    "errors": {
      "insufficient-template-shops": "Pas assez de template shops",
      "business-plan-not-found": "Plan business introuvable",
      "unknown": "Erreur inconnue"
    },
    "table": {
      "name": "Commerce",
      "score": "Score",
      "address": "Adresse",
      "rating": "Note et avis",
      "phone": "Téléphone",
      "website": "Site web",
      "reservation": "Réservation",
      "loaded-count": "{count} résultats chargés",
      "selection-hint": "La sélection concerne cette page. Lancez ensuite l’assignation.",
      "status": "Statut",
      "export-csv": "Exporter CSV",
      "remove-results": "Retirer des résultats"
    }
  },
  "export-sort": {
    "label": "Trier par",
    "ascending": "Croissant",
    "descending": "Décroissant",
    "toggle-direction": "Inverser l'ordre de tri"
  },
  "billing": {
    "current-plan": "Plan actuel",
    "available-plans": "Plans disponibles",
    "choose-plan": "Choisir",
    "trial-days-short": "{days}j",
    "trial-ends": "Fin de l'essai",
    "next-renewal": "Prochain renouvellement",
    "resume-subscription": "Reprendre l'abonnement",
    "cancel-scheduled": "Sera annulé le {date}",
    "payment-method": "Moyen de paiement",
    "card-on-file": "Carte enregistrée",
    "update-card": "Mettre à jour la carte",
    "no-subscription-for-payment": "Abonnez-vous pour ajouter un moyen de paiement",
    "sms-balance": "Solde SMS",
    "date": "Date",
    "amount": "Montant",
    "status": "Statut",
    "confirm-payment": "Confirmer le paiement",
    "payment-error": "Le paiement a échoué. Veuillez réessayer.",
    "features-included": "Fonctionnalités incluses",
    "checkout-title-subscription": "S'abonner",
    "checkout-title-setup": "Mettre à jour le moyen de paiement",
    "select-shop-first": "Sélectionnez un établissement pour gérer la facturation",
    "error-loading": "Échec du chargement des données de facturation",
    "manage-billing": "Gérer mon abonnement",
    "cycle": {
      "monthly": "Mensuel",
      "annual": "Annuel (12 mois)",
      "quarterly": "Trimestriel (3 mois)",
      "semi-annual": "Semestriel (6 mois)"
    },
    "price-suffix": {
      "monthly": "mois",
      "annual": "an",
      "quarterly": "3 mois",
      "semi-annual": "6 mois"
    },
    "features": {
      "reservations": "Réservations en ligne 0% commission",
      "website": "Site web professionnel",
      "digital-menu": "Menu digital + QR code",
      "google-reviews": "Collecte d'avis Google",
      "ai-reviews": "Réponses IA aux avis",
      "seo-boost": "Boost Google & SEO local",
      "loyalty": "Programme fidélité",
      "email-marketing": "Email marketing",
      "click-collect": "Click & Collect 0% commission",
      "analytics": "Analytics consolidé",
      "multi-sites": "Multi-sites"
    },
    "tabs": {
      "subscription": "Abonnement",
      "sms-credits": "Crédits SMS"
    },
    "promo-code": "Code promo",
    "apply": "Appliquer",
    "remove-promo": "Retirer le code promo",
    "promo-invalid": "Code promo invalide",
    "subtotal": "Sous-total",
    "discount": "Réduction",
    "total-today": "À payer aujourd'hui",
    "charged-after-trial": "Facturé après l'essai gratuit",
    "start-trial": "Commencer l'essai gratuit",
    "continue-to-payment": "Continuer vers le paiement",
    "invoices": "Factures",
    "invoice-number": "N° facture",
    "download-pdf": "Télécharger le PDF",
    "no-invoices": "Aucune facture pour le moment",
    "payment-methods": "Moyens de paiement",
    "add-card": "Ajouter une carte",
    "delete-card": "Supprimer la carte",
    "default-card": "Par défaut",
    "sepa-direct-debit": "Prélèvement SEPA",
    "invoice-status": {
      "paid": "Payée",
      "open": "En attente",
      "void": "Annulée",
      "draft": "Brouillon",
      "uncollectible": "Irrécouvrable"
    },
    "add-card-description": "Ajoutez un moyen de paiement sécurisé",
    "add-payment-method": "Ajouter un moyen de paiement",
    "add-payment-method-description": "Ajoutez un moyen de paiement sécurisé pour vos abonnements",
    "set-default": "Définir par défaut",
    "includes-features": "Toutes les fonctionnalités incluses ({count})",
    "trial-active": "Période d'essai · {days} jours restants",
    "period-start": "Début de la période",
    "search-invoices": "Rechercher une facture...",
    "filter-all": "Toutes",
    "no-invoices-filtered": "Aucune facture ne correspond aux filtres",
    "active-until": "Actif jusqu'au",
    "sms-price-info": "0,{price}€ HT par SMS",
    "custom-credits-placeholder": "Nombre de SMS...",
    "preset-subtitle": "{credits} crédits · {price}€ HT",
    "price-label": "{price}€",
    "price-label-ht": "{price}€ HT",
    "credits-count": "{count} crédits SMS",
    "unit-price": "Prix unitaire",
    "custom-amount": "Montant personnalisé",
    "price-per-sms": "{price}€ HT / crédit SMS",
    "sms-credit-tooltip": "1 crédit SMS = 1 SMS de 160 caractères",
    "vat": "TVA ({rate}%)",
    "selected-plan": "Sélectionné",
    "request-cancellation": "Demander la résiliation",
    "request-cancellation-dialog": {
      "title": "Demander la résiliation de l'abonnement",
      "description": "Votre abonnement ne sera pas résilié immédiatement. Notre équipe traite chaque demande manuellement et reviendra vers vous.",
      "contact-note": "Pour résilier, vous devez nous contacter. La résiliation n'est pas automatique : notre équipe vous recontactera pour finaliser votre demande.",
      "reason-label": "Motif (facultatif)",
      "reason-placeholder": "Dites-nous pourquoi vous souhaitez résilier (facultatif)",
      "confirm": "Envoyer la demande",
      "cancel": "Annuler",
      "commitment-warning": "Votre abonnement est engagé jusqu'au {date}. Une résiliation avant cette date reste soumise aux conditions de votre engagement."
    },
    "sms-recap": {
      "title": "SMS automatiques",
      "description": "Les SMS envoyés automatiquement à vos clients. Chaque SMS est facturé {price} HT.",
      "on": "Activé",
      "off": "Désactivé",
      "edit": "Modifier",
      "manual-note": "Les campagnes, automatisations et SMS envoyés à la main depuis une réservation sont facturés au même tarif, à chaque envoi.",
      "items": {
        "confirmation": "Confirmation de réservation",
        "reminder": "Demande de confirmation",
        "visit-reminder": "Rappel avant la visite",
        "cancellation": "Annulation de réservation",
        "no-show": "Client absent (no-show)",
        "review": "Demande d'avis",
        "approval-request": "Demande reçue (validation restaurant)",
        "approval-approved": "Demande validée (validation restaurant)",
        "approval-declined": "Demande annulée (validation restaurant)",
        "reservation-verification": "Code de vérification des réservations",
        "order-verification": "Code de vérification des commandes"
      }
    },
    "sms-usage": {
      "title": "SMS ce mois-ci",
      "price-info": "{price} HT par SMS au-delà de vos crédits prépayés, ajouté à votre facture mensuelle.",
      "prepaid-credits": "Crédits prépayés restants",
      "monthly-cap": "Plafond mensuel",
      "cap-label": "Plafond mensuel (€ HT)",
      "cap-help": "Une fois ce montant atteint, l'envoi de SMS est bloqué jusqu'à la prochaine période de facturation.",
      "price-label": "Prix par SMS (€ HT)",
      "price-help": "Facturé pour chaque SMS au-delà des crédits prépayés : 0,20 € par défaut, 0,09 € minimum. S'applique tout de suite ; les SMS déjà envoyés sur la période sont facturés à l'ancien prix.",
      "cap-contact": "Vous pouvez le régler jusqu'à 100 € HT. Pour aller au-delà, contactez l'équipe Suzzy.",
      "unavailable": "SMS disponibles avec un abonnement actif",
      "unavailable-cta": "Voir les abonnements",
      "next-invoice-on": "Prochaine facture le {date}",
      "next-invoice": "Prochaine facture",
      "invoice-summary": "{count} SMS · {amount} HT",
      "billed-history-title": "SMS facturés sur cette période",
      "billed-history-empty": "Aucun SMS facturé sur cette période",
      "billed-segments-column": "SMS facturés",
      "billed-amount-column": "Montant HT",
      "upcoming-label": "SMS à facturer sur la prochaine facture :",
      "upcoming-cta": "Voir le détail",
      "notice": "Les SMS sont facturés {price} HT l'unité au-delà de vos crédits prépayés."
    },
    "invoice-details": "Détail",
    "invoice-discount": "Remise : −{amount} HT",
    "commitment-active": "Engagement en cours jusqu'au {date}",
    "services": {
      "title": "Services facturés",
      "empty": "Aucun service facturé",
      "discount-once": "1re échéance",
      "discount-forever": "chaque échéance"
    }
  },
  "subscription-banner": {
    "title": "Abonnement requis",
    "description": "Souscrivez à un abonnement pour débloquer les fonctionnalités incluses.",
    "trial-title": "Essai en cours",
    "subscription-trial-description": "Votre abonnement est en période d'essai pendant encore {days} jours.",
    "feature-trial-description": "Un accès d'essai est actif pendant encore {days} jours.",
    "trial-available-title": "Essai gratuit disponible",
    "trial-available-description": "Démarrez votre abonnement pour profiter de votre essai gratuit.",
    "days-left": "{days}j",
    "subscribe-now": "S'abonner",
    "start-trial": "Commencer l'essai",
    "view-billing": "Voir l'abonnement"
  },
  "feature-disabled": {
    "admin-disabled": {
      "title": "Fonctionnalité temporairement indisponible",
      "description": "Cette fonctionnalité est temporairement désactivée par la plateforme."
    },
    "expired": {
      "title": "Accès expiré",
      "description": "Votre accès à cette fonctionnalité a expiré. Souscrivez pour continuer à en bénéficier."
    },
    "no-subscription": {
      "title": "Abonnement requis",
      "description": "Souscrivez à un abonnement pour rendre cette fonctionnalité accessible à vos clients."
    },
    "subscribe": "S'abonner",
    "disabled": {
      "title": "Fonctionnalité mise en pause",
      "description": "Vous avez désactivé cette fonctionnalité : vos clients ne peuvent plus l'utiliser."
    },
    "reactivate": "Réactiver"
  },
  "widget": {
    "settings-title": "Widget de réservation",
    "settings-description": "Configurez le widget de réservation intégrable sur votre site web",
    "nav-title": "Widget",
    "appearance-title": "Apparence",
    "color-label": "Couleur principale",
    "color-description": "Laissez vide pour reprendre la couleur principale du thème.",
    "position-label": "Position",
    "position-bottom-right": "En bas à droite",
    "position-bottom-left": "En bas à gauche",
    "mode-label": "Mode d'affichage",
    "mode-popup": "Pop-up",
    "mode-inline": "Intégré",
    "embed-code-title": "Code d'intégration",
    "embed-code-description": "Copiez ce code et collez-le sur votre site web",
    "copy-code": "Copier le code",
    "copied": "Copié !",
    "preview-title": "Aperçu",
    "preview-button-label": "Réserver",
    "save": "Enregistrer",
    "saving": "Enregistrement...",
    "save-success": "Configuration du widget enregistrée",
    "preview-description": "Aperçu du bouton flottant sur le site du commerçant",
    "preview-cta-label": "Réserver une table",
    "preview-popup-label": "Popup ouvert",
    "preview-continue-label": "Continuer",
    "error": "Impossible de charger la configuration du widget",
    "launcher-title": "Launcher (recommandé)",
    "launcher-description": "Un bouton flottant unique qui ouvre un écran de choix pour tous vos services. Code d'intégration recommandé.",
    "reservation-title": "Réservation (intégré)",
    "reservation-description": "Intégrez le service de réservation sous forme de bloc dans une page.",
    "click-and-collect-title": "Click & Collect (intégré)",
    "click-and-collect-description": "Intégrez le service de commande Click & Collect sous forme de bloc dans une page.",
    "no-enabled-widgets": "Aucun widget n'est activé. Activez les Réservations ou le Click & Collect pour obtenir un code d'intégration."
  },
  "bottom-nav": {
    "reservations": {
      "calendar": "Calendrier"
    }
  },
  "onboarding": {
    "empty": {
      "welcome": "Bienvenue !",
      "intro": "Pour commencer, créez votre boutique ou attendez une invitation de votre manager.",
      "create-shop": {
        "title": "Créer ma boutique",
        "description": "Démarrez votre activité en créant votre première boutique.",
        "action": "Créer"
      },
      "wait-invite": {
        "title": "Attendre une invitation",
        "description": "Partagez votre adresse email avec votre manager pour être invité.",
        "email-label": "Votre email"
      },
      "or": "ou",
      "copy-email": "Copier l'email"
    }
  },
  "invitation": {
    "roles": {
      "viewer": "Employé",
      "editor": "Manager",
      "admin": "Gérant"
    },
    "accept": {
      "title": "Invitation à rejoindre {shopName}",
      "subtitle": "Vous avez été invité à rejoindre une boutique",
      "inviter-label": "Invité par",
      "role-label": "Rôle",
      "expires-label": "Expire",
      "expires-in-days": "{count, plural, =0 {Expiré} one {dans # jour} other {dans # jours}}",
      "not-logged-in-hint": "Pour accepter cette invitation, vous devez vous connecter ou créer un compte.",
      "login": "Se connecter",
      "register": "Créer un compte",
      "accept-btn": "Accepter l'invitation",
      "decline-btn": "Refuser",
      "email-mismatch": {
        "title": "Email différent",
        "description": "Cette invitation est destinée à {inviteEmail}, mais vous êtes connecté avec {currentEmail}. Déconnectez-vous pour accepter."
      },
      "logout": "Se déconnecter"
    },
    "status": {
      "pending": "En attente",
      "expired": "Expirée",
      "accepted": "Acceptée"
    },
    "expired": {
      "title": "Invitation expirée",
      "description": "Cette invitation n'est plus valide. Contactez votre manager pour recevoir une nouvelle invitation."
    },
    "accepted": {
      "title": "Invitation déjà acceptée",
      "description": "Cette invitation a déjà été acceptée. Connectez-vous pour accéder à votre tableau de bord."
    },
    "not-found": {
      "title": "Invitation introuvable",
      "description": "Cette invitation n'existe pas ou a expiré. Vérifiez le lien ou contactez votre manager."
    },
    "back-to-login": "Retour à la connexion"
  },
  "team": {
    "title": "Équipe",
    "page-description": "Gérez les membres de votre équipe et les invitations",
    "invite": "Inviter",
    "search-placeholder": "Rechercher par email ou nom...",
    "invite-dialog": {
      "title": "Inviter un membre",
      "email-label": "Adresse email",
      "role-label": "Rôle",
      "hint": "Si cet email n'a pas de compte, une invitation sera envoyée.",
      "submit": "Inviter",
      "cancel": "Annuler"
    },
    "role": {
      "admin": "Gérant",
      "editor": "Manager",
      "viewer": "Employé",
      "admin-desc": "Accès complet : gestion des membres, des paramètres et du contenu",
      "editor-desc": "Peut modifier le contenu mais ne peut pas gérer les membres",
      "viewer-desc": "Accès en lecture seule"
    },
    "columns": {
      "member": "Membre",
      "role": "Rôle",
      "since": "Depuis",
      "actions": "Actions",
      "last-activity": "Dernière activité"
    },
    "actions": {
      "change-role": "Modifier le rôle",
      "remove": "Retirer"
    },
    "members": {
      "empty": "Aucun membre",
      "count": "{count, plural, =0 {Aucun membre} one {# membre} other {# membres}}"
    },
    "invitations": {
      "title": "Invitations en attente",
      "empty": "Aucune invitation en attente",
      "expires": "Expire",
      "revoke": "Révoquer"
    },
    "confirm-remove": {
      "title": "Retirer un membre",
      "description": "Retirer {email} du shop ? Cette action est irréversible.",
      "confirm": "Retirer"
    },
    "change-role": {
      "title": "Modifier le rôle",
      "description": "Sélectionnez le nouveau rôle pour {email}"
    },
    "kpi": {
      "total-members": "Total membres",
      "admins": "Gérants",
      "pending": "Invitations en attente"
    },
    "errors": {
      "already-member": "Cet utilisateur est déjà membre",
      "cannot-remove-last-admin": "Impossible de retirer le dernier gérant",
      "self-invite": "Vous ne pouvez pas vous inviter vous-même"
    },
    "success": {
      "invited-existing": "Accès accordé à l'utilisateur existant",
      "invited-new": "Invitation envoyée avec succès",
      "removed": "Membre retiré",
      "role-changed": "Rôle mis à jour",
      "revoked": "Invitation révoquée"
    },
    "activity": {
      "active": "Actif",
      "low": "Faible activité",
      "inactive": "Inactif",
      "unknown": "Pas encore de donnée"
    }
  },
  "admin-users": {
    "title": "Utilisateurs",
    "page-description": "Gérer les utilisateurs de la plateforme",
    "search-placeholder": "Rechercher par email ou nom...",
    "count": "{count, plural, =0 {Aucun utilisateur} one {# utilisateur} other {# utilisateurs}}",
    "empty": "Aucun utilisateur trouvé",
    "columns": {
      "email": "Email",
      "name": "Nom",
      "shops-count": "Shops",
      "is-admin": "Admin",
      "status": "Statut",
      "created": "Créé le",
      "terms": "CGV"
    },
    "filters": {
      "only-admins": "Admins uniquement",
      "only-blocked": "Comptes suspendus uniquement",
      "only-with-shops": "Avec shops uniquement"
    },
    "detail": {
      "back": "Retour",
      "shops-title": "Accès aux shops",
      "no-shops": "Aucun accès shop",
      "view-shop": "Voir le shop",
      "consents-title": "Conditions acceptées"
    },
    "status": {
      "blocked": "Suspendu",
      "active": "Actif"
    },
    "block": {
      "title": "Suspendre l’accès",
      "description": "Ce commerçant ne pourra plus accéder à l’application.",
      "action": "Suspendre",
      "confirm-title": "Suspendre ce compte ?",
      "confirm-description": "L’accès de {email} sera suspendu immédiatement. Cette action ne peut pas être annulée depuis le back-office.",
      "confirm-action": "Confirmer la suspension",
      "success": "Le compte a été suspendu.",
      "bulk-action": "Suspendre ({count})",
      "bulk-description": "L’accès de ces comptes commerçants sera suspendu immédiatement : {emails}. Cette action ne peut pas être annulée depuis le back-office."
    },
    "terms": {
      "accepted": "Acceptées le {date}",
      "outdated": "Version obsolète",
      "none": "Non acceptées"
    }
  },
  "account-suspended": {
    "eyebrow": "Espace de démonstration limité",
    "title": "Votre accès est suspendu",
    "description": "Vous pouvez explorer cet espace de démonstration fictif, mais aucune donnée ni action réelle n’est disponible tant que votre accès n’est pas rétabli.",
    "read-only": "Lecture seule · données fictives",
    "navigation-label": "Navigation de démonstration",
    "navigation": {
      "start": "Départ",
      "flow": "Flux",
      "signals": "Signaux",
      "studio": "Studio",
      "library": "Bibliothèque",
      "preferences": "Préférences"
    },
    "sections": {
      "overview": {
        "title": "Point de départ",
        "description": "Cette vue présente uniquement des repères fictifs pour découvrir l’espace limité."
      },
      "flow": {
        "title": "Espace flux",
        "description": "Cette vue est un exemple statique : elle ne contient aucun événement, aucune file et aucune opération réelle."
      },
      "signals": {
        "title": "Espace signaux",
        "description": "Cette vue rassemble des exemples fictifs de contexte, sans profil, message ou historique réel."
      },
      "studio": {
        "title": "Espace studio",
        "description": "Cette vue montre un canevas d’exploration fictif, sans contenu publié ni outil actif."
      },
      "controls": {
        "title": "Espace réglages",
        "description": "Cette vue est un aperçu statique : aucune préférence, configuration ou information de compte réelle n’est affichée."
      }
    },
    "cards": {
      "first": {
        "title": "Repère",
        "description": "Exemple visuel sans donnée associée."
      },
      "second": {
        "title": "Canevas",
        "description": "Contenu fictif disponible uniquement pour l’exploration."
      },
      "third": {
        "title": "Aperçu",
        "description": "Aucune activité réelle n’est affichée dans cet espace."
      }
    },
    "limited-title": "Accès protégé",
    "limited-description": "Les fonctionnalités métier, les données et les modifications restent indisponibles pour ce compte.",
    "fictitious-note": "Tous les éléments visibles sont fictifs et ne représentent ni votre activité ni celle d’un commerce.",
    "actions": {
      "title": "Commandes de démonstration",
      "description": "Ces commandes n’enregistrent rien. Elles indiquent simplement comment demander la réactivation de votre accès.",
      "create": "Créer un exemple",
      "edit": "Modifier un exemple",
      "scan": "Ouvrir un outil",
      "export": "Préparer un aperçu"
    },
    "support": {
      "title": "Demander la réactivation",
      "description": "Cette commande est désactivée pour votre compte. Contactez-nous pour demander le rétablissement de votre accès.",
      "close": "Fermer"
    }
  },
  "settings-overviews": {
    "google": {
      "title": "Google",
      "description": "Retrouvez ici les réglages liés à Google. Chaque lien ouvre le réglage à modifier.",
      "loading": "Chargement de l’état…",
      "unavailable": "État indisponible pour le moment",
      "connection": {
        "title": "Connexion Google",
        "connected": "Compte Google connecté",
        "disconnected": "Connexion absente ou à renouveler"
      },
      "place": {
        "title": "Fiche Google",
        "connected": "Place ID renseigné",
        "missing": "Place ID manquant"
      },
      "reviews": {
        "title": "Avis Google",
        "needs-connection": "Connexion Google nécessaire",
        "synced": "Synchronisation déjà effectuée",
        "not-synced": "Aucune synchronisation effectuée"
      },
      "ai": {
        "title": "Réponses aux avis",
        "off": "Réponses IA désactivées",
        "draft": "Brouillons IA activés",
        "auto": "Réponses automatiques activées",
        "needs-connection": "Mode configuré, connexion Google nécessaire"
      },
      "posts": {
        "title": "Publications Google",
        "available": "Connexion active · publications disponibles",
        "needs-connection": "Connexion Google nécessaire"
      },
      "reserve": {
        "title": "Réserver avec Google",
        "needs-place": "Renseignez d’abord votre fiche Google",
        "enabled": "Activé dans Suzzy",
        "disabled": "Désactivé dans Suzzy"
      },
      "publication-note": "L’activation dans Suzzy ne confirme pas la publication de votre établissement sur Google.",
      "page-title": "Google et avis",
      "steps-description": "Connectez votre compte et choisissez votre fiche : chacun débloque ses options.",
      "steps": {
        "connect": {
          "title": "Connecter votre compte Google",
          "description": "Nécessaire pour les avis, les réponses et les publications."
        },
        "place": {
          "title": "Choisir votre fiche",
          "description": "Relie Suzzy à votre établissement sur Google Maps.",
          "action": "Choisir la fiche"
        },
        "options": {
          "title": "Activer les options",
          "description": "Avis, réponses IA, publications, Réserver avec Google."
        },
        "after": "Après l'étape {step}",
        "done": "Terminé",
        "after-connect-or-place": "Disponible après l'étape 1 ou 2"
      }
    },
    "messages": {
      "title": "Messages et SMS",
      "description": "Retrouvez les messages envoyés aux clients et les alertes reçues par votre équipe.",
      "reservations": {
        "title": "Réservations",
        "description": "Confirmations, rappels, annulations et avis"
      },
      "orders": {
        "title": "Commandes",
        "description": "Vérification des commandes"
      },
      "sms": {
        "title": "Consommation SMS",
        "description": "Crédit, plafond et historique",
        "remaining": "{count} segments disponibles"
      },
      "blocked-title": "Envoi SMS bloqué",
      "blocked-description": "Aucun segment SMS n’est disponible. Les messages activés ne pourront pas partir tant que le crédit ou le plafond n’est pas rétabli.",
      "blocked-action": "Voir le crédit et le plafond SMS",
      "staff": {
        "title": "Mes alertes",
        "description": "Notifications reçues par votre équipe"
      }
    }
  },
  "shop-settings-hub": {
    "page-title": "Paramètres",
    "establishment": {
      "title": "Établissement",
      "google-title": "Google"
    },
    "services": {
      "title": "Services",
      "floor-plan-description": "Salles, tables et fermetures"
    },
    "relation": {
      "title": "Relation client"
    },
    "communication": {
      "title": "Communication",
      "messages-title": "Messages et SMS"
    },
    "payments": {
      "title": "Paiements"
    },
    "distribution": {
      "title": "Diffusion et appareils",
      "printer-title": "Imprimante de cet appareil"
    },
    "status": {
      "auto-print-disabled": "Impression automatique désactivée sur cet appareil",
      "auto-print-enabled": "Impression automatique activée sur cet appareil",
      "auto-tagging-disabled": "Tags automatiques désactivés",
      "auto-tagging-enabled": "Tag après {count} absences",
      "google-place-missing": "Place ID manquant",
      "google-place-set": "Place ID renseigné",
      "payments-not-ready": "Encaissement à finaliser",
      "payments-ready": "Encaissement prêt",
      "sms-remaining": "{count} segments SMS restants",
      "sms-blocked": "Envoi SMS bloqué · aucun segment disponible"
    },
    "account": {
      "title": "Mon compte",
      "profile-title": "Mon profil",
      "notifications-title": "Notifications"
    },
    "boutique": {
      "title": "Boutique",
      "performance-title": "Performance",
      "info-title": "Informations générales",
      "info-description": "Nom, logo, adresse, contact",
      "hours-title": "Horaires",
      "hours-description": "Jours et créneaux d'ouverture",
      "team-title": "Équipe",
      "team-description": "Membres et rôles",
      "team-meta": "{count, plural, =0 {Aucun membre} one {# membre} other {# membres}}",
      "theme-title": "Apparence",
      "theme-description": "Couleurs et branding",
      "links-title": "Liens externes",
      "links-description": "Site web, réseaux sociaux",
      "flyers-title": "Flyers",
      "auto-tagging-title": "Tags automatiques",
      "activity-title": "Journal d'activité"
    },
    "features": {
      "title": "Fonctionnalités",
      "active-count": "{count}/{total} actifs",
      "reservations-title": "Réservations",
      "reservations-description": "Gestion des réservations en ligne",
      "click-and-collect-title": "Click & Collect",
      "click-and-collect-description": "Commandes à emporter",
      "delivery-title": "Livraison",
      "delivery-description": "Commandes en livraison",
      "digital-menu-title": "Menu digital",
      "digital-menu-description": "Carte et stocks consultables en ligne",
      "loyalty-title": "Fidélité",
      "loyalty-description": "Programme de fidélité",
      "game-campaigns-title": "Jeux",
      "game-campaigns-description": "Campagnes interactives et récompenses",
      "error-loading": "Erreur lors du chargement des fonctionnalités",
      "table-service-title": "Service à table"
    },
    "integrations": {
      "title": "Intégrations",
      "google-mybusiness-title": "Google My Business",
      "google-mybusiness-description": "Avis Google synchronisés",
      "widgets-title": "Widgets"
    },
    "billing": {
      "title": "Facturation",
      "payment-account-title": "Encaissement des paiements",
      "payment-guarantees-title": "Empreinte bancaire",
      "subscription-title": "Plan d'abonnement",
      "subscription-description": "Gérer votre abonnement",
      "sms-title": "Consommation SMS",
      "sms-description": "Consommation, plafond mensuel et historique"
    },
    "support": {
      "title": "Aide et support",
      "help-center-title": "Centre d'aide",
      "changelog-title": "Nouveautés",
      "trustpilot-title": "Donner votre avis sur Trustpilot"
    },
    "tools": {
      "title": "Outils",
      "mobile-apps-title": "Applications Suzzy Pro",
      "printer-guide-title": "Guide des imprimantes"
    },
    "groups": {
      "establishment": "Mon établissement",
      "clients": "Clients et messages",
      "payments-devices": "Paiements et appareils"
    },
    "clients": {
      "reservation-messages-title": "Messages de réservation"
    },
    "descriptions": {
      "info": "Nom, logo, adresse et contact",
      "links": "Site web et réseaux sociaux",
      "hours": "Jours d'ouverture, fermetures et jours spéciaux",
      "theme": "Couleurs de vos pages clients",
      "team": "Inviter vos employés et choisir leurs accès",
      "performance": "Les chiffres de votre activité",
      "reservations": "Vos clients réservent une table en ligne",
      "floor-plan": "Salles, tables et fermetures",
      "payment-guarantees": "Carte bancaire demandée contre les absences",
      "click-and-collect": "Commandes à emporter",
      "delivery": "Commandes livrées à domicile",
      "table-service": "Vos clients commandent depuis leur table",
      "digital-menu": "Votre carte, vos plats et leurs stocks",
      "delivery-platforms": "Recevoir les commandes Uber Eats et Deliveroo",
      "reservation-messages": "Confirmations et rappels envoyés aux clients",
      "sms": "Crédit SMS et historique des envois",
      "notifications": "Les alertes que vous recevez",
      "google": "Votre fiche Google et vos avis Google",
      "reviews": "Demander et suivre les avis de vos clients",
      "game-campaigns": "Jeux pour faire revenir vos clients",
      "loyalty": "Points et cadeaux pour vos habitués",
      "auto-tagging": "Classer vos clients automatiquement",
      "payment-account": "Recevoir l'argent des paiements en ligne et créer des liens d'acompte",
      "subscription": "Votre formule Suzzy et vos factures",
      "widgets": "Ajouter la réservation à votre site web",
      "flyers": "Affiches avec QR code à imprimer",
      "printer-settings": "Impression des tickets sur cet appareil",
      "printer-guide": "Brancher et régler une imprimante",
      "mobile-apps": "Installer Suzzy Pro sur téléphone et tablette",
      "profile": "Votre nom, e-mail, mot de passe et langue",
      "activity": "Qui a fait quoi, et quand",
      "deposits": "Demandes d’acompte par lien"
    },
    "search": {
      "label": "Rechercher un réglage",
      "placeholder": "Rechercher : horaires, SMS, imprimante…",
      "empty": "Aucun réglage ne correspond à « {query} ».",
      "clear": "Effacer la recherche"
    },
    "setup": {
      "title": "Pour bien démarrer",
      "progress": "{done} sur {total} étapes faites",
      "done": "Fait",
      "action": "Configurer",
      "steps": {
        "info": "Renseigner le nom, l'adresse et le téléphone",
        "hours": "Indiquer vos horaires d'ouverture",
        "google": "Relier votre fiche Google",
        "payment-account": "Activer l'encaissement en ligne"
      }
    },
    "shortcuts": {
      "title": "Accès rapides"
    },
    "help": {
      "button": "Aide",
      "new-tab": "(ouvre un nouvel onglet)"
    }
  },
  "event-menus": {
    "list": {
      "title": "Menus événementiels",
      "create": "Créer un menu",
      "empty": "Aucun menu événementiel pour le moment.",
      "empty-search": "Aucun menu événementiel ne correspond à votre recherche.",
      "error": "Impossible de charger les menus événementiels."
    },
    "create": {
      "title": "Nouveau menu événementiel",
      "back-link": "Retour aux menus"
    },
    "edit": {
      "title": "Modifier le menu événementiel",
      "back-link": "Retour aux menus",
      "error": "Impossible de charger ce menu événementiel.",
      "delete": "Supprimer le menu",
      "danger-zone-title": "Zone à risque",
      "danger-zone-description": "La suppression d'un menu événementiel est définitive. Les réservations passées qui y sont rattachées conservent leur historique."
    },
    "table": {
      "name": "Nom",
      "mode": "Mode",
      "price": "Prix par couvert",
      "period": "Période",
      "created-at": "Créé le",
      "status": "Actif",
      "no-period": "Aucune plage définie",
      "period-summary": "{count} plages — {firstStart} → {lastEnd}"
    },
    "mode": {
      "optional": {
        "label": "Optionnel",
        "description": "Le menu est proposé mais le client peut l'ignorer."
      },
      "recommended": {
        "label": "Recommandé",
        "description": "Le menu est mis en avant et conseillé au client."
      },
      "mandatory": {
        "label": "Obligatoire",
        "description": "La réservation impose le choix de ce menu."
      }
    },
    "form": {
      "name": "Nom du menu",
      "description": "Description",
      "price-per-person": "Prix par couvert",
      "image-label": "Image du menu",
      "image-placeholder": "Glissez une image ou cliquez pour parcourir (JPG, PNG, max 5 Mo)",
      "mode": "Mode d'affichage",
      "is-active": "Menu actif",
      "time-ranges-label": "Plages horaires",
      "time-ranges-empty": "Aucune plage horaire configurée. Ajoutez-en une pour activer ce menu sur une période.",
      "add-time-range": "Ajouter une plage",
      "translations-label": "Traductions",
      "translation-name": "Nom traduit",
      "translation-description": "Description traduite",
      "create-button": "Créer le menu",
      "save-button": "Enregistrer",
      "section": {
        "info": "Informations",
        "mode": "Mode d'affichage",
        "time-ranges": "Calendrier et services",
        "translations": "Traductions"
      },
      "time-range": {
        "start": "Début",
        "end": "Fin",
        "date": "Date",
        "shift": "Service",
        "pick-date": "Choisir une date",
        "shifts": "Services",
        "pick-shift": "Choisir un service",
        "no-shifts": "Aucun service configuré",
        "time-label": "{start} à {end}",
        "remove": "Supprimer la plage"
      }
    },
    "filters": {
      "advanced-title": "Filtres",
      "mode": "Mode",
      "status": "Statut",
      "status-active": "Actif",
      "status-inactive": "Inactif",
      "reset": "Réinitialiser",
      "search-placeholder": "Rechercher un menu événementiel..."
    },
    "toggle": {
      "activate": "Activer le menu",
      "deactivate": "Désactiver le menu"
    },
    "delete-dialog": {
      "title": "Supprimer ce menu événementiel ?",
      "description": "Le menu « {name} » sera supprimé définitivement.",
      "confirm": "Supprimer"
    },
    "reservation-card": {
      "title": "Menu événementiel",
      "name-label": "Nom du menu",
      "description-label": "Description",
      "price-per-person-label": "Prix par couvert",
      "covers-label": "Nombre de couverts",
      "total-label": "Total estimé",
      "view-link": "Voir le menu"
    },
    "validation": {
      "name-required": "Le nom est obligatoire",
      "name-too-long": "Le nom est trop long",
      "description-too-long": "La description est trop longue",
      "price-required": "Le prix est obligatoire",
      "price-must-be-integer": "Le prix doit être un nombre entier de centimes",
      "price-must-be-positive": "Le prix doit être positif",
      "time-range-start-required": "La date de début est obligatoire",
      "time-range-end-required": "La date de fin est obligatoire",
      "time-range-invalid-order": "La date de fin doit être après la date de début",
      "translation-locale-required": "La langue est obligatoire",
      "translation-name-required": "Le nom traduit est obligatoire",
      "schedule-invalid": "Le calendrier est invalide. Vérifiez les dates et la récurrence.",
      "schedule-service-required": "Choisissez au moins un service et un jour.",
      "schedule-date-order": "La date de fin doit être égale ou postérieure au début.",
      "schedule-end-required": "La date de fin est obligatoire pour une expérience ponctuelle.",
      "schedule-weekday-service": "Le jour mensuel doit être couvert par un service sélectionné.",
      "schedule-required": "Définissez un calendrier pour activer cette expérience."
    },
    "schedule": {
      "frequency": "Fréquence",
      "once": "Ponctuelle",
      "weekly": "Chaque semaine",
      "monthly": "Chaque mois",
      "start-date": "Date de début",
      "end-date": "Date de fin",
      "end-date-optional": "Date de fin (facultative)",
      "services": "Services concernés",
      "services-help": "Choisissez parmi vos services existants. Les horaires sont conservés pour cette expérience ; les fermetures et les disponibilités de réservation restent appliquées.",
      "no-services": "Configurez vos services de réservation avant de programmer cette expérience.",
      "days": "Jours du service",
      "monthly-rule": "Règle mensuelle",
      "day-of-month": "Un jour du mois",
      "weekday-of-month": "Un jour de semaine dans le mois",
      "day-number": "Jour du mois (1 à 31)",
      "week": "Rang dans le mois",
      "weekday": "Jour de semaine",
      "first": "Premier",
      "second": "Deuxième",
      "third": "Troisième",
      "fourth": "Quatrième",
      "fifth": "Cinquième",
      "last": "Dernier",
      "skip-missing": "Les dates inexistantes sont sautées. Seuls les jours couverts par les services sélectionnés sont proposés.",
      "weekly-summary": "Chaque semaine : {days}",
      "monthly-day-summary": "Le {day} de chaque mois",
      "monthly-weekday-summary": "{week} {day} de chaque mois",
      "period": "{start} → {end}",
      "from": "À partir du {start}",
      "legacy-help": "Ces plages historiques sont conservées à l’identique. Vous pouvez les remplacer explicitement par un calendrier sur vos services.",
      "replace-legacy": "Remplacer les plages par un calendrier",
      "restore-legacy": "Conserver les plages historiques"
    }
  },
  "flyer": {
    "headline-line-1": "Tente ta chance",
    "headline-line-2": "Scanne pour jouer !",
    "subhead": "Recevez votre gain par email Valable 14 jours sur votre prochaine visite, en plus des conditions du restaurateur",
    "step-scan": "Scan",
    "step-play": "Jouer",
    "step-gift": "Découvrez\nvotre cadeau",
    "lose": "Perdu",
    "qr-alt": "QR code",
    "load-error": "Erreur lors du chargement du flyer",
    "preview-title": "Aperçu du flyer",
    "print-button": "Imprimer",
    "download-button": "Télécharger",
    "download-loading": "Téléchargement...",
    "download-error": "Impossible de télécharger le flyer",
    "download-default-name": "Campagne jeu",
    "banner-url-label": "Image bannière",
    "banner-url-placeholder": "https://...",
    "banner-upload-placeholder": "Glissez une image ou cliquez pour téléverser",
    "banner-use-campaign": "Image de la campagne",
    "banner-use-shop-cover": "Photo de couverture du shop",
    "edit-shop-banner": "Modifier la bannière du shop",
    "central-section-title": "Lot principal",
    "central-reward-label": "Lot central",
    "secondary-section-title": "Lots secondaires",
    "top-reward-label": "Lot en haut",
    "bottom-reward-label": "Lot en bas",
    "auto-option": "Auto",
    "wheel-section-title": "Roue",
    "flyer-section-title": "Flyer",
    "bg-color-label": "Couleur de fond",
    "headline-text-label": "Texte du titre",
    "headline-color-label": "Couleur du titre",
    "border-color-label": "Couleur du bord de la roue",
    "border-dots-color-label": "Couleur des points décoratifs",
    "middle-bg-color-label": "Segment principal",
    "middle-text-color-label": "Texte du principal",
    "secondary-text-color-label": "Texte des secondaires",
    "print-hint": "Imprimez ou téléchargez un PDF A4 avec 4 flyers. Le fichier utilise un nom horodaté.",
    "edit-banner-title": "Bannière",
    "edit-headline-title": "Titre",
    "edit-bg-title": "Fond du flyer",
    "edit-wheel-title": "Roue",
    "edit-lot-central-title": "Lot central",
    "edit-lot-top-title": "Lot haut",
    "edit-lot-bottom-title": "Lot bas",
    "icons-section-title": "Icônes des lots",
    "icon-picker-placeholder": "Choisir une icône",
    "icon-picker-title": "Choisir une icône ou une image",
    "icon-picker-icons-tab": "Icônes",
    "icon-picker-remove": "Aucune icône",
    "icon-picker-upload": "Importer une image",
    "icon-picker-search": "Rechercher...",
    "icon-picker-no-results": "Aucune icone trouvee",
    "step-banner": "Bannière",
    "step-customization": "Personnalisation",
    "step-print": "Imprimer",
    "step-next": "Suivant",
    "step-previous": "Précédent",
    "print-format-dialog": {
      "title": "Choisissez le format",
      "a6": "4 flyers par page",
      "a4": "Pleine page"
    }
  },
  "flyers": {
    "edit-panel-empty-title": "Édition",
    "edit-panel-placeholder": "Cliquez sur une zone du flyer pour l'éditer.",
    "page-title": "Flyers",
    "nav-flyer": "Flyers",
    "appearance-description": "Personnalisez et imprimez le flyer lié à ce QR code.",
    "customize-flyer": "Personnaliser le flyer",
    "switcher-label": "Flyer à modifier",
    "switcher-placeholder": "Choisissez un flyer",
    "switcher-search": "Rechercher un flyer...",
    "switcher-empty": "Aucun flyer trouvé",
    "option-shop": "Fiche établissement",
    "option-reservation": "Réservation",
    "option-take-away": "Commande à emporter",
    "option-delivery": "Livraison",
    "option-dine-in": "Menu digital",
    "option-loyalty": "Fidélité",
    "option-review": "Avis",
    "save": "Enregistrer",
    "saving": "Enregistrement...",
    "step-previous": "Précédent",
    "step-next": "Suivant",
    "load-error": "Impossible de charger les flyers",
    "empty": "Aucun flyer disponible pour cette boutique",
    "variant-label": "Design",
    "variant-classic": "Classique",
    "variant-poster": "Affiche"
  },
  "settings-flyers": {
    "page-title": "Flyers",
    "grid-title": "{count, plural, =1 {# flyer} other {# flyers}}",
    "download-pdf": "Télécharger PDF",
    "download-loading": "Téléchargement...",
    "download-success": "PDF généré",
    "download-error": "Impossible de générer le PDF",
    "download-multiple": "Télécharger plusieurs",
    "dialog-title": "Sélectionner les flyers à télécharger",
    "selected-count": "{count, plural, =0 {Aucun sélectionné} =1 {# sélectionné} other {# sélectionnés}}",
    "download-zip-count": "{count, plural, =0 {Télécharger} =1 {Télécharger (# flyer)} other {Télécharger (# flyers)}}",
    "zip-error": "Impossible de générer le fichier ZIP",
    "game-subtitle": "Campagne jeu",
    "game-individual-only": "Téléchargement individuel uniquement",
    "preview-aria": "Aperçu du flyer {label}"
  },
  "phone-input": {
    "search-placeholder": "Rechercher un pays...",
    "no-country-found": "Aucun pays trouvé"
  },
  "order-alerts": {
    "title": "{count, plural, =1 {# commande en cours} other {# commandes en cours}}",
    "delivery-count": "{count, plural, =1 {# livraison} other {# livraisons}}",
    "click-collect-count": "{count, plural, =1 {# Click & Collect} other {# Click & Collect}}",
    "new-orders": "{count, plural, =1 {# nouvelle commande} other {# nouvelles commandes}}",
    "sound-on": "Activer le son des alertes",
    "sound-off": "Couper le son des alertes",
    "toggle": "Son des alertes",
    "view": "Voir les commandes"
  },
  "loyalty-flyer": {
    "page-title": "Flyer fidélité",
    "nav-flyer": "Flyer fidélité",
    "preview-title": "Aperçu du flyer",
    "headline-default": "Chaque visite vous\nrapproche d'un cadeau",
    "badge-stamps": "{count} tampons = {reward}",
    "badge-points": "Cumulez des points à chaque visite",
    "step-scan": "Scannez",
    "step-validate": "Validez\nvotre visite",
    "step-gift": "Découvrez\nvotre cadeau",
    "qr-alt": "QR code",
    "load-error": "Erreur lors du chargement du flyer fidélité",
    "print-button": "Imprimer",
    "download-button": "Télécharger",
    "download-loading": "Téléchargement...",
    "download-error": "Impossible de télécharger le flyer fidélité",
    "print-hint": "Imprimez ou téléchargez un PDF A4 avec 4 flyers. Le fichier utilise un nom horodaté.",
    "edit-banner-title": "Bannière",
    "edit-headline-title": "Titre",
    "edit-bg-title": "Fond du flyer",
    "edit-badge-title": "Badge",
    "edit-footer-title": "Pied de page",
    "headline-text-label": "Texte du titre",
    "badge-text-label": "Texte du badge",
    "banner-url-label": "Image bannière",
    "banner-upload-placeholder": "Glissez une image ou cliquez pour téléverser",
    "banner-use-shop-cover": "Photo de couverture du shop",
    "edit-shop-banner": "Modifier la bannière du shop",
    "flyer-section-title": "Flyer",
    "bg-color-label": "Fond central",
    "badge-section-title": "Badge récompense",
    "badge-bg-color-label": "Fond du badge",
    "badge-text-color-label": "Texte du badge",
    "footer-section-title": "Pied de page",
    "footer-bg-color-label": "Fond du pied de page",
    "footer-text-color-label": "Texte et icônes du pied",
    "step-banner": "Bannière",
    "step-colors": "Couleurs",
    "step-print": "Imprimer",
    "step-next": "Suivant",
    "step-previous": "Précédent",
    "carousel-title-default": "Cumulez des points, débloquez vos <em>récompenses.</em>",
    "carousel-title-default-plain": "Cumulez des points, débloquez vos récompenses.",
    "carousel-lead-offer": "Vos {count} premiers {count, plural, one {point} other {points}} offerts 👇",
    "carousel-lead-default": "Soyez récompensé à chaque visite.",
    "carousel-sub": "Scannez, ajoutez votre carte au téléphone, et soyez récompensé à chaque visite.",
    "edit-scan-title": "Bloc d'appel à l'action",
    "scan-lead-label": "Ligne principale",
    "scan-sub-label": "Ligne secondaire",
    "scan-sub-color-label": "Couleur du sous-texte",
    "text-color-label": "Couleur du texte",
    "edit-logo-title": "Logo",
    "logo-size-label": "Taille du logo",
    "edit-carousel-title": "Photos du carrousel",
    "carousel-empty-hint": "Aucune photo sélectionnée : le carrousel affiche automatiquement votre galerie et votre photo de couverture.",
    "carousel-no-images-hint": "Ajoutez des photos à la galerie de votre boutique pour les afficher ici.",
    "carousel-thumb-alt": "Photo de la boutique",
    "carousel-thumb-selected": "Photo {order} sélectionnée. Cliquez pour la retirer du carrousel.",
    "carousel-thumb-unselected": "Ajouter cette photo au carrousel."
  },
  "shop-flyer": {
    "preview-title": "Aperçu du flyer",
    "headline-text-label": "Texte du titre",
    "badge-text-label": "Texte du badge",
    "url-label": "Lien du QR code",
    "url-placeholder": "https://...",
    "use-default-url": "Lien par défaut",
    "banner-url-label": "Image bannière",
    "banner-upload-placeholder": "Glissez une image ou cliquez pour téléverser",
    "banner-use-shop-cover": "Photo de couverture du shop",
    "flyer-section-title": "Flyer",
    "bg-color-label": "Fond central",
    "headline-color-label": "Couleur du titre",
    "badge-section-title": "Badge",
    "badge-bg-color-label": "Fond du badge",
    "badge-text-color-label": "Texte du badge",
    "footer-section-title": "Pied de page",
    "footer-bg-color-label": "Fond du pied de page",
    "footer-text-color-label": "Texte et icônes du pied",
    "load-error": "Erreur lors du chargement du flyer",
    "print-button": "Imprimer",
    "download-button": "Télécharger",
    "download-loading": "Téléchargement...",
    "download-error": "Impossible de télécharger le flyer",
    "print-hint": "Imprimez ou téléchargez un PDF A4 avec 4 flyers. Le fichier utilise un nom horodaté.",
    "step-content": "Contenu",
    "step-colors": "Couleurs",
    "step-print": "Imprimer",
    "steps": {
      "scan": "Scannez",
      "open-shop": "Ouvrez\nla fiche",
      "discover": "Découvrez\nnos services",
      "review": "Donnez\nvotre avis",
      "thanks": "Merci\npour votre retour",
      "reserve": "Réservez\nvotre table",
      "confirm": "Recevez\nla confirmation",
      "order": "Commandez\nen ligne",
      "pick-up": "Récupérez\nsur place",
      "deliver": "Recevez\nchez vous",
      "read-menu": "Consultez\nle menu",
      "enjoy": "Profitez\ndu moment"
    },
    "defaults": {
      "shop": {
        "headline": "Retrouvez-nous\nen un scan",
        "badge": "Infos, horaires et services en accès direct"
      },
      "review": {
        "headline": "Votre avis\ncompte pour nous",
        "badge": "Partagez votre expérience en 30 secondes"
      },
      "reservation": {
        "headline": "Réservez votre table\nen quelques secondes",
        "badge": "Scannez, choisissez votre horaire, confirmez"
      },
      "take-away": {
        "headline": "Commandez à emporter\nsans attendre",
        "badge": "Votre commande prête à l'heure choisie"
      },
      "delivery": {
        "headline": "Faites-vous livrer\nsimplement",
        "badge": "Scannez le QR code et commandez en ligne"
      },
      "dine-in": {
        "headline": "Découvrez notre menu\nen un scan",
        "badge": "La carte digitale toujours à jour"
      }
    },
    "edit-banner-title": "Bannière",
    "edit-headline-title": "Titre",
    "edit-bg-title": "Fond du flyer",
    "edit-badge-title": "Badge",
    "edit-footer-title": "Pied de page"
  },
  "scan": {
    "scanner": {
      "idle": "Caméra prête. Scannez le QR d'un client.",
      "start-camera": "Activer la caméra",
      "scanning": "Positionnez le QR code dans le cadre",
      "guidance": "Gardez le QR code bien cadré, augmentez la luminosité et stabilisez le téléphone.",
      "flip-camera": "Retourner la caméra",
      "camera-permission": "Autorisation de la caméra...",
      "camera-denied": "Accès à la caméra refusé",
      "camera-not-found": "Aucune caméra détectée",
      "camera-in-use": "La caméra est utilisée par une autre application",
      "camera-error": "Erreur lors de l'accès à la caméra",
      "camera-unavailable": "La caméra n'est pas disponible dans ce navigateur ou cette application",
      "camera-help": "Autorisez la caméra dans les réglages du navigateur ou de l'application, puis réessayez.",
      "native-scan-hint": "Touchez « Activer la caméra » pour ouvrir le scanner et présenter le QR de fidélité.",
      "native-scanner-instructions": "Placez le QR code face à la caméra arrière.",
      "native-scanner-ready": "Le scanner iPhone s'ouvrira avec la caméra arrière.",
      "scan-again": "Scanner à nouveau",
      "scanner-region": "Zone de scan du QR code",
      "manual-input": "Saisie manuelle",
      "manual-placeholder": "12345678, email@exemple.com ou 06 12 34 56 78",
      "use-camera": "Utiliser la caméra",
      "resolve": "Rechercher",
      "resolve-error": "Impossible de retrouver le client",
      "locked": "Client en cours — terminez pour scanner le suivant.",
      "scan-next": "Scanner le suivant"
    },
    "modes": {
      "single": "Un par un",
      "continuous": "En continu"
    },
    "info-placeholder": "Scannez un client pour afficher ses informations.",
    "credit-dialog": {
      "title": "Créditer ce client ?",
      "description": "Confirmez l'ajout au compte fidélité du client."
    },
    "redeem-dialog": {
      "title": "Remettre la récompense ?",
      "description": "Confirmez la remise de « {reward} » au client.",
      "not-enough": "Solde insuffisant pour cette récompense"
    },
    "loyalty": {
      "points": "Points",
      "stamps": "Tampons",
      "tier": "Palier",
      "reward": "Récompense",
      "next-reward": "Prochaine récompense",
      "points-cost": "{points} pts",
      "status": "Statut",
      "card-full": "Carte complète",
      "no-card": "Ce client n'a pas de carte de fidélité."
    },
    "reservation": {
      "today": "Réservation du jour",
      "pax": "{count, plural, one {# pers.} other {# pers.}}",
      "mark-honored": "Marquer la réservation honorée",
      "scanned-title": "Réservation scannée",
      "honor": "Valider la réservation",
      "date": "Date",
      "party-size": "Nombre de personnes",
      "reference": "Référence"
    },
    "reward": {
      "scanned-title": "Récompense scannée",
      "validate": "Valider la récompense",
      "code": "Code",
      "expires-at": "Expire le",
      "handed-over": "Remis"
    },
    "history": {
      "title": "Activité récente",
      "view-profile": "Voir le profil complet",
      "empty": "Aucune activité récente",
      "error": "Impossible de charger l'activité",
      "day-title": "Historique du jour",
      "day-refresh": "Actualiser",
      "day-empty": "Aucun scan aujourd'hui",
      "day-error": "Impossible de charger les scans du jour",
      "day-unknown-name": "Client inconnu"
    },
    "dialog": {
      "title": "Accueil du client",
      "description": "Vérifiez le client et confirmez son passage.",
      "validate": "Valider",
      "unknown-name": "Client inconnu",
      "not-found": "Client inconnu — aucune carte de fidélité ni contact correspondant.",
      "customer-section": "Client",
      "no-linked-customer": "Aucun client lié à ce scan.",
      "detail-error": "Impossible de charger ce passage",
      "guest-scan": "Réservation ou récompense invité — aucun profil de fidélité à valider."
    },
    "actions": {
      "add-stamp": "+1 tampon",
      "add-visit": "+1 visite",
      "redeem": "Récompenser",
      "open": "Ouvrir"
    },
    "primary": {
      "loyalty": "Fidélité",
      "reservation": "Réservation",
      "reward": "Récompense",
      "order": "Commande",
      "reward-error": "Impossible de charger les récompenses"
    },
    "order": {
      "item-count": "{count, plural, one {# article} other {# articles}}"
    },
    "zones": {
      "reservation": {
        "title": "Réservation",
        "empty": "Aucune réservation",
        "error": "Impossible de charger les réservations"
      },
      "games": {
        "title": "Jeux",
        "empty": "Aucune récompense en attente",
        "error": "Impossible de charger les jeux"
      },
      "loyalty": {
        "title": "Fidélité",
        "empty": "Pas de carte"
      }
    },
    "status": {
      "scanned": "Scanné",
      "validated": "Validé"
    }
  },
  "loyalty-checkin-kiosk": {
    "mode-button": "Mode check-in tablette",
    "badge": "Mode tablette",
    "pin-description": "Cette tablette est verrouillée sur le check-in client. Utilisez le code à 6 chiffres configuré dans les paramètres fidélité.",
    "pin-submit": "Ouvrir le check-in",
    "invalid-pin": "Code PIN invalide. Réessayez.",
    "cooldown-message": "Merci pour votre visite ! Votre dernier passage est déjà comptabilisé. Vous pourrez cumuler à nouveau lors d’une prochaine visite.",
    "cooldown-message-with-delay": "Merci pour votre visite ! Votre dernier passage est déjà comptabilisé. Encore {seconds, plural, one {# seconde} other {# secondes}} avant de pouvoir cumuler à nouveau.",
    "pin-locked-message": "Trop de codes PIN incorrects. Attendez avant de réessayer.",
    "pin-locked-message-with-delay": "Trop de codes PIN incorrects. Réessayez dans {seconds} secondes.",
    "rate-limit-message": "Trop de scans rapprochés. Retirez le QR code puis réessayez dans une minute.",
    "rate-limit-message-with-delay": "Trop de scans rapprochés. Retirez le QR code puis réessayez dans {seconds} secondes.",
    "hub-title": "Check-in client",
    "hub-description": "Scannez le QR code fidélité ou saisissez un email ou un numéro de téléphone.",
    "scan": "Scanner un QR code",
    "scan-description": "Utilisez la caméra de la tablette pour valider un passage fidélité.",
    "manual": "Saisie manuelle",
    "manual-description": "Recherchez par email ou téléphone quand le client ne peut pas scanner.",
    "enroll": "Inscrire un client",
    "checking-in": "Validation du check-in...",
    "checkin-error": "Impossible de valider ce check-in.",
    "customer-not-found": "Aucun client fidélité trouvé pour ce contact.",
    "success-title": "Passage enregistré",
    "points-earned": "points gagnés",
    "stamp-earned": "tampon gagné",
    "total-points": "{points, plural, one {# point au total} other {# points au total}}",
    "total-visits": "passages au total",
    "stamps-progress": "{collected}/{required} tampons collectés",
    "tier": "Palier : {tier}",
    "next-customer": "Client suivant",
    "exit": "Quitter",
    "exit-title": "Quitter le mode tablette",
    "exit-description": "Entrez le code PIN check-in pour revenir au back-office.",
    "exit-pin-title": "Confirmer le PIN",
    "exit-pin-description": "Cela empêche les clients de sortir de l'interface publique.",
    "exit-confirm": "Quitter le mode",
    "no-shop-title": "Aucune boutique sélectionnée",
    "no-shop-description": "Sélectionnez une boutique dans le back-office avant d'activer le check-in tablette.",
    "back-to-dashboard": "Retour au tableau de bord",
    "load-error-title": "Connexion impossible",
    "load-error-description": "Impossible de charger le programme de fidélité. Vérifiez la connexion et réessayez.",
    "retry": "Réessayer",
    "scan-mode-label": "Mode de scan",
    "backspace": "Effacer",
    "greeting-hi": "Heureux de vous revoir",
    "success-merci-name": "Merci {name} !",
    "success-merci-generic": "Merci pour votre passage !",
    "success-stamp-word": "tampon",
    "success-pts-credited": "pts crédités",
    "success-your-card": "Votre carte · {collected} / {required}",
    "success-next-reward": "Prochaine récompense",
    "success-unlocked-section": "Débloqué",
    "success-unlocked-label": "À utiliser sur place",
    "success-tier-label": "Palier",
    "success-visits-label": "Passages",
    "success-remaining": "Plus que {count} {unit}",
    "success-remaining-mini": "Plus que {count} {unit}",
    "reset-timeout-hint": "Retour auto dans 60 s",
    "enroll-qr-reward-intro": "Un bonus vous attend !",
    "enroll-qr-reward-points": "{count, plural, one {# point} other {# points}} en plus",
    "enroll-qr-reward-stamps": "{count, plural, one {# tampon} other {# tampons}} en plus",
    "enroll-qr-reward-hint": "Scannez et complétez votre profil pour récupérer votre bonus.",
    "enroll-qr-image-alt": "QR code pour terminer votre inscription et ajouter votre carte de fidélité à votre téléphone",
    "enroll-qr-hint": "Scannez pour ajouter votre carte à votre téléphone",
    "back-to-hub": "Retour",
    "lock-button": "Verrouiller",
    "back": "Retour",
    "scan-mode": "Scanner QR",
    "text-mode": "Saisie manuelle",
    "scan-unrecognized": "Carte non reconnue. Présentez la carte de fidélité du client.",
    "scan-card-not-found": "Cette carte n'est pas inscrite dans cet établissement.",
    "checkin-mode-question": "Comment scanner votre fidélité ?",
    "scan-mode-hint": "Présentez votre QR code",
    "text-mode-hint": "Avec votre email ou téléphone",
    "checkin-mode-back": "Choix",
    "tease-title": "Cumulez vos avantages",
    "tease-bonus-stamp": "+1 tampon offert",
    "tease-bonus-points": "+{points} points offerts",
    "tease-cta": "Réclamer",
    "tease-hint": "Un simple toucher pour valider votre passage",
    "celebration-title-stamp": "+1 tampon",
    "celebration-title-points": "+{points} points",
    "celebration-subtitle": "Ça arrive dans votre carte",
    "celebration-continue": "Continuer",
    "checkin-title": "Scanner votre fidélité",
    "checkin-subtitle": "Entrez votre numéro de téléphone",
    "phone-placeholder": "06 12 34 56 78",
    "country-label": "Indicatif du pays",
    "country-sheet-title": "Choisissez votre pays",
    "country-search-placeholder": "Rechercher un pays",
    "country-search-empty": "Aucun pays ne correspond à « {query} »",
    "submit": "Valider",
    "submitting": "Vérification en cours...",
    "identifier-required": "Numéro de téléphone requis",
    "phone-invalid": "Numéro de téléphone invalide",
    "success-points-earned": "+{points, plural, one {# point} other {# points}}",
    "success-stamp-earned": "+1 tampon",
    "success-total-visits": "{visits, plural, one {# visite} other {# visites}}",
    "stamp-grid-label": "Carte de fidélité à tampons",
    "stamp-counter": "{collected} / {required} tampons",
    "stamp-progress-full": "Carte pleine — réclamez votre récompense",
    "stamp-progress-remaining": "{count, plural, one {Plus qu'un tampon avant votre récompense} other {Plus que # tampons avant votre récompense}}",
    "reward-unit-points": "pts",
    "reward-unit-stamps": "tampons",
    "reward-unlocked": "Débloqué",
    "reward-locked": "Verrouillé",
    "pin-required-title": "Code check-in non configuré",
    "pin-required-description": "Le mode borne exige un code à 6 chiffres pour sécuriser l'entrée et la sortie de la borne. Définissez-le d'abord dans les réglages fidélité.",
    "pin-required-cta": "Définir le code",
    "pin-missing-title": "Code check-in non configuré",
    "pin-missing-description": "Ce mode borne nécessite un code à 6 chiffres pour verrouiller l'entrée et la sortie. Définissez-le dans les réglages fidélité, ou quittez le mode borne.",
    "pin-missing-settings-cta": "Définir le code",
    "pin-missing-exit": "Quitter le mode",
    "entry-title": "Passer en mode tablette",
    "entry-description": "Entrez le code PIN check-in pour activer le mode borne.",
    "entry-pin-title": "Confirmer le PIN",
    "entry-pin-description": "Seul un membre connaissant le code peut activer le mode borne sur cette tablette.",
    "entry-confirm": "Activer le mode",
    "reward-remaining": "Plus que {points, plural, one {# point} other {# points}} !",
    "greeting-returning": "Heureux de vous revoir, {name} !",
    "greeting-name": "👋 {name}",
    "greeting-subtitle": "heureux de vous revoir",
    "unknown-identifier": {
      "title": "Rejoignez la fidélité",
      "description": "Créez votre compte en 30 secondes depuis votre téléphone.",
      "badge": "Nouveau",
      "hint": "Scannez ce QR avec votre appareil photo",
      "back": "Retour"
    },
    "enroll-success-greeting-name": "Bienvenue {name} !",
    "enroll-success-greeting-generic": "Bienvenue !",
    "enroll-success-badge": "Carte créée",
    "enroll-wallet-sms-title": "Votre carte arrive par SMS",
    "enroll-wallet-sms-description": "Un SMS part sur votre téléphone avec le lien pour ajouter votre carte à Apple ou Google Wallet.",
    "enroll-wallet-qr-title": "Votre carte sur votre téléphone",
    "enroll-wallet-qr-description": "Ouvrez l’appareil photo de votre téléphone et scannez le QR code.",
    "enroll-wallet-dismiss": "C'est noté"
  },
  "loyalty-settings": {
    "starter-gift": {
      "title": "Cadeau de démarrage",
      "description": "Récompensez automatiquement chaque nouveau client qui rejoint votre programme",
      "stamps-label": "Tampons de bienvenue",
      "stamps-helper": "Suggéré : 3 tampons",
      "points-label": "Points de bienvenue",
      "points-helper": "Suggéré : 50 points"
    }
  },
  "option-groups": {
    "tab": "Options",
    "create": "Nouveau groupe",
    "save": "Enregistrer",
    "delete": "Supprimer",
    "create-title": "Nouveau groupe d'options",
    "edit-title": "Modifier le groupe d'options",
    "sheet-description": "Un groupe d'options est réutilisable : créez-le une fois, rattachez-le à autant de plats que vous voulez.",
    "error": "Impossible de charger les groupes d'options",
    "empty": "Aucun groupe d'options. Créez-en un pour proposer des sauces, des suppléments ou des cuissons.",
    "hint": "Glissez-déposez pour changer l'ordre d'affichage des groupes. Cliquez sur un groupe pour le modifier.",
    "drag-group": "Déplacer le groupe",
    "badge": {
      "radio": "Choix unique",
      "checkbox": "Choix multiple",
      "required": "Obligatoire",
      "optional": "Facultatif",
      "options-count": "{count, plural, =0 {aucune option} one {# option} other {# options}}",
      "free-count": "{count, plural, one {# offerte} other {# offertes}}"
    },
    "selection-type": {
      "single": "Un seul choix",
      "multiple": "Plusieurs choix"
    },
    "form": {
      "name": "Nom du groupe",
      "section": {
        "rules": "Règles de choix",
        "options": "Options"
      },
      "selection-type": "Le client peut choisir",
      "selection-type-single-hint": "Le client verra des boutons radio et ne pourra sélectionner qu'une seule option.",
      "selection-type-multiple-hint": "Le client verra des cases à cocher et pourra sélectionner plusieurs options.",
      "required": "Choix obligatoire",
      "required-hint": "Si activé, le client devra faire au moins un choix dans ce groupe avant de commander.",
      "max-selections": "Nombre maximum de choix",
      "free-selection-count": "Nombre de choix inclus",
      "free-selection-count-hint": "Les premiers choix sont inclus dans le prix du plat, chaque choix supplémentaire est facturé.",
      "option-name": "Nom de l'option",
      "add-option": "Ajouter une option",
      "remove-option": "Supprimer l'option",
      "option-price-delta": "Supplément",
      "option-price-delta-hint": "Laissez vide si cette option est gratuite.",
      "option-max-quantity": "Quantité maximum",
      "option-max-quantity-hint": "Combien de fois le client peut prendre cette option (ex : +2 fromages).",
      "option-default": "Sélectionnée par défaut",
      "option-alcoholic": "Alcool (18+)"
    },
    "delete-dialog": {
      "title": "Supprimer « {name} » ?",
      "description": "Ce groupe sera retiré de tous les plats auxquels il est rattaché. Cette action est irréversible."
    },
    "attach": {
      "hint": "Les groupes ci-dessous s'afficheront pour ce plat, dans cet ordre.",
      "no-groups": "Aucun groupe d'options n'existe encore. Créez-en un depuis l'onglet Groupes d'options.",
      "add-label": "Ajouter un groupe à ce plat",
      "add-placeholder": "Choisir un groupe…",
      "drag-group": "Déplacer le groupe",
      "remove-group": "Retirer le groupe de ce plat"
    }
  },
  "menu-selections": {
    "hint": "Glissez-déposez pour changer l'ordre des sélections. Cliquez sur une sélection pour la modifier.",
    "too-many-hint": "Au-delà de cinq sélections, vos clients doivent faire défiler la barre pour voir les suivantes.",
    "error": "Impossible de charger les sélections",
    "create": "Nouvelle sélection",
    "create-title": "Nouvelle sélection",
    "edit-title": "Modifier la sélection",
    "sheet-description": "Une sélection est une liste de produits que vos clients voient en tête de votre carte.",
    "save": "Enregistrer",
    "delete": "Supprimer",
    "drag-selection": "Déplacer la sélection {name}",
    "move-selection-up": "Monter la sélection {name}",
    "move-selection-down": "Descendre la sélection {name}",
    "badge": {
      "empty": "Aucun produit — invisible pour vos clients",
      "items-count": "{count, plural, one {# produit} other {# produits}}"
    },
    "empty": {
      "title": "Mettez vos meilleurs plats en avant",
      "description": "Une sélection est une liste de produits que vos clients voient en tête de votre carte.",
      "examples": "« Les incontournables », « Menu du midi », « Nos desserts maison »…",
      "cta": "Créer ma première sélection"
    },
    "form": {
      "name": "Nom affiché aux clients",
      "name-placeholder": "⭐ Incontournables",
      "name-hint": "Court : il s'affiche dans une pastille sur téléphone.",
      "name-long-hint": "Ce nom risque d'être coupé sur le téléphone de vos clients."
    },
    "items": {
      "title": "Produits",
      "hint": "Glissez pour ordonner. Vos clients les verront dans cet ordre.",
      "empty": "Aucun produit pour l'instant : cette sélection reste invisible pour vos clients.",
      "add": "Ajouter un produit de la carte",
      "search-placeholder": "Rechercher un produit…",
      "none-found": "Aucun produit trouvé",
      "remove": "Retirer {name} de la sélection",
      "drag": "Déplacer {name}",
      "move-up": "Monter {name}",
      "move-down": "Descendre {name}",
      "orphan": "Produit sans catégorie — invisible pour vos clients",
      "orphan-remove": "Retirer ce produit de la sélection"
    },
    "delete-dialog": {
      "title": "Supprimer « {name} » ?",
      "description": "La sélection disparaît de votre carte. Vos produits, eux, ne sont pas touchés."
    }
  },
  "automations": {
    "settings": {
      "title": "Pression marketing",
      "description": "Limitez les messages marketing envoyés à une même personne par vos automatisations.",
      "cap": "Nombre maximal de messages",
      "cap-description": "0 bloque tout message marketing envoyé par une automatisation.",
      "window-days": "Période de calcul",
      "window-description": "Nombre de jours sur lesquels compter les messages déjà envoyés.",
      "error": "Impossible de charger la limite des messages marketing."
    },
    "new": "Nouvelle automatisation",
    "error": "Échec du chargement des automatisations",
    "load-more": "Charger plus",
    "status": {
      "draft": "Brouillon",
      "active": "Active",
      "paused": "En pause",
      "archived": "Archivée"
    },
    "trigger": {
      "customer-created": "Quand un client est créé",
      "tag-added": "Quand un tag est ajouté",
      "tag-added-named": "Quand le tag « {tag} » est ajouté",
      "tag-removed": "Quand un tag est retiré",
      "tag-removed-named": "Quand le tag « {tag} » est retiré",
      "order-recorded": "Quand une commande est enregistrée",
      "reservation-completed": "Quand une réservation est honorée",
      "check-in-recorded": "Quand un client fait un check-in",
      "no-show-recorded": "Quand un client est absent",
      "review-recorded": "Quand un avis est laissé",
      "game-played": "Quand un jeu est joué"
    },
    "list": {
      "runs-count": "{count, plural, =0 {Aucune exécution} one {# exécution} other {# exécutions}}",
      "last-run": "Dernière exécution {time}",
      "never-run": "Jamais exécutée"
    },
    "gallery": {
      "title": "Partir d’un modèle",
      "subtitle": "Choisissez un modèle prêt à l’emploi ou partez de zéro.",
      "use-template": "Utiliser ce modèle",
      "from-scratch": "Partir de zéro"
    },
    "scratch": {
      "title": "Partir de zéro",
      "description": "Choisissez le déclencheur de votre automatisation. Il ne pourra plus être modifié ensuite.",
      "name-label": "Nom de l’automatisation",
      "name-placeholder": "Ex. Bienvenue nouveau client",
      "trigger-label": "Déclencheur",
      "trigger-placeholder": "Choisissez un déclencheur",
      "tag-label": "Tag concerné",
      "tag-placeholder": "Ex. vip",
      "submit": "Créer",
      "cancel": "Annuler"
    },
    "templates": {
      "welcome": {
        "name": "Bienvenue aux nouveaux clients",
        "description": "Accueillez chaque nouveau client par un message chaleureux : vous créez le lien dès le départ et donnez envie de revenir."
      },
      "second-visit": {
        "name": "Faire revenir après la première visite",
        "description": "Quelques jours après une commande, invitez le client à repasser. La deuxième visite est la plus dure à obtenir, ce message la déclenche."
      },
      "winback": {
        "name": "Reconquête des clients perdus",
        "description": "Relancez automatiquement les clients qui ne sont plus venus depuis un moment. Récupérer un ancien client coûte bien moins cher qu’en trouver un nouveau."
      },
      "loyalty-reward": {
        "name": "Récompense des clients fidèles",
        "description": "Offrez une attention à vos meilleurs clients dès qu’ils atteignent le statut fidèle. Ils reviennent plus souvent et dépensent davantage."
      },
      "vip-welcome": {
        "name": "Traitement VIP",
        "description": "Dès qu’un client VIP est identifié, prévenez l’équipe et envoyez-lui un message privilégié. Vos plus gros clients se sentent reconnus."
      },
      "review-request": {
        "name": "Récolter plus d’avis",
        "description": "Après la visite d’un client, demandez-lui gentiment son avis. Plus d’avis, c’est plus de visibilité et donc plus de nouveaux clients."
      },
      "no-show-recovery": {
        "name": "Rattraper un client absent",
        "description": "Un jour après un no-show, envoyez un mot bienveillant pour réserver à nouveau. Vous récupérez un client qui aurait pu ne jamais revenir."
      }
    },
    "builder-placeholder": {
      "title": "Éditeur d’automatisation",
      "description": "Le constructeur visuel arrive bientôt. Vous pourrez y assembler les étapes de cette automatisation."
    },
    "detail": {
      "back-link": "Retour aux automatisations"
    },
    "builder": {
      "trigger-label": "Déclencheur",
      "end": "Fin",
      "save": "Enregistrer",
      "read-only-active": "Cette automatisation est active. Mettez-la en pause pour la modifier.",
      "read-only-other": "Cette automatisation est en lecture seule.",
      "condition": {
        "title": "Condition",
        "yes": "Oui",
        "no": "Non",
        "field-label": "Type de condition",
        "tag-label": "Tag",
        "tag-placeholder": "ex. vip",
        "marketing-consent-hint": "Aucun réglage : la branche « Oui » s'applique aux clients ayant donné leur accord marketing.",
        "op-label": "Opérateur",
        "amount-label": "Montant (€)",
        "visits-label": "Nombre de visites",
        "days-label": "Nombre de jours",
        "field": {
          "has-tag": "Le client a le tag…",
          "not-has-tag": "Le client n'a pas le tag…",
          "marketing-consent": "Le client a donné son accord marketing",
          "total-spent": "Le client a dépensé…",
          "total-visits": "Nombre de visites…",
          "last-older": "Dernière visite il y a plus de… jours",
          "last-newer": "Dernière visite il y a moins de… jours"
        },
        "op": {
          "gte": "au moins",
          "lte": "au plus"
        }
      },
      "wait": {
        "title": "Attendre",
        "value-label": "Durée",
        "unit-label": "Unité",
        "unit": {
          "minutes": "minute(s)",
          "hours": "heure(s)",
          "days": "jour(s)"
        },
        "duration-minutes": "{value, plural, one {# minute} other {# minutes}}",
        "duration-hours": "{value, plural, one {# heure} other {# heures}}",
        "duration-days": "{value, plural, one {# jour} other {# jours}}"
      },
      "action": {
        "send-email": "Envoyer un e-mail",
        "send-sms": "Envoyer un SMS",
        "send-wallet-push": "Notification wallet",
        "add-tag": "Ajouter un tag",
        "remove-tag": "Retirer un tag",
        "notify-team": "Prévenir l'équipe",
        "unconfigured": "À configurer",
        "email-subject-label": "Objet de l'e-mail",
        "email-subject-placeholder": "ex. Bienvenue chez nous",
        "email-content-label": "Contenu de l'e-mail",
        "email-content-placeholder": "Bonjour, …",
        "sms-content-label": "Contenu du SMS",
        "sms-content-placeholder": "Votre message…",
        "sms-segments": "{segments, plural, =0 {0 segment · 0 crédit} one {# segment ≈ # crédit} other {# segments ≈ # crédits}}",
        "sms-legal-note": "La mention STOP est ajoutée automatiquement et les fenêtres légales d'envoi françaises sont respectées à l'envoi.",
        "wallet-title-label": "Titre",
        "wallet-title-placeholder": "ex. Offre du jour",
        "wallet-body-label": "Message",
        "wallet-body-placeholder": "Votre message…",
        "tag-label": "Tag",
        "tag-placeholder": "ex. vip",
        "tag-reserved": "Le préfixe « auto: » est réservé et ne peut pas être utilisé.",
        "notify-message-label": "Message à l'équipe",
        "notify-message-placeholder": "ex. Nouveau client VIP à contacter"
      },
      "insert": {
        "add": "Ajouter une étape",
        "title": "Que faire ensuite ?",
        "group-condition": "Si ?",
        "group-wait": "Attendre",
        "group-action": "Alors ?"
      },
      "panel": {
        "delete": "Supprimer",
        "delete-condition-title": "Supprimer cette condition ?",
        "delete-condition-description": "Les deux branches « Oui » et « Non » et toutes leurs étapes seront supprimées.",
        "condition-title": "Modifier la condition",
        "wait-title": "Modifier le délai",
        "action-title": "Modifier l'action"
      },
      "entry": {
        "title": "Conditions d'entrée",
        "empty": "Aucune",
        "edit": "Modifier",
        "condition-label": "Condition",
        "remove": "Supprimer",
        "add": "Ajouter une condition",
        "sheet-title": "Conditions d'entrée",
        "sheet-description": "Un client ne déclenche l'automatisation que s'il remplit toutes ces conditions."
      },
      "summary": {
        "connector-if": "si",
        "wait-minutes": "attendre {value, plural, one {# minute} other {# minutes}}",
        "wait-hours": "attendre {value, plural, one {# heure} other {# heures}}",
        "wait-days": "attendre {value, plural, one {# jour} other {# jours}}",
        "condition": {
          "has-tag": "le client a le tag « {tag} »",
          "not-has-tag": "le client n'a pas le tag « {tag} »",
          "marketing-consent": "le client a donné son accord marketing",
          "total-spent-gte": "le client a dépensé au moins {amount} €",
          "total-spent-lte": "le client a dépensé au plus {amount} €",
          "total-visits-gte": "le client a au moins {count} visites",
          "total-visits-lte": "le client a au plus {count} visites",
          "last-older": "dernière visite il y a plus de {days} jours",
          "last-newer": "dernière visite il y a moins de {days} jours"
        },
        "action": {
          "send-email": "envoyer un e-mail « {subject} »",
          "send-sms": "envoyer un SMS",
          "send-wallet-push": "envoyer une notification wallet « {title} »",
          "add-tag": "ajouter le tag « {tag} »",
          "remove-tag": "retirer le tag « {tag} »",
          "notify-team": "prévenir l'équipe"
        }
      },
      "variables": {
        "insert": "Insérer une variable",
        "first-name": "Prénom",
        "last-name": "Nom",
        "customer-name": "Nom du client",
        "shop-name": "Boutique",
        "shop-address": "Adresse",
        "shop-phone": "Téléphone",
        "shop-email": "Email boutique",
        "shop-url": "Lien boutique"
      }
    },
    "publish": {
      "trigger": "Publier",
      "title": "Publier l'automatisation",
      "description": "Vérifiez la configuration avant d'activer l'automatisation.",
      "config-title": "Configuration complète",
      "config-ok": "Tout est prêt pour la publication.",
      "audience-title": "Aperçu d'audience",
      "audience-count": "{count, plural, =0 {Aucun client ne correspond aujourd'hui} one {# client correspond aujourd'hui} other {# clients correspondent aujourd'hui}}",
      "audience-error": "Impossible de charger l'aperçu d'audience.",
      "credits-title": "Estimation crédits SMS",
      "sms-estimate": "≈ {segments, plural, one {# crédit SMS} other {# crédits SMS}}",
      "credits-hint": "Par client atteint.",
      "unsaved-hint": "Des modifications non enregistrées ne seront pas publiées. Enregistrez d'abord le brouillon.",
      "confirm": "Publier",
      "issue": {
        "empty-tree": "Ajoutez au moins une étape.",
        "trigger-tag-required": "Le déclencheur nécessite un tag.",
        "email-subject-required": "L'objet de l'email est requis.",
        "email-subject-too-long": "L'objet de l'email est trop long.",
        "email-content-required": "Le contenu de l'email est requis.",
        "email-content-too-long": "Le contenu de l'email est trop long.",
        "sms-content-required": "Le contenu du SMS est requis.",
        "sms-content-too-long": "Le contenu du SMS est trop long.",
        "wallet-title-required": "Le titre de la notification est requis.",
        "wallet-title-too-long": "Le titre de la notification est trop long.",
        "wallet-body-required": "Le message de la notification est requis.",
        "wallet-body-too-long": "Le message de la notification est trop long.",
        "notify-message-required": "Le message de l'alerte équipe est requis.",
        "notify-message-too-long": "Le message de l'alerte équipe est trop long.",
        "tag-required": "Le tag est requis.",
        "tag-reserved": "Ce tag utilise un préfixe réservé (auto:)."
      }
    },
    "test-run": {
      "trigger": "Tester sur moi",
      "publish-first": "Publiez d'abord l'automatisation pour la tester.",
      "title": "Tester l'automatisation",
      "description": "Un test réel est envoyé depuis la version publiée.",
      "customer-label": "Fiche client",
      "customer-hint": "Choisissez votre propre fiche client pour recevoir le test.",
      "confirm": "Envoyer le test",
      "success": "Test lancé (exécution {runId})",
      "reason": {
        "not-published": "L'automatisation n'est pas publiée.",
        "not-found": "Automatisation introuvable.",
        "archived": "L'automatisation est archivée.",
        "entry-conditions": "Ce client ne remplit pas les conditions d'entrée.",
        "deduplicated": "Ce client a déjà reçu cette automatisation récemment.",
        "customer-not-found": "Client introuvable.",
        "customer-deleted": "Ce client a été supprimé.",
        "no-consent": "Ce client n'a pas donné son consentement marketing.",
        "pressure-cap": "La limite de pression marketing est atteinte pour ce client.",
        "legal-window": "Envoi reporté hors de la fenêtre légale.",
        "unknown": "Le test n'a pas pu être lancé."
      }
    },
    "actions": {
      "pause": "Mettre en pause",
      "more": "Plus d’actions",
      "duplicate": "Dupliquer",
      "archive": "Archiver",
      "view-runs": "Voir les exécutions"
    },
    "archive": {
      "title": "Archiver l'automatisation ?",
      "description": "L'automatisation sera archivée et ne s'exécutera plus. Cette action est réversible."
    },
    "duplicate": {
      "copy-name": "Copie de {name}"
    },
    "runs": {
      "error": "Échec du chargement des exécutions",
      "empty": "Aucune exécution pour ces critères.",
      "version": "v{version}",
      "status": {
        "running": "En cours",
        "completed": "Terminé",
        "failed": "Échoué",
        "cancelled": "Annulé"
      },
      "filters": {
        "workflow": "Automatisation",
        "all-workflows": "Toutes les automatisations",
        "status": "Statut",
        "all-statuses": "Tous les statuts",
        "reset": "Réinitialiser"
      }
    },
    "run-detail": {
      "title": "Détail de l'exécution",
      "error": "Échec du chargement de l'exécution",
      "view-customer": "Voir la fiche client",
      "no-steps": "Aucune étape enregistrée.",
      "condition-evaluated": "Condition évaluée : {result}",
      "condition-yes": "Oui",
      "condition-no": "Non",
      "wait-scheduled": "Reprise prévue le {date}",
      "wait-done": "Attente terminée",
      "legal-report": "Reporté au {date} — fenêtre légale",
      "action-generic": "Action exécutée",
      "action-credits": "{channel} · {credits, plural, one {# crédit} other {# crédits}}",
      "channel": {
        "email": "E-mail envoyé",
        "sms": "SMS envoyé",
        "wallet-push": "Notification wallet"
      },
      "step-status": {
        "completed": "Terminé",
        "skipped": "Ignoré",
        "failed": "Échoué",
        "scheduled": "Planifié"
      },
      "skip-reason": {
        "no-marketing-consent": "Pas de consentement marketing",
        "marketing-pressure-cap": "Limite de pression marketing atteinte",
        "insufficient-sms-credits": "Crédits SMS insuffisants",
        "sms-rate-limited": "Limite d'envoi SMS atteinte",
        "email-unsubscribed": "Client désabonné des e-mails",
        "no-email": "Aucune adresse e-mail",
        "no-phone": "Aucun numéro de téléphone",
        "customer-deleted": "Client supprimé",
        "unknown": "Étape ignorée"
      }
    },
    "stats": {
      "error": "Échec du chargement des statistiques",
      "total-runs": "Déclenchées",
      "completed": "Terminées",
      "failed": "Échouées",
      "messages-sent": "Messages (90 j)",
      "sms-credits": "Crédits SMS (90 j)"
    }
  },
  "google-posts": {
    "create-post": "Créer un post",
    "new-post": "Nouveau post Google",
    "new-post-description": "Rédigez un post qui apparaîtra sur votre fiche Google",
    "edit-post": "Modifier le post",
    "edit-post-description": "Mettez à jour votre post Google",
    "status": {
      "draft": "Brouillon",
      "scheduled": "Programmé",
      "published": "Publié",
      "failed": "Échoué",
      "cancelled": "Annulé"
    },
    "cta": {
      "none": "Aucun bouton",
      "book": "Réserver",
      "order": "Commander en ligne",
      "shop": "Acheter",
      "learn-more": "En savoir plus",
      "sign-up": "S'inscrire",
      "call": "Appeler"
    },
    "table": {
      "summary": "Contenu",
      "status": "Statut",
      "date": "Date",
      "cta": "Bouton"
    },
    "empty": {
      "title": "Aucun post",
      "description": "Créez votre premier post Google pour animer votre fiche."
    },
    "form": {
      "summary": "Texte du post",
      "summary-placeholder": "Partagez une actualité, une offre ou une nouveauté…",
      "character-count": "{count}/{max} caractères",
      "image": "Image",
      "image-placeholder": "Ajoutez une image à votre post",
      "remove-image": "Retirer l'image",
      "cta-action-type": "Bouton d'action",
      "cta-action-type-placeholder": "Choisir un bouton",
      "cta-url": "Lien du bouton",
      "create-button": "Créer le post",
      "save-button": "Enregistrer"
    },
    "scheduling": {
      "title": "Publication",
      "draft": "Enregistrer comme brouillon",
      "draft-description": "Le post ne sera pas publié",
      "now": "Publier maintenant",
      "now-description": "Le post sera publié immédiatement",
      "scheduled": "Programmer",
      "scheduled-description": "Choisissez une date et une heure de publication",
      "date": "Date",
      "time": "Heure",
      "select-date": "Sélectionner une date",
      "select-time": "Sélectionner une heure"
    },
    "preview": {
      "title": "Aperçu",
      "empty-summary": "Votre texte apparaîtra ici",
      "image-alt": "Aperçu de l'image du post"
    },
    "actions": {
      "menu": "Actions",
      "edit": "Modifier",
      "cancel": "Annuler",
      "delete": "Supprimer"
    },
    "cancel-dialog": {
      "title": "Annuler la publication ?",
      "description": "Ce post programmé ne sera pas publié. Il repassera en brouillon.",
      "confirm": "Annuler la publication"
    },
    "delete-dialog": {
      "title": "Supprimer le post ?",
      "description": "Cette action est irréversible. Le post sera définitivement supprimé.",
      "confirm": "Supprimer"
    },
    "validation": {
      "summary-required": "Le texte est requis",
      "summary-too-long": "Le texte est trop long",
      "cta-url-required": "Un lien valide est requis",
      "scheduled-date-required": "La date est requise",
      "scheduled-time-required": "L'heure est requise",
      "scheduled-date-must-be-future": "La date doit être dans le futur"
    },
    "toasts": {
      "loading": {
        "create": "Création du post…",
        "update": "Mise à jour du post…",
        "cancel": "Annulation du post…",
        "delete": "Suppression du post…"
      },
      "success": {
        "create": "Post créé avec succès !",
        "update": "Post mis à jour avec succès !",
        "cancel": "Publication annulée avec succès !",
        "delete": "Post supprimé avec succès !"
      },
      "error": {
        "create": "Échec de la création du post",
        "update": "Échec de la mise à jour du post",
        "cancel": "Échec de l'annulation du post",
        "delete": "Échec de la suppression du post"
      }
    }
  },
  "payment-account": {
    "page-title": "Encaissement des paiements",
    "required": {
      "title": "Encaissement à configurer",
      "description": "Le restaurant doit pouvoir recevoir les paiements avant d’activer une garantie sur les réservations.",
      "action": "Configurer l’encaissement"
    }
  },
  "reservation-guarantees": {
    "load-error-title": "Impossible de charger la garantie",
    "card-title": "Paiement & garantie",
    "cancel": "Annuler",
    "reason-label": "Motif",
    "note-label": "Note interne (facultatif)",
    "modes": {
      "CARD_GUARANTEE": "Garantie carte (débit uniquement en cas d'absence)",
      "PREPAYMENT": "Acompte débité à la réservation"
    },
    "statuses": {
      "PENDING_SETUP": "Carte en attente",
      "PENDING_PAYMENT": "Paiement en attente",
      "CARD_SECURED": "Carte garantie",
      "PAID": "Acompte payé",
      "CHARGE_ELIGIBLE": "Débit possible",
      "CHARGE_PROCESSING": "Débit en cours",
      "CHARGE_FAILED": "Débit échoué",
      "CHARGE_REQUIRES_CUSTOMER_ACTION": "Authentification requise",
      "CHARGED": "Débité",
      "REFUND_PENDING": "Remboursement en cours",
      "REFUND_FAILED": "Remboursement échoué",
      "RELEASED": "Garantie libérée",
      "REFUNDED": "Remboursé",
      "DISPUTED": "Litige en cours",
      "DISPUTE_LOST": "Litige perdu",
      "FAILED": "Garantie échouée",
      "EXPIRED": "Garantie expirée"
    },
    "reasons": {
      "NO_SHOW": "Client absent",
      "LATE_CANCELLATION": "Annulation tardive",
      "MERCHANT_CANCELLATION": "Annulation par le restaurant",
      "DUPLICATE": "Doublon",
      "ERROR": "Erreur de débit",
      "MANDATORY_EXCEPTION": "Exception commerciale ou légale"
    },
    "history": {
      "title": "Historique financier",
      "actors": {
        "CUSTOMER": "Action du client",
        "STAFF": "Action de l’équipe",
        "SYSTEM": "Action automatique Suzzy",
        "STRIPE": "Confirmation du paiement"
      },
      "actions": {
        "CREATED": "Garantie créée",
        "CONSENT_RECORDED": "Consentement enregistré",
        "INTENT_ATTACHED": "Demande de paiement créée",
        "SECURED": "Carte enregistrée",
        "PAID": "Acompte payé",
        "EXPIRED": "Garantie expirée",
        "CHARGE_ELIGIBLE": "Débit autorisé",
        "CHARGE_STARTED": "Débit demandé",
        "CHARGE_FAILED": "Débit échoué",
        "CHARGE_REQUIRES_CUSTOMER_ACTION": "Authentification du client requise",
        "CHARGED": "Débit confirmé",
        "RELEASED": "Garantie libérée",
        "REFUND_STARTED": "Remboursement demandé",
        "REFUND_FAILED": "Remboursement échoué",
        "REFUNDED": "Remboursement confirmé",
        "RETAINED": "Acompte conservé",
        "DISPUTE_OPENED": "Paiement contesté",
        "DISPUTE_EVIDENCE_SUBMITTED": "Preuves envoyées",
        "DISPUTE_EVIDENCE_FAILED": "Preuves non envoyées — à traiter",
        "DISPUTE_WON": "Contestation gagnée",
        "DISPUTE_LOST": "Contestation perdue",
        "RECONCILED": "Situation vérifiée"
      }
    },
    "no-shows": {
      "title": "Absences et débits",
      "filter-label": "Filtrer les absences",
      "filters": {
        "ALL": "Toutes les absences",
        "TO_CHARGE": "À traiter",
        "CHARGED": "Débitées",
        "DISPUTED": "Contestées",
        "FAILED": "En échec",
        "REFUNDED": "Remboursées"
      },
      "columns": {
        "reservation": "Réservation",
        "customer": "Client",
        "date": "Date",
        "amount": "Montant",
        "status": "Situation"
      },
      "guests": "{count, plural, one {# couvert} other {# couverts}}",
      "empty": "Aucune absence avec garantie pour ce filtre.",
      "load-error": "Impossible de charger les absences",
      "load-more": "Afficher plus",
      "load-more-error": "La suite n’a pas pu être chargée.",
      "retry-load-more": "Réessayer",
      "loading-more": "Chargement…"
    },
    "connect": {
      "title": "Compte Stripe",
      "description": "Configurez Stripe pour que le restaurant reçoive directement les paiements de ses clients.",
      "ready-description": "Le restaurant reçoit ses paiements. Les frais Stripe et les litiges éventuels sont retenus sur son solde.",
      "transactions": {
        "title": "Historique des transactions",
        "empty": "Aucun mouvement pour l’instant. Les débits de garantie et les virements apparaîtront ici.",
        "error": "Impossible de charger l’historique",
        "date": "Date",
        "reservation": "Réservation",
        "refund": "Rembourser",
        "amount": "Montant",
        "label": "Libellé",
        "state": "État",
        "load-more": "Voir plus",
        "loading-more": "Chargement…",
        "kinds": {
          "charge": "Encaissement",
          "dispute": "Litige bancaire",
          "dispute-reversed": "Litige remboursé",
          "refund": "Remboursement",
          "account-fee": "Frais Stripe",
          "payout": "Virement vers votre banque",
          "platform-fee": "Commission Suzzy",
          "other": "Autre mouvement"
        },
        "stripe-fee": "Frais Stripe",
        "platform-fee": "Commission Suzzy",
        "net": "Net encaissé",
        "open-details": "Voir le détail du paiement",
        "returned": "Rendu au client",
        "fees": {
          "dispute-countered": "Frais de contestation de litige",
          "dispute": "Frais de litige",
          "active-account": "Frais de compte actif",
          "payout": "Frais de virement"
        }
      },
      "payouts": {
        "next-payout": "Prochain virement",
        "next-payout-value": "{amount} le {date}",
        "payout-rhythm": "Sous {days} jours après chaque paiement",
        "available": "Disponible",
        "pending": "En attente",
        "bank": "Versé sur",
        "blocked-by-negative-balance": "Aucun virement tant que le solde est négatif"
      },
      "action": "Configurer Stripe",
      "resume-action": "Terminer la configuration",
      "opening": "Ouverture…",
      "error": "Impossible d’ouvrir la configuration Stripe. Réessayez.",
      "admin-only": "Seul un administrateur peut configurer le compte.",
      "panels": {
        "transactions": "Transactions",
        "payouts": "Virements",
        "disputes": "Litiges",
        "documents": "Documents",
        "account": "Mon compte",
        "payouts-description": "Le détail de vos virements et leur rythme. Vous pouvez y changer la fréquence des versements.",
        "disputes-description": "Suzzy répond automatiquement à votre place, avec le consentement enregistré au moment de la réservation. Suivez ici l’issue de chaque contestation.",
        "documents-description": "Vos relevés Stripe, à transmettre à votre comptable.",
        "account-description": "Vos coordonnées bancaires et les informations que Stripe vous demande."
      },
      "status": {
        "NOT_CONNECTED": "Non connecté",
        "ONBOARDING_INCOMPLETE": "Configuration incomplète",
        "ACTION_REQUIRED": "Action requise",
        "READY": "Opérationnel"
      }
    },
    "settings": {
      "page-title": "Empreinte bancaire",
      "policy-title": "Politique de réservation",
      "policy-description": "Choisissez ce qui est demandé aux clients qui réservent en ligne.",
      "mode-label": "Type de garantie",
      "mode-description": "Les réservations créées par l’équipe, les imports et Google restent exemptés en V1.",
      "modes": {
        "OFF": "Aucune garantie",
        "CARD_GUARANTEE": "Garantie carte (sans débit immédiat)",
        "PREPAYMENT": "Acompte (débit immédiat)"
      },
      "amount-title": "Montant et annulation",
      "amount-description": "Le montant est calculé au moment de la réservation puis conservé dans son historique.",
      "basis-label": "Calcul du montant",
      "basis-description": "Par réservation ou multiplié par le nombre de personnes.",
      "basis": {
        "PER_RESERVATION": "Par réservation",
        "PER_GUEST": "Par personne"
      },
      "amount-label": "Montant",
      "amount-help": "Entre 1 € et 1 000 €.",
      "cutoff-label": "Annulation gratuite jusqu’à",
      "cutoff-help": "Nombre de jours avant la réservation.",
      "min-guests-label": "Garantie à partir de",
      "min-guests-help": "Laissez 0 pour demander la garantie sur toutes les réservations. Choisissez par exemple 6 pour ne demander la carte qu’aux groupes.",
      "min-guests-suffix": "couverts",
      "hours": "heures",
      "days": "jours",
      "prepayment-gate": "L’acompte ne peut être activé en production qu’après validation de l’avocat et du comptable.",
      "exemption-warning": "En V1, les réservations saisies par l’équipe, importées ou reçues via Google sont acceptées sans garantie et clairement signalées comme telles.",
      "save": "Enregistrer",
      "saving": "Enregistrement…"
    },
    "charge": {
      "action": "Débiter la garantie",
      "dialog-title": "Confirmer le débit",
      "dialog-description": "Vous allez débiter {amount}. Cette action est distincte du statut « absent » et doit correspondre au motif choisi.",
      "confirm": "Débiter {amount}",
      "processing": "Débit en cours…",
      "success": "Le débit a été traité.",
      "error": "Le débit n’a pas pu être traité."
    },
    "refund": {
      "action": "Rembourser",
      "dialog-title": "Confirmer le remboursement",
      "dialog-description": "Vous allez rembourser intégralement {amount}. Les frais de traitement initiaux peuvent rester à la charge du restaurant.",
      "confirm": "Rembourser {amount}",
      "processing": "Remboursement…",
      "success": "Le remboursement a été traité.",
      "error": "Le remboursement n’a pas pu être traité."
    }
  },
  "deposits": {
    "page-title": "Acomptes",
    "load-error": "Impossible de charger les acomptes",
    "statuses": {
      "PENDING": "En attente de paiement",
      "PAID": "Payé",
      "CANCELED": "Annulé",
      "REFUND_PENDING": "Remboursement en cours",
      "REFUND_FAILED": "Remboursement échoué",
      "REFUNDED": "Remboursé",
      "DISPUTED": "Litige en cours",
      "DISPUTE_LOST": "Litige perdu"
    },
    "filters": {
      "all": "Tous les statuts"
    },
    "errors": {
      "stripe-not-ready": "Votre compte de paiement n’est pas encore prêt à encaisser.",
      "already-active": "Cette réservation a déjà un acompte en cours.",
      "already-prepaid": "Cette réservation est déjà prépayée.",
      "contact-missing": "Ajoutez un téléphone ou un email pour envoyer le lien.",
      "not-pending": "Cet acompte n’est plus en attente de paiement.",
      "already-paid": "Le client vient de payer cet acompte : il ne peut plus être annulé.",
      "payment-in-progress": "Un paiement est en cours. Attendez son résultat avant de réessayer.",
      "reservation-not-payable": "Cette réservation est clôturée : aucun acompte ne peut être demandé.",
      "refund-reconciliation-required": "Vérifiez le résultat du remboursement dans votre compte de paiement avant une nouvelle demande."
    },
    "validation": {
      "label-max": "120 caractères maximum",
      "name-max": "120 caractères maximum",
      "amount-min": "Le montant minimum est de 1 €",
      "amount-max": "Le montant maximum est de 10 000 €",
      "email-required": "Renseignez l’email pour un envoi par email"
    },
    "stripe-not-ready": {
      "title": "Encaissement à configurer",
      "description": "Pour demander un acompte, votre restaurant doit d’abord pouvoir recevoir les paiements par carte.",
      "action": "Configurer l’encaissement"
    },
    "create": {
      "action": "Ajouter un acompte",
      "title": "Nouvel acompte",
      "description": "Le client règle ce montant par carte depuis un lien sécurisé.",
      "description-reservation": "Pour la réservation de {name}",
      "label": "Intitulé",
      "amount": "Montant",
      "send-mode": "Envoi du lien",
      "send-modes": {
        "SMS": "SMS",
        "EMAIL": "Email",
        "LINK": "Copier le lien"
      },
      "customer-name": "Nom du client",
      "customer-phone": "Téléphone",
      "customer-email": "Email",
      "submit": "Créer l’acompte",
      "success": "Acompte créé",
      "error": "Impossible de créer l’acompte",
      "link-ready": "Copiez ce lien et envoyez-le à votre client.",
      "done": "Terminé"
    },
    "send": {
      "success": "Lien de paiement envoyé",
      "error": "Impossible d’envoyer le lien"
    },
    "cancel": {
      "dialog-title": "Annuler cet acompte ?",
      "dialog-description": "Le lien de paiement de {amount} ne fonctionnera plus.",
      "confirm": "Annuler l’acompte",
      "success": "Acompte annulé",
      "error": "Impossible d’annuler l’acompte"
    },
    "refund": {
      "dialog-title": "Rembourser l’acompte",
      "dialog-description": "{amount} seront rendus au client sur sa carte. Cette action est définitive.",
      "reason-label": "Motif du remboursement",
      "confirm": "Rembourser {amount}",
      "processing": "Remboursement…",
      "success": "Remboursement lancé",
      "error": "Impossible de rembourser l’acompte"
    },
    "actions": {
      "copy-link": "Copier le lien de paiement",
      "send-sms": "Envoyer le lien par SMS",
      "send-email": "Envoyer le lien par email",
      "cancel": "Annuler l’acompte",
      "refund": "Rembourser l’acompte",
      "edit": "Modifier l’acompte"
    },
    "card": {
      "title": "Acompte",
      "sent-at": "Lien envoyé le {date}",
      "paid-at": "Payé le {date}",
      "refunded-at": "Remboursé le {date}",
      "payment-failed": "Dernier paiement refusé : le client peut réessayer avec le même lien."
    },
    "list": {
      "title": "Acomptes",
      "filter-label": "Filtrer par statut",
      "empty": "Aucun acompte",
      "no-reservation": "Sans réservation",
      "load-more": "Afficher plus",
      "loading-more": "Chargement…",
      "load-more-error": "Impossible de charger la suite",
      "columns": {
        "label": "Intitulé",
        "reservation": "Réservation",
        "amount": "Montant",
        "status": "Statut",
        "created-at": "Créé le"
      }
    },
    "edit": {
      "title": "Modifier l’acompte",
      "description": "Le lien de paiement reste le même. Le montant ne peut plus changer une fois que le client a commencé à payer.",
      "submit": "Enregistrer",
      "success": "Acompte modifié",
      "error": "Impossible de modifier l’acompte"
    }
  },
  "changelog": {
    "title": "Du nouveau chez Suzzy",
    "discover": "Découvrir la nouveauté",
    "subtitle": "Voici ce qui a changé depuis votre dernière visite.",
    "sheet-title": "Les nouveautés Suzzy",
    "sheet-description": "Tout ce qui a changé, du plus récent au plus ancien.",
    "next": "Suivant",
    "replay": "Rejouer l’animation",
    "got-it": "J'ai compris",
    "step": "{current} sur {total}",
    "unread": "Nouveau",
    "deck-title": "À découvrir",
    "history-title": "Tout l’historique",
    "types": {
      "new": "Nouveau",
      "improved": "Amélioré",
      "fixed": "Corrigé"
    },
    "entries": {
      "connexions-ia": {
        "title": "Connectez Claude, ChatGPT ou Mistral à votre établissement",
        "body": "Votre assistant IA peut consulter vos réservations, commandes ou avis, et agir si vous l'autorisez, sur un ou plusieurs établissements. Un guide animé montre chaque clic, et chaque action apparaît dans le journal d'activité.",
        "cta": "Connecter une IA"
      },
      "promotions-carte-en-ligne": {
        "title": "Vos promotions s’affichent sur votre carte en ligne",
        "body": "Vos clients voient vos offres comme des bons sur la carte, et la remise se fait toute seule au paiement, sans code. Ouvrez une récompense et activez « Appliquer automatiquement sur la carte en ligne ».",
        "cta": "Créer une promotion"
      },
      "fidelite-borne-accueil": {
        "title": "Un accueil plus chaleureux sur la borne",
        "body": "Lorsqu’un client repasse trop tôt, la borne lui explique gentiment que son dernier passage est déjà comptabilisé et indique le temps restant avant de pouvoir cumuler à nouveau.",
        "cta": "Voir la borne"
      },
      "fidelite-qr-bonus-profil": {
        "title": "Le QR code montre le bonus de profil à gagner",
        "body": "À l’inscription sur la borne, un QR code mieux présenté guide le client pour ajouter sa carte sur son téléphone. Il indique aussi les points ou tampons à gagner en complétant son profil, selon les informations manquantes et les cases restantes. La présentation s’adapte aux formats portrait et paysage des tablettes.",
        "cta": "Régler les bonus de fidélité"
      },
      "fidelite-bonus-profil-enregistres": {
        "title": "Vos bonus de profil fidélité sont bien enregistrés",
        "body": "Les récompenses par information ajoutée au profil et le bonus de profil complet conservent maintenant les montants que vous enregistrez, en points comme en tampons. Ajustez-les dans les paramètres de fidélité, puis cliquez sur Enregistrer.",
        "cta": "Régler les bonus de fidélité"
      },
      "sms-un-credit": {
        "title": "Vos SMS personnalisés coûtent de nouveau un seul crédit",
        "body": "Un caractère invisible ajouté par l’éditeur de message pouvait faire compter un SMS de confirmation comme deux. Il est maintenant retiré à l’envoi : un message court consomme un seul crédit, sans rien changer à vos modèles."
      },
      "acomptes": {
        "title": "Encaissez un acompte avant la venue de vos clients",
        "body": "Vous pouvez maintenant demander un acompte par SMS, email ou simple lien, seul ou depuis une réservation. Le client paie par carte et l’argent arrive sur votre compte de paiement. Vous pouvez aussi modifier un acompte tant qu’il n’est pas payé, et afficher ou masquer les acomptes depuis les paramètres de l’établissement.",
        "cta": "Voir les acomptes"
      },
      "reservations-filtres-communs": {
        "title": "Retrouvez les mêmes réservations dans chaque vue",
        "body": "Les vues Jour, Mois, Créneaux et Agenda partagent vos filtres, avec tous les statuts affichés au départ. Les créneaux restent visibles même à zéro : les réservations et personnes du créneau sont à gauche, le cumul des couverts du service avance dans une barre à droite.",
        "cta": "Voir mes réservations"
      },
      "plan-de-salle-disponibilites-services": {
        "title": "Les couleurs du plan suivent les services restants",
        "body": "Dans « Dispos · Journée », une table reste orange dès qu’un peu de temps est libre dans les services restants, même pour un passage court. Elle devient rouge quand tout est occupé, et reste blanche sans réservation ni clients installés.",
        "cta": "Ouvrir le plan de salle"
      },
      "fidelite-recompenses-par-palier": {
        "title": "Vos récompenses fidélité rangées par palier",
        "body": "Vos lots sont regroupés par coût dans la gestion et sur la carte client. Vos clients parcourent les paliers, voient les règles du programme et vérifient le solde restant avant d’utiliser un lot.",
        "cta": "Voir les récompenses"
      },
      "reservation-contact-au-choix": {
        "title": "Un email ou un téléphone suffit pour réserver",
        "body": "Vous pouvez autoriser vos clients à réserver avec un email ou un téléphone. Choisissez les coordonnées demandées dans les paramètres de réservation ; vos vérifications activées restent obligatoires.",
        "cta": "Choisir les coordonnées demandées"
      },
      "plan-de-salle-par-table": {
        "title": "Plan de salle : touchez une table pour voir ses réservations",
        "body": "Choisissez « Par table » en haut à droite et touchez une table : sa soirée s'affiche heure par heure, avec le temps qui reste aux clients installés et le temps libre avant les suivants. Installez des clients sans réservation au même endroit, même un grand groupe sur des tables regroupées.",
        "cta": "Ouvrir le plan de salle"
      },
      "emails-equipe": {
        "title": "Les alertes de réservation arrivent dans la boîte de chaque membre",
        "body": "Les gérants et managers reçoivent les nouvelles réservations, annulations et commandes sur leur propre email ; l'email public du restaurant ne garde que les messages des clients. Chacun choisit ce qu'il reçoit dans Notifications.",
        "cta": "Choisir mes emails"
      },
      "plan-de-salle-desactive": {
        "title": "Un plan désactivé ne vous encombre plus",
        "body": "Sans table active dans une salle active, les boutons du plan et les actions de placement disparaissent des réservations. Vos tables et vos attributions sont conservées."
      },
      "plan-de-salle-en-salle": {
        "title": "Plan de salle : qui est installé, qui arrive",
        "body": "Touchez l'icône fauteuil en haut à droite de vos réservations : une table occupée passe en violet avec le temps qui reste aux clients, et la prochaine réservation s'affiche dessous. En orange, le temps est dépassé ou le client est en retard.",
        "cta": "Ouvrir le plan de salle"
      },
      "plan-de-salle-service-dispos": {
        "title": "Le plan de salle vous dit qui arrive et où installer",
        "body": "Sous chaque table, le temps avant le prochain client, en couleur quand l'arrivée approche. Passez en « Dispos » : les tables où installer quelqu'un maintenant restent blanches, avec l'heure limite si une réservation suit ; les autres indiquent dès quelle heure elles sont libres, ou qu'elles sont complètes.",
        "cta": "Ouvrir le plan de salle"
      },
      "menu-mode-service": {
        "title": "Mode service : un menu réduit à l'essentiel",
        "body": "Pendant le service, activez le mode service en bas du menu : seuls l'accueil, les réservations, les commandes, le service à table et les clients restent affichés. Choisissez vos pages avec le bouton Pages, et faites glisser le bord du menu pour le réduire ou le masquer sur tablette. Sur Réservations et Clients, le bouton plein écran en haut à droite masque tout le menu."
      },
      "fidelite-inscription-borne": {
        "title": "Inscrivez un client à la borne en 5 secondes",
        "body": "Le client tape juste son numéro et il est inscrit, sans bloquer la file. Il complète son profil et gagne ses points ensuite, tranquillement sur son téléphone.",
        "cta": "Voir la fidélité"
      },
      "sms-factures-avec-abonnement": {
        "title": "Vos SMS sont facturés avec votre abonnement",
        "body": "Plus besoin d'acheter des crédits : vos crédits restants partent en premier, puis chaque SMS coûte 0,20 € HT sur votre facture du mois. Fixez un plafond mensuel pour garder le contrôle (100 € par défaut).",
        "cta": "Voir mes SMS du mois"
      },
      "reservations-jamais-refusees-tables": {
        "title": "Plus aucune réservation refusée à cause des tables",
        "body": "Seul votre nombre de couverts décide : une réservation sans table libre est acceptée et attend dans « À placer » sur le plan de salle. L’attribution automatique tient en un interrupteur, « Optimiser le service » replace toutes les tables d’un coup, et Google accepte les groupes jusqu’à 20 personnes si votre taille maximale le permet.",
        "cta": "Voir le plan de salle"
      },
      "attestation-conditions-acceptees": {
        "title": "Retrouvez les conditions que vous avez acceptées",
        "body": "Dans votre compte, chaque acceptation de nos conditions apparaît avec sa date. Téléchargez l'attestation en PDF en un clic si on vous la demande.",
        "cta": "Voir mes acceptations"
      },
      "fiche-google-un-seul-commerce": {
        "title": "Une fiche Google ne peut être rattachée qu’à un seul établissement",
        "body": "Si la fiche Google que vous sélectionnez est déjà utilisée par un autre établissement, vous êtes prévenu tout de suite. Avant, le rattachement semblait accepté mais n’avait jamais lieu, sans aucun message."
      },
      "panneaux-mobiles-lisibles": {
        "title": "Des panneaux plus lisibles",
        "body": "Les titres, fonds et boutons de fermeture des panneaux sont harmonisés. Sur téléphone, les actions de sauvegarde restent visibles au-dessus de la navigation, même en faisant défiler les réglages."
      },
      "recherche-boutique-mobile": {
        "title": "Retrouvez votre boutique plus facilement",
        "body": "Depuis le menu, recherchez une boutique dans une liste défilante avec un champ toujours visible. Vous pouvez effacer la recherche en un geste."
      },
      "mobile-reglages-lisibles": {
        "title": "Vos réglages plus pratiques sur téléphone",
        "body": "Dans les réglages des avis et des réservations, un bouton reste accessible pour enregistrer vos modifications. Les choix sélectionnés sont aussi plus lisibles en mode sombre."
      },
      "reservations-fermeture-fluide": {
        "title": "Vos fiches de réservation se ferment en douceur",
        "body": "Sur mobile, les fiches de réservation restent affichées pendant leur fermeture, sans disparaître d’un coup. Vous retrouvez votre liste et la date sélectionnée."
      },
      "traductions-carte-fiables": {
        "title": "Traduction de la carte plus rapide et sans trous",
        "body": "Traduire 200 plats en quatre langues prend maintenant moins de dix secondes, et les lots qui revenaient parfois incomplets sont corrigés : plus aucun plat ne reste dans sa langue d'origine."
      },
      "types-de-reponse-avis": {
        "title": "Choisissez le style de vos réponses aux avis",
        "body": "Quatre styles en un clic (Chaleureux, Patron du coin, Maison, Attentionné) règlent d'un coup le ton, la longueur, les émojis et la reprise ou non des détails de l'avis. Vous pouvez aussi écrire vos propres consignes, suivies à chaque réponse.",
        "cta": "Régler mes réponses"
      },
      "reponses-avis-plus-discretes": {
        "title": "Vos réponses aux avis restent discrètes",
        "body": "Les réponses ne reprennent plus les détails cités par le client : le plat, le prénom du serveur, l'anecdote. Elles remercient pour le repas ou la visite, sans répéter ce qui a été écrit."
      },
      "reponses-avis-plus-rapides": {
        "title": "Réponses aux avis plus rapides et plus humaines",
        "body": "Générer les réponses de centaines d'avis prend maintenant une dizaine de secondes, au lieu d'une demi-heure. Les réponses reprennent les mots du client, ne citent plus la note, et face à une critique elles s'excusent, annoncent une vérification en interne et rappellent vos standards."
      },
      "horaires-enregistrement-fiable": {
        "title": "Vos horaires s’enregistrent d’un seul bloc",
        "body": "Modifier ou fermer plusieurs créneaux part maintenant en une seule fois : soit tout est enregistré, soit rien ne bouge. Avant, un créneau pouvait rester ouvert à vos clients alors que l’écran affichait la journée fermée. Vous pouvez aussi intervertir les horaires de deux créneaux en un seul enregistrement."
      },
      "reservations-grands-groupes": {
        "title": "Vos grands groupes peuvent réserver de nouveau",
        "body": "Le nombre de couverts proposé à vos clients suit maintenant la taille de groupe que vous acceptez, même quand le service se remplit. Vérifiez votre réglage « Groupes acceptés » dans les paramètres de réservation."
      },
      "traductions-analyses-plus-rapides": {
        "title": "Traductions et analyses d’avis beaucoup plus rapides",
        "body": "Traduire votre carte ou relancer l’analyse de vos avis prend maintenant quelques secondes, là où il fallait souvent patienter plusieurs minutes."
      },
      "traductions-enregistrement-groupe": {
        "title": "Enregistrez toutes vos traductions d’un seul coup",
        "body": "Corrigez autant de produits et de catégories que vous voulez, puis enregistrez tout avec un seul bouton. Les longues séries de corrections passent maintenant sans blocage."
      },
      "menu-digital-fiche-plat": {
        "title": "La fiche d'un plat s'ouvre mieux sur mobile",
        "body": "Vos clients voient la photo du plat en entier, referment la fiche d'un glissement vers le bas, et votre carte s'affiche plus vite."
      },
      "navigation-sans-blocage": {
        "title": "L'application ne se bloque plus quand vous enchaînez les écrans",
        "body": "Après plusieurs pages ouvertes coup sur coup, vos actions pouvaient être refusées pendant une minute. Vous pouvez maintenant naviguer autant que nécessaire, même en plein service."
      },
      "selection-recompense-defilement": {
        "title": "Le choix d'une récompense défile de nouveau",
        "body": "La liste des récompenses et les autres menus déroulants se parcourent et se touchent normalement sur tablette et sur mobile."
      },
      "commandes-programmees-seuil-30min": {
        "title": "Vos commandes planifiées restent bien dans Programmées",
        "body": "Les commandes à emporter prévues plus de 30 minutes à l'avance restent dans l'onglet Programmées et basculent automatiquement dans Reçues à l'approche du retrait.",
        "cta": "Voir les commandes"
      },
      "reservations-parametres-enregistrement": {
        "title": "Vos paramètres de réservation s'enregistrent correctement",
        "body": "Vos changements de limites, de créneaux et de liste d'attente sont bien gardés quand vous cliquez sur Enregistrer."
      },
      "statistiques-chiffres-justes": {
        "title": "Vos statistiques comptent juste",
        "body": "Les annulations, les absences, les commandes sans e-mail et les SMS utilisés sont maintenant comptés correctement. Les réservations de la veille ne s'ajoutent plus à la période choisie."
      },
      "recompenses-conditions-caisse": {
        "title": "Les conditions du lot restent à portée de main",
        "body": "Vos clients retrouvent les conditions de leur lot dans leur email et près du QR code. Vous pouvez aussi les lire en entier sur la fiche du bon pour les vérifier en caisse.",
        "cta": "Voir les récompenses"
      },
      "notifications-lecture-groupee": {
        "title": "Vos notifications se lisent plus facilement",
        "body": "La lecture de vos notifications est plus fluide. Si elle ne peut pas être enregistrée, les notifications restent à lire."
      },
      "choix-lot-jeux": {
        "title": "Changez facilement les lots de vos jeux",
        "body": "Choisissez une autre récompense depuis « Modifier le lot », tout en gardant vos réglages. Un raccourci ouvre sa fiche dans le catalogue.",
        "cta": "Voir mes jeux"
      },
      "game-early-return-duration": {
        "title": "Délai réglable avant retour aux jeux",
        "body": "Personnalisez entre 2 et 20 secondes le temps d'attente imposé sur le lien externe avant de débloquer la partie.",
        "cta": "Voir les jeux"
      },
      "reservations-action-required": {
        "title": "Repérez d'un coup d'œil les réservations à traiter",
        "body": "Vos notifications ont un nouvel onglet \"Action requise\" qui regroupe les demandes à valider et les clients en liste d'attente, du plus urgent au moins urgent.",
        "cta": "Voir mes réservations"
      },
      "avis-trustpilot-commercant": {
        "title": "Donnez votre avis sur Suzzy sur Trustpilot",
        "body": "Partagez votre retour d'expérience directement depuis vos paramètres pour soutenir notre équipe et aider d'autres restaurateurs à découvrir Suzzy.",
        "cta": "Accéder aux paramètres"
      },
      "offres-commandes": {
        "title": "Vos offres se commandent avec les bons",
        "body": "Proposez une offre avec des produits au choix et appliquez les bons compatibles aux commandes, même sur une table sans compte client. Les suppléments restent à payer et le montant à encaisser tient compte des bons.",
        "cta": "Configurer mes offres"
      },
      "public-restaurant-links": {
        "title": "Des liens mieux organisés pour vos clients",
        "body": "Vos nouveaux liens de fiche, réservation, commande et fidélité sont regroupés sous /restaurants/. Les anciennes adresses et les QR codes déjà imprimés restent utilisables."
      },
      "recompenses-en-poche-premier": {
        "title": "Vos récompenses en poche en premier",
        "body": "L’onglet En poche s’ouvre désormais en premier dans vos récompenses. Le catalogue reste accessible dans le deuxième onglet.",
        "cta": "Voir les récompenses"
      },
      "game-participation-settings": {
        "title": "Choisissez quand vos clients peuvent rejouer",
        "body": "Dans chaque campagne, choisissez le délai entre deux parties et activez ou désactivez le blocage des retours trop rapides.",
        "cta": "Configurer mes jeux"
      },
      "prise-commande-commercant": {
        "title": "Prenez les commandes vous-même",
        "body": "Ajoutez les produits depuis une table ou créez une commande à emporter, immédiate ou planifiée. Sur place, terminez simplement la table ; vos commandes à emporter ne déclenchent pas d’alerte.",
        "cta": "Créer une commande"
      },
      "demonstrations-avec-voix": {
        "title": "Vos nouveautés vous accompagnent en vidéo",
        "body": "Retrouvez vingt nouveautés en vidéos narrées, avec des démonstrations et des explications animées. Les voix et les sous-titres suivent votre langue : français, anglais ou chinois."
      },
      "nouveautes-demonstrations": {
        "title": "Vos nouveautés, plus faciles à découvrir",
        "body": "Parcourez des cartes plus lisibles et découvrez chaque nouveauté dans une fenêtre plus claire. Les démonstrations vidéo se lancent quand vous le souhaitez."
      },
      "nouveautes-pile-essentielle": {
        "title": "Vos nouveautés sont plus faciles à parcourir",
        "body": "Les cartes sont plus lisibles et suivent votre geste. Recliquez pendant une fermeture pour accélérer le passage à la suivante."
      },
      "navigation-stable-au-rafraichissement": {
        "title": "Vos raccourcis restent en place",
        "body": "Quand vous actualisez la page, vos raccourcis restent visibles sans apparaître les uns après les autres."
      },
      "nouveautes-glissement-cartes": {
        "title": "Parcourez les nouveautés en glissant la carte",
        "body": "Sur ordinateur comme sur mobile, faites glisser la carte principale vers la droite pour passer à la suivante en douceur."
      },
      "nouveautes-pile-cartes-fluide": {
        "title": "Découvrez les nouveautés dans une pile plus fluide",
        "body": "La carte principale suit votre geste et sort vers la droite. La suivante remonte naturellement pour vous permettre de parcourir les nouveautés sans à-coups."
      },
      "nouveautes-fermeture-rapide": {
        "title": "Fermez les nouveautés sans sélectionner le texte",
        "body": "Un clic supplémentaire sur la croix accélère la carte déjà en train de sortir. La pile avance une seule carte à la fois, même si vous cliquez rapidement."
      },
      "nouveautes-vues-une-seule-fois": {
        "title": "Vos nouveautés restent vues après fermeture",
        "body": "Une carte que vous avez ouverte ou fermée ne revient plus après un rafraîchissement. Les autres nouveautés restent disponibles, avec une pile plus fluide et une fermeture accélérée si vous cliquez plusieurs fois."
      },
      "travail-a-plusieurs-sans-blocage": {
        "title": "Vous pouvez travailler à plusieurs sans blocage",
        "body": "Le message « Trop de requêtes » n’apparaît plus quand plusieurs personnes utilisent Suzzy en même temps. Chaque membre de votre équipe travaille désormais de son côté."
      },
      "notifications-langue-telephone": {
        "title": "Vos notifications suivent la langue de votre téléphone",
        "body": "Vos notifications push s’affichent désormais dans la langue de votre téléphone. Si cette langue n’est pas disponible, Suzzy utilise le français.",
        "cta": "Régler mes notifications"
      },
      "analyse-avis-plus-claire": {
        "title": "Vos avis Google expliquent mieux les actions à mener",
        "body": "Vous pouvez relancer l'analyse et voir l'objection précise de chaque client, avec des pistes prudentes à vérifier.",
        "cta": "Voir mes avis"
      },
      "offrir-une-recompense-au-comptoir": {
        "title": "Offrez une récompense à un client en un geste",
        "body": "Après un scan, vous pouvez remettre une récompense du catalogue à la main, avec un motif. Le coupon apparaît aussitôt dans sa fiche.",
        "cta": "Ouvrir le scanner"
      },
      "roue-lots-du-catalogue": {
        "title": "Vos roues piochent dans le catalogue",
        "body": "Un lot de la roue est maintenant une récompense du catalogue : choisissez-la, réglez son taux de gain et son stock. La même récompense peut servir sur plusieurs roues.",
        "cta": "Voir mes jeux"
      },
      "catalogue-des-recompenses": {
        "title": "Vos récompenses ont leur catalogue",
        "body": "Dans « Récompenses », l’onglet Catalogue rassemble tout ce que vous offrez, roue et campagnes comprises. Vous voyez d’un coup d’œil combien de coupons sont en poche, et vous pouvez publier, dupliquer ou archiver une récompense.",
        "cta": "Voir mon catalogue"
      },
      "notifications-nom-boutique-au-choix": {
        "title": "Choisissez le nom affiché dans vos notifications",
        "body": "Affichez ou masquez le nom de la boutique dans vos notifications push, ou laissez Suzzy décider selon le nombre de boutiques que vous gérez.",
        "cta": "Régler mes notifications"
      },
      "garanties-reservations-google": {
        "title": "Vos garanties s’appliquent aussi aux réservations Google",
        "body": "Lorsque l’option Google est active, les clients concernés sont redirigés vers Suzzy pour fournir l’empreinte bancaire ou le prépaiement que vous avez configuré. Les réservations sans garantie restent possibles directement sur Google."
      },
      "service-table-nouvelle-vue": {
        "title": "Votre service à table gagne une vue tickets",
        "body": "Basculez du plan de salle à la liste des tables occupées, les plus urgentes en premier. Sur ordinateur, le plan reste visible pendant que vous ouvrez une table — et la fusion de deux tables dit désormais clairement laquelle garde l'addition.",
        "cta": "Voir mon service à table"
      },
      "liens-qr-tables-lisibles": {
        "title": "Des liens QR lisibles et réutilisables",
        "body": "Le lien QR reprend désormais le nom de la table. Recréez une table avec le même nom pour retrouver le même lien sans réimprimer vos QR.",
        "cta": "Voir mes tables"
      },
      "roulette-resultat-apres-tirage": {
        "title": "Vos clients voient leur récompense après la roue",
        "body": "Après chaque tirage, le résultat affiche clairement le lot gagné, confirme son envoi par e-mail et rappelle le code, l’expiration et les conditions utiles."
      },
      "qr-des-tables-toujours-actif": {
        "title": "Le QR de vos tables marche tout de suite",
        "body": "Une table active accepte les commandes par QR sans réglage supplémentaire. Sur le plan de salle, une table éteinte porte la mention « Inactive » et se rallume d'un clic.",
        "cta": "Voir mon plan de salle"
      },
      "services-disponibilite-claire": {
        "title": "Vos services indiquent clairement leur disponibilité",
        "body": "Lorsqu'un service est temporairement indisponible, Suzzy vous l'indique clairement, bloque les nouvelles actions et garde votre historique ainsi que vos réglages."
      },
      "jauge-des-services-complete": {
        "title": "La jauge de vos services compte tout le monde",
        "body": "Sur le calendrier mensuel, le nombre de couverts d'un service inclut désormais les réservations prises à l'heure d'ouverture. Cliquez sur un jour pour voir le détail.",
        "cta": "Voir le calendrier"
      },
      "historique-du-service": {
        "title": "L'historique de chaque service",
        "body": "Ouvrez un service passé : vous voyez la réservation liée, et qui a transféré, fusionné, supprimé une ligne ou encaissé, avec l'heure.",
        "cta": "Voir mes tables"
      },
      "plan-de-salle-alertes": {
        "title": "Le plan de salle vous alerte",
        "body": "Une table passe en rouge quand un client y est attendu alors qu'elle est encore occupée. Le transfert prévient aussi si la table d'arrivée est réservée ou trop petite.",
        "cta": "Voir le plan de salle"
      },
      "encaissement-panier-en-cours": {
        "title": "Une table s'encaisse toujours",
        "body": "Un client qui laisse des plats dans son panier sans les envoyer ne bloque plus l'encaissement.",
        "cta": "Voir mes tables"
      },
      "plan-de-salle-toutes-les-tables": {
        "title": "Toutes vos tables occupées s'affichent",
        "body": "Au-delà de dix services en cours, certaines tables repassaient en vert sur le plan. L'historique de chaque table est complet lui aussi.",
        "cta": "Voir le plan de salle"
      },
      "reservation-suit-sa-table": {
        "title": "Vos réservations suivent leur table",
        "body": "Changez une table de place et la réservation la suit. À l'encaissement, elle est marquée terminée et la demande d'avis part le soir même.",
        "cta": "Voir mes tables"
      },
      "notifications-actions-groupees": {
        "title": "Réglez chaque canal de notification en un geste",
        "body": "Cochez ou décochez toute une colonne e-mail ou push dans chaque catégorie.",
        "cta": "Régler mes notifications"
      },
      "modification-reservation-liste-attente": {
        "title": "Vos clients en liste d’attente peuvent modifier leur demande",
        "body": "Ils peuvent maintenant ajuster l’heure, le nombre de couverts et leurs demandes. Les places libérées sont attribuées dans l’ordre d’arrivée, jusqu’à une heure avant le créneau.",
        "cta": "Voir les réservations"
      },
      "notifications-push-essentiel": {
        "title": "Vos notifications vont à l’essentiel",
        "body": "L’heure et le nombre de couverts apparaissent maintenant en premier sur votre téléphone. Les alertes qui n’appelaient aucune action ont été retirées.",
        "cta": "Régler mes notifications"
      },
      "montant-commande-notification": {
        "title": "Le montant de vos commandes s’affiche correctement",
        "body": "Le total d’une nouvelle commande apparaissait à 0,00 € dans vos notifications. Il indique maintenant le vrai montant.",
        "cta": "Voir mes commandes"
      },
      "confirmation-liste-attente": {
        "title": "Les réservations en liste d’attente sont modifiables à nouveau",
        "body": "Vous pouvez modifier leur statut depuis le détail, comme pour les autres réservations.",
        "cta": "Voir les réservations"
      },
      "lien-avis-google-automatique": {
        "title": "Votre lien d'avis Google se met à jour tout seul",
        "body": "Le lien d'avis Google est maintenant généré à partir de votre fiche Google. Une chose de moins à gérer.",
        "cta": "Voir mes réglages"
      },
      "reservations-google-sans-commission": {
        "title": "Vos clients réservent directement depuis Google",
        "body": "Activez « Réserver via Google » dans les réglages de réservation. Vos disponibilités peuvent ensuite apparaître sur Google Search et Google Maps, sans commission.",
        "cta": "Activer Réserver via Google"
      },
      "compte-stripe-dans-suzzy": {
        "title": "Gérez votre compte de paiement sans quitter Suzzy",
        "body": "Changez vos coordonnées bancaires, suivez vos virements et répondez aux paiements contestés depuis vos réglages. Vos relevés comptables s’y trouvent aussi.",
        "cta": "Voir mon compte de paiement"
      },
      "deconnexion-inattendue": {
        "title": "Vous ne serez plus déconnecté en pleine action",
        "body": "Une erreur d'un service de paiement vous faisait parfois sortir de votre compte. Vous restez connecté et l'écran vous invite simplement à réessayer."
      },
      "garanties-reservation": {
        "title": "Protégez vos réservations contre les absences",
        "body": "Vous pouvez demander une carte de garantie ou un acompte, suivre chaque opération dans la réservation et retrouver toutes les absences depuis vos réglages.",
        "cta": "Configurer les garanties"
      },
      "nouveautes-plus-claires": {
        "title": "Suivez plus facilement les nouveautés Suzzy",
        "body": "Découvrez chaque nouveauté une par une, sans perdre le fil. Retrouvez à tout moment les précédentes dans l’historique."
      },
      "notifications-mobiles-fiables": {
        "title": "Vos alertes mobiles sont de nouveau fiables",
        "body": "Les notifications push se réactivent correctement sur votre téléphone. Choisissez maintenant, pour chaque événement, celles que vous souhaitez recevoir.",
        "cta": "Gérer mes notifications"
      },
      "changelog-floating-stack": {
        "title": "Les nouveautés se suivent dans une pile flottante",
        "body": "Fermez une carte pour passer à la suivante, puis ouvrez l'historique complet quand vous voulez."
      },
      "changelog-redesign-signal-service": {
        "title": "Les nouveautés Suzzy se voient en un coup d’œil",
        "body": "Chaque amélioration est maintenant présentée avec un visuel, son bénéfice et l’accès direct à la fonctionnalité. Retrouvez toutes les nouveautés depuis le bouton dédié."
      },
      "scan-qr-iphone-camera": {
        "title": "Le scan iPhone utilise la caméra arrière",
        "body": "Sur iPhone, le QR code est maintenant scanné directement avec la caméra arrière, sans déformation de l'image."
      },
      "scan-qr-plus-fiable": {
        "title": "Le scan des QR codes est plus fiable",
        "body": "Cadrez le QR code du téléphone du client, augmentez sa luminosité et gardez-le stable pour le reconnaître plus facilement."
      },
      "reponses-clients-bonne-adresse": {
        "title": "Vos réponses clients arrivent au bon endroit",
        "body": "Les réponses à vos e-mails arrivent maintenant à l'adresse du restaurant configurée dans Suzzy, même lorsque plusieurs destinataires sont présents."
      },
      "creation-reservation-sans-coordonnees": {
        "title": "Créez une réservation en quelques secondes",
        "body": "Le nom et un email ou un numéro de téléphone suffisent pour l'enregistrer ; ajoutez la date et l'heure plus tard si besoin."
      },
      "recherche-action-rapide-reservation": {
        "title": "Vous pouvez réserver depuis la recherche",
        "body": "Recherchez un client, consultez son historique et créez une réservation en un clic."
      },
      "overlays-palette-coherente": {
        "title": "Vos fenêtres restent lisibles",
        "body": "Les panneaux et fenêtres de l'arrière-plan gardent une hiérarchie claire, en mode clair comme en mode sombre."
      },
      "backoffice-confort-mobile": {
        "title": "Le back-office est plus confortable sur téléphone",
        "body": "Les calendriers restent lisibles et les actions importantes restent accessibles, en clair comme en sombre."
      },
      "commandes-produits-conserves": {
        "title": "Vos commandes gardent leurs produits",
        "body": "La suppression ou la modification d'un produit dans votre menu ne bloque plus vos commandes en cours. Elles conservent les informations enregistrées au moment du paiement."
      },
      "suivi-traitements-en-cours": {
        "title": "Vous voyez l'avancement de ce que Suzzy prépare",
        "body": "Un envoi de messages, une liste à télécharger, une traduction de carte : une pastille en bas de l'écran montre où ça en est. Vous pouvez continuer à travailler pendant ce temps."
      },
      "signature-menu-redesign": {
        "title": "Vos plats signatures se repèrent en un coup d’œil",
        "body": "Marquez n’importe quel plat comme signature, puis choisissez un visuel professionnel ou ajoutez le vôtre. Affichez-les avec le libellé qui vous ressemble.",
        "cta": "Gérer mes signatures"
      },
      "commandes-quatre-vues": {
        "title": "Vos commandes, présentées comme vous voulez",
        "body": "Colonnes, liste, créneaux ou écran de cuisine : choisissez l'affichage qui vous va et Suzzy s'en souvient. Le prix, le temps d'attente et les options des plats apparaissent maintenant sans ouvrir la commande.",
        "cta": "Voir mes commandes"
      },
      "campagne-recompense-offerte": {
        "title": "Offrez une récompense dans vos campagnes",
        "body": "Ajoutez un cadeau à une campagne SMS ou email : chaque client reçoit un lien personnel avec son code à présenter au comptoir. La page de la campagne montre alors combien de personnes ont ouvert leur coupon et combien sont réellement venues."
      },
      "widgets-bouton-bas-visible": {
        "title": "Le bouton de vos widgets reste visible",
        "body": "Sur votre site, « Réserver » et « Commander » ne sont plus coupés en bas du widget. Vos clients atteignent le bouton sans faire défiler la page.",
        "cta": "Voir mes widgets"
      },
      "tableau-bord-pourcentage-complet": {
        "title": "Vos chiffres du tableau de bord s'affichent en entier",
        "body": "Le pourcentage d'évolution n'est plus coupé sur téléphone. Vous voyez tout de suite si votre chiffre d'affaires monte ou descend."
      },
      "avis-google-centre-actions": {
        "title": "Vos avis Google vous disent quoi faire",
        "body": "Suzzy regroupe ce que vos clients demandent le plus et vous propose la réponse. Vous relisez, vous validez.",
        "cta": "Voir mes avis"
      },
      "avis-google-note-declenchement": {
        "title": "Vous choisissez qui laisse un avis Google",
        "body": "Réglez la note à partir de laquelle un client est invité à vous noter sur Google."
      },
      "fidelite-carte-wallet": {
        "title": "La carte de fidélité dans le téléphone du client",
        "body": "Vos clients ajoutent leur carte au wallet de leur téléphone. Plus de carte papier oubliée à la maison.",
        "cta": "Voir ma fidélité"
      },
      "fidelite-scan-tous-codes": {
        "title": "Le scan des cartes accepte tous les codes",
        "body": "Les anciennes cartes comme les nouvelles sont reconnues du premier coup."
      },
      "page-recompenses": {
        "title": "Toutes vos récompenses au même endroit",
        "body": "La page « Récompenses » réunit les lots gagnés à la roue et les offres envoyées par campagne. Filtrez par origine pour retrouver une récompense en deux secondes.",
        "cta": "Voir mes récompenses"
      },
      "campagne-suivi-destinataires": {
        "title": "Vous savez qui a reçu votre campagne",
        "body": "Sur chaque campagne envoyée, la liste des personnes indique qui a reçu le message, qui l'a ouvert et qui a récupéré sa récompense. Vous pouvez la remettre directement depuis le tableau."
      },
      "detail-frais-encaissements": {
        "title": "Vous voyez enfin où part chaque euro",
        "body": "Un seul historique pour tout ce qui bouge sur votre compte : encaissements, remboursements, frais retenus, paiements repris par la banque d'un client. Cliquez une ligne pour voir la carte et le détail.",
        "cta": "Voir mes transactions"
      },
      "reservations-google-actives-pendant-essai": {
        "title": "Vos réservations Google restent actives pendant l'essai",
        "body": "Un essai Réservations valide maintient maintenant vos disponibilités actives sur Google."
      },
      "service-a-table": {
        "title": "Pilotez le service depuis votre plan de salle",
        "body": "Sélectionnez une table pour voir son service, son historique et ses réglages, sur ordinateur comme sur téléphone.",
        "cta": "Voir le service à table"
      },
      "encaissement-au-comptoir": {
        "title": "Vous notez ce que vous encaissez",
        "body": "Un bouton « Encaisser » sur vos commandes. La commande passe en payée, avec l'heure et le nom de la personne qui a encaissé. Un clic de trop se défait aussitôt.",
        "cta": "Voir mes commandes"
      },
      "plan-de-salle-lisible": {
        "title": "Le nom de vos tables reste lisible",
        "body": "Les réservations ne recouvrent plus le nom des tables sur le plan de salle, et tous les noms s'affichent à la même taille. Quand une table a beaucoup de réservations, la liste défile à l'intérieur de la table au lieu de déborder.",
        "cta": "Voir le plan"
      },
      "service-a-table-detail": {
        "title": "Le détail complet de vos tables",
        "body": "Le panneau du service à table affiche désormais toute la commande : chaque article avec le prénom de qui l'a commandé, ses options et sa note. Vous pouvez l'afficher par tour, par personne ou en total, imprimer ce que vous voyez, supprimer un article, transférer une table ou en fusionner deux.",
        "cta": "Ouvrir le service à table"
      },
      "plan-de-salle-prochaine-arrivee": {
        "body": "Le plan de salle annonce la prochaine réservation attendue et dans combien de temps. Un clic sur le bandeau ouvre le détail du client.",
        "cta": "Voir le plan de salle",
        "title": "Vous voyez qui arrive sur chaque table"
      },
      "reservation-sur-table-libre": {
        "body": "Sur une table libre, choisissez la réservation qui va s'y asseoir : le service ne démarre qu'à la première commande. Vos clients voient leur nom en scannant le QR.",
        "cta": "Ouvrir le service à table",
        "title": "Placez une réservation avant l'arrivée"
      },
      "carte-en-ligne-plus-claire": {
        "title": "Votre carte en ligne met votre restaurant en avant",
        "body": "Vos clients retrouvent votre bannière, votre note et vos horaires en haut de la carte, et filtrent vos plats signature ou vos nouveautés d'un geste. Les grandes cartes s'affichent aussi plus vite sur téléphone."
      },
      "selections-de-menu": {
        "title": "Composez vos propres mises en avant",
        "body": "Créez autant de listes que vous voulez — « Les incontournables », « Menu du midi » — rangez-y vos produits dans l'ordre de votre choix, et vos clients les retrouvent en tête de votre carte. Vos anciens plats signatures sont devenus votre première liste.",
        "cta": "Composer mes sélections"
      },
      "commande-a-table-refondue": {
        "title": "Vos clients commandent à table comme en clic & collecte",
        "body": "La page ouverte par le QR code d'une table reprend exactement la carte du clic & collecte : mêmes onglets, mêmes fiches produit, ajout au panier d'un seul geste. Le panier reste partagé entre convives, et le nom de chacun apparaît sur les commandes déjà envoyées."
      },
      "historique-service-a-table": {
        "title": "Retrouvez tous vos services à table",
        "body": "L'historique du service à table se parcourt maintenant mois par mois, ou sur la période de votre choix. Vous pouvez filtrer par table, mettre de côté les services annulés, chercher un service et tout exporter.",
        "cta": "Voir l'historique"
      },
      "lien-de-commande-des-tables": {
        "title": "Le lien de commande de chaque table",
        "body": "Le lien que vos clients ouvrent en scannant le QR code s'affiche maintenant dans les réglages de la table, prêt à copier. Pratique pour l'envoyer par message.",
        "cta": "Voir mes tables"
      },
      "zoom-du-plan-de-salle": {
        "title": "Le plan de salle ne saute plus quand vous faites défiler",
        "body": "Faire défiler déplace maintenant le plan au lieu de zoomer. Pour zoomer, maintenez Ctrl (ou Cmd sur Mac) en tournant la molette.",
        "cta": "Voir mes tables"
      },
      "impression-des-qr-codes": {
        "title": "Vos liens à partager s'impriment",
        "body": "Le QR code d'un lien peut maintenant s'imprimer directement, sans passer par un téléchargement. Le bouton est dans la fenêtre du QR code.",
        "cta": "Voir mes liens"
      },
      "recompenses-creation-modification": {
        "title": "Créez et modifiez vos récompenses",
        "body": "Vous pouvez créer des remises, des produits offerts et des lots directement dans votre catalogue de récompenses. Précisez leurs conditions, que votre équipe vérifie au comptoir.",
        "cta": "Gérer mes récompenses"
      },
      "recompenses-debut-validite": {
        "title": "Choisissez quand vos récompenses deviennent utilisables",
        "body": "Dans le catalogue, choisissez une utilisation immédiate, le lendemain ou après plusieurs jours. Si vous remettez un bon avant cette date, une alerte vous demande confirmation.",
        "cta": "Régler mes récompenses"
      },
      "panier-commandes-mobile": {
        "title": "Gardez votre panier sous la main",
        "body": "Sur mobile, ouvrez le panier en plein écran pour ajuster les quantités, ajouter une note cuisine ou retirer un produit. Créez aussi les commandes livrées par votre restaurant, avec les frais calculés.",
        "cta": "Prendre une commande"
      },
      "avis-google-origine-reponses": {
        "title": "Vos réponses aux avis indiquent qui les a écrites",
        "body": "Chaque réponse montre si elle vient de l’IA, de Suzzy ou directement de Google. L’analyse de vos avis s’affiche plus vite et ne garde que ce qui compte.",
        "cta": "Voir mes avis"
      },
      "reservations-placements-configurables": {
        "title": "Choisissez comment placer vos réservations",
        "body": "Activez l’attribution des tables et leurs combinaisons depuis les paramètres, selon votre façon de travailler. Créer un plan de salle ne change jamais vos règles de réservation à lui seul.",
        "cta": "Choisir mes réglages"
      },
      "plan-de-salle-visible-avec-la-fiche": {
        "title": "Le plan de salle reste affiché quand vous ouvrez une réservation",
        "body": "Avant, cliquer sur une réservation faisait disparaître le plan. Il reste maintenant à côté de la fiche, pour voir d'un coup d'œil où la table se trouve.",
        "cta": "Voir mes réservations"
      },
      "plan-de-salle-plus-grand": {
        "title": "Vos grandes salles tiennent sur le plan",
        "body": "Vous pouvez maintenant agrandir une salle deux fois plus qu'avant. Une grande terrasse se dessine à sa vraie échelle, sans avoir à serrer les tables les unes contre les autres.",
        "cta": "Ouvrir mon plan de salle"
      },
      "plusieurs-salles": {
        "title": "Une salle par espace de votre restaurant",
        "body": "Vous pouvez maintenant décrire séparément votre salle, votre terrasse et votre étage, chacun avec son propre plan et ses propres services. Vous basculez de l'une à l'autre d'un clic pendant le service.",
        "cta": "Configurer mes salles"
      },
      "sms-prochaine-facture": {
        "title": "Suivez vos SMS facturés et votre prochaine facture",
        "body": "Dans Historique SMS, retrouvez le montant de votre prochaine facture, la liste des SMS facturés sur la période et, pour chaque envoi, s'il a été payé par un crédit prépayé ou facturé 0,20 € HT. Nos CGV passent en version 1.2 pour décrire cette facturation à l'usage : vous serez invité à les accepter à votre prochaine connexion.",
        "cta": "Voir ma prochaine facture"
      },
      "reservations-timeline-tables": {
        "title": "Voyez d’un coup d’œil les tables encore libres pendant le service",
        "body": "Sur le plan de salle, le bouton « Timeline » range vos réservations table par table, heure par heure, avec le nombre de couverts à chaque créneau. Les places que vous pouvez encore vendre apparaissent en vert.",
        "cta": "Voir la timeline"
      },
      "plan-de-salle-installer-clients": {
        "title": "Installez vos clients sans réservation en deux clics",
        "body": "Sur le plan de salle, touchez une table puis « Installer des clients » : elle est occupée tout de suite. Quand des clients partent plus tôt, la table se libère à l'heure réelle.",
        "cta": "Ouvrir le plan de salle"
      },
      "journal-activite": {
        "title": "Voyez qui a fait quoi dans votre établissement",
        "body": "Chaque modification de votre équipe est notée avec son heure et son auteur, avec l'avant et l'après pour les réservations. Filtrez par action, par personne ou par jour depuis les Réglages.",
        "cta": "Ouvrir le journal"
      },
      "experiences-recurrentes": {
        "title": "Programmez vos expériences récurrentes",
        "body": "Choisissez un service et un rythme hebdomadaire ou mensuel pour vos menus spéciaux. Ils restent visibles dans votre carte, avec les prochaines dates proposées à la réservation.",
        "cta": "Configurer mes expériences"
      }
    },
    "dismiss": "Masquer"
  },
  "poste-accueil": {
    "title": "Poste d'accueil",
    "scan": {
      "title": "Scanner un client",
      "subtitle": "Ouvrir la camera ou saisie manuelle",
      "label": "Ouvrir le scanner"
    },
    "kpis": {
      "reservations": "Reservations",
      "covers": "Couverts",
      "scans": "Scans",
      "orders": "Commandes",
      "error": "Erreur de chargement"
    },
    "timeline": {
      "title": "Prochain service",
      "guests": "pers.",
      "empty": "Aucune reservation aujourd'hui",
      "see-all": "Voir les {count} reservations",
      "error": "Erreur de chargement des reservations"
    },
    "reviews": {
      "title": "Derniers avis",
      "empty": "Aucun avis recent",
      "error": "Erreur de chargement des avis"
    },
    "orders": {
      "title": "Commandes en cours",
      "empty": "Aucune commande en cours",
      "see-all": "Voir les {count} commandes",
      "error": "Erreur de chargement des commandes"
    }
  },
  "table-service": {
    "navigation-title": "Sur place",
    "orders-title": "Service à table",
    "history-title": "Historique du service à table",
    "history": {
      "previous-period": "Période précédente",
      "next-period": "Période suivante",
      "reset-to-month": "Revenir au mois",
      "all-periods": "Toutes périodes",
      "period": "Période",
      "select-date": "Sélectionner une date",
      "filter-table": "Table",
      "all-tables": "Toutes les tables",
      "search-placeholder": "Rechercher une table, un nom, un numéro",
      "count": "{count, plural, =0 {Aucun service} one {# service} other {# services}}",
      "empty": "Aucun service sur cette période.",
      "error": "Impossible de charger l'historique du service à table.",
      "columns": {
        "table": "Table",
        "opened-at": "Ouverture",
        "guest-count": "Couverts",
        "total": "Total",
        "state": "État"
      },
      "export": {
        "button": "Exporter",
        "toast": {
          "success": "{count} service(s) exporté(s)",
          "no-orders": "Aucun service à exporter sur cette période",
          "error": "Impossible d'exporter les services",
          "max-pages": "Export limité à {maxPages} pages. Contactez le support pour plus de données.",
          "max-orders": "Export limité à {maxOrders} services maximum."
        },
        "columns": {
          "index": "#",
          "number": "Numéro",
          "created-at": "Date",
          "opened-at": "Ouverture",
          "table": "Table",
          "email": "Email",
          "phone": "Téléphone",
          "status": "Statut",
          "total": "Total (€)",
          "items": "Articles"
        }
      }
    },
    "settings-title": "Paramètres du service à table",
    "feature": {
      "title": "Service à table",
      "description": "Permettre aux clients de commander grâce au QR de leur table."
    },
    "fields": {
      "name": "Nom de la table"
    },
    "actions": {
      "cancel": "Annuler",
      "save": "Enregistrer",
      "rename": "Renommer",
      "delete": "Supprimer"
    },
    "delete": {
      "title": "Supprimer cette table ?",
      "description": "Cette action retire la table du service à table.",
      "active-session-warning": "Une table avec une session active ne peut pas être supprimée."
    },
    "errors": {
      "update": "Impossible de modifier la table.",
      "delete-conflict": "Cette table ne peut pas être supprimée tant qu'une session est active."
    },
    "messages": {
      "updated": "Table mise à jour.",
      "deleted": "Table supprimée."
    },
    "workspace": {
      "error": "Impossible de charger le service à table.",
      "empty": "Aucune table dans le plan de salle. Configurez votre plan pour commencer.",
      "select-table": "Sélectionnez une table sur le plan.",
      "inspector-title": "Détail de la table",
      "reset-zoom": "Recentrer le plan",
      "table-aria": "{table}, {seats} places",
      "table-inactive-aria": "{table}, {seats} places, inactive",
      "tabs": {
        "service": "Service",
        "history": "Historique",
        "settings": "Paramètres"
      },
      "service": {
        "empty": "Aucun service en cours pour cette table."
      },
      "history": {
        "counts": "{rounds} tours · {items} art.",
        "empty": "Aucune session passée pour cette table.",
        "see-all": "Voir tout l'historique"
      },
      "settings": {
        "table-title": "Table",
        "active": "Active",
        "inactive": "Inactive",
        "table-active": "Table active",
        "enabled": "Activé",
        "disabled": "Désactivé",
        "open-order-blocks-deactivation": "Fermez la session en cours avant de désactiver cette table.",
        "qr-title": "Commande par QR",
        "qr-link-description": "Le lien que vos clients ouvrent en scannant le QR de cette table.",
        "layout-label": "Forme, capacité, position",
        "layout-action": "Ouvrir le plan de salle",
        "inactive-disables-scans": "Une table inactive refuse les nouveaux scans, même si son QR reste configuré.",
        "danger-zone": "Zone sensible",
        "open-order-blocks-deletion": "Fermez la session en cours avant de supprimer cette table."
      },
      "meta": {
        "capacity": "Capacité",
        "duration": "Durée",
        "guests": "Couverts",
        "opened-at": "Ouverte",
        "past-sessions": "Sessions passées"
      },
      "state": {
        "active": "Occupée",
        "bill-requested": "Addition demandée",
        "free": "Libre",
        "inactive": "Inactive"
      }
    },
    "settings": {
      "title": "Nombre de couverts",
      "description": "Ce qui est demandé à l'ouverture d'une table.",
      "ask-guest-count": "Demander le nombre de couverts"
    },
    "floor-plan": {
      "arrival": {
        "aria": "Prochaine arrivée : {name} à {time}",
        "in": "dans {minutes} min",
        "open": "Ouvrir la réservation",
        "overdue": "retard {minutes} min"
      },
      "duration-hours": "{hours} h {minutes}",
      "duration-minutes": "{minutes} min",
      "conflicts": "{count, plural, one {# table en conflit} other {# tables en conflit}}"
    },
    "views": {
      "plan": "Plan",
      "tickets": "Tickets",
      "toggle-label": "Basculer entre plan et tickets"
    },
    "tickets": {
      "empty": "Aucun ticket en cours",
      "last-round": "Dernier envoi à {time}",
      "bill-wait": "{minutes, plural, =0 {Addition demandée à l'instant} one {Addition demandée il y a # min} other {Addition demandée il y a # min}}",
      "reservation": "Réservation de {name} à {time}",
      "guest-count": "{count, plural, =1 {# couvert} other {# couverts}}",
      "contributors": "{count, plural, =1 {# contributeur} other {# contributeurs}}"
    },
    "stats": {
      "aria": "{open} tables ouvertes sur {total}, {revenue} de recettes, {bills} additions en attente"
    }
  },
  "errors": {
    "orders": {
      "already-paid": "Cette commande est déjà encaissée.",
      "cancel-payment-failed": "L'annulation de l'encaissement a échoué.",
      "collect-failed": "L'encaissement a échoué.",
      "fetch-failed": "Impossible de charger la commande.",
      "invalid-guest-count": "Nombre de couverts invalide.",
      "invalid-paid-amount": "Montant encaissé invalide.",
      "update-failed": "La mise à jour a échoué."
    }
  },
  "redemptions": {
    "grant": {
      "open": "Offrir une récompense",
      "title": "Offrir une récompense",
      "subtitle": "Le coupon apparaît aussitôt dans la fiche du client, prêt à être remis.",
      "reward": "Récompense",
      "reason": "Motif",
      "note": "Précision (optionnel)",
      "submit": "Offrir maintenant",
      "success": "Récompense offerte",
      "error": "Impossible d'offrir la récompense",
      "errors": {
        "reward-required": "Choisissez une récompense",
        "note-too-long": "La précision est trop longue"
      },
      "pending": "Octroi en cours…"
    },
    "grant-reason": {
      "waiting-time": "Attente",
      "order-error": "Erreur de commande",
      "goodwill": "Geste commercial",
      "other": "Autre"
    }
  },
  "merchant-orders": {
    "new-takeaway": "Nouvelle commande à emporter",
    "first-name": "Prénom",
    "timing": "Quand préparer la commande ?",
    "immediate": "Immédiate",
    "planned": "Planifiée",
    "date": "Date",
    "time": "Heure",
    "future-time-required": "Choisissez une date et une heure futures.",
    "loading": "Chargement…",
    "no-permission": "Vous ne pouvez pas créer de commande.",
    "create-error": "Impossible de créer la commande.",
    "created": "Commande créée",
    "retry-pending": "Une création reste à confirmer. Réessayez pour retrouver cette commande avant de la modifier.",
    "new-order": "Nouvelle commande",
    "channel": "Mode de commande",
    "takeaway": "À emporter",
    "delivery": "Livraison",
    "phone-required": "Téléphone *",
    "phone-optional": "Téléphone (facultatif)",
    "restaurant-delivery": "Livraison assurée par le restaurant.",
    "address": "Adresse de livraison *",
    "address-complement": "Complément et instructions de livraison",
    "address-complement-placeholder": "Bâtiment, étage, code, consignes…",
    "quote-error": "Impossible de calculer les frais. Vérifiez l’adresse et le créneau, puis réessayez.",
    "out-of-zone": "Cette adresse est hors de la zone de livraison.",
    "below-minimum": "Le minimum de commande pour la livraison n’est pas atteint.",
    "delivery-closed": "La livraison est fermée à cette heure. Choisissez un autre créneau."
  },
  "admin-tables": {
    "open-details": "Voir les détails",
    "completed": "{count} action(s) effectuée(s).",
    "failed": "{count} échec(s). Seules les opérations en échec seront réessayées."
  },
  "admin-consumers": {
    "title": "Comptes clients",
    "name": "Nom",
    "email": "Email",
    "phone": "Téléphone",
    "created": "Inscription",
    "updated": "Dernière modification",
    "verified": "Email vérifié le",
    "reservations": "Réservations",
    "orders": "Commandes",
    "details": "Détails du compte",
    "count": "{count} comptes",
    "search": "Rechercher par nom, email ou téléphone…",
    "empty": "Aucun compte client trouvé.",
    "from": "Du",
    "to": "Au",
    "dates-utc": "Dates d’inscription en UTC, journées incluses.",
    "all": "Tous",
    "with-activity": "Avec une activité",
    "without-activity": "Sans activité",
    "sort": "Ordre d’inscription",
    "newest": "Plus récents en premier",
    "oldest": "Plus anciens en premier",
    "back": "Comptes clients",
    "active": "Compte actif",
    "not-found": "Ce compte est introuvable.",
    "admin-only": "Accès réservé aux administrateurs de la plateforme.",
    "reference": "Référence",
    "shop": "Établissement",
    "date": "Date",
    "guests": "Couverts",
    "status": "Statut",
    "confirmation": "Confirmation",
    "type": "Type",
    "payment": "Paiement",
    "total": "Total",
    "items": "{count} articles",
    "paid": "Payé",
    "refunded": "Remboursé",
    "no-reservations": "Aucune réservation.",
    "no-orders": "Aucune commande.",
    "erasure-title": "Demandes d’effacement",
    "erasure-pending": "En cours",
    "erasure-review": "Vérification requise",
    "erasure-requested": "Demandée le",
    "erasure-due": "Échéance de réponse",
    "erasure-processed": "Traitement interne",
    "erasure-next": "Prochaine vérification",
    "erasure-reason": "Motif de conservation",
    "erasure-empty": "Aucune demande d’effacement.",
    "account-id": "Identifiant du compte",
    "erasure-description": "Suivi opérationnel en lecture seule, par échéance de réponse. Le traitement interne ne confirme pas l’effacement des données conservées ou des copies externes.",
    "shop-search": "Rechercher un établissement…",
    "clear-shop": "Retirer le filtre établissement",
    "confirmation-pending": "En attente",
    "confirmation-reminder": "Rappel envoyé",
    "confirmation-reconfirmed": "Reconfirmée",
    "confirmation-declined": "Déclinée"
  },
  "consent": {
    "title": "Vos conditions Suzzy",
    "description": "Consultez ces trois documents, puis acceptez-les pour continuer.",
    "submit": "Accepter et continuer",
    "accept-label": "J'ai lu et j'accepte les <cgv>Conditions Générales de Vente</cgv> et l''<dpa>Accord de sous-traitance (DPA)</dpa> de Suzzy, et j'ai pris connaissance de la <privacy>Politique de confidentialité</privacy>.",
    "history": {
      "error": "Impossible de charger les acceptations",
      "empty": "Aucune acceptation enregistrée",
      "current": "À jour",
      "outdated": "Ancienne version",
      "download": "Attestation PDF",
      "accepted-on": "Acceptées le {date}",
      "meta": "Version {version} · IP {ip}"
    },
    "documents": {
      "cgv": {
        "title": "Conditions Générales de Vente",
        "description": "Abonnement, facturation, durée et résiliation"
      },
      "dpa": {
        "title": "Accord de sous-traitance (DPA)",
        "description": "Protection des données de vos clients"
      },
      "privacy": {
        "title": "Politique de confidentialité",
        "description": "Comment Suzzy traite vos données"
      }
    },
    "attestation-note": "Une attestation PDF reste disponible dans Compte, rubrique Mes acceptations."
  },
  "subscription-gate": {
    "title": "Activez votre abonnement",
    "benefit-trial": "Essai gratuit, rien n'est prélevé avant la fin",
    "benefit-sepa": "Prélèvement SEPA ou carte bancaire",
    "benefit-cancel": "Sans engagement, résiliable à tout moment",
    "submit": "Démarrer l'essai gratuit",
    "error": "Impossible de charger les offres. Veuillez réessayer.",
    "description-shop": "Dernière étape pour ouvrir {shopName}.",
    "other-shops": "Autres restaurants",
    "restricted-title": "Abonnement à activer",
    "restricted-description": "{shopName} n'a pas d'abonnement actif. Seul un administrateur du restaurant peut l'activer.",
    "activating-title": "Paiement reçu 🎉",
    "activating-description": "Activation en cours, quelques secondes.",
    "activating-slow": "Plus long que prévu. Votre paiement est bien enregistré.",
    "activating-refresh": "Actualiser"
  },
  "mobile-apps": {
    "title": "Applications Suzzy Pro",
    "description": "Installez Suzzy Pro sur vos téléphones et tablettes pour recevoir les commandes, les notifications et imprimer vos tickets.",
    "ios": {
      "title": "iPhone et iPad",
      "description": "Sur l’App Store.",
      "action": "Ouvrir l’App Store"
    },
    "google-play": {
      "title": "Android",
      "description": "Sur Google Play, avec les mises à jour automatiques.",
      "action": "Ouvrir Google Play"
    },
    "apk": {
      "title": "Android (fichier APK)",
      "description": "Version {version}, à installer directement sur un appareil sans Google Play. Autorisez l'installation depuis votre navigateur si Android le demande.",
      "action": "Télécharger l'APK"
    },
    "public-link": {
      "title": "Page de téléchargement publique",
      "description": "Le lien à envoyer à votre équipe : une page sans connexion avec l'App Store, Google Play et l'APK Android.",
      "action": "Ouvrir la page"
    }
  },
  "printer-guide": {
    "open": "Guide des imprimantes",
    "title": "Guide des imprimantes",
    "intro": "Tout pour installer une imprimante de tickets avec Suzzy Pro : choisir le branchement, l'ajouter, lui confier les bons tickets et régler les problèmes courants.",
    "contents": "Sommaire",
    "choose": {
      "title": "Choisir le branchement",
      "intro": "Suzzy Pro imprime sur les imprimantes thermiques de tickets (80 ou 58 mm) compatibles ESC/POS, soit la grande majorité du marché.",
      "steps": {
        "1": "Bluetooth : le plus simple pour un seul téléphone ou une seule tablette. L'imprimante ne se connecte qu'à un appareil à la fois.",
        "2": "Réseau (câble Ethernet ou Wi‑Fi) : idéal en cuisine ou avec plusieurs appareils. Tous les téléphones et tablettes du même Wi‑Fi peuvent l'utiliser.",
        "3": "Ordinateur : l'imprimante s'installe dans Windows ou macOS (USB ou réseau) et le back-office imprime par la fenêtre d'impression du navigateur."
      }
    },
    "bluetooth": {
      "title": "Ajouter une imprimante Bluetooth",
      "intro": "Dans l'app Suzzy Pro sur iPhone, iPad ou Android. Inutile de l'appairer dans les réglages du téléphone.",
      "steps": {
        "1": "Allumez l'imprimante, mettez du papier et gardez-la à quelques mètres du téléphone.",
        "2": "Si elle est connectée à un autre appareil, déconnectez-la : elle n'accepte qu'une connexion à la fois.",
        "3": "Dans Suzzy Pro, ouvrez Click & Collect > Paramètres > Impression, puis « Ajouter une imprimante ».",
        "4": "Autorisez le Bluetooth quand le téléphone le demande. Si vous l'avez refusé, le guide affiché pendant la recherche ouvre les bons réglages.",
        "5": "Touchez votre imprimante dans la section Bluetooth : un ticket de test sort et l'imprimante est enregistrée. Elle n'apparaît pas ? Touchez « Afficher tous les appareils Bluetooth »."
      }
    },
    "network": {
      "title": "Ajouter une imprimante réseau (Ethernet ou Wi‑Fi)",
      "intro": "L'imprimante et le téléphone doivent être sur le même réseau : même box, même Wi‑Fi.",
      "steps": {
        "1": "Branchez l'imprimante à votre box avec un câble Ethernet (ou configurez son Wi‑Fi avec l'outil du fabricant), puis allumez-la.",
        "2": "Imprimez son ticket d'autotest pour connaître son adresse IP : sur la plupart des modèles, maintenez le bouton FEED en allumant l'imprimante.",
        "3": "Connectez le téléphone ou la tablette au Wi‑Fi de cette même box, ni au Wi‑Fi invité ni en 4G.",
        "4": "Dans Suzzy Pro, ouvrez Click & Collect > Paramètres > Impression, puis « Ajouter une imprimante ». Sur iPhone, autorisez « Réseau local ».",
        "5": "La section Réseau Wi‑Fi cherche automatiquement pendant une dizaine de secondes : touchez l'adresse de votre imprimante quand elle apparaît.",
        "6": "Elle n'apparaît pas ? Saisissez l'adresse lue sur le ticket d'autotest (par exemple 192.168.1.48) et touchez « Ajouter ».",
        "7": "Fixez son adresse pour qu'elle ne change plus : dans votre box, réservez cette adresse pour l'imprimante (bail DHCP statique, lié à son adresse MAC)."
      }
    },
    "tickets": {
      "title": "Choisir les tickets de chaque imprimante",
      "intro": "Chaque imprimante imprime les tickets de caisse, les tickets de cuisine, ou les deux.",
      "steps": {
        "1": "Cochez « Tickets de caisse » ou « Tickets de cuisine » sous chaque imprimante enregistrée.",
        "2": "Activez l'impression automatique pour imprimer dès qu'une commande passe en préparation, et réglez le nombre d'exemplaires.",
        "3": "Le badge de chaque imprimante indique son état (Connectée, Connexion…, Déconnectée ou Injoignable) et l'heure de la dernière tentative.",
        "4": "Chaque ticket se connecte à l'imprimante au moment d'imprimer : pas de connexion permanente ni de tentatives en arrière-plan. « Vérifier » teste la connexion, « Imprimer un test » vérifie la sortie papier."
      }
    },
    "computer": {
      "title": "Imprimer depuis un ordinateur",
      "intro": "Un navigateur ne peut pas chercher d'imprimantes sur le réseau : l'ordinateur installe l'imprimante, puis le back-office imprime par la fenêtre d'impression.",
      "steps": {
        "1": "Installez l'imprimante dans Windows (Paramètres > Imprimantes et scanners) ou macOS (Réglages Système > Imprimantes et scanners), en USB ou avec son adresse IP, avec le pilote du fabricant.",
        "2": "Définissez-la comme imprimante par défaut et choisissez le papier 80 mm (ou 58 mm).",
        "3": "Dans le back-office, les boutons d'impression ouvrent la fenêtre d'impression du navigateur : choisissez l'imprimante et validez.",
        "4": "Pour imprimer sans fenêtre sur un poste dédié, lancez Chrome avec l'option --kiosk-printing : les tickets partent directement sur l'imprimante par défaut.",
        "5": "Les imprimantes Bluetooth et réseau ajoutées dans l'app Suzzy Pro restent propres à chaque téléphone ou tablette ; sur ordinateur, c'est le système qui gère l'imprimante."
      }
    },
    "how": {
      "title": "Comment ça marche",
      "intro": "Ce que fait Suzzy Pro quand il cherche et utilise une imprimante.",
      "steps": {
        "1": "Bluetooth : l'app écoute les appareils Bluetooth proches pendant 10 secondes et garde ceux qui ressemblent à une imprimante.",
        "2": "Réseau : l'app écoute les imprimantes qui s'annoncent sur le Wi‑Fi (Bonjour) et teste le port d'impression 9100 de chaque adresse du réseau local. Beaucoup d'imprimantes ne s'annoncent pas : ce test les trouve quand même.",
        "3": "Les tickets partent en ESC/POS, le langage des imprimantes thermiques, directement du téléphone à l'imprimante, sans passer par nos serveurs.",
        "4": "Les imprimantes sont enregistrées sur chaque appareil : un nouveau téléphone ou une nouvelle tablette ajoute les siennes."
      }
    },
    "troubleshooting": {
      "title": "Résoudre un problème",
      "items": {
        "no-network-printer": {
          "question": "Mon imprimante réseau n'apparaît pas dans la recherche",
          "answer": "Vérifiez que le téléphone est sur le même Wi‑Fi que l'imprimante (pas le Wi‑Fi invité), que « Réseau local » est autorisé pour Suzzy Pro sur iPhone et que l'imprimante est allumée. Sinon, saisissez l'adresse IP de son ticket d'autotest."
        },
        "no-bluetooth-printer": {
          "question": "Mon imprimante Bluetooth n'apparaît pas",
          "answer": "Déconnectez-la de tout autre appareil, rapprochez-vous, redémarrez-la puis relancez la recherche. Touchez « Afficher tous les appareils Bluetooth » si son nom est inhabituel."
        },
        "unreachable": {
          "question": "L'imprimante est marquée « Injoignable »",
          "answer": "Vérifiez qu'elle est allumée, qu'il reste du papier et que le capot est fermé, puis touchez « Vérifier ». Pour une imprimante réseau, vérifiez aussi que son adresse n'a pas changé."
        },
        "address-changed": {
          "question": "Mon imprimante réseau marchait puis ne répond plus",
          "answer": "Votre box lui a sans doute donné une nouvelle adresse. Imprimez le ticket d'autotest, retirez l'imprimante dans Suzzy Pro, ajoutez-la avec la nouvelle adresse, puis réservez cette adresse dans votre box."
        },
        "nothing-prints": {
          "question": "Le test est envoyé mais rien ne sort",
          "answer": "Vérifiez le papier (face thermique vers la tête d'impression), le capot et les voyants d'erreur. Une imprimante non thermique ou non compatible ESC/POS ne peut pas imprimer les tickets."
        },
        "computer-dialog": {
          "question": "Sur ordinateur, une fenêtre d'impression s'ouvre à chaque ticket",
          "answer": "C'est le fonctionnement normal d'un navigateur. Pour l'éviter sur un poste dédié, lancez Chrome avec l'option --kiosk-printing et une imprimante par défaut."
        }
      }
    }
  },
  "onboarding-gate": {
    "step": "Étape {current} sur {total}",
    "logout": "Se déconnecter"
  },
  "activity-log": {
    "title": "Journal d'activité",
    "error": "Impossible de charger le journal d'activité",
    "load-more-error": "Impossible de charger la suite du journal",
    "empty": "Aucune action pour ces filtres",
    "admin-only": "Le journal d'activité est réservé aux administrateurs de l'établissement",
    "unknown-actor": "Compte supprimé",
    "field-label": "{label} :",
    "changed-to": "devient",
    "more-changes": "{count, plural, one {+# autre modification} other {+# autres modifications}}",
    "filters": {
      "action": "Action",
      "all-actions": "Toutes les actions",
      "person": "Personne",
      "all-people": "Toutes les personnes",
      "day": "Jour",
      "clear-date": "Effacer le jour",
      "search-action": "Rechercher une action",
      "search-person": "Rechercher une personne",
      "no-results": "Aucun résultat",
      "source": "Origine",
      "source-all": "Tous",
      "source-web": "Équipe",
      "source-mcp": "IA"
    },
    "categories": {
      "reservations": "Réservations",
      "reservations-settings": "Réglages des réservations",
      "orders": "Commandes",
      "orders-settings": "Réglages des commandes",
      "menu": "Menu",
      "customers": "Clients et fidélité",
      "loyalty-settings": "Réglages de la fidélité",
      "marketing": "Marketing",
      "marketing-settings": "Réglages du marketing",
      "reviews": "Avis",
      "reviews-settings": "Réglages des avis",
      "team": "Équipe",
      "shop": "Établissement"
    },
    "methods": {
      "create": "Création",
      "update": "Modification",
      "delete": "Suppression"
    },
    "values": {
      "empty": "Non renseigné",
      "yes": "Oui",
      "no": "Non",
      "items": "{count, plural, =0 {Aucun élément} one {# élément} other {# éléments}}"
    },
    "resources": {
      "shop": "Établissement",
      "auto-tagging": "Tags automatiques",
      "automations": "Automatisation",
      "categories": "Catégorie du menu",
      "checkins": "Passage fidélité",
      "customers": "Client",
      "dine-in": "Service à table",
      "disabled-slots": "Créneau fermé",
      "event-menus": "Menu événement",
      "external-reviews": "Avis Google",
      "feature-configs": "Fonctionnalité",
      "game-campaigns": "Jeu",
      "google-places": "Fiche Google",
      "google-posts": "Post Google",
      "invitations": "Invitation",
      "items": "Produit",
      "loyalty": "Fidélité",
      "marketing-campaigns": "Campagne",
      "menu-selections": "Formule",
      "option-groups": "Options",
      "orders": "Commande",
      "platform-connections": "Plateforme de livraison",
      "reservation-day-notes": "Note du jour",
      "reservation-guarantees": "Empreinte bancaire",
      "reservations": "Réservation",
      "restaurant-tables": "Table",
      "reviews": "Avis",
      "rewards": "Récompense",
      "rooms": "Salle",
      "scan": "Scan client",
      "schedules": "Horaires",
      "settings": "Réglages",
      "share-links": "Lien de partage",
      "sms": "SMS",
      "stripe-connect-account": "Compte de paiement",
      "subscriptions": "Abonnement",
      "table-assignments": "Placement",
      "table-availability": "Disponibilité des tables",
      "table-combinations": "Tables combinées",
      "translations": "Traductions",
      "faq": "FAQ",
      "shop-access": "Membre de l'équipe",
      "oauth2": "Compte connecté"
    },
    "operations": {
      "reorder": "Ordre modifié",
      "archive": "Archivage",
      "restore": "Restauration",
      "pause": "Mise en pause",
      "publish": "Publication",
      "test-run": "Test",
      "import": "Import",
      "cancel": "Annulation",
      "close": "Clôture",
      "void": "Article annulé",
      "merge": "Fusion",
      "open": "Ouverture",
      "rounds": "Envoi en cuisine",
      "confirm-customer-match": "Client associé",
      "dismiss": "Ignoré",
      "publish-reply": "Réponse publiée",
      "reply": "Réponse",
      "sync": "Actualisation",
      "bulk-publish": "Réponses publiées en lot",
      "bulk-respond": "Réponses en lot",
      "reanalyze": "Nouvelle analyse",
      "stop": "Arrêt",
      "play-and-claim": "Partie jouée",
      "credit": "Points ajoutés",
      "redeem": "Récompense utilisée",
      "enroll-by-contact": "Inscription d'un client",
      "adjust": "Solde ajusté",
      "reject": "Refus",
      "switch-mode": "Changement de mode",
      "mode": "Changement de mode",
      "collect": "Lot remis",
      "toggle": "Activation ou pause",
      "active": "Activation ou pause",
      "platform-delay": "Retard signalé",
      "platform-unavailable-item": "Article indisponible signalé",
      "publish-menu": "Menu publié",
      "connect": "Connexion",
      "revoke": "Révocation",
      "charge": "Empreinte débitée",
      "refund": "Remboursement",
      "send-confirmation": "Confirmation envoyée",
      "send-message": "Message envoyé",
      "activate": "Activation",
      "bulk-delete": "Suppression en lot",
      "bulk": "Traduction automatique",
      "batch": "Traductions modifiées",
      "apply": "Placement appliqué",
      "auto-assign": "Placement automatique",
      "initiate": "Souscription",
      "confirm": "Confirmation",
      "resume": "Reprise",
      "cancellation-request": "Demande de résiliation",
      "lock": "Tables verrouillées",
      "default": "Moyen de paiement par défaut",
      "validate": "Passage validé"
    },
    "parts": {
      "tables": "Tables",
      "translations": "Traductions",
      "items": "Articles",
      "time-slots": "Créneaux",
      "closures": "Fermetures",
      "services": "Services",
      "vouchers": "Bons de réduction",
      "payment": "Paiement",
      "rewards": "Récompenses",
      "option-groups": "Options",
      "promotions": "Promotions",
      "settings": "Réglages",
      "table": "Table",
      "reservation": "Réservation liée",
      "guest-count": "Nombre de couverts",
      "payment-methods": "Moyen de paiement",
      "payment-method": "Moyen de paiement",
      "time-ranges": "Plages horaires",
      "consent": "Consentement",
      "cards": "Carte de fidélité",
      "program": "Programme",
      "tiers": "Paliers",
      "platform-prices": "Prix des plateformes",
      "sms-cap": "Plafond SMS",
      "exceptional-openings": "Ouverture exceptionnelle",
      "reports": "Rapports",
      "actions": "Actions suggérées"
    },
    "fields": {
      "name": "Nom",
      "status": "Statut",
      "description": "Description",
      "email": "E-mail",
      "phone-number": "Téléphone",
      "note": "Note",
      "internal-note": "Note interne",
      "message": "Message",
      "title": "Titre",
      "content": "Contenu",
      "is-active": "Activé",
      "active": "Activé",
      "enabled": "Activé",
      "is-available": "Disponible",
      "date": "Date",
      "start-time": "Début",
      "end-time": "Fin",
      "start-date": "Début",
      "end-date": "Fin",
      "quantity": "Quantité",
      "price-cents": "Prix",
      "role": "Rôle",
      "comment": "Commentaire",
      "reply": "Réponse",
      "position": "Position",
      "nb-clients": "Couverts",
      "party-size": "Couverts",
      "notes": "Notes",
      "phone": "Téléphone",
      "birth-date": "Date de naissance",
      "marketing-consent": "Consentement marketing",
      "tags": "Tags",
      "address": "Adresse",
      "is-visible": "Visible",
      "price": "Prix"
    },
    "via": "via {client}"
  },
  "ai-connections": {
    "title": "Connexions IA",
    "access": {
      "none": "Aucun",
      "read": "Lecture",
      "write": "Lecture et modification"
    },
    "domains": {
      "shop": "Établissement",
      "reservations": "Réservations",
      "orders": "Commandes",
      "menu": "Carte",
      "customers": "Clients",
      "marketing": "Marketing",
      "reviews": "Avis",
      "team": "Équipe"
    },
    "risk": {
      "title": "Niveaux de risque",
      "levels": {
        "0": "Lecture",
        "1": "Courant",
        "2": "Impactant",
        "3": "Sensible"
      },
      "descriptions": {
        "0": "Consulter des informations, sans rien modifier.",
        "1": "Gestes du service : changer un statut ou une disponibilité.",
        "2": "Créer, changer un prix, répondre publiquement à un avis, modifier un réglage.",
        "3": "Contacter des clients par SMS ou e-mail, supprimer, gérer l'équipe. Demande l'option « Actions sensibles »."
      },
      "forbidden": "Interdit",
      "forbidden-description": "Jamais accessible à une IA, quelles que soient les autorisations."
    },
    "editor": {
      "tools": "{count, plural, =0 {Aucun outil} one {# outil} other {# outils}}",
      "not-allowed": "Votre rôle ne permet pas d'accorder cette autorisation.",
      "sensitive": {
        "title": "Actions sensibles",
        "description": "Envois de SMS et d'e-mails, suppressions et gestion de l'équipe, pour les domaines en modification.",
        "short": "Sensibles"
      },
      "pii": {
        "title": "Coordonnées des clients",
        "description": "Téléphone, e-mail et adresse visibles. Sans cette option, ils sont masqués.",
        "short": "Coordonnées"
      }
    },
    "forbidden": {
      "title": "Jamais accessible à une IA",
      "billing": "Facturation et abonnement",
      "credits": "Achat de crédits SMS",
      "payment-account": "Compte de paiement",
      "shop-deletion": "Suppression de l'établissement",
      "credentials": "Identifiants Google et plateformes",
      "user-account": "Compte et mot de passe",
      "mcp-connections": "Gestion des connexions IA",
      "platform-admin": "Administration Suzzy",
      "customer-deletion": "Suppression de clients",
      "customer-import": "Import de clients en masse",
      "loyalty-mode": "Changement de mode de fidélité"
    },
    "consent": {
      "title": "{client} demande l'accès à Suzzy",
      "description": "Choisissez les établissements, puis ce que cette IA pourra y faire. Chaque action sera inscrite au journal d'activité.",
      "redirect-label": "Retour vers",
      "permissions-title": "Autorisations",
      "manage-hint": "Vous pourrez modifier ou retirer cet accès à tout moment dans Réglages > Connexions IA.",
      "approve": "Autoriser",
      "deny": "Refuser",
      "error": "La réponse n'a pas pu être envoyée. Réessayez.",
      "load-error": "Impossible de charger la demande d'accès.",
      "no-shop": "Votre compte n'a accès à aucun établissement.",
      "back": "Retour au tableau de bord",
      "expired": {
        "title": "Demande expirée",
        "description": "Cette demande d'accès a expiré ou a déjà reçu une réponse. Relancez la connexion depuis votre outil IA."
      },
      "steps": {
        "label": "Étapes de l'autorisation",
        "shops": "Établissements",
        "permissions": "Autorisations"
      },
      "shops": {
        "title": "Établissements concernés",
        "select-all": "Tout sélectionner",
        "unselect-all": "Tout désélectionner"
      },
      "continue": "Continuer",
      "selected-shops": "Établissements sélectionnés",
      "edit-shops": "Modifier",
      "cap": {
        "read-only": "Limité à la lecture pour {shop} (rôle {role})",
        "no-sensitive": "Sans actions sensibles pour {shop} (rôle {role})"
      },
      "permissions-empty": "Choisissez au moins une autorisation."
    },
    "server": {
      "title": "Adresse du serveur",
      "description": "Ajoutez cette adresse dans votre outil IA, puis connectez-vous avec votre compte Suzzy pour choisir l'établissement et les autorisations.",
      "error": "Impossible de charger l'adresse du serveur."
    },
    "guides": {
      "title": "Connecter un outil",
      "step-label": "Étape {current} sur {total}",
      "source": "Voir la documentation officielle",
      "copy-url": "Copier l'adresse",
      "copy-config": "Copier la configuration",
      "copied": "Copié",
      "copy-failed": "La copie n'a pas fonctionné. Sélectionnez le texte et copiez-le à la main.",
      "controls": {
        "play": "Lancer l'animation",
        "pause": "Mettre en pause",
        "replay": "Revoir depuis le début",
        "previous": "Étape précédente",
        "next": "Étape suivante",
        "go-to": "Aller à l'étape {step}"
      },
      "providers": {
        "claude": "Claude",
        "chatgpt": "ChatGPT",
        "mistral": "Vibe (Mistral)",
        "cursor": "Cursor",
        "other": "Autre outil"
      },
      "mock": {
        "connected": "Connecté",
        "consent-title": "{client} demande l'accès",
        "shops-step": "Établissements",
        "permissions-step": "Autorisations",
        "continue": "Continuer",
        "approve": "Autoriser",
        "deny": "Refuser"
      },
      "consent": {
        "shops-caption": "Une page Suzzy s'ouvre. Connectez-vous si besoin, puis cochez le restaurant à relier à {client}.",
        "permissions-caption": "Choisissez ce que {client} pourra faire, puis cliquez sur « Autoriser »."
      },
      "claude": {
        "steps": {
          "settings": "Ouvrez claude.ai dans votre navigateur, puis les réglages : « Settings ».",
          "connectors": "Dans les réglages, cliquez sur « Connectors ».",
          "add": "Cliquez sur « Add custom connector » (ajouter un connecteur).",
          "form": "Écrivez « Suzzy » comme nom, collez l'adresse de Suzzy avec le bouton « Copier l'adresse », puis validez.",
          "connect": "Suzzy apparaît dans la liste. Cliquez sur « Connect ».",
          "enable": "Dans une conversation, ouvrez le menu « Search and tools » et activez Suzzy. C'est prêt !"
        },
        "note": "Offres Pro, Max, Team et Enterprise. En Team et Enterprise, seul un propriétaire (Owner) peut l'ajouter, dans « Organization connectors »."
      },
      "chatgpt": {
        "steps": {
          "settings": "Ouvrez chatgpt.com dans votre navigateur, puis les réglages : « Settings ».",
          "developer-mode": "Dans les réglages, activez « Developer mode » (mode développeur).",
          "create": "Ouvrez « Apps », puis cliquez sur « Create » (créer).",
          "form": "Écrivez « Suzzy » comme nom et collez l'adresse de Suzzy avec le bouton « Copier l'adresse ».",
          "scan": "Choisissez « OAuth » pour la connexion, puis cliquez sur « Scan Tools ».",
          "done": "C'est prêt : Suzzy apparaît dans vos apps ChatGPT."
        },
        "note": "Sur le web uniquement. Les actions de modification sont en bêta pour les offres Business, Enterprise et Edu. Si les outils Suzzy changent, recréez l'app."
      },
      "mistral": {
        "steps": {
          "connectors": "Dans Vibe, ouvrez la page « Connectors ».",
          "add": "Cliquez sur « + Add Connector » (ajouter un connecteur).",
          "custom": "Choisissez « Custom MCP Connector ».",
          "form": "Écrivez « suzzy » comme nom, sans espace. Collez l'adresse de Suzzy, puis validez. La connexion sécurisée (OAuth) est reconnue toute seule.",
          "functions": "C'est prêt ! Dans « My Connectors », la partie « Functions » montre ce que Vibe peut faire."
        },
        "note": "Gérez les fonctions autorisées dans My Connectors > Functions."
      },
      "cursor": {
        "steps": {
          "config": "Ouvrez le fichier {path} (créez-le s'il n'existe pas) et collez-y la configuration de Suzzy.",
          "settings": "Ouvrez les réglages de Cursor, partie « Tools & MCP ».",
          "authenticate": "À côté de « suzzy », cliquez sur « Authenticate » (s'identifier).",
          "done": "C'est prêt : suzzy est connecté dans Cursor."
        },
        "note": "Cursor est un éditeur de code : ce guide s'adresse plutôt aux développeurs."
      },
      "other": {
        "steps": [
          "Ajoutez un serveur MCP distant de type HTTP dans votre outil.",
          "Collez l'adresse du serveur. Aucune clé n'est nécessaire.",
          "L'authentification OAuth s'ouvre dans votre navigateur : connectez-vous et autorisez l'accès."
        ],
        "note": "Les étapes exactes dépendent de l'outil : consultez sa documentation MCP ci-dessus.",
        "docs-title": "Documentation de ces outils"
      }
    },
    "connections": {
      "title": "Connexions actives",
      "empty": "Aucune IA n'est connectée à cet établissement.",
      "error": "Impossible de charger les connexions IA.",
      "no-access": "Aucun accès",
      "created": "Ajoutée le {date}",
      "last-used": "utilisée le {date}",
      "never-used": "jamais utilisée",
      "calls": "Journal des actions",
      "edit": "Modifier les autorisations",
      "revoke": {
        "button": "Retirer l'accès",
        "title": "Retirer l'accès ?",
        "description": "{client} ne pourra plus agir sur cet établissement. Il faudra le reconnecter pour l'utiliser à nouveau.",
        "confirm": "Retirer"
      }
    },
    "edit": {
      "title": "Autorisations de {client}",
      "description": "Les autorisations restent limitées par le rôle du membre qui a connecté l'IA."
    },
    "tool-calls": {
      "title": "Actions de {client}",
      "description": "Dernières actions demandées par cette IA, lectures comprises.",
      "empty": "Aucune action pour l'instant.",
      "error": "Impossible de charger les actions.",
      "duration": "{ms} ms",
      "status": {
        "success": "Réussie",
        "error": "Échec",
        "denied": "Refusée"
      }
    },
    "toasts": {
      "updated": "Autorisations mises à jour",
      "update-error": "Les autorisations n'ont pas pu être modifiées",
      "revoked": "Accès retiré",
      "revoke-error": "L'accès n'a pas pu être retiré"
    },
    "calls": {
      "last-access": "Dernier accès : {origin}"
    },
    "admin": {
      "title": "Connexions IA",
      "tabs": {
        "connections": "Connexions",
        "activity": "Activité"
      },
      "status-label": "Statut",
      "status": {
        "active": "Actives",
        "revoked": "Retirées",
        "all": "Toutes"
      },
      "row-status": {
        "active": "Active",
        "revoked": "Retirée"
      },
      "search": "Client, établissement ou membre",
      "columns": {
        "client": "Client",
        "shop": "Établissement",
        "member": "Membre",
        "permissions": "Autorisations",
        "created": "Créée",
        "last-used": "Dernière utilisation",
        "last-access": "Dernier accès",
        "calls": "Appels",
        "status": "Statut"
      },
      "empty": "Aucune connexion IA.",
      "error": "Impossible de charger les connexions IA.",
      "history": "Historique",
      "revoke": {
        "button": "Désactiver",
        "title": "Désactiver cette connexion ?",
        "description": "{client} ne pourra plus agir sur {shop}. Le commerçant devra reconnecter son outil.",
        "confirm": "Désactiver"
      },
      "toasts": {
        "revoked": "Connexion désactivée",
        "revoke-error": "La connexion n'a pas pu être désactivée."
      },
      "activity": {
        "status-label": "Statut",
        "all": "Toutes",
        "empty": "Aucune action IA pour l'instant.",
        "error": "Impossible de charger l'activité IA.",
        "load-more-error": "Impossible de charger la suite. Réessayez."
      }
    }
  }
}
