{
  "app": {
    "name": "EverShelf",
    "loading": "Laden..."
  },
  "nav": {
    "title": "EverShelf",
    "home": "Home",
    "inventory": "Vorrat",
    "recipes": "Rezepte",
    "shopping": "Einkauf",
    "log": "Verlauf",
    "settings": "Einstellungen"
  },
  "btn": {
    "back": "← Zurück",
    "save": "💾 Speichern",
    "cancel": "✕ Abbrechen",
    "close": "Schließen",
    "add": "✅ Hinzufügen",
    "delete": "Löschen",
    "edit": "✏️ Bearbeiten",
    "use": "Verwenden",
    "edit_item": "Bearbeiten",
    "search": "🔍 Suchen",
    "go": "✅ Los",
    "toggle_password": "👁️ Anzeigen/Ausblenden",
    "load_more": "Mehr laden...",
    "save_config": "💾 Konfiguration speichern",
    "save_product": "💾 Produkt speichern",
    "restart": "↺ Neustart",
    "reset_default": "↺ Standard wiederherstellen",
    "save_info": "💾 Info speichern",
    "retry": "🔄 Erneut versuchen",
    "next": "Weiter →",
    "yes_short": "Ja",
    "no_short": "Nein"
  },
  "form": {
    "select_placeholder": "-- Auswählen --"
  },
  "locations": {
    "dispensa": "Vorratskammer",
    "frigo": "Kühlschrank",
    "freezer": "Gefrierschrank",
    "altro": "Sonstiges"
  },
  "categories": {
    "latticini": "Milchprodukte",
    "carne": "Fleisch",
    "pesce": "Fisch",
    "frutta": "Obst",
    "verdura": "Gemüse",
    "pasta": "Pasta & Reis",
    "pane": "Brot & Backwaren",
    "surgelati": "Tiefkühl",
    "bevande": "Getränke",
    "condimenti": "Gewürze",
    "snack": "Snacks & Süßes",
    "conserve": "Konserven",
    "cereali": "Getreide & Hülsenfrüchte",
    "igiene": "Hygiene",
    "pulizia": "Reinigung",
    "altro": "Sonstiges",
    "select": "-- Auswählen --"
  },
  "units": {
    "pz": "Stk",
    "conf": "Pkg",
    "g": "g",
    "ml": "ml",
    "pieces": "Stück",
    "grams": "Gramm",
    "box": "Packung",
    "boxes": "Packungen",
    "millilitres": "Milliliter",
    "from": "von"
  },
  "shopping_sections": {
    "frutta_verdura": "Obst & Gemüse",
    "carne_pesce": "Fleisch & Fisch",
    "latticini": "Milchprodukte & Frisches",
    "pane_dolci": "Brot & Süßes",
    "pasta": "Pasta & Getreide",
    "conserve": "Konserven & Soßen",
    "surgelati": "Tiefkühl",
    "bevande": "Getränke",
    "pulizia_igiene": "Reinigung & Hygiene",
    "altro": "Sonstiges"
  },
  "dashboard": {
    "expired_title": "🚫 Abgelaufen",
    "expiring_title": "⏰ Bald ablaufend",
    "stats_period": "📊 Letzte 30 Tage",
    "opened_title": "📦 Geöffnete Produkte",
    "review_title": "🔍 Zu prüfen",
    "review_hint": "Mengen, die ungewöhnlich erscheinen. Bestätigen oder ändern.",
    "quick_recipe": "Schnelles Rezept mit ablaufenden Produkten",
    "banner_review_title": "Ungewöhnliche Menge",
    "banner_review_action_ok": "Ist korrekt",
    "banner_review_action_finish": "🗑️ Alles aufgebraucht",
    "banner_review_action_edit": "Korrigieren",
    "banner_review_action_weigh": "Wiegen",
    "banner_review_dismiss": "Ignorieren",
    "banner_prediction_title": "Verbrauch zur Prüfung",
    "banner_prediction_hint": "Die Verbrauchsschätzung passt sich aktuellen Daten an: bitte nur die aktuelle Menge bestätigen.",
    "banner_prediction_action_confirm": "{qty} {unit} bestätigen",
    "banner_prediction_action_weigh": "Jetzt wiegen",
    "banner_prediction_action_edit": "Menge aktualisieren",
    "banner_expired_title": "Abgelaufenes Produkt",
    "banner_expired_today": "Heute abgelaufen",
    "banner_expired_days": "Seit {days} Tagen abgelaufen",
    "banner_expired_action_use": "Trotzdem verwenden",
    "banner_expired_action_finished": "Habe ich verbraucht!",
    "banner_expired_action_throw": "Habe ich weggeworfen",
    "banner_expired_action_edit": "Datum korrigieren",
    "banner_expired_action_modify": "Bearbeiten",
    "banner_expired_action_vacuum": "Vakuumieren",
    "banner_anomaly_action_edit": "Bestand korrigieren",
    "banner_anomaly_action_dismiss": "Menge ist korrekt",
    "banner_no_expiry_title": "Ablaufdatum fehlt: {name}",
    "banner_no_expiry_detail": "Dieses Produkt hat kein Ablaufdatum. Möchten Sie eines hinzufügen oder bestätigen, dass es nicht verfällt?",
    "banner_no_expiry_action_set": "Ablaufdatum setzen",
    "banner_no_expiry_action_dismiss": "Läuft nicht ab ✓",
    "banner_no_expiry_toast_dismissed": "Als 'läuft nicht ab' markiert",
    "banner_expiring_title": "Bald ablaufend",
    "banner_expiring_today": "Läuft heute ab!",
    "banner_expiring_tomorrow": "Läuft morgen ab",
    "banner_expiring_days": "Läuft in {days} Tagen ab",
    "banner_expiring_action_use": "Jetzt verwenden",
    "banner_finished_title": "aufgebraucht?",
    "banner_finished_detail": "Ich habe vermerkt, dass {name} auf null gesunken ist. Ist es wirklich leer, oder hast du noch welches?",
    "banner_finished_action_yes": "Ja, aufgebraucht",
    "banner_finished_action_no": "Nein, ich habe noch welches",
    "banner_review_unusual_pkg_title": "Ungewöhnliche Packungsgröße",
    "banner_review_unusual_pkg_detail": "Du hast eine Packung von {qty} {unit} eingestellt — die Größe scheint sehr groß. Überprüfe ob es korrekt ist.",
    "banner_review_low_qty_title": "Sehr geringe Menge",
    "banner_review_low_qty_detail": "Du hast nur {qty} im Bestand — das scheint sehr wenig, möglicherweise ein Eingabefehler. Bestätige wenn korrekt.",
    "banner_review_high_qty_title": "Ungewöhnlich hohe Menge",
    "banner_review_high_qty_detail": "Du hast {qty} im Bestand — die Zahl scheint sehr hoch. Bestätige wenn korrekt oder korrigiere.",
    "banner_prediction_rate_day": "Durchschnitt ~{n} {unit}/Tag",
    "banner_prediction_rate_week": "Durchschnitt ~{n} {unit}/Woche",
    "banner_prediction_days_ago": "Vor {n} Tagen aufgefüllt",
    "banner_prediction_more": "frühere Schätzung: {expected} {unit}{time}; aktuelle Menge: {actual} {unit}.",
    "banner_prediction_less": "Schätzung: {expected} {unit}{time}; aktuelle Menge: {actual} {unit}. Wenn sich dein Verbrauch geändert hat, aktualisiert sich die Prognose automatisch.",
    "banner_finished_zero": "Bestand zeigt null, aber gespeicherte Buchungen deuten an, dass es nicht leer sein sollte.",
    "banner_finished_vanished": "Das Produkt erscheint nicht mehr im Bestand, aber die Buchungen deuten an, dass es nicht leer sein sollte.",
    "banner_finished_expected": "Laut Aufzeichnungen solltest du noch {qty} {unit} haben.",
    "banner_finished_check": "Kannst du nachschauen?",
    "banner_finished_action_restore": "{qty} {unit} wiederherstellen",
    "banner_anomaly_phantom_title": "mehr Bestand als erwartet",
    "banner_anomaly_phantom_detail": "Bestand zeigt {inv_qty} {unit}, aber laut Buchungen solltest du nur {expected_qty} {unit} haben. Hast du Bestand ohne Buchung hinzugefügt?",
    "banner_anomaly_untracked_title": "Anfangsbestand nicht als Eingang gebucht",
    "banner_anomaly_untracked_detail": "Du hast <strong>{inv_qty} {unit}</strong> im Bestand, aber die gebuchten Abgänge übersteigen die Eingänge — der Anfangsbestand wurde wahrscheinlich nie als \"Eingang\" erfasst. Bitte korrigiere die Menge oder trage die fehlenden Eingänge nach.",
    "banner_anomaly_ghost_title": "weniger Bestand als erwartet",
    "banner_anomaly_ghost_detail": "Laut Buchungen solltest du {expected_qty} {unit} von {name} haben, aber der Bestand zeigt nur {inv_qty} {unit}. Hast du etwas ohne Buchung entnommen?",
    "banner_dup_loss_title": "Prüfung Doppelabbuchung: {name}",
    "banner_dup_loss_detail": "Mögliche doppelte Buchung in {location}: zwei schnelle Abgänge ({qty_pair}) in ~{seconds}s. Bitte prüfen und ggf. korrigieren.",
    "banner_dup_loss_action_fix": "Menge korrigieren",
    "banner_dup_loss_action_open": "Produktkarte öffnen",
    "banner_dup_loss_action_done": "Bereits geprüft",
    "banner_dup_loss_toast_done": "Prüfung als erledigt markiert",
    "consumed": "Verbraucht: {n} ({pct}%)",
    "wasted": "Weggeworfen: {n} ({pct}%)",
    "more_opened": "und {n} weitere geöffnet...",
    "banner_expired_detail": "{when} · du hast noch <strong>{qty}</strong>.",
    "banner_opened_detail": "{when} in {location} · du hast noch <strong>{qty}</strong>.",
    "banner_explain_title": "Gemini um eine Erklärung bitten",
    "banner_explain_btn": "Erklären",
    "banner_analyzing": "🤖 Analysiere…",
    "banner_prediction_confirmed": "✅ Bestätigt — Prognosen werden aus den nächsten Einträgen neu berechnet",
    "banner_anomaly_explain_fail": "KI-Erklärung konnte nicht abgerufen werden",
    "banner_anomaly_dismissed": "Anomalie ignoriert",
    "banner_finished_restore_prompt": "Wie viele {unit} {name} hast du noch? (Systemschätzung: {qty})"
  },
  "inventory": {
    "title": "Vorrat",
    "filter_all": "Alle",
    "search_placeholder": "🔍 Produkt suchen...",
    "recent_title": "🕐 Zuletzt verwendet",
    "popular_title": "⭐ Meistverwendet",
    "empty": "Keine Produkte hier.\nScanne ein Produkt, um es hinzuzufügen!",
    "no_items_found": "Keine Bestandseinträge gefunden",
    "qty_remainder_suffix": "übrig",
    "vacuum_badge": "🫙 Vakuumiert",
    "opened_badge": "📭 Geöffnet",
    "label_expiry": "📅 Ablaufdatum",
    "label_storage": "🫙 Aufbewahrung",
    "label_status": "📭 Status",
    "opened_since": "Geöffnet seit {date}",
    "label_position": "📍 Standort",
    "label_quantity": "📦 Menge",
    "label_added": "📅 Hinzugefügt",
    "empty_text": "Keine Produkte hier.<br>Scanne ein Produkt, um es hinzuzufügen!",
    "empty_db": "Keine Produkte in der Datenbank.<br>Scanne ein Produkt, um loszulegen!",
    "qty_trace": "< 1"
  },
  "scan": {
    "title": "Scannen",
    "mode_shopping": "🛒 Einkaufsmodus",
    "mode_shopping_end": "✅ Einkauf beenden",
    "spesa_btn": "🛒 Einkauf",
    "spesa_camera_hint": "Barcode mit der Kamera erfassen. Kein Barcode? Tippe unten auf «Mit KI erkennen».",
    "zoom": "Zoom",
    "tab_barcode": "Barcode",
    "tab_name": "Name",
    "tab_ai": "KI",
    "recents_label": "Zuletzt",
    "torch_hint": "Taschenlampe",
    "torch_on": "Taschenlampe an",
    "torch_off": "Taschenlampe aus",
    "torch_unavailable": "Taschenlampe auf diesem Gerät nicht verfügbar",
    "flip_hint": "Kamera wechseln",
    "flip_front": "Frontkamera",
    "flip_back": "Rückkamera",
    "num_ocr_btn": "🔢 Zahlen mit KI lesen",
    "num_ocr_searching": "Suche Barcode mit KI...",
    "num_ocr_found": "Code gefunden: {code}",
    "num_ocr_not_found": "Kein Barcode im Bild gefunden",
    "barcode_placeholder": "Barcode eingeben...",
    "quick_name_divider": "oder Name eingeben",
    "quick_name_placeholder": "z.B.: Äpfel, Zucchini, Brot...",
    "manual_entry": "✏️ Manuelle Eingabe",
    "ai_identify": "🤖 Mit KI identifizieren",
    "hint": "Barcode scannen, Produktname eingeben oder KI zur Identifikation nutzen",
    "debug_toggle": "🐛 Debug Log",
    "barcode_acquired": "🔖 Barcode gescannt: {code}",
    "scan_barcode": "🔖 Barcode scannen",
    "create_named": "{name} erstellen",
    "new_without_barcode": "Neues Produkt ohne Barcode",
    "stock_in_pantry": "Bereits im Vorrat:",
    "status_ready": "Kamera auf Barcode richten",
    "status_scanning": "Scanne...",
    "status_partial": "Erkannt: {code} — prüfe...",
    "status_invalid": "Ungültig: {code} — versuche erneut",
    "status_confirmed": "Bestätigt!",
    "status_parallel": "Kombinierter Scan aktiv...",
    "status_ocr_searching": "Ich lese die Barcode-Ziffern...",
    "status_digit_ocr": "Lese Ziffern unter dem Barcode...",
    "status_ai_visual_searching": "Jetzt versuche ich, das Produkt zu erkennen...",
    "method_ai_ocr": "Gemini OCR",
    "method_ai_vision": "Gemini Vision",
    "method_local_ocr": "Ziffern-OCR",
    "method_zbar": "ZBar",
    "local_ocr_found": "Code aus Ziffern: {code}",
    "ai_fallback_searching": "KI identifiziert Produkt...",
    "ai_fallback_found": "Produkt von KI erkannt",
    "ai_fallback_not_found": "KI: Produkt nicht erkannt",
    "ai_fallback_exhausted": "KI: Produkt nicht erkannt — Barcode erneut scannen",
    "ai_overlay_label": "Gemini Vision",
    "ai_overlay_msg": "Gemini Vision analysiert das Produkt...",
    "ai_retry_btn": "Mit KI erneut versuchen",
    "ai_manual_btn": "🤖 Mit KI erkennen",
    "ai_not_recognized": "KI: Produkt nicht erkannt. Erneut versuchen oder manuell eingeben.",
    "ai_match_title": "Produkt von KI erkannt",
    "ai_match_subtitle": "Waehle ein vorhandenes Produkt oder fuege das erkannte hinzu.",
    "ai_match_existing": "Aktuell in der Vorratskammer",
    "ai_match_finished": "Aufgebraucht / leer",
    "ai_match_catalog": "Im Katalog (ohne Bestand)",
    "ai_match_finished_badge": "aufgebraucht",
    "ai_match_finished_hint": "Produkt aufgebraucht — Menge auffüllen",
    "ai_match_merged_existing": "Mit vorhandenem Katalogprodukt verknüpft",
    "ai_match_none": "Keine ähnlichen Produkte — du kannst ein neues anlegen.",
    "ai_match_use_btn": "Nutzen",
    "ai_match_create_btn": "➕ Neu anlegen: {name}",
    "ai_match_add_btn": "{name} hinzufugen",
    "ai_match_action_hint": "Tippe auf den gruenen Button, um dieses Produkt hinzuzufuegen",
    "ai_match_or_similar": "Oder waehle ein aehnliches Produkt:",
    "ai_detected_label": "KI erkannt",
    "mode_shopping_activated": "🛒 Einkaufsmodus aktiviert!"
  },
  "action": {
    "title": "Was möchtest du tun?",
    "add_btn": "📥 HINZUFÜGEN",
    "add_sub": "in Vorrat/Kühlschrank",
    "use_btn": "VERWENDEN",
    "use_sub": "aus Vorrat/Kühlschrank",
    "have_title": "📦 Schon auf Lager!",
    "add_more_sub": "weitere Menge",
    "use_qty_sub": "wie viel verwendet",
    "throw_btn": "🗑️ ENTSORGEN",
    "throw_sub": "wegwerfen",
    "edit_sub": "Ablauf, Ort…",
    "create_recipe_btn": "Rezept",
    "related_stock_title": "Auch zuhause"
  },
  "add": {
    "title": "Zum Vorrat hinzufügen",
    "location_label": "📍 Wohin?",
    "quantity_label": "📦 Menge",
    "conf_size_label": "📦 Jede Packung enthält:",
    "conf_size_placeholder": "z.B. 300",
    "vacuum_label": "🫙 Vakuumiert",
    "vacuum_hint": "Ablaufdatum wird automatisch verlängert",
    "submit": "✅ Hinzufügen",
    "purchase_type_label": "🛒 Dieses Produkt ist...",
    "new_btn": "🆕 Gerade gekauft",
    "existing_btn": "📦 Hatte ich schon",
    "remaining_label": "📦 Verbleibende Menge",
    "remaining_hint": "Ungefähr wie viel ist noch übrig?",
    "remaining_full": "🟢 Voll",
    "remaining_half": "🟠 Halb",
    "estimated_expiry": "Geschätzte Haltbarkeit:",
    "suffix_freezer": "(Tiefkühler)",
    "suffix_vacuum": "(vakuumversiegelt)",
    "hint_modify": "📝 Du kannst das Datum ändern oder mit der Kamera scannen",
    "scan_expiry_title": "📷 Ablaufdatum scannen",
    "product_added": "✅ {name} hinzugefügt!{qty}",
    "duplicate_recent_confirm": "Du hast «{name}» gerade hinzugefuegt ({when}).\n\nDie Menge ist bereits {total}.\n\nUm {qty} erhoehen?",
    "suffix_freezer_vacuum": "(Tiefkühler + vakuumversiegelt)",
    "history_badge_tip": "Durchschnitt der letzten {n} Einträge — wird bei jedem Kauf aktualisiert",
    "vacuum_question": "Vakuumiert?",
    "vacuum_saved": "🔒 Als vakuumiert gespeichert"
  },
  "use": {
    "title": "Verwenden / Verbrauchen",
    "location_label": "📍 Woher?",
    "quantity_label": "Wie viel hast du benutzt?",
    "change": "ändern",
    "partial_hint": "Oder genaue Menge angeben:",
    "partial_piece_hint": "Hast du nur einen Teil verwendet?",
    "piece": "Stück",
    "one_whole": "1 ganzes",
    "use_all": "🗑️ ALLES verwendet / Aufgebraucht",
    "submit": "📤 Diese Menge verwenden",
    "available": "📦 Verfügbar:",
    "opened_badge": "GEOEFFNET",
    "not_in_inventory": "⚠️ Produkt nicht im Bestand.",
    "expiry_warning": "⚠️ Verwende zuerst die{loc}, die am {date} abläuft — {when}!",
    "expiry_warning_opened": "⚠️ Die{loc} ist seit {when} geöffnet — zuerst verwenden!",
    "throw_title": "🗑️ Produkt entsorgen",
    "throw_all": "🗑️ ALLES entsorgen ({qty})",
    "throw_qty_label": "Wie viel wegwerfen?",
    "throw_qty_hint": "oder Menge angeben:",
    "throw_partial_btn": "🗑️ Diese Menge entsorgen",
    "when_expired": "seit {n} Tagen abgelaufen",
    "when_today": "läuft <strong>heute</strong> ab",
    "when_tomorrow": "läuft <strong>morgen</strong> ab",
    "when_days": "läuft in <strong>{n} Tagen</strong> ab",
    "toast_used": "📤 {qty} von {name} verwendet",
    "toast_bring": "🛒 Produkt aufgebraucht → zu Bring! hinzugefügt",
    "toast_opened_finished": "🔓 Geöffnete Packung von {name} aufgebraucht!",
    "disambiguation_hint": "Was meinst du mit \"alles aufgebraucht\"?",
    "disambiguation_one_conf": "<strong>1 Packung</strong> aufgebraucht ({qty})",
    "disambiguation_all": "🗑️ ALLES verbraucht ({qty})",
    "toast_one_conf_finished": "📦 1 Packung von {name} verbraucht!",
    "error_exceeds_stock": "⚠️ Du kannst nicht mehr verwenden als du verfügbar hast!",
    "use_all_confirm_title": "✅ Alles aufbrauchen",
    "use_all_confirm_msg": "Bestätige, dass du das Produkt vollständig aufgebraucht hast:",
    "use_all_confirm_btn": "✅ Ja, aufgebraucht",
    "throw_all_confirm_title": "🗑️ Alles entsorgen",
    "throw_all_confirm_msg": "Möchtest du wirklich das gesamte Produkt entsorgen?",
    "throw_all_confirm_btn": "🗑️ Ja, entsorgen",
    "locations_short": "Orte"
  },
  "waste": {
    "reason_title": "Warum wirfst du es weg?",
    "reason_subtitle": "Das hilft uns, ähnliche Verschwendung zu vermeiden.",
    "reason_expired": "⏰ Abgelaufen",
    "reason_spoiled": "🦠 Verdorben",
    "reason_wrong_location": "📍 Falscher Lagerort",
    "reason_kept_too_long": "⏳ Zu lange aufbewahrt",
    "reason_bought_too_much": "🛒 Zu viel gekauft",
    "reason_forgotten": "😴 Vergessen / nicht rechtzeitig genutzt",
    "reason_bad_quality": "👎 Schlechte Qualität beim Kauf",
    "reason_other": "❓ Sonstiges"
  },
  "product": {
    "title_new": "Neues Produkt",
    "title_edit": "Produkt bearbeiten",
    "ai_fill": "📷 Foto machen und mit KI identifizieren",
    "ai_fill_hint": "KI füllt die Produktfelder automatisch aus",
    "name_label": "🏷️ Produktname *",
    "name_placeholder": "z.B.: Vollmilch, Penne Nudeln...",
    "brand_label": "🏢 Marke",
    "allergens_label": "Allergene:",
    "ingredients_summary": "📋 Zutaten",
    "brand_placeholder": "z.B.: Barilla, Müller, Knorr...",
    "category_label": "📂 Kategorie",
    "unit_label": "📏 Maßeinheit",
    "default_qty_label": "🔢 Standardmenge",
    "conf_size_label": "📦 Jede Packung enthält:",
    "conf_size_placeholder": "z.B. 300",
    "notes_label": "📝 Notizen",
    "notes_placeholder": "z.B.: laktosefrei, bio, nach dem Öffnen im Kühlschrank aufbewahren...",
    "barcode_label": "🔖 Barcode",
    "barcode_placeholder": "Barcode (falls vorhanden)",
    "barcode_hint": "⚠️ Barcode hinzufügen, damit du beim nächsten Einkauf nur scannen musst!",
    "submit": "💾 Produkt speichern",
    "name_required": "Produktname eingeben",
    "conf_size_required": "Packungsinhalt angeben",
    "expiry_estimated": "Geschätztes Ablaufdatum:",
    "scan_expiry": "Ablaufdatum scannen",
    "expiry_hint": "📝 Du kannst das Datum ändern oder mit der Kamera scannen",
    "add_batch": "📦 + Charge mit anderem Ablaufdatum",
    "package_info": "📦 Packung: {info}",
    "edit_catalog": "⚙️ Produktinfo bearbeiten (Name, Marke, Kategorie…)",
    "not_recognized": "⚠️ Produkt nicht erkannt",
    "edit_info": "✏️ Informationen bearbeiten",
    "modify_details": "BEARBEITEN\nAblauf, Ort…",
    "already_in_pantry": "📋 Bereits im Vorratsschrank",
    "no_barcode": "Kein Barcode",
    "unknown_product": "Unbekanntes Produkt",
    "edit_name_brand": "Name/Marke bearbeiten",
    "weight_label": "Gewicht",
    "origin_label": "Herkunft",
    "labels_label": "Etiketten",
    "select_variant": "Genaue Variante auswählen oder KI-Daten nutzen:",
    "history_badge": "📊 Verlauf",
    "from_history": " (Ø letzte 3)"
  },
  "products": {
    "title": "📦 Alle Produkte",
    "search_placeholder": "🔍 Produkt suchen...",
    "empty": "Keine Produkte in der Datenbank.\nScanne ein Produkt zum Starten!",
    "no_category": "Keine Produkte in dieser Kategorie"
  },
  "recipes": {
    "title": "🍳 Rezepte",
    "generate": "✨ Neues Rezept generieren",
    "archive_empty": "Keine Rezepte gespeichert. Erstelle dein erstes Rezept!",
    "dialog_title": "🍳 Rezept",
    "dialog_desc": "Ich erstelle ein gesundes Rezept mit Zutaten aus dem Vorrat und priorisiere Produkte mit nahendem Ablaufdatum.",
    "meal_label": "🕐 Für welche Mahlzeit?",
    "persons_label": "👥 Für wie viele Personen?",
    "meal_type_label": "🎯 Art der Mahlzeit",
    "opt_fast": "⚡ Schnelle Mahlzeit",
    "opt_light": "🥗 Kleiner Hunger",
    "opt_expiry": "⏰ Ablaufdaten priorisieren",
    "opt_healthy": "💚 Extra gesund",
    "opt_opened": "📦 Geöffnete Produkte priorisieren",
    "opt_zero_waste": "♻️ Zero Waste",
    "generate_btn": "✨ Rezept generieren",
    "loading_msg": "Rezept wird vorbereitet...",
    "start_cooking": "👨‍🍳 Kochmodus",
    "regenerate": "🔄 Noch eins generieren",
    "regen_choice_title": "Was möchtest du mit diesem Rezept machen?",
    "regen_replace": "🔄 Neues generieren (dieses verwerfen)",
    "regen_save_new": "💾 Im Archiv speichern & neues generieren",
    "close_btn": "✅ Schließen",
    "ingredients_title": "🧾 Zutaten",
    "tools_title": "Benötigte Geräte",
    "steps_title": "👨‍🍳 Zubereitung",
    "no_steps": "Keine Zubereitungsschritte verfügbar",
    "generate_error": "Fehler bei der Generierung",
    "stream_interrupted": "Generierung unterbrochen (unvollstaendige Antwort vom Server). Protokolle pruefen oder erneut versuchen.",
    "persons_short": "Pers.",
    "use_ingredient_title": "Zutat verwenden",
    "recipe_qty_label": "Rezept",
    "from_where_label": "Von wo?",
    "amount_label": "Wie viel",
    "use_amount_btn": "Diese Menge verwenden",
    "use_all_btn": "ALLES verwenden / Aufgebraucht",
    "packs_label": "Packungen",
    "quantity_in_total": "Menge in {unit} (gesamt: {total})",
    "packs_of_have": "Packungen à {size} (du hast {count} Pack.)",
    "scale_wait_stable": "10s stabiles Gewicht für Auto-Ausfüllen abwarten…",
    "ingredient_scaled_toast": "📦 Zutat vom Vorrat abgezogen!",
    "finished_added_bring_toast": "🛒 Produkt aufgebraucht → zu Bring! hinzugefügt!",
    "load_error": "Fehler beim Laden",
    "favorite": "Zu Favoriten hinzufügen",
    "unfavorite": "Aus Favoriten entfernen",
    "adjust_persons": "Personen",
    "nutrition_title": "Nährwerte (pro Portion)",
    "nutrition_kcal": "Kalorien",
    "nutrition_protein": "Protein",
    "nutrition_carbs": "Kohlenhydrate",
    "nutrition_fat": "Fett",
    "nutrition_per_serving": "Geschätzte Werte pro Portion",
    "storage_title": "Aufbewahrung von Resten",
    "storage_days": "{n} Tage",
    "storage_immediately": "Am besten sofort verzehren",
    "ing_stock_line": "Du hast {have} · {remain} bleiben nach Gebrauch",
    "ing_use_all_note": "alles verwenden (<5% der Vollpackung)"
  },
  "shopping": {
    "title": "🛒 Einkaufsliste",
    "bring_loading": "Verbindung zu Bring!...",
    "bring_not_configured": "Bring! ist nicht konfiguriert. Füge E-Mail und Passwort in den <a href='#' onclick=\"showPage('settings');return false;\">Einstellungen</a> hinzu.",
    "tab_to_buy": "🛍️ Zu kaufen",
    "tab_forecast": "🧠 Vorhersage",
    "total_label": "💰 Geschätzter Gesamtbetrag",
    "section_to_buy": "🛍️ Zu kaufen",
    "suggestions_title": "💡 KI-Vorschläge",
    "suggestions_add": "✅ Ausgewählte zu Bring! hinzufügen",
    "search_prices": "🔍 Alle Preise suchen",
    "suggest_btn": "Einkaufsvorschläge",
    "smart_title": "🧠 Intelligente Vorhersagen",
    "smart_empty": "Keine Vorhersagen verfügbar.<br>Füge Produkte zur Vorratskammer hinzu, um intelligente Vorhersagen zu erhalten.",
    "smart_filter_all": "Alle",
    "smart_filter_critical": "🔴 Dringend",
    "smart_filter_high": "🟠 Bald",
    "smart_filter_medium": "🟡 Planen",
    "smart_filter_low": "🟢 Vorhersage",
    "smart_add": "🛒 Ausgewählte zu Bring! hinzufügen",
    "empty": "Einkaufsliste leer!\nNutze den Button unten, um Vorschläge zu generieren.",
    "already_in_list": "🛒 \"{name}\" ist bereits in der Einkaufsliste",
    "already_in_list_short": "ℹ️ Bereits in der Einkaufsliste",
    "add_prompt": "Möchtest du es zur Einkaufsliste hinzufügen?",
    "smart_already": "📊 Intelligenter Einkauf sagt bereits {name} voraus",
    "all_searched": "Alle Produkte wurden bereits gesucht. Nutze 🔄 für einzelne Suchen.",
    "search_complete": "Suche abgeschlossen: {count} Produkte",
    "suggest_buy": "🛒 Kaufen: {qty} {unit}",
    "suggest_buy_approx": "🛒 Mindestens: {qty} {unit}",
    "suggest_buy_tip": "Empfohlene Menge basierend auf dem Verbrauch der letzten 14 Tage",
    "suggest_buy_approx_tip": "Mindestschätzung basierend auf Verbrauch (nächste Packungsgröße kaufen)",
    "removed_sufficient": "🧹 {removed} Produkt(e) mit ausreichendem Bestand von der Liste entfernt",
    "bring_badge": "🛒 Schon auf Bring!",
    "add_urgent_toast": "🔴 {n} dringende(s) Produkt(e) automatisch zu Bring! hinzugefügt",
    "migration_done": "✅ {migrated} aktualisiert, {skipped} bereits ok",
    "added_to_bring": "🛒 {n} Produkte zu Bring! hinzugefügt",
    "added_to_bring_skip": "{n} bereits vorhanden",
    "all_on_bring": "Alle Produkte waren bereits auf Bring!",
    "freq_high": "📈 Häufig",
    "freq_regular": "📊 Regelmäßig",
    "freq_occasional": "📉 Gelegentlich",
    "out_of_stock": "Ausverkauft",
    "scan_toast": "📷 Scannen: {name}",
    "empty_category": "Keine Produkte in dieser Kategorie",
    "session_empty": "🛒 Noch keine Produkte",
    "urgency_critical": "Dringend",
    "urgency_high": "Bald",
    "urgency_medium": "Planen",
    "urgency_low": "Vorschau",
    "urgency_medium_short": "Mittel",
    "urgency_low_short": "Ok",
    "tag_urgent": "🔴 Dringend",
    "tag_priority": "⭐ Priorität",
    "tag_check": "✅ Prüfen",
    "smart_already_predicted": "📊 Einkauf wird bereits vorhergesagt: <strong>{name}</strong>{urgency}.",
    "item_removed": "✅ {name} von der Liste entfernt!",
    "urgency_spec_critical": "⚡ Dringend",
    "urgency_spec_high": "🟠 Bald",
    "urgency_spec_medium": "🟡 Bald",
    "urgency_spec_low": "🔵 Prognose",
    "family_sibling_title": "Ähnlich in {location}",
    "family_sibling_check": "Prüfen: {name}",
    "family_sibling_stock": "Du solltest haben: {qty}",
    "family_sibling_location": "Standort: {location}",
    "family_sibling_qty": "Menge: {qty}",
    "family_sibling_purchased": "Gekauft am {date}",
    "family_sibling_question": "Ist die Menge noch korrekt?",
    "family_sibling_prompt": "Du hast auch {name}: {qty} auf Lager. Menge bestätigen?",
    "family_sibling_yes": "Ja, passt",
    "family_sibling_no": "Nein, aktualisieren",
    "bring_add_n": "{n} zu Bring! hinzufügen",
    "bring_add_selected": "Ausgewählte zu Bring! hinzufügen",
    "bring_adding": "Wird hinzugefügt...",
    "bring_added_one": "1 Produkt zu Bring! hinzugefügt",
    "bring_added_many": "{n} Produkte zu Bring! hinzugefügt",
    "bring_skipped": "({n} bereits in Liste)",
    "force_sync": "Bring!-Synchronisierung erzwingen",
    "scan_target_label": "Du suchst",
    "scan_target_found": "Gefunden! Aus Liste entfernen",
    "bring_add_one": "1 Produkt zu Bring! hinzufügen",
    "bring_add_many": "{n} Produkte zu Bring! hinzufügen",
    "syncing": "Synchronisiere…",
    "sync_done": "Synchronisierung abgeschlossen",
    "price_searching": "Suche...",
    "search_action": "Suchen",
    "open_action": "Öffnen",
    "not_found": "Nicht gefunden",
    "search_price": "Preis suchen",
    "tap_to_scan": "Zum Scannen tippen",
    "tag_title": "Tag",
    "remove_title": "Entfernen",
    "found_count": "{found}/{total} Produkte gefunden",
    "savings_offers": "· 🏷️ Du sparst €{amount} mit Angeboten",
    "searching_progress": "Suche {current}/{total}...",
    "remove_error": "Fehler beim Entfernen",
    "btn_fetch_prices": "Preise suchen",
    "price_total_label": "💰 Geschätzter Gesamtpreis:",
    "price_total_short": "geschätzte Ausgaben",
    "price_loading": "Preise werden gesucht…",
    "price_not_found": "Preis n/v",
    "suggest_loading": "Analyse läuft...",
    "suggest_error": "Fehler bei der Vorschlagserstellung",
    "priority_high": "Hoch",
    "priority_medium": "Mittel",
    "priority_low": "Niedrig",
    "smart_last_update": "Aktualisiert {time}",
    "names_already_updated": "Alle Namen sind bereits aktuell",
    "pantry_hint": "Bereits zuhause: {qty}",
    "bring_names_migrated": "🔄 {n} Namen in Bring! verallgemeinert"
  },
  "ai": {
    "title": "🤖 KI-Identifikation",
    "capture": "📸 Foto aufnehmen",
    "retake": "🔄 Neu aufnehmen",
    "hint": "Mache ein Foto des Produkts und die KI versucht es zu identifizieren",
    "identifying": "🤖 Identifiziere Produkt...",
    "no_api_key": "⚠️ Gemini API-Schlüssel nicht konfiguriert.\n<small>Füge GEMINI_API_KEY in der .env Datei auf dem Server hinzu.</small>",
    "fields_filled": "✅ Felder von KI ausgefüllt",
    "use_data": "✅ KI-Daten verwenden",
    "use_data_no_barcode": "✅ KI-Daten verwenden (ohne Barcode)",
    "conservation_hint": "🤖 KI: lagere in {location}"
  },
  "log": {
    "title": "📒 Verlauf",
    "type_added": "Hinzugefügt",
    "type_waste": "Entsorgt",
    "type_used": "Verwendet",
    "type_bring": "Zu Bring! hinzugefügt",
    "undone_badge": "Rückgängig",
    "undo_title": "Diese Operation rückgängig machen",
    "load_error": "Fehler beim Laden des Verlaufs",
    "empty": "Keine Operationen aufgezeichnet.",
    "undo_action_remove": "Entfernen von",
    "undo_action_restore": "Wiederherstellen von",
    "undo_confirm": "Vorgang rückgängig machen?\n→ {action} {name}",
    "undo_success": "↩ Vorgang rückgängig gemacht für {name}",
    "already_undone": "Vorgang bereits rückgängig gemacht",
    "too_old": "Vorgänge älter als 24 Stunden können nicht rückgängig gemacht werden",
    "undo_error": "Fehler beim Rückgängigmachen",
    "recipe_prefix": "Rezept"
  },
  "chat": {
    "title": "Gemini Chef",
    "welcome": "Hallo! Ich bin dein Küchenassistent",
    "welcome_desc": "Frag mich, dir einen Saft, einen Snack, ein schnelles Gericht zu machen... Ich kenne deinen Vorrat, deine Geräte und deine Vorlieben!",
    "suggestion_snack": "🍿 Schneller Snack",
    "suggestion_juice": "🥤 Saft/Smoothie",
    "suggestion_light": "🥗 Etwas Leichtes",
    "suggestion_expiry": "⏰ Ablaufende nutzen",
    "clear": "Neues Gespräch",
    "placeholder": "Frag etwas...",
    "cleared": "Chat geleert",
    "suggestion_snack_text": "Was kann ich als schnellen Snack machen?",
    "suggestion_juice_text": "Mach mir einen Saft oder Smoothie mit dem was ich habe",
    "suggestion_light_text": "Ich habe Hunger, möchte aber etwas Leichtes",
    "suggestion_expiry_text": "Was läuft bald ab und wie kann ich es verwenden?",
    "transfer_to_recipes": "Zu Rezepten hinzufügen",
    "transferring": "Übertrage...",
    "transferred": "Zu Rezepten hinzugefügt!",
    "open_recipe": "Rezept öffnen",
    "quick_recipe_prompt": "Schlage mir ein schnelles Rezept FÜR EINE PERSON vor, das die Produkte mit dem nächsten Ablaufdatum verwendet! Ignoriere Tiefkühlprodukte, konzentriere dich auf Kühlschrank und Vorratsschrank."
  },
  "cooking": {
    "close": "Schließen",
    "tts_btn": "Vorlesen",
    "restart": "↺ Neustart",
    "replay": "🔊 Nochmal",
    "timer": "⏱️ {time} · Timer",
    "prev": "◀ Zurück",
    "next": "Weiter ▶",
    "ingredient_used": "✔️ Abgezogen",
    "ingredient_use_btn": "Usa",
    "ingredient_deduct_title": "Von Vorrat abziehen",
    "timer_expired_tts": "Timer {label} abgelaufen!",
    "timer_warning_tts": "Achtung! {label}: noch 10 Sekunden!",
    "recipe_done_tts": "Rezept abgeschlossen! Guten Appetit!",
    "expires_chip": "läuft ab {date}",
    "finish": "✅ Fertig",
    "step_fallback": "Schritt {n}",
    "zerowaste_label": "♻️ Abfall",
    "zerowaste_tip_title": "Zero-Waste-Tipp"
  },
  "settings": {
    "title": "⚙️ Einstellungen",
    "tab_api": "API Keys",
    "tab_bring": "Bring!",
    "tab_recipe": "Rezepte",
    "tab_mealplan": "Wochenplan",
    "tab_appliances": "Geräte",
    "tab_spesa": "Online-Einkauf",
    "tab_camera": "Kamera",
    "tab_security": "Sicherheit",
    "tab_tts": "Sprache (TTS)",
    "tab_language": "Sprache",
    "tab_scale": "Smart-Waage",
    "gemini": {
      "title": "🤖 Google Gemini AI",
      "hint": "API-Schlüssel für Produkterkennung, Ablaufdaten und Rezepte.",
      "key_label": "Gemini API Key"
    },
    "bring": {
      "title": "🛒 Bring! Einkaufsliste",
      "hint": "Zugangsdaten für die Bring! Einkaufslisten-Integration.",
      "email_label": "📧 Bring! E-Mail",
      "password_label": "🔒 Bring! Passwort"
    },
    "price": {
      "title": "💰 Preisschätzung (KI)",
      "hint": "Zeigt geschätzte Kosten pro Produkt in der Einkaufsliste mithilfe von KI an.",
      "enabled_label": "Preisschätzung aktivieren",
      "country_label": "🌍 Referenzland",
      "currency_label": "💱 Währung",
      "update_label": "🔄 Preise aktualisieren alle",
      "update_suffix": "Monate"
    },
    "recipe": {
      "title": "🍳 Rezept-Einstellungen",
      "hint": "Konfiguriere die Standardoptionen für die Rezeptgenerierung.",
      "persons_label": "👥 Standard-Portionen",
      "options_label": "🎯 Standard-Rezeptoptionen",
      "fast": "⚡ Schnelles Gericht",
      "light": "🥗 Leichte Mahlzeit",
      "expiry": "⏰ Ablauf-Priorität",
      "healthy": "💚 Extra Gesund",
      "opened": "📦 Offene Produkte zuerst",
      "zerowaste": "♻️ Keine Verschwendung",
      "dietary_label": "🚫 Unverträglichkeiten / Einschränkungen",
      "dietary_placeholder": "z.B.: glutenfrei, laktosefrei, vegetarisch..."
    },
    "mealplan": {
      "title": "📅 Wöchentlicher Essensplan",
      "hint": "Lege die Mahlzeitenart für jeden Tag fest. Wird als Leitfaden bei der Rezeptgenerierung verwendet.",
      "enabled": "✅ Wöchentlichen Essensplan aktivieren",
      "legend": "🌤️ = Mittagessen &nbsp;·&nbsp; 🌙 = Abendessen &nbsp;·&nbsp; Tippe auf ein Badge, um es zu ändern.",
      "types_title": "📋 Verfügbare Typen",
      "reset_btn": "↺ Standard wiederherstellen"
    },
    "appliances": {
      "title": "🔌 Verfügbare Geräte",
      "hint": "Gib an, welche Geräte du hast. Sie werden bei der Rezeptgenerierung berücksichtigt.",
      "new_placeholder": "z.B.: Brotbackmaschine, Thermomix, Heißluftfritteuse...",
      "quick_title": "Schnell hinzufügen:",
      "oven": "🔥 Backofen",
      "microwave": "📡 Mikrowelle",
      "air_fryer": "🍟 Heißluftfritteuse",
      "bread_maker": "🍞 Brotbackmaschine",
      "bimby": "🤖 Thermomix/Cookeo",
      "mixer": "🌀 Küchenmaschine",
      "steamer": "♨️ Dampfgarer",
      "pressure_cooker": "🫕 Schnellkochtopf",
      "toaster": "🍞 Toaster",
      "blender": "🍹 Mixer",
      "empty": "Keine Geräte hinzugefügt"
    },
    "spesa": {
      "title": "🛍️ Online-Einkauf",
      "hint": "Online-Einkaufsanbieter konfigurieren.",
      "provider_label": "🏪 Anbieter",
      "email_label": "📧 E-Mail",
      "password_label": "🔒 Passwort",
      "login_btn": "🔐 Anmelden",
      "ai_prompt_label": "🤖 KI-Produktauswahl Prompt",
      "ai_prompt_placeholder": "Anweisungen für die KI bei der Auswahl zwischen mehreren Produkten...",
      "ai_prompt_hint": "Die KI verwendet diesen Prompt zur Auswahl des passendsten Produkts. Leer lassen für Standardverhalten.",
      "configure_first": "Konfiguriere zuerst den Online-Einkauf in den Einstellungen",
      "missing_credentials": "E-Mail und Passwort eingeben",
      "login_in_progress": "Anmeldung läuft...",
      "login_error_prefix": "Fehler:",
      "login_network_error_prefix": "Netzwerkfehler:",
      "login_success_default": "Anmeldung erfolgreich!",
      "result_name_label": "Name",
      "result_card_label": "Karte",
      "result_pickup_label": "Abholpunkt",
      "result_points_label": "Treuepunkte",
      "connected_relogin": "✅ Verbunden — Erneut anmelden",
      "connected_as": "Verbunden als {name}"
    },
    "camera": {
      "title": "📷 Kamera",
      "hint": "Wähle die Kamera für Barcode-Scanning und KI-Identifikation.",
      "device_label": "📸 Standardkamera",
      "back": "📱 Rückkamera (Standard)",
      "front": "🤳 Frontkamera",
      "devices_hint": "Bei mehreren Kameras kannst du nach Freigabe der Berechtigungen eine bestimmte aus der Liste oben wählen.",
      "detect_btn": "🔄 Kameras erkennen",
      "ai_fallback_label": "KI-Bilderkennung (5s Fallback)",
      "ai_fallback_hint": "Wird kein Barcode innerhalb von 5 Sekunden gelesen, wird automatisch ein Bild an die KI zur visuellen Produktidentifizierung gesendet. Erfordert konfiguriertes Gemini.",
      "ai_manual_hint": "Wenn der Barcode nicht lesbar ist, nutze den Button «Mit KI erkennen» unter der Kamera. Erfordert konfiguriertes Gemini."
    },
    "security": {
      "title": "🔒 HTTPS-Zertifikat",
      "hint": "Wenn der Browser den Fehler \"Verbindung nicht sicher\" (ERR_CERT_AUTHORITY_INVALID) zeigt, installiere das CA-Zertifikat auf dem Gerät.",
      "download_btn": "📥 CA-Zertifikat herunterladen",
      "token_title": "🔑 Einstellungs-Token",
      "token_label": "Zugriffstoken",
      "token_hint": "Falls `SETTINGS_TOKEN` in der Server-`.env` konfiguriert ist, gib hier den Token ein, bevor du die Einstellungen speicherst. Leer lassen, wenn nicht konfiguriert.",
      "token_placeholder": "(leer = kein Schutz)",
      "token_required_hint": "🔒 Dieser Server benötigt einen Token zum Speichern der Einstellungen.",
      "cert_instructions": "<strong>Anleitung für Chrome (Android):</strong><br>1. Zertifikat oben herunterladen<br>2. Gehe zu <em>Einstellungen &rarr; Sicherheit &amp; Datenschutz &rarr; Weitere Sicherheitseinstellungen &rarr; Vom Gerätespeicher installieren</em><br>3. Wähle die heruntergeladene <em>EverShelf_CA.crt</em> Datei<br>4. Wähle \"CA\" und bestätige<br>5. Chrome neu starten<br><br><strong>Anleitung für Chrome (PC):</strong><br>1. Zertifikat oben herunterladen<br>2. Gehe zu <em>chrome://settings/certificates</em> (oder Einstellungen &rarr; Datenschutz und Sicherheit &rarr; Sicherheit &rarr; Zertifikate verwalten)<br>3. Tab \"Zertifizierungsstellen\" &rarr; Importieren &rarr; Datei auswählen<br>4. Häkchen bei \"Dieser Zertifizierungsstelle für die Identifikation von Webseiten vertrauen\"<br>5. Chrome neu starten"
    },
    "tts": {
      "title": "🔊 Sprache & TTS",
      "hint": "Sprachsynthese über externe REST-API konfigurieren. Rezeptschritte und abgelaufene Timer werden an den Endpunkt gesendet.",
      "enabled": "✅ TTS aktivieren",
      "engine_label": "⚙️ TTS-Engine",
      "engine_browser": "🔇 Browser (offline, keine Konfiguration erforderlich)",
      "engine_server": "🌐 Externer Server (Home Assistant, REST API...)",
      "voice_label": "🗣️ Stimme",
      "rate_label": "⚡ Geschwindigkeit",
      "pitch_label": "🎵 Tonhöhe",
      "url_label": "🌐 Endpunkt-URL",
      "method_label": "📡 HTTP-Methode",
      "auth_label": "🔐 Authentifizierung",
      "auth_bearer": "Bearer Token",
      "auth_custom": "Benutzerdefinierter Header",
      "auth_none": "Keine",
      "token_label": "🔑 Bearer Token",
      "custom_header_name": "📋 Header-Name",
      "custom_header_value": "📋 Header-Wert",
      "content_type_label": "📄 Content-Type",
      "payload_key_label": "🗝️ Textfeld im Payload",
      "payload_key_hint": "Name des JSON-Feldes für den zu lesenden Text (z.B.: message, text).",
      "extra_fields_label": "➕ Zusätzliche Felder (JSON)",
      "extra_fields_placeholder": "{\"entity_id\": \"media_player.living_room\"}",
      "extra_fields_hint": "Zusätzliche Felder im Payload, im JSON-Format. Leer lassen wenn nicht benötigt.",
      "test_sound_btn": "🔔 Klangtest ausführen",
      "test_btn": "🔊 Testansage senden",
      "voices_loading": "Stimmen werden geladen…",
      "voice_not_supported": "Stimme vom Browser nicht unterstützt",
      "voices_none": "Keine Stimmen auf diesem Gerät verfügbar",
      "voices_hint": "Verfügbare Stimmen hängen vom Betriebssystem und Browser ab. Auf macOS/iOS ist die Stimme Paola (Italienisch) verfügbar. Drücken Sie ↺ wenn die Liste nicht lädt.",
      "url_missing": "⚠️ Endpunkt-URL fehlt.",
      "test_sending": "⏳ Wird gesendet…",
      "test_ok": "✅ Antwort {code} — prüfe ob der Lautsprecher gesprochen hat.",
      "heard_question": "Hast du die Stimme gehört?",
      "heard_yes": "Ja, ich habe es gehört",
      "heard_no": "Nein, ich habe nichts gehört",
      "test_ok_kiosk": "TTS funktioniert.",
      "test_fail_steps": "Prüfe: 1) Medienvolume ist nicht 0; 2) Google Text-to-Speech installiert und aktualisiert; 3) Deutsches Sprachpaket in den Android TTS-Einstellungen heruntergeladen."
    },
    "language": {
      "title": "🌐 Sprache",
      "hint": "Wähle die Sprache der Benutzeroberfläche.",
      "label": "🌐 Sprache",
      "restart_notice": "Die Seite wird neu geladen, um die neue Sprache anzuwenden."
    },
    "screensaver": {
      "label": "Bildschirmschoner aktivieren",
      "card_title": "🌙 Bildschirmschoner",
      "card_hint": "Zeigt nach 5 Minuten Inaktivität eine Uhr mit nützlichen Fakten. Standardmäßig deaktiviert.",
      "timeout_1": "1 Minute",
      "timeout_2": "2 Minuten",
      "timeout_5": "5 Minuten",
      "timeout_10": "10 Minuten",
      "timeout_15": "15 Minuten",
      "timeout_30": "30 Minuten",
      "timeout_60": "1 Stunde",
      "start_after": "⏱️ Starten nach"
    },
    "scale": {
      "title": "⚖️ Smart-Waage",
      "hint": "Verbinde eine Bluetooth-Waage über das Android-Gateway, um das Gewicht automatisch auszulesen.",
      "tab": "Smart-Waage",
      "enabled": "✅ Smart-Waage aktivieren",
      "url_label": "🌐 WebSocket-Gateway-URL",
      "url_placeholder": "ws://192.168.1.x:8765",
      "url_hint": "URL der Android-App (gleiches WLAN). z.B.:",
      "test_btn": "🔗 Verbindung testen",
      "download_btn": "📥 Android-Gateway herunterladen (APK)",
      "download_hint": "Android-App als Brücke zwischen BLE-Waage und EverShelf.",
      "download_sub": "Quellcode: evershelf-scale-gateway/ im Projektstamm",
      "live_weight": "Echtzeit-Gewicht",
      "auto_reconnect": "🔁 Verbindung: automatisch",
      "kiosk_title": "📡 BLE-Waage im Kiosk integriert",
      "kiosk_hint": "Die Waage wird direkt vom internen BLE-Gateway des Kiosks verwaltet. Um ein neues Gerät zu koppeln, verwende den Konfigurationsassistenten.",
      "kiosk_reconfigure": "🔄 BLE-Waage neu konfigurieren",
      "ble_protocols": "<p style=\"margin:0 0 6px;font-weight:600\">🔌 Unterstützte BLE-Protokolle:</p><ul style=\"margin:0 0 0 16px;padding:0;font-size:0.8rem\"><li>Bluetooth SIG Weight Scale (0x181D)</li><li>Bluetooth SIG Body Composition (0x181B) &mdash; Gewicht, Fett, BMI</li><li>Xiaomi Mi Body Composition Scale 2</li><li>Generisch &mdash; automatische Heuristik für 100+ Modelle</li></ul>",
      "discover_scanning": "🔍 Lokales Netz wird nach Waagen-Gateway durchsucht…",
      "discover_found": "✅ Gateway gefunden: {url}{more}",
      "discover_not_found": "❌ Kein Gateway in {subnet}. Android-App auf demselben WLAN starten.",
      "discover_failed": "❌ Suche fehlgeschlagen: {error}",
      "discover_auto": "🔍 Auto",
      "unknown_device": "Unbekanntes Gerät"
    },
    "kiosk": {
      "hint": "Verwandeln Sie ein Android-Tablet in ein EverShelf-Panel mit integriertem BLE-Waagen-Gateway.",
      "download_btn": "📥 EverShelf Kiosk herunterladen (APK)",
      "download_sub": "Vollbild-Kioskmodus + integriertes Waagen-Gateway. Quellcode: evershelf-kiosk/",
      "native_title": "Kiosk-Konfiguration",
      "native_hint": "Server-URL, BLE-Waage, Bildschirmschoner und Einrichtungsassistent.",
      "native_btn": "Kiosk-Konfiguration öffnen",
      "native_tap_hint": "Zahnrad oben rechts antippen",
      "native_update_hint": "Kiosk-App aktualisieren, um diese Funktion zu nutzen",
      "update_title": "Kiosk-Aktualisierung",
      "check_updates_btn": "🔍 Nach Updates suchen",
      "needs_update": "⚠️ Das installierte Kiosk unterstützt diese Funktion nicht. Aktualisiere die Kiosk-App, um sie zu aktivieren."
    },
    "saved": "✅ Konfiguration gespeichert!",
    "saved_local": "✅ Konfiguration lokal gespeichert",
    "saved_local_error": "⚠️ Lokal gespeichert, Serverfehler: {error}",
    "theme": {
      "title": "🌙 Erscheinungsbild",
      "hint": "Wähle das Interface-Design.",
      "label": "🌙 Design",
      "off": "☀️ Hell",
      "on": "🌙 Dunkel",
      "auto": "🔄 Automatisch (Tageszeit)"
    },
    "zerowaste": {
      "card_title": "♻️ Zero-Waste-Tipps",
      "card_hint": "Zeige während des Kochens Tipps zur Wiederverwendung von Abfällen (Schalen, Kochwasser usw.). Standardmäßig deaktiviert.",
      "label": "Tipps beim Kochen anzeigen"
    },
    "backup": {
      "tab": "Backup",
      "local_title": "Lokales Backup",
      "local_hint": "Täglicher Datenbank-Snapshot. Konfiguriere, wie viele Tage Backups aufbewahrt werden.",
      "enabled": "Tägliches automatisches Backup aktivieren",
      "retention_days": "Aufbewahrung (Tage)",
      "retention_info": "Backups werden aufbewahrt für",
      "backup_now": "Jetzt sichern",
      "backing_up": "Sicherung läuft…",
      "backed_up": "Sicherung abgeschlossen",
      "backup_error": "Sicherungsfehler",
      "last_backup": "Letztes Backup",
      "no_backup_yet": "Noch kein Backup erstellt",
      "list_empty": "Keine Backups verfügbar",
      "restore_btn": "Wiederherstellen",
      "restore_confirm": "Backup wiederherstellen",
      "delete_btn": "Löschen",
      "delete_confirm": "Backup löschen",
      "gdrive_title": "Google Drive",
      "gdrive_hint": "Backups automatisch via OAuth 2.0 auf Google Drive hochladen. Keine externen Bibliotheken erforderlich.",
      "gdrive_enabled": "Google Drive Backup aktivieren",
      "gdrive_folder_id": "Drive-Ordner-ID",
      "gdrive_folder_id_hint": "Kopiere die ID aus der Drive-Ordner-URL: …/folders/<strong>ID</strong>",
      "gdrive_retention_days": "Drive-Aufbewahrung (Tage, 0=alles behalten)",
      "gdrive_test": "Verbindung testen",
      "gdrive_ok": "Verbindung erfolgreich!",
      "gdrive_error": "Verbindung fehlgeschlagen",
      "gdrive_push_now": "Jetzt auf Drive hochladen",
      "gdrive_pushing": "Wird hochgeladen…",
      "gdrive_pushed": "Auf Drive hochgeladen",
      "gdrive_wizard_hint": "Optional: täglich automatisch via OAuth 2.0 auf Google Drive sichern.",
      "gdrive_skip": "Überspringen — später in Einstellungen konfigurieren",
      "gdrive_client_id": "Client-ID",
      "gdrive_client_secret": "Client-Secret",
      "gdrive_redirect_uri_hint": "Füge <strong>http://localhost</strong> als autorisierten Weiterleitungs-URI in der Google Cloud Console hinzu. Funktioniert auf jedem Server, auch ohne öffentliche Domain.",
      "gdrive_code_title": "Autorisierungs-URL oder Code einfügen",
      "gdrive_code_hint": "Nach der Autorisierung öffnet der Browser http://localhost und zeigt möglicherweise einen Verbindungsfehler — das ist normal. Kopiere die URL aus der Adressleiste (z.B. <code>http://localhost/?code=4%2F0A...</code>) und füge sie hier ein.",
      "gdrive_code_submit": "Bestätigen",
      "gdrive_code_empty": "Bitte zuerst die URL oder den Autorisierungscode einfügen",
      "gdrive_redirect_uri_label": "Redirect-URI (in Google Cloud Console eintragen):",
      "gdrive_oauth_authorize": "Mit Google autorisieren",
      "gdrive_oauth_authorized": "Autorisiert",
      "gdrive_oauth_not_authorized": "Noch nicht autorisiert",
      "gdrive_oauth_window_opened": "Browserfenster geöffnet — autorisieren und zurückkehren",
      "gdrive_oauth_how_to": "OAuth 2.0 einrichten (Schritt für Schritt)",
      "gdrive_oauth_steps": "<li>Gehe zu <a href='https://console.cloud.google.com/' target='_blank' rel='noopener'>console.cloud.google.com</a> und wähle dein Projekt</li><li>Aktiviere die <strong>Google Drive API</strong>: <em>APIs &amp; Dienste → APIs aktivieren → Google Drive API</em></li><li>Gehe zu <em>APIs &amp; Dienste → Anmeldedaten → Anmeldedaten erstellen → OAuth-Client-ID</em></li><li>Anwendungstyp: <strong>Webanwendung</strong>; füge die unten angezeigte URL als <em>Autorisierter Weiterleitungs-URI</em> hinzu</li><li>Kopiere <strong>Client-ID</strong> und <strong>Client-Secret</strong> in die Felder oben und speichere</li><li>Klicke auf <strong>Mit Google autorisieren</strong>: melde dich an und erteile den Zugriff</li><li>Das Fenster schließt sich automatisch und Backups sind bereit</li>"
    },
    "info": {
      "tab": "Info",
      "ai_title": "Gemini AI — Token-Nutzung",
      "ai_hint": "Monatlicher Verbrauch und geschätzte Kosten für den aktuellen API-Schlüssel.",
      "loading": "Laden…",
      "total_tokens": "Token gesamt",
      "est_cost": "Gesch. Kosten",
      "input_tok": "Eingabe-Token",
      "output_tok": "Ausgabe-Token",
      "ai_calls": "Aufrufe",
      "by_action": "Aufschlüsselung nach Funktion",
      "by_model": "Aufschlüsselung nach Modell",
      "pricing_note": "Gemini Referenzpreise: 2.5-flash $0.15/M in · $0.60/M out — 2.0-flash $0.10/M in · $0.40/M out.",
      "system_title": "System",
      "db_size": "Datenbank",
      "log_size": "Protokolle",
      "log_level": "Log-Level",
      "ai_overview": "KI-Nutzungsübersicht, Inventar und Systemstatus",
      "calls_unit": "Aufrufe",
      "inv_title": "Inventar",
      "inv_active": "Aktiv",
      "inv_products": "Produkte gesamt",
      "inv_expiring": "Ablaufend (7T)",
      "inv_expired": "Abgelaufen",
      "inv_finished": "Leer",
      "act_title": "Monatliche Aktivität",
      "act_tx_month": "Bewegungen",
      "act_restock": "Einkäufe",
      "act_use": "Verbrauch",
      "act_new_products": "Neue Produkte",
      "act_tx_year": "Jährl. Bewegungen",
      "price_cache": "Preiscache",
      "cache_entries": "Produkte",
      "last_backup": "Letztes Backup",
      "bring_days": "Token läuft in {n} Tagen ab",
      "bring_expired": "Token abgelaufen",
      "year_label": "Jahr {year}",
      "currency_title": "Währung",
      "currency_hint": "Die Währung, die für alle Kosten und Preise in der App verwendet wird."
    },
    "tab_general": "Allgemein",
    "shopping": {
      "tab": "Einkaufsliste",
      "title": "Einkaufsliste",
      "hint": "Konfiguriere die integrierte Einkaufsliste oder verbinde Bring!.",
      "enable_label": "Einkaufsliste aktivieren",
      "mode_label": "Anbieter",
      "mode_internal": "Intern (ohne Bring!)",
      "mode_bring": "Bring! (externe App)",
      "bring_section_title": "Bring!-Konfiguration",
      "ai_section_title": "KI-Unterstützung",
      "smart_suggestions_label": "KI-Vorschläge",
      "forecast_label": "Prognose für bald leere Produkte",
      "auto_add_label": "Automatisch hinzufügen wenn",
      "auto_add_suffix": "im Lager verbleibend (0 = nur wenn leer)"
    },
    "ha": {
      "tab": "Home Assistant",
      "title": "Home Assistant",
      "hint": "Verbinde EverShelf mit Home Assistant für Automationen, Push-Benachrichtigungen und REST-Sensoren.",
      "enabled": "Home Assistant-Integration aktivieren",
      "connection_title": "Verbindung",
      "url_label": "Home Assistant URL",
      "url_placeholder": "http://192.168.1.50:8123",
      "url_hint": "Basis-URL deiner Home Assistant-Instanz (z.B. http://homeassistant.local:8123).",
      "token_label": "Long-Lived Access Token",
      "token_hint": "Erstelle unter HA-Profil → Sicherheit → Langlebige Zugangstoken.",
      "token_placeholder": "eyJhbGci...",
      "token_saved": "Token gespeichert (aus Sicherheitsgründen verborgen)",
      "test_btn": "Verbindung testen",
      "test_ok": "Verbunden mit {version}",
      "test_fail": "Verbindung fehlgeschlagen: {error}",
      "test_bad_token": "HA erreichbar, aber Token ist ungültig",
      "testing": "Teste…",
      "error_no_url": "Bitte zuerst die Home Assistant URL eingeben.",
      "tts_title": "TTS auf Smart Speaker",
      "tts_hint": "Rezeptschritte auf einem Home Assistant Media Player vorlesen.",
      "tts_entity_label": "Media Player Entity ID",
      "tts_entity_placeholder": "media_player.wohnzimmer",
      "tts_entity_hint": "Entity-ID des HA-Media-Players. Zu finden unter HA: Entwicklertools → Zustände.",
      "tts_platform_label": "TTS-Plattform",
      "tts_platform_speak": "tts.speak (empfohlen)",
      "tts_platform_notify": "notify.* (Benachrichtigungsdienst)",
      "tts_apply_btn": "HA-Voreinstellung auf TTS-Tab anwenden",
      "tts_apply_hint": "Füllt den TTS-Tab mit der Home Assistant URL und dem Token aus.",
      "tts_preset_applied": "HA-Voreinstellung auf TTS-Tab angewendet.",
      "webhook_title": "Webhook-Automationen",
      "webhook_hint": "Sende Daten an Home Assistant, wenn Ereignisse in der Vorratskammer auftreten.",
      "webhook_id_label": "Webhook-ID",
      "webhook_id_placeholder": "evershelf_webhook_abc123",
      "webhook_id_hint": "ID des in HA erstellten Webhooks. Kopiere aus: HA → Einstellungen → Automationen → Erstellen → Webhook-Auslöser.",
      "webhook_events_label": "Benachrichtige bei diesen Ereignissen",
      "event_expiry": "Ablaufende Produkte (täglich)",
      "event_shopping": "Artikel zur Einkaufsliste hinzugefügt",
      "event_stock": "Lagerbestand aktualisiert",
      "expiry_days_label": "Ablaufwarnung im Voraus (Tage)",
      "expiry_days_hint": "Sende die Ablaufwarnung N Tage vor dem Ablaufdatum.",
      "webhook_help": "In HA: Einstellungen → Automationen → Automation erstellen → Auslöser: Webhook → ID kopieren.",
      "notify_title": "Push-Benachrichtigungen",
      "notify_hint": "Sende Push-Benachrichtigungen über einen Home Assistant notify-Dienst.",
      "notify_service_label": "Notify-Dienst",
      "notify_service_placeholder": "notify.mobile_app_mein_handy",
      "notify_service_hint": "Name des HA-notify-Dienstes (z.B. notify.mobile_app_phone). Leer lassen zum Deaktivieren.",
      "sensor_title": "REST-Sensoren",
      "sensor_hint": "Zur configuration.yaml hinzufügen, um EverShelf-Sensoren in Home Assistant zu erstellen.",
      "sensor_copy_btn": "YAML kopieren",
      "sensor_copied": "YAML in die Zwischenablage kopiert!",
      "save_btn": "HA-Einstellungen speichern",
      "ha_hint": "Wenn du Home Assistant verwendest, nutze den Home Assistant-Tab für TTS, Webhooks und Sensoren."
    },
    "kiosk_update_required": "⚠️ Aktualisiere die Kiosk-App, um diese Funktion zu nutzen"
  },
  "expiry": {
    "today": "HEUTE",
    "tomorrow": "Morgen",
    "days": "{days} Tage",
    "expired_days": "Seit {days}T",
    "expired_yesterday": "Seit gestern",
    "expired_today": "Heute",
    "badge_today": "⚠️ Läuft heute ab!",
    "badge_tomorrow": "⏰ Morgen",
    "badge_tomorrow_long": "⏰ Läuft morgen ab",
    "badge_days": "⏰ {n} Tage",
    "badge_expired_ago": "⚠️ Seit {n}T abgel.",
    "badge_expired": "⛔ Abgelaufen!",
    "badge_stable": "✅ Stabil",
    "badge_expiring_short": "⏰ Läuft in {n}T ab",
    "badge_ok_still": "✅ Noch {n}T",
    "badge_expires_red": "🔴 In {n}T",
    "badge_expires_yellow": "🟡 In {n}T",
    "badge_expired_bare": "⚠️ Abgelaufen",
    "badge_expires_warn": "⚠️ In {n}T",
    "badge_days_left": "⏳ ~{n}T übrig",
    "days_approx": "~{n} Tage",
    "weeks_approx": "~{n} Wochen",
    "months_approx": "~{n} Monate",
    "years_approx": "~{n} Jahre",
    "expired_today_long": "Heute abgelaufen",
    "expired_ago_long": "Seit {n} Tagen abgelaufen",
    "expired_suffix": "— Abgelaufen!",
    "expired_suffix_ok": "— Abgelaufen (noch ok)",
    "expired_suffix_warning": "— Abgelaufen (erst prüfen)",
    "opened_ago_long": "Seit {n} Tagen geöffnet",
    "opened_today_long": "Heute geöffnet",
    "opened_suffix": "— Zu lange geöffnet!",
    "opened_suffix_ok": "— Geöffnet (noch ok)",
    "opened_suffix_warning": "— Geöffnet (erst prüfen)",
    "days_compact": "{n}T",
    "badge_check_soon": "Bald prüfen"
  },
  "status": {
    "ok": "OK",
    "check": "Prüfen",
    "discard": "Entsorgen",
    "tip_freezer_ok": "Im Gefrierschrank: noch sicher (~{n}T Puffer)",
    "tip_freezer_check": "Seit langem im Gefrierschrank, könnte an Qualität verloren haben. Bald verbrauchen",
    "tip_freezer_danger": "Zu lange im Gefrierschrank, Gefrierbrand- und Qualitätsverlust-Risiko",
    "tip_highRisk_check": "Kürzlich abgelaufen, Geruch und Aussehen vor dem Verzehr prüfen",
    "tip_highRisk_danger": "Verderbliches Produkt abgelaufen: aus Sicherheitsgründen entsorgen",
    "tip_medRisk_check1": "Aussehen und Geruch vor dem Verzehr prüfen",
    "tip_medRisk_check2": "Schon eine Weile abgelaufen, vor dem Verzehr gut prüfen",
    "tip_medRisk_danger": "Zu lange seit dem Ablaufdatum, lieber entsorgen",
    "tip_lowRisk_ok": "Haltbares Produkt, noch sicher zu verzehren",
    "tip_lowRisk_check": "Seit über einem Monat abgelaufen, Verpackungsintegrität prüfen",
    "tip_lowRisk_danger": "Zu lange abgelaufen, besser kein Risiko eingehen"
  },
  "toast": {
    "product_saved": "Produkt gespeichert!",
    "product_created": "Produkt erstellt!",
    "product_updated": "✅ Produkt aktualisiert!",
    "product_removed": "Produkt entfernt",
    "updated": "Aktualisiert!",
    "quantity_confirmed": "✓ Menge bestätigt",
    "added_to_inventory": "✅ {name} hinzugefügt!",
    "removed_from_list": "✅ {name} von der Liste entfernt!",
    "removed_from_list_short": "Von der Liste entfernt",
    "added_to_shopping": "🛒 Zur Einkaufsliste hinzugefügt!",
    "removed_from_shopping": "🛒 Von der Einkaufsliste entfernt",
    "finished_to_bring": "🛒 Produkt aufgebraucht → zu Bring! hinzugefügt",
    "thrown_away": "🗑️ {name} weggeworfen!",
    "thrown_away_partial": "🗑️ {qty} {unit} von {name} weggeworfen",
    "finished_all": "📤 {name} aufgebraucht!",
    "vacuum_sealed": "{name} als vakuumversiegelt gespeichert",
    "product_finished_confirmed": "✅ Entfernt — wieder hinzufügen, wenn du nachkaufst",
    "ghost_restored": "✅ {name}: {qty} {unit} im Bestand wiederhergestellt",
    "appliance_added": "Gerät hinzugefügt",
    "item_added": "{name} hinzugefügt"
  },
  "antiwaste": {
    "title": "🌱 Anti-Verschwendungs-Bericht",
    "grade_label": "Note",
    "you": "Du",
    "avg_label": "Ø",
    "better": "🎉 Du verlierst {diff}% weniger als der {country}!",
    "worse": "⚠️ Du verlierst mehr als der {country}. Verbesserungspotenzial!",
    "on_par": "→ Du liegst beim {country}. Du kannst noch besser werden!",
    "saved_money": "~{amount}/Monat gespart",
    "saved_meals": "~{n} Mahlzeiten gerettet",
    "saved_co2": "{n} kg CO₂ eingespart",
    "trend_title": "Trend (letzte 3 Monate)",
    "months_ago_2": "-60 Tage",
    "months_ago_1": "-30 Tage",
    "this_month": "Jetzt",
    "country_it": "ital. Durchschnitt",
    "country_de": "dt. Durchschnitt",
    "country_en": "US-Durchschnitt",
    "source": "Quellen: REDUCE, Eurostat, USDA 2021",
    "live_on": "Live-Daten",
    "live_off": "Offline",
    "meals": "Mahlzeiten",
    "annual_info": "📅 Du ~{you} kg/Jahr · Ø ~{avg} kg/Jahr",
    "badge_rate": "Verlustquote",
    "badge_saved_money": "gespart vs Ø",
    "badge_wasted": "verloren",
    "badge_better": "weniger als Ø"
  },
  "error": {
    "generic": "Fehler",
    "network": "Netzwerkfehler",
    "no_api_key": "API-Schluessel in den Einstellungen konfigurieren",
    "loading": "Fehler beim Laden des Produkts",
    "not_found": "Produkt nicht gefunden",
    "not_found_manual": "Produkt nicht gefunden. Manuell eingeben.",
    "search": "Suchfehler. Nochmal versuchen.",
    "search_short": "Suchfehler",
    "save": "Fehler beim Speichern",
    "connection": "Verbindungsfehler",
    "camera": "Kamera nicht verfügbar",
    "bring_add": "Fehler beim Hinzufügen zu Bring!",
    "bring_connection": "Bring! Verbindungsfehler",
    "identification": "Identifikationsfehler",
    "ai_quota": "KI-Kontingent erschöpft. Bitte in ein paar Minuten erneut versuchen.",
    "barcode_empty": "Barcode eingeben",
    "barcode_format": "Barcode darf nur Zahlen enthalten (4-14 Ziffern)",
    "barcode_checksum": "Ungültiger EAN-Prüfziffer — bitte die Barcode-Ziffern prüfen",
    "min_chars": "Mindestens 2 Zeichen eingeben",
    "not_in_inventory": "Produkt nicht im Bestand",
    "appliance_exists": "Gerät bereits vorhanden",
    "already_exists": "Bereits vorhanden",
    "network_retry": "Verbindungsfehler. Erneut versuchen.",
    "select_items": "Wähle mindestens ein Produkt aus",
    "server_offline": "Serververbindung unterbrochen",
    "server_restored": "Serververbindung wiederhergestellt",
    "server_retry": "Erneut versuchen",
    "unknown": "Unbekannter Fehler",
    "prefix": "Fehler",
    "no_inventory_entry": "Kein Inventareintrag gefunden",
    "offline_title": "Keine Verbindung",
    "offline_subtitle": "Die App kann den Server nicht erreichen. Überprüfe deine WLAN-Verbindung.",
    "offline_checking": "Verbindung prüfen…",
    "offline_restored": "Verbindung wiederhergestellt!",
    "offline_continue": "Im Offline-Modus fortfahren",
    "offline_reading_cache": "Lese aus lokalem Cache",
    "offline_ops_pending": "{n} Aktionen ausstehend",
    "offline_synced": "{n} Aktionen synchronisiert",
    "offline_ai_disabled": "Offline nicht verfügbar",
    "offline_cache_ready": "Offline — {n} Produkte im Cache",
    "copy_failed": "Kopieren in die Zwischenablage fehlgeschlagen",
    "invalid_quantity": "Ungültige Menge"
  },
  "confirm_placeholder_search": null,
  "confirm": {
    "remove_item": "Möchtest du dieses Produkt wirklich aus dem Bestand entfernen?",
    "kiosk_exit": "Kioskmodus verlassen?",
    "cancel": "Abbrechen",
    "proceed": "Bestätigen",
    "discard_one": "1 Stück wegwerfen"
  },
  "location": {
    "dispensa": "Vorratskammer",
    "frigo": "Kühlschrank",
    "freezer": "Gefrierschrank"
  },
  "edit": {
    "title": "{name} bearbeiten",
    "unknown_hint": "Produktname und Informationen eingeben",
    "label_name": "🏷️ Produktname",
    "choose_location_title": "Welchen Ort?",
    "choose_location_hint": "Wähle den zu bearbeitenden Ort:",
    "confirm_large_qty": "Du setzt die Menge auf {qty} {unit}. Das scheint ungewöhnlich hoch zu sein. Bestätigen?"
  },
  "screensaver": {
    "recipe_btn": "Rezepte",
    "scan_btn": "Produkt scannen"
  },
  "days": {
    "mon": "Montag",
    "tue": "Dienstag",
    "wed": "Mittwoch",
    "thu": "Donnerstag",
    "fri": "Freitag",
    "sat": "Samstag",
    "sun": "Sonntag",
    "mon_short": "Mo",
    "tue_short": "Di",
    "wed_short": "Mi",
    "thu_short": "Do",
    "fri_short": "Fr",
    "sat_short": "Sa",
    "sun_short": "So"
  },
  "meal_types": {
    "lunch": "Mittagessen",
    "dinner": "Abendessen",
    "colazione": "Frühstück",
    "merenda": "Nachmittagssnack",
    "dolce": "Dessert",
    "succo": "Fruchtsaft",
    "pranzo": "Mittagessen",
    "cena": "Abendessen"
  },
  "scale": {
    "status_connected": "Waage verbunden",
    "status_searching": "Gateway verbunden, warte auf Waage…",
    "status_disconnected": "Waagen-Gateway nicht erreichbar",
    "status_error": "Verbindungsfehler zum Gateway",
    "not_connected": "Waagen-Gateway nicht verbunden",
    "read_btn": "⚖️ Von Waage lesen",
    "reading_title": "Waage lesen",
    "place_on_scale": "Produkt auf die Waage legen…",
    "waiting_stable": "Das Gewicht wird automatisch erfasst, wenn die Messung stabil ist.",
    "no_url": "Gateway-URL eingeben",
    "testing": "⏳ Verbindung wird getestet…",
    "connected_ok": "Gateway-Verbindung erfolgreich!",
    "timeout": "Timeout: keine Antwort vom Gateway",
    "error_connect": "Verbindung zum Gateway nicht möglich",
    "tab": "Smart-Waage",
    "low_weight": "Gewicht < 10 g · manuell eingeben\n(Auto-Erkennung erfordert mind. 10 g)",
    "density_hint": "(Dichte {density} g/ml)",
    "ml_hint": "(wird in ml umgerechnet)",
    "weight_detected": "Gewicht erkannt — 10s Stabilität abwarten…",
    "weight_too_low": "Gewicht zu niedrig — warten…",
    "stable": "✓ Stabil",
    "auto_confirm": "✅ {val} {unit} — Auto-Bestätigung in 5s (tippen zum Abbrechen)",
    "cancelled_replace": "Abgebrochen — lege die Zutat wieder auf die Waage, um fortzufahren"
  },
  "prediction": {
    "expected_qty": "Erwartet: {expected} {unit}",
    "actual_qty": "Aktuell: {actual} {unit}",
    "check_suggestion": "Überprüfe oder wiege die Restmenge"
  },
  "date": {
    "today": "📅 Heute",
    "yesterday": "📅 Gestern"
  },
  "scanner": {
    "title_barcode": "🔖 Barcode scannen",
    "barcode_hint": "Produktbarcode einrahmen",
    "barcode_manual_placeholder": "Oder manuell eingeben...",
    "barcode_use_btn": "✅ Diesen Code verwenden",
    "ai_identifying": "🤖 Produkt wird erkannt...",
    "ai_analyzing": "🤖 KI-Analyse läuft...",
    "product_label_hint": "Produktetikett einrahmen",
    "expiry_label_hint": "Ablaufdatum auf dem Produkt einrahmen",
    "capture_btn": "📸 Aufnehmen",
    "capture_photo_btn": "📸 Foto aufnehmen",
    "retake_btn": "🔄 Erneut aufnehmen",
    "camera_error_hint": "Stelle sicher, dass du HTTPS verwendest und Kameraberechtigungen erteilt hast.<br>Du kannst den Barcode manuell eingeben oder die KI-Identifikation verwenden.",
    "no_barcode": "Kein Barcode",
    "save_new_btn": "🆕 Keines davon — als neu speichern",
    "expiry_found": "Datum gefunden",
    "expiry_read_fail": "Datum konnte nicht gelesen werden.",
    "expiry_raw_label": "Erkannt"
  },
  "lowstock": {
    "title": "⚠️ Wird knapp!",
    "message": "{name} wird knapp — nur noch {qty} übrig.",
    "question": "Möchtest du es zur Einkaufsliste hinzufügen?",
    "yes": "🛒 Ja, zu Bring! hinzufügen",
    "no": "Nein, passt für jetzt"
  },
  "move": {
    "title": "📦 Den Rest bewegen?",
    "question": "Möchtest du {thing} von {name} an einen anderen Ort bewegen?",
    "question_short": "Möchtest du {thing} an einen anderen Ort bewegen?",
    "thing_opened": "die offene Packung",
    "thing_rest": "den Rest",
    "stay_btn": "Nein, bleibt in {location}",
    "moved_toast": "📦 Offene Packung bewegt nach {location}",
    "vacuum_restore": "Vakuum wiederherstellen",
    "vacuum_seal_rest": "Rest vakuumieren",
    "moved_simple": "📦 Nach {location} verschoben"
  },
  "nova": {
    "1": "Unverarbeitet",
    "2": "Kulinarische Zutat",
    "3": "Verarbeitet",
    "4": "Hochverarbeitet"
  },
  "meal_plan_types": {
    "pasta": "Pasta",
    "riso": "Reis",
    "carne": "Fleisch",
    "pesce": "Fisch",
    "legumi": "Hülsenfrüchte",
    "uova": "Eier",
    "formaggio": "Käse",
    "pizza": "Pizza",
    "affettati": "Aufschnitt",
    "verdure": "Gemüse",
    "zuppa": "Suppe",
    "insalata": "Salat",
    "pane": "Brot/Sandwich",
    "dolce": "Dessert",
    "libero": "Frei"
  },
  "meal_sub": {
    "dolce_torta": "Kuchen",
    "dolce_crema": "Creme / Pudding",
    "dolce_crumble": "Crumble / Tarte",
    "dolce_biscotti": "Kekse / Gebäck",
    "dolce_frutta": "Fruchtdessert",
    "succo_dolce": "Süß / Fruchtig",
    "succo_energizzante": "Energetisierend",
    "succo_detox": "Detox / Grün",
    "succo_rinfrescante": "Erfrischend",
    "succo_vitaminico": "Vitamin / Zitrus"
  },
  "meal_plan": {
    "reset_success": "Wochenplan zurückgesetzt",
    "not_available": "nicht im Vorrat verfügbar",
    "suggested_by": "vom Wochenplan vorgeschlagen"
  },
  "nutrition": {
    "title": "🥗 Ernährungsanalyse",
    "score_excellent": "😄 Ausgezeichnet",
    "score_good": "🙂 Gut",
    "score_improve": "😬 Verbesserbar",
    "label_health": "🌿 Gesundheit",
    "label_variety": "🎨 Vielfalt",
    "label_fresh": "❄️ Frisch",
    "source": "Basierend auf {n} Produkten in deiner Vorratskammer · EverShelf",
    "products_count": "Produkte",
    "today_title": "🥗 Deine Vorratskammer heute",
    "products_n": "{n} Produkte",
    "macros_title": "Geschätzte Makronährstoffe",
    "macros_proteins": "Proteine",
    "macros_carbs": "Kohlenhydrate",
    "macros_fat": "Fett",
    "macros_fiber": "Ballaststoffe",
    "macros_source": "Schätzung basierend auf {n} Vorratsprodukten"
  },
  "facts": {
    "greeting_morning": "Guten Morgen",
    "greeting_afternoon": "Guten Tag",
    "greeting_evening": "Guten Abend",
    "pantry_waiting": "{greeting}! Deine Vorratskammer wartet.",
    "expired_one": "Du hast 1 abgelaufenes Produkt in der Vorratskammer. Bitte überprüfen!",
    "expired_many": "Du hast {n} abgelaufene Produkte in der Vorratskammer. Bitte überprüfen!",
    "expired_list": "Abgelaufene Produkte: {names}",
    "expired_list_more": "und {n} weitere",
    "freezer_expired_ok": "{name} ist abgelaufen, aber im Gefrierschrank könnte es noch gut sein! Überprüfe es.",
    "freezer_expired_old": "{name} im Gefrierschrank ist zu lange abgelaufen. Besser wegwerfen.",
    "fridge_expired_one": "Du hast 1 abgelaufenes Produkt im Kühlschrank!",
    "fridge_expired_many": "Du hast {n} abgelaufene Produkte im Kühlschrank!",
    "expiring_today": "{name} läuft heute ab! Sofort verbrauchen.",
    "expiring_tomorrow": "{name} läuft morgen ab. Denk daran!",
    "expiring_days": "{name} läuft in {days} Tagen ab.",
    "expiring_many": "Du hast {n} Produkte, die bald ablaufen.",
    "expiring_this_week": "{n} Produkte laufen diese Woche ab. Plane deine Mahlzeiten entsprechend!",
    "expiring_item_loc": "{name} ({loc}) läuft in {days} {dayslabel} ab.",
    "expiring_this_month": "{n} Produkte laufen diesen Monat ab.",
    "shopping_add": "Zur Liste: {names} 🛒",
    "shopping_more": "und {n} weitere",
    "shopping_empty": "Einkaufsliste leer. Alles aufgefüllt! ✅",
    "in_fridge": "Im Kühlschrank: {name}.",
    "in_freezer": "Im Gefrierschrank: {name}. Vergiss es nicht!",
    "top_category": "Häufigste Kategorie: {icon} {cat} mit {n} Produkten.",
    "cat_meat": "Du hast {n} Fleischprodukte. 🥩",
    "cat_dairy": "Du hast {n} Milchprodukte zu Hause. 🥛",
    "cat_veggies": "Du hast {n} Gemüsesorten. Super für die Gesundheit! 🥬",
    "cat_fruit": "Du hast {n} Obstsorten. 🍎",
    "cat_drinks": "Du hast {n} Getränke verfügbar. 🥤",
    "cat_frozen": "Du hast {n} Tiefkühlprodukte. ❄️",
    "cat_pasta": "Du hast {n} Nudelsorten. 🍝 Wie wäre es mit einer Carbonara?",
    "cat_canned": "Du hast {n} Konserven in der Vorratskammer. 🥫",
    "cat_snacks": "Du hast {n} Snacks. Widerstand leisten! 🍪",
    "cat_condiments": "Du hast {n} Gewürze zur Verfügung. 🧂",
    "item_random": "Wusstest du? Du hast {name} in {loc}.",
    "item_qty": "{name}: du hast {qty}.",
    "no_expiry_count": "{n} Produkte haben kein Ablaufdatum.",
    "furthest_expiry": "Das Produkt mit dem spätesten Ablaufdatum ist {name}: {months} Monate.",
    "high_qty": "Du hast einen guten Vorrat von {name}: {qty}!",
    "low_qty_item": "{name} geht zur Neige. Auf die Einkaufsliste?",
    "low_qty_count": "{n} Produkte sind fast aufgebraucht.",
    "morning_bread": "Guten Morgen! Du hast Brot für das Frühstück. 🍞",
    "morning_milk": "Gibt es Milch im Kühlschrank für den Cappuccino? ☕🥛",
    "morning_fruit": "Guten Morgen! Frisches Obst ist ein guter Start. 🍎",
    "noon_pasta": "Mittagszeit… Wie wäre es mit Pasta? 🍝",
    "noon_salad": "Ein frischer Salat zum Mittagessen? Du hast {n} Gemüsesorten! 🥗",
    "evening_meat": "Zum Abendessen könntest du das Fleisch verwenden. 🥩",
    "evening_fish": "Wie wäre es mit Fisch zum Abendessen? 🐟",
    "evening_expiring": "Du hast {n} Produkte, die diese Woche ablaufen — heute Abend verwenden!",
    "night_reminder": "Gute Nacht! Denk morgen daran zu verwenden: {names}.",
    "weekly_balance": "Wochenbilanz: +{in} hinzugefügt, −{out} verbraucht.",
    "weekly_added": "Du hast diese Woche {n} Produkte hinzugefügt.",
    "weekly_consumed": "Du hast diese Woche {n} Produkte verbraucht. Gut gemacht!",
    "tip_freezer": "💡 Tiefkühlprodukte halten viel länger als das Ablaufdatum.",
    "tip_bread": "💡 Gefrorenes Brot behält seinen Duft wochenlang.",
    "tip_fifo": "💡 Um Verschwendung zu vermeiden, zuerst Produkte mit nahem Ablaufdatum verwenden (FIFO).",
    "tip_meat": "💡 Fleisch im Gefrierschrank hält bis zu 6 Monate problemlos.",
    "tip_no_refreeze": "💡 Niemals ein aufgetautes Lebensmittel wieder einfrieren. Sofort zubereiten!",
    "tip_fridge": "💡 Ein ordentlicher Kühlschrank spart Zeit und Geld.",
    "tip_canned": "💡 Geöffnete Konserven in den Kühlschrank und in wenigen Tagen verbrauchen.",
    "top_brand": "Die häufigste Marke in deiner Vorratskammer ist {brand} mit {n} Produkten.",
    "combo_pasta": "Du hast Pasta und Gewürze: bereit für ein Erstgericht! 🍝",
    "combo_sandwich": "Brot und Fleisch: ein schnelles Sandwich ist immer eine gute Idee! 🥪",
    "combo_balanced": "Gemüse und Fleisch: du hast alles für eine ausgewogene Mahlzeit! 🥗🥩",
    "pantry_empty": "Die Vorratskammer ist leer! Zeit zum Einkaufen. 🛒",
    "pantry_empty_scan": "Keine Produkte erfasst. Scanne etwas um zu beginnen!",
    "location_distribution": "Verteilung: {parts}",
    "day": "Tag",
    "days": "Tage"
  },
  "kiosk_session": {
    "first_item": "Erstes Produkt: {name}!",
    "items_two_four": "{n} Artikel — Trägheit überwinden 🚀",
    "items_five_nine": "{n} Artikel — super Tempo! 💪",
    "items_ten_twenty": "{n} Artikel — fast Rekord 🏆",
    "items_twenty_plus": "{n} Artikel — epischer Einkauf! 🛒🔥",
    "duplicates_one": "1 Duplikat (gleiches Produkt zweimal)",
    "duplicates_many": "{n} Duplikate (mehrfach genommen)",
    "top_category": "Top-Kategorie: {cat} ({count}×)",
    "items_fallback": "{n} Artikel hinzugefügt"
  },
  "kiosk": {
    "check_btn": "🔍 Nach Updates suchen",
    "checking": "⏳ Prüfe…",
    "error_check": "Fehler bei der Update-Prüfung",
    "error_start_install": "Fehler beim Starten der Installation",
    "version_installed": "Installiert: {v}",
    "update_available": "⬆️ Neue Version verfügbar: <strong>{latest}</strong> (installiert: {current})",
    "up_to_date": "✅ Du bist auf dem neuesten Stand — Version <strong>{v}</strong>",
    "too_old": "⚠️ Der installierte Kiosk ist zu alt für die automatische Update-Prüfung.<br>Drücke den Knopf unten, um die neue Version direkt herunterzuladen.",
    "manual_install": "⚠️ Dieser Kiosk unterstützt keine automatische Installation.<br><strong>Manuelle Vorgehensweise:</strong><br>1. Kiosk verlassen (✕ oben links)<br>2. EverShelf Kiosk App deinstallieren<br>3. Neue APK von GitHub herunterladen und installieren:",
    "starting_download": "⏳ Download startet…",
    "install_btn": "⬇️ Update installieren",
    "exit_title": "Kiosk beenden",
    "refresh_title": "Seite aktualisieren"
  },
  "update": {
    "new_version": "Neue Version",
    "btn": "Aktualisieren"
  },
  "gemini": {
    "chat_title": "Mit Gemini chatten",
    "not_configured": "🤖 Gemini nicht konfiguriert — GEMINI_API_KEY in den Einstellungen setzen"
  },
  "appliances": {
    "empty": "Kein Haushaltsgerät hinzugefügt"
  },
  "about": {
    "title": "Über",
    "version": "Version",
    "report_bug": "Fehler melden",
    "report_bug_hint": "Etwas funktioniert nicht? Sende uns direkt aus der App eine Meldung.",
    "report_bug_modal_title": "Fehler melden",
    "report_type_bug": "Fehler",
    "report_type_feature": "Funktion",
    "report_type_question": "Frage",
    "report_field_title": "Titel",
    "report_field_title_ph": "Kurze Beschreibung des Problems",
    "report_field_desc": "Beschreibung",
    "report_field_desc_ph": "Problem detailliert beschreiben…",
    "report_field_steps": "Schritte zum Reproduzieren (optional)",
    "report_field_steps_ph": "1. Gehe zu…\n2. Tippe auf…\n3. Fehler erscheint…",
    "report_auto_info": "Automatisch beigefügt: Version {version}, Sprache {lang}.",
    "report_send_btn": "Bericht senden",
    "report_bug_sending": "Wird gesendet…",
    "report_bug_sent": "Bericht gesendet — danke!",
    "report_bug_error": "Bericht konnte nicht gesendet werden. Verbindung prüfen.",
    "changelog": "Changelog",
    "github": "GitHub-Repository"
  },
  "export": {
    "title": "Inventar exportieren",
    "hint": "Lade das aktuelle Inventar als CSV herunter oder öffne die druckfertige Version (PDF).",
    "btn_csv": "CSV herunterladen",
    "btn_pdf": "PDF / Drucken",
    "btn_title": "Exportieren"
  },
  "startup": {
    "connecting": "Serververbindung wird hergestellt...",
    "check_php_memory": "PHP-Speicher",
    "check_php_timeout": "PHP-Timeout",
    "check_php_upload": "PHP-Upload",
    "check_data_dir": "Datenverzeichnis",
    "check_rate_limits": "Rate-Limits-Verzeichnis",
    "check_backups": "Backup-Verzeichnis",
    "check_write_test": "Schreibtest",
    "check_disk_space": "Speicherplatz",
    "check_db_legacy": "Legacy-DB (dispensa.db)",
    "check_db_connect": "Datenbankverbindung",
    "check_db_tables": "Datenbanktabellen",
    "check_db_integrity": "Datenbankintegrität",
    "check_db_wal": "WAL-Modus",
    "check_db_size": "Datenbankgröße",
    "check_db_rows": "Inventardaten",
    "check_env": ".env-Datei",
    "check_gemini": "Gemini-AI-Schlüssel",
    "check_bring_creds": "Bring!-Anmeldedaten",
    "check_bring_token": "Bring!-Token",
    "check_tts": "Text-to-Speech-URL",
    "check_scale": "Waagen-Gateway",
    "check_curl_ssl": "cURL-SSL",
    "check_internet": "Internetverbindung",
    "fresh_install": "Neuinstallation",
    "warnings_found": "Warnungen",
    "all_ok": "System OK",
    "critical_error_short": "Kritischer Fehler",
    "critical_error": "Kritischer Fehler: Die App kann nicht gestartet werden. Prüfe die Serverlogs.",
    "critical_error_intro": "Die App kann aufgrund folgender Probleme nicht gestartet werden:",
    "error_network": "Server nicht erreichbar.",
    "error_network_detail": "Der Browser kann den PHP-Server nicht erreichen.\n\nMögliche Ursachen:\n• Apache/PHP-Server läuft nicht\n• Netzwerk- oder Firewall-Problem\n• Falsche App-URL\n\nBitte Server starten und erneut versuchen.",
    "retry": "Erneut versuchen",
    "syncing_local": "Lokale Daten synchronisieren...",
    "sync_done": "Lokale Daten aktualisiert",
    "token_required": "API-Token erforderlich",
    "token_autoconfig": "Zugriff wird konfiguriert...",
    "token_prompt_title": "🔒 API-Token",
    "token_prompt_hint": "Geben Sie den API_TOKEN-Wert aus der .env-Datei des Servers ein.",
    "token_prompt_btn": "Weiter"
  },
  "stats_monthly": {
    "title": "Monatsstatistik",
    "consumed": "Produkte verbraucht",
    "trend_up": "+{pct}% vs. {prev}",
    "trend_down": "-{pct}% vs. {prev}",
    "trend_same": "gleiches Tempo wie letzten Monat",
    "added": "hinzugefügt",
    "wasted": "verschwendet",
    "top_used": "meistbenutzt",
    "top_cats": "Hauptkategorien",
    "source": "Transaktionsverlauf · aktueller Monat"
  },
  "time": {
    "just_now": "gerade eben",
    "seconds_ago": "vor {n}s",
    "minutes_ago": "vor {n} min",
    "hours_ago": "vor {n} h",
    "days_ago": "vor {n} T"
  }
}
