Improve scan flow, AI UX, expiry history, and shopping sync.
Manual AI identification replaces auto-fallback; add duplicate-add guard, AI product match UI, ZBar/Tesseract offline scanning, expiry averages from last 3 insertions, family sibling hints, and missing i18n keys. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
+38
-7
@@ -32,6 +32,7 @@
|
||||
"reset_default": "↺ Standard wiederherstellen",
|
||||
"save_info": "💾 Info speichern",
|
||||
"retry": "🔄 Erneut versuchen",
|
||||
"next": "Weiter →",
|
||||
"yes_short": "Ja",
|
||||
"no_short": "Nein"
|
||||
},
|
||||
@@ -199,6 +200,7 @@
|
||||
"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",
|
||||
@@ -234,21 +236,36 @@
|
||||
"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": "Mogliche Treffer in der Vorratskammer",
|
||||
"ai_match_none": "Keine ahnlichen Produkte in der Vorratskammer gefunden.",
|
||||
"ai_match_use_btn": "Dieses nutzen",
|
||||
"ai_match_add_btn": "\"{name}\" hinzufugen",
|
||||
"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!"
|
||||
},
|
||||
@@ -289,8 +306,9 @@
|
||||
"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 aus {n} früheren Einträgen",
|
||||
"history_badge_tip": "Durchschnitt der letzten {n} Einträge — wird bei jedem Kauf aktualisiert",
|
||||
"vacuum_question": "Vakuumiert?",
|
||||
"vacuum_saved": "🔒 Als vakuumiert gespeichert"
|
||||
},
|
||||
@@ -343,6 +361,8 @@
|
||||
"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",
|
||||
@@ -375,7 +395,7 @@
|
||||
"labels_label": "Etiketten",
|
||||
"select_variant": "Genaue Variante auswählen oder KI-Daten nutzen:",
|
||||
"history_badge": "📊 Verlauf",
|
||||
"from_history": " (aus Verlauf)"
|
||||
"from_history": " (Ø letzte 3)"
|
||||
},
|
||||
"products": {
|
||||
"title": "📦 Alle Produkte",
|
||||
@@ -499,6 +519,16 @@
|
||||
"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_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...",
|
||||
@@ -715,7 +745,8 @@
|
||||
"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_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",
|
||||
|
||||
Reference in New Issue
Block a user