2.0: dish editor gains photo picker and ingredients section
- PhotosPicker with downscaling (1024pt max, JPEG 0.8) before storing in photoData; change/remove actions. - Ingredients: editable line list (add/edit/remove) + on-device "Generate" from the dish name (hidden when Foundation Models unavailable; paywall after the free generation quota, source=ingredient_generation). - DishViewModel: drafts ingredients/photo, cleans empty lines on save. - 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:
@@ -397,3 +397,12 @@
|
||||
"shopping_empty_title" = "Noch nichts einzukaufen";
|
||||
"shopping_empty_message" = "Plane Gerichte für diese Woche und ihre Zutaten erscheinen hier.";
|
||||
"shopping_share_header" = "🛒 Einkaufsliste — MealMood";
|
||||
|
||||
// Dish editor: photo + ingredients (2.0)
|
||||
"dish_photo_label" = "Foto";
|
||||
"dish_photo_add" = "Foto hinzufügen";
|
||||
"dish_photo_change" = "Foto ändern";
|
||||
"dish_photo_remove" = "Entfernen";
|
||||
"dish_ingredients_label" = "Zutaten";
|
||||
"dish_ingredient_placeholder" = "z. B. 200 g Spaghetti";
|
||||
"dish_ingredients_add" = "Zutat hinzufügen";
|
||||
|
||||
@@ -397,3 +397,12 @@
|
||||
"shopping_empty_title" = "Nothing to buy yet";
|
||||
"shopping_empty_message" = "Plan dishes for this week and their ingredients will appear here.";
|
||||
"shopping_share_header" = "🛒 Shopping list — MealMood";
|
||||
|
||||
// Dish editor: photo + ingredients (2.0)
|
||||
"dish_photo_label" = "Photo";
|
||||
"dish_photo_add" = "Add photo";
|
||||
"dish_photo_change" = "Change photo";
|
||||
"dish_photo_remove" = "Remove";
|
||||
"dish_ingredients_label" = "Ingredients";
|
||||
"dish_ingredient_placeholder" = "e.g. 200 g spaghetti";
|
||||
"dish_ingredients_add" = "Add ingredient";
|
||||
|
||||
@@ -397,3 +397,12 @@
|
||||
"shopping_empty_title" = "Nada que comprar todavía";
|
||||
"shopping_empty_message" = "Planifica platos para esta semana y sus ingredientes aparecerán aquí.";
|
||||
"shopping_share_header" = "🛒 Lista de la compra — MealMood";
|
||||
|
||||
// Dish editor: photo + ingredients (2.0)
|
||||
"dish_photo_label" = "Foto";
|
||||
"dish_photo_add" = "Añadir foto";
|
||||
"dish_photo_change" = "Cambiar foto";
|
||||
"dish_photo_remove" = "Quitar";
|
||||
"dish_ingredients_label" = "Ingredientes";
|
||||
"dish_ingredient_placeholder" = "p. ej. 200 g de espaguetis";
|
||||
"dish_ingredients_add" = "Añadir ingrediente";
|
||||
|
||||
@@ -397,3 +397,12 @@
|
||||
"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";
|
||||
|
||||
// Dish editor: photo + ingredients (2.0)
|
||||
"dish_photo_label" = "Photo";
|
||||
"dish_photo_add" = "Ajouter une photo";
|
||||
"dish_photo_change" = "Changer la photo";
|
||||
"dish_photo_remove" = "Retirer";
|
||||
"dish_ingredients_label" = "Ingrédients";
|
||||
"dish_ingredient_placeholder" = "ex. 200 g de spaghettis";
|
||||
"dish_ingredients_add" = "Ajouter un ingrédient";
|
||||
|
||||
@@ -397,3 +397,12 @@
|
||||
"shopping_empty_title" = "Niente da comprare per ora";
|
||||
"shopping_empty_message" = "Pianifica i piatti per questa settimana e i loro ingredienti appariranno qui.";
|
||||
"shopping_share_header" = "🛒 Lista della spesa — MealMood";
|
||||
|
||||
// Dish editor: photo + ingredients (2.0)
|
||||
"dish_photo_label" = "Foto";
|
||||
"dish_photo_add" = "Aggiungi foto";
|
||||
"dish_photo_change" = "Cambia foto";
|
||||
"dish_photo_remove" = "Rimuovi";
|
||||
"dish_ingredients_label" = "Ingredienti";
|
||||
"dish_ingredient_placeholder" = "es. 200 g di spaghetti";
|
||||
"dish_ingredients_add" = "Aggiungi ingrediente";
|
||||
|
||||
@@ -397,3 +397,12 @@
|
||||
"shopping_empty_title" = "Nada para comprar ainda";
|
||||
"shopping_empty_message" = "Planeje pratos para esta semana e os ingredientes deles aparecerão aqui.";
|
||||
"shopping_share_header" = "🛒 Lista de compras — MealMood";
|
||||
|
||||
// Dish editor: photo + ingredients (2.0)
|
||||
"dish_photo_label" = "Foto";
|
||||
"dish_photo_add" = "Adicionar foto";
|
||||
"dish_photo_change" = "Trocar foto";
|
||||
"dish_photo_remove" = "Remover";
|
||||
"dish_ingredients_label" = "Ingredientes";
|
||||
"dish_ingredient_placeholder" = "ex.: 200 g de espaguete";
|
||||
"dish_ingredients_add" = "Adicionar ingrediente";
|
||||
|
||||
Reference in New Issue
Block a user