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": "Vous avez <strong>{inv_qty} {unit}</strong> en inventaire, mais les sorties enregistrées dépassent les entrées — le stock initial n'a probablement jamais été ajouté comme transaction « entrée ». Vous pouvez corriger la quantité ou saisir les entrées manquantes.",
|
||||
"banner_anomaly_ghost_title": "vous avez moins de stock que prévu",
|
||||
"banner_anomaly_ghost_detail": "D'après les opérations enregistrées vous devriez avoir {expected_qty} {unit} de {name}, mais l'inventaire n'en montre que {inv_qty} {unit}. Avez-vous pris du stock sans l'enregistrer ?",
|
||||
"banner_dup_loss_title": "Vérification double sortie : {name}",
|
||||
"banner_dup_loss_detail": "Doublon possible dans {location} : deux sorties rapprochées ({qty_pair}) en ~{seconds}s. Vérifiez et corrigez si besoin.",
|
||||
"banner_dup_loss_action_fix": "Corriger la quantité",
|
||||
"banner_dup_loss_action_open": "Ouvrir la fiche produit",
|
||||
"banner_dup_loss_action_done": "Déjà vérifié",
|
||||
"banner_dup_loss_toast_done": "Contrôle marqué comme vérifié",
|
||||
"consumed": "Consommé : {n} ({pct}%)",
|
||||
"wasted": "Gaspillé : {n} ({pct}%)",
|
||||
"more_opened": "et {n} autres ouverts...",
|
||||
@@ -218,10 +224,23 @@
|
||||
"status_invalid": "Invalide : {code} — nouvel essai",
|
||||
"status_confirmed": "Confirmé !",
|
||||
"status_parallel": "Scan combiné actif...",
|
||||
"status_ocr_searching": "Je lis les chiffres du code-barres...",
|
||||
"status_ai_visual_searching": "J'essaie maintenant de reconnaître le produit...",
|
||||
"method_ai_ocr": "Gemini OCR",
|
||||
"method_ai_vision": "Gemini Vision",
|
||||
"ai_fallback_searching": "Identification IA en cours...",
|
||||
"ai_fallback_found": "Produit identifié par l'IA",
|
||||
"ai_fallback_not_found": "IA : produit non reconnu",
|
||||
"ai_fallback_exhausted": "IA : produit non reconnu — réessayez avec le code-barres"
|
||||
"ai_fallback_exhausted": "IA : produit non reconnu — réessayez avec le code-barres",
|
||||
"ai_overlay_msg": "Gemini Vision analyse le produit...",
|
||||
"ai_retry_btn": "Reessayer avec l'IA",
|
||||
"ai_match_title": "Produit reconnu par l'IA",
|
||||
"ai_match_subtitle": "Choisissez un produit deja en stock ou ajoutez celui detecte.",
|
||||
"ai_match_existing": "Correspondances possibles dans le stock",
|
||||
"ai_match_none": "Aucun produit similaire trouve dans le stock.",
|
||||
"ai_match_use_btn": "Utiliser celui-ci",
|
||||
"ai_match_add_btn": "Ajouter \"{name}\"",
|
||||
"ai_detected_label": "IA a detecte"
|
||||
},
|
||||
"action": {
|
||||
"title": "Que voulez-vous faire ?",
|
||||
@@ -1020,6 +1039,7 @@
|
||||
"ai_quota": "Quota IA épuisé. Réessayez dans quelques minutes.",
|
||||
"barcode_empty": "Entrez un code-barres",
|
||||
"barcode_format": "Le code-barres ne doit contenir que des chiffres (4-14 chiffres)",
|
||||
"barcode_checksum": "Somme de contrôle EAN invalide — vérifiez les chiffres du code-barres",
|
||||
"min_chars": "Tapez au moins 2 caractères",
|
||||
"not_in_inventory": "Produit absent de l'inventaire",
|
||||
"appliance_exists": "L'appareil existe déjà",
|
||||
|
||||
Reference in New Issue
Block a user