2.0: weekly shopping list from planned dishes
- ShoppingItem model (per-week lines; dish-derived or free-text) + schema. - ShoppingListService.reconcile mirrors planned dishes' ingredients into the list, preserving check-off state and user items; plain-text export helper. - ShoppingListView: grouped by dish, check-off, swipe-delete, free-text adds, clear-checked, ShareLink export, and inline on-device "Generate" for planned dishes without ingredients (paywall after 3 free generations, source=ingredient_generation). - Home toolbar: cart entry point (all users) + sheet. - Analytics: shopping_list_opened, shopping_item_added, ingredients_generated. - Localized in all 6 languages. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01BkanrydYtrme8wipTzWssG
This commit is contained in:
@@ -384,3 +384,16 @@
|
||||
/* Offer codes + share link (1.2.0) */
|
||||
"premium_redeem_code" = "Utiliser un code promo";
|
||||
"share_link_text" = "Notre semaine, planifiée avec MealMood → https://mealmood.app";
|
||||
|
||||
// Shopping list (2.0)
|
||||
"shopping_list_title" = "Liste de courses";
|
||||
"shopping_done" = "OK";
|
||||
"shopping_missing_ingredients" = "Pas encore d'ingrédients";
|
||||
"shopping_other_items" = "Autres articles";
|
||||
"shopping_add_item_placeholder" = "Ajouter un article…";
|
||||
"shopping_generate" = "Générer";
|
||||
"shopping_clear_checked" = "Effacer les articles cochés";
|
||||
"shopping_delete" = "Supprimer";
|
||||
"shopping_empty_title" = "Rien à acheter pour l'instant";
|
||||
"shopping_empty_message" = "Planifiez des plats pour cette semaine et leurs ingrédients apparaîtront ici.";
|
||||
"shopping_share_header" = "🛒 Liste de courses — MealMood";
|
||||
|
||||
Reference in New Issue
Block a user