batchCooking/apps/web/src/locales/fr/translation.json
Nicolas ea86a4a7f1 feat(recipes): catégories d'ingrédients + nouveau sélecteur
- Prisma: enum IngredientCategory (18 valeurs) + Ingredient.category,
  migration appliquée
- reference-seed-data.ts restructuré en 18 groupes de catégories
- packages/shared: INGREDIENT_CATEGORIES + IngredientView.category
- API: category exposé par /reference/ingredients et /recipes
- Web: nouveau IngredientPicker (chips catégories + recherche + grille
  de cartes) remplaçant IngredientAutocomplete, branché dans le
  formulaire de recette et le champ aliments-pas-aimés
- i18n: clés recipes.form.category.* et libellés du picker
- Fix test reference.test.ts pour la nouvelle forme d'IngredientView

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-18 10:24:12 +02:00

275 lines
9 KiB
JSON

{
"common": {
"saving": "Enregistrement…",
"saved": "Enregistré ✓",
"loadError": "Impossible de charger le planning, réessayez plus tard"
},
"errors": {
"VALIDATION_ERROR": "Erreur de validation",
"EMAIL_ALREADY_IN_USE": "Cet email est déjà utilisé",
"INVALID_CREDENTIALS": "Email ou mot de passe incorrect",
"NOT_AUTHENTICATED": "Vous devez être connecté",
"ALREADY_HAS_HOUSE": "Vous appartenez déjà à un foyer",
"NOT_HOUSE_ADMIN": "Seul l'administrateur du foyer peut faire ça",
"NOT_RECIPE_AUTHOR": "Seul l'auteur de la recette peut faire ça",
"NOT_FOUND": "Ressource introuvable",
"HOUSE_NOT_FOUND": "Votre profil n'a pas de foyer",
"DIET_NOT_FOUND": "Ce régime alimentaire n'existe pas",
"ALLERGY_NOT_FOUND": "Un des allergènes sélectionnés n'existe pas",
"INVITE_CODE_NOT_FOUND": "Ce code d'invitation ne correspond à aucun foyer",
"RECIPE_NOT_FOUND": "Cette recette n'existe pas",
"RECIPE_IN_USE": "Cette recette est encore utilisée dans un planning",
"INGREDIENT_NOT_FOUND": "Un des ingrédients sélectionnés n'existe pas",
"INTERNAL_ERROR": "Une erreur est survenue, réessayez plus tard"
},
"auth": {
"login": {
"title": "Se connecter",
"emailLabel": "Email",
"passwordLabel": "Mot de passe",
"submit": "Se connecter",
"submitting": "Connexion…",
"noAccount": "Pas encore de compte ?",
"createProfileLink": "Créer un profil"
},
"signup": {
"title": "Créer un profil",
"firstNameLabel": "Prénom",
"lastNameLabel": "Nom",
"emailLabel": "Email",
"passwordLabel": "Mot de passe",
"submit": "Créer mon profil",
"submitting": "Création…",
"hasAccount": "Déjà un compte ?",
"loginLink": "Se connecter"
}
},
"onboarding": {
"step": "Étape {{current}} sur {{total}}",
"continue": "Continuer",
"finish": "Terminer",
"loading": "Chargement…",
"diet": {
"title": "Un régime alimentaire particulier ?"
},
"household": {
"title": "Rejoignez ou créez un foyer",
"subtitle": "Optionnel — vous pourrez le faire plus tard depuis les paramètres.",
"skip": "Passer cette étape",
"alreadyHasHouse": "Vous faites déjà partie du foyer « {{name}} »."
},
"allergens": {
"title": "Des allergies ou intolérances ?"
}
},
"layout": {
"sidebar": {
"collapse": "Replier le menu",
"expand": "Déplier le menu"
},
"nav": {
"planning": "Planning",
"recipes": "Recettes",
"shoppingList": "Liste de courses"
},
"settings": {
"toggle": "Paramètres",
"nav": {
"account": "Compte",
"preferences": "Préférences alimentaires",
"household": "Foyer",
"userPreferences": "Préférences utilisateur"
}
},
"accountMenu": {
"myAccount": "Mon compte"
},
"greeting": "Bonjour {{firstName}} 👋",
"logout": "Se déconnecter"
},
"planning": {
"title": "Planning de la semaine",
"loading": "Chargement du planning…",
"weekNav": {
"thisWeek": "Cette semaine",
"prevWeek": "Semaine précédente",
"nextWeek": "Semaine suivante",
"label": "Semaine du {{range}}"
},
"calendar": {
"prevMonth": "Mois précédent",
"nextMonth": "Mois suivant"
},
"days": {
"lundi": "Lundi",
"mardi": "Mardi",
"mercredi": "Mercredi",
"jeudi": "Jeudi",
"vendredi": "Vendredi",
"samedi": "Samedi",
"dimanche": "Dimanche"
},
"meals": {
"petit-dejeuner": "Petit-déjeuner",
"collation": "Collation",
"dejeuner": "Déjeuner",
"gouter": "Goûter",
"diner": "Dîner"
},
"grid": {
"addRecipeSoon": "Recherche de recettes à venir",
"removeRecipe": "Retirer cette recette"
}
},
"recipes": {
"title": "Recettes",
"searchPlaceholder": "Rechercher une recette…",
"newButton": "Nouvelle recette",
"loading": "Chargement…",
"empty": "Aucune recette pour le moment.",
"notFound": "Cette recette n'existe pas.",
"editButton": "Modifier",
"deleteButton": "Supprimer",
"confirmDeleteButton": "Confirmer la suppression",
"cancelDeleteButton": "Annuler",
"ingredientsTitle": "Ingrédients",
"stepsTitle": "Préparation",
"tabs": {
"favoris": "Favoris",
"perso": "Perso",
"foyer": "Foyer",
"publique": "Publique",
"sourcesSoon": "Sources (bientôt)",
"sourcesSoonHint": "Un onglet par source externe, une fois l'import de recettes construit"
},
"table": {
"name": "Nom",
"allergens": "Allergènes / intolérances",
"diets": "Régime associé"
},
"detail": {
"empty": "Sélectionnez une recette dans le tableau pour voir son détail ici.",
"favorite": "Ajouter aux favoris",
"unfavorite": "Retirer des favoris"
},
"form": {
"newTitle": "Nouvelle recette",
"editTitle": "Modifier la recette",
"nameLabel": "Nom de la recette",
"descriptionLabel": "Description",
"pictureLabel": "Photo (URL)",
"visibilityLabel": "Visible par",
"visibility": {
"PERSONAL": "Moi uniquement",
"HOUSE": "Mon foyer",
"PUBLIC": "Tout le monde"
},
"dietsLabel": "Régime(s) associé(s)",
"searchIngredientPlaceholder": "Rechercher un ingrédient…",
"allCategories": "Tout",
"noIngredientFound": "Aucun ingrédient trouvé.",
"category": {
"CEREALES_FECULENTS": "Céréales & féculents",
"LEGUMINEUSES": "Légumineuses",
"VIANDES_VOLAILLES": "Viandes & volailles",
"POISSONS_FRUITS_DE_MER": "Poissons & fruits de mer",
"PRODUITS_LAITIERS_OEUFS": "Produits laitiers & œufs",
"LEGUMES": "Légumes",
"FRUITS": "Fruits",
"FRUITS_SECS_OLEAGINEUX": "Fruits secs & oléagineux",
"CONDIMENTS_SAUCES": "Condiments & sauces",
"EPICES_HERBES": "Épices & herbes",
"SUCRE_PATISSERIE": "Sucre & pâtisserie",
"CUISINE_ITALIENNE": "Cuisine italienne",
"CUISINE_ASIATIQUE": "Cuisine asiatique",
"CUISINE_MEXICAINE": "Cuisine mexicaine",
"MAGHREB_MOYEN_ORIENT": "Maghreb & Moyen-Orient",
"PAINS_SANDWICHS": "Pains & sandwichs",
"EPICERIE_DIVERS": "Épicerie & divers",
"LIQUIDES_BOISSONS": "Liquides & boissons"
},
"quantityLabel": "Quantité",
"unitLabel": "Unité",
"unitPlaceholder": "g, ml, unité…",
"removeIngredient": "Retirer cet ingrédient",
"stepDescriptionPlaceholder": "Décrivez cette étape…",
"stepPicturePlaceholder": "Photo de l'étape (URL, optionnel)",
"moveStepUp": "Monter cette étape",
"moveStepDown": "Descendre cette étape",
"removeStep": "Supprimer cette étape",
"addStep": "Ajouter une étape",
"submit": "Enregistrer",
"submitting": "Enregistrement…",
"genericError": "Le formulaire contient des erreurs"
}
},
"shoppingList": {
"title": "Liste de courses",
"comingSoon": "Cette section arrive bientôt."
},
"account": {
"title": "Compte",
"identity": {
"firstNameLabel": "Prénom",
"lastNameLabel": "Nom",
"emailLabel": "Email"
},
"dangerZone": {
"title": "Zone dangereuse",
"description": "Supprimer votre compte est définitif et irréversible.",
"deleteButton": "Supprimer mon compte",
"passwordLabel": "Confirmez avec votre mot de passe",
"confirmButton": "Confirmer la suppression",
"cancelButton": "Annuler"
}
},
"preferences": {
"title": "Préférences alimentaires",
"form": {
"dietLabel": "Régime alimentaire",
"dietNone": "Aucun régime particulier",
"allergiesLabel": "Allergies",
"intolerancesLabel": "Intolérances",
"dislikedIngredientsLabel": "Aliments que vous n'aimez pas",
"removeDislikedIngredient": "Retirer cet aliment"
}
},
"userPreferences": {
"title": "Préférences utilisateur",
"themeLabel": "Thème",
"theme": {
"LIGHT": "Clair",
"DARK": "Sombre",
"SYSTEM": "Système"
}
},
"household": {
"title": "Foyer",
"form": {
"nameLabel": "Nom du foyer"
},
"noHouse": {
"intro": "Vous n'appartenez à aucun foyer pour le moment.",
"createTitle": "Créer un foyer",
"createButton": "Créer",
"joinTitle": "Rejoindre un foyer",
"joinLabel": "Code d'invitation",
"joinButton": "Rejoindre"
},
"inviteCodeLabel": "Code d'invitation",
"copyButton": "Copier",
"copied": "Copié ✓",
"membersTitle": "Membres",
"adminBadge": "Admin",
"youSuffix": " (vous)",
"removeButton": "Retirer",
"leaveButton": "Quitter le foyer",
"dangerZone": {
"title": "Zone dangereuse",
"description": "Supprimer le foyer le supprime pour tous ses membres, ainsi que son planning.",
"deleteButton": "Supprimer le foyer",
"confirmButton": "Confirmer la suppression",
"cancelButton": "Annuler"
}
}
}