fix: barcode EAN checksum validation + recipe persons dialog conflict
- Manual barcode input now blocks on invalid EAN checksum (was warning-only) - Native BarcodeDetector now validates EAN/UPC checksum before confirming - Renamed duplicate adjustRecipePersons (rescaler) to scaleRecipePersons to restore +/- buttons in the recipe generation dialog - Added error.barcode_checksum translation key (all 5 languages) - Bump version to v1.7.35
This commit is contained in:
+21
-1
@@ -149,6 +149,12 @@
|
||||
"banner_anomaly_untracked_detail": "Tienes <strong>{inv_qty} {unit}</strong> en inventario, pero las salidas registradas superan las entradas — el stock inicial probablemente nunca se añadió como transacción «entrada». Puedes corregir la cantidad o registrar las entradas faltantes.",
|
||||
"banner_anomaly_ghost_title": "tienes menos stock del esperado",
|
||||
"banner_anomaly_ghost_detail": "Según las operaciones registradas deberías tener {expected_qty} {unit} de {name}, pero el inventario solo muestra {inv_qty} {unit}. ¿Tomaste stock sin registrarlo?",
|
||||
"banner_dup_loss_title": "Control de doble salida: {name}",
|
||||
"banner_dup_loss_detail": "Posible registro duplicado en {location}: dos salidas seguidas ({qty_pair}) en ~{seconds}s. Revisa y corrige si hace falta.",
|
||||
"banner_dup_loss_action_fix": "Corregir cantidad",
|
||||
"banner_dup_loss_action_open": "Abrir ficha del producto",
|
||||
"banner_dup_loss_action_done": "Ya revisado",
|
||||
"banner_dup_loss_toast_done": "Control marcado como revisado",
|
||||
"consumed": "Consumido: {n} ({pct}%)",
|
||||
"wasted": "Desperdiciado: {n} ({pct}%)",
|
||||
"more_opened": "y {n} más abiertos...",
|
||||
@@ -218,10 +224,23 @@
|
||||
"status_invalid": "Inválido: {code} — reintentando",
|
||||
"status_confirmed": "Confirmado!",
|
||||
"status_parallel": "Escaneo combinado activo...",
|
||||
"status_ocr_searching": "Estoy leyendo los números del código de barras...",
|
||||
"status_ai_visual_searching": "Ahora intento reconocer el producto...",
|
||||
"method_ai_ocr": "Gemini OCR",
|
||||
"method_ai_vision": "Gemini Vision",
|
||||
"ai_fallback_searching": "Identificación de IA en curso...",
|
||||
"ai_fallback_found": "Producto identificado por IA",
|
||||
"ai_fallback_not_found": "IA: producto no reconocido",
|
||||
"ai_fallback_exhausted": "IA: producto no reconocido — prueba a escanear el código"
|
||||
"ai_fallback_exhausted": "IA: producto no reconocido — prueba a escanear el código",
|
||||
"ai_overlay_msg": "Gemini Vision está analizando el producto...",
|
||||
"ai_retry_btn": "Reintentar con IA",
|
||||
"ai_match_title": "Producto reconocido por IA",
|
||||
"ai_match_subtitle": "Elige un producto ya en despensa o agrega el detectado.",
|
||||
"ai_match_existing": "Posibles coincidencias en despensa",
|
||||
"ai_match_none": "No se encontraron productos similares en despensa.",
|
||||
"ai_match_use_btn": "Usar este",
|
||||
"ai_match_add_btn": "Agregar \"{name}\"",
|
||||
"ai_detected_label": "IA detecto"
|
||||
},
|
||||
"action": {
|
||||
"title": "¿Qué quieres hacer?",
|
||||
@@ -1020,6 +1039,7 @@
|
||||
"ai_quota": "Cuota de IA agotada. Inténtalo de nuevo en unos minutos.",
|
||||
"barcode_empty": "Introduce un código de barras",
|
||||
"barcode_format": "El código de barras solo puede contener números (4-14 dígitos)",
|
||||
"barcode_checksum": "Suma de comprobación EAN inválida — verifica los dígitos del código",
|
||||
"min_chars": "Escribe al menos 2 caracteres",
|
||||
"not_in_inventory": "Producto no en inventario",
|
||||
"appliance_exists": "El electrodoméstico ya existe",
|
||||
|
||||
Reference in New Issue
Block a user