{ "app": { "name": "EverShelf", "loading": "Caricamento..." }, "nav": { "title": "EverShelf", "home": "Home", "inventory": "Dispensa", "recipes": "Ricette", "shopping": "Spesa", "log": "Storico" }, "btn": { "back": "← Indietro", "save": "💾 Salva", "cancel": "✕ Annulla", "close": "Chiudi", "add": "✅ Aggiungi", "delete": "Elimina", "edit": "✏️ Modifica", "search": "🔍 Cerca", "go": "✅ Vai", "toggle_password": "👁️ Mostra/Nascondi", "load_more": "Carica altri...", "save_config": "💾 Salva Configurazione", "save_product": "💾 Salva Prodotto", "restart": "↺ Ricomincia", "reset_default": "↺ Ripristina default", "save_info": "💾 Salva informazioni", "retry": "🔄 Riprova" }, "locations": { "dispensa": "Dispensa", "frigo": "Frigo", "freezer": "Freezer", "altro": "Altro" }, "categories": { "latticini": "Latticini", "carne": "Carne", "pesce": "Pesce", "frutta": "Frutta", "verdura": "Verdura", "pasta": "Pasta & Riso", "pane": "Pane & Forno", "surgelati": "Surgelati", "bevande": "Bevande", "condimenti": "Condimenti", "snack": "Snack & Dolci", "conserve": "Conserve", "cereali": "Cereali & Legumi", "igiene": "Igiene", "pulizia": "Pulizia Casa", "altro": "Altro", "select": "-- Seleziona --" }, "units": { "pz": "pz", "conf": "conf", "g": "g", "ml": "ml", "pieces": "Pezzi", "grams": "Grammi", "box": "Confezione", "boxes": "Confezioni" }, "shopping_sections": { "frutta_verdura": "Frutta & Verdura", "carne_pesce": "Carne & Pesce", "latticini": "Latticini & Fresco", "pane_dolci": "Pane & Dolci", "pasta": "Pasta & Cereali", "conserve": "Conserve & Salse", "surgelati": "Surgelati", "bevande": "Bevande", "pulizia_igiene": "Pulizia & Igiene", "altro": "Altro" }, "dashboard": { "expired_title": "🚫 Scaduti", "expiring_title": "⏰ Prossime Scadenze", "stats_period": "📊 Ultimi 30 giorni", "opened_title": "📦 Prodotti Aperti", "review_title": "🔍 Da revisionare", "review_hint": "Quantità che sembrano anomale. Conferma se corrette o modifica.", "quick_recipe": "🍳 Ricetta veloce con prodotti in scadenza", "banner_review_title": "Quantità anomala", "banner_review_action_ok": "È corretto", "banner_review_action_finish": "🗑️ È finito tutto", "banner_review_action_edit": "Correggi", "banner_review_action_weigh": "Pesa", "banner_review_dismiss": "Ignora", "banner_prediction_title": "Consumo anomalo", "banner_prediction_hint": "Secondo le previsioni, questa quantità non corrisponde al consumo previsto.", "banner_prediction_action_confirm": "Confermo la quantità di {qty} {unit}", "banner_prediction_action_weigh": "Pesa ora", "banner_prediction_action_edit": "Aggiorna quantità", "banner_expired_title": "Prodotto scaduto", "banner_expired_today": "Scaduto oggi", "banner_expired_days": "Scaduto da {days} giorni", "banner_expired_action_use": "Usa comunque", "banner_expired_action_throw": "L'ho buttato", "banner_expired_action_edit": "Correggi data", "banner_anomaly_action_edit": "Correggi inventario", "banner_anomaly_action_dismiss": "La quantità è giusta", "banner_expiring_title": "In scadenza", "banner_expiring_today": "Scade oggi!", "banner_expiring_tomorrow": "Scade domani", "banner_expiring_days": "Scade tra {days} giorni", "banner_expiring_action_use": "Usa ora", "banner_finished_title": "è finito?", "banner_finished_detail": "Ho registrato che {name} ha toccato quota zero. È davvero finito o hai ancora delle scorte?", "banner_finished_action_yes": "Sì, è finito", "banner_finished_action_no": "No, ne ho ancora", "banner_review_unusual_pkg_title": "Confezione insolita", "banner_review_unusual_pkg_detail": "Hai impostato una confezione da {qty} {unit} — la dimensione sembra molto alta. Controlla se è corretta o modifica.", "banner_review_low_qty_title": "Quantità molto bassa", "banner_review_low_qty_detail": "Hai solo {qty} in inventario — sembra poco, potrebbe essere un errore. Conferma se è corretto.", "banner_review_high_qty_title": "Quantità insolitamente alta", "banner_review_high_qty_detail": "Hai {qty} in inventario — la cifra sembra molto alta. Conferma se è corretto o correggi.", "banner_prediction_rate_day": "Media ~{n} {unit}/giorno", "banner_prediction_rate_week": "Media ~{n} {unit}/settimana", "banner_prediction_days_ago": "{n} giorni fa hai rifornito", "banner_prediction_more": "mi aspettavo {expected} {unit}{time}, ne hai invece {actual} {unit}. Hai aggiunto scorte senza registrarle?", "banner_prediction_less": "mi aspettavo {expected} {unit}{time}, ne hai solo {actual} {unit}. Hai consumato di più del solito?", "banner_finished_zero": "L'inventario segna zero, ma i movimenti registrati dicono che non dovrebbe essere finito.", "banner_finished_expected": "Secondo le registrazioni dovresti averne ancora {qty} {unit}.", "banner_finished_check": "Puoi controllare?", "banner_anomaly_phantom_title": "hai più scorte del previsto", "banner_anomaly_phantom_detail": "L'inventario segna {inv_qty} {unit}, ma in base alle registrazioni ne dovresti avere solo {expected_qty} {unit}. Hai aggiunto scorte senza registrarle?", "banner_anomaly_untracked_title": "scorte non registrate come entrata", "banner_anomaly_untracked_detail": "Hai {inv_qty} {unit} in inventario, ma le uscite registrate superano le entrate — le scorte iniziali probabilmente non sono mai state aggiunte come entrata. Puoi correggere la quantità o registrare le entrate mancanti.", "banner_anomaly_ghost_title": "hai meno scorte del previsto", "banner_anomaly_ghost_detail": "In base alle operazioni registrate dovresti avere {expected_qty} {unit} di {name}, ma l'inventario mostra solo {inv_qty} {unit}. Hai prelevato senza registrarlo?", "consumed": "Consumati: {n} ({pct}%)", "wasted": "Buttati: {n} ({pct}%)", "more_opened": "e altri {n} prodotti aperti...", "banner_expired_detail": "{when} · hai ancora {qty}." }, "inventory": { "title": "Dispensa", "filter_all": "Tutti", "search_placeholder": "🔍 Cerca prodotto...", "recent_title": "🕐 Ultimi usati", "popular_title": "⭐ Più usati", "empty": "Nessun prodotto qui.\nScansiona un prodotto per aggiungerlo!", "no_items_found": "Nessuna voce di inventario trovata", "qty_remainder_suffix": "rimasti", "vacuum_badge": "🫙 Sotto vuoto", "opened_badge": "📭 Aperto", "label_expiry": "📅 Scadenza", "label_storage": "🫙 Conservazione", "label_status": "📭 Stato", "opened_since": "Aperto dal {date}", "label_position": "📍 Posizione", "label_quantity": "📦 Quantità", "label_added": "📅 Aggiunto", "empty_text": "Nessun prodotto qui.
Scansiona un prodotto per aggiungerlo!", "empty_db": "Nessun prodotto nel database.
Scansiona un prodotto per iniziare!" }, "scan": { "title": "Scansiona Prodotto", "mode_shopping": "🛒 Modalità Spesa", "mode_shopping_end": "✅ Fine spesa", "zoom": "Zoom", "barcode_placeholder": "Inserisci codice a barre...", "quick_name_divider": "oppure scrivi il nome", "quick_name_placeholder": "Es: Mele, Zucchine, Pane...", "manual_entry": "✏️ Inserimento Manuale", "ai_identify": "🤖 Identifica con AI", "hint": "Scansiona il barcode, scrivi il nome del prodotto, oppure usa l'AI per identificarlo", "debug_toggle": "🐛 Debug Log", "barcode_acquired": "🔖 Barcode acquisito: {code}", "scan_barcode": "🔖 Scansiona Barcode", "create_named": "Crea {name}", "new_without_barcode": "Nuovo prodotto senza barcode" }, "action": { "title": "Cosa vuoi fare?", "add_btn": "📥 AGGIUNGI", "add_sub": "in dispensa/frigo", "use_btn": "📤 USA / CONSUMA", "use_sub": "dalla dispensa/frigo", "have_title": "📦 Ce l'hai già!", "add_more_sub": "altra quantità", "use_qty_sub": "quanto ne hai usato", "throw_btn": "🗑️ BUTTA", "throw_sub": "butta il prodotto", "edit_sub": "scadenza, luogo…" }, "add": { "title": "Aggiungi alla Dispensa", "location_label": "📍 Dove lo metti?", "quantity_label": "📦 Quantità", "conf_size_label": "📦 Ogni confezione contiene:", "conf_size_placeholder": "es. 300", "vacuum_label": "🫙 Sotto vuoto", "vacuum_hint": "La scadenza verrà estesa automaticamente", "submit": "✅ Aggiungi", "purchase_type_label": "🛒 Questo prodotto è...", "new_btn": "🆕 Appena comprato", "existing_btn": "📦 Ce l'avevo già", "remaining_label": "📦 Quantità rimasta", "remaining_hint": "Quanto è rimasto approssimativamente?", "remaining_full": "🟢 Pieno", "remaining_half": "🟠 Metà", "estimated_expiry": "Scadenza stimata:", "suffix_freezer": "(freezer)", "suffix_vacuum": "(sotto vuoto)", "hint_modify": "📝 Puoi modificare la data o scansionarla con la fotocamera", "scan_expiry_title": "📷 Scansiona Data Scadenza", "product_added": "✅ {name} aggiunto!{qty}", "suffix_freezer_vacuum": "(freezer + sotto vuoto)" }, "use": { "title": "Usa / Consuma", "location_label": "📍 Da dove?", "quantity_label": "Quanto hai usato?", "change": "cambia", "partial_hint": "Oppure specifica la quantità usata:", "partial_piece_hint": "Hai usato solo una parte?", "piece": "pezzo", "one_whole": "1 intero", "use_all": "🗑️ Usato TUTTO / Finito", "submit": "📤 Usa questa quantità", "available": "📦 Disponibile:", "opened_badge": "APERTO", "not_in_inventory": "⚠️ Prodotto non presente nell'inventario.", "expiry_warning": "⚠️ Usa prima quella{loc} che scade il {date} — {when}!", "throw_title": "🗑️ Butta Prodotto", "throw_all": "🗑️ Butta TUTTO ({qty})", "throw_qty_label": "Quanto butti?", "throw_qty_hint": "oppure specifica la quantità:", "throw_partial_btn": "🗑️ Butta questa quantità", "when_expired": "scaduta da {n} giorni", "when_today": "scade oggi", "when_tomorrow": "scade domani", "when_days": "scade tra {n} giorni", "toast_used": "📤 Usato {qty} di {name}", "toast_bring": "🛒 Prodotto finito → aggiunto a Bring!", "toast_opened_finished": "🔓 Confezione aperta di {name} finita!", "disambiguation_hint": "Cosa intendi con \"finito tutto\"?", "disambiguation_all": "🗑️ Finito TUTTO ({qty})", "error_exceeds_stock": "⚠️ Non puoi usare più di quanto hai disponibile!", "use_all_confirm_title": "✅ Finisci tutto", "use_all_confirm_msg": "Conferma che hai finito tutto il prodotto:", "use_all_confirm_btn": "✅ Sì, finito", "throw_all_confirm_title": "🗑️ Butta tutto", "throw_all_confirm_msg": "Vuoi davvero buttare via tutto il prodotto?", "throw_all_confirm_btn": "🗑️ Sì, butta" }, "product": { "title_new": "Nuovo Prodotto", "title_edit": "Modifica Prodotto", "ai_fill": "📷 Scatta foto e identifica con AI", "ai_fill_hint": "L'AI compilerà automaticamente i campi del prodotto", "name_label": "🏷️ Nome Prodotto *", "name_placeholder": "Es: Latte intero, Pasta penne rigate...", "brand_label": "🏢 Marca", "brand_placeholder": "Es: Barilla, Granarolo, Mutti...", "category_label": "📂 Categoria", "unit_label": "📏 Unità di misura", "default_qty_label": "🔢 Quantità default", "conf_size_label": "📦 Ogni confezione contiene:", "conf_size_placeholder": "es. 300", "notes_label": "📝 Note", "notes_placeholder": "Es: senza lattosio, bio, conservare in frigo dopo apertura...", "barcode_label": "🔖 Barcode", "barcode_placeholder": "Codice a barre (se disponibile)", "barcode_hint": "⚠️ Aggiungi il barcode così al prossimo acquisto basta scansionarlo!", "submit": "💾 Salva Prodotto", "name_required": "Inserisci il nome del prodotto", "conf_size_required": "Specifica il contenuto di ogni confezione", "expiry_estimated": "Scadenza stimata:", "scan_expiry": "Scansiona data scadenza", "expiry_hint": "📝 Puoi modificare la data o scansionarla con la fotocamera", "add_batch": "📦 + Lotto con scadenza diversa", "package_info": "📦 Confezione: {info}", "edit_catalog": "⚙️ Modifica scheda prodotto (nome, marca, categoria…)", "not_recognized": "⚠️ Prodotto non riconosciuto", "edit_info": "✏️ Modifica informazioni", "modify_details": "MODIFICA\nscadenza, luogo…", "already_in_pantry": "📋 Già in dispensa", "no_barcode": "Senza barcode" }, "products": { "title": "📦 Tutti i Prodotti", "search_placeholder": "🔍 Cerca prodotto...", "empty": "Nessun prodotto nel database.\nScansiona un prodotto per iniziare!", "no_category": "Nessun prodotto in questa categoria" }, "recipes": { "title": "🍳 Ricette", "generate": "✨ Genera nuova ricetta", "archive_empty": "Nessuna ricetta salvata. Genera la tua prima ricetta!", "dialog_title": "🍳 Ricetta", "dialog_desc": "Genero una ricetta sana con gli ingredienti in dispensa, dando priorità a quelli in scadenza.", "meal_label": "🕐 Per quale pasto?", "persons_label": "👥 Quante persone?", "meal_type_label": "🎯 Tipo di pasto", "opt_fast": "⚡ Pasto Veloce", "opt_light": "🥗 Poca Fame", "opt_expiry": "⏰ Priorità Scadenze", "opt_healthy": "💚 Extra Salutare", "opt_opened": "📦 Priorità Cose Aperte", "opt_zero_waste": "♻️ Zero Sprechi", "generate_btn": "✨ Genera Ricetta", "loading_msg": "Sto preparando la ricetta...", "start_cooking": "👨‍🍳 Modalità Cucina", "regenerate": "🔄 Generane un'altra", "close_btn": "✅ Chiudi", "ingredients_title": "🧾 Ingredienti", "steps_title": "👨‍🍳 Procedimento", "no_steps": "Nessun procedimento disponibile", "generate_error": "Errore nella generazione", "persons_short": "pers.", "use_ingredient_title": "Usa ingrediente", "recipe_qty_label": "Ricetta", "from_where_label": "Da dove?", "amount_label": "Quanto", "use_amount_btn": "Usa questa quantità", "use_all_btn": "Usa TUTTO / Finito", "packs_label": "Confezioni", "quantity_in_total": "Quantità in {unit} (totale: {total})", "packs_of_have": "Confezioni da {size} (hai {count} conf)", "scale_wait_stable": "Attendi 10s di stabilità per la compilazione automatica…", "ingredient_scaled_toast": "📦 Ingrediente scalato dalla dispensa!", "finished_added_bring_toast": "🛒 Prodotto finito → aggiunto a Bring!", "load_error": "Errore nel caricamento" }, "shopping": { "title": "🛒 Lista della Spesa", "bring_loading": "Connessione a Bring!...", "bring_not_configured": "Bring! non è configurato. Aggiungi email e password nelle impostazioni.", "tab_to_buy": "🛍️ Da comprare", "tab_forecast": "🧠 In previsione", "total_label": "💰 Totale stimato", "section_to_buy": "🛍️ Da comprare", "suggestions_title": "💡 Suggerimenti AI", "suggestions_add": "✅ Aggiungi selezionati a Bring!", "search_prices": "🔍 Cerca tutti i prezzi", "suggest_btn": "🤖 Suggerisci cosa comprare", "smart_title": "🧠 Previsioni intelligenti", "smart_empty": "Nessuna previsione disponibile.
Aggiungi prodotti alla dispensa per ricevere previsioni intelligenti.", "smart_filter_all": "Tutti", "smart_filter_critical": "🔴 Urgenti", "smart_filter_high": "🟠 Presto", "smart_filter_medium": "🟡 Pianifica", "smart_filter_low": "🟢 Previsione", "smart_add": "🛒 Aggiungi selezionati a Bring!", "empty": "Lista della spesa vuota!\nUsa il pulsante sotto per generare suggerimenti.", "already_in_list": "🛒 \"{name}\" già nella lista della spesa", "already_in_list_short": "ℹ️ Già nella lista della spesa", "add_prompt": "Vuoi aggiungerlo alla lista della spesa?", "smart_already": "📊 La spesa intelligente prevede già {name}", "all_searched": "Tutti i prodotti sono già stati cercati. Usa 🔄 per ricercare singoli.", "search_complete": "Ricerca completata: {count} prodotti", "removed_sufficient": "🧹 {removed} prodotto/i con scorte sufficienti rimosso/i dalla lista", "bring_badge": "🛒 Già su Bring!", "add_urgent_toast": "🔴 {n} prodotto/i urgente/i aggiunto/i automaticamente a Bring!", "migration_done": "✅ {migrated} aggiornati, {skipped} già ok", "added_to_bring": "🛒 {n} prodotti aggiunti a Bring!", "added_to_bring_skip": "{n} già presenti", "all_on_bring": "Tutti i prodotti erano già su Bring!", "freq_high": "📈 Uso frequente", "freq_regular": "📊 Uso regolare", "freq_occasional": "📉 Uso occasionale", "out_of_stock": "Esaurito", "scan_toast": "📷 Scansiona: {name}", "empty_category": "Nessun prodotto in questa categoria", "session_empty": "🛒 Nessun prodotto ancora", "urgency_critical": "Urgente", "urgency_high": "Presto", "urgency_medium": "Pianifica", "urgency_low": "Previsione", "urgency_medium_short": "Medio", "urgency_low_short": "Ok", "tag_urgent": "🔴 Urgente", "tag_priority": "⭐ Priorità", "tag_check": "✅ Verificare", "smart_already_predicted": "📊 La spesa intelligente prevede già {name}{urgency}.", "item_removed": "✅ {name} rimosso dalla lista!", "urgency_spec_critical": "⚡ Urgente", "urgency_spec_high": "🟠 Presto", "bring_add_n": "Aggiungi {n} a Bring!", "bring_add_selected": "Aggiungi selezionati a Bring!", "bring_adding": "Aggiunta in corso...", "bring_added_one": "1 prodotto aggiunto a Bring!", "bring_added_many": "{n} prodotti aggiunti a Bring!", "bring_skipped": "({n} già in lista)", "force_sync": "Forza sincronizzazione Bring!", "scan_target_label": "Stai cercando", "scan_target_found": "Trovato! Rimuovi dalla lista", "bring_add_one": "Aggiungi 1 prodotto a Bring!", "bring_add_many": "Aggiungi {n} prodotti a Bring!", "syncing": "Sincronizzazione…", "sync_done": "Sincronizzazione completata", "price_searching": "Cerco...", "search_action": "Ricerca", "open_action": "Apri", "not_found": "Non trovato", "search_price": "Cerca prezzo", "tap_to_scan": "Tocca per scansionare", "tag_title": "Tag", "remove_title": "Rimuovi", "found_count": "{found}/{total} prodotti trovati", "savings_offers": "· 🏷️ Risparmi €{amount} con le offerte", "searching_progress": "Cerco {current}/{total}...", "remove_error": "Errore nella rimozione", "suggest_loading": "Analisi in corso...", "suggest_error": "Errore nella generazione", "priority_high": "Alta", "priority_medium": "Media", "priority_low": "Bassa" }, "ai": { "title": "🤖 Identificazione AI", "capture": "📸 Scatta Foto", "retake": "🔄 Riscatta", "hint": "Scatta una foto del prodotto e l'AI cercherà di identificarlo", "identifying": "🤖 Identifico il prodotto...", "no_api_key": "⚠️ Chiave API Gemini non configurata.\nAggiungi GEMINI_API_KEY nel file .env sul server.", "fields_filled": "✅ Campi compilati dall'AI", "use_data": "✅ Usa dati AI", "use_data_no_barcode": "✅ Usa dati AI (senza barcode)" }, "log": { "title": "� Storico", "type_added": "Aggiunto", "type_waste": "Buttato", "type_used": "Usato", "type_bring": "Aggiunto a Bring!", "undone_badge": "Annullato", "undo_title": "Annulla questa operazione", "load_error": "Errore nel caricamento log", "empty": "Nessuna operazione registrata.", "undo_action_remove": "rimozione di", "undo_action_restore": "ripristino di", "undo_confirm": "Annullare questa operazione?\n→ {action} {name}", "undo_success": "↩ Operazione annullata per {name}", "already_undone": "Operazione già annullata", "too_old": "Non è possibile annullare operazioni più vecchie di 24 ore", "undo_error": "Errore durante l'annullamento" }, "chat": { "title": "Gemini Chef", "welcome": "Ciao! Sono il tuo assistente cucina", "welcome_desc": "Chiedimi di prepararti un succo, uno spuntino, un piatto veloce... Conosco la tua dispensa, i tuoi elettrodomestici e le tue preferenze!", "suggestion_snack": "🍿 Spuntino veloce", "suggestion_juice": "🥤 Succo/Frullato", "suggestion_light": "🥗 Qualcosa di leggero", "suggestion_expiry": "⏰ Usa le scadenze", "clear": "Nuova conversazione", "placeholder": "Chiedi qualcosa...", "cleared": "Chat cancellata", "suggestion_snack_text": "Cosa posso preparare per uno spuntino veloce?", "suggestion_juice_text": "Fammi un succo o frullato con quello che ho", "suggestion_light_text": "Ho fame ma voglio qualcosa di leggero", "suggestion_expiry_text": "Cosa sta per scadere e come posso usarlo?" }, "cooking": { "close": "Chiudi", "tts_btn": "Leggi ad alta voce", "restart": "↺ Ricomincia", "replay": "🔊 Rileggi", "timer": "⏱️ {time} · Timer", "prev": "◀ Precedente", "next": "Successivo ▶", "ingredient_used": "✔️ Scalato", "ingredient_use_btn": "📦 Usa", "ingredient_deduct_title": "Scala dalla dispensa", "timer_expired_tts": "Timer {label} scaduto!", "timer_warning_tts": "Attenzione! {label}: mancano 10 secondi!", "recipe_done_tts": "Ricetta completata! Buon appetito!", "expires_chip": "scade {date}", "finish": "✅ Fine" }, "settings": { "title": "⚙️ Configurazione", "tab_api": "API Keys", "tab_bring": "Bring!", "tab_recipe": "Ricette", "tab_mealplan": "Piano Settimanale", "tab_appliances": "Elettrodomestici", "tab_spesa": "Spesa Online", "tab_camera": "Fotocamera", "tab_security": "Sicurezza", "tab_tts": "Voce (TTS)", "tab_language": "Lingua", "tab_scale": "Bilancia Smart", "gemini": { "title": "🤖 Google Gemini AI", "hint": "Chiave API per identificazione prodotti, scadenze e ricette.", "key_label": "API Key Gemini" }, "bring": { "title": "🛒 Bring! Shopping List", "hint": "Credenziali per l'integrazione con la lista della spesa Bring!", "email_label": "📧 Email Bring!", "password_label": "🔒 Password Bring!" }, "recipe": { "title": "🍳 Preferenze Ricette", "hint": "Configura le opzioni predefinite per la generazione delle ricette.", "persons_label": "👥 Persone predefinite", "options_label": "🎯 Opzioni ricetta predefinite", "fast": "⚡ Pasto Veloce", "light": "🥗 Poca Fame", "expiry": "⏰ Priorità Scadenze", "healthy": "💚 Extra Salutare", "opened": "📦 Priorità Cose Aperte", "zerowaste": "♻️ Zero Sprechi", "dietary_label": "🚫 Intolleranze / Restrizioni", "dietary_placeholder": "Es: senza glutine, senza lattosio, vegetariano..." }, "mealplan": { "title": "📅 Piano Pasti Settimanale", "hint": "Imposta la tipologia di pasto per ogni giorno. Sarà usata come guida nella generazione delle ricette.", "enabled": "✅ Attiva piano pasti settimanale", "legend": "🌤️ = Pranzo · 🌙 = Cena · Tocca un badge per cambiarlo.", "types_title": "📋 Tipologie disponibili" }, "appliances": { "title": "🔌 Elettrodomestici Disponibili", "hint": "Indica gli elettrodomestici che hai a disposizione. Saranno considerati nella generazione delle ricette.", "new_placeholder": "Es: Macchina del pane, Bimby, Friggitrice ad aria...", "quick_title": "Aggiungi velocemente:", "oven": "🔥 Forno", "microwave": "📡 Microonde", "air_fryer": "🍟 Friggitrice ad aria", "bread_maker": "🍞 Macchina pane", "bimby": "🤖 Bimby/Cookeo", "mixer": "🌀 Planetaria", "steamer": "♨️ Vaporiera", "pressure_cooker": "🫕 Pentola pressione", "toaster": "🍞 Tostapane", "blender": "🍹 Frullatore", "empty": "Nessun elettrodomestico aggiunto" }, "spesa": { "title": "🛍️ Spesa Online", "hint": "Configura il provider per la spesa online.", "provider_label": "🏪 Provider", "email_label": "📧 Email", "password_label": "🔒 Password", "login_btn": "🔐 Accedi", "ai_prompt_label": "🤖 Prompt AI selezione prodotto", "ai_prompt_placeholder": "Istruzioni per l'AI quando deve scegliere tra più prodotti...", "ai_prompt_hint": "L'AI usa questo prompt per scegliere il prodotto più appropriato tra i risultati. Lascia vuoto per il comportamento predefinito.", "configure_first": "Configura prima la Spesa Online nelle impostazioni", "missing_credentials": "Inserisci email e password", "login_in_progress": "Accesso in corso...", "login_error_prefix": "Errore:", "login_network_error_prefix": "Errore di rete:", "login_success_default": "Login effettuato!", "result_name_label": "Nome", "result_card_label": "Tessera", "result_pickup_label": "Punto Ritiro", "result_points_label": "Punti Fedeltà", "connected_relogin": "✅ Connesso — Riaccedi", "connected_as": "Connesso come {name}" }, "camera": { "title": "📷 Fotocamera", "hint": "Scegli quale fotocamera utilizzare per la scansione barcode e l'identificazione AI.", "device_label": "📸 Fotocamera predefinita", "back": "📱 Posteriore (default)", "front": "🤳 Anteriore", "devices_hint": "Se hai più fotocamere, puoi selezionarne una specifica dall'elenco sopra dopo aver concesso i permessi.", "detect_btn": "🔄 Rileva fotocamere" }, "security": { "title": "🔒 Certificato HTTPS", "hint": "Se il browser mostra l'errore \"La connessione non è privata\" (ERR_CERT_AUTHORITY_INVALID), devi installare il certificato CA nel dispositivo.", "download_btn": "📥 Scarica Certificato CA" }, "tts": { "title": "🔊 Voce & TTS", "hint": "Configura la sintesi vocale tramite qualsiasi API REST esterna. I passi della ricetta e i timer scaduti verranno inviati all'endpoint configurato.", "enabled": "✅ Attiva TTS", "url_label": "🌐 URL Endpoint", "method_label": "📡 Metodo HTTP", "auth_label": "🔐 Autenticazione", "auth_bearer": "Bearer Token", "auth_custom": "Header personalizzato", "auth_none": "Nessuna", "token_label": "🔑 Bearer Token", "custom_header_name": "📋 Nome header", "custom_header_value": "📋 Valore header", "content_type_label": "📄 Content-Type", "payload_key_label": "🗝️ Campo testo nel payload", "payload_key_hint": "Nome del campo JSON che conterrà il testo da leggere (es: message, text).", "extra_fields_label": "➕ Campi extra (JSON)", "extra_fields_placeholder": "{\"entity_id\": \"media_player.living_room\"}", "extra_fields_hint": "Campi aggiuntivi da includere nel payload, in formato JSON. Lascia vuoto se non necessario.", "test_btn": "🔊 Invia Test Vocale" }, "language": { "title": "🌐 Lingua / Language", "hint": "Seleziona la lingua dell'interfaccia. Select the interface language.", "label": "🌐 Lingua", "restart_notice": "La pagina verrà ricaricata per applicare la nuova lingua." }, "screensaver": { "label": "Attiva salvaschermo", "card_title": "🌙 Salvaschermo", "card_hint": "Mostra un orologio con fatti utili dopo 5 minuti di inattività. Di default è disattivato." }, "scale": { "title": "⚖️ Bilancia Smart", "hint": "Collega una bilancia Bluetooth tramite il gateway Android per leggere il peso automaticamente.", "tab": "Bilancia Smart", "enabled": "✅ Abilita bilancia smart", "url_label": "🌐 URL Gateway WebSocket", "url_placeholder": "ws://192.168.1.x:8765", "url_hint": "URL mostrato dall'app Android (stessa rete Wi-Fi). Es:", "test_btn": "🔗 Testa connessione", "download_btn": "📥 Scarica Gateway Android (APK)", "download_hint": "App Android che fa da ponte tra la bilancia BLE e questo sito.", "download_sub": "Sorgente: evershelf-scale-gateway/ nella root del progetto" }, "kiosk": { "hint": "Trasforma un tablet Android in un pannello EverShelf sempre acceso, con bilancia BLE integrata.", "download_btn": "📥 Scarica EverShelf Kiosk (APK)", "download_sub": "Modalità kiosk full-screen + gateway bilancia integrato. Sorgente: evershelf-kiosk/" }, "saved": "✅ Configurazione salvata!", "saved_local": "✅ Configurazione salvata localmente", "saved_local_error": "⚠️ Salvato localmente, errore server: {error}" }, "expiry": { "today": "OGGI", "tomorrow": "Domani", "days": "{days} giorni", "expired_days": "Da {days}g", "expired_yesterday": "Da ieri", "expired_today": "Oggi", "badge_today": "⚠️ Scade oggi!", "badge_tomorrow": "⏰ Domani", "badge_tomorrow_long": "⏰ Scade domani", "badge_days": "⏰ {n} giorni", "badge_expired_ago": "⚠️ Scaduto da {n}g", "badge_expired": "⛔ Scaduto!", "badge_stable": "✅ Stabile", "badge_expiring_short": "⏰ Scade fra {n}gg", "badge_ok_still": "✅ Ancora {n}gg", "badge_expires_red": "🔴 Scade tra {n}g", "badge_expires_yellow": "🟡 Scade tra {n}g", "badge_expired_bare": "⚠️ Scaduto", "badge_expires_warn": "⚠️ Scade tra {n}gg", "badge_days_left": "⏳ ~{n}gg rimasti", "days_approx": "~{n} giorni", "weeks_approx": "~{n} settimane", "months_approx": "~{n} mesi", "years_approx": "~{n} anni", "expired_today_long": "Scaduto oggi", "expired_ago_long": "Scaduto da {n} giorni", "expired_suffix": "— Scaduto!", "expired_suffix_ok": "— Scaduto (ancora ok)", "expired_suffix_warning": "— Scaduto (controlla)", "days_compact": "{n}gg" }, "status": { "ok": "OK", "check": "Controlla", "discard": "Buttare", "tip_freezer_ok": "In freezer: ancora sicuro (~{n}g di margine)", "tip_freezer_check": "In freezer da molto, potrebbe aver perso qualità. Consumare presto", "tip_freezer_danger": "In freezer da troppo tempo, rischio di bruciatura da gelo e degrado", "tip_highRisk_check": "Scaduto da poco, controlla odore e aspetto prima di consumare", "tip_highRisk_danger": "Prodotto deperibile scaduto: da buttare per sicurezza", "tip_medRisk_check1": "Controlla aspetto e odore prima di consumare", "tip_medRisk_check2": "Scaduto da un po', verificare bene prima dell'uso", "tip_medRisk_danger": "Troppo tempo dalla scadenza, meglio buttare", "tip_lowRisk_ok": "Prodotto a lunga conservazione, ancora sicuro da consumare", "tip_lowRisk_check": "Scaduto da oltre un mese, controllare integrità confezione", "tip_lowRisk_danger": "Scaduto da troppo tempo, meglio non rischiare" }, "toast": { "product_saved": "Prodotto salvato!", "product_created": "Prodotto creato!", "product_updated": "✅ Prodotto aggiornato!", "product_removed": "Prodotto rimosso", "updated": "Aggiornato!", "quantity_confirmed": "✓ Quantità confermata", "added_to_inventory": "✅ {name} aggiunto!", "removed_from_list": "✅ {name} rimosso dalla lista!", "removed_from_list_short": "Rimosso dalla lista", "added_to_shopping": "🛒 Aggiunto alla lista della spesa!", "removed_from_shopping": "🛒 Rimosso dalla lista della spesa", "finished_to_bring": "🛒 Prodotto finito → aggiunto a Bring!", "thrown_away": "🗑️ {name} buttato!", "thrown_away_partial": "🗑️ Buttato {qty} {unit} di {name}", "product_finished_confirmed": "✅ Rimosso — riaggiungi quando ne ricompri", "appliance_added": "Elettrodomestico aggiunto", "item_added": "{name} aggiunto" }, "antiwaste": { "title": "🌱 Rapporto Anti-Spreco", "grade_label": "Voto", "you": "Tu", "avg_label": "Media", "better": "🎉 Perdi il {diff}% in meno della {country}!", "worse": "⚠️ Perdi più della media {country}. Puoi migliorare!", "on_par": "→ Sei nella media {country}. Prova a fare ancora meglio!", "saved_money": "~{amount}/mese risparmiati", "saved_meals": "~{n} pasti salvati", "saved_co2": "{n} kg CO₂ evitata", "trend_title": "Andamento (ultimi 3 mesi)", "months_ago_2": "-60 gg", "months_ago_1": "-30 gg", "this_month": "Ora", "country_it": "media italiana", "country_de": "media tedesca", "country_en": "media USA", "source": "Fonti: REDUCE, Eurostat, USDA 2021", "live_on": "Dati in tempo reale", "live_off": "Offline", "meals": "pasti", "annual_info": "📅 Tu ~{you} kg/anno · media ~{avg} kg/anno", "badge_rate": "tasso perdita", "badge_saved_money": "risparmio vs media", "badge_wasted": "prod. persi", "badge_better": "in meno vs media" }, "error": { "generic": "Errore", "network": "Errore di rete", "no_api_key": "Configura la chiave API nelle impostazioni", "loading": "Errore nel caricamento del prodotto", "not_found": "Prodotto non trovato", "not_found_manual": "Prodotto non trovato. Inseriscilo manualmente.", "search": "Errore nella ricerca. Riprova.", "search_short": "Errore nella ricerca", "save": "Errore nel salvataggio", "connection": "Errore di connessione", "camera": "Impossibile accedere alla fotocamera", "bring_add": "Errore nell'aggiunta a Bring!", "bring_connection": "Errore connessione Bring!", "identification": "Errore nell'identificazione", "ai_quota": "Quota AI esaurita. Riprova tra qualche minuto.", "barcode_empty": "Inserisci un codice a barre", "barcode_format": "Il codice a barre deve contenere solo numeri (4-14 cifre)", "min_chars": "Scrivi almeno 2 caratteri", "not_in_inventory": "Prodotto non nell'inventario", "appliance_exists": "Elettrodomestico già presente", "already_exists": "Già presente", "network_retry": "Errore di connessione. Riprova.", "select_items": "Seleziona almeno un prodotto" }, "confirm": { "remove_item": "Vuoi davvero rimuovere questo prodotto dall'inventario?", "kiosk_exit": "Uscire dalla modalità kiosk?", "cancel": "Annulla", "proceed": "Conferma" }, "location": { "dispensa": "Dispensa", "frigo": "Frigo", "freezer": "Freezer" }, "edit": { "title": "Modifica {name}", "unknown_hint": "Inserisci il nome e le informazioni del prodotto", "label_name": "🏷️ Nome prodotto" }, "screensaver": { "recipe_btn": "Ricette", "scan_btn": "Scansiona prodotto" }, "days": { "mon": "Lunedì", "tue": "Martedì", "wed": "Mercoledì", "thu": "Giovedì", "fri": "Venerdì", "sat": "Sabato", "sun": "Domenica", "mon_short": "Lun", "tue_short": "Mar", "wed_short": "Mer", "thu_short": "Gio", "fri_short": "Ven", "sat_short": "Sab", "sun_short": "Dom" }, "meal_types": { "lunch": "Pranzo", "dinner": "Cena", "colazione": "Colazione", "merenda": "Merenda", "dolce": "Dolce", "succo": "Succo di Frutta", "pranzo": "Pranzo", "cena": "Cena" }, "scale": { "status_connected": "Bilancia connessa", "status_searching": "Connesso al gateway, attesa bilancia…", "status_disconnected": "Gateway bilancia non raggiungibile", "status_error": "Errore connessione gateway", "not_connected": "Gateway bilancia non connesso", "read_btn": "⚖️ Leggi dalla bilancia", "reading_title": "Lettura bilancia", "place_on_scale": "Metti il prodotto sulla bilancia…", "waiting_stable": "Il peso venire rilevato automaticamente quando la lettura sarà stabile.", "no_url": "Inserisci l'URL del gateway", "testing": "⏳ Test connessione…", "connected_ok": "Connessione gateway riuscita!", "timeout": "Timeout: nessuna risposta dal gateway", "error_connect": "Impossibile connettersi al gateway", "tab": "Bilancia Smart", "low_weight": "Peso < 10 g · inserisci manualmente\n(la lettura automatica richiede almeno 10 g)", "density_hint": "(densità {density} g/ml)", "ml_hint": "(verrà convertito in ml)", "weight_detected": "Peso rilevato — attendi 10s di stabilità…", "weight_too_low": "Peso troppo basso — attendi…", "stable": "✓ Stabile", "auto_confirm": "✅ {val} {unit} — conferma automatica tra 5s (tocca per annullare)", "cancelled_replace": "Annullato — rimetti l'ingrediente sulla bilancia per riprendere" }, "prediction": { "expected_qty": "Previsto: {expected} {unit}", "actual_qty": "Attuale: {actual} {unit}", "check_suggestion": "Verifica o pesa la quantità residua" }, "date": { "today": "📅 Oggi", "yesterday": "📅 Ieri" }, "scanner": { "title_barcode": "🔖 Scansiona Barcode", "barcode_hint": "Inquadra il codice a barre del prodotto", "barcode_manual_placeholder": "O inserisci manualmente...", "barcode_use_btn": "✅ Usa questo codice", "ai_identifying": "🤖 Identifico il prodotto...", "ai_analyzing": "🤖 Analisi AI in corso...", "product_label_hint": "Inquadra l'etichetta del prodotto", "expiry_label_hint": "Inquadra la data di scadenza stampata sul prodotto", "capture_btn": "📸 Scatta", "capture_photo_btn": "📸 Scatta Foto", "retake_btn": "🔄 Riscatta", "camera_error_hint": "Assicurati di usare HTTPS e di aver concesso i permessi della fotocamera.
Puoi inserire il barcode manualmente o usare l'identificazione AI.", "no_barcode": "Senza barcode" }, "lowstock": { "title": "⚠️ Sta per finire!", "message": "{name} sta per finire — rimangono solo {qty}.", "question": "Vuoi aggiungerlo alla lista della spesa?", "yes": "🛒 Sì, aggiungi a Bring!", "no": "No, per ora va bene" }, "move": { "title": "📦 Spostare il resto?", "question": "Vuoi spostare {thing} di {name} in un'altra posizione?", "question_short": "Vuoi spostare {thing} in un'altra posizione?", "thing_opened": "la confezione aperta", "thing_rest": "il resto", "stay_btn": "No, resta in {location}", "moved_toast": "📦 Confezione aperta spostata in {location}", "vacuum_restore": "🫙 Torna sotto vuoto" }, "nova": { "1": "Non trasformato", "2": "Ingrediente culinario", "3": "Trasformato", "4": "Ultra-trasformato" }, "meal_plan_types": { "pasta": "Pasta", "riso": "Riso", "carne": "Carne", "pesce": "Pesce", "legumi": "Legumi", "uova": "Uova", "formaggio": "Formaggio", "pizza": "Pizza", "affettati": "Affettati", "verdure": "Verdure", "zuppa": "Zuppa", "insalata": "Insalata", "pane": "Pane/Sandwich", "dolce": "Dolce", "libero": "Libero" }, "meal_sub": { "dolce_torta": "Torta", "dolce_crema": "Crema / Budino", "dolce_crumble": "Crumble / Crostata", "dolce_biscotti": "Biscotti / Pasticcini", "dolce_frutta": "Dolce alla Frutta", "succo_dolce": "Dolce / Fruttato", "succo_energizzante": "Energizzante", "succo_detox": "Detox / Verde", "succo_rinfrescante": "Rinfrescante", "succo_vitaminico": "Vitaminico / Agrumi" }, "meal_plan": { "reset_success": "Piano settimanale ripristinato", "suggested_by": "suggerito dal piano settimanale" }, "kiosk_session": { "first_item": "Primo prodotto: {name}!", "items_two_four": "{n} prodotti — stai scaldando i motori 🚀", "items_five_nine": "{n} prodotti — ottimo ritmo! 💪", "items_ten_twenty": "{n} prodotti — quasi un recordman 🏆", "items_twenty_plus": "{n} prodotti — spesa epica! 🛒🔥", "duplicates_one": "1 bis (stessa cosa due volte)", "duplicates_many": "{n} bis (roba presa più volte)", "top_category": "Categoria top: {cat} ({count}×)", "items_fallback": "{n} prodott{n} aggiunti" } }