Add whatsapp feature

This commit is contained in:
Urtzi Alfaro
2025-11-13 16:01:08 +01:00
parent d7df2b0853
commit 9bc048d360
74 changed files with 9765 additions and 533 deletions

View File

@@ -31,7 +31,8 @@
"today_production": "Today's Production",
"pending_po_approvals": "Pending Purchase Orders",
"recent_activity": "Recent Activity",
"quick_actions": "Quick Actions"
"quick_actions": "Quick Actions",
"key_metrics": "Key Metrics"
},
"procurement": {
"title": "What needs to be bought for tomorrow?",
@@ -57,7 +58,11 @@
"start_production": "Start Production",
"check_inventory": "Check Inventory",
"view_reports": "View Reports",
"manage_staff": "Manage Staff"
"manage_staff": "Manage Staff",
"view_orders": "View Orders",
"view_production": "Production",
"view_inventory": "Inventory",
"view_suppliers": "Suppliers"
},
"alerts": {
"title": "Alerts",
@@ -121,7 +126,23 @@
"all_caught_up": "All caught up!",
"stock_healthy": "Stock healthy",
"same_as_yesterday": "Same as yesterday",
"less_than_yesterday": "less than yesterday"
"less_than_yesterday": "less than yesterday",
"your_bakery_at_glance": "Your bakery at a glance"
},
"health": {
"production_on_schedule": "Production on schedule",
"production_delayed": "{{count}} production batch{{count, plural, one {} other {es}}} delayed",
"all_ingredients_in_stock": "All ingredients in stock",
"ingredients_out_of_stock": "{{count}} ingredient{{count, plural, one {} other {s}}} out of stock",
"no_pending_approvals": "No pending approvals",
"approvals_awaiting": "{{count}} purchase order{{count, plural, one {} other {s}}} awaiting approval",
"all_systems_operational": "All systems operational",
"critical_issues": "{{count}} critical issue{{count, plural, one {} other {s}}}",
"headline_green": "Your bakery is running smoothly",
"headline_yellow_approvals": "Please review {{count}} pending approval{{count, plural, one {} other {s}}}",
"headline_yellow_alerts": "You have {{count}} alert{{count, plural, one {} other {s}}} needing attention",
"headline_yellow_general": "Some items need your attention",
"headline_red": "Critical issues require immediate action"
},
"time_periods": {
"today": "Today",

View File

@@ -107,7 +107,11 @@
"historical_demand": "Historical demand",
"inventory_levels": "Inventory levels",
"ai_optimization": "AI optimization",
"actions_required": "{{count}} item{{count, plural, one {} other {s}}} need{{count, plural, one {s} other {}}} your approval before proceeding"
"actions_required": "{{count}} item{{count, plural, one {} other {s}}} need{{count, plural, one {s} other {}}} your approval before proceeding",
"no_tenant_error": "No tenant ID found. Please ensure you're logged in.",
"planning_started": "Planning started successfully",
"planning_failed": "Failed to start planning",
"planning_error": "An error occurred while starting planning"
},
"production_timeline": {
"title": "Your Production Plan Today",

View File

@@ -133,6 +133,33 @@
"delivery_tracking": "Permite a los clientes rastrear sus pedidos en tiempo real"
}
},
"notification": {
"title": "Notificaciones",
"whatsapp_config": "Configuración de WhatsApp",
"whatsapp_enabled": "Habilitar notificaciones por WhatsApp",
"whatsapp_phone_number_id": "ID del Número de Teléfono",
"whatsapp_phone_number_id_help": "ID del número de teléfono de WhatsApp Business desde Meta",
"whatsapp_access_token": "Token de Acceso",
"whatsapp_access_token_help": "Token de acceso permanente desde Meta Business Suite",
"whatsapp_business_account_id": "ID de Cuenta de Negocio",
"whatsapp_business_account_id_help": "ID de la cuenta de negocio de WhatsApp",
"whatsapp_api_version": "Versión de API",
"whatsapp_default_language": "Idioma Predeterminado",
"whatsapp_setup_note": "Pasos para configurar WhatsApp Business:",
"whatsapp_setup_step1": "Crea una cuenta de WhatsApp Business en Meta Business Suite",
"whatsapp_setup_step2": "Crea y aprueba plantillas de mensajes (ej: po_notification)",
"whatsapp_setup_step3": "Obtén las credenciales: Phone Number ID, Access Token y Business Account ID",
"email_config": "Configuración de Email",
"email_enabled": "Habilitar notificaciones por email",
"email_from_address": "Email Remitente",
"email_from_name": "Nombre del Remitente",
"email_reply_to": "Email de Respuesta",
"preferences": "Preferencias de Notificación",
"enable_po_notifications": "Notificaciones de Órdenes de Compra",
"enable_inventory_alerts": "Alertas de Inventario",
"enable_production_alerts": "Alertas de Producción",
"enable_forecast_alerts": "Alertas de Previsión"
},
"messages": {
"save_success": "Ajustes guardados correctamente",
"save_error": "Error al guardar ajustes",

View File

@@ -1,6 +1,6 @@
{
"title": "Panel de Control",
"subtitle": "Resumen general de tu panadería",
"subtitle": "Tu panadería de un vistazo",
"stats": {
"sales_today": "Ventas Hoy",
"pending_orders": "Órdenes Pendientes",
@@ -31,7 +31,8 @@
"today_production": "Producción de Hoy",
"pending_po_approvals": "Órdenes de Compra Pendientes",
"recent_activity": "Actividad Reciente",
"quick_actions": "Acciones Rápidas"
"quick_actions": "Acciones Rápidas",
"key_metrics": "Métricas Clave"
},
"procurement": {
"title": "¿Qué necesito comprar para mañana?",
@@ -57,7 +58,11 @@
"start_production": "Iniciar Producción",
"check_inventory": "Revisar Inventario",
"view_reports": "Ver Reportes",
"manage_staff": "Gestionar Personal"
"manage_staff": "Gestionar Personal",
"view_orders": "Ver Órdenes",
"view_production": "Producción",
"view_inventory": "Inventario",
"view_suppliers": "Proveedores"
},
"alerts": {
"title": "Alertas",
@@ -156,7 +161,23 @@
"all_caught_up": "¡Todo al día!",
"stock_healthy": "Stock saludable",
"same_as_yesterday": "Igual que ayer",
"less_than_yesterday": "menos que ayer"
"less_than_yesterday": "menos que ayer",
"your_bakery_at_glance": "Tu panadería de un vistazo"
},
"health": {
"production_on_schedule": "Producción a tiempo",
"production_delayed": "{{count}} lote{{count, plural, one {} other {s}}} de producción retrasado{{count, plural, one {} other {s}}}",
"all_ingredients_in_stock": "Todos los ingredientes en stock",
"ingredients_out_of_stock": "{{count}} ingrediente{{count, plural, one {} other {s}}} sin stock",
"no_pending_approvals": "Sin aprobaciones pendientes",
"approvals_awaiting": "{{count}} orden{{count, plural, one {} other {es}}} de compra esperando aprobación",
"all_systems_operational": "Todos los sistemas operativos",
"critical_issues": "{{count}} problema{{count, plural, one {} other {s}}} crítico{{count, plural, one {} other {s}}}",
"headline_green": "Tu panadería funciona sin problemas",
"headline_yellow_approvals": "Por favor revisa {{count}} aprobación{{count, plural, one {} other {es}}} pendiente{{count, plural, one {} other {s}}}",
"headline_yellow_alerts": "Tienes {{count}} alerta{{count, plural, one {} other {s}}} que necesita{{count, plural, one {} other {n}}} atención",
"headline_yellow_general": "Algunos elementos necesitan tu atención",
"headline_red": "Problemas críticos requieren acción inmediata"
},
"time_periods": {
"today": "Hoy",

View File

@@ -107,7 +107,11 @@
"historical_demand": "Demanda histórica",
"inventory_levels": "Niveles de inventario",
"ai_optimization": "Optimización por IA",
"actions_required": "{{count}} elemento{{count, plural, one {} other {s}}} necesita{{count, plural, one {} other {n}}} tu aprobación antes de continuar"
"actions_required": "{{count}} elemento{{count, plural, one {} other {s}}} necesita{{count, plural, one {} other {n}}} tu aprobación antes de continuar",
"no_tenant_error": "No se encontró ID de inquilino. Por favor, asegúrate de haber iniciado sesión.",
"planning_started": "Planificación iniciada correctamente",
"planning_failed": "Error al iniciar la planificación",
"planning_error": "Ocurrió un error al iniciar la planificación"
},
"production_timeline": {
"title": "Tu Plan de Producción de Hoy",

View File

@@ -5,7 +5,8 @@
"tabs": {
"information": "Datos del establecimiento",
"hours": "Horarios",
"operations": "Ajustes operacionales"
"operations": "Ajustes operacionales",
"notifications": "Notificaciones"
},
"information": {
"title": "Información General",

View File

@@ -133,6 +133,33 @@
"delivery_tracking": "Bezeroei beren eskaerak denbora errealean jarraitzeko aukera ematen die"
}
},
"notification": {
"title": "Jakinarazpenak",
"whatsapp_config": "WhatsApp Konfigurazioa",
"whatsapp_enabled": "Gaitu WhatsApp jakinarazpenak",
"whatsapp_phone_number_id": "Telefono Zenbakiaren ID-a",
"whatsapp_phone_number_id_help": "WhatsApp Business telefono zenbakiaren ID-a Meta-tik",
"whatsapp_access_token": "Sarbide Tokena",
"whatsapp_access_token_help": "Token iraunkor Meta Business Suite-tik",
"whatsapp_business_account_id": "Negozio Kontuaren ID-a",
"whatsapp_business_account_id_help": "WhatsApp negozio kontuaren ID-a",
"whatsapp_api_version": "API Bertsioa",
"whatsapp_default_language": "Hizkuntza Lehenetsia",
"whatsapp_setup_note": "WhatsApp Business konfiguratzeko urratsak:",
"whatsapp_setup_step1": "Sortu WhatsApp Business kontua Meta Business Suite-n",
"whatsapp_setup_step2": "Sortu eta onartu mezu txantiloiak (adib: po_notification)",
"whatsapp_setup_step3": "Lortu kredentzialak: Phone Number ID, Access Token eta Business Account ID",
"email_config": "Email Konfigurazioa",
"email_enabled": "Gaitu email jakinarazpenak",
"email_from_address": "Bidaltzailearen Emaila",
"email_from_name": "Bidaltzailearen Izena",
"email_reply_to": "Erantzuteko Emaila",
"preferences": "Jakinarazpen Hobespenak",
"enable_po_notifications": "Erosketa Agindu Jakinarazpenak",
"enable_inventory_alerts": "Inbentario Alertak",
"enable_production_alerts": "Ekoizpen Alertak",
"enable_forecast_alerts": "Aurreikuspen Alertak"
},
"messages": {
"save_success": "Ezarpenak ondo gorde dira",
"save_error": "Errorea ezarpenak gordetzean",

View File

@@ -1,6 +1,6 @@
{
"title": "Aginte Panela",
"subtitle": "Zure okindegiaren eragiketen ikuspegi orokorra",
"subtitle": "Zure okindegia begirada batean",
"stats": {
"sales_today": "Gaurko Salmentak",
"pending_orders": "Eskaera Zain",
@@ -29,7 +29,8 @@
"today_production": "Gaurko Ekoizpena",
"pending_po_approvals": "Erosketa Aginduak Zain",
"recent_activity": "Azken Jarduera",
"quick_actions": "Ekintza Azkarrak"
"quick_actions": "Ekintza Azkarrak",
"key_metrics": "Metrika Nagusiak"
},
"procurement": {
"title": "Zer erosi behar da biarko?",
@@ -55,7 +56,11 @@
"start_production": "Ekoizpena Hasi",
"check_inventory": "Inbentarioa Begiratu",
"view_reports": "Txostenak Ikusi",
"manage_staff": "Langilea Kudeatu"
"manage_staff": "Langilea Kudeatu",
"view_orders": "Aginduak Ikusi",
"view_production": "Ekoizpena",
"view_inventory": "Inbentarioa",
"view_suppliers": "Hornitzaileak"
},
"alerts": {
"title": "Alertak",
@@ -112,7 +117,30 @@
"action_required": "Ekintza beharrezkoa",
"manage_organizations": "Zure erakundeak kudeatu",
"setup_new_business": "Negozio berri bat hutsetik konfiguratu",
"active_organizations": "Erakunde Aktiboak"
"active_organizations": "Erakunde Aktiboak",
"excellent_progress": "Aurrerapen bikaina!",
"keep_improving": "Jarraitu hobetzen",
"from_sustainability": "Iraunkortasunetik",
"all_caught_up": "Dena eguneratuta!",
"stock_healthy": "Stock osasuntsua",
"same_as_yesterday": "Atzo bezala",
"less_than_yesterday": "atzo baino gutxiago",
"your_bakery_at_glance": "Zure okindegia begirada batean"
},
"health": {
"production_on_schedule": "Ekoizpena orduan",
"production_delayed": "{{count}} ekoizpen sorta atzeratuta",
"all_ingredients_in_stock": "Osagai guztiak stockean",
"ingredients_out_of_stock": "{{count}} osagai stockik gabe",
"no_pending_approvals": "Ez dago onarpen pendienteik",
"approvals_awaiting": "{{count}} erosketa agindu{{count, plural, one {} other {k}}} onarpenaren zai",
"all_systems_operational": "Sistema guztiak martxan",
"critical_issues": "{{count}} arazo kritiko",
"headline_green": "Zure okindegia arazorik gabe dabil",
"headline_yellow_approvals": "Mesedez berrikusi {{count}} onarpen zain",
"headline_yellow_alerts": "{{count}} alerta{{count, plural, one {} other {k}}} arreta behar d{{count, plural, one {u} other {ute}}}",
"headline_yellow_general": "Zenbait elementuk zure arreta behar dute",
"headline_red": "Arazo kritikoek berehalako ekintza behar dute"
},
"time_periods": {
"today": "Gaur",

View File

@@ -3,21 +3,65 @@
"title": "Hasierako Konfigurazioa",
"subtitle": "Pausoz pauso gidatuko zaitugu zure okindegia konfiguratzeko",
"steps": {
"bakery_type": {
"title": "Okindegi Mota",
"description": "Hautatu zure negozio mota"
},
"data_source": {
"title": "Konfigurazio Metodoa",
"description": "Aukeratu nola konfiguratu"
},
"setup": {
"title": "Okindegia Erregistratu",
"description": "Konfiguratu zure okindegiko oinarrizko informazioa"
"description": "Oinarrizko informazioa"
},
"poi_detection": {
"title": "Kokapen Analisia",
"description": "Inguruko interesguneak detektatu"
},
"smart_inventory": {
"title": "Salmenta Datuak Igo",
"description": "AArekin konfigurazioa"
},
"smart_inventory_setup": {
"title": "Inbentarioa Konfiguratu",
"description": "Salmenten datuak igo eta hasierako inbentarioa ezarri"
},
"suppliers": {
"title": "Hornitzaileak",
"description": "Konfiguratu zure hornitzaileak"
},
"inventory": {
"title": "Inbentarioa",
"description": "Produktuak eta osagaiak"
},
"recipes": {
"title": "Errezetak",
"description": "Ekoizpen errezetak"
},
"processes": {
"title": "Prozesuak",
"description": "Amaitzeko prozesuak"
},
"quality": {
"title": "Kalitatea",
"description": "Kalitate estandarrak"
},
"team": {
"title": "Taldea",
"description": "Taldeko kideak"
},
"review": {
"title": "Berrikuspena",
"description": "Berretsi zure konfigurazioa"
},
"ml_training": {
"title": "AA Prestakuntza",
"description": "Entrenatu zure adimen artifizial modelo pertsonalizatua"
"description": "Modelo pertsonalizatua"
},
"completion": {
"title": "Konfigurazioa Osatuta",
"description": "Ongi etorri zure kudeaketa sistema adimentsu honetara!"
"title": "Osatuta",
"description": "Dena prest!"
}
},
"navigation": {
@@ -174,6 +218,172 @@
}
}
},
"bakery_type": {
"title": "Zer motatako okindegia duzu?",
"subtitle": "Honek esperientzia pertsonalizatzen lagunduko digu eta behar dituzun funtzioak bakarrik erakusten",
"features_label": "Ezaugarriak",
"examples_label": "Adibideak",
"continue_button": "Jarraitu",
"help_text": "💡 Ez kezkatu, beti alda dezakezu hau geroago konfigurazioan",
"selected_info_title": "Zure okindegiarentzat ezin hobea",
"production": {
"name": "Ekoizpen Okindegia",
"description": "Oinarrizko osagaiak erabiliz hutsetik ekoizten dugu",
"feature1": "Errezeten kudeaketa osoa",
"feature2": "Osagaien eta kostuen kontrola",
"feature3": "Ekoizpen planifikazioa",
"feature4": "Lehengaien kalitate kontrola",
"example1": "Ogi artisanala",
"example2": "Gozogintza",
"example3": "Erreposteria",
"example4": "Pastelgintza",
"selected_info": "Errezeten, osagaien eta ekoizpenaren kudeaketa sistema oso bat konfiguratuko dugu zure lan-fluxura egokituta."
},
"retail": {
"name": "Salmenta Okindegia (Retail)",
"description": "Aurrez eginiko produktuak labe sartu eta saltzen ditugu",
"feature1": "Produktu amaituen kontrola",
"feature2": "Labe-sartzeko kudeaketa errazo",
"feature3": "Salmenta-puntuaren inbentario kontrola",
"feature4": "Salmenten eta galerak jarraipen",
"example1": "Aurrez labetuta ogia",
"example2": "Amaitzeko izoztutako produktuak",
"example3": "Salmentarako prest gozogintza",
"example4": "Hornitzaileen tartoak eta pastelak",
"selected_info": "Errezeten konplexutasunik gabe, inbentario kontrolan, labetzean eta salmentetan zentratutako sistema sinple bat konfiguratuko dugu."
},
"mixed": {
"name": "Okindegi Mistoa",
"description": "Geure ekoizpena produktu amaituak konbinatzen ditugu",
"feature1": "Errezeta propioak eta kanpo produktuak",
"feature2": "Kudeaketan malgutasun osoa",
"feature3": "Kostuen kontrol osoa",
"feature4": "Egokitasun maximoa",
"example1": "Geure ogia + hornitzaileko gozogintza",
"example2": "Geure pastelak + aurrez labetutakoak",
"example3": "Produktu artisanalak + industrialak",
"example4": "Sasoiaren araberako konbinazioa",
"selected_info": "Sistema malgu bat konfiguratuko dugu zure beharren arabera bai ekoizpen propioa bai kanpoko produktuak kudeatzeko aukera ematen dizuna."
}
},
"data_source": {
"title": "Nola nahiago duzu zure okindegia konfiguratu?",
"subtitle": "Aukeratu zure egungo egoerara hobekien egokitzen den metodoa",
"benefits_label": "Onurak",
"ideal_for_label": "Egokia hauentzat",
"estimated_time_label": "Gutxi gorabeherako denbora",
"continue_button": "Jarraitu",
"help_text": "💡 Metodoen artean edozein unetan alda dezakezu konfigurazio prozesuan",
"ai_assisted": {
"title": "AArekin Konfigurazio Adimentsua",
"description": "Igo zure salmenta historikoko datuak eta gure AAk automatikoki konfiguratuko dizu zure inbentarioa",
"benefit1": "⚡ Produktuen konfigurazio automatikoa",
"benefit2": "🎯 Kategorien araberako sailkapen adimentsua",
"benefit3": "💰 Kostu eta prezio historikoen analisia",
"benefit4": "📊 Salmenta ereduetan oinarritutako gomendioak",
"ideal1": "Salmenta historiala duten okindegiak",
"ideal2": "Beste sistema batetik migrazioa",
"ideal3": "Azkar konfiguratu behar duzu",
"time": "5-10 minutu",
"badge": "Gomendatua"
},
"ai_info_title": "Zer behar duzu AArekin konfiguratzeko?",
"ai_info1": "Salmenta fitxategia (CSV, Excel edo JSON)",
"ai_info2": "Gutxienez 1-3 hilabeteko datuak (gomendatua)",
"ai_info3": "Produktuen, prezioen eta kopuruen informazioa",
"manual": {
"title": "Pausoz Pausoko Eskuzko Konfigurazioa",
"description": "Konfiguratu zure okindegia hutsetik xehetasun bakoitza eskuz sartuz",
"benefit1": "🎯 Xehetasun guztien gaineko kontrol osoa",
"benefit2": "📝 Hutsetik hasteko ezin hobea",
"benefit3": "🧩 Pertsonalizazio osoa",
"benefit4": "✨ Datu historikorik behar gabe",
"ideal1": "Historialik gabeko okindegi berriak",
"ideal2": "Eskuzko kontrol osoa nahiago duzu",
"ideal3": "Oso konfigurazio espezifikoa",
"time": "15-20 minutu"
},
"manual_info_title": "Zer konfiguratuko dugu pausoz pauso?",
"manual_info1": "Hornitzaileak eta haien kontaktu datuak",
"manual_info2": "Osagaien eta produktuen inbentarioa",
"manual_info3": "Errezetak edo ekoizpen prozesuak",
"manual_info4": "Kalitate estandarrak eta taldea (aukerakoa)"
},
"processes": {
"title": "Ekoizpen Prozesuak",
"subtitle": "Definitu aurrez eginiko produktuak produktu amaitutan bihurtzeko erabiltzen dituzun prozesuak",
"your_processes": "Zure Prozesuak",
"add_new": "Prozesu Berria",
"add_button": "Prozesua Gehitu",
"hint": "💡 Gehitu gutxienez prozesu bat jarraitzeko",
"count": "{{count}} prozesu konfiguratuta",
"skip": "Oraingoz saltatu",
"continue": "Jarraitu",
"source": "Hemendik",
"finished": "Hona",
"templates": {
"title": "⚡ Hasi azkar txantiloiekin",
"subtitle": "Egin klik txantiloi batean gehitzeko",
"hide": "Ezkutatu"
},
"type": {
"baking": "Labetzea",
"decorating": "Apainketa",
"finishing": "Amaitze",
"assembly": "Muntatzea"
},
"form": {
"name": "Prozesuaren Izena",
"name_placeholder": "Adib: Ogiaren labetzea",
"source": "Jatorrizko Produktua",
"source_placeholder": "Adib: Aurrez egindako ogia",
"finished": "Produktu Amaitua",
"finished_placeholder": "Adib: Ogi freskoa",
"type": "Prozesu Mota",
"duration": "Iraupena (minutuak)",
"temperature": "Tenperatura (°C)",
"instructions": "Jarraibideak (aukerakoa)",
"instructions_placeholder": "Deskribatu prozesua...",
"cancel": "Ezeztatu",
"add": "Prozesua Gehitu"
}
},
"categorization": {
"title": "Sailkatu zure Produktuak",
"subtitle": "Lagundu gaitzazu ulertzera zeintzuk diren osagaiak (errezetetan erabiltzeko) eta zeintzuk produktu amaituak (saltzeko)",
"info_title": "Zergatik da garrantzitsua?",
"info_text": "Osagaiak errezetetan erabiltzen dira produktuak sortzeko. Produktu amaituak zuzenean saltzen dira. Sailkapen honek kostuak kalkulatzen eta ekoizpena behar bezala planifikatzen laguntzen du.",
"progress": "Sailkapen aurrerapena",
"accept_all_suggestions": "⚡ Onartu AAren gomendio guztiak",
"uncategorized": "Sailkatu gabe",
"ingredients_title": "Osagaiak",
"ingredients_help": "Errezetetan erabiltzeko",
"finished_products_title": "Produktu Amaituak",
"finished_products_help": "Zuzenean saltzeko",
"drag_here": "Arrastatu produktuak hona",
"ingredient": "Osagaia",
"finished_product": "Produktua",
"suggested_ingredient": "Iradokia: Osagaia",
"suggested_finished_product": "Iradokia: Produktua",
"incomplete_warning": "⚠️ Sailkatu produktu guztiak jarraitzeko"
},
"stock": {
"title": "Hasierako Stock Mailak",
"subtitle": "Sartu produktu bakoitzaren egungo kopuruak. Honek sistemak gaurdanik inbentarioa jarraitzea ahalbidetzen du.",
"info_title": "Zergatik da garrantzitsua?",
"info_text": "Hasierako stock-mailarik gabe, sistemak ezin dizu stock baxuari buruzko alertarik eman, ekoizpena planifikatu edo kostuak zuzen kalkulatu. Hartu une bat zure egungo kopuruak sartzeko.",
"progress": "Hartzeko aurrerapena",
"set_all_zero": "Ezarri dena 0an",
"skip_for_now": "Oraingoz saltatu (0an ezarriko da)",
"ingredients": "Osagaiak",
"finished_products": "Produktu Amaituak",
"incomplete_warning": "{{count}} produktu osatu gabe geratzen dira",
"incomplete_help": "Jarraitu dezakezu, baina kopuru guztiak sartzea gomendatzen dizugu inbentario-kontrol hobeagorako.",
"complete": "Konfigurazioa Osatu",
"continue_anyway": "Jarraitu hala ere",
"no_products_title": "Hasierako Stocka",
"no_products_message": "Stock-mailak geroago konfigura ditzakezu inbentario atalean."
},
"errors": {
"step_failed": "Errorea pauso honetan",
"data_invalid": "Datu baliogabeak",

View File

@@ -107,7 +107,11 @@
"historical_demand": "Eskaera historikoa",
"inventory_levels": "Inbentario mailak",
"ai_optimization": "IA optimizazioa",
"actions_required": "{{count}} elementuk zure onespena behar du aurrera jarraitu aurretik"
"actions_required": "{{count}} elementuk zure onespena behar du aurrera jarraitu aurretik",
"no_tenant_error": "Ez da inquilino ID aurkitu. Mesedez, ziurtatu saioa hasi duzula.",
"planning_started": "Plangintza behar bezala hasi da",
"planning_failed": "Errorea plangintza hastean",
"planning_error": "Errore bat gertatu da plangintza hastean"
},
"production_timeline": {
"title": "Zure Gaurko Ekoizpen Plana",

View File

@@ -1 +1,267 @@
{}
{
"title": "Errezeten Kudeaketa",
"subtitle": "Kudeatu zure okindegiaren errezetak",
"navigation": {
"all_recipes": "Errezeta Guztiak",
"active_recipes": "Errezeta Aktiboak",
"draft_recipes": "Zirriborroak",
"signature_recipes": "Errezeta Ezagunak",
"seasonal_recipes": "Denboraldiko Errezetak",
"production_batches": "Ekoizpen Loteak"
},
"actions": {
"create_recipe": "Errezeta Sortu",
"edit_recipe": "Errezeta Editatu",
"duplicate_recipe": "Errezeta Bikoiztu",
"activate_recipe": "Errezeta Aktibatu",
"archive_recipe": "Errezeta Artxibatu",
"delete_recipe": "Errezeta Ezabatu",
"view_recipe": "Errezeta Ikusi",
"check_feasibility": "Bideragarritasuna Egiaztatu",
"create_batch": "Lotea Sortu",
"start_production": "Ekoizpena Hasi",
"complete_batch": "Lotea Osatu",
"cancel_batch": "Lotea Ezeztatu",
"export_recipe": "Errezeta Esportatu",
"print_recipe": "Errezeta Inprimatu"
},
"fields": {
"name": "Errezeta Izena",
"recipe_code": "Errezeta Kodea",
"version": "Bertsioa",
"description": "Deskribapena",
"category": "Kategoria",
"cuisine_type": "Sukaldaritza Mota",
"difficulty_level": "Zailtasun Maila",
"yield_quantity": "Ekoizpen Kantitatea",
"yield_unit": "Ekoizpen Unitatea",
"prep_time": "Prestaketa Denbora",
"cook_time": "Sukaldaketa Denbora",
"total_time": "Denbora Guztira",
"rest_time": "Atseden Denbora",
"instructions": "Jarraibideak",
"preparation_notes": "Prestaketa Oharrak",
"storage_instructions": "Biltegiratzeko Jarraibideak",
"quality_standards": "Kalitate Estandarrak",
"serves_count": "Zati Kopurua",
"is_seasonal": "Denboraldikoa Da",
"season_start": "Denboraldi Hasiera",
"season_end": "Denboraldi Amaiera",
"is_signature": "Errezeta Ezaguna Da",
"target_margin": "Helburu Marjina",
"batch_multiplier": "Lote Biderkatzailea",
"min_batch_size": "Gutxieneko Lote Tamaina",
"max_batch_size": "Gehienezko Lote Tamaina",
"optimal_temperature": "Tenperatura Optimoa",
"optimal_humidity": "Hezetasun Optimoa",
"allergens": "Alergenoak",
"dietary_tags": "Dieta Etiketak",
"nutritional_info": "Nutrizio Informazioa"
},
"ingredients": {
"title": "Osagaiak",
"add_ingredient": "Osagaia Gehitu",
"remove_ingredient": "Osagaia Kendu",
"ingredient_name": "Osagaiaren Izena",
"quantity": "Kantitatea",
"unit": "Unitatea",
"alternative_quantity": "Ordezko Kantitatea",
"alternative_unit": "Ordezko Unitatea",
"preparation_method": "Prestaketa Metodoa",
"notes": "Osagaiaren Oharrak",
"is_optional": "Aukerakoa Da",
"ingredient_order": "Ordena",
"ingredient_group": "Taldea",
"substitutions": "Ordezpenak",
"substitution_ratio": "Ordezkapen Proportzioa",
"cost_per_unit": "Kostu Unitarioa",
"total_cost": "Kostu Totala",
"groups": {
"wet_ingredients": "Osagai Hezeak",
"dry_ingredients": "Osagai Lehorrak",
"spices": "Espezieak eta Apainkiak",
"toppings": "Gainekoak",
"fillings": "Betetzeak",
"decorations": "Apainkiak"
}
},
"status": {
"draft": "Zirriborroa",
"active": "Aktiboa",
"testing": "Probetan",
"archived": "Artxibatua",
"discontinued": "Etena"
},
"difficulty": {
"1": "Oso Erraza",
"2": "Erraza",
"3": "Ertaina",
"4": "Zaila",
"5": "Oso Zaila"
},
"units": {
"g": "gramoak",
"kg": "kilogramoak",
"ml": "mililitroak",
"l": "litroak",
"cups": "kikarak",
"tbsp": "koilarakada",
"tsp": "koilaratxo",
"units": "unitateak",
"pieces": "zatiak",
"%": "ehunekoa"
},
"categories": {
"bread": "Ogiak",
"pastry": "Gozogintza",
"cake": "Tartoak eta Pastelak",
"cookies": "Galletak",
"savory": "Gazidunak",
"desserts": "Postreak",
"seasonal": "Denboraldia",
"specialty": "Espezialitatea"
},
"dietary_tags": {
"vegan": "Beganoa",
"vegetarian": "Begetarianoa",
"gluten_free": "Glutenik Gabe",
"dairy_free": "Esnekiak Gabe",
"nut_free": "Fruitu Lehorrik Gabe",
"sugar_free": "Azukrerik Gabe",
"low_carb": "Karbohidrato Gutxi",
"keto": "Ketogenikoa",
"organic": "Organikoa"
},
"allergens": {
"gluten": "Glutena",
"dairy": "Esnekiak",
"eggs": "Arrautzak",
"nuts": "Fruitu Lehorrak",
"soy": "Soja",
"sesame": "Sezamoa",
"fish": "Arraina",
"shellfish": "Itsaskiak"
},
"production": {
"title": "Ekoizpena",
"batch_number": "Lote Zenbakia",
"production_date": "Ekoizpen Data",
"planned_quantity": "Planifikatutako Kantitatea",
"actual_quantity": "Benetako Kantitatea",
"yield_percentage": "Etekina Ehunekoa",
"priority": "Lehentasuna",
"assigned_staff": "Esleitutako Langilea",
"production_notes": "Ekoizpen Oharrak",
"quality_score": "Kalitate Puntuazioa",
"quality_notes": "Kalitate Oharrak",
"defect_rate": "Akats Tasa",
"rework_required": "Berregin Behar Da",
"waste_quantity": "Hondakin Kantitatea",
"waste_reason": "Hondakin Arrazoia",
"efficiency": "Eraginkortasuna",
"material_cost": "Materialen Kostua",
"labor_cost": "Lan Kostua",
"overhead_cost": "Gastu Orokorrak",
"total_cost": "Kostu Totala",
"cost_per_unit": "Unitateko Kostua",
"status": {
"planned": "Planifikatua",
"in_progress": "Abian",
"completed": "Osatua",
"failed": "Huts Egin Du",
"cancelled": "Ezeztatua"
},
"priority": {
"low": "Baxua",
"normal": "Normala",
"high": "Altua",
"urgent": "Larria"
}
},
"feasibility": {
"title": "Bideragarritasun Egiaztapena",
"feasible": "Bideragarria",
"not_feasible": "Ez Bideragarria",
"missing_ingredients": "Osagai Faltsuak",
"insufficient_ingredients": "Osagai Nahikorik Ez",
"batch_multiplier": "Lote Biderkatzailea",
"required_quantity": "Beharrezko Kantitatea",
"available_quantity": "Eskuragarri Dagoen Kantitatea",
"shortage": "Gabezia"
},
"statistics": {
"title": "Errezeta Estatistikak",
"total_recipes": "Errezeta Guztira",
"active_recipes": "Errezeta Aktiboak",
"signature_recipes": "Errezeta Ezagunak",
"seasonal_recipes": "Denboraldiko Errezetak",
"category_breakdown": "Kategoriaren Banaketa",
"most_popular": "Popularrenak",
"most_profitable": "Errentagarrienak",
"production_volume": "Ekoizpen Bolumena"
},
"filters": {
"all": "Guztiak",
"search_placeholder": "Bilatu errezetak...",
"status_filter": "Iragazi Egoeraren Arabera",
"category_filter": "Iragazi Kategoriaren Arabera",
"difficulty_filter": "Iragazi Zailtasunaren Arabera",
"seasonal_filter": "Denboraldiko Errezetak Bakarrik",
"signature_filter": "Errezeta Ezagunak Bakarrik",
"clear_filters": "Iragazkiak Garbitu"
},
"costs": {
"estimated_cost": "Kalkulatutako Kostua",
"last_calculated": "Azken Kalkulua",
"suggested_price": "Gomendatutako Prezioa",
"margin_percentage": "Marjina Ehunekoa",
"cost_breakdown": "Kostuen Banaketa",
"ingredient_costs": "Osagaien Kostuak",
"labor_costs": "Lan Kostuak",
"overhead_costs": "Gastu Orokorrak"
},
"messages": {
"recipe_created": "Errezeta ongi sortu da",
"recipe_updated": "Errezeta ongi eguneratu da",
"recipe_deleted": "Errezeta ongi ezabatu da",
"recipe_duplicated": "Errezeta ongi bikoiztu da",
"recipe_activated": "Errezeta ongi aktibatu da",
"batch_created": "Ekoizpen lotea ongi sortu da",
"batch_started": "Ekoizpena ongi hasi da",
"batch_completed": "Lotea ongi osatu da",
"batch_cancelled": "Lotea ongi ezeztatu da",
"feasibility_checked": "Bideragarritasuna egiaztatuta",
"loading_recipes": "Errezetak kargatzen...",
"loading_recipe": "Errezeta kargatzen...",
"no_recipes_found": "Ez da errezeta aurkitu",
"no_ingredients": "Ez dago osagairik gehituta",
"confirm_delete": "Ziur zaude errezeta hau ezabatu nahi duzula?",
"confirm_cancel_batch": "Ziur zaude lote hau ezeztatu nahi duzula?",
"recipe_name_required": "Errezeta izena beharrezkoa da",
"at_least_one_ingredient": "Gutxienez osagai bat gehitu behar duzu",
"invalid_quantity": "Kantitatea 0 baino handiagoa izan behar da",
"ingredient_required": "Osagai bat hautatu behar duzu"
},
"placeholders": {
"recipe_name": "Adib: Ogi Klasiko Hartziduna",
"recipe_code": "Adib: OGI-001",
"description": "Deskribatu errezeta honen ezaugarri bereziak...",
"preparation_notes": "Prestaketarako ohar bereziak...",
"storage_instructions": "Nola gorde produktu amaituak...",
"quality_standards": "Azken produktuaren kalitate irizpideak...",
"batch_number": "Adib: LOTE-20231201-001",
"production_notes": "Lote honetarako ohar zehatzak...",
"quality_notes": "Kalitateari buruzko oharrak...",
"waste_reason": "Hondakinaren arrazoia..."
},
"tooltips": {
"difficulty_level": "1 (oso erraza) eta 5 (oso zaila) bitarteko maila",
"yield_quantity": "Errezeta honek ekoizten duen kantitatea",
"batch_multiplier": "Errezeta eskalatzeko faktorea",
"target_margin": "Irabazi marjinaren helburua ehunekoan",
"optimal_temperature": "Ekoizpenerako tenperatura egokiena",
"optimal_humidity": "Ekoizpenerako hezetasun egokiena",
"is_seasonal": "Markatu denboraldi zehatz batekoa bada",
"is_signature": "Markatu okindegiaren errezeta berezia bada"
}
}

View File

@@ -5,7 +5,8 @@
"tabs": {
"information": "Informazioa",
"hours": "Ordutegiak",
"operations": "Ezarpenak"
"operations": "Ezarpenak",
"notifications": "Jakinarazpenak"
},
"information": {
"title": "Informazio Orokorra",