{
  "common": {
    "apply": "Appliquer",
    "close": "Fermer",
    "current": "Actuelle",
    "loading": "Modification en cours...",
    "unauthorized": "Action non autorisée. Réservée aux ADMIN/MANAGER.",
    "cancel": "Annuler",
    "ok": "OK",
    "modify": "Modifier",
    "add": "Ajouter",
    "back": "Retour",
    "creating": "Création en cours...",
    "loadingShort": "Chargement...",
    "confirmation": "Confirmation",
    "yes": "OUI",
    "no": "NON",
    "confirm": "Confirmer",
    "retry": "Réessayer",
    "searchPlaceholder": "Recherche...",
    "notProvided": "Non renseigné",
    "emptyName": "Nom est vide",
    "emptyDash": "-",
    "view": {
      "list": "Liste",
      "grid": "Cadre",
      "listTitle": "Vue Liste",
      "gridTitle": "Vue Cadre"
    },
    "pagination": {
      "range": "{{start}} - {{end}} / {{total}}",
      "prev": "Précédent",
      "next": "Suivant",
      "page": "Page {{current}} / {{total}}"
    },
    "form": {
      "required": "Champ requis.",
      "requiredField": "Ce champ est obligatoire",
      "minLength2": "Au moins 2 caractères.",
      "minLength2Alt": "Minimum 2 caractères",
      "invalidEmail": "Format invalide.",
      "invalidEmailAlt": "Format d'email invalide",
      "invalidPhone": "Format invalide",
      "invalidPhoneForCountry": "Format invalide pour {{country}}. Exemple: {{example}}",
      "selectCountry": "Sélectionne un pays"
    }
  },
  "languages": {
    "fr": "Français",
    "ar": "Arabe"
  },
  "accountSettings": {
    "title": "Paramètres du compte",
    "tabs": {
      "invoices": "{{lx.facture.pluriel}}",
      "modules": "Modules",
      "security": "Sécurité",
      "app": "App",
      "themes": "Thèmes",
      "theme": "Thème POS",
      "currencyLanguage": "Préférences"
    },
    "locale": {
      "sectionTitle": "Devise et langue régionales",
      "sectionDesc": "Personnalisez la devise et la langue de l'application."
    },
    "lexique": {
      "title": "Lexique de l'entreprise",
      "subtitle": "Choisissez le vocabulaire affiché dans l'application. Il s'applique à tous les utilisateurs de l'entreprise.",
      "label": "Lexique",
      "preview": "Aperçu des termes",
      "applied": "Lexique appliqué : {{libelle}}",
      "invalid": "Veuillez sélectionner un lexique valide.",
      "loadError": "Impossible de charger les lexiques.",
      "updateError": "Erreur lors de la mise à jour du lexique."
    },
    "currency": {
      "title": "Devise d'affichage",
      "subtitle": "Choisissez la devise utilisée dans l'application. L'aperçu se met à jour instantanément.",
      "label": "Devise",
      "hint": "Exemple: {{amount}} devient {{amountWithSymbol}}",
      "applied": "Devise appliquée: {{code}} ({{symbol}})",
      "invalid": "Veuillez sélectionner une devise valide.",
      "enterpriseMissing": "Entreprise introuvable. Réessayez plus tard.",
      "updateError": "Erreur lors de la mise à jour de l'entreprise."
    },
    "language": {
      "title": "Langue de l'interface",
      "subtitle": "Choisissez la langue d'affichage de l'application.",
      "label": "Langue",
      "hint": "La préférence est enregistrée sur cet appareil et appliquée immédiatement.",
      "applied": "Langue appliquée: {{language}}",
      "applying": "Changement de langue en cours...",
      "invalid": "Veuillez sélectionner une langue valide."
    },
    "accessSchedule": {
      "title": "Horaires d'accès entreprise",
      "desc": "Définissez un créneau distinct pour chaque jour de la semaine.",
      "enable": "Activer la restriction horaire",
      "idleHint": "Accès libre — activez le switch pour définir des créneaux.",
      "daysLabel": "Jours autorisés",
      "windowsLabel": "Créneaux par jour",
      "enabledDaysSummary": "{{count}} jour(s) actif(s)",
      "start": "Début",
      "end": "Fin",
      "timezone": "Fuseau horaire",
      "remove": "Supprimer",
      "hint": "Admin et le manager ne sont pas bloqués par cette règle entreprise.",
      "saved": "Horaires d'accès enregistrés.",
      "removed": "Restriction horaire supprimée — accès libre.",
      "loadError": "Impossible de charger les horaires d'accès.",
      "saveError": "Erreur lors de l'enregistrement des horaires.",
      "minDays": "Sélectionnez au moins un jour.",
      "invalidTimeRange": "L'heure de fin doit être après l'heure de début.",
      "invalidDayTimeRange": "Heure de fin invalide pour {{day}}.",
      "days": {
        "mon": "Lun",
        "tue": "Mar",
        "wed": "Mer",
        "thu": "Jeu",
        "fri": "Ven",
        "sat": "Sam",
        "sun": "Dim"
      },
      "timezones": {
        "bamako": "Bamako (GMT)",
        "abidjan": "Abidjan (GMT)",
        "dakar": "Dakar (GMT)",
        "conakry": "Conakry (GMT)",
        "nouakchott": "Nouakchott (GMT)",
        "lome": "Lomé (GMT)",
        "ouagadougou": "Ouagadougou (GMT)",
        "accra": "Accra (GMT)",
        "utc": "UTC"
      }
    }
  },
  "nav": {
    "dashboard": "Tableau de bord",
    "vente": "Ventes",
    "produit": "Produits",
    "boutique": "Boutiques",
    "stock": "Stocks",
    "stocks": "Mes Stocks",
    "inventaires": "Inventaires",
    "facture": "Factures",
    "clients": "Clients",
    "fournisseurs": "Fournisseurs",
    "compte": "Compte",
    "factures": "Facturation",
    "facturation": "Facturation",
    "facture-proforma": "{{lx.facture_proforma.pluriel}}",
    "facture-reelle": "Factures réelles",
    "comptabilite-tresorier": "Comptabilité",
    "entree-sortie-entreprise-journal": "Journal",
    "compte-parametres": "Paramètres",
    "assistance": "Assistance",
    "consultants": "Consultants",
    "consultants-candidats": "Candidats",
    "consultants-actifs": "Consultants",
    "consultant-dashboard": "Tableau de bord",
    "consultant-clients": "Mes clients",
    "support-dashboard": "Support",
    "support-rapport": "Rapports support"
  },
  "journal": {
    "title": "Entrées et Sorties",
    "funds": {
      "caisse": "Caisse",
      "banque": "Banque",
      "mobileMoney": "Mobile Money",
      "credit": "Crédit"
    },
    "actions": {
      "performMovement": "Effectuer un mouvement"
    },
    "popups": {
      "mobileMoneyDetails": "Détails - Mobile Money"
    },
    "accounting": {
      "display": "Comptabilité",
      "income": "Comptabilité - Entrée",
      "expense": "Comptabilité - Sortie",
      "incomeShort": "Comptabilité - entrée",
      "expenseShort": "Comptabilité - sortie",
      "invoiceCancellation": "Comptabilité - Annulation {{lx.facture}}",
      "debtCancellation": "Comptabilité - Annulation dette",
      "fundTransfer": "Comptabilité - Transfert de fonds"
    },
    "labels": {
      "balance": "Solde",
      "revenue": "CA",
      "amountPaid": "Montant payé",
      "supplierDebtShort": "CF"
    },
    "tabs": {
      "allMovements": "Toutes les entrées et sorties",
      "income": "Entrée",
      "expense": "Sortie",
      "clientReceivables": "Créances Clts",
      "supplierDebts": "Dettes Frs"
    },
    "columns": {
      "origin": "Origine",
      "designation": "Désignation",
      "category": "Catégorie",
      "responsible": "Resp",
      "unitPrice": "Prix U",
      "quantity": "Qte",
      "amount": "Montant",
      "source": "Source",
      "sourceDetails": "Source / Détails"
    },
    "dateFilter": {
      "today": "Aujourd'hui",
      "yesterday": "Hier",
      "semaine": "Semaine",
      "mois": "Mois",
      "annee": "Année",
      "custom": "Personnalisé",
      "filter": "Filtre"
    },
    "sources": {
      "all": "Toutes les sources",
      "caisse": "Caisse",
      "banque": "Banque",
      "mobileMoney": "Mobile money",
      "debt": "Dette",
      "cashClosure": "Fermeture caisse",
      "transfer": "Transfert"
    },
    "movementTypes": {
      "income": "Entrée",
      "expense": "Sortie"
    },
    "messages": {
      "invoicePaymentSuccess": "Paiement enregistré avec succès.",
      "invoiceCancellationSuccess": "Annulation enregistrée sur {{lx.facture.le}}.",
      "invoicePaymentError": "Erreur lors de l'enregistrement du paiement",
      "invoiceCancellationError": "Erreur lors de l'annulation sur {{lx.facture.le}}"
    }
  },
  "dashboard": {
    "title": "Tableau de bord",
    "subtitle": "Accès rapide à vos modules",
    "activityTitle": "Activité Récente",
    "cards": {
      "vente": {
        "title": "Ventes",
        "description": "Gestion des ventes"
      },
      "caisse": {
        "title": " Feere kɛ yɔrɔ",
        "description": "Point de vente"
      },
      "produit": {
        "title": "{{lx.produits.pluriel}}",
        "description": "Catalogue produits"
      },
      "boutique": {
        "title": "{{lx.boutique.pluriel}}",
        "description": "Gestion {{lx.boutique.pluriel}}"
      },
      "stocks": {
        "title": "Stocks",
        "description": "Mes stocks"
      },
      "journaux": {
        "title": "Journaux",
        "description": "Factures d'approvisionnement"
      },
      "clients": {
        "title": "{{lx.client.pluriel}}",
        "description": "Base {{lx.client.pluriel}}"
      },
      "fournisseurs": {
        "title": "{{lx.fournisseur.pluriel}}",
        "description": "Gestion {{lx.fournisseur.pluriel}}"
      },
      "factureProforma": {
        "title": "{{lx.facture_proforma}}",
        "description": "{{lx.facture_proforma.pluriel}}"
      },
      "factureReelle": {
        "title": "{{lx.facture_reelle}}",
        "description": "{{lx.facture_reelle.pluriel}}"
      },
      "journal": {
        "title": "Journal",
        "description": "Comptabilité"
      },
      "parametres": {
        "title": "Paramètres",
        "description": "Compte et paramètres"
      }
    },
    "tabs": {
      "sales": "Ventes",
      "realInvoices": "{{lx.facture_reelle.pluriel}}",
      "realInvoicesShort": "Fact. Réelles",
      "pendingProformas": "{{lx.facture_proforma.pluriel}} en attente",
      "pendingProformasShort": "{{lx.facture_proforma.pluriel}}",
      "stockAlerts": "Alertes Stock",
      "stockAlertsShort": "Alertes"
    },
    "columns": {
      "invoiceNumber": "N° {{lx.facture_reelle}}",
      "proformaNumber": "N° {{lx.facture_proforma}}",
      "date": "Date",
      "creationDate": "Date Création",
      "client": "{{lx.client}}",
      "seller": "{{lx.vendeur}}",
      "creator": "Créateur",
      "paymentMode": "Mode Paiement",
      "paymentStatus": "Statut Paiement",
      "amount": "Montant",
      "remaining": "Restant",
      "phone": "Téléphone",
      "status": "Statut",
      "code": "Code",
      "product": "Produit",
      "shop": "{{lx.boutique}}",
      "currentStock": "Stock Actuel",
      "alertThreshold": "Seuil Alerte",
      "state": "État"
    },
    "empty": {
      "noRecentSales": "Aucune vente récente",
      "noRecentRealInvoices": "Aucun résultat récent {{lx.facture_reelle}}",
      "noPendingProformas": "Aucun résultat {{lx.facture_proforma}} en attente",
      "noStockAlerts": "Aucune alerte de stock - Tout est en ordre !"
    },
    "labels": {
      "anonymousClient": "{{lx.client}} anonyme",
      "outOfStock": "RUPTURE",
      "lowStock": "FAIBLE"
    },
    "paymentModes": {
      "ESPECES": "Espèces",
      "VIREMENT": "Virement",
      "CHEQUE": "Chèque",
      "CARTE": "Carte",
      "MOBILE_MONEY": "Mobile Money",
      "CREDIT": "Crédit",
      "AUTRE": "Autre"
    },
    "paymentStatus": {
      "PAYE": "Payé",
      "EN_ATTENTE": "En attente",
      "PARTIELLEMENT_PAYEE": "Partiellement payée",
      "partialShort": "Part.payée"
    }
  },
  "vente": {
    "title": "Ventes",
    "posButton": "Feere kɛ yɔrɔ",
    "scanButtonTitle": "Scanner un reçu avec la caméra",
    "scanTitle": "Scanner un reçu",
    "scanHint": "Placez le code-barres du reçu devant la caméra, à 20-30 cm environ et bien éclairé. Si l'image reste floue, utilisez le bouton photo.",
    "scanDenied": "L'accès à la caméra est refusé. Autorisez la caméra dans votre navigateur puis réessayez.",
    "scanNoCamera": "Aucune caméra n'a été trouvée sur cet appareil.",
    "scanUnsupported": "Votre navigateur ne permet pas d'utiliser la caméra ici (HTTPS requis).",
    "scanError": "Impossible de démarrer la caméra.",
    "scanClose": "Fermer",
    "scanPhotoButton": "Prendre une photo du reçu",
    "scanNoLiveHint": "La caméra en direct demande une connexion sécurisée (HTTPS). Photographiez le reçu à la place : l'application lira le code-barres sur la photo.",
    "scanPhotoUnreadable": "Code-barres illisible sur la photo. Rapprochez-vous, évitez les reflets et reprenez la photo.",
    "scanLookupError": "La recherche a échoué. Vérifiez la connexion puis réessayez.",
    "scanSearching": "Recherche de la vente…",
    "scanNotFound": "Aucune vente trouvée pour le reçu {{numero}}.",
    "refresh": "Actualiser",
    "loading": "Chargement...",
    "dateFilter": {
      "today": "Aujourd'hui",
      "yesterday": "Hier",
      "semaine": "Semaine",
      "mois": "Mois en cours",
      "moisPasse": "Mois passé",
      "annee": "Année",
      "custom": "Personnalisé",
      "from": "Du",
      "to": "Au",
      "period": "Période"
    },
    "filters": {
      "allSellers": "Tous {{lx.vendeur.pluriel}}",
      "myself": "Moi même",
      "allShops": "Tous {{lx.boutique.pluriel}}",
      "allMyShops": "Mes {{lx.boutique.pluriel}}",
      "seller": "{{lx.vendeur}}",
      "shop": "{{lx.boutique}}",
      "sellerLockedTitle": "Filtre {{lx.vendeur}} — réservé aux administrateurs, managers et comptables",
      "shopLockedTitle": "Un seul résultat {{lx.boutique}} — filtre non disponible"
    },
    "export": {
      "excel": "Télécharger en Excel",
      "pdf": "Télécharger en PDF",
      "csv": "Télécharger en CSV",
      "pdfPreparing": "Préparation du PDF…"
    },
    "stats": {
      "totalSales": "Total ventes",
      "articlesCount": "Nbre d'articles :",
      "refunded": "Remboursé :",
      "partiallyRefunded": "Part. remboursé :",
      "netAmount": "Montant net",
      "cashOpen": "Caisse Ouverte :",
      "cashClosed": "Caisse Fermée :",
      "cashOpenAmountTitle": "Montant caisse ouverte :",
      "top3Products": "Top 3 produits",
      "top3Sellers": "Top 3 {{lx.vendeur.pluriel}}",
      "noDataYet": "Aucun pour le moment",
      "units": "unités",
      "sales": "ventes"
    },
    "tabs": {
      "sales": "Ventes",
      "credits": "Crédits",
      "orders": "Commande"
    },
    "lists": {
      "invoices": "Liste des {{lx.facture.pluriel}}",
      "credits": "Liste des crédits",
      "orders": "Liste des commandes",
      "default": "Liste"
    },
    "search": {
      "invoice": "N° facture, {{lx.vendeur}} ou {{lx.client}}...",
      "credit": "N° crédit, {{lx.vendeur}} ou {{lx.client}}...",
      "order": "N° commande, {{lx.vendeur}}, {{lx.client}}, {{lx.boutique}}..."
    },
    "columns": {
      "dateTime": "Date & Heure",
      "invoiceNumber": "Numéro {{lx.facture}}",
      "number": "Numéro",
      "orderNumber": "N° commande",
      "shop": "{{lx.boutique}}",
      "seller": "{{lx.vendeur}}",
      "creator": "Créateur",
      "amountPaid": "Montant Payé",
      "amount": "Montant",
      "remainingToPay": "Reste à payer",
      "client": "{{lx.client}}",
      "status": "Statut",
      "product": "Produit",
      "quantity": "Quantité",
      "unitPrice": "Prix Unitaire",
      "discount": "Remise",
      "lineAmount": "Montant Ligne",
      "refundedQty": "Qté remb.",
      "refundedAmount": "Montant remb.",
      "rank": "Rang",
      "totalAmount": "Montant Total",
      "sales": "Ventes",
      "designation": "Désignation",
      "description": "Description",
      "qtyShort": "Qté"
    },
    "empty": {
      "noInvoice": "Aucune {{lx.facture}} trouvée",
      "noCredit": "Aucun crédit trouvé",
      "noOrder": "Aucune commande trouvée",
      "noStats": "Aucune statistique disponible pour cette période.",
      "noProductSold": "Aucun produit vendu pour le moment",
      "noSeller": "Aucun résultat {{lx.vendeur}}",
      "noCreditProduct": "Aucun produit associé à ce crédit"
    },
    "labels": {
      "unknown": "Inconnu",
      "shopDefault": "{{lx.boutique}}",
      "notProvided": "Non renseigné",
      "notSpecified": "Non spécifié",
      "none": "Aucun",
      "paid": "Payé",
      "note": "{{lx.note}}",
      "total": "Total",
      "totalColon": "Total:",
      "discountApplied": "Remise appliquée",
      "remainingDebt": "Dette restante:",
      "clientPrefix": "{{lx.client}} #",
      "lines": "Lignes",
      "productsSold": "Produits vendus",
      "products": "Produits",
      "amountPaid": "Montant payé:",
      "remainingToPay": "Reste à payer:",
      "refundedToClient": "Remboursé {{lx.client}} :",
      "netAmountCollected": "Net encaissé",
      "netAmountShort": "net",
      "productRefunded": "Remboursé",
      "refundedQtyShort": "remb.",
      "livre": "Livré",
      "nonLivre": "Non livré",
      "livraisonColumn": "Livraison",
      "livraisonUpdateError": "Impossible de mettre à jour le statut de livraison.",
      "livraisonUpdateSuccess": "Statut de livraison mis à jour.",
      "initialAmount": "Montant initial:",
      "paidByClient": "Payé par {{lx.client}} :",
      "remainingAmount": "Montant restant:",
      "discountType": "Type remise:",
      "globalDiscount": "Remise globale:",
      "remainingToCollect": "Reste à encaisser",
      "encaissementsDettePosPeriod": "Encaissements dette POS (période)",
      "encaissementsDettePosPeriodCount": "{{count}} encaissement(s) sur la période filtrée",
      "encaisseDettePosPeriodAmount": "Encaissé dette POS (période):",
      "encaissementDettePosPeriodTitle": "{{count}} encaissement(s) dette POS sur la période : {{montant}} {{currency}}",
      "saleDate": "Vente",
      "collectionDate": "Encaissement",
      "saleHash": "Vente #",
      "debtSettled": "Soldé",
      "partialPayment": "Partiel",
      "collectedAmount": "Encaissé",
      "collectedBy": "Encaissé par",
      "initialPaymentAtSale": "Paiement à la vente",
      "initialPaymentChip": "Acompte initial",
      "saleTotal": "Total vente",
      "remainingAmountShort": "Restant",
      "collect": "Encaisser",
      "paymentMethod": "Méthode de paiement:",
      "refundStatus": "Statut remboursement:",
      "user": "Utilisateur:",
      "phone": "Téléphone {{lx.client}} :",
      "totalAmount": "Montant total :",
      "servedBy": "Servi par :",
      "clientColon": "{{lx.client}} :",
      "shopColon": "{{lx.boutique}} :",
      "object": "Objet :",
      "debt": "Dette :",
      "change": "Monnaie",
      "subtotal": "Sous-total",
      "globalDiscountShort": "Remise global",
      "productDiscounts": "Remise(s) produit",
      "totalHT": "Total HT",
      "discount": "Remise",
      "sector": "Secteur :",
      "email": "Email :",
      "phoneShort": "Téléphone :",
      "invoiceTitle": "{{lx.facture}} :",
      "dateLe": "Le",
      "dateLeWithCity": "le",
      "owedTo": "Doit :",
      "generatedBy": "Généré par Tchakeda",
      "generatedByInvoice": "Générée par Tchakeda",
      "ticket": "Ticket :",
      "perUnit": "/ Unité(s)",
      "discountLabel": "Remise:",
      "enterpriseName": "Nom entreprise"
    },
    "popups": {
      "orderDetail": "Détails Commande",
      "invoiceDetail": "Détails {{lx.facture}}",
      "creditDetail": "Détails Crédit",
      "netAmountDetail": "Détail Montant net",
      "topProducts": "Top Produits Vendus",
      "topSellers": "Top {{lx.vendeur.pluriel}}",
      "creditPayment": "Paiement crédit",
      "number": "Numéro",
      "amountToPay": "Montant à payer",
      "paymentMode": "Mode de paiement",
      "processing": "Traitement...",
      "validatePayment": "Valider le paiement",
      "posDebtPayment": "Encaissement dette POS",
      "posDebtPaymentHint": "L'encaissement est enregistré sur la caisse de vente si elle est ouverte, sinon sur votre caisse ouverte, ou une nouvelle caisse sera ouverte automatiquement.",
      "validatePosDebtPayment": "Encaisser",
      "posDebtPaymentDone": "Terminer",
      "posDebtPaymentInvalidAmount": "Montant invalide",
      "posDebtPaymentAmountTooHigh": "Le montant saisi est supérieur au reste dû.",
      "posDebtPaymentError": "Erreur lors de l'encaissement dette POS",
      "posDebtPaymentSuccessFull": "Dette soldée",
      "posDebtPaymentSuccessPartial": "Paiement partiel enregistré",
      "posDebtPaymentCaisse": "Caisse encaissement",
      "posDebtPaymentCaisseOrigin": "Caisse vente d'origine",
      "typeEncaissement": {
        "SUR_CAISSE_VENTE": "Encaissement sur la caisse de la vente (session ouverte)",
        "ENCAISSEMENT_CAISSE_OUVERTE": "Encaissement sur votre caisse ouverte",
        "OUVERTURE_NOUVELLE_CAISSE": "Nouvelle caisse ouverte automatiquement"
      },
      "period": "Période :",
      "periodUnspecified": "Non précisée",
      "grossAmount": "Montant brut :",
      "netAmount": "Montant net :",
      "refundedDiff": "Remboursé (différence) :",
      "cashExpenses": "Dépenses caisse :",
      "salesMargin": "Marge vente :",
      "netTreasury": "Trésorerie nette",
      "tipTreasury": "L'argent réellement disponible : ce que vous avez reçu moins les dépenses. Le prix d'achat des produits n'est pas compté ici.",
      "expensesWord": "dépense(s)",
      "popRefundLine": "Remboursé {{lx.client.pluriel}}",
      "popRefundCount": "Ventes remboursées",
      "popRefundAmount": "Argent rendu {{lx.client.pluriel}}",
      "popRefundNote": "Le Montant net est déjà diminué de ces remboursements : vous n'avez rien à retirer vous-même.",
      "lblGross": "Montant brut",
      "lblNet": "Montant net",
      "sectionBalance": "Trésorerie et créances",
      "sectionSoldReceived": "Ce que j'ai vendu et reçu",
      "popCashTotal": "Argent reçu au total",
      "popNetSales": "Ce que vous avez vendu",
      "popPurchaseCost": "Ce que ces produits vous ont coûté à l'achat",
      "popExpensesLbl": "Argent sorti de la caisse (dépenses)",
      "popGrossMargin": "Votre bénéfice sur les produits",
      "popNetMargin": "Ce qu'il vous reste vraiment",
      "popCashIn": "Argent reçu",
      "popTreasury": "Argent réellement disponible",
      "popGrossNote": "C'est ce que vous gagnez en revendant, avant de compter vos dépenses.",
      "popNetNote": "C'est votre vrai gain : le bénéfice sur les produits moins les dépenses.",
      "popTreasuryNote": "C'est l'argent que vous avez vraiment : ce que vous avez reçu moins ce que vous avez dépensé. Le prix d'achat des produits n'est pas compté ici.",
      "popSalesTitle": "En clair",
      "popCredit": "À crédit, pas encore payé",
      "popReceivedOnSales": "Déjà payé par {{lx.client.pluriel}}",
      "popSalesNote": "Ventes à crédit ({{lx.client.pluriel}}) : paiement plus tard.",
      "popPaidSales": "Ventes payées sur cette période (remboursements déjà déduits)",
      "popOldDebts": "Anciennes dettes payées par {{lx.client.pluriel}}",
      "popCashNote": "Vous pouvez recevoir plus que ce que vous avez vendu : anciennes dettes payées par {{lx.client.pluriel}}.",
      "sectionMoney": "Argent",
      "sectionDebts": "Créances",
      "salesOfPeriod": "Ventes de la période",
      "tipSalesOfPeriod": "Tout ce que vous avez vendu, même ce qui n'est pas encore payé.",
      "cashReceived": "Argent encaissé",
      "tipCashReceived": "L'argent que vous avez vraiment reçu sur la période.",
      "ofWhichSales": "dont ventes de la période (déjà payées)",
      "ofWhichOldDebts": "dont anciennes dettes remboursées",
      "debtMonth": "Dette de la période",
      "tipDebtMonth": "Dettes ({{lx.client.pluriel}}) sur les ventes de cette période.",
      "debtTotal": "Dette totale en cours",
      "tipDebtTotal": "Dettes ({{lx.client.pluriel}}) restantes, toutes périodes confondues.",
      "agingTitle": "Ancienneté des créances",
      "salesWord": "vente(s)",
      "cashOf": "Caisse de",
      "expensesByShop": "Dépenses par {{lx.boutique}}",
      "barTitle": "Répartition des ventes nettes",
      "barCost": "Achat",
      "barSpent": "Dépenses",
      "barGain": "Gain",
      "barLossNote": "Les dépenses dépassent la marge : la période est en perte.",
      "colIndicator": "Indicateur",
      "colValue": "Valeur",
      "sectionSales": "Ventes",
      "sectionProfit": "Rentabilité",
      "sectionCash": "Caisse",
      "sectionActivity": "Activité",
      "salesMarginGross": "Marge brute",
      "salesMarginNet": "Marge nette",
      "debtLabel": "Dettes {{lx.client.pluriel}}",
      "tipGross": "Total des ventes avant déduction des remboursements.",
      "tipNet": "Chiffre d'affaires net : ventes encaissées après déduction des remboursements.",
      "tipRefund": "Argent rendu {{lx.client.pluriel}}.",
      "tipExpenses": "L'argent sorti de la caisse sur la période.",
      "tipMarginGross": "Ce que vous gagnez sur les produits vendus, avant les dépenses.",
      "tipMarginNet": "Votre vrai gain : le bénéfice sur les produits moins les dépenses.",
      "tipDebt": "Montant vendu à crédit, pas encore payé par {{lx.client.pluriel}}.",
      "tipCashOpen": "Total des montants des caisses actuellement ouvertes.",
      "tipCashClosed": "Total des montants des caisses clôturées sur la période.",
      "tipTotalSales": "Nombre de ventes enregistrées sur la période.",
      "tipArticles": "Quantité totale d'articles vendus sur la période.",
      "tipRefundsCount": "Nombre de {{lx.facture.pluriel}} remboursées sur la période.",
      "refundsCount": "Nombre de remboursements :",
      "articlesSoldCount": "Nombre d'articles vendus :"
    },
    "print": {
      "receipt": "Reçu",
      "invoice": "{{lx.facture}}",
      "print": "Imprimer",
      "receiptTitle": "Ticket caisse",
      "invoiceTitle": "{{lx.facture}} A4",
      "formatAria": "Format",
      "printAria": "Imprimer : reçu ou {{lx.facture}}"
    },
    "actions": {
      "cancel": "Annuler la commande",
      "cancelling": "Annulation…",
      "validating": "Validation…",
      "validate": "Valider",
      "deleting": "Suppression…",
      "confirming": "Confirmation…",
      "yes": "Oui",
      "no": "Non"
    },
    "confirm": {
      "title": "Confirmation",
      "cancelOrder": "Voulez-vous vraiment annuler / supprimer cette commande ?",
      "confirmDelivery": "Confirmer la livraison de ce produit ?"
    },
    "orderStatus": {
      "INITIEE": "Initiée",
      "VALIDEE": "Validée",
      "PAYEE": "Payée",
      "ANNULEE": "Annulée",
      "EN_COURS": "En cours",
      "LIVREE": "Livrée",
      "TERMINEE": "Terminée",
      "CLOTUREE": "Clôturée",
      "CONFIRMEE": "Confirmée",
      "FACTUREE": "Facturée"
    },
    "orderBadge": "{{validated}} validée(s), {{initiated}} initiée(s) sur {{total}}",
    "refundStatus": {
      "NON_REMBOURSE": "Non remboursé",
      "PARTIELLEMENT_REMBOURSEE": "Part.remboursé",
      "TOTALEMENT_REMBOURSEE": "remboursé",
      "ENTIEREMENT_REMBOURSEE": "remboursé",
      "DETTE_ANNULEE": "Dette annulée"
    },
    "cashStatus": {
      "closed": "Caisse fermée",
      "notClosed": "Caisse non fermée",
      "paidOnOtherCaisse": "Dette encaissée sur une autre caisse (caisse #{{id}})"
    },
    "discountType": {
      "PAR_LIGNE": "Par ligne",
      "GLOBALE": "Globale",
      "GLOBAL": "Globale"
    },
    "paymentLabels": {
      "partial": "Paiement partiel",
      "pending": "En attente",
      "settled": "Réglé",
      "order": "Commande"
    },
    "pagination": {
      "empty": "0 - 0 sur 0",
      "range": "{{start}} - {{end}} sur {{total}}"
    }
  },
  "profil": {
    "title": "Page profil",
    "subtitle": "Changez votre photo de profil à partir d'ici",
    "photo": {
      "alt": "Photo de profil",
      "changeLine1": "changer la",
      "changeLine2": "photo de",
      "changeLine3": "profil",
      "view": "Voir la photo",
      "take": "Prendre une photo",
      "import": "Importer une photo",
      "delete": "Supprimer la photo",
      "deleteConfirm": "Voulez-vous supprimer votre photo de profil ?"
    },
    "personalCode": {
      "label": "Code Personnel",
      "toggleAria": "Afficher/Masquer le code"
    },
    "qr": {
      "label": "Code QR",
      "alt": "Code QR personnel"
    },
    "info": {
      "title": "Information personnel",
      "hintLine1": "Pour changer les informations vous pouvez",
      "hintLine2": "le faire dans paramètre"
    },
    "fields": {
      "company": "Votre entreprise",
      "email": "Votre email",
      "country": "Pays",
      "phone": "Numéro téléphone",
      "shops": "{{lx.boutique.pluriel}}",
      "noShop": "Aucun résultat {{lx.boutique}}",
      "noPhone": "Aucun numéro"
    },
    "details": {
      "title": "Détails personnels",
      "subtitle": "Pour modifier vos informations personnelles, modifiez-les et enregistrez-les ici"
    },
    "form": {
      "editPersonalTitle": "Modifier les informations personnelles",
      "fullName": "Nom & prénom",
      "fullNamePlaceholder": "Saisissez votre nom complet",
      "yourPhone": "Votre numéro",
      "phonePlaceholder": "Saisissez votre numéro de téléphone",
      "yourPassword": "Votre mot de passe",
      "passwordPlaceholder": "Saisissez votre mot de passe",
      "changePasswordTitle": "Changer le mot de passe",
      "currentPassword": "Mot de passe actuel",
      "currentPasswordPlaceholder": "Saisis le mot de passe actuel",
      "newPassword": "Nouveau mot de passe",
      "newPasswordPlaceholder": "Saisis le nouveau mot de passe",
      "confirmPassword": "Confirmer le nouveau mot de passe",
      "confirmPasswordPlaceholder": "Confirmer le nouveau mot de passe",
      "confirm": "Confirmer",
      "processing": "Traitement...",
      "loading": "Chargement..."
    },
    "validation": {
      "required": "Ce champ est obligatoire",
      "invalidPhone": "Format de numéro invalide",
      "minPassword": "Minimum 8 caractères",
      "passwordMismatch": "Les mots de passe ne correspondent pas"
    },
    "messages": {
      "fillCorrectly": "Veuillez remplir tous les champs correctement",
      "passwordMismatch": "Les nouveaux mots de passe ne correspondent pas",
      "passwordUpdated": "Mot de passe modifié !",
      "unknownError": "Erreur inconnue",
      "notAuthenticated": "Utilisateur non authentifié.",
      "cannotGetUser": "Impossible de récupérer l'utilisateur connecté.",
      "profileUpdated": "Profil mis à jour avec succès !",
      "compressionError": "Erreur de compression : Le fichier n'est pas une image.",
      "photoUpdated": "Photo de profil mise à jour avec succès !",
      "photoUpdateFailed": "Échec de la mise à jour de la photo.",
      "compressionOrSendError": "Erreur lors de la compression ou de l'envoi.",
      "photoTakenUpdated": "Photo prise et mise à jour avec succès !",
      "photoSendError": "Erreur lors de l'envoi de la photo.",
      "photoCaptureError": "Erreur lors de la prise ou de l'envoi."
    },
    "actions": {
      "yes": "Oui",
      "no": "Non"
    },
    "consultantCode": {
      "label": "Code consultant",
      "loading": "Chargement du code…",
      "share": "Partager",
      "menuMessage": "Message",
      "menuOther": "Autre",
      "menuCopyLink": "Copier le lien",
      "openedWhatsApp": "WhatsApp ouvert — choisissez un contact.",
      "openedMessage": "Application Messages ouverte.",
      "shareFallbackCopy": "Partage système indisponible — lien copié.",
      "copyLinkAria": "Copier le lien d'inscription",
      "copiedCode": "Code consultant copié.",
      "copiedLink": "Lien d'inscription copié.",
      "copyError": "Impossible de copier pour le moment.",
      "shareText": "Inscrivez-vous sur Tchakɛda avec mon code consultant : {{code}}",
      "unavailable": "Code consultant indisponible pour le moment."
    },
    "upgrades": {
      "title": "Mises à niveau",
      "hint": "Formations requises pour maintenir votre certification.",
      "loading": "Chargement…",
      "empty": "Aucune mise à niveau planifiée.",
      "loadError": "Impossible de charger les mises à niveau.",
      "validatedOn": "Validée le",
      "scrollHint": "Faites défiler pour voir toutes les formations",
      "status": {
        "done": "Effectuée",
        "current": "En cours",
        "late": "En retard",
        "pending": "À venir"
      }
    },
    "accountSwitch": {
      "title": "Comptes liés",
      "current": "Espace actif",
      "contextConsultant": "Compte consultant",
      "contextEntreprise": "Mon entreprise",
      "consultantSpace": "Portail consultant",
      "entrepriseSpace": "Application entreprise",
      "menuConsultant": "Consultant",
      "menuEntreprise": "Mon entreprise",
      "switchTo": "Passer à",
      "modalTitle": "Changer d'espace",
      "modalLead": "Confirmez votre mot de passe pour ouvrir",
      "modalHint": "Utilisez le mot de passe de votre compte consultant.",
      "passwordLabel": "Mot de passe",
      "passwordPlaceholder": "Saisissez votre mot de passe",
      "passwordRequired": "Veuillez saisir votre mot de passe.",
      "confirm": "Confirmer",
      "loading": "Connexion…",
      "success": "Bascule vers {{context}} réussie.",
      "error": "Impossible de changer d'espace pour le moment."
    }
  },
  "produits": {
    "title": "Produits / Services",
    "addProduct": "Ajouter un produit",
    "importExcel": "importer Excel",
    "refresh": "Rafraîchir",
    "listView": "Vue liste",
    "cardView": "Vue carte",
    "export": "Exporter",
    "exportOptions": {
      "excel": "Télécharger en Excel",
      "pdf": "Télécharger en PDF",
      "csv": "Télécharger en CSV"
    },
    "actions": {
      "cancel": "Annuler",
      "delete": "Supprimer",
      "confirm": "Confirmer",
      "import": "Importer",
      "importing": "Import en cours..."
    },
    "search": {
      "aria": "Recherche de produits",
      "inputAria": "Rechercher",
      "filterAria": "Choisir un filtre de recherche",
      "filterTitle": "Filtrer par champ",
      "removeFilterAria": "Retirer le filtre",
      "default": "Recherche par nom, code, catégorie...",
      "byField": "Recherche par {{field}}..."
    },
    "filters": {
      "title": "Filtres",
      "reset": "Réinitialiser",
      "name": "Nom",
      "category": "Catégorie",
      "unit": "Unité",
      "allShops": "Tous {{lx.boutique.pluriel}}"
    },
    "loading": "Chargement des produits…",
    "columns": {
      "code": "Code",
      "photo": "Photo",
      "name": "Nom produit",
      "description": "Description",
      "category": "Catégorie",
      "salePrice": "Prix Vente",
      "costPrice": "Coût du produit",
      "unit": "Unité",
      "type": "Type",
      "shop": "{{lx.boutique}}"
    },
    "card": {
      "category": "Catégorie:",
      "salePrice": "Prix Vente:",
      "cost": "Coût:",
      "unit": "Unité:",
      "type": "Type:"
    },
    "productType": {
      "physical": "Produit",
      "service": "Service",
      "default": "Type Produit"
    },
    "labels": {
      "noDescription": "sans description",
      "noCategory": "sans categorie",
      "noUnit": "sans unite",
      "noShop": "Aucun résultat {{lx.boutique}}",
      "unnamedShop": "{{lx.boutique}} : sans nom",
      "unknownName": "Nom inconnu",
      "duplicateTitle": "Dupliquer le produit",
      "productPhoto": "Produit"
    },
    "empty": {
      "noProducts": "Vous n'avez pas de produit",
      "notFound": "Aucun produit trouvé.",
      "noMatch": "Aucun produit ne correspond à « {{term}} »."
    },
    "pagination": {
      "range": "{{start}} - {{end}} / {{total}}"
    },
    "excelImport": {
      "title": "Importer des produits depuis Excel",
      "instructionsTitle": "Instructions pour préparer votre fichier Excel :",
      "step1": "Téléchargez notre modèle Excel ci-dessous",
      "step2": "Remplissez les colonnes avec vos données",
      "step3": "Les colonnes obligatoires sont marquées d'un *",
      "step4": "Évitez de modifier les en-têtes de colonnes",
      "columnsTitle": "Structure des colonnes :",
      "colName": "Nom produit",
      "colDescription": "Description",
      "colCategory": "Catégorie",
      "colSalePrice": "Prix Vente",
      "colPurchasePrice": "Prix Achat",
      "colQuantity": "Quantité",
      "colUnit": "Unité",
      "colBarcode": "Code Barre",
      "colProductType": "Type Produit",
      "colPreemptionDate": "Date Preemption",
      "colAlertThreshold": "Seuil Alert",
      "colNameDesc": "Nom du produit (texte)",
      "colDescriptionDesc": "Description du produit",
      "colCategoryDesc": "Nom de la catégorie existante",
      "colSalePriceDesc": "Prix de vente (nombre)",
      "colPurchasePriceDesc": "Prix d'achat (nombre)",
      "colQuantityDesc": "Quantité initiale (nombre entier)",
      "colUnitDesc": "Unité de mesure existante",
      "colBarcodeDesc": "Code barre (nombre entier)",
      "colProductTypeDesc": "PHYSIQUE ou SERVICE",
      "colPreemptionDateDesc": "Format:",
      "colPreemptionExample": "(ex: 31-12-2025)",
      "colAlertThresholdDesc": "Seuil d'alerte stock (nombre entier)",
      "downloadTemplate": "Télécharger le modèle",
      "selectShopsPlaceholder": "Sélectionner {{lx.boutique.pluriel}}",
      "selectShopsLabel": "Sélectionner {{lx.boutique.pluriel}}",
      "selectShopsTitle": "Sélectionner {{lx.boutique.pluriel}}",
      "selectAllShops": "Sélectionner : tous ({{lx.boutique.pluriel}})",
      "clickToSelectFile": "Cliquez pour sélectionner votre fichier Excel",
      "acceptedFormats": "Formats acceptés: .xlsx, .xls (Max 5MB)",
      "errorsTitle": "Erreurs survenues :"
    },
    "messages": {
      "selectCategory": "Veuillez sélectionner au moins une catégorie.",
      "deleteOneCategory": "Vous ne pouvez supprimer qu'une seule catégorie à la fois.",
      "categoryDeleted": "Catégorie supprimée avec succès.",
      "accessDenied": "Accès refusé. Seuls les administrateurs ou managers peuvent supprimer une catégorie.",
      "categoryHasProducts": "Cette catégorie contient des produits. Veuillez d'abord les supprimer.",
      "deleteUnexpectedError": "Erreur inattendue lors de la suppression.",
      "fileTooLarge": "Le fichier est trop volumineux (max 5MB)",
      "unsupportedFormat": "Format de fichier non supporté",
      "invalidDateFormat": "Format de date invalide. Utilisez dd-MM-yyyy",
      "selectAtLeastOneShop": "Veuillez sélectionner au moins : 1 {{lx.boutique}}",
      "importSuccess": "Importation réussie ! {{count}} produits ajoutés.",
      "noProductAdded": "Aucun produit ajouté",
      "importUnknownError": "Erreur inconnue lors de l'importation"
    }
  },
  "stocks": {
    "title": "Mes Stocks",
    "adjustment": {
      "create": "Créer un ajustement de stock",
      "short": "Ajuster",
      "add": "Ajouter",
      "reduce": "Réduire",
      "transfer": "Transfert"
    },
    "refresh": "Rafraîchir",
    "viewToggle": {
      "card": "Vue Card",
      "list": "Vue Liste"
    },
    "export": "Exporter",
    "exportOptions": {
      "excel": "Télécharger en Excel",
      "pdf": "Télécharger en PDF",
      "csv": "Télécharger en CSV"
    },
    "search": {
      "aria": "Recherche de stocks",
      "inputAria": "Rechercher",
      "filterAria": "Choisir un filtre de recherche",
      "filterTitle": "Filtrer par champ",
      "removeFilterAria": "Retirer le filtre",
      "default": "Recherche par nom, code, catégorie...",
      "byField": "Recherche par {{field}}..."
    },
    "filters": {
      "title": "Filtres",
      "reset": "Réinitialiser",
      "name": "Nom",
      "category": "Catégorie",
      "unit": "Unité"
    },
    "stats": {
      "references": "Références",
      "outOfStock": "Hors rupture :",
      "inShortage": "En rupture :",
      "units": "Unités",
      "warehouse": "Entrepôt :",
      "shops": "{{lx.boutique.pluriel}} :",
      "stockValue": "Valeur stock",
      "purchasePrice": "Prix d'achat :",
      "salePrice": "Prix vente :",
      "margin": "Marge",
      "marginRateOnCost": "Taux sur coût :",
      "hideAmounts": "Masquer les montants",
      "showAmounts": "Afficher les montants",
      "loading": "Chargement"
    },
    "listTitle": "Liste des stocks",
    "allShops": "Tous {{lx.boutique.pluriel}}",
    "noShopFound": "Aucun résultat {{lx.boutique}}",
    "loading": "Chargement des stocks…",
    "columns": {
      "code": "Code",
      "photo": "Photo",
      "name": "Nom produit",
      "category": "Catégorie",
      "salePrice": "Prix Vente",
      "cost": "Coût du produit",
      "inStock": "En stock",
      "unit": "Unité",
      "alertThreshold": "Seuil Alerte",
      "shop": "{{lx.boutique}}"
    },
    "card": {
      "category": "Catégorie:",
      "salePrice": "Prix Vente:",
      "purchasePrice": "Prix Achat:",
      "inStock": "En stock:"
    },
    "labels": {
      "noCategory": "sans categorie",
      "noUnit": "sans unite",
      "noShop": "Aucun résultat {{lx.boutique}}",
      "productPhoto": "Produit"
    },
    "empty": {
      "noProducts": "Vous n'avez pas de produit",
      "notFound": "Aucun produit trouvé.",
      "notFoundTable": "Aucun produit trouvée."
    },
    "pagination": {
      "range": "{{start}} - {{end}} / {{total}}"
    }
  },
  "detailStock": {
    "showDescription": "Afficher la description",
    "hideDescription": "Fermer la description",
    "exportPdf": "Télécharger en PDF",
    "print": "Imprimer",
    "purchaseHistory": "Historique des achats",
    "info": {
      "shop": "{{lx.boutique}} :",
      "createdAt": "Date de creation :",
      "createdBy": "Créé par :",
      "email": "Email :",
      "lastActivity": "Dernière activité",
      "movementType": "Type de mouvement :"
    },
    "noShop": "Aucun résultat {{lx.boutique}}",
    "noActivity": "Non activitité",
    "noDescription": "Aucune description...",
    "productSection": "Produit",
    "table": {
      "myProducts": "Mes produits",
      "currentStock": "Stock actuel",
      "qtyToAdd": "Quantité à ajouter",
      "productCost": "Coût du produit",
      "qtyToRemove": "Quantité à retirer"
    },
    "signature": "Signature",
    "approvedBy": "Approuvé par",
    "receivedBy": "Reçu par",
    "historique": {
      "title": "Historique des achats",
      "allSellers": "Tous {{lx.vendeur.pluriel}}",
      "sellerFallback": "{{lx.vendeur}} #{{id}}",
      "totalCount": "Nombre total :",
      "netAmount": "Montant net :",
      "empty": "Aucun historique trouvé.",
      "loading": "Chargement de l'historique...",
      "productNotFound": "Produit introuvable pour charger l'historique.",
      "loadError": "Erreur lors du chargement de l'historique des achats.",
      "pagination": "{{start}} - {{end}} sur {{total}}",
      "columns": {
        "saleDate": "Date vente",
        "shop": "{{lx.boutique}}",
        "seller": "{{lx.vendeur}}",
        "client": "{{lx.client}}",
        "paymentMode": "Mode paiement",
        "quantity": "Quantité",
        "unitPrice": "Prix unitaire",
        "lineAmount": "Montant ligne",
        "discount": "Remise",
        "refund": "Remboursement"
      },
      "clientUnknown": "{{lx.client}} inconnu",
      "unknown": "Inconnu",
      "refundYes": "Oui ({{qty}} / {{amount}} {{currency}})",
      "refundNo": "Non",
      "export": {
        "pdf": "Télécharger en PDF",
        "excel": "Télécharger en Excel",
        "csv": "Télécharger en CSV"
      },
      "pdf": {
        "title": "HISTORIQUE DES ACHATS",
        "sectorLabel": "Secteur :",
        "emailLabel": "Email :",
        "phoneLabel": "Téléphone :",
        "productLabel": "Produit :",
        "locationDate": "{{location}}, le {{date}}",
        "locationDateSeparator": ", le ",
        "periodAll": "Période: toutes les dates",
        "periodRange": "Période: {{from}} au {{to}}",
        "product": "Produit : {{name}}",
        "footerGenerated": "Générée par Tchakeda",
        "page": "Page {{current}} / {{total}}",
        "columns": {
          "saleDate": "Date vente",
          "shop": "{{lx.boutique}}",
          "seller": "{{lx.vendeur}}",
          "client": "{{lx.client}}",
          "mode": "Mode",
          "qty": "Qte",
          "unitPrice": "Prix U.",
          "amount": "Montant",
          "discount": "Remise"
        },
        "totalCount": "Nombre total",
        "grossAmount": "Montant global ({{currency}})",
        "globalDiscount": "Remise globale ({{currency}})",
        "netAmount": "Montant net ({{currency}})"
      }
    }
  },
  "inventaires": {
    "title": "Mes inventaires",
    "createButton": "Inventaire",
    "deleteSelectedTitle": "Supprimer les sessions sélectionnées",
    "selectAtLeastOneTitle": "Sélectionnez au moins une session",
    "searchPlaceholder": "Recherche...",
    "loading": "Chargement des inventaires…",
    "empty": "Aucun inventaire trouvé {{lx.boutique}}.",
    "allShops": "Tous {{lx.boutique.pluriel}}",
    "dateFilter": {
      "today": "Aujourd'hui",
      "yesterday": "Hier",
      "semaine": "Semaine",
      "moisEnCours": "Mois en cours",
      "anneeEnCours": "Année en cours",
      "custom": "Personnalisé",
      "from": "Du",
      "to": "Au",
      "period": "Période"
    },
    "columns": {
      "inventoryDate": "Date inventaire",
      "shop": "{{lx.boutique}}",
      "responsible": "Responsable",
      "reference": "Référence",
      "status": "Statut",
      "description": "Description",
      "products": "Produits",
      "totalGap": "Écart total"
    },
    "status": {
      "validated": "Validé",
      "draft": "Brouillon"
    },
    "deleteModal": {
      "title": "Confirmation de suppression",
      "cancel": "Annuler",
      "delete": "Supprimer",
      "processing": "Traitement...",
      "confirmOne": "Êtes-vous sûr de vouloir supprimer 1 session d'inventaire ?",
      "confirmMany": "Êtes-vous sûr de vouloir supprimer {{count}} sessions d'inventaire ?",
      "confirmValidatedMany": "Êtes-vous sûr de vouloir supprimer {{count}} sessions d'inventaire ? Les sessions validées seront d'abord annulées ({{validatedCount}})."
    },
    "messages": {
      "invalidDateRange": "La date de début doit être antérieure ou égale à la date de fin.",
      "missingDates": "Veuillez renseigner la date de début et la date de fin.",
      "loadError": "Erreur lors du chargement des inventaires.",
      "deleteSuccessOne": "Inventaire supprimé avec succès !",
      "deleteSuccessMany": "Inventaires supprimés avec succès !",
      "deleteError": "Erreur lors de la suppression des sessions.",
      "cancelValidatedError": "Erreur lors de l'annulation des sessions validées."
    },
    "labels": {
      "shopFallback": "{{lx.boutique}} #{{id}}",
      "productFallback": "Produit #{{id}}",
      "userFallback": "Utilisateur #{{id}}",
      "actionDefault": "Inventaire"
    },
    "pagination": {
      "range": "{{start}} - {{end}} / {{total}}"
    }
  },
  "inventaireDetail": {
    "title": "Détail inventaire",
    "edit": "Éditer",
    "fields": {
      "inventoryDate": "Date inventaire",
      "lastUpdate": "Dernière mise à jour",
      "shop": "{{lx.boutique}}",
      "responsible": "Responsable",
      "status": "Statut",
      "linesEntered": "Lignes saisies",
      "reference": "Référence",
      "validationDate": "Date validation",
      "totalGap": "Écart total",
      "totalGapValue": "Valeur écart totale",
      "description": "Description"
    },
    "columns": {
      "product": "Produit",
      "description": "Description",
      "unitPrice": "P.Unitaire",
      "systemStock": "Stock système",
      "realStock": "Stock réel",
      "gap": "Écart",
      "gapAmount": "Montant écart",
      "lastUpdate": "Dernière mise à jour"
    },
    "status": {
      "validated": "Validé",
      "draft": "Brouillon"
    },
    "messages": {
      "notFound": "Détail introuvable. Retourne sur la liste des inventaires.",
      "draftSessionNotFound": "Session brouillon introuvable. Retourne sur la liste puis recharge."
    },
    "labels": {
      "shopFallback": "{{lx.boutique}} #{{id}}",
      "productFallback": "Produit #{{id}}",
      "userFallback": "Utilisateur #{{id}}"
    }
  },
  "facturePage": {
    "title": "Mouvements de stocks",
    "searchPlaceholder": "Recherche",
    "allShops": "Tous {{lx.boutique.pluriel}}",
    "loading": "Chargement {{lx.facture.pluriel}}…",
    "empty": "{{lx.facture.pluriel}} : aucun résultat.",
    "emptySearch": "{{lx.facture.pluriel}} : aucun résultat pour \"{{term}}\".",
    "emptyNoShop": "{{lx.boutique.pluriel}} : aucun résultat.",
    "columns": {
      "date": "Date",
      "invoiceNumber": "N° {{lx.facture}}",
      "type": "Type",
      "createdBy": "Créé par",
      "shop": "{{lx.boutique}}",
      "total": "Total",
      "actions": "Actions"
    },
    "types": {
      "transfer": "Transfert",
      "add": "Ajout",
      "reduction": "Réduction",
      "supply": "Approvisionnement"
    },
    "detail": {
      "closeAria": "Fermer",
      "info": "Informations",
      "shop": "{{lx.boutique}}",
      "createdBy": "Créé par",
      "phone": "Téléphone",
      "email": "Email",
      "supplierNumber": "Nº {{lx.fournisseur}}",
      "destinationShop": "{{lx.boutique}} : destination",
      "description": "Description",
      "productLines": "Lignes produits",
      "hideDescription": "Masquer la description",
      "showDescription": "Afficher la description",
      "downloadPdf": "Télécharger PDF",
      "notSpecified": "Non spécifié"
    },
    "table": {
      "code": "Code",
      "designation": "Désignation",
      "unitPrice": "Prix unitaire",
      "qty": "Qté",
      "total": "Total"
    },
    "downloadPdfTitle": "Télécharger PDF",
    "labels": {
      "unknownShop": "{{lx.boutique}} : inconnu(e)",
      "notSpecified": "Non spécifié",
      "noShop": "Aucun résultat {{lx.boutique}}"
    },
    "pagination": {
      "range": "{{start}} - {{end}} / {{total}}"
    }
  },
  "stockAdjustment": {
    "backToStocks": "Stocks",
    "backTitle": "Retour sur la page stock",
    "title": "Ajustements des stocks",
    "type": "Type",
    "shop": "{{lx.boutique}}",
    "shopPlaceholder": "Saisir {{lx.boutique}}",
    "descriptionOptional": "Description (Facultatif)",
    "descriptionPlaceholder": "Saisis une description pour ce produit",
    "descriptionMinLength": "La description doit avoir au moins 2 caractères.",
    "descriptionMaxLength": "La description ne doit pas dépasser 100 caractères.",
    "supplierName": "Nom {{lx.fournisseur}}",
    "selectSupplier": "-- Sélectionner {{lx.fournisseur}} --",
    "supplierInvoiceNumber": "N° facture {{lx.fournisseur}}",
    "actions": {
      "add": "Ajouter",
      "reduce": "Reduire",
      "transfer": "Transfert",
      "inventory": "Inventaire"
    },
    "stockManagement": "Gestion des stocks",
    "transferManagement": "Gestion des transferts",
    "inventoryManagement": "Gestion d'inventaire",
    "table": {
      "myProducts": "Mes produits",
      "qtyToAdd": "Quantité à ajouter",
      "qtyToReduce": "Quantité à reduire",
      "transferQty": "Quantité de transfert",
      "currentStock": "Stock actuel",
      "unitCost": "Coût unitaire",
      "stockAfter": "Stock après",
      "destinationShop": "{{lx.boutique}} : destination",
      "realStock": "Stock réel",
      "gap": "Écart"
    },
    "searchProduct": "Recherche par nom, code...",
    "selectShopFirst": "Veuillez sélectionner {{lx.boutique}}",
    "loadingMoreProducts": "Chargement de plus de produits...",
    "loadingProducts": "Chargement des produits...",
    "noProductsInShop": "Aucun produit disponible {{lx.boutique}}",
    "alreadySelected": "(Déjà sélectionnée)",
    "suspended": "(Suspendue)",
    "ref": "Réf",
    "status": {
      "validated": "Validé",
      "draft": "Brouillon"
    },
    "saving": "Enregistrement...",
    "buttons": {
      "cancel": "Annuler",
      "adjust": "Ajuster",
      "transfer": "Transférer",
      "draft": "Brouillon",
      "validateInventory": "Valider inventaire"
    },
    "messages": {
      "selectProduct": "Veuillez sélectionner un produit",
      "invalidQty": "Quantité invalide",
      "selectShop": "Veuillez sélectionner {{lx.boutique}}",
      "selectAtLeastOneProduct": "Veuillez ajouter au moins un produit pour l'inventaire",
      "invalidRealStock": "Veuillez saisir un stock réel valide",
      "negativeRealStock": "Le stock réel ne peut pas être négatif",
      "productAlreadyInList": "{{name}} est déjà dans la liste !",
      "transferAlreadyInList": "Ce transfert est déjà dans la liste",
      "inventoryValidatedSuccess": "Inventaire validé avec succès !",
      "serverError": "Erreur serveur",
      "draftSavedSuccess": "Brouillon enregistré avec succès !",
      "selectBoutiques": "Veuillez sélectionner {{lx.boutique.pluriel}}",
      "sourceDestDifferent": "La source et la destination doivent être différentes",
      "transferSuccess": "Transfert(s) effectué(s) avec succès",
      "transferError": "Erreur lors du transfert",
      "adjustSuccess": "Les produits ont été ajustés avec réussite !",
      "stockNegative": "Le stock ne peut pas devenir négatif",
      "invalidQtyOrStock": "Quantité invalide ou stock insuffisant",
      "productNotFound": "Produit non trouvée",
      "technicalError": "Erreur technique - Veuillez réessayer plus tard",
      "unknownProduct": "Produit inconnu",
      "selectValidProducts": "Veuillez sélectionner au moins un produit avec une quantité valide",
      "selectSupplierRequired": "Veuillez sélectionner {{lx.fournisseur}}",
      "draftMinProducts": "Veuillez ajouter au moins un produit pour enregistrer le brouillon",
      "notAuthenticated": "Non authentifié"
    }
  },
  "clientsPage": {
    "title": "{{lx.client_menu.pluriel}}",
    "addClient": "Ajouter {{lx.client}}",
    "listTitle": "Liste {{lx.client.pluriel}}",
    "searchPlaceholder": "Recherche...",
    "loadingClients": "Chargement {{lx.client.pluriel}}…",
    "loadingEntreprises": "Chargement des entreprises…",
    "tabs": {
      "individual": "{{lx.client_individuel}}",
      "enterprise": "{{lx.client_entreprise}}"
    },
    "columns": {
      "photo": "Photo",
      "fullName": "Nom & prénom",
      "email": "Email",
      "address": "Adresse",
      "phone": "Téléphone",
      "company": "Entreprise",
      "createdAt": "Date de Creation",
      "logo": "Logo",
      "name": "Nom",
      "country": "Pays",
      "headquarters": "Siège",
      "sector": "Secteur"
    },
    "empty": {
      "noName": "Nom est vide",
      "noEmail": "Non email",
      "noAddress": "Non adresse",
      "noPhone": "Non numéro",
      "noDate": "-",
      "emptyName": "Nom vide",
      "emptyCompanyName": "Nom vide",
      "noPhoneEnterprise": "Non téléphone"
    },
    "labels": {
      "userAccount": "Compte utilisateur",
      "companyAffiliation": "Affiliation d'Entreprise"
    },
    "popup": {
      "title": "Ajouter {{lx.client}}",
      "individual": "{{lx.client_individuel}}",
      "enterprise": "{{lx.client_entreprise}}"
    },
    "messages": {
      "noClient": "{{lx.client.pluriel}} : aucun résultat.",
      "noEntreprise": "Aucune entreprise disponible.",
      "importSuccess": "Import terminé : {{count}} × {{lx.client}} créé(s){{ignored}}",
      "noClientAdded": "Import impossible {{lx.client}}.",
      "importUnknownError": "Erreur inconnue lors de l’import.",
      "fileTooLarge": "Fichier trop volumineux (max 5 Mo).",
      "unsupportedFormat": "Format non supporté. Utilisez .xlsx ou .xls"
    },
    "importExcel": "Importer {{lx.client.pluriel}}",
    "excelImport": {
      "title": "Import Excel {{lx.client.pluriel}}",
      "instructionsTitle": "Instructions",
      "step1": "Téléchargez le modèle Excel ci-dessous",
      "step2": "Remplissez les colonnes avec vos données",
      "step3": "Les colonnes obligatoires sont marquées d'un *",
      "step4": "Évitez de modifier les en-têtes de colonnes",
      "columnsTitle": "Colonnes du template (identiques pour les deux types) :",
      "col0": "Type",
      "col0Desc": "PARTICULIER ou ENTREPRISE",
      "col1Part": "Nom Complet",
      "col1Ent": "Nom Entreprise",
      "col1Desc": "Nom du client ou de l'entreprise",
      "col2": "Email",
      "col2Desc": "Adresse email (facultatif)",
      "col3": "Téléphone",
      "col3Desc": "Numéro de téléphone (facultatif)",
      "col4": "Adresse",
      "col4Desc": "Adresse postale (facultatif)",
      "col5Part": "Ville",
      "col5Ent": "Siège",
      "col5Desc": "Ville du client / Siège de l'entreprise (facultatif)",
      "col6": "Pays",
      "col6Desc": "Pays (facultatif)",
      "col7Part": "Poste",
      "col7Ent": "Secteur",
      "col7Desc": "Poste du client / Secteur de l'entreprise (facultatif)",
      "col8": "Note",
      "col8Desc": "Note libre (PARTICULIER uniquement, facultatif)",
      "noteEntreprise": "ENTREPRISE → crée uniquement un client entreprise",
      "noteParticulier": "PARTICULIER → crée un client individuel",
      "downloadTemplate": "Télécharger le modèle Excel",
      "clickToSelectFile": "Cliquez pour sélectionner un fichier",
      "acceptedFormats": "Formats acceptés : .xlsx, .xls (max 5 Mo)",
      "errorsTitle": "Erreurs détectées :"
    },
    "actions": {
      "cancel": "Annuler",
      "import": "Importer",
      "importing": "Importation...",
      "confirm": "Confirmer"
    }
  },
  "clientDetail": {
    "back": "{{lx.client.pluriel}}",
    "backTitle": "Retour {{lx.client.pluriel}}",
    "creating": "Création en cours...",
    "profilePhoto": "Photo de profil {{lx.client}}",
    "photoFormats": "Formats JPG, GIF ou PNG autorisés. Taille maximale : 800 Ko.",
    "deleteClient": "Supprimer {{lx.client}}",
    "personalInfo": "Informations Personnelles",
    "fields": {
      "fullName": "Nom et prénom",
      "email": "Email",
      "address": "Adresse",
      "company": "Entreprise",
      "country": "Pays",
      "phone": "Téléphone",
      "city": "Ville",
      "position": "Poste",
      "belongsToCompany": "J'appartient à une entreprise",
      "myCompany": "Mon entreprise",
      "createCompany": "Créer une entreprise"
    },
    "placeholders": {
      "fullName": "Saisis le nom et prénom",
      "email": "Saisis l'email",
      "address": "Saisissez votre adresse",
      "company": "Nom de l'entreprise",
      "phone": "Saisis le numéro de téléphone",
      "city": "Saisis la viille",
      "position": "Saisissez votre poste",
      "selectCompany": "Selectionner un entreprise"
    },
    "tabs": {
      "invoices": "{{lx.facture.pluriel}} {{lx.client}}",
      "purchases": "Achat",
      "notes": "{{lx.note.pluriel}}",
      "prospections": "Prospections",
      "debt": "Dette"
    },
    "factures": {
      "allInvoices": "Tous {{lx.facture.pluriel}}",
      "loading": "Chargement {{lx.facture.pluriel}}...",
      "empty": "Aucun résultat {{lx.facture}} ({{lx.client}})",
      "notLinked": "Cette {{lx.facture}} n'est pas liée à cet utilisateur.",
      "columns": {
        "number": "Numéro",
        "date": "Date",
        "status": "Statut",
        "amount": "Montant"
      },
      "total": "Total",
      "zoomTitle": "Cliquer pour agrandir la lecture",
      "zoomClose": "Réduire l'aperçu",
      "preview": {
        "sector": "Secteur:",
        "email": "Email:",
        "phone": "Téléphone:",
        "proformaTitle": "{{lx.facture_proforma}}:",
        "owedTo": "Doit :",
        "designation": "Désignation",
        "description": "Description",
        "unitPrice": "PU",
        "quantity": "Quantité",
        "amount": "Montant ({{currency}})",
        "totalHT": "Total HT",
        "discountZero": "Remise 0%",
        "vatZero": "TVA 0%",
        "totalTTC": "Montant TTC",
        "stoppedAmount": "Arrêté la présente {{lx.facture}} à la somme de : Zero .....",
        "companyName": "Nom Entreprise",
        "companySector": "Secteur Entreprise",
        "signatory": "Signataire",
        "signatoryName": "Nom Signataire",
        "addressMock": "Adresse : Rue / Pays",
        "address": "Adresse : {{address}} /{{country}}",
        "discount": "Remise"
      }
    },
    "achats": {
      "allPurchases": "Toutes les achats",
      "columns": {
        "invoiceNumber": "N° {{lx.facture}}",
        "date": "Date",
        "paymentMode": "Mode Paiement",
        "amount": "Montant"
      },
      "total": "Total",
      "seller": "{{lx.vendeur}}",
      "subject": "Objet"
    },
    "prospections": {
      "all": "Toutes les prospections",
      "loading": "Chargement des prospections...",
      "empty": "Aucune prospection {{lx.client}}",
      "noneSelected": "Aucune prospection sélectionnée",
      "columns": {
        "type": "Type",
        "date": "Date",
        "product": "Produit",
        "notes": "{{lx.note.pluriel}}",
        "followUp": "Suivi"
      },
      "product": "Produit",
      "notes": "{{lx.note.pluriel}}",
      "assignedTo": "Assigné à",
      "nextFollowUp": "Prochain suivi",
      "noFollowUp": "Aucun suivi prévu",
      "noNote": "Aucun résultat {{lx.note}}",
      "noNoteAvailable": "Aucun résultat {{lx.note}}",
      "none": "Aucun",
      "totalCount": "Total : {{count}} prospection(s)",
      "interactionId": "ID de l'interaction"
    },
    "dette": {
      "remainingAmount": "MONTANT RESTANT À RÉGLER",
      "gapCount": "{{count}} écart",
      "gapCountPlural": "{{count}} écarts",
      "detailTitle": "Détail des écarts",
      "amount": "Montant",
      "remaining": "Reste à régler",
      "empty": "Aucun écart caisse {{lx.client}}"
    },
    "popupAddCompany": {
      "title": "Ajouter une entreprise",
      "companyName": "Nom entreprise",
      "email": "Email",
      "address": "Adresse",
      "city": "Ville",
      "country": "Pays",
      "phone": "Téléphone",
      "sector": "Secteur",
      "placeholders": {
        "companyName": "Saisis le nom de l'entreprise",
        "email": "Saisis l'email",
        "address": "Saisis l'adresse",
        "city": "Saisis le siège",
        "phone": "Saisis le numéro de téléphone",
        "sector": "Saisis le secteur"
      }
    },
    "deleteConfirm": "Êtes-vous sûr de vouloir supprimer {{lx.client}} ?",
    "messages": {
      "compressionError": "Erreur de compression : Le format de l'image n'est pas valide.",
      "invalidImageFormat": "Seuls les formats JPG, PNG sont acceptés",
      "loadError": "Erreur de chargement {{lx.client}}",
      "editModeRequired": "Activez le mode édition pour créer une entreprise",
      "createError": "Erreur lors de la création",
      "formErrors": "Veuillez corriger les erreurs dans le formulaire.",
      "selectOrCreateCompany": "Veuillez sélectionner ou créer une entreprise.",
      "updateSuccess": "{{lx.client}} : modification réussie !",
      "updateError": "Erreur de modification {{lx.client}}",
      "deleteUnavailable": "{{lx.client}} : suppression impossible.",
      "deleteSuccess": "{{lx.client}} : suppression réussie !",
      "deleteError": "Erreur lors de la suppression.",
      "errorPrefix": "Une erreur est survenue : ",
      "salesLoadError": "Impossible de récupérer les ventes.",
      "loadInvoicesError": "Erreur de chargement {{lx.facture.pluriel}}",
      "loadProspectionsError": "Erreur lors du chargement des prospections"
    },
    "interactionTypes": {
      "CALL": "Appel téléphonique",
      "EMAIL": "Email",
      "MEETING": "Réunion",
      "NOTE": "{{lx.note}}"
    },
    "invoiceStatus": {
      "BROUILLON": "BROUILLON",
      "ENVOYE": "ENVOYE",
      "APPROUVE": "APPROUVE",
      "VALIDE": "VALIDE",
      "PAYEE": "Payée",
      "CREDIT": "CREDIT"
    }
  },
  "clientEntrepriseDetail": {
    "back": "{{lx.client.pluriel}}",
    "creating": "Création en cours...",
    "editTitle": "Modifier : entreprise ({{lx.client}})",
    "editClick": "Cliquer ici pour modifier",
    "closeEdit": "Fermer l'édition",
    "fields": {
      "companyName": "Nom d'entreprise",
      "email": "Email",
      "country": "Pays",
      "phone": "Téléphone",
      "city": "Ville",
      "sector": "Secteur"
    },
    "placeholders": {
      "companyName": "Saisis le nom d'entreprise",
      "email": "Saisis l'email",
      "phone": "Saisis le numéro de téléphone",
      "city": "Saisis le siege",
      "sector": "Saisis le secteur"
    },
    "validation": {
      "required": "Ce champ est obligatoire",
      "minLength2": "Minimum 2 caractères",
      "invalidEmail": "Format d'email invalide",
      "invalidPhoneForCountry": "Format invalide pour {{country}}. Exemple: {{example}}"
    },
    "affiliatedClients": "{{lx.client.pluriel}} affiliés à l'entreprise",
    "noAffiliated": "Aucun résultat {{lx.client}} affilié",
    "nameUnavailable": "Nom non disponible",
    "thisCompany": "cette entreprise",
    "messages": {
      "updateSuccess": "Entreprise mise à jour avec succès !",
      "updateError": "Erreur lors de la modification",
      "formErrors": "Veuillez corriger les erreurs dans le formulaire",
      "noClient": "{{lx.client.pluriel}} : aucun résultat."
    }
  },
  "consultantsPage": {
    "title": "Consultants",
    "listTitle": "Candidatures consultant",
    "loading": "Chargement des candidatures…",
    "columns": {
      "photo": "Photo",
      "fullName": "Nom complet",
      "country": "Pays",
      "email": "E-mail",
      "level": "Niveau souhaité",
      "status": "Statut",
      "createdAt": "Date de candidature",
      "processedAt": "Date de traitement"
    },
    "filters": {
      "searchPlaceholder": "Rechercher par nom, prénom ou e-mail",
      "status": "Statut",
      "level": "Niveau",
      "dateStart": "Date début",
      "dateEnd": "Date fin",
      "allStatuses": "Tous les statuts",
      "allLevels": "Tous les niveaux",
      "reset": "Réinitialiser les filtres"
    },
    "status": {
      "pending": "En attente",
      "review": "En examen",
      "validated": "Validée",
      "rejected": "Rejetée"
    },
    "levels": {
      "partner": "Partenaire commercial",
      "junior": "Consultant junior",
      "senior": "Consultant senior"
    },
    "empty": "Aucune candidature trouvée",
    "notProvided": "Non renseigné",
    "stats": {
      "total": "Total candidatures",
      "inProgress": "{{pending}} en attente · {{review}} en examen",
      "byStatus": "Par statut",
      "byLevel": "Par niveau"
    }
  },
  "consultantsActifsPage": {
    "title": "Consultants",
    "listTitle": "Consultants certifiés",
    "loading": "Chargement des consultants…",
    "empty": "Aucun consultant trouvé",
    "columns": {
      "photo": "Photo",
      "fullName": "Nom complet",
      "country": "Pays",
      "code": "Code consultant",
      "email": "E-mail",
      "level": "Niveau",
      "status": "Statut",
      "reference": "Réf. candidature",
      "activeClients": "Clients actifs",
      "commissionPending": "Comm. en attente",
      "commissionPaid": "Comm. payées",
      "certificationDate": "Date certification"
    },
    "filters": {
      "searchPlaceholder": "Rechercher par nom, code ou e-mail",
      "status": "Statut",
      "level": "Niveau",
      "allStatuses": "Tous les statuts",
      "allLevels": "Tous les niveaux",
      "reset": "Réinitialiser les filtres"
    },
    "status": {
      "active": "Actif",
      "inactive": "Inactif",
      "suspended": "Suspendu"
    },
    "detail": {
      "back": "Consultants certifiés",
      "loading": "Chargement du consultant…",
      "loadError": "Impossible de charger le profil consultant.",
      "invalidId": "Identifiant consultant invalide.",
      "forbidden": "Accès refusé. Cette fiche est réservée aux administrateurs autorisés.",
      "notFound": "Consultant introuvable.",
      "viewCandidature": "Voir la candidature d'origine",
      "stats": {
        "activeClients": "Clients actifs",
        "monthRevenue": "Revenus du mois",
        "yearRevenue": "Revenus cumulés (année)",
        "commissionsPaid": "Commissions payées"
      },
      "sections": {
        "profile": "Profil",
        "certification": "Certification"
      },
      "fields": {
        "certificationDate": "Date certification",
        "nextUpgrade": "Prochaine mise à niveau",
        "certificationPaid": "Frais certification payés",
        "certificationAmount": "Montant certification",
        "upgradeDue": "Mise à niveau due",
        "candidature": "Candidature d'origine"
      },
      "tabs": {
        "clients": "Clients affiliés",
        "commissions": "Commissions",
        "upgrades": "Mises à niveau",
        "candidature": "Dossier candidature"
      },
      "clients": {
        "company": "Entreprise",
        "email": "E-mail",
        "country": "Pays",
        "city": "Ville",
        "acquiredAt": "Date acquisition",
        "status": "Statut suivi",
        "empty": "Aucun client affilié."
      },
      "commissions": {
        "pending": "En attente",
        "validated": "Validées",
        "paid": "Payées",
        "company": "Entreprise",
        "type": "Type",
        "base": "Montant base",
        "rate": "Taux",
        "amount": "Commission",
        "status": "Statut",
        "date": "Transaction",
        "paymentDate": "Date paiement",
        "recurrent": "Récurrent",
        "clickHint": "Cliquez sur une commission en attente pour la valider, ou sur une commission validée pour la marquer comme payée.",
        "rejected": "Refusée",
        "cancelled": "Annulée",
        "empty": "Aucune commission enregistrée."
      },
      "upgrades": {
        "current": "Période en cours",
        "done": "Effectuée",
        "late": "En retard",
        "upcoming": "À venir",
        "completed": "Effectuée",
        "markCompleted": "Marquer comme effectuée",
        "validatedOn": "Validée le",
        "empty": "Aucune mise à niveau enregistrée."
      },
      "actions": {
        "markFeesPaid": "Frais payés",
        "feesPaidConfirmTitle": "Confirmer le paiement",
        "feesPaidConfirm": "Confirmer que les frais de certification ont bien été payés ?",
        "feesPaidSuccess": "Frais de certification marqués comme payés.",
        "feesPaidError": "Impossible de marquer les frais comme payés.",
        "upgradeConfirmTitle": "Confirmer la mise à niveau",
        "upgradeMarkConfirm": "Confirmer que cette période de mise à niveau est effectuée ?",
        "upgradeUnmarkConfirm": "Confirmer que cette période n'est plus marquée comme effectuée ?",
        "upgradesSaved": "Mises à niveau enregistrées.",
        "upgradesError": "Impossible d'enregistrer les mises à niveau.",
        "addMaterialCommission": "Commission matériel",
        "addSubscriptionCommission": "Commission abonnement",
        "materialFormTitle": "Enregistrer une commission matériel",
        "subscriptionFormTitle": "Enregistrer une commission abonnement",
        "company": "Entreprise cliente",
        "selectCompany": "Sélectionner une entreprise",
        "baseAmount": "Montant base (FCFA)",
        "baseAmountPlaceholder": "Ex. 500000",
        "sourceId": "Référence source",
        "sourceIdPlaceholder": "Ex. FACT-2026-00123",
        "renewal": "Renouvellement (Junior/Senior)",
        "saveCommission": "Enregistrer la commission",
        "commissionSuccess": "Commission enregistrée.",
        "commissionError": "Impossible d'enregistrer la commission.",
        "noClientForCommission": "Aucun client affilié : impossible d'enregistrer une commission.",
        "validateCommission": "Valider",
        "validateCommissionTitle": "Valider la commission",
        "validateCommissionConfirm": "Confirmer la validation de cette commission ?",
        "validateCommissionSuccess": "Commission validée.",
        "validateCommissionError": "Impossible de valider la commission.",
        "payCommission": "Marquer payée",
        "payCommissionTitle": "Marquer comme payée",
        "payCommissionConfirm": "Confirmer le versement de cette commission ?",
        "payCommissionDate": "Date de paiement",
        "payCommissionSuccess": "Commission marquée comme payée.",
        "payCommissionError": "Impossible de marquer la commission comme payée."
      },
      "candidature": {
        "seniorTitle": "Informations entreprise (candidature)",
        "filesTitle": "Justificatifs"
      }
    }
  },
  "consultantCandidatureForm": {
    "title": "Devenir consultant",
    "subtitle": "Rejoignez le réseau Tchakɛda en quelques minutes",
    "brand": {
      "eyebrow": "Programme consultant",
      "lead": "Développez votre activité avec nous",
      "tagline": "Partagez votre expertise, accompagnez les entreprises et construisez un revenu durable."
    },
    "stepAria": "Étape {{current}} sur {{total}}",
    "steps": {
      "identity": "Vos coordonnées",
      "chooseLevel": "Choisissez le niveau qui vous correspond",
      "profile": "Votre parcours professionnel",
      "finalize": "Motivation",
      "dossierFor": "Complétez votre dossier — {{level}}"
    },
    "pricing": {
      "hint": "Comparez les offres et sélectionnez celle qui correspond à vos ambitions.",
      "entryCost": "Coût d'entrée",
      "advantagesTitle": "Avantages",
      "remunerationTitle": "Rémunération",
      "conditionsTitle": "Conditions",
      "recommended": "Populaire",
      "selected": "Sélectionné",
      "partner": {
        "cost": "50 000 FCFA",
        "advantage1": "Formation certifiante",
        "advantage2": "Accès au réseau Tchakeda",
        "advantage3": "Développement d'un portefeuille clients",
        "remuneration": "10 % sur les abonnements + 5 % sur les ventes de matériel",
        "conditions": "Aucune condition particulière",
        "cta": "Choisir Partenaire"
      },
      "junior": {
        "cost": "100 000 FCFA",
        "advantage1": "Tous les avantages Partenaire Commercial",
        "advantage2": "Formations certifiées à tarif libre",
        "advantage3": "Suivi et accompagnement des clients",
        "remuneration": "15 % récurrents sur les abonnements + 5 % matériel + revenus des formations",
        "conditions": "Certification obligatoire",
        "cta": "Choisir Junior"
      },
      "senior": {
        "cost": "200 000 FCFA",
        "advantage1": "Tous les avantages précédents",
        "advantage2": "Gestion complète du portefeuille clients",
        "advantage3": "Mises à jour et recommandations",
        "advantage4": "Formations certifiées à tarif libre",
        "remuneration": "20 % récurrents sur les abonnements + 7 % matériel + revenus des formations",
        "conditions": "Local professionnel et entreprise formalisée (obligatoire)",
        "cta": "Choisir Senior"
      }
    },
    "optional": "Facultatif",
    "motivationHint": "Minimum {{min}} caractères",
    "candidatPhoto": {
      "title": "Votre photo",
      "hint": "Portrait récent avec le visage clairement visible.",
      "formats": "JPG · PNG · WEBP · 5 Mo"
    },
    "files": {
      "photoCandidat": "Photo du candidat",
      "photoEntreprise": "Photo de l'entreprise",
      "fichierRegistreCommerce": "Scan du registre de commerce (RCCM)",
      "fichierNif": "Scan du NIF",
      "hints": {
        "photoCandidat": "Portrait, visage visible.",
        "photoEntreprise": "Façade, enseigne ou local professionnel.",
        "fichierRegistreCommerce": "Document officiel RCCM (scan ou photo).",
        "fichierNif": "Document fiscal NIF (scan ou photo)."
      }
    },
    "seniorBlock": {
      "title": "Informations entreprise",
      "subtitle": "Dossier requis pour le niveau consultant senior.",
      "legalSection": "Identité juridique",
      "docsTitle": "Justificatifs",
      "incomplete": "Veuillez compléter tous les champs et joindre les justificatifs requis.",
      "photoTitle": "Photo entreprise",
      "photoEntreprise": "Photo de l'entreprise",
      "photoHint": "Façade, enseigne ou local professionnel visible.",
      "nif": "NIF / Identifiant fiscal",
      "nifShort": "NIF",
      "rc": "Registre de commerce",
      "rcShort": "Registre commerce",
      "localAddress": "Adresse du local professionnel",
      "localAddressShort": "Adresse du local pro.",
      "justificatifEntreprise": "Justificatif entreprise",
      "justificatifLocal": "Justificatif du local professionnel",
      "justificatifLocalShort": "Justificatif local",
      "chooseFile": "Choisir un fichier",
      "compressing": "Compression en cours…",
      "uploadHint": "PDF, JPG ou PNG — max. 5 Mo",
      "removeFile": "Supprimer le fichier",
      "formats": "JPG · PNG · WEBP · 5 Mo",
      "scanFormats": "PDF · JPG · PNG · 5 Mo"
    },
    "back": "Retour",
    "continue": "Continuer",
    "submit": "Envoyer ma candidature",
    "submitting": "Envoi en cours…",
    "uploadingFiles": "Envoi des justificatifs…",
    "alreadyAccount": "Déjà un compte ?",
    "signIn": "Se connecter",
    "success": {
      "title": "Candidature envoyée !",
      "message": "Merci pour votre intérêt. Notre équipe examinera votre dossier et vous contactera par e-mail.",
      "reference": "Référence : {{reference}}",
      "backToLogin": "Retour à la connexion"
    },
    "errors": {
      "required": "Ce champ est requis",
      "email": "Adresse e-mail invalide",
      "phone": "Le numéro est requis",
      "phonePattern": "Format invalide pour le pays sélectionné",
      "country": "Le pays est requis",
      "level": "Veuillez choisir un niveau",
      "experience": "Indiquez vos années d'expérience (0 à 60)",
      "motivationMin": "La motivation doit contenir au moins {{min}} caractères",
      "fileRequired": "Ce justificatif est obligatoire",
      "fileType": "Format non accepté. Utilisez JPG, PNG ou WEBP.",
      "scanFileType": "Format non accepté. Utilisez PDF, JPG ou PNG.",
      "fileSize": "Fichier trop volumineux (5 Mo maximum).",
      "fileCompression": "Impossible de traiter l'image. Réessayez avec un autre fichier.",
      "conflict": "Cet e-mail a déjà été utilisé ou vous avez atteint la limite de candidatures (3 par 24 h).",
      "validation": "Vérifiez les champs et les fichiers obligatoires avant de renvoyer.",
      "submit": "Impossible d'envoyer la candidature. Réessayez plus tard."
    }
  },
  "consultantDetail": {
    "back": "Candidatures consultant",
    "loading": "Chargement de la candidature…",
    "summary": "Résumé de la candidature",
    "personalInfo": "Informations personnelles",
    "professionalInfo": "Informations professionnelles",
    "adminInfo": "Informations administratives",
    "fields": {
      "firstName": "Prénom",
      "lastName": "Nom",
      "email": "E-mail",
      "country": "Pays",
      "phone": "Téléphone",
      "city": "Ville",
      "address": "Adresse",
      "desiredLevel": "Niveau souhaité",
      "educationLevel": "Niveau d'études",
      "currentProfession": "Profession actuelle",
      "experienceYears": "Années d'expérience",
      "yearsSuffix": "ans",
      "expertise": "Domaine d'expertise",
      "company": "Entreprise",
      "motivation": "Motivation",
      "rejectionReason": "Motif de rejet",
      "internalNotes": "Notes internes",
      "createdAt": "Date de candidature",
      "processedAt": "Date de traitement"
    },
    "tabs": {
      "history": "Historique"
    },
    "history": {
      "empty": "Aucun historique disponible",
      "columns": {
        "date": "Date",
        "action": "Action",
        "details": "Détails",
        "admin": "Administrateur"
      },
      "actions": {
        "submission": "Soumission",
        "validation": "Validation",
        "rejection": "Rejet",
        "review": "Mise en examen"
      }
    },
    "workflow": {
      "title": "Traitement de la candidature",
      "validatedTitle": "Candidature validée",
      "validatedDescription": "Le compte consultant a été créé. Aucune action supplémentaire n'est requise.",
      "rejectedTitle": "Candidature rejetée",
      "rejectedDescription": "Cette candidature a été rejetée."
    },
    "actions": {
      "title": "Actions",
      "notesLabel": "Notes internes (optionnel)",
      "examineTitle": "Passer en examen",
      "examineDescription": "Marquer la candidature en cours d'évaluation.",
      "examineNotesPlaceholder": "Ex. : Premier contact téléphonique effectué",
      "examine": "Passer en examen",
      "validateTitle": "Valider la candidature",
      "validateDescription": "Approuver la candidature et créer le compte consultant.",
      "validateNotesPlaceholder": "Ex. : Profil validé par le comité",
      "validateWarning": "Crée un compte consultant. Action irréversible.",
      "validate": "Valider la candidature",
      "examineConfirm": "Confirmer le passage en examen de cette candidature ?",
      "validateConfirm": "Confirmer la validation ? Un compte consultant sera créé immédiatement.",
      "reject": "Rejeter",
      "rejectTitle": "Rejeter la candidature",
      "rejectConfirm": "Le candidat recevra un e-mail. Cette action est définitive.",
      "rejectPlaceholder": "Ex. : Expérience insuffisante dans le domaine demandé"
    },
    "messages": {
      "invalidId": "Identifiant de candidature invalide",
      "loadError": "Impossible de charger la candidature",
      "examineSuccess": "Candidature passée en examen.",
      "examineError": "Impossible de passer la candidature en examen",
      "validateSuccess": "Candidature validée avec succès.",
      "validateError": "Impossible de valider la candidature",
      "rejectSuccess": "Candidature rejetée, e-mail envoyé.",
      "rejectError": "Impossible de rejeter la candidature",
      "consultantCode": "Code consultant"
    }
  },
  "consultantPortal": {
    "dashboard": {
      "title": "Espace consultant",
      "subtitle": "Vue d'ensemble de votre activité et de votre certification.",
      "overviewTitle": "Activité consultant",
      "summary": "Synthèse",
      "loading": "Chargement du tableau de bord…",
      "code": "Code consultant",
      "revenueMonth": "Revenus du mois",
      "revenueMonthHint": "Mois en cours",
      "revenueYear": "Revenus cumulés (année)",
      "revenueYearHint": "Depuis janvier",
      "activeClients": "Clients actifs",
      "certificationExpiry": "Expiration certification",
      "nextDeadline": "Prochaine échéance",
      "viewClients": "Mes clients"
    },
    "commissions": {
      "title": "Commissions",
      "subtitle": "Historique et taux de commission selon votre niveau.",
      "loading": "Chargement des commissions…",
      "empty": "Aucune commission enregistrée.",
      "partnerBadge": "Commission uniquement à la première inscription",
      "ratesTitle": "Vos taux de commission",
      "pageInfo": "Page {{current}} / {{total}}",
      "rateTypes": {
        "certification": "Certification",
        "subscriptionSignup": "Abonnement (inscription)",
        "renewal": "Renouvellement",
        "material": "Matériel"
      },
      "types": {
        "certification": "Certification",
        "subscription": "Abonnement",
        "renewal": "Renouvellement",
        "material": "Matériel"
      },
      "columns": {
        "company": "Entreprise",
        "type": "Type",
        "rate": "Taux",
        "amount": "Montant",
        "status": "Statut",
        "date": "Date"
      },
      "totals": {
        "pending": "En attente",
        "validated": "Validées",
        "paid": "Payées"
      }
    },
    "clients": {
      "title": "Mes clients",
      "subtitle": "Entreprises acquises via votre activité de consultant.",
      "loading": "Chargement des clients…",
      "empty": "Aucun client pour le moment.",
      "partnerNotice": "En tant que partenaire commercial, vous pouvez consulter la liste de vos clients affiliés, sans accès au suivi opérationnel détaillé.",
      "followUpAvailable": "Suivi disponible",
      "followUpUnavailable": "Suivi non disponible",
      "columns": {
        "company": "Entreprise",
        "email": "E-mail",
        "location": "Localisation",
        "acquiredAt": "Date d'acquisition",
        "status": "Statut suivi",
        "followUp": "Suivi détaillé"
      }
    },
    "errors": {
      "loadDashboard": "Impossible de charger le tableau de bord consultant.",
      "loadProfil": "Impossible de charger le profil consultant.",
      "loadClients": "Impossible de charger la liste des clients.",
      "loadCommissions": "Impossible de charger les commissions."
    }
  },
  "fournisseursPage": {
    "title": "{{lx.fournisseur.pluriel}}",
    "addSupplier": "Ajouter {{lx.fournisseur}}",
    "listTitle": "Liste {{lx.fournisseur.pluriel}}",
    "loading": "Chargement {{lx.fournisseur.pluriel}}…",
    "columns": {
      "photo": "Photo",
      "name": "Nom",
      "company": "Société",
      "email": "Email",
      "phone": "Téléphone",
      "address": "Adresse",
      "createdAt": "Date de création"
    },
    "empty": "Aucun résultat {{lx.fournisseur}}",
    "notProvided": "Non renseigné"
  },
  "fournisseurDetail": {
    "back": "{{lx.fournisseur}}",
    "creating": "Création en cours...",
    "profilePhoto": "Photo de profil {{lx.fournisseur}}",
    "photoFormats": "Formats JPG, GIF ou PNG autorisés. Taille maximale : 800 Ko.",
    "deleteSupplier": "Supprimer {{lx.fournisseur}}",
    "personalInfo": "Informations Personnelles",
    "fields": {
      "fullName": "Nom et prénom",
      "company": "L'entreprise",
      "description": "Description",
      "country": "Pays",
      "phone": "Téléphone",
      "email": "Email",
      "city": "Ville",
      "address": "Adresse"
    },
    "placeholders": {
      "fullName": "Saisis le nom et prénom",
      "company": "Saisis l'entreprise",
      "description": "Saisis le description",
      "phone": "Saisis le numéro de téléphone",
      "email": "Saisis l'email",
      "city": "Saisis la ville",
      "address": "Saisis l'adresse"
    },
    "deleteConfirm": "Êtes-vous sûr de vouloir supprimer {{lx.fournisseur}} ?",
    "tabs": {
      "activeDebts": "Dettes actives",
      "supplierInvoices": "{{lx.facture.pluriel}} {{lx.fournisseur}}"
    },
    "dette": {
      "loading": "Chargement...",
      "totalRemaining": "Total restant",
      "noActiveDebt": "Aucune dette active.",
      "noInvoice": "Aucun résultat {{lx.facture}}.",
      "columns": {
        "number": "Numéro",
        "date": "Date",
        "designation": "Désignation",
        "remaining": "Reste",
        "amount": "Montant"
      },
      "prev": "Précédent",
      "next": "Suivant",
      "page": "Page {{current}} / {{total}}"
    },
    "modal": {
      "details": "Détails",
      "close": "Fermer",
      "information": "Informations",
      "supplier": "{{lx.fournisseur}}",
      "company": "Société",
      "createdBy": "Créé par",
      "orderer": "Ordonnateur",
      "date": "Date",
      "productLines": "Lignes produits",
      "designation": "Désignation",
      "unitPrice": "Prix unitaire",
      "qty": "Qté",
      "total": "Total",
      "remainingToPay": "Reste à payer",
      "attachment": "Pièce jointe",
      "pdf": "PDF",
      "image": "Image",
      "cannotPreview": "Le document ne peut pas être affiché dans cette fenêtre.",
      "openDownloadPdf": "Ouvrir / Télécharger le PDF"
    },
    "messages": {
      "invalidImageFormat": "Seuls les formats JPG, PNG sont acceptés",
      "compressionError": "Erreur de compression : Le fichier n'est pas une image.",
      "updateSuccess": "{{lx.fournisseur}} : mise à jour réussie !",
      "updateError": "Erreur lors de la mise à jour",
      "deleteUnavailable": "{{lx.fournisseur}} : suppression impossible.",
      "deleteSuccess": "{{lx.fournisseur}} : suppression réussie !",
      "deleteError": "Erreur lors de la suppression.",
      "errorPrefix": "Une erreur est survenue : ",
      "loadAchatsDettesError": "Erreur lors du chargement des achats et dettes"
    }
  },
  "clientEntreprisePage": {
    "back": "Entreprise {{lx.client.pluriel}}",
    "backTitle": "Retour : entreprise ({{lx.client}})",
    "creating": "Création en cours...",
    "logo": "Logo",
    "deleteCompany": "Supprimer Entreprise",
    "deleteCompanyAria": "Supprimer l'entreprise",
    "deleteConfirm": "Êtes-vous sûr de vouloir supprimer cette entreprise ?",
    "companyInfo": "Informations Entreprise",
    "editClick": "Cliquer ici pour modifier",
    "closeEdit": "Fermer l'édition",
    "fields": {
      "companyName": "Nom entreprise",
      "email": "Email",
      "sector": "Secteur",
      "country": "Pays",
      "phone": "Téléphone",
      "address": "Adresse",
      "city": "Ville"
    },
    "placeholders": {
      "companyName": "Saisis le nom de l'entreprise",
      "email": "Saisis l'email",
      "sector": "Saisis le secteur",
      "phone": "Saisis le numéro de téléphone",
      "address": "Saisis l'adresse",
      "city": "Saisis la ville"
    },
    "cancelOrBack": "Annuler",
    "save": "Modifier",
    "selectInvoicePreview": "Sélectionnez {{lx.facture}} (aperçu)",
    "emptyInvoices": "Aucun résultat {{lx.facture}} (entreprise)",
    "tabs": {
      "companyInvoices": "{{lx.facture.pluriel}} : entreprise",
      "purchases": "Achat",
      "prospections": "Prospections"
    },
    "footer": {
      "nina": "NINA",
      "rccm": "RCCM",
      "nif": "NIF",
      "bank": "Banque"
    },
    "messages": {
      "loadError": "Erreur lors du chargement",
      "updateSuccess": "Entreprise modifiée avec succès!",
      "updateError": "Erreur lors de la modification",
      "formErrors": "Veuillez corriger les erreurs dans le formulaire.",
      "deleteUnavailable": "Entreprise non disponible pour suppression.",
      "deleteSuccess": "Entreprise supprimée avec succès !",
      "deleteError": "Erreur lors de la suppression.",
      "salesLoadError": "Impossible de récupérer les ventes.",
      "loadInvoicesError": "Erreur de chargement {{lx.facture.pluriel}}",
      "loadProspectionsError": "Erreur lors du chargement des prospections"
    }
  },
  "factureProformaApercu": {
    "sector": "Secteur:",
    "email": "Email :",
    "phone": "Téléphone :",
    "proformaTitle": "{{lx.facture_proforma}} n˚",
    "dateOn": "le",
    "client": "{{lx.client}} :",
    "company": "Entreprise :",
    "object": "Object :",
    "columns": {
      "designation": "Désignation",
      "description": "Description",
      "unitPrice": "Prix Unitaire ({{currency}})",
      "quantity": "Quantité",
      "amount": "Montant ({{currency}})"
    },
    "totalHT": "Total HT",
    "discount": "Remise ({{percent}}%)",
    "commercialAmount": "Montant commercial",
    "vat": "TVA ({{percent}} %)",
    "totalTTC": "Montant TTC",
    "stoppedAmount": "Arrêté la présente {{lx.facture_proforma}} à la somme de :",
    "noData": "Aucune donnée d'aperçu…",
    "back": "Retour",
    "legalInfo": {
      "nina": "NINA : {{value}}",
      "rccm": "RCCM : {{value}}",
      "nif": "NIF : {{value}}",
      "bank": "Banque : {{value}}"
    },
    "addressInfo": {
      "label": "Adresse :",
      "full": "Adresse : {{address}} / {{siege}}-{{country}}",
      "addressSiege": "Adresse : {{address}} / {{siege}}",
      "addressCountry": "Adresse : {{address}} / {{country}}",
      "siegeCountry": "Adresse : {{siege}} / {{country}}",
      "addressOnly": "Adresse : {{address}}",
      "siegeOnly": "Adresse : {{siege}}",
      "countryOnly": "Adresse : {{country}}"
    }
  },
  "factureProforma": {
    "title": "{{lx.facture_proforma}}",
    "createInvoice": "Créer {{lx.facture_proforma.un}}",
    "createShort": "Créer",
    "searchPlaceholder": "Recherche {{lx.client}} ou numéro de facture",
    "restrictedAccess": "Accès restreint",
    "loading": "Chargement des {{lx.facture_proforma.pluriel}}…",
    "columns": {
      "invoiceNumber": "N° {{lx.facture_proforma}}",
      "date": "Date",
      "owedTo": "Doit",
      "designation": "Designation",
      "status": "Statut",
      "total": "Total",
      "followUpDate": "Date Relance",
      "product": "Produit",
      "quantity": "Quantité",
      "totalAmount": "Montant Total"
    },
    "tabs": {
      "allInvoices": "Toutes les {{lx.facture_proforma.pluriel}}",
      "draft": "Brouillon",
      "approval": "Approbation",
      "approved": "Approuvé",
      "sent": "Envoyé",
      "validated": "Validé",
      "cancelled": "Annulé"
    },
    "status": {
      "BROUILLON": "Brouillon",
      "APPROBATION": "Approbation",
      "APPROUVE": "Approuvé",
      "ENVOYE": "Envoyé",
      "VALIDE": "Validé",
      "ANNULE": "Annulé"
    },
    "empty": {
      "noInvoices": "Aucune {{lx.facture_proforma}} trouvée",
      "noInvoicesWithStatus": "Aucune {{lx.facture_proforma}} {{status}} trouvée",
      "noProducts": "Aucun produit dans cette {{lx.facture_proforma}}"
    },
    "invoiceCard": {
      "title": "{{lx.facture_proforma}}",
      "invoiceNumberPrefix": "N ",
      "clients": "{{lx.client}}(s) :",
      "date": "Date :",
      "stateLabel": "- Etat -",
      "totalTTC": "MONTANT TOTAL TTC :"
    },
    "noFollowUpDate": "pas de date",
    "creatorFilter": {
      "label": "Créateur",
      "all": "Tous les créateurs"
    },
    "pagination": {
      "range": "{{start}}-{{end}} sur {{total}}",
      "empty": "0 sur 0",
      "prevAria": "Page précédente",
      "nextAria": "Page suivante"
    }
  },
  "factureProformaDetail": {
    "back": "{{lx.facture_proforma}}",
    "backTitle": "Retour {{lx.facture_proforma.pluriel}}",
    "connecting": "Connexion en cours...",
    "notification": "Notification",
    "title": "Détails {{lx.facture_proforma}}",
    "actionRequired": "Action requise",
    "approvalMessage": "Cette {{lx.facture_proforma}} nécessite votre approbation. Veuillez cliquer sur le bouton \"Approuver\" ci-dessous.",
    "state": "État",
    "statusButtons": {
      "draft": "Brouillon",
      "approval": "Approbation",
      "approve": "Approuver",
      "send": "Envoyer",
      "validate": "Valider",
      "validated": "Validée"
    },
    "cancelledMessage": "Cette {{lx.facture_proforma}} a été annulée.",
    "confirmStatusChange": "Confirmer le changement de statut",
    "confirmStatusQuestion": "Êtes-vous sûr de vouloir {{status}} cette {{lx.facture_proforma}} ?",
    "invoiceTitle": "{{lx.facture_proforma}} : {{number}}",
    "preview": "Aperçu",
    "previewTitle": "Aperçu {{lx.facture_proforma}}",
    "confirmDeleteInvoice": "Êtes-vous sûr de vouloir supprimer {{lx.facture_proforma.le}}",
    "object": "Objet",
    "objectPlaceholder": "Saisis l'objet",
    "owedTo": "Doit",
    "email": "Email",
    "emailPlaceholder": "Saisis l'email",
    "fullNamePlaceholder": "Saisis le nom et prénom",
    "address": "Adresse",
    "addressPlaceholder": "Saisis l'adresse",
    "phone": "Numéro téléphone",
    "phonePlaceholder": "00 00 00 00",
    "companyClients": "Entreprise {{lx.client.pluriel}}",
    "companyAffiliationTitle": "Affiliation d'Entreprise",
    "name": "Nom",
    "namePlaceholder": "Saisis le nom ",
    "products": "Produits",
    "dragDropTitle": "Vous pouvez organiser vos produits par glisser-déposer",
    "dragToReorder": "Glisser pour réorganiser",
    "columns": {
      "designation": "Désignation",
      "description": "Description",
      "quantity": "Quantité",
      "unitPrice": "Prix Unitaire",
      "amount": "Montant ({{currency}})"
    },
    "productNamePlaceholder": "Nom produit",
    "descriptionPlaceholder": "Description",
    "quantityPlaceholder": "Quantité",
    "unitPricePlaceholder": "Prix unitaire",
    "resetPriceTitle": "Rétablir le prix original",
    "searchProductPlaceholder": "Recherche par nom, code...",
    "loadingMoreProducts": "Chargement de plus de produits...",
    "searchingAllProducts": "Recherche dans tous les produits...",
    "loading": "Chargement...",
    "searching": "Recherche...",
    "totalHT": "MONTANT TOTAL HT",
    "totalTTC": "MONTANT TOTAL TTC",
    "discountApplication": "Application de REMISE",
    "vatApplication": "Application de TVA",
    "vatPercent": "TVA (%)",
    "discountPercentPlaceholder": "Remise en %",
    "discountLabel": "REMISE",
    "discountAmountPlaceholder": "Montant remise",
    "commercialAmount": "MONTANT COMMERCIAL",
    "modify": "Modifier",
    "updating": "Modification...",
    "historyTitle": "Historique des actions",
    "myNotes": "🗒️ Mes {{lx.note.pluriel}}",
    "viewNotebookTitle": "Voir : cahier ({{lx.note.pluriel}})",
    "notifyUsers": "Notifier un utilisateurs",
    "assignTo": "Attribuer à :",
    "noUsersAvailable": "Aucun utilisateur disponible",
    "notifyHint": "Vous pouvez envoyer une notification à un utilisateur en cochant la case.",
    "notesListTitle": "Liste {{lx.note.pluriel}}",
    "confirmDeleteNote": "Voulez-vous vraiment supprimer {{lx.note}} ?",
    "deleteNote": " Supprimer",
    "editNote": "✏️ Modifier",
    "options": "Options",
    "followUpScheduled": "Relance prévue le :",
    "followUpShort": "Relance:",
    "duplicateProduct": "Ce produit est déjà dans la liste.",
    "followUpDateOptional": "Date de relance (facultative) :",
    "followUpDate": "Date de relance :",
    "selectUsersToNotify": "Sélectionnez les utilisateurs à notifier :",
    "noUsersToDisplay": "Aucun utilisateur à afficher",
    "sendMethod": "Methode d'envoi :",
    "physical": "Physique",
    "emailMethod": "Email",
    "otherMethod": "Autre méthode",
    "customSendMethod": "Méthode d'envoi personnalisée",
    "customSendIntro": "Veuillez préciser la méthode d'envoi de votre choix. Cette information est obligatoire pour valider l'envoi.",
    "customSendPlaceholder": "Exemple : Envoi par coursier, remis en main propre, etc.",
    "sending": "Envoi en cours...",
    "confirmSend": "Confirmer l'envoi",
    "send": "Envoyer",
    "confirm": "Confirmer",
    "to": "À",
    "cc": "Cc",
    "subject": "Objet",
    "addRecipientsPlaceholder": "Ajouter des destinataires...",
    "addCcPlaceholder": "Ajouter des adresses en copie...",
    "subjectPlaceholder": "Bienvenue à MyCompany !",
    "depositInstruction": "📍 Veuillez déposer {{lx.facture_proforma.le}} à l'adresse suivante :",
    "headOffice": "Siège :",
    "city": "Ville :",
    "country": "Pays :",
    "addAttachmentsTitle": "Ajouter des pièces jointes",
    "confirmCancel": {
      "title": "Confirmer l'annulation",
      "message": "Êtes-vous sûr de vouloir annuler cette {{lx.facture_proforma}} ? Cette action est irréversible.",
      "back": "Retour",
      "confirm": "Confirmer"
    },
    "labels": {
      "company": "Entreprise",
      "name": "Nom"
    },
    "placeholders": {
      "editNote": "Modifier {{lx.note}}...",
      "enterNote": "Saisir {{lx.note}}"
    },
    "userFallback": "Utilisateur",
    "createProduct": "Créer un produit",
    "createProductNamed": "Créer {{name}}",
    "createShort": "Créer",
    "messages": {
      "loadError": "Impossible de charger {{lx.facture_proforma.le}}",
      "updateError": "Erreur lors de la modification",
      "cancelSuccess": "{{lx.facture_proforma}} annulée avec succès",
      "cancelError": "Échec de l'annulation",
      "invalidNoteId": "ID invalide {{lx.note}} sélectionnée",
      "noteUpdated": "{{lx.note}} : modification réussie.",
      "noteUpdateError": "Erreur de modification {{lx.note}}",
      "noteSaved": "{{lx.note}} : enregistrement réussi.",
      "noteAddError": "Erreur d'ajout {{lx.note}}",
      "enterNote": "Veuillez saisir {{lx.note}}",
      "deleteNoteError": "Erreur de suppression {{lx.note}}.",
      "genericError": "Une erreur est survenue",
      "whatsappShareError": "Erreur lors de la préparation du partage WhatsApp",
      "deleteSuccess": "{{lx.facture_proforma}} supprimée avec succès.",
      "unknownUser": "Utilisateur inconnu",
      "systemUser": "Système",
      "invoiceCreated": "Création de {{lx.facture_proforma.le}} {{amount}}"
    },
    "emailBody": {
      "greeting": "Bonjour {{name}} ,",
      "intro": "Suite à notre échange, veuillez trouver ci-joint",
      "invoiceRef": "{{lx.facture_proforma}} {{number}}",
      "followUp": "correspondant à votre demande.",
      "moreInfo": "N'hésitez pas à revenir vers nous si vous avez besoin d'informations complémentaires ou si des ajustements sont nécessaires.",
      "finalize": "Nous restons à votre disposition pour finaliser la commande dès validation de votre part.",
      "replyOn": "vous pouvez nous répondre sur ce mail:",
      "regards": "Bien cordialement,"
    }
  },
  "factureReel": {
    "title": "{{lx.facture_reelle.pluriel}}",
    "listTitle": "Liste {{lx.facture_reelle.pluriel}}",
    "searchPlaceholder": "Recherche {{lx.client}} ou n° {{lx.facture_reelle}}...",
    "loading": "Chargement {{lx.facture_reelle.pluriel}}…",
    "refreshTitle": "Actualiser les {{lx.facture_reelle.pluriel}}",
    "restrictedAccess": "Accès restreint",
    "stats": {
      "totalInvoices": "Total {{lx.facture_reelle.pluriel}}",
      "paid": "{{lx.facture_reelle.pluriel}} payé(e)s",
      "partiallyPaid": "Partiellement payées",
      "unpaid": "{{lx.facture_reelle.pluriel}} non payé(e)s",
      "totalCount": "Nbre total :",
      "paidCount": "Nbre payées :",
      "partialCount": "Nbre partiellement :",
      "unpaidCount": "Nbre non payées :",
      "loadError": "Impossible de charger les statistiques."
    },
    "columns": {
      "invoiceNumber": "N° {{lx.facture_reelle}}",
      "date": "Date",
      "client": "{{lx.client}}",
      "products": "Produits",
      "status": "Statut",
      "total": "Total",
      "product": "Produit",
      "quantity": "Quantité"
    },
    "tabs": {
      "allInvoices": "Tous {{lx.facture_reelle.pluriel}}",
      "unpaid": "Non payé",
      "partiallyPaid": "Part. Payé",
      "paid": "Payé"
    },
    "status": {
      "unpaid": "Non payé",
      "partiallyPaid": "Part. payée",
      "paid": "Payée",
      "unknown": "Inconnu"
    },
    "empty": {
      "noInvoices": "Aucun résultat {{lx.facture_reelle}}"
    },
    "productsUnavailable": "Produits non disponibles",
    "invoiceCard": {
      "title": "{{lx.facture_reelle}}",
      "client": "{{lx.client}} :",
      "date": "Date :",
      "stateLabel": "- État -"
    },
    "paymentScheduled": {
      "title": "Paiement prévu : {{label}}",
      "aria": "Paiement prévu",
      "late": "En retard",
      "today": "Aujourd'hui",
      "tomorrow": "Demain"
    },
    "pagination": {
      "range": "{{start}}-{{end}} sur {{total}}",
      "empty": "0 sur 0",
      "prevAria": "Page précédente",
      "nextAria": "Page suivante"
    },
    "validatorFilter": {
      "label": "Validateur",
      "all": "Tous les validateurs"
    },
    "view": {
      "list": "Liste",
      "grid": "Cadre"
    },
    "messages": {
      "genericError": "Une erreur est survenue.",
      "renewSubscription": "Veuillez renouveler votre abonnement pour accéder à ce module.",
      "moduleNotFound": "Module facturation introuvable. Veuillez contacter le support.",
      "accessRestricted": "L'accès à ce module est restreint. Veuillez contacter le support.",
      "subscriptionExpired": "Votre abonnement est expiré, ou votre période d'essai est terminée. Veuillez contacter le support.",
      "trialExpired": "Votre période d'essai est terminée. Veuillez contacter le support.",
      "accessDisabled": "Votre accès à la plateforme est désactivé. Veuillez contacter le support.",
      "accessCheckError": "Erreur lors de la vérification d'accès. Veuillez réessayer ou contacter le support."
    }
  },
  "factureReelDetail": {
    "back": "{{lx.facture_reelle.pluriel}}",
    "backTitle": "Retour {{lx.facture_reelle.pluriel}}",
    "payment": "Paiement",
    "cancelInvoice": "Annuler {{lx.facture.le}}",
    "processing": "Traitement...",
    "seeProforma": "Voir {{lx.facture_proforma.le}}",
    "printTitle": "Imprimer {{lx.facture.le}}",
    "invoiceTitle": "{{lx.facture}} : {{number}}",
    "owedTo": "Doit :",
    "object": "Objet :",
    "sector": "Secteur :",
    "email": "Email :",
    "phone": "Téléphone :",
    "columns": {
      "designation": "Désignation",
      "description": "Description",
      "unitPrice": "Prix Unitaire ({{currency}})",
      "quantity": "Quantité",
      "amount": "Montant ({{currency}})"
    },
    "totals": {
      "totalHT": "Total HT",
      "discount": "Remise ({{percent}}%)",
      "commercial": "Montant commercial",
      "vat": "TVA ({{percent}} %)",
      "totalTTC": "Montant TTC",
      "amountPaid": "Montant payé",
      "amountRemaining": "Reste à payer",
      "amountPending": "À payer"
    },
    "stoppedAmount": "Arrêté la présente {{lx.facture}} à la somme de :",
    "forAcquit": "Pour acquit",
    "paymentSection": "Paiement de {{lx.facture.le}}",
    "paymentAmount": "Montant paiement",
    "paymentMode": "Mode de paiement",
    "paymentModePlaceholder": "Sélectionnez...",
    "remaining": "Restant: {{amount}} {{currency}}",
    "modes": {
      "CASH": "Espèce",
      "CHEQUE": "Chèque",
      "CARD": "Carte de crédit",
      "VIREMENT": "Virement bancaire",
      "MOBILE": "Mobile Money",
      "MOBILE_MONEY": "Mobile money"
    },
    "payInvoice": "Payer {{lx.facture.le}}",
    "paymentHistory": "Historique des paiements",
    "amountDue": "Montant dû",
    "amountRemaining": "Montant restant",
    "emptyPayments": "Aucun paiement enregistré",
    "collectedBy": "Encaissé par",
    "cancelledBy": "Annulé par",
    "distributionByMode": "Répartition par mode de paiement",
    "noPaymentModes": "Aucun mode de paiement enregistré",
    "plannedPayments": "Paiements prévus",
    "plan": "Planifier",
    "planWithCount": "Planifier — {{count}} paiement(s) prévu(s)",
    "swipeToDelete": "Glisser pour supprimer",
    "emptyPlannedPayments": "Aucun paiement prévu. Utilisez le bouton Planifier ci-dessus.",
    "amountToDefine": "Montant à définir",
    "deletePlannedPayment": "Supprimer ce paiement prévu",
    "deletePlannedPaymentAria": "Supprimer le paiement prévu du {{date}}",
    "deadlineHonored": "Échéance honorée",
    "deadlineUpcoming": "Échéance à venir — glisser vers la gauche pour supprimer",
    "deadlineHonoredRestore": "Échéance honorée — cliquer pour rétablir",
    "markDeadlineHonored": "Marquer cette échéance comme honorée",
    "deadlineHonoredAria": "Échéance honorée. Cliquer pour rétablir.",
    "markDeadlineHonoredAria": "Marquer cette échéance comme honorée",
    "onDate": "Le",
    "status": {
      "paid": "Payée",
      "partiallyPaid": "Partiellement payée",
      "unpaid": "Non payé",
      "unknown": "Inconnu"
    },
    "createdBy": "Créé par",
    "validatedBy": "Validé par",
    "confirmCancel": {
      "title": "Confirmer l'annulation",
      "message": "Êtes-vous sûr de vouloir annuler {{lx.facture.le}} ? Cette action est irréversible.",
      "back": "Retour",
      "confirm": "Confirmer"
    },
    "messages": {
      "plannedPaymentAdded": "Paiement prévu ajouté.",
      "plannedPaymentAddError": "Erreur lors de l'ajout du paiement prévu",
      "noProforma": "Aucun résultat {{lx.facture_proforma}} associé(e)",
      "amountExceedsRemaining": "Le montant saisi est supérieur au montant restant à payer.",
      "paymentSuccess": "Paiement enregistré avec succès.",
      "unknownError": "Une erreur inconnue est survenue",
      "cancelSuccess": "{{lx.facture}} : annulation réussie",
      "cancelError": "Vous ne pouvez pas annuler {{lx.facture.le}} : le paiement est déjà commencé",
      "noData": "Aucune donnée d'aperçu…"
    },
    "modalPlanification": {
      "title": "Nouveau paiement prévu",
      "date": "Date",
      "amount": "Montant",
      "note": "{{lx.note}}",
      "notePlaceholder": "Ex. 1er versement, virement ({{lx.client}})…",
      "cancel": "Annuler",
      "save": "Enregistrer"
    },
    "legalInfo": {
      "nina": "NINA : {{value}}",
      "rccm": "RCCM : {{value}}",
      "nif": "NIF : {{value}}",
      "bank": "Banque : {{value}}"
    },
    "addressInfo": {
      "full": "Adresse : {{address}} / {{siege}}-{{country}}",
      "addressSiege": "Adresse : {{address}} / {{siege}}",
      "addressCountry": "Adresse : {{address}} / {{country}}",
      "siegeCountry": "Adresse : {{siege}} / {{country}}",
      "addressOnly": "Adresse : {{address}}",
      "siegeOnly": "Adresse : {{siege}}",
      "countryOnly": "Adresse : {{country}}"
    },
    "pdf": {
      "generatedBy": "Générée par Tchakeda",
      "notSpecified": "Non spécifié",
      "companyFallback": "Nom Entreprise"
    },
    "statutText": {
      "PAYEE": "Payée",
      "PARTIELLEMENT_PAYEE": "Partiellement payée",
      "EN_ATTENTE": "Non payé"
    },
    "modeText": {
      "CASH": "Espèce",
      "CHEQUE": "Chèque",
      "CARD": "Carte de crédit",
      "VIREMENT": "Virement bancaire",
      "MOBILE": "Mobile",
      "MOBILE_MONEY": "Mobile money"
    },
    "validation": {
      "validate": "Valider",
      "reject": "Rejeter",
      "errorValidate": "Erreur lors de la validation du paiement",
      "errorReject": "Erreur lors du rejet du paiement",
      "statut": {
        "VALIDATED": "Validé",
        "PENDING_VALIDATION": "En attente de validation",
        "REJECTED": "Rejeté"
      },
      "rejectModal": {
        "title": "Rejeter le paiement",
        "motif": "Motif de rejet",
        "motifPlaceholder": "Ex : Chèque sans provision",
        "cancel": "Annuler",
        "confirm": "Confirmer le rejet"
      }
    }
  },
  "assistantPage": {
    "title": "Assistance Client",
    "subtitle": "Comment pouvons-nous vous aider aujourd'hui ?",
    "loadingTickets": "Chargement de vos demandes…",
    "empty": {
      "noConversations": "Aucune conversation d'assistance",
      "noRequests": "Aucune demande pour le moment",
      "startConversation": "Lancez une nouvelle conversation avec le support pour obtenir de l'aide."
    },
    "status": {
      "pending": "En attente",
      "inProgress": "En cours",
      "contested": "Contesté",
      "resolvedValidated": "Résolu et validé",
      "toValidate": "À valider"
    },
    "createdOn": "Créé le",
    "newTicket": "Nouveau ticket",
    "loadingMessages": "Chargement de la conversation…",
    "confirmResolution": "Confirmez la résolution",
    "confirmResolutionText": "Le support a indiqué que ce ticket est résolu. Validez si votre problème est bien réglé ou signalez que ce n'est pas encore le cas.",
    "validating": "Validation…",
    "validateResolution": "Valider la résolution",
    "notResolved": "Non, ce n'est pas réglé",
    "selectTicket": "Sélectionnez une demande d'assistance dans la liste pour voir la discussion.",
    "newTicketTitle": "Nouveau ticket d'assistance",
    "newTicketText": "Rédigez votre message ci-dessous pour créer un nouveau ticket.",
    "newTicketHint": "Soyez précis dans l'objet et décrivez le problème pour une réponse plus rapide.",
    "backToList": "Retour à la liste",
    "supportTeam": "Support",
    "subjectPlaceholder": "Objet de votre demande",
    "messagePlaceholder": "Décrivez votre besoin ou votre problème ici...",
    "attachFile": "Joindre un fichier",
    "compressing": "Compression…",
    "send": "Envoyer",
    "attachment": "Pièce jointe",
    "previewAlt": "Pièce jointe",
    "messages": {
      "loadError": "Impossible de charger vos demandes d'assistance."
    }
  },
  "posCaisse": {
    "myRegister": "Ma caisse",
    "allRegisters": "Toutes les caisses",
    "loading": "Chargement des caisses...",
    "noRegisters": "Aucune caisse à afficher",
    "unassigned": "Non assigné",
    "myJournals": "Mes Journaux",
    "theirJournal": "Son Journal",
    "actionUnavailable": "Action non disponible",
    "openNewRegister": "Ouvrir une nouvelle caisse",
    "assignedShop": "{{lx.boutique}} assigné(e)",
    "selectShop": "Sélectionnez {{lx.boutique}}",
    "openingCash": "Espèces à l'ouverture",
    "openingAmountPlaceholder": "Entrez le montant",
    "openRegister": "Ouvrir la caisse",
    "journalTitle": "Journal de la caisse",
    "cardView": "Vue cartes",
    "listView": "Vue liste",
    "loadingJournal": "Chargement du journal...",
    "noJournal": "Aucun journal {{lx.vendeur}}",
    "opened": "Ouverte",
    "closed": "Fermée",
    "opening": "Ouverture",
    "closing": "Fermeture",
    "inProgress": "En cours",
    "initial": "Initial",
    "final": "Final",
    "summary": "Résumé",
    "seeGap": "Voir l'écart",
    "columns": {
      "openingDate": "Date Ouverture",
      "closingDate": "Date Fermeture",
      "status": "Statut",
      "initialAmount": "Montant Initial",
      "finalAmount": "Montant Final",
      "actions": "Actions"
    },
    "gapDetails": "Détails de l'écart de caisse",
    "seller": "{{lx.vendeur}}",
    "shop": "{{lx.boutique}}",
    "statusLabel": "Statut",
    "initialAmount": "Montant initial",
    "currentAmount": "Montant courant",
    "cashInHand": "Montant en main",
    "gap": "Écart",
    "gapNone": "Aucun écart détecté. Le montant en main correspond exactement au montant courant.",
    "gapPositive": "Écart positif : Il y a {{amount}} de plus que prévu.",
    "gapNegative": "Écart négatif : Il manque {{amount}} par rapport au montant courant.",
    "gapOpenRegister": "Cette caisse est encore ouverte. L'écart ne peut être calculé qu'après fermeture de la caisse.",
    "unknownSeller": "{{lx.vendeur}} : non spécifié",
    "unknownShop": "{{lx.boutique}} : non spécifié(e)",
    "status": {
      "open": "Ouverte",
      "closed": "Fermée"
    },
    "buttons": {
      "open": "Ouvrir",
      "resume": "Reprendre",
      "closed": "Fermée"
    }
  },
  "posPaiement": {
    "receipt": "Reçu",
    "paymentSuccess": "Paiement réussi",
    "modifyReceipt": "Modifier le reçu",
    "printFormatAria": "Format d'impression",
    "invoice": "{{lx.facture}}",
    "print": "Imprimer",
    "preparing": "Préparation…",
    "sendByEmail": "Envoyer par Email",
    "sendByWhatsapp": "Envoyer par WhatsApp",
    "emailPlaceholder": "example@gmail.com",
    "phonePlaceholder": "Numéro de téléphone",
    "emailSent": "Email envoyé avec succès !",
    "whatsappOpened": "WhatsApp ouvert avec succès !",
    "newOrder": "Nouvelle commande",
    "sending": "Envoi en cours...",
    "loadingReceipt": "Chargement du reçu...",
    "ticket": "Ticket :",
    "servedBy": "Servi par :",
    "client": "{{lx.client}} :",
    "shop": "{{lx.boutique}} :",
    "unknownClient": "Inconnu",
    "unitPrice": "/ Unité(s)",
    "subtotal": "Sous-total",
    "globalDiscount": "Remise global",
    "productDiscounts": "Remise(s) produit",
    "total": "Total",
    "change": "Monnaie",
    "remaining": "Reste à payer",
    "generatedBy": "Généré par Tchakeda",
    "noProducts": "Aucun produit trouvé",
    "printReceipt": "Imprimer le reçu",
    "close": "Fermer",
    "modifyReceiptTitle": "Modifier le reçu",
    "totalAmount": "Montant total:",
    "paidAmount": "Montant payé",
    "paymentMode": "Mode de paiement",
    "changeDue": "Monnaie à rendre:",
    "validateAndPrint": "Valider et Imprimer",
    "invoiceTitle": "{{lx.facture}} :",
    "sector": "Secteur :",
    "email": "Email :",
    "phone": "Téléphone :",
    "dateOn": "le",
    "dateLe": "Le",
    "owedTo": "Doit :",
    "object": "Objet :",
    "notSpecified": "Non spécifié",
    "columns": {
      "designation": "Désignation",
      "description": "Description",
      "unitPrice": "Prix Unitaire",
      "qty": "Qté",
      "amount": "Montant"
    },
    "totalHT": "Total HT",
    "discount": "Remise",
    "footerGenerated": "Générée par Tchakeda",
    "discountTitle": "Remise:",
    "modes": {
      "cash": "Espèces",
      "card": "Carte",
      "transfer": "Virement",
      "mobileMoney": "Mobile Money"
    }
  },
  "posAccueil": {
    "salesPos": "Ventes POS",
    "orders": "Commandes",
    "history": "Historique",
    "deleteOrder": "Supprimer la commande",
    "deleteOrderTitle": "Supprimer la commande ?",
    "deleteOrderConfirm": "Voulez-vous supprimer la commande",
    "defaultOrderProtected": "La commande par défaut ne peut pas être supprimée.",
    "delete": "Supprimer",
    "orderList": "Liste des commandes",
    "seeAllOrders": "Voir toutes les commandes",
    "exitFullscreen": "Quitter le plein écran",
    "enterFullscreen": "Mettre en plein écran",
    "screenLocked": "Écran verrouillé",
    "lockScreen": "Verrouiller l'écran",
    "refreshSales": "Actualiser la page des ventes",
    "searchProducts": "Recherche des produits",
    "openMenu": "Ouvrir le menu",
    "closeMenu": "Fermer le menu",
    "installApp": "Installer l'application",
    "goToSales": "Aller aux ventes",
    "dashboard": "Tableau de bord",
    "addProduct": "Ajouter un produit",
    "addSeller": "Ajouter {{lx.vendeur}}",
    "addExpense": "Ajouter une depense",
    "closeRegister": "Fermer la caisse",
    "posSettings": "Paramètres POS",
    "enableCustomerDisplay": "Activer : affichage {{lx.client}}",
    "customerDisplayHint": "Ouvre une fenêtre dédiée à déplacer sur le second écran. Le client y voit son panier, le paiement en cours et le reçu.",
    "customerDisplayHintShort": "Fenêtre {{lx.client}} : 2ᵉ écran",
    "openCustomerDisplay": "Ouvrir : affichage {{lx.client}}",
    "createSeller": "Créer {{lx.vendeur}}",
    "createSellerSubtitle": "Ajouter {{lx.vendeur}} pour attribuer les ventes au POS.",
    "fullName": "Nom complet",
    "fullNamePlaceholder": "Nom complet",
    "receiptHint": "Saisi tel qu'il s'affichera sur le reçu.",
    "phone": "Téléphone",
    "phonePlaceholder": "Téléphone",
    "phoneHint": "Format international recommandé.",
    "createSellerBtn": "Créer {{lx.vendeur}}",
    "creating": "Création…",
    "closeRegisterTitle": "Fermer la caisse",
    "loadingDetails": "Chargement des détails...",
    "unknownSeller": "{{lx.vendeur}} : non spécifié",
    "unknownShop": "{{lx.boutique}} : non spécifié(e)",
    "initialAmount": "Montant initial :",
    "soldAmount": "Montant Vendu :",
    "loading": "Chargement...",
    "openedOn": "Ouverte le :",
    "currentAmount": "Montant courant :",
    "cashInHand": "Montant en main ({{currency}}):",
    "includeInitialAmount": "Comptabiliser le montant initial",
    "includeInitialAmountHint": "Inclure le fonds d'ouverture dans le versement comptable",
    "toggleForcedByExpenses": "Obligatoire : les dépenses dépassent les ventes",
    "amountToDeposit": "Montant à verser",
    "rollingFund": "Fonds de roulement",
    "totalExpenses": "Depense totale :",
    "gap": "Écart ({{currency}}):",
    "closedOn": "Fermée le :",
    "confirmClose": "Confirmer la fermeture",
    "calculator": "Calculatrice",
    "calcDevices": "Dispositifs de calcul",
    "addExpenseTitle": "Ajouter une dépense",
    "expenseInfo": "Informations de la dépense",
    "availableAmount": "Montant disponible:",
    "currentShop": "{{lx.boutique}} actuel(le) :",
    "loadingShop": "Chargement...",
    "amountPlaceholder": "Saisissez le montant",
    "amountLabel": "Montant ({{currency}}) *",
    "reasonPlaceholder": "Décrivez la raison de cette dépense",
    "reasonLabel": "Motif *",
    "characters": "{{count}}/500 caractères",
    "saving": "Enregistrement...",
    "saveExpense": "Enregistrer la dépense",
    "selectShop": "Sélectionnez {{lx.boutique}}",
    "status": {
      "open": "Ouverte",
      "closed": "Fermée"
    },
    "messages": {
      "noShopSelected": "Aucun résultat {{lx.boutique}} sélectionné(e)",
      "noShopSelectedRetry": "Aucun résultat {{lx.boutique}} sélectionné(e). Sélectionnez {{lx.boutique}}, puis réessayez.",
      "invalidName": "Nom complet invalide (min. 2 caractères).",
      "phoneRequired": "Téléphone obligatoire.",
      "sellerCreated": "{{lx.vendeur}} : création réussie.",
      "sellerCreateError": "Impossible de créer {{lx.vendeur}}.",
      "noOpenRegister": "Aucune caisse ouverte {{lx.boutique}}",
      "closeFailed": "Échec de la fermeture de la caisse",
      "loadRegisterError": "Erreur lors du chargement des détails de la caisse:",
      "amountRequired": "Le montant doit être supérieur à 0",
      "reasonRequired": "Veuillez saisir un motif",
      "insufficientAmount": "Montant insuffisant. Montant disponible: {{amount}} {{currency}}",
      "expenseSaved": "Dépense enregistrée avec succès !",
      "expenseSaveError": "Erreur lors de l'enregistrement de la dépense",
      "loadCaisseDetailsError": "Erreur lors du chargement des détails de la caisse",
      "unknownShop": "{{lx.boutique}} : inconnu(e)",
      "notAvailable": "N/A",
      "invalidDate": "Date invalide"
    }
  },
  "customerDisplay": {
    "cart": {
      "title": "Articles",
      "welcomeAt": "Bienvenue à",
      "welcomeLead": "Pilotez vos entreprises en toute sécurité",
      "welcomeTagline": "Simple, Rapide et Sécurisé",
      "sellerAtYourService": "{{name}} à votre service",
      "sellerAtYourServiceSuffix": " à votre service",
      "empty": "En attente de vos articles…",
      "emptyHint": "Vos articles apparaîtront ici au fur et à mesure",
      "itemsShort": "art.",
      "itemsLabel": "articles",
      "itemsScanned": "articles scannés",
      "orderSummary": "Récapitulatif",
      "newScan": "NOUVEAU",
      "waitingNextItem": "En attente du prochain article…",
      "caisseLabel": "Caisse n°",
      "perUnit": "unité",
      "product": "Produit",
      "qty": "Qté",
      "unitPrice": "Prix unitaire",
      "subtotal": "Sous-total",
      "total": "Total"
    },
    "checkout": {
      "paymentInProgress": "Paiement en cours",
      "phaseEyebrow": "Étape 2 · Paiement",
      "welcomeLead": "Finalisez votre paiement en toute sérénité",
      "welcomeTagline": "Suivez les instructions affichées à l'écran",
      "statusHint": "Merci de patienter pendant la validation",
      "confirmedTitle": "Paiement effectué",
      "completedHint": "Merci de votre confiance, à très bientôt !",
      "stepCart": "Panier",
      "stepPayment": "Paiement",
      "orderRecap": "Votre commande"
    },
    "payment": {
      "total": "Total à payer",
      "received": "Montant reçu",
      "changeDue": "Monnaie à rendre",
      "remainingDue": "Reste à payer",
      "method": "Mode de paiement",
      "confirmed": "Merci pour votre achat",
      "thankYou": "Merci pour votre achat",
      "statusPaid": "Paiement validé",
      "statusPartial": "Paiement partiel",
      "statusPending": "En attente de paiement"
    }
  },
  "posVente": {
    "clearCart": "Vider",
    "item": "article",
    "items": "articles",
    "categories": "Catégories",
    "toggleCategories": "Basculer catégories",
    "openCategories": "Ouvrir catégories",
    "allCategories": "Toutes les catégories",
    "searchPlaceholder": "Recherche par nom, code...",
    "openSummary": "Ouvrir récapitulatif",
    "addToFavorites": "Mettre en favori",
    "removeFromFavorites": "Retirer des favoris",
    "livre": "Livré",
    "nonLivre": "Non livré",
    "toggleDelivery": "Marquer comme livré / non livré",
    "deliveryStatus": "Statut de livraison",
    "stocks": "Stocks :",
    "exp": "Exp :",
    "loadingProducts": "Chargement des produits...",
    "loadingCategory": "Chargement de la catégorie...",
    "loadingMoreProducts": "Chargement de plus de produits...",
    "noProductsShop": "Aucun produit {{lx.boutique}}.",
    "noProductsToDisplay": "Aucun produit à afficher.",
    "noProductsInCategory": "Aucun produit dans cette catégorie",
    "loadingMore": "Chargement...",
    "cart": "Panier",
    "emptyCart": "Panier vide",
    "emptyCartMessage": "Le panier est vide.",
    "emptyCartForOrder": "Le panier est vide. Ajoutez des produits pour imprimer un ticket commande.",
    "summary": "Récapitulatif",
    "summaryActions": "Récapitulatif actions",
    "closeSummary": "Fermer le récapitulatif",
    "subtotal": "Sous-total",
    "totalDiscount": "Remise totale",
    "taxes": "Taxes",
    "total": "Total",
    "pay": "Payer",
    "payment": "Paiement",
    "setPricesFirst": "Définir les prix d'abord",
    "priceFor": "Prix pour: {{name}}",
    "client": "{{lx.client}}",
    "anonymousClient": "{{lx.client}} anonyme",
    "enterprise": "Entreprise",
    "order": "Commande",
    "seller": "{{lx.vendeur}}",
    "removeSeller": "Retirer {{lx.vendeur}}",
    "discount": "Remise",
    "productDiscounts": "Remise(s) produit",
    "globalDiscount": "Remise Globale",
    "cancelGlobalDiscount": "Annuler Globale",
    "note": "{{lx.note}}",
    "addSaleNote": "Ajouter {{lx.note}} (vente)",
    "editSaleNote": "Modifier {{lx.note}} (vente)",
    "saleNoteOptionalTitle": "{{lx.note}} : vente (optionnel)",
    "saleNoteHint": "Optionnel · cette vente",
    "saleNotePlaceholder": "Ex. emballage, livraison, consigne…",
    "saleNoteTextHidden": "Texte {{lx.note}}",
    "clearNote": "Effacer",
    "qty": "Qté",
    "price": "Prix",
    "clearCart": "Vider le panier",
    "confirmClearCart": "Voulez-vous vider le panier ?",
    "quantity": "Quantité",
    "unitPrice": "Prix unitaire",
    "amount": "Montant",
    "product": "Produit",
    "paymentMode": "Mode de paiement",
    "cash": "Espèces",
    "card": "Carte",
    "transfer": "Virement",
    "mobileMoney": "Mobile money",
    "credit": "Crédit",
    "totalAmount": "Montant total",
    "amountToPay": "Montant à payer",
    "amountToReturn": "Montant à retourner",
    "remainingCredit": "Crédit restant",
    "amountReceived": "Montant reçu",
    "change": "Monnaie",
    "remaining": "Reste à payer",
    "validateSale": "Valider la vente",
    "validatePayment": "Valider Paiement",
    "validatePaymentLower": "Valider paiement",
    "insufficientAmount": "Montant insuffisant",
    "validateDiscount": "Cliquer pour valider la remise",
    "editDiscount": "Cliquer pour modifier la remise",
    "processing": "Traitement...",
    "inProgress": "En cours…",
    "defineSalePrice": "Définir le prix de vente",
    "missingPriceHelper": "Ce produit n'a pas encore de prix. Renseigne le prix et la quantité pour continuer.",
    "salePriceLabel": "Prix de vente ({{currency}})",
    "pricePlaceholderExample": "Ex: 2500",
    "chooseQuantity": "Choisir la quantité",
    "decrease": "Diminuer",
    "increase": "Augmenter",
    "addToCart": "Ajouter au panier",
    "productInfo": "Information [{{code}}]",
    "productImageAlt": "Image produit",
    "productName": "Nom produit",
    "salePrice": "Prix de vente",
    "category": "Catégorie",
    "unitOfMeasure": "Unité de mesure",
    "expirationDate": "Date d'expiration",
    "currentStock": "Stocks actuel",
    "shop": "{{lx.boutique}}",
    "code": "Code",
    "barcode": "Code barre",
    "description": "Description:",
    "noDescription": "Pas de description",
    "individualClient": "{{lx.client_individuel}}",
    "enterpriseClient": "{{lx.client_entreprise}}",
    "addClient": "Ajouter {{lx.client}}",
    "addNewClient": "Ajouter nouveau {{lx.client}}",
    "clientType": "Type {{lx.client}}",
    "individual": "Individuel",
    "searchByName": "Recherche par nom ...",
    "searchSeller": "Recherche (nom, tel, code)...",
    "clientPhotoAlt": "Photo {{lx.client}}",
    "companyLogoAlt": "Logo entreprise",
    "sellerAlt": "{{lx.vendeur}}",
    "sellerList": "Liste {{lx.vendeur.pluriel}}",
    "createClient": "Créer {{lx.client}}",
    "createCompany": "Créer une entreprise",
    "searchClient": "Rechercher {{lx.client}}...",
    "noClientFound": "Aucun résultat {{lx.client}}",
    "noCompanyFound": "Aucune entreprise trouvée",
    "noSellerFound": "Aucun résultat {{lx.vendeur}}",
    "selectClient": "Sélectionner {{lx.client}}",
    "companyName": "Nom d'entreprise",
    "enterpriseSection": "Entreprise",
    "headquarters": "Siège",
    "sector": "Secteur",
    "country": "Pays",
    "phoneRequired": "Le téléphone est requis.",
    "phoneDigitsAfterPrefix": "Le numéro doit contenir {{length}} chiffres après l'indicatif {{prefix}}.",
    "save": "Enregistrer",
    "listView": "Liste",
    "gridView": "Cadre",
    "loading": "Chargement...",
    "loadingData": "Chargement des données...",
    "noCategoryProducts": "Aucune catégorie avec produits {{lx.boutique}}",
    "switchingShop": "Changement {{lx.boutique}}...",
    "registerClosed": "Caisse fermée",
    "openRegisterFirst": "Veuillez ouvrir une caisse pour effectuer des ventes.",
    "goToRegister": "Aller à la caisse",
    "openRegister": "Ouvrir une caisse",
    "openingCash": "Espèces à l'ouverture",
    "enterAmount": "Entrez le montant",
    "openRegisterButton": "Ouvrir la caisse",
    "categoryProductsTotal": "{{count}} produits au total dans cette catégorie",
    "categoryProductsInShop": "{{count}} produits dans {{shop}}",
    "shopFallback": "{{lx.boutique}} {{id}}",
    "messages": {
      "negativeAmount": "Le montant ne peut pas être négatif",
      "openRegisterError": "Erreur lors de l'ouverture de la caisse",
      "stockDepleted": "Stock épuisé — impossible d'ajouter « {{name}} ».",
      "productNotFoundByCode": "Aucun produit trouvé avec le code: {{code}}",
      "barcodeSearchError": "Erreur recherche code: {{code}}",
      "productsWithoutPrice": "Les produits suivants n'ont pas de prix défini : {{names}}. Veuillez définir un prix avant de finaliser la vente.",
      "selectClientRequired": "Veuillez sélectionner {{lx.client}}",
      "invalidPrice": "Saisis un prix valide.",
      "invalidQuantity": "Saisis une quantité entière valide.",
      "insufficientStock": "Stock insuffisant. Maximum: {{max}}.",
      "noShopSelected": "Aucun résultat {{lx.boutique}} sélectionné(e).",
      "invalidServerClientResponse": "Réponse serveur invalide (identifiant {{lx.client}}).",
      "clientSavedSuccess": "{{lx.client}} : enregistrement réussi.",
      "companySavedSuccess": "Entreprise enregistrée avec succès.",
      "saveError": "Une erreur est survenue lors de l'enregistrement.",
      "unknownSaleError": "Erreur inconnue lors de l'enregistrement de la vente",
      "errorPrefix": "Erreur :"
    }
  },
  "posTicketCommande": {
    "statusSaved": "Commande enregistrée",
    "statusPending": "Commande en attente",
    "orderTotal": "/ Total commande",
    "printTicket": "Imprimer le ticket",
    "saving": "Enregistrement...",
    "saveOrder": "Enregistrer la commande",
    "backToSale": "Retour à la vente",
    "servedBy": "Servi par :",
    "client": "{{lx.client}} :",
    "shop": "{{lx.boutique}} :",
    "unitPrice": "/ Unité(s)",
    "subtotal": "Sous-total",
    "globalDiscount": "Remise globale",
    "productDiscounts": "Remise(s) produit",
    "total": "Total",
    "generatedBy": "Généré par Tchakeda",
    "logoAlt": "Logo",
    "printTitle": "Ticket commande",
    "print": "Imprimer",
    "close": "Fermer",
    "messages": {
      "saveError": "Impossible d'enregistrer la commande. Réessaie.",
      "missingInitData": "Données d'initiation manquantes. Repasse par l'écran vente.",
      "savedSuccess": "Commande enregistrée"
    }
  },
  "posCommande": {
    "searchPlaceholder": "Rechercher des commandes...",
    "filters": {
      "inProgress": "En cours",
      "paid": "Payées",
      "cancel": "Annuler",
      "default": "Filtre"
    },
    "pagination": "Pagination",
    "prevPage": "Page précédente",
    "nextPage": "Page suivante",
    "prev": "Précédent",
    "next": "Suivant",
    "openSummary": "Ouvrir récapitulatif",
    "closeSummary": "Fermer le récapitulatif",
    "summaryActions": "Récapitulatif commande actions",
    "quantity": "Quantité",
    "quantityShort": "Q",
    "quantitySelected": "Quantité sélectionner",
    "productName": "Nom du produit",
    "unitPriceShort": "(PU)",
    "totalPrice": "Prix total",
    "originalPrice": "Orig:",
    "noProductsInOrder": "Aucun produit dans cette commande",
    "noProductsInSale": "Aucun produit dans cette vente",
    "fullRefundWarning": "Tous les produits sélectionnés - la vente sera annulée",
    "taxes": "Taxes",
    "total": "Total",
    "cancelOrder": "Annuler la commande",
    "noOrdersInProgress": "Pas de commandes en cours",
    "noSalesForFilter": "Pas de ventes pour ce filtre",
    "status": {
      "inProgress": "En cours",
      "paid": "Payée",
      "partialRefund": "Partiellement remboursée",
      "cancelled": "Annulée",
      "unknown": "—"
    },
    "cancelConfirmTitle": "Confirmation d'annulation",
    "cancelConfirmHint": "Veuillez entrer le Code PIN pour annuler la commande.",
    "refundReasonTitle": "Motif du remboursement",
    "refundReasonPlaceholder": "Raison du remboursement",
    "confirm": "Confirmer",
    "messages": {
      "selectProductToRefund": "Veuillez sélectionner au moins un produit à rembourser",
      "enterReason": "Veuillez saisir un motif",
      "refundSuccess": "Remboursement effectué avec succès !",
      "refundError": "Une erreur est survenue lors du remboursement"
    }
  },
  "posCommandesEntreprise": {
    "searchPlaceholder": "Rechercher des commandes...",
    "periods": {
      "day": "Jour",
      "week": "Semaine",
      "month": "Mois",
      "year": "Année"
    },
    "allCreators": "Tous créateurs",
    "pagination": "Pagination",
    "prevPage": "Page précédente",
    "nextPage": "Page suivante",
    "openDetails": "Ouvrir détails commande",
    "closeSummary": "Fermer le récapitulatif",
    "detailsActions": "Détails commande actions",
    "loading": "Chargement des commandes...",
    "columns": {
      "date": "Date",
      "creator": "Créateur",
      "orderNumber": "N° commande",
      "client": "{{lx.client}}",
      "items": "Articles",
      "amount": "Montant",
      "status": "Statut"
    },
    "ordersCount": "Commandes {{count}}",
    "noOrdersFound": "Aucune commande trouvée pour ces filtres",
    "productLines": "Lignes produits",
    "quantityShort": "Q",
    "productName": "Nom du produit",
    "unitPriceShort": "(PU)",
    "totalPrice": "Prix total",
    "removeLine": "Retirer {{name}}",
    "selectOrderHint": "Sélectionne une commande pour voir les détails.",
    "globalDiscount": "Remise globale",
    "total": "Total",
    "cancelling": "Annulation…",
    "cancel": "Annuler",
    "validate": "Valider",
    "amountToPayLabel": "Montant à payer",
    "validateCredit": "Valider Crédit",
    "clientRequired": "{{lx.client}} requis",
    "confirmCancelTitle": "Confirmation",
    "confirmCancelMessage": "Voulez-vous vraiment annuler / supprimer cette commande ?",
    "no": "Non",
    "yes": "Oui",
    "deleting": "Suppression…",
    "saleNoteOptional": "Optionnel · cette commande",
    "noteTextHidden": "Texte {{lx.note}}",
    "save": "Enregistrer",
    "status": {
      "unknown": "Inconnu",
      "initiated": "Initiée",
      "validated": "Validée",
      "cancelled": "Annulée"
    },
    "messages": {
      "loadError": "Impossible de charger les commandes. Veuillez réessayer.",
      "creditClientRequired": "Sélectionnez {{lx.client}} ou entreprise (vente à crédit).",
      "invalidCreditAmount": "Montant invalide pour une vente à crédit.",
      "validateSuccess": "Commande validée avec succès.",
      "validateError": "Impossible de valider la commande.",
      "cancelSuccess": "Commande annulée avec succès.",
      "cancelError": "Impossible d'annuler la commande.",
      "lineRemoved": "Ligne retirée de la commande.",
      "removeLineError": "Impossible de retirer la ligne de la commande."
    }
  },
  "posCaisseHeader": {
    "pointOfSale": "Point de vente",
    "posShort": "POS",
    "newRegister": "Nouvelle caisse",
    "searchPlaceholder": "Recherche....",
    "registerExistsTooltip": "Une caisse existe déjà {{lx.boutique}}",
    "hideAllRegisters": "Cacher toutes les caisses",
    "showAllRegisters": "Voir toutes les caisses",
    "others": "Autres",
    "allShopsHaveRegister": "Tous {{lx.boutique.pluriel}} — caisse déjà ouverte.",
    "messages": {
      "loadBoutiquesError": "Erreur de chargement {{lx.boutique.pluriel}}",
      "loadBoutiquesFailed": "Impossible de charger {{lx.boutique.pluriel}}",
      "loadCaissesError": "Erreur lors du chargement des caisses",
      "noRegisterForShop": "Aucune caisse disponible {{lx.boutique}}",
      "loadLastRegisterError": "Erreur lors du chargement de la dernière caisse",
      "selectShopRequired": "Veuillez sélectionner {{lx.boutique}}",
      "negativeAmount": "Le montant ne peut pas être négatif",
      "openRegisterUnknownError": "Erreur inconnue lors de l'ouverture de la caisse"
    }
  }
}