Files
Starseed/frontend/i18n/locales/fr.json
T
tristan 9e2206a7d6
Pull Request — Quality gate / Frontend (lint + Vitest + build) (pull_request) Successful in 2m12s
Pull Request — Quality gate / Backend (PHP CS + PHPUnit) (pull_request) Successful in 3m45s
fix : DSD saisi conservé en pesée manuelle (ERP-193)
En pesée manuelle, le serveur incrémentait automatiquement le DSD et ignorait la
saisie de l'opérateur. Désormais l'opérateur saisit le poids ET le DSD (le numéro
du pont réellement utilisé), conservés tels quels — plus d'auto-incrément. Le
champ « Numéro de pesée » séparé (manualNumber) est supprimé : pour le client
c'est la même chose que le DSD. Pas de contrainte d'unicité sur le DSD (doublons
autorisés). Colonnes empty_manual_number/full_manual_number droppées.
2026-06-24 15:33:12 +02:00

1014 lines
43 KiB
JSON

{
"common": {
"loading": "Chargement...",
"save": "Enregistrer",
"validate": "Valider",
"cancel": "Annuler",
"delete": "Supprimer",
"edit": "Modifier",
"create": "Creer",
"search": "Rechercher",
"confirm": "Confirmer",
"yes": "Oui",
"no": "Non",
"actions": "Actions",
"comingSoon": {
"title": "En cours de dev",
"subtitle": "Cette fonctionnalité arrive bientôt."
}
},
"sidebar": {
"administration": {
"section": "Administration"
},
"account": {
"section": "Mon compte",
"dashboard": "Tableau de bord",
"logout": "Déconnexion"
},
"commercial": {
"section": "Commercial",
"clients": "Répertoire clients",
"suppliers": "Répertoire fournisseurs"
},
"technique": {
"section": "Technique",
"providers": "Répertoire prestataires"
},
"transport": {
"section": "Transport",
"carriers": "Répertoire transporteurs"
},
"logistique": {
"section": "Logistique",
"weighing_tickets": "Tickets de pesée"
},
"core": {
"roles": "Gestion des rôles",
"users": "Utilisateurs",
"audit_log": "Journal d'audit"
},
"sites": {
"admin": "Sites"
},
"catalog": {
"categories": "Gestion des catégories"
}
},
"dashboard": {
"title": "Tableau de bord",
"welcome": "Bienvenue sur Starseed"
},
"commercial": {
"title": "Commercial",
"welcome": "Module Commercial",
"suppliers": {
"title": "Répertoire fournisseurs",
"add": "Ajouter",
"export": "Exporter",
"empty": "Aucun fournisseur pour l'instant.",
"column": {
"companyName": "Nom",
"categories": "Catégories",
"sites": "Site",
"lastActivity": "Dernière modification"
},
"filters": {
"title": "Filtres",
"search": "Recherche",
"categories": "Catégories",
"sites": "Sites",
"status": "Statut",
"archivedOnly": "Voir les archivés",
"apply": "Voir les résultats",
"reset": "Réinitialiser"
},
"toast": {
"error": "Une erreur est survenue. Réessayez.",
"exportError": "L'export du répertoire fournisseurs a échoué. Réessayez.",
"createSuccess": "Fournisseur créé avec succès",
"updateSuccess": "Fournisseur mis à jour avec succès",
"addComplete": "Fournisseur ajouté",
"archiveSuccess": "Fournisseur archivé avec succès",
"restoreSuccess": "Fournisseur restauré avec succès",
"restoreConflict": "Impossible de restaurer : un fournisseur actif portant ce nom existe déjà."
},
"comingSoon": "À venir",
"tab": {
"information": "Information",
"contacts": "Contacts",
"addresses": "Adresses",
"transport": "Transport",
"accounting": "Comptabilité",
"statistics": "Statistiques",
"reports": "Rapports",
"exchanges": "Échanges"
},
"action": {
"edit": "Modifier",
"archive": "Archiver",
"restore": "Restaurer"
},
"consultation": {
"title": "Consultation fournisseur",
"back": "Retour au répertoire",
"loading": "Chargement du fournisseur…",
"notFound": "Fournisseur introuvable.",
"confirmArchive": {
"title": "Archiver le fournisseur",
"message": "Ce fournisseur n'apparaîtra plus dans le répertoire actif. Confirmer l'archivage ?"
},
"confirmRestore": {
"title": "Restaurer le fournisseur",
"message": "Ce fournisseur réapparaîtra dans le répertoire actif. Confirmer la restauration ?"
}
},
"edit": {
"title": "Modifier le fournisseur",
"back": "Retour à la consultation",
"loading": "Chargement du fournisseur…",
"notFound": "Fournisseur introuvable.",
"save": "Enregistrer"
},
"form": {
"title": "Ajouter un fournisseur",
"back": "Précédent",
"submit": "Valider",
"duplicateCompany": "Un fournisseur portant ce nom de société existe déjà.",
"main": {
"companyName": "Nom du fournisseur (Entreprise)",
"categories": "Catégorie"
},
"information": {
"description": "Description",
"competitors": "Concurrent",
"foundedAt": "Date de création",
"employeesCount": "Nombre de salariés",
"revenueAmount": "CA",
"profitAmount": "Résultat",
"directorName": "Dirigeant",
"volumeForecast": "Volume prévisionnel"
},
"contact": {
"title": "Contact {n}",
"lastName": "Nom",
"firstName": "Prénom",
"jobTitle": "Fonction",
"email": "Email",
"phonePrimary": "Téléphone",
"phoneSecondary": "Téléphone (2)",
"addPhone": "Ajouter un numéro",
"remove": "Supprimer le contact",
"add": "Nouveau contact"
},
"address": {
"title": "Adresse {n}",
"addressType": "Type d'adresse",
"addressTypeProspect": "Prospect",
"addressTypeDepart": "Départ",
"addressTypeRendu": "Rendu",
"categories": "Catégorie",
"country": "Pays",
"postalCode": "Code postal",
"city": "Ville",
"street": "Adresse",
"streetNotFound": "Adresse introuvable ? Saisissez-la directement.",
"streetComplement": "Adresse complémentaire",
"sites": "Sites",
"contacts": "Contact(s) rattaché(s)",
"bennes": "Benne(s)",
"triageProvider": "Prestation de triage",
"remove": "Supprimer l'adresse",
"add": "Nouvelle adresse",
"degraded": "Service d'adresse indisponible : saisie de la ville et de l'adresse en mode libre."
},
"accounting": {
"siren": "SIREN",
"accountNumber": "Numéro de compte",
"tvaMode": "Mode de TVA",
"nTva": "N° de TVA",
"paymentDelay": "Délai de règlement",
"paymentType": "Type de règlement",
"bank": "Banque",
"ribLabel": "Libellé",
"ribBic": "BIC",
"ribIban": "IBAN",
"addRib": "Ajouter un RIB",
"removeRib": "Supprimer le RIB"
},
"confirmDelete": {
"title": "Confirmer la suppression",
"contact": "Supprimer ce contact ?",
"address": "Supprimer cette adresse ?",
"rib": "Supprimer ce RIB ?",
"cancel": "Annuler",
"confirm": "Confirmer"
}
}
},
"clients": {
"title": "Répertoire clients",
"add": "Ajouter",
"export": "Exporter",
"empty": "Aucun client pour l'instant.",
"column": {
"companyName": "Nom",
"categories": "Catégories",
"sites": "Site",
"lastActivity": "Dernière modification"
},
"filters": {
"title": "Filtres",
"search": "Recherche",
"categories": "Catégories",
"sites": "Sites",
"status": "Statut",
"archivedOnly": "Voir les archivés",
"apply": "Voir les résultats",
"reset": "Réinitialiser"
},
"tab": {
"information": "Information",
"contact": "Contact",
"address": "Adresse",
"transport": "Transport",
"accounting": "Comptabilité",
"statistics": "Statistiques",
"reports": "Rapports",
"exchanges": "Échanges"
},
"action": {
"edit": "Modifier",
"archive": "Archiver",
"restore": "Restaurer"
},
"toast": {
"createSuccess": "Client créé avec succès",
"updateSuccess": "Client mis à jour avec succès",
"addComplete": "Client ajouté",
"archiveSuccess": "Client archivé avec succès",
"restoreSuccess": "Client restauré avec succès",
"error": "Une erreur est survenue. Réessayez.",
"exportError": "L'export du répertoire clients a échoué. Réessayez.",
"restoreConflict": "Impossible de restaurer : un client actif portant ce nom existe déjà."
},
"consultation": {
"title": "Consultation client",
"back": "Retour au répertoire",
"loading": "Chargement du client…",
"notFound": "Client introuvable.",
"confirmArchive": {
"title": "Archiver le client",
"message": "Ce client n'apparaîtra plus dans le répertoire actif. Confirmer l'archivage ?"
},
"confirmRestore": {
"title": "Restaurer le client",
"message": "Ce client réapparaîtra dans le répertoire actif. Confirmer la restauration ?"
}
},
"edit": {
"title": "Modifier le client",
"back": "Retour à la consultation",
"loading": "Chargement du client…",
"notFound": "Client introuvable.",
"save": "Enregistrer"
},
"validation": {
"informationRequiredForCommercial": "Les informations de l'entreprise sont obligatoires pour le rôle Commerciale.",
"contactRequired": "Au moins un contact (nom ou prénom) est obligatoire.",
"siteRequired": "Au moins un site Starseed doit être rattaché à l'adresse.",
"billingEmailRequired": "L'email de facturation est obligatoire pour une adresse de facturation.",
"bankRequiredForTransfer": "La banque est obligatoire pour un règlement par virement.",
"ribRequiredForLcr": "Au moins un RIB complet est obligatoire pour un règlement par LCR.",
"phoneFormat": "Format de téléphone invalide (attendu : XX XX XX XX XX).",
"emailFormat": "Format d'email invalide.",
"addressCategoryForbidden": "Une catégorie « Distributeur » ou « Courtier » ne peut pas qualifier une adresse."
},
"form": {
"title": "Ajouter un client",
"back": "Précédent",
"submit": "Valider",
"duplicateCompany": "Un client portant ce nom de société existe déjà.",
"main": {
"companyName": "Nom du client (Entreprise)",
"categories": "Catégorie",
"relation": "Distributeur / Courtier",
"relationNone": "Aucun",
"relationDistributor": "Dépend du distributeur",
"relationBroker": "Dépend du courtier",
"distributorName": "Nom du distributeur",
"brokerName": "Nom du courtier",
"triageService": "Prestation de triage"
},
"information": {
"description": "Description",
"competitors": "Concurrent",
"foundedAt": "Date de création",
"employeesCount": "Nombre de salariés",
"revenueAmount": "CA",
"profitAmount": "Résultat",
"directorName": "Dirigeant"
},
"contact": {
"title": "Contact {n}",
"lastName": "Nom",
"firstName": "Prénom",
"jobTitle": "Fonction",
"email": "Email",
"phonePrimary": "Téléphone",
"phoneSecondary": "Téléphone (2)",
"addPhone": "Ajouter un numéro",
"remove": "Supprimer le contact",
"add": "Nouveau contact"
},
"address": {
"title": "Adresse {n}",
"prospect": "Prospect",
"delivery": "Adresse de livraison",
"billing": "Facturation",
"addressType": "Type d'adresse",
"addressTypeProspect": "Prospect",
"addressTypeDelivery": "Livraison",
"addressTypeBilling": "Facturation",
"addressTypeDeliveryBilling": "Adresse + Facturation",
"addressTypeBroker": "Adresse Courtier",
"addressTypeDistributor": "Adresse Distributeur",
"categories": "Catégorie",
"country": "Pays",
"postalCode": "Code postal",
"city": "Ville",
"street": "Adresse",
"streetNotFound": "Adresse introuvable ? Saisissez-la directement.",
"streetComplement": "Adresse complémentaire",
"sites": "Sites",
"contacts": "Contact(s) rattaché(s)",
"billingEmail": "Email de facturation",
"billingEmailSecondary": "Email de facturation secondaire",
"addBillingEmail": "Ajouter un email",
"remove": "Supprimer l'adresse",
"add": "Nouvelle adresse",
"degraded": "Service d'adresse indisponible : saisie de la ville et de l'adresse en mode libre."
},
"accounting": {
"siren": "SIREN",
"accountNumber": "Numéro de compte",
"tvaMode": "Mode de TVA",
"nTva": "N° de TVA",
"paymentDelay": "Délai de règlement",
"paymentType": "Type de règlement",
"bank": "Banque",
"ribTitle": "RIB {n}",
"ribLabel": "Libellé",
"ribBic": "BIC",
"ribIban": "IBAN",
"addRib": "Ajouter un RIB",
"removeRib": "Supprimer le RIB"
},
"confirmDelete": {
"title": "Confirmer la suppression",
"contact": "Supprimer ce contact ?",
"address": "Supprimer cette adresse ?",
"rib": "Supprimer ce RIB ?",
"cancel": "Annuler",
"confirm": "Confirmer"
}
}
}
},
"technique": {
"providers": {
"title": "Répertoire prestataires",
"add": "Ajouter",
"export": "Exporter",
"empty": "Aucun prestataire pour l'instant.",
"column": {
"companyName": "Nom",
"categories": "Catégories",
"sites": "Site",
"lastActivity": "Dernière modification"
},
"filters": {
"title": "Filtres",
"search": "Recherche",
"categories": "Catégories",
"sites": "Sites",
"status": "Statut",
"archivedOnly": "Voir les archivés",
"apply": "Voir les résultats",
"reset": "Réinitialiser"
},
"tab": {
"contact": "Contact",
"contacts": "Contacts",
"address": "Adresse",
"reports": "Rapports",
"exchanges": "Échanges",
"accounting": "Comptabilité"
},
"action": {
"edit": "Modifier",
"archive": "Archiver",
"restore": "Restaurer"
},
"consultation": {
"title": "Fiche prestataire",
"back": "Retour au répertoire",
"loading": "Chargement…",
"notFound": "Prestataire introuvable.",
"confirmArchive": "Archiver ce prestataire ? Il n'apparaîtra plus dans le répertoire actif.",
"confirmRestore": "Restaurer ce prestataire ? Il réapparaîtra dans le répertoire actif."
},
"edit": {
"title": "Modifier le prestataire",
"back": "Retour à la consultation",
"loading": "Chargement…",
"notFound": "Prestataire introuvable.",
"save": "Enregistrer"
},
"form": {
"title": "Ajouter un prestataire",
"back": "Précédent",
"submit": "Valider",
"duplicateCompany": "Un prestataire portant ce nom de société existe déjà.",
"main": {
"companyName": "Nom du prestataire (Entreprise)",
"categories": "Catégorie",
"sites": "Site"
},
"errors": {
"nameRequired": "Le nom du prestataire est obligatoire.",
"siteRequired": "Sélectionnez au moins un site.",
"categoryRequired": "Sélectionnez au moins une catégorie."
},
"contact": {
"lastName": "Nom",
"firstName": "Prénom",
"jobTitle": "Fonction",
"email": "Email",
"phonePrimary": "Téléphone",
"phoneSecondary": "Téléphone (2)",
"addPhone": "Ajouter un numéro",
"remove": "Supprimer le contact",
"add": "Nouveau contact"
},
"address": {
"sites": "Sites",
"contacts": "Contact(s) rattaché(s)",
"country": "Pays",
"postalCode": "Code postal",
"city": "Ville",
"street": "Adresse",
"streetNotFound": "Adresse introuvable ? Saisissez-la directement.",
"streetComplement": "Adresse complémentaire",
"remove": "Supprimer l'adresse",
"add": "Nouvelle adresse",
"degraded": "Service d'adresse indisponible : saisie de la ville et de l'adresse en mode libre."
},
"accounting": {
"siren": "SIREN",
"accountNumber": "Numéro de compte",
"tvaMode": "Mode de TVA",
"nTva": "N° de TVA",
"paymentDelay": "Délai de règlement",
"paymentType": "Type de règlement",
"bank": "Banque",
"ribLabel": "Libellé",
"ribBic": "BIC",
"ribIban": "IBAN",
"addRib": "Ajouter un RIB",
"removeRib": "Supprimer le RIB"
},
"confirmDelete": {
"title": "Confirmer la suppression",
"cancel": "Annuler",
"confirm": "Supprimer",
"contact": "Supprimer ce contact ?",
"address": "Supprimer cette adresse ?",
"rib": "Supprimer ce RIB ?"
}
},
"toast": {
"error": "Une erreur est survenue. Réessayez.",
"exportError": "L'export du répertoire prestataires a échoué. Réessayez.",
"createSuccess": "Prestataire créé avec succès",
"updateSuccess": "Prestataire mis à jour avec succès",
"addComplete": "Prestataire ajouté",
"archiveSuccess": "Prestataire archivé avec succès",
"restoreSuccess": "Prestataire restauré avec succès"
}
}
},
"transport": {
"carriers": {
"title": "Répertoire transporteurs",
"add": "Ajouter",
"export": "Exporter",
"empty": "Aucun transporteur pour l'instant.",
"column": {
"name": "Nom",
"certification": "Certification",
"validityDate": "Date de validité",
"lastActivity": "Dernière modification"
},
"certification": {
"QUALIMAT": "QUALIMAT",
"GMP_PLUS": "GMP+",
"OVOCOM": "OVOCOM",
"COMPTE_PROPRE": "Compte-propre",
"AUTRE": "Autre"
},
"filters": {
"title": "Filtres",
"search": "Recherche",
"certification": "Certification",
"status": "Statut",
"archivedOnly": "Voir les archivés",
"apply": "Voir les résultats",
"reset": "Réinitialiser"
},
"toast": {
"error": "Une erreur est survenue. Réessayez.",
"exportError": "L'export du répertoire transporteurs a échoué. Réessayez.",
"createSuccess": "Transporteur créé avec succès",
"integrateSuccess": "Transporteur QUALIMAT intégré",
"addressSaved": "Adresse enregistrée",
"contactSaved": "Contact enregistré",
"priceSaved": "Prix enregistré",
"updateSuccess": "Transporteur mis à jour avec succès",
"archiveSuccess": "Transporteur archivé avec succès",
"restoreSuccess": "Transporteur restauré avec succès"
},
"action": {
"edit": "Modifier",
"archive": "Archiver",
"restore": "Restaurer"
},
"consultation": {
"title": "Consultation transporteur",
"back": "Retour au répertoire",
"loading": "Chargement du transporteur…",
"notFound": "Transporteur introuvable.",
"confirmArchive": {
"title": "Archiver le transporteur",
"message": "Ce transporteur n'apparaîtra plus dans le répertoire actif. Confirmer l'archivage ?"
},
"confirmRestore": {
"title": "Restaurer le transporteur",
"message": "Ce transporteur réapparaîtra dans le répertoire actif. Confirmer la restauration ?"
},
"price": {
"group": "Transport",
"carrier": "Fournisseurs / Clients",
"aproOrSite": "Adresse sites",
"delivery": "Adresse livraisons",
"forfait": "Forfait (€)",
"tonne": "Tonne (€)",
"indexation": "Indexation",
"state": "État du prix",
"export": "Exporter",
"empty": "Aucun prix pour ce transporteur."
}
},
"edit": {
"title": "Modifier le transporteur",
"back": "Retour à la consultation",
"loading": "Chargement du transporteur…",
"notFound": "Transporteur introuvable.",
"save": "Enregistrer"
},
"containerType": {
"BENNE": "Benne",
"FOND_MOUVANT": "Fond mouvant"
},
"tab": {
"qualimat": "Qualimat",
"addresses": "Adresses",
"contacts": "Contacts",
"prices": "Prix"
},
"form": {
"title": "Ajouter un transporteur",
"back": "Retour au répertoire",
"submit": "Valider",
"comingSoon": "À venir",
"duplicateName": "Un transporteur actif portant ce nom existe déjà.",
"main": {
"name": "Nom",
"certificationType": "Certification transport",
"isChartered": "Affréter",
"indexationRate": "Indexation %",
"containerType": "Benne / Fond mouvant",
"volumeM3": "Volume m³",
"discharge": "Décharge",
"liotPlates": "Immatriculations LIOT",
"liotPlatesHint": "Séparées par « ; »"
},
"qualimat": {
"empty": "Aucun transporteur QUALIMAT trouvé.",
"searchHint": "Saisissez le nom du transporteur pour lancer la recherche.",
"columns": {
"name": "Nom",
"address": "Adresse",
"validityDate": "Date de validité"
},
"confirm": {
"title": "Intégration QUALIMAT",
"message": "Êtes-vous sûr de vouloir intégrer ce transporteur ?",
"cancel": "Annuler",
"confirm": "Intégrer"
}
},
"errors": {
"nameRequired": "Le nom du transporteur est obligatoire.",
"certificationRequired": "Le type de certification est obligatoire.",
"dischargeRequired": "La décharge est obligatoire pour une certification « Autre ».",
"indexationRequired": "Le taux d'indexation est obligatoire pour un transporteur affrété.",
"containerTypeRequired": "Le type de contenant est obligatoire pour un transporteur affrété.",
"volumeRequired": "Le volume est obligatoire pour un transporteur affrété.",
"uploadFailed": "Le téléversement de la décharge a échoué."
},
"address": {
"country": "Pays",
"postalCode": "Code postal",
"city": "Ville",
"street": "Adresse",
"streetComplement": "Adresse complémentaire",
"streetNotFound": "Adresse introuvable ? Saisissez-la directement.",
"degraded": "Service d'adresse indisponible : saisie de la ville et de l'adresse en mode libre."
},
"contact": {
"lastName": "Nom",
"firstName": "Prénom",
"jobTitle": "Fonction",
"phonePrimary": "Téléphone",
"phoneSecondary": "Téléphone (2)",
"addPhone": "Ajouter un numéro",
"email": "Email",
"add": "Nouveau contact",
"remove": "Supprimer le contact"
},
"confirmDelete": {
"title": "Supprimer ce bloc",
"message": "Cette suppression est définitive. Confirmer ?",
"cancel": "Annuler",
"confirm": "Supprimer"
},
"price": {
"direction": "Sens",
"directionClient": "Client",
"directionSupplier": "Fournisseur",
"client": "Client",
"clientDeliveryAddress": "Adresse de livraison",
"departureSite": "Adresse de départ",
"supplier": "Fournisseur",
"supplierSupplyAddress": "Adresse d'approvisionnement",
"deliverySite": "Adresse de livraison",
"containerType": "Benne / Fond mouvant",
"pricingUnit": "Forfait / Tonne",
"pricingForfait": "Forfait",
"pricingTonne": "Tonne",
"price": "Prix",
"priceState": "État du prix",
"stateEnCours": "En cours",
"stateValide": "Validé",
"stateNonValide": "Non validé",
"add": "Nouveau prix",
"remove": "Supprimer le prix",
"errors": {
"direction": "Le sens du prix est obligatoire.",
"client": "Le client est obligatoire pour un prix client.",
"clientDeliveryAddress": "L'adresse de livraison du client est obligatoire pour un prix client.",
"departureSite": "Le site de départ est obligatoire pour un prix client.",
"supplier": "Le fournisseur est obligatoire pour un prix fournisseur.",
"supplierSupplyAddress": "L'adresse d'approvisionnement est obligatoire pour un prix fournisseur.",
"deliverySite": "Le site de livraison est obligatoire pour un prix fournisseur.",
"containerType": "Le type de contenant est obligatoire.",
"pricingUnit": "L'unité de tarification est obligatoire.",
"price": "Le prix est obligatoire.",
"priceState": "L'état du prix est obligatoire."
}
}
}
}
},
"logistique": {
"weighingTickets": {
"title": "Tickets de pesée",
"add": "Ajouter",
"export": "Exporter",
"empty": "Aucun ticket de pesée pour l'instant.",
"column": {
"number": "Numéro",
"client": "Client",
"supplier": "Fournisseur",
"other": "Autre",
"date": "Date",
"weight": "Poids",
"status": "Statut"
},
"status": {
"draft": "En attente",
"validated": "Terminée"
},
"form": {
"back": "Retour à la liste",
"addTitle": "Ajouter un ticket de pesée",
"emptyBlock": "Poids à vide",
"fullBlock": "Poids à plein",
"date": "Date",
"weight": "Poids (Kg)",
"dsd": "DSD",
"immatriculation": "Immatriculation",
"plateFreeFormat": "Tout format",
"save": "Enregistrer",
"validate": "Valider",
"print": "Imprimer",
"weightRequired": "Le poids est obligatoire : effectuez une pesée.",
"dsdRequired": "Le DSD est obligatoire : effectuez une pesée.",
"counterparty": {
"type": "Fournisseur / Client / Autre",
"supplier": "Fournisseur",
"client": "Client",
"other": "Autre"
},
"weighbridge": {
"auto": "Pesée bascule",
"manual": "Pesée manuelle",
"confirmTitle": "Êtes-vous sûr de vouloir déclencher une pesée ?",
"validate": "Valider",
"unavailable": "Pont bascule indisponible — passez en pesée manuelle."
},
"manual": {
"title": "Pesée manuelle",
"weight": "Poids (Kg)",
"dsd": "DSD",
"save": "Enregistrer",
"weightRequired": "Le poids est obligatoire.",
"dsdRequired": "Le DSD est obligatoire."
}
},
"edit": {
"title": "Ticket de pesée {number}",
"titleFallback": "Modifier un ticket de pesée",
"loading": "Chargement du ticket…",
"notFound": "Ticket de pesée introuvable."
},
"toast": {
"error": "Une erreur est survenue. Réessayez.",
"exportError": "L'export des tickets de pesée a échoué. Réessayez."
}
}
},
"auth": {
"login": "Connexion",
"logout": "Deconnexion",
"username": "Nom d'utilisateur",
"password": "Mot de passe"
},
"errors": {
"auth": {
"login": "Identifiants invalides",
"session": "Session expirée",
"logout": "Erreur lors de la deconnexion"
},
"http": {
"get": "Erreur lors du chargement",
"post": "Erreur lors de la creation",
"put": "Erreur lors de la mise a jour",
"patch": "Erreur lors de la modification",
"delete": "Erreur lors de la suppression"
},
"sites": {
"notAuthorized": "Vous n'êtes pas autorisé à sélectionner ce site."
},
"title": "Erreur",
"generic": "Une erreur est survenue.",
"unknown": "Erreur inconnue.",
"validation": {
"invalidDate": "Date invalide"
}
},
"sites": {
"selector": {
"ariaGroupLabel": "Sélecteur de site actif",
"switchSuccess": "Site courant changé"
}
},
"audit": {
"action": {
"create": "Création",
"update": "Modification",
"delete": "Suppression"
},
"entity": {
"core_user": "Utilisateur",
"core_role": "Rôle",
"core_permission": "Permission",
"sites_site": "Site",
"catalog_category": "Catégorie",
"commercial_client": "Client",
"commercial_clientaddress": "Adresse client",
"commercial_clientcontact": "Contact client",
"commercial_clientrib": "RIB client",
"commercial_supplier": "Fournisseur",
"commercial_supplieraddress": "Adresse fournisseur",
"commercial_suppliercontact": "Contact fournisseur",
"commercial_supplierrib": "RIB fournisseur",
"technique_provider": "Prestataire",
"technique_provideraddress": "Adresse prestataire",
"technique_providercontact": "Contact prestataire",
"technique_providerrib": "RIB prestataire",
"transport_carrier": "Transporteur",
"transport_carrieraddress": "Adresse transporteur",
"transport_carriercontact": "Contact transporteur",
"transport_carrierprice": "Prix transporteur",
"logistique_weighingticket": "Ticket de pesée"
},
"empty": "Aucune activité enregistrée",
"no_results": "Aucun résultat pour ces filtres",
"error": {
"title": "Erreur",
"message": "Impossible de charger le journal d'audit. Vérifiez les filtres ou réessayez."
},
"timeline": {
"empty": "Aucun historique",
"load_more": "Voir plus"
},
"filters": {
"title": "Filtres",
"apply": "Voir les résultats",
"reset": "Réinitialiser",
"date_range": "Date à date",
"date_from": "Du",
"date_to": "Au",
"entity_type": "Type d'entité",
"user": "Utilisateur",
"action": "Action",
"all_actions": "Toutes les actions"
},
"detail": {
"field": "Champ",
"old_value": "Ancienne valeur",
"new_value": "Nouvelle valeur"
},
"detail_title": "Détail de l'entrée"
},
"success": {
"auth": {
"logout": "Deconnexion reussie"
},
"title": "Succès",
"deleted": "Suppression effectuée"
},
"admin": {
"roles": {
"title": "Gestion des rôles",
"newRole": "Nouveau rôle",
"editRole": "Modifier le rôle",
"createRole": "Créer un rôle",
"noRoles": "Aucun rôle configuré",
"table": {
"label": "Libellé",
"code": "Code",
"permissions": "Permissions",
"system": "Système"
},
"form": {
"label": "Libellé",
"code": "Code",
"description": "Description",
"permissions": "Permissions"
},
"delete": {
"title": "Supprimer le rôle",
"message": "Êtes-vous sûr de vouloir supprimer le rôle \"{label}\" ? Cette action est irréversible.",
"systemTooltip": "Rôle système non supprimable"
},
"toast": {
"created": "Rôle créé avec succès",
"updated": "Rôle mis à jour avec succès",
"deleted": "Rôle supprimé avec succès"
},
"permissions": {
"selectAll": "Tout selectionner",
"noPermissions": "Aucune permission disponible",
"loadFailed": "Impossible de charger le catalogue de permissions. L'enregistrement est désactivé pour éviter tout écrasement accidentel."
}
},
"users": {
"title": "Gestion des utilisateurs",
"noUsers": "Aucun utilisateur",
"table": {
"username": "Nom d'utilisateur",
"admin": "Administrateur",
"roles": "Roles",
"directPermissions": "Permissions directes",
"sites": "Sites"
},
"drawer": {
"title": "Permissions de {username}",
"selfWarning": "Vous modifiez vos propres droits",
"adminToggle": "Administrateur (bypass total)",
"rolesSection": "Rôles",
"directPermissionsSection": "Permissions directes",
"sitesSection": "Sites autorisés",
"summarySection": "Résumé des permissions effectives",
"noEffectivePermissions": "Aucune permission effective",
"sourceRole": "via {role}",
"sourceDirect": "Direct",
"lastAdminWarning": "Impossible de retirer le statut administrateur du dernier admin",
"loadFailed": "Impossible de charger les droits de cet utilisateur. L'enregistrement est désactivé pour éviter tout écrasement accidentel."
},
"toast": {
"updated": "Permissions mises à jour avec succès"
}
},
"auditLog": {
"title": "Journal d'audit",
"table": {
"performedAt": "Date",
"performedBy": "Utilisateur",
"entityType": "Entité",
"entityId": "ID",
"action": "Action",
"summary": "Résumé"
},
"pagination": {
"previous": "Précédent",
"next": "Suivant"
}
},
"sites": {
"title": "Gestion des sites",
"newSite": "Nouveau site",
"editSite": "Modifier le site",
"createSite": "Créer un site",
"noSites": "Aucun site configuré",
"table": {
"name": "Nom",
"city": "Ville",
"postalCode": "Code postal",
"color": "Couleur",
"fullAddress": "Adresse complète"
},
"form": {
"name": "Nom",
"street": "Rue",
"complement": "Complément d'adresse",
"complementPlaceholder": "Bâtiment, escalier, BP... (optionnel)",
"postalCode": "Code postal",
"city": "Ville",
"color": "Couleur (format #RRGGBB)",
"colorInvalid": "Format attendu : #RRGGBB (6 caractères hexadécimaux)"
},
"delete": {
"title": "Supprimer le site",
"message": "Êtes-vous sûr de vouloir supprimer le site \"{name}\" ? Cette action est irréversible et retirera ce site à tous les utilisateurs rattachés."
},
"toast": {
"created": "Site créé avec succès",
"updated": "Site mis à jour avec succès",
"deleted": "Site supprimé avec succès"
}
},
"categories": {
"title": "Gestion des catégories",
"newCategory": "Ajouter",
"editCategory": "Modifier la catégorie",
"createCategory": "Créer une catégorie",
"noCategories": "Aucune catégorie pour l'instant.",
"table": {
"name": "Nom",
"types": "Types"
},
"filters": {
"title": "Filtres",
"search": "Recherche",
"types": "Types de catégorie",
"apply": "Voir les résultats",
"reset": "Réinitialiser"
},
"form": {
"name": "Nom",
"types": "Types de catégorie"
},
"validation": {
"nameRequired": "Le nom est obligatoire.",
"nameLength": "Le nom doit faire entre 2 et 120 caractères.",
"typesRequired": "Sélectionnez au moins un type de catégorie."
},
"delete": {
"title": "Supprimer la catégorie",
"message": "Êtes-vous sûr de vouloir supprimer la catégorie \"{name}\" ? Cette action est irréversible."
},
"toast": {
"created": "Catégorie créée avec succès",
"updated": "Catégorie mise à jour avec succès",
"deleted": "Catégorie supprimée avec succès",
"duplicate": "Une catégorie nommée « {name} » existe déjà.",
"typesLoadFailed": "Impossible de charger les types de catégorie. Réessayez."
}
}
}
}