From 99e5621468f2dbb3f25f2eceef274e8ae80ae0c4 Mon Sep 17 00:00:00 2001 From: Till JS Date: Mon, 27 Apr 2026 13:54:53 +0200 Subject: [PATCH] i18n(food): extend with detail sub-namespace for /food/[id] page MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Adds detail: page-title (with {description}), back link, not-found copy, lightbox aria-labels, edit-form labels (Mahlzeittyp/Beschreibung + 6 nutrient labels), Nährwerte section, error messages, action labels (Erneut analysieren/Analysiere…/Speichere…/Sicher?), foods section heading, fiber/sugar inline labels with {n}g. Co-Authored-By: Claude Opus 4.7 (1M context) --- .../web/src/lib/i18n/locales/food/de.json | 28 +++++++++++++++++++ .../web/src/lib/i18n/locales/food/en.json | 28 +++++++++++++++++++ .../web/src/lib/i18n/locales/food/es.json | 28 +++++++++++++++++++ .../web/src/lib/i18n/locales/food/fr.json | 28 +++++++++++++++++++ .../web/src/lib/i18n/locales/food/it.json | 28 +++++++++++++++++++ 5 files changed, 140 insertions(+) diff --git a/apps/mana/apps/web/src/lib/i18n/locales/food/de.json b/apps/mana/apps/web/src/lib/i18n/locales/food/de.json index 13ceaa538..5a4588544 100644 --- a/apps/mana/apps/web/src/lib/i18n/locales/food/de.json +++ b/apps/mana/apps/web/src/lib/i18n/locales/food/de.json @@ -80,5 +80,33 @@ "mealDeleted": "Mahlzeit gelöscht", "goalsSaved": "Ziele gespeichert", "favoriteAdded": "Zu Favoriten hinzugefügt" + }, + "detail": { + "page_title_html": "{description} - Food - Mana", + "untitled_fallback": "Mahlzeit", + "back": "Zurück", + "not_found": "Mahlzeit nicht gefunden.", + "lightbox_open_aria": "Bild vergrößern", + "lightbox_close_aria": "Bild schließen", + "section_foods": "Erkannte Bestandteile", + "section_nutrients": "Nährwerte", + "label_meal_type": "Mahlzeittyp", + "label_description": "Beschreibung", + "label_calories_kcal": "Kalorien (kcal)", + "label_protein_g": "Protein (g)", + "label_carbs_g": "Kohlenhydrate (g)", + "label_fat_g": "Fett (g)", + "label_fiber_g": "Ballaststoffe (g)", + "label_sugar_g": "Zucker (g)", + "fiber_with_value": "Ballaststoffe: {n}g", + "sugar_with_value": "Zucker: {n}g", + "action_reanalyze": "🔄 Erneut analysieren", + "action_reanalyzing": "Analysiere…", + "action_saving": "Speichere…", + "confirm_sure": "Sicher?", + "error_description_required": "Beschreibung darf nicht leer sein", + "error_save_failed": "Speichern fehlgeschlagen", + "error_analyze_failed": "KI-Analyse fehlgeschlagen", + "error_delete_failed": "Löschen fehlgeschlagen" } } diff --git a/apps/mana/apps/web/src/lib/i18n/locales/food/en.json b/apps/mana/apps/web/src/lib/i18n/locales/food/en.json index fa03013a4..46f9986f5 100644 --- a/apps/mana/apps/web/src/lib/i18n/locales/food/en.json +++ b/apps/mana/apps/web/src/lib/i18n/locales/food/en.json @@ -80,5 +80,33 @@ "mealDeleted": "Meal deleted", "goalsSaved": "Goals saved", "favoriteAdded": "Added to favorites" + }, + "detail": { + "page_title_html": "{description} - Food - Mana", + "untitled_fallback": "Meal", + "back": "Back", + "not_found": "Meal not found.", + "lightbox_open_aria": "Enlarge image", + "lightbox_close_aria": "Close image", + "section_foods": "Detected items", + "section_nutrients": "Nutrients", + "label_meal_type": "Meal type", + "label_description": "Description", + "label_calories_kcal": "Calories (kcal)", + "label_protein_g": "Protein (g)", + "label_carbs_g": "Carbohydrates (g)", + "label_fat_g": "Fat (g)", + "label_fiber_g": "Fiber (g)", + "label_sugar_g": "Sugar (g)", + "fiber_with_value": "Fiber: {n}g", + "sugar_with_value": "Sugar: {n}g", + "action_reanalyze": "🔄 Re-analyze", + "action_reanalyzing": "Analyzing…", + "action_saving": "Saving…", + "confirm_sure": "Sure?", + "error_description_required": "Description cannot be empty", + "error_save_failed": "Save failed", + "error_analyze_failed": "AI analysis failed", + "error_delete_failed": "Delete failed" } } diff --git a/apps/mana/apps/web/src/lib/i18n/locales/food/es.json b/apps/mana/apps/web/src/lib/i18n/locales/food/es.json index c7fca7003..df1740a3b 100644 --- a/apps/mana/apps/web/src/lib/i18n/locales/food/es.json +++ b/apps/mana/apps/web/src/lib/i18n/locales/food/es.json @@ -80,5 +80,33 @@ "mealDeleted": "Comida eliminada", "goalsSaved": "Objetivos guardados", "favoriteAdded": "Añadido a favoritos" + }, + "detail": { + "page_title_html": "{description} - Food - Mana", + "untitled_fallback": "Comida", + "back": "Atrás", + "not_found": "Comida no encontrada.", + "lightbox_open_aria": "Ampliar imagen", + "lightbox_close_aria": "Cerrar imagen", + "section_foods": "Componentes detectados", + "section_nutrients": "Nutrientes", + "label_meal_type": "Tipo de comida", + "label_description": "Descripción", + "label_calories_kcal": "Calorías (kcal)", + "label_protein_g": "Proteína (g)", + "label_carbs_g": "Carbohidratos (g)", + "label_fat_g": "Grasa (g)", + "label_fiber_g": "Fibra (g)", + "label_sugar_g": "Azúcar (g)", + "fiber_with_value": "Fibra: {n}g", + "sugar_with_value": "Azúcar: {n}g", + "action_reanalyze": "🔄 Reanalizar", + "action_reanalyzing": "Analizando…", + "action_saving": "Guardando…", + "confirm_sure": "¿Seguro?", + "error_description_required": "La descripción no puede estar vacía", + "error_save_failed": "Error al guardar", + "error_analyze_failed": "Error en el análisis IA", + "error_delete_failed": "Error al eliminar" } } diff --git a/apps/mana/apps/web/src/lib/i18n/locales/food/fr.json b/apps/mana/apps/web/src/lib/i18n/locales/food/fr.json index 986fe124d..da06dd663 100644 --- a/apps/mana/apps/web/src/lib/i18n/locales/food/fr.json +++ b/apps/mana/apps/web/src/lib/i18n/locales/food/fr.json @@ -80,5 +80,33 @@ "mealDeleted": "Repas supprimé", "goalsSaved": "Objectifs enregistrés", "favoriteAdded": "Ajouté aux favoris" + }, + "detail": { + "page_title_html": "{description} - Food - Mana", + "untitled_fallback": "Repas", + "back": "Retour", + "not_found": "Repas introuvable.", + "lightbox_open_aria": "Agrandir l'image", + "lightbox_close_aria": "Fermer l'image", + "section_foods": "Ingrédients détectés", + "section_nutrients": "Nutriments", + "label_meal_type": "Type de repas", + "label_description": "Description", + "label_calories_kcal": "Calories (kcal)", + "label_protein_g": "Protéines (g)", + "label_carbs_g": "Glucides (g)", + "label_fat_g": "Lipides (g)", + "label_fiber_g": "Fibres (g)", + "label_sugar_g": "Sucres (g)", + "fiber_with_value": "Fibres : {n}g", + "sugar_with_value": "Sucres : {n}g", + "action_reanalyze": "🔄 Ré-analyser", + "action_reanalyzing": "Analyse…", + "action_saving": "Enregistrement…", + "confirm_sure": "Sûr ?", + "error_description_required": "La description ne peut pas être vide", + "error_save_failed": "Échec de l'enregistrement", + "error_analyze_failed": "Échec de l'analyse IA", + "error_delete_failed": "Échec de la suppression" } } diff --git a/apps/mana/apps/web/src/lib/i18n/locales/food/it.json b/apps/mana/apps/web/src/lib/i18n/locales/food/it.json index 90ea546f0..d11c603fc 100644 --- a/apps/mana/apps/web/src/lib/i18n/locales/food/it.json +++ b/apps/mana/apps/web/src/lib/i18n/locales/food/it.json @@ -80,5 +80,33 @@ "mealDeleted": "Pasto eliminato", "goalsSaved": "Obiettivi salvati", "favoriteAdded": "Aggiunto ai preferiti" + }, + "detail": { + "page_title_html": "{description} - Food - Mana", + "untitled_fallback": "Pasto", + "back": "Indietro", + "not_found": "Pasto non trovato.", + "lightbox_open_aria": "Ingrandisci immagine", + "lightbox_close_aria": "Chiudi immagine", + "section_foods": "Componenti rilevati", + "section_nutrients": "Nutrienti", + "label_meal_type": "Tipo di pasto", + "label_description": "Descrizione", + "label_calories_kcal": "Calorie (kcal)", + "label_protein_g": "Proteine (g)", + "label_carbs_g": "Carboidrati (g)", + "label_fat_g": "Grassi (g)", + "label_fiber_g": "Fibre (g)", + "label_sugar_g": "Zuccheri (g)", + "fiber_with_value": "Fibre: {n}g", + "sugar_with_value": "Zuccheri: {n}g", + "action_reanalyze": "🔄 Rianalizza", + "action_reanalyzing": "Analisi…", + "action_saving": "Salvataggio…", + "confirm_sure": "Sicuro?", + "error_description_required": "La descrizione non può essere vuota", + "error_save_failed": "Salvataggio non riuscito", + "error_analyze_failed": "Analisi AI non riuscita", + "error_delete_failed": "Eliminazione non riuscita" } }