diff --git a/apps/api/src/db/catalog-en-keys.ts b/apps/api/src/db/catalog-en-keys.ts index 0eadfa2..48979a6 100644 --- a/apps/api/src/db/catalog-en-keys.ts +++ b/apps/api/src/db/catalog-en-keys.ts @@ -98,6 +98,19 @@ const INGREDIENT_KEYS: Record = { Daikon: "daikon", "Piment vert frais": "fresh_green_chili", Cardon: "cardoon", + "Chicorée rouge": "radicchio", + "Chou romanesco": "romanesco", + "Chou-rave": "kohlrabi", + "Chou chinois": "napa_cabbage", + "Céleri-rave": "celeriac", + Gombo: "okra", + "Oignon nouveau": "spring_onion", + Potimarron: "red_kuri_squash", + Rutabaga: "rutabaga", + Salicorne: "samphire", + Salsifis: "salsify", + Mâche: "lambs_lettuce", + Scarole: "escarole", // --- Produits frais / Fruits ----------------------------------------- Citron: "lemon", @@ -130,6 +143,10 @@ const INGREDIENT_KEYS: Record = { Coing: "quince", Cassis: "blackcurrant", Canneberge: "cranberry", + Groseille: "redcurrant", + Kaki: "persimmon", + Nectarine: "nectarine", + Tamarin: "tamarind", // --- Produits frais / Herbes fraîches --------------------------------- Basilic: "basil", @@ -191,6 +208,11 @@ const INGREDIENT_KEYS: Record = { Cerf: "venison", Chevreuil: "roe_deer", Sanglier: "wild_boar", + Cheval: "horse_meat", + "Cœur de bœuf": "beef_heart", + "Foie gras": "foie_gras", + "Museau de bœuf": "beef_muzzle", + "Viande des Grisons": "grisons_dried_beef", // --- Boucherie & poissonnerie / Volailles ----------------------------- Poulet: "chicken", @@ -201,6 +223,9 @@ const INGREDIENT_KEYS: Record = { Pintade: "guinea_fowl", Oie: "goose", "Foie de volaille": "poultry_liver", + Chapon: "capon", + Pigeon: "pigeon", + Faisan: "pheasant", // --- Boucherie & poissonnerie / Poissons ------------------------------- Saumon: "salmon", @@ -235,6 +260,9 @@ const INGREDIENT_KEYS: Record = { "Poisson séché": "dried_fish", Anguille: "eel", "Carrelet (ou plie)": "plaice", + Morue: "salt_cod", + Limande: "lemon_sole", + Rascasse: "scorpionfish", // --- Boucherie & poissonnerie / Crustacés & fruits de mer ------------- Crevettes: "shrimp", @@ -251,6 +279,11 @@ const INGREDIENT_KEYS: Record = { Bulots: "whelks", "Araignée de mer": "spider_crab", Bigorneau: "periwinkle", + Écrevisse: "crayfish", + "Crevette grise": "grey_shrimp", + Coque: "cockle", + Escargot: "snail", + Seiche: "cuttlefish", // --- Épicerie sèche / Féculents ---------------------------------------- Semoule: "semolina", @@ -291,6 +324,8 @@ const INGREDIENT_KEYS: Record = { Fèves: "fava_beans", Edamame: "edamame", "Haricots pinto": "pinto_beans", + "Haricots flageolets": "flageolet_beans", + "Lentilles blondes": "golden_lentils", // --- Épicerie sèche / Graines & fruits secs ---------------------------- Cacahuètes: "peanuts_shelled", @@ -343,6 +378,7 @@ const INGREDIENT_KEYS: Record = { Ciabatta: "ciabatta", "Tortilla de maïs": "corn_tortilla", "Tortilla de blé": "wheat_tortilla", + Gressin: "breadstick", // --- Boulangerie / Pâtes à cuire ----------------------------------------- "Pâte feuilletée": "puff_pastry", @@ -397,6 +433,13 @@ const INGREDIENT_KEYS: Record = { "Crottin de Chavignol": "crottin_de_chavignol", Abondance: "abondance_cheese", "Carré de l'Est": "carre_de_l_est", + Edam: "edam", + Gouda: "gouda", + Mimolette: "mimolette", + Maroilles: "maroilles", + "Mont d'or": "mont_dor", + Kéfir: "kefir", + "Yaourt à la grecque": "greek_yogurt", // --- Crémerie & fromage / Œufs ------------------------------------------- Œuf: "egg", @@ -488,6 +531,9 @@ const INGREDIENT_KEYS: Record = { "Pâte de curry rouge (thaï)": "red_curry_paste", "Pâte de curry vert (thaï)": "green_curry_paste", Tahini: "tahini", + Aïoli: "aioli", + "Sauce vinaigrette": "vinaigrette", + Houmous: "hummus", // --- Condiments & épices / Assaisonnements ----------------------------------- "Huile d'olive": "olive_oil", @@ -500,8 +546,11 @@ const INGREDIENT_KEYS: Record = { "Vinaigre balsamique": "balsamic_vinegar", Câpres: "capers", Olives: "olives", + "Olives noires": "black_olives", + "Olives vertes": "green_olives", "Vin blanc (cuisine)": "white_wine", "Vin rouge (cuisine)": "red_wine", + "Vin rosé (cuisine)": "rose_wine", "Vinaigre de vin rouge": "red_wine_vinegar", "Vinaigre de vin blanc": "white_wine_vinegar", "Vinaigre de xérès": "sherry_vinegar", @@ -509,6 +558,10 @@ const INGREDIENT_KEYS: Record = { "Huile de noisette": "hazelnut_oil", "Huile d'arachide": "peanut_oil", "Huile pimentée": "chili_oil", + "Huile de maïs": "corn_oil", + "Huile de pépins de raisin": "grapeseed_oil", + "Huile de soja": "soybean_oil", + "Huile de palme": "palm_oil", "Vinaigre de riz": "rice_vinegar", Mirin: "mirin", "Saké (cuisine)": "sake", diff --git a/apps/api/src/db/reference-seed-data.ts b/apps/api/src/db/reference-seed-data.ts index 0add29f..e82ca20 100644 --- a/apps/api/src/db/reference-seed-data.ts +++ b/apps/api/src/db/reference-seed-data.ts @@ -159,6 +159,20 @@ export const INGREDIENT_GROUPS: Array<{ { name: "Daikon", allergenNames: [] }, { name: "Piment vert frais", allergenNames: [] }, { name: "Cardon", allergenNames: [] }, + // Second Ciqual pass — see the PR description. + { name: "Chicorée rouge", allergenNames: [] }, + { name: "Chou romanesco", allergenNames: [] }, + { name: "Chou-rave", allergenNames: [] }, + { name: "Chou chinois", allergenNames: [] }, + { name: "Céleri-rave", allergenNames: ["Céleri"] }, + { name: "Gombo", allergenNames: [] }, + { name: "Oignon nouveau", allergenNames: [] }, + { name: "Potimarron", allergenNames: [] }, + { name: "Rutabaga", allergenNames: [] }, + { name: "Salicorne", allergenNames: [] }, + { name: "Salsifis", allergenNames: [] }, + { name: "Mâche", allergenNames: [] }, + { name: "Scarole", allergenNames: [] }, ], }, { @@ -197,6 +211,11 @@ export const INGREDIENT_GROUPS: Array<{ { name: "Coing", allergenNames: [] }, { name: "Cassis", allergenNames: [] }, { name: "Canneberge", allergenNames: [] }, + // Second Ciqual pass. + { name: "Groseille", allergenNames: [] }, + { name: "Kaki", allergenNames: [] }, + { name: "Nectarine", allergenNames: [] }, + { name: "Tamarin", allergenNames: [] }, ], }, { @@ -276,6 +295,12 @@ export const INGREDIENT_GROUPS: Array<{ { name: "Cerf", allergenNames: [] }, { name: "Chevreuil", allergenNames: [] }, { name: "Sanglier", allergenNames: [] }, + // Second Ciqual pass. + { name: "Cheval", allergenNames: [] }, + { name: "Cœur de bœuf", allergenNames: [] }, + { name: "Foie gras", allergenNames: [] }, + { name: "Museau de bœuf", allergenNames: [] }, + { name: "Viande des Grisons", allergenNames: [] }, ], }, { @@ -293,6 +318,10 @@ export const INGREDIENT_GROUPS: Array<{ { name: "Pintade", allergenNames: [] }, { name: "Oie", allergenNames: [] }, { name: "Foie de volaille", allergenNames: [] }, + // Second Ciqual pass. + { name: "Chapon", allergenNames: [] }, + { name: "Pigeon", allergenNames: [] }, + { name: "Faisan", allergenNames: [] }, ], }, { @@ -334,6 +363,10 @@ export const INGREDIENT_GROUPS: Array<{ // Ciqual 2025 additions. { name: "Anguille", allergenNames: ["Poissons"] }, { name: "Carrelet (ou plie)", allergenNames: ["Poissons"] }, + // Second Ciqual pass. + { name: "Morue", allergenNames: ["Poissons"] }, + { name: "Limande", allergenNames: ["Poissons"] }, + { name: "Rascasse", allergenNames: ["Poissons"] }, ], }, { @@ -357,6 +390,12 @@ export const INGREDIENT_GROUPS: Array<{ // Ciqual 2025 additions. { name: "Araignée de mer", allergenNames: ["Crustacés"] }, { name: "Bigorneau", allergenNames: ["Mollusques"] }, + // Second Ciqual pass. + { name: "Écrevisse", allergenNames: ["Crustacés"] }, + { name: "Crevette grise", allergenNames: ["Crustacés"] }, + { name: "Coque", allergenNames: ["Mollusques"] }, + { name: "Escargot", allergenNames: ["Mollusques"] }, + { name: "Seiche", allergenNames: ["Mollusques"] }, ], }, // ========================================================================= @@ -412,6 +451,9 @@ export const INGREDIENT_GROUPS: Array<{ { name: "Fèves", allergenNames: [] }, { name: "Edamame", allergenNames: ["Soja"] }, { name: "Haricots pinto", allergenNames: [] }, + // Second Ciqual pass. + { name: "Haricots flageolets", allergenNames: [] }, + { name: "Lentilles blondes", allergenNames: [] }, ], }, { @@ -498,6 +540,8 @@ export const INGREDIENT_GROUPS: Array<{ { name: "Ciabatta", allergenNames: ["Gluten"] }, { name: "Tortilla de maïs", allergenNames: [] }, { name: "Tortilla de blé", allergenNames: ["Gluten"] }, + // Second Ciqual pass. + { name: "Gressin", allergenNames: ["Gluten"] }, ], }, { @@ -583,6 +627,14 @@ export const INGREDIENT_GROUPS: Array<{ { name: "Crottin de Chavignol", icon: "CHEESE", allergenNames: ["Lait"] }, { name: "Abondance", icon: "CHEESE", allergenNames: ["Lait"] }, { name: "Carré de l'Est", icon: "CHEESE", allergenNames: ["Lait"] }, + // Second Ciqual pass. + { name: "Edam", icon: "CHEESE", allergenNames: ["Lait"] }, + { name: "Gouda", icon: "CHEESE", allergenNames: ["Lait"] }, + { name: "Mimolette", icon: "CHEESE", allergenNames: ["Lait"] }, + { name: "Maroilles", icon: "CHEESE", allergenNames: ["Lait"] }, + { name: "Mont d'or", icon: "CHEESE", allergenNames: ["Lait"] }, + { name: "Kéfir", allergenNames: ["Lait"] }, + { name: "Yaourt à la grecque", allergenNames: ["Lait"] }, ], }, { @@ -751,6 +803,14 @@ export const INGREDIENT_GROUPS: Array<{ { name: "Pâte de curry rouge (thaï)", allergenNames: [] }, { name: "Pâte de curry vert (thaï)", allergenNames: [] }, { name: "Tahini", allergenNames: ["Graines de sésame"] }, + // Second Ciqual pass. + { + name: "Aïoli", + allergenNames: ["Œufs"], + dietNames: ["Végétarien", "Pescétarien"], + }, + { name: "Sauce vinaigrette", allergenNames: [] }, + { name: "Houmous", allergenNames: ["Graines de sésame"] }, ], }, { @@ -769,8 +829,11 @@ export const INGREDIENT_GROUPS: Array<{ { name: "Vinaigre balsamique", allergenNames: ["Sulfites"] }, { name: "Câpres", icon: "JAR", allergenNames: [] }, { name: "Olives", icon: "JAR", allergenNames: [] }, + { name: "Olives noires", icon: "JAR", allergenNames: [] }, + { name: "Olives vertes", icon: "JAR", allergenNames: [] }, { name: "Vin blanc (cuisine)", icon: "DRINK", allergenNames: ["Sulfites"] }, { name: "Vin rouge (cuisine)", icon: "DRINK", allergenNames: ["Sulfites"] }, + { name: "Vin rosé (cuisine)", icon: "DRINK", allergenNames: ["Sulfites"] }, { name: "Vinaigre de vin rouge", allergenNames: ["Sulfites"] }, { name: "Vinaigre de vin blanc", allergenNames: ["Sulfites"] }, { name: "Vinaigre de xérès", allergenNames: ["Sulfites"] }, @@ -779,6 +842,11 @@ export const INGREDIENT_GROUPS: Array<{ { name: "Huile d'arachide", allergenNames: ["Arachides"] }, { name: "Huile pimentée", allergenNames: [] }, { name: "Vinaigre de riz", allergenNames: [] }, + // Second Ciqual pass. + { name: "Huile de maïs", allergenNames: [] }, + { name: "Huile de pépins de raisin", allergenNames: [] }, + { name: "Huile de soja", allergenNames: ["Soja"] }, + { name: "Huile de palme", allergenNames: [] }, { name: "Mirin", icon: "DRINK", allergenNames: [] }, { name: "Saké (cuisine)", icon: "DRINK", allergenNames: [] }, { name: "Jus de citron", icon: "DRINK", allergenNames: [] }, diff --git a/apps/web/src/locales/fr/translation.json b/apps/web/src/locales/fr/translation.json index 10380a8..e610d97 100644 --- a/apps/web/src/locales/fr/translation.json +++ b/apps/web/src/locales/fr/translation.json @@ -385,6 +385,19 @@ "daikon": "Daikon", "fresh_green_chili": "Piment vert frais", "cardoon": "Cardon", + "radicchio": "Chicorée rouge", + "romanesco": "Chou romanesco", + "kohlrabi": "Chou-rave", + "napa_cabbage": "Chou chinois", + "celeriac": "Céleri-rave", + "okra": "Gombo", + "spring_onion": "Oignon nouveau", + "red_kuri_squash": "Potimarron", + "rutabaga": "Rutabaga", + "samphire": "Salicorne", + "salsify": "Salsifis", + "lambs_lettuce": "Mâche", + "escarole": "Scarole", "lemon": "Citron", "lime": "Citron vert", "apple": "Pomme", @@ -415,6 +428,10 @@ "quince": "Coing", "blackcurrant": "Cassis", "cranberry": "Canneberge", + "redcurrant": "Groseille", + "persimmon": "Kaki", + "nectarine": "Nectarine", + "tamarind": "Tamarin", "basil": "Basilic", "parsley": "Persil", "thyme": "Thym", @@ -472,6 +489,11 @@ "venison": "Cerf", "roe_deer": "Chevreuil", "wild_boar": "Sanglier", + "horse_meat": "Cheval", + "beef_heart": "Cœur de bœuf", + "foie_gras": "Foie gras", + "beef_muzzle": "Museau de bœuf", + "grisons_dried_beef": "Viande des Grisons", "chicken": "Poulet", "turkey": "Dinde", "duck": "Canard", @@ -480,6 +502,9 @@ "guinea_fowl": "Pintade", "goose": "Oie", "poultry_liver": "Foie de volaille", + "capon": "Chapon", + "pigeon": "Pigeon", + "pheasant": "Faisan", "salmon": "Saumon", "tuna": "Thon", "cod": "Cabillaud", @@ -512,6 +537,9 @@ "dried_fish": "Poisson séché", "eel": "Anguille", "plaice": "Carrelet (ou plie)", + "salt_cod": "Morue", + "lemon_sole": "Limande", + "scorpionfish": "Rascasse", "shrimp": "Crevettes", "langoustine": "Langoustines", "lobster": "Homard", @@ -526,6 +554,11 @@ "whelks": "Bulots", "spider_crab": "Araignée de mer", "periwinkle": "Bigorneau", + "crayfish": "Écrevisse", + "grey_shrimp": "Crevette grise", + "cockle": "Coque", + "snail": "Escargot", + "cuttlefish": "Seiche", "semolina": "Semoule", "couscous": "Couscous", "bulgur": "Boulgour", @@ -562,6 +595,8 @@ "fava_beans": "Fèves", "edamame": "Edamame", "pinto_beans": "Haricots pinto", + "flageolet_beans": "Haricots flageolets", + "golden_lentils": "Lentilles blondes", "peanuts_shelled": "Cacahuètes", "almonds": "Amandes", "walnuts": "Noix", @@ -609,6 +644,7 @@ "ciabatta": "Ciabatta", "corn_tortilla": "Tortilla de maïs", "wheat_tortilla": "Tortilla de blé", + "breadstick": "Gressin", "puff_pastry": "Pâte feuilletée", "shortcrust_pastry": "Pâte brisée", "pizza_dough": "Pâte à pizza", @@ -659,6 +695,13 @@ "crottin_de_chavignol": "Crottin de Chavignol", "abondance_cheese": "Abondance", "carre_de_l_est": "Carré de l'Est", + "edam": "Edam", + "gouda": "Gouda", + "mimolette": "Mimolette", + "maroilles": "Maroilles", + "mont_dor": "Mont d'or", + "kefir": "Kéfir", + "greek_yogurt": "Yaourt à la grecque", "egg": "Œuf", "coconut_milk": "Lait de coco", "coconut_cream": "Crème de coco", @@ -742,6 +785,9 @@ "red_curry_paste": "Pâte de curry rouge (thaï)", "green_curry_paste": "Pâte de curry vert (thaï)", "tahini": "Tahini", + "aioli": "Aïoli", + "vinaigrette": "Sauce vinaigrette", + "hummus": "Houmous", "olive_oil": "Huile d'olive", "sunflower_oil": "Huile de tournesol", "rapeseed_oil": "Huile de colza", @@ -752,8 +798,11 @@ "balsamic_vinegar": "Vinaigre balsamique", "capers": "Câpres", "olives": "Olives", + "black_olives": "Olives noires", + "green_olives": "Olives vertes", "white_wine": "Vin blanc (cuisine)", "red_wine": "Vin rouge (cuisine)", + "rose_wine": "Vin rosé (cuisine)", "red_wine_vinegar": "Vinaigre de vin rouge", "white_wine_vinegar": "Vinaigre de vin blanc", "sherry_vinegar": "Vinaigre de xérès", @@ -762,6 +811,10 @@ "peanut_oil": "Huile d'arachide", "chili_oil": "Huile pimentée", "rice_vinegar": "Vinaigre de riz", + "corn_oil": "Huile de maïs", + "grapeseed_oil": "Huile de pépins de raisin", + "soybean_oil": "Huile de soja", + "palm_oil": "Huile de palme", "mirin": "Mirin", "sake": "Saké (cuisine)", "lemon_juice": "Jus de citron",