Improve UI and traslations
This commit is contained in:
@@ -169,7 +169,7 @@
|
||||
"email_required": "El correo electrónico es requerido",
|
||||
"email_invalid": "Ingresa un correo electrónico válido",
|
||||
"password_required": "La contraseña es requerida",
|
||||
"password_min_length": "La contraseña debe tener al menos {{min}} caracteres",
|
||||
"password_min_length": "La contraseña debe tener al menos {min} caracteres",
|
||||
"password_weak": "La contraseña es muy débil",
|
||||
"passwords_must_match": "Las contraseñas deben coincidir",
|
||||
"first_name_required": "El nombre es requerido",
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
},
|
||||
"post": {
|
||||
"read_more": "Leer artículo completo",
|
||||
"read_time": "{{time}} min"
|
||||
"read_time": "{time} min"
|
||||
},
|
||||
"categories": {
|
||||
"management": "Gestión",
|
||||
|
||||
@@ -375,12 +375,6 @@
|
||||
"terms": "Términos",
|
||||
"cookies": "Cookies"
|
||||
},
|
||||
"social_follow": "Síguenos en redes sociales",
|
||||
"social_labels": {
|
||||
"twitter": "Twitter",
|
||||
"linkedin": "LinkedIn",
|
||||
"github": "GitHub"
|
||||
},
|
||||
"made_with_love": "Hecho con amor en Madrid"
|
||||
},
|
||||
"breadcrumbs": {
|
||||
|
||||
83
frontend/src/locales/es/contact.json
Normal file
83
frontend/src/locales/es/contact.json
Normal file
@@ -0,0 +1,83 @@
|
||||
{
|
||||
"hero": {
|
||||
"badge": "Contacto y Soporte",
|
||||
"title": "Estamos Aquí Para",
|
||||
"title_accent": "Ayudarte",
|
||||
"subtitle": "¿Tienes preguntas? ¿Necesitas ayuda? Nuestro equipo está listo para asistirte"
|
||||
},
|
||||
"methods": {
|
||||
"title": "Múltiples Formas de Contactar",
|
||||
"subtitle": "Elige el método que más te convenga",
|
||||
"email": {
|
||||
"title": "Email",
|
||||
"description": "soporte@panaderia-ia.com",
|
||||
"detail": "Respuesta en menos de 4 horas"
|
||||
},
|
||||
"phone": {
|
||||
"title": "Teléfono",
|
||||
"description": "+34 XXX XXX XXX",
|
||||
"detail": "Lunes a Viernes: 10:00 - 19:00 CET"
|
||||
},
|
||||
"office": {
|
||||
"title": "Oficina",
|
||||
"description": "Madrid, España",
|
||||
"detail": "Con cita previa"
|
||||
}
|
||||
},
|
||||
"form": {
|
||||
"title": "Envíanos un Mensaje",
|
||||
"subtitle": "Completa el formulario y te responderemos lo antes posible",
|
||||
"success": {
|
||||
"title": "¡Mensaje enviado!",
|
||||
"message": "Te responderemos pronto."
|
||||
},
|
||||
"error": {
|
||||
"title": "Error al enviar.",
|
||||
"message": "Por favor, inténtalo de nuevo."
|
||||
},
|
||||
"fields": {
|
||||
"name": "Nombre Completo",
|
||||
"name_placeholder": "Tu nombre",
|
||||
"email": "Email",
|
||||
"email_placeholder": "tu@email.com",
|
||||
"phone": "Teléfono (opcional)",
|
||||
"phone_placeholder": "+34 XXX XXX XXX",
|
||||
"bakery_name": "Nombre de tu Panadería (opcional)",
|
||||
"bakery_name_placeholder": "Panadería Ejemplo",
|
||||
"type": "Tipo de Consulta",
|
||||
"type_options": {
|
||||
"general": "Consulta General",
|
||||
"technical": "Soporte Técnico",
|
||||
"sales": "Información Comercial",
|
||||
"feedback": "Feedback/Sugerencias"
|
||||
},
|
||||
"subject": "Asunto",
|
||||
"subject_placeholder": "¿En qué podemos ayudarte?",
|
||||
"message": "Mensaje",
|
||||
"message_placeholder": "Cuéntanos más sobre tu consulta o problema..."
|
||||
},
|
||||
"submit": "Enviar Mensaje",
|
||||
"sending": "Enviando...",
|
||||
"privacy": "Al enviar este formulario, aceptas nuestra <privacyLink>Política de Privacidad</privacyLink>",
|
||||
"required_indicator": "*"
|
||||
},
|
||||
"footer": {
|
||||
"hours": {
|
||||
"title": "Horarios de Atención",
|
||||
"email": {
|
||||
"label": "Email:",
|
||||
"detail": "24/7 (respuesta en menos de 4 horas en horario laboral)"
|
||||
},
|
||||
"phone": {
|
||||
"label": "Teléfono:",
|
||||
"detail": "Lunes a Viernes: 10:00 - 19:00 CET (solo clientes activos)"
|
||||
}
|
||||
},
|
||||
"faq": {
|
||||
"title": "¿Buscas Respuestas Rápidas?",
|
||||
"description": "Muchas preguntas ya tienen respuesta en nuestro Centro de Ayuda y Documentación",
|
||||
"help_center": "Ver Centro de Ayuda →",
|
||||
"docs": "Leer Documentación →"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -190,7 +190,7 @@
|
||||
}
|
||||
},
|
||||
"production": {
|
||||
"scheduled_based_on": "Programado según {{type}}",
|
||||
"scheduled_based_on": "Programado según {type}",
|
||||
"status": {
|
||||
"completed": "COMPLETADO",
|
||||
"in_progress": "EN PROGRESO",
|
||||
@@ -225,26 +225,26 @@
|
||||
},
|
||||
"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}}",
|
||||
"production_late_to_start": "{count} lote{count, plural, one {} other {s}} no iniciado{count, plural, one {} other {s}} a tiempo",
|
||||
"production_delayed_and_late": "{delayed} lote{delayed, plural, one {} other {s}} retrasado{delayed, plural, one {} other {s}} y {late} no iniciado{late, plural, one {} other {s}}",
|
||||
"production_issues": "{total} problema{total, plural, one {} other {s}} de producción",
|
||||
"production_ai_prevented": "IA evitó {count} retraso{count, plural, one {} other {s}} de producción",
|
||||
"production_delayed": "{count} lote{count, plural, one {} other {s} de producción retrasado{count, plural, one {} other {s}}",
|
||||
"production_late_to_start": "{count} lote{count, plural, one {} other {s} no iniciado{count, plural, one {} other {s} a tiempo}}",
|
||||
"production_delayed_and_late": "{delayed} lote{delayed, plural, one {} other {s} retrasado{delayed, plural, one {} other {s} y {late} no iniciado{late, plural, one {} other {s}}",
|
||||
"production_issues": "{total} problema{total, plural, one {} other {s} de producción}",
|
||||
"production_ai_prevented": "IA evitó {count} retraso{count, plural, one {} other {s} de producción}",
|
||||
"all_ingredients_in_stock": "Todos los ingredientes en stock",
|
||||
"ingredients_out_of_stock": "{count} ingrediente{count, plural, one {} other {s}} sin stock",
|
||||
"inventory_ai_prevented": "IA evitó {count} problema{count, plural, one {} other {s}} de inventario",
|
||||
"ingredients_out_of_stock": "{count} ingrediente{count, plural, one {} other {s} sin stock}",
|
||||
"inventory_ai_prevented": "IA evitó {count} problema{count, plural, one {} other {s} de inventario}",
|
||||
"no_pending_approvals": "Sin aprobaciones pendientes",
|
||||
"approvals_awaiting": "{count} orden{count, plural, one {} other {es}} de compra esperando aprobación",
|
||||
"procurement_ai_prevented": "IA creó {count} orden{count, plural, one {} other {es}} de compra automáticamente",
|
||||
"approvals_awaiting": "{count} orden{count, plural, one {} other {es} de compra esperando aprobación}",
|
||||
"procurement_ai_prevented": "IA creó {count} orden{count, plural, one {} other {es} de compra automáticamente}",
|
||||
"deliveries_on_track": "Todas las entregas a tiempo",
|
||||
"deliveries_overdue": "{count} entrega{count, plural, one {} other {s}} atrasada{count, plural, one {} other {s}}",
|
||||
"deliveries_ai_prevented": "IA evitó {count} problema{count, plural, one {} other {s}} de entrega",
|
||||
"deliveries_pending": "{count} entrega{count, plural, one {} other {s}} pendiente{count, plural, one {} other {s}}",
|
||||
"deliveries_overdue": "{count} entrega{count, plural, one {} other {s} atrasada{count, plural, one {} other {s}}",
|
||||
"deliveries_ai_prevented": "IA evitó {count} problema{count, plural, one {} other {s} de entrega}",
|
||||
"deliveries_pending": "{count} entrega{count, plural, one {} other {s} pendiente{count, plural, one {} other {s}}",
|
||||
"all_systems_operational": "Todos los sistemas operativos",
|
||||
"critical_issues": "{count} problema{count, plural, one {} other {s}} crítico{count, plural, one {} other {s}}",
|
||||
"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_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"
|
||||
},
|
||||
@@ -336,7 +336,7 @@
|
||||
"user_needed": "Usuario Necesario",
|
||||
"needs_review": "necesita tu revisión",
|
||||
"all_handled": "todo manejado por IA",
|
||||
"prevented_badge": "{count} problema{{count, plural, one {} other {s}}} evitado{{count, plural, one {} other {s}}}",
|
||||
"prevented_badge": "{count} problema{count, plural, one {} other {s} evitado{count, plural, one {} other {s}}",
|
||||
"prevented_description": "La IA manejó estos proactivamente antes de que se convirtieran en problemas",
|
||||
"analyzed_title": "Lo Que Analicé",
|
||||
"actions_taken": "Lo Que Hice",
|
||||
@@ -473,7 +473,7 @@
|
||||
"no_forecast_data": "No hay datos de pronóstico disponibles",
|
||||
"no_performance_data": "No hay datos de rendimiento disponibles",
|
||||
"no_distribution_data": "No hay datos de distribución disponibles",
|
||||
"performance_based_on": "Rendimiento basado en {{metric}} durante {{period}} días",
|
||||
"performance_based_on": "Rendimiento basado en {metric} durante {period} días",
|
||||
"network_performance": "Rendimiento de Red",
|
||||
"performance_description": "Comparar rendimiento en todas las tiendas de tu red",
|
||||
"performance_variance": "Variación de Rendimiento",
|
||||
@@ -524,7 +524,7 @@
|
||||
"set_network_targets": "Establecer Objetivos de Red",
|
||||
"schedule_knowledge_sharing": "Programar Compartición de Conocimientos",
|
||||
"create_improvement_plan": "Crear Plan de Mejora",
|
||||
"performance_based_on_period": "Rendimiento basado en {{metric}} durante {{period}} días",
|
||||
"performance_based_on_period": "Rendimiento basado en {metric} durante {period} días",
|
||||
"ranking": "Clasificación",
|
||||
"rank": "Posición",
|
||||
"outlet": "Tienda",
|
||||
@@ -656,7 +656,7 @@
|
||||
"new_dashboard": {
|
||||
"system_status": {
|
||||
"title": "Estado del Sistema",
|
||||
"issues_requiring_action": "{count, plural, one {# problema requiere} other {# problemas requieren}} tu acción",
|
||||
"issues_requiring_action": "{count, plural, one {# problema requiere} other {# problemas requieren} tu acción}",
|
||||
"all_clear": "Todos los sistemas funcionan correctamente",
|
||||
"never_run": "Nunca ejecutado",
|
||||
"action_needed_label": "acción requerida",
|
||||
@@ -673,7 +673,7 @@
|
||||
},
|
||||
"pending_purchases": {
|
||||
"title": "Compras Pendientes",
|
||||
"count": "{count, plural, one {# orden} other {# órdenes}} esperando aprobación",
|
||||
"count": "{count, plural, one {# orden} other {# órdenes} esperando aprobación}",
|
||||
"no_pending": "Sin órdenes de compra pendientes",
|
||||
"all_clear": "Sin órdenes de compra pendientes de aprobación",
|
||||
"po_number": "OC #{number}",
|
||||
@@ -684,10 +684,10 @@
|
||||
"ai_reasoning": "IA creó esta OC porque:",
|
||||
"reasoning": {
|
||||
"low_stock": "{ingredient} se agotará en {days, plural, =0 {menos de un día} one {# día} other {# días}}",
|
||||
"low_stock_detailed": "{count, plural, one {# ingrediente crítico} other {# ingredientes críticos}} en riesgo: {products}. Agotamiento más temprano en {days, plural, =0 {<1 día} one {1 día} other {# días}}, afectando {batches, plural, one {# lote} other {# lotes}}. Pérdida potencial: €{loss}",
|
||||
"low_stock_detailed": "{count, plural, one {# ingrediente crítico} other {# ingredientes críticos} en riesgo: {products}. Agotamiento más temprano en {days, plural, =0 {<1 día} one {1 día} other {# días}, afectando {batches, plural, one {# lote} other {# lotes}. Pérdida potencial: €{loss}}",
|
||||
"demand_forecast": "Se espera que la demanda de {product} aumente un {increase}%",
|
||||
"production_requirement": "Se necesitan {products} para {batches, plural, one {# lote} other {# lotes}} de producción en {days, plural, =0 {menos de un día} one {# día} other {# días}}",
|
||||
"safety_stock": "Reabastecimiento de stock de seguridad: {count, plural, one {# producto} other {# productos}} (actual: {current}, objetivo: {target})",
|
||||
"production_requirement": "Se necesitan {products} para {batches, plural, one {# lote} other {# lotes} de producción en {days, plural, =0 {menos de un día} one {# día} other {# días}}",
|
||||
"safety_stock": "Reabastecimiento de stock de seguridad: {count, plural, one {# producto} other {# productos} (actual: {current}, objetivo: {target})}",
|
||||
"supplier_contract": "Contrato con {supplier} para {products}",
|
||||
"seasonal_demand": "Aumento estacional del {increase}% en {products} para {season}",
|
||||
"forecast_demand": "Demanda prevista de {product} con {confidence}% de confianza para los próximos {period, plural, one {# día} other {# días}}"
|
||||
@@ -695,7 +695,7 @@
|
||||
},
|
||||
"pending_deliveries": {
|
||||
"title": "Entregas Pendientes",
|
||||
"count": "{count, plural, one {# entrega} other {# entregas}} esperadas hoy",
|
||||
"count": "{count, plural, one {# entrega} other {# entregas} esperadas hoy}",
|
||||
"no_deliveries": "Sin entregas esperadas hoy",
|
||||
"all_clear": "Sin entregas pendientes hoy",
|
||||
"overdue_section": "Entregas Atrasadas",
|
||||
@@ -709,7 +709,7 @@
|
||||
},
|
||||
"production_status": {
|
||||
"title": "Estado de Producción",
|
||||
"count": "{count, plural, one {# lote} other {# lotes}} hoy",
|
||||
"count": "{count, plural, one {# lote} other {# lotes} hoy}",
|
||||
"no_production": "Sin producción programada para hoy",
|
||||
"all_clear": "Sin producción programada para hoy",
|
||||
"late_section": "Atrasados para Empezar",
|
||||
@@ -761,7 +761,7 @@
|
||||
"batch_delayed": "Lote con Inicio Retrasado",
|
||||
"generic": "Alerta de Producción",
|
||||
"active": "Activo",
|
||||
"affected_orders": "{count, plural, one {# pedido} other {# pedidos}} afectados",
|
||||
"affected_orders": "{count, plural, one {# pedido} other {# pedidos} afectados}",
|
||||
"delay_hours": "{hours}h de retraso",
|
||||
"financial_impact": "€{amount} de impacto",
|
||||
"urgent_in": "Urgente en {hours}h"
|
||||
|
||||
@@ -40,10 +40,10 @@
|
||||
"invalid_date": "Fecha inválida",
|
||||
"invalid_number": "Número inválido",
|
||||
"invalid_url": "URL inválida",
|
||||
"min_length": "Mínimo {{min}} caracteres",
|
||||
"max_length": "Máximo {{max}} caracteres",
|
||||
"min_value": "Valor mínimo: {{min}}",
|
||||
"max_value": "Valor máximo: {{max}}",
|
||||
"min_length": "Mínimo {min} caracteres",
|
||||
"max_length": "Máximo {max} caracteres",
|
||||
"min_value": "Valor mínimo: {min}",
|
||||
"max_value": "Valor máximo: {max}",
|
||||
"invalid_format": "Formato inválido",
|
||||
"invalid_selection": "Selección inválida",
|
||||
"file_too_large": "Archivo demasiado grande",
|
||||
|
||||
@@ -797,15 +797,10 @@
|
||||
{
|
||||
"category": "support",
|
||||
"question": "¿Qué tipo de soporte ofrecen?",
|
||||
"answer": "Soporte 24/7 en español por: Email (respuesta en <4h), Chat en vivo (9:00-21:00), Videollamada (con cita previa). Durante el piloto, también tienes acceso directo a los fundadores por WhatsApp."
|
||||
"answer": "Soporte 24/7 en español por: Email (respuesta en <4h), Videollamada (con cita previa). Durante el piloto, también tienes acceso directo a los fundadores por WhatsApp."
|
||||
}
|
||||
],
|
||||
"contact": {
|
||||
"liveChat": {
|
||||
"title": "Chat en Vivo",
|
||||
"description": "Respuesta inmediata de 9:00 a 21:00",
|
||||
"action": "Iniciar Chat"
|
||||
},
|
||||
"email": {
|
||||
"title": "Email",
|
||||
"description": "Respuesta en menos de 4 horas",
|
||||
@@ -818,9 +813,8 @@
|
||||
"action": "Ver Docs"
|
||||
},
|
||||
"hours": {
|
||||
"liveChat": "Lunes a Viernes 9:00 - 21:00, Sábados 10:00 - 18:00",
|
||||
"email": "24/7 (respuesta en menos de 4 horas en horario laboral)",
|
||||
"phone": "Lunes a Viernes 10:00 - 19:00 (solo para clientes activos)"
|
||||
"email": "24/7 (respuesta en 4 horas en horario laboral)",
|
||||
"phone": "Lunes a Viernes 10:00 - 19:00 (solo clientes activos)"
|
||||
}
|
||||
},
|
||||
"resources": {
|
||||
@@ -840,4 +834,4 @@
|
||||
"action": "Leer Tips"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -93,9 +93,9 @@
|
||||
},
|
||||
|
||||
"messages": {
|
||||
"training_started": "Entrenamiento iniciado para {{name}}",
|
||||
"training_started": "Entrenamiento iniciado para {name}",
|
||||
"training_error": "Error al iniciar el entrenamiento",
|
||||
"retraining_started": "Reentrenamiento iniciado para {{name}}",
|
||||
"retraining_started": "Reentrenamiento iniciado para {name}",
|
||||
"retraining_error": "Error al reentrenar el modelo"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -244,8 +244,8 @@
|
||||
"deployment": "Despliegue",
|
||||
"processing": "Procesando..."
|
||||
},
|
||||
"estimated_time": "Tiempo estimado: {{minutes}} minutos",
|
||||
"estimated_time_remaining": "Tiempo restante estimado: {{time}}",
|
||||
"estimated_time": "Tiempo estimado: {minutes} minutos",
|
||||
"estimated_time_remaining": "Tiempo restante estimado: {time}",
|
||||
"description": "Estamos creando un modelo de IA personalizado para tu panadería basado en tus datos históricos.",
|
||||
"training_info": {
|
||||
"title": "¿Qué sucede durante el entrenamiento?",
|
||||
|
||||
@@ -115,10 +115,10 @@
|
||||
"auto_approve": "🤖 Auto-aprobable"
|
||||
},
|
||||
"messages": {
|
||||
"confirm_send": "¿Enviar la orden {{po_number}} al proveedor?",
|
||||
"confirm_receive": "¿Confirmar recepción de la orden {{po_number}}?",
|
||||
"confirm_items": "¿Marcar items como recibidos para {{po_number}}?",
|
||||
"confirm_complete": "¿Completar la orden {{po_number}}?",
|
||||
"cancel_reason": "¿Por qué deseas cancelar la orden {{po_number}}?"
|
||||
"confirm_send": "¿Enviar la orden {po_number} al proveedor?",
|
||||
"confirm_receive": "¿Confirmar recepción de la orden {po_number}?",
|
||||
"confirm_items": "¿Marcar items como recibidos para {po_number}?",
|
||||
"confirm_complete": "¿Completar la orden {po_number}?",
|
||||
"cancel_reason": "¿Por qué deseas cancelar la orden {po_number}?"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
{
|
||||
"orchestration": {
|
||||
"daily_summary": "{purchase_orders_count, plural, =0 {} =1 {Creé 1 orden de compra} other {Creé {purchase_orders_count} órdenes de compra}}{purchase_orders_count, plural, =0 {} other { y }}{production_batches_count, plural, =0 {ningún lote de producción} =1 {programé 1 lote de producción} other {programé {production_batches_count} lotes de producción}}. {critical_items_count, plural, =0 {Todo en stock.} =1 {1 artículo crítico necesita atención} other {{critical_items_count} artículos críticos necesitan atención}}{total_financial_impact_eur, select, 0 {} other { (€{total_financial_impact_eur} en riesgo)}}{min_depletion_hours, select, 0 {} other { - {min_depletion_hours}h hasta agotamiento}}."
|
||||
"daily_summary": "{purchase_orders_count, plural, =0 {} =1 {Creé 1 orden de compra} other {Creé {purchase_orders_count} órdenes de compra}{purchase_orders_count, plural, =0 {} other { y }{production_batches_count, plural, =0 {ningún lote de producción} =1 {programé 1 lote de producción} other {programé {production_batches_count} lotes de producción}. {critical_items_count, plural, =0 {Todo en stock.} =1 {1 artículo crítico necesita atención} other {critical_items_count} artículos críticos necesitan atención}{total_financial_impact_eur, select, 0 {} other { (€{total_financial_impact_eur} en riesgo)}{min_depletion_hours, select, 0 {} other { - {min_depletion_hours}h hasta agotamiento}.}}"
|
||||
},
|
||||
"purchaseOrder": {
|
||||
"low_stock_detection": "Stock bajo para {supplier_name}. El stock actual de {product_names_joined} se agotará en {days_until_stockout} días.",
|
||||
"low_stock_detection_detailed": "{critical_product_count, plural, =1 {{critical_products_0} se agotará en {min_depletion_hours} horas} other {{critical_product_count} productos críticos escasos}}. Con entrega de {supplier_lead_time_days} días de {supplier_name}, debemos pedir {order_urgency, select, critical {INMEDIATAMENTE} urgent {HOY} important {pronto} other {ahora}} para evitar {affected_batches_count, plural, =0 {retrasos en producción} =1 {interrupción del lote {affected_batches_0}} other {interrupción de {affected_batches_count} lotes}}{potential_loss_eur, select, 0 {} other { (€{potential_loss_eur} en riesgo)}}.",
|
||||
"low_stock_detection_detailed": "{critical_product_count, plural, =1 {critical_products_0} se agotará en {min_depletion_hours} horas} other {critical_product_count} productos críticos escasos}. Con entrega de {supplier_lead_time_days} días de {supplier_name}, debemos pedir {order_urgency, select, critical {INMEDIATAMENTE} urgent {HOY} important {pronto} other {ahora} para evitar {affected_batches_count, plural, =0 {retrasos en producción} =1 {interrupción del lote {affected_batches_0} other {interrupción de {affected_batches_count} lotes}{potential_loss_eur, select, 0 {} other { (€{potential_loss_eur} en riesgo)}.}}",
|
||||
"forecast_demand": "Pedido programado basado en pronóstico de demanda de {forecast_period_days} días para {product_names_joined} de {supplier_name}.",
|
||||
"safety_stock_replenishment": "Reposición de stock de seguridad para {product_names_joined} de {supplier_name}.",
|
||||
"supplier_contract": "Pedido programado según contrato con {supplier_name}.",
|
||||
@@ -23,12 +23,12 @@
|
||||
"regular_schedule": "Producción programada regular de {product_name}."
|
||||
},
|
||||
"consequence": {
|
||||
"stockout_risk": "Riesgo de desabastecimiento en {{impact_days}} días. Productos afectados: {{affected_products_joined}}.",
|
||||
"insufficient_supply": "Suministro insuficiente para período de {{impact_days}} días.",
|
||||
"production_delay": "Posible retraso en producción de {{delay_hours}} horas.",
|
||||
"stockout_risk": "Riesgo de desabastecimiento en {impact_days} días. Productos afectados: {affected_products_joined}.",
|
||||
"insufficient_supply": "Suministro insuficiente para período de {impact_days} días.",
|
||||
"production_delay": "Posible retraso en producción de {delay_hours} horas.",
|
||||
"customer_commitment": "Compromiso de entrega al cliente en riesgo.",
|
||||
"quality_issue": "Los estándares de calidad pueden verse comprometidos.",
|
||||
"cost_increase": "Los costos de materiales pueden aumentar un {{percentage}}%."
|
||||
"cost_increase": "Los costos de materiales pueden aumentar un {percentage}%."
|
||||
},
|
||||
"severity": {
|
||||
"critical": "Crítico",
|
||||
@@ -50,27 +50,27 @@
|
||||
"NO_DEMAND_DATA": "No hay datos históricos de demanda disponibles (se requieren mínimo 2 puntos de datos)"
|
||||
},
|
||||
"safetyStock": {
|
||||
"statistical_z_score": "Stock de seguridad calculado con método estadístico (nivel de servicio {{service_level}}%, z-score {{z_score}}). Basado en desviación estándar de demanda {{demand_std_dev}} y tiempo de entrega de {{lead_time_days}} días. Resultado: {{safety_stock}} unidades.",
|
||||
"advanced_variability": "Stock de seguridad calculado con análisis avanzado de variabilidad. Considera tanto la variabilidad de demanda (σ={{demand_std_dev}}) como la incertidumbre del tiempo de entrega (σ={{lead_time_std_dev}} días). Resultado: {{safety_stock}} unidades.",
|
||||
"fixed_percentage": "Stock de seguridad establecido en {{percentage}}% de la demanda de {{lead_time_days}} días ({{lead_time_demand}} unidades). Resultado: {{safety_stock}} unidades.",
|
||||
"error_lead_time_invalid": "No se puede calcular el stock de seguridad: el tiempo de entrega ({{lead_time_days}} días) o la desviación estándar de demanda ({{demand_std_dev}}) no son válidos.",
|
||||
"error_insufficient_data": "Historial de demanda insuficiente para calcular stock de seguridad ({{data_points}} puntos de datos, se necesitan {{min_required}})."
|
||||
"statistical_z_score": "Stock de seguridad calculado con método estadístico (nivel de servicio {service_level}%, z-score {z_score}). Basado en desviación estándar de demanda {demand_std_dev} y tiempo de entrega de {lead_time_days} días. Resultado: {safety_stock} unidades.",
|
||||
"advanced_variability": "Stock de seguridad calculado con análisis avanzado de variabilidad. Considera tanto la variabilidad de demanda (σ={demand_std_dev}) como la incertidumbre del tiempo de entrega (σ={lead_time_std_dev} días). Resultado: {safety_stock} unidades.",
|
||||
"fixed_percentage": "Stock de seguridad establecido en {percentage}% de la demanda de {lead_time_days} días ({lead_time_demand} unidades). Resultado: {safety_stock} unidades.",
|
||||
"error_lead_time_invalid": "No se puede calcular el stock de seguridad: el tiempo de entrega ({lead_time_days} días) o la desviación estándar de demanda ({demand_std_dev}) no son válidos.",
|
||||
"error_insufficient_data": "Historial de demanda insuficiente para calcular stock de seguridad ({data_points} puntos de datos, se necesitan {min_required})."
|
||||
},
|
||||
"priceForecaster": {
|
||||
"decrease_expected": "Se espera que el precio disminuya {{change_pct}}% en los próximos {{forecast_days}} días. Actual: €{{current_price}}, pronóstico: €{{forecast_mean}}. Recomendación: Esperar mejor precio.",
|
||||
"increase_expected": "Se espera que el precio aumente {{change_pct}}% en los próximos {{forecast_days}} días. Actual: €{{current_price}}, pronóstico: €{{forecast_mean}}. Recomendación: Comprar ahora para asegurar el precio actual.",
|
||||
"high_volatility": "Alta volatilidad de precio detectada (CV={{coefficient}}). Cambio diario promedio de precio: {{avg_daily_change_pct}}%. Recomendación: Esperar caída de precio.",
|
||||
"below_average": "El precio actual €{{current_price}} está {{below_avg_pct}}% por debajo del promedio histórico (€{{mean_price}}). Oportunidad favorable de compra.",
|
||||
"stable": "El precio es estable. Actual: €{{current_price}}, pronóstico: €{{forecast_mean}} (se espera cambio de {{expected_change_pct}}%). Se recomienda tiempo de compra normal.",
|
||||
"insufficient_data": "Historial de precios insuficiente para pronóstico confiable ({{history_days}} días disponibles, se necesitan {{min_required_days}} días)."
|
||||
"decrease_expected": "Se espera que el precio disminuya {change_pct}% en los próximos {forecast_days} días. Actual: €{current_price}, pronóstico: €{forecast_mean}. Recomendación: Esperar mejor precio.",
|
||||
"increase_expected": "Se espera que el precio aumente {change_pct}% en los próximos {forecast_days} días. Actual: €{current_price}, pronóstico: €{forecast_mean}. Recomendación: Comprar ahora para asegurar el precio actual.",
|
||||
"high_volatility": "Alta volatilidad de precio detectada (CV={coefficient}). Cambio diario promedio de precio: {avg_daily_change_pct}%. Recomendación: Esperar caída de precio.",
|
||||
"below_average": "El precio actual €{current_price} está {below_avg_pct}% por debajo del promedio histórico (€{mean_price}). Oportunidad favorable de compra.",
|
||||
"stable": "El precio es estable. Actual: €{current_price}, pronóstico: €{forecast_mean} (se espera cambio de {expected_change_pct}%). Se recomienda tiempo de compra normal.",
|
||||
"insufficient_data": "Historial de precios insuficiente para pronóstico confiable ({history_days} días disponibles, se necesitan {min_required_days} días)."
|
||||
},
|
||||
"optimization": {
|
||||
"eoq_base": "Cantidad Económica de Pedido calculada: {{eoq}} unidades (requerido: {{required_quantity}}, demanda anual: {{annual_demand}}). Optimizado para {{optimal_quantity}} unidades.",
|
||||
"moq_applied": "Restricción de cantidad mínima de pedido aplicada: {{moq}} unidades.",
|
||||
"max_applied": "Restricción de cantidad máxima de pedido aplicada: {{max_qty}} unidades.",
|
||||
"no_tiers": "No hay niveles de precio disponibles para este producto. Cantidad base: {{base_quantity}} unidades a €{{unit_price}} por unidad.",
|
||||
"current_tier": "Nivel de precio actual: €{{current_tier_price}} por unidad para {{base_quantity}} unidades (total: €{{base_cost}}).",
|
||||
"tier_upgraded": "¡Actualizado a mejor nivel de precio! Pedir {{tier_min_qty}} unidades ({{additional_qty}} extra) a €{{tier_price}} por unidad ahorra €{{savings}} comparado con {{base_quantity}} unidades a €{{base_price}}."
|
||||
"eoq_base": "Cantidad Económica de Pedido calculada: {eoq} unidades (requerido: {required_quantity}, demanda anual: {annual_demand}). Optimizado para {optimal_quantity} unidades.",
|
||||
"moq_applied": "Restricción de cantidad mínima de pedido aplicada: {moq} unidades.",
|
||||
"max_applied": "Restricción de cantidad máxima de pedido aplicada: {max_qty} unidades.",
|
||||
"no_tiers": "No hay niveles de precio disponibles para este producto. Cantidad base: {base_quantity} unidades a €{unit_price} por unidad.",
|
||||
"current_tier": "Nivel de precio actual: €{current_tier_price} por unidad para {base_quantity} unidades (total: €{base_cost}).",
|
||||
"tier_upgraded": "¡Actualizado a mejor nivel de precio! Pedir {tier_min_qty} unidades ({additional_qty} extra) a €{tier_price} por unidad ahorra €{savings} comparado con {base_quantity} unidades a €{base_price}."
|
||||
},
|
||||
"jtbd": {
|
||||
"health_status": {
|
||||
@@ -80,12 +80,12 @@
|
||||
"green_simple": "✅ Todo listo para hoy",
|
||||
"yellow_simple": "⚠️ Algunas cosas necesitan atención",
|
||||
"red_simple": "🔴 Problemas críticos requieren acción",
|
||||
"yellow_simple_with_count": "⚠️ {count} acción{count, plural, one {} other {es}} necesaria{count, plural, one {} other {s}}",
|
||||
"yellow_simple_with_count": "⚠️ {count} acción{count, plural, one {} other {es} necesaria{count, plural, one {} other {s}}",
|
||||
"last_updated": "Última actualización",
|
||||
"next_check": "Próxima verificación",
|
||||
"never": "Nunca",
|
||||
"critical_issues": "{count} problema{count, plural, one {} other {s}} crítico{count, plural, one {} other {s}}",
|
||||
"actions_needed": "{count} acción{count, plural, one {} other {es}} necesaria{count, plural, one {} other {s}}"
|
||||
"critical_issues": "{count} problema{count, plural, one {} other {s} crítico{count, plural, one {} other {s}}",
|
||||
"actions_needed": "{count} acción{count, plural, one {} other {es} necesaria{count, plural, one {} other {s}}"
|
||||
},
|
||||
"action_queue": {
|
||||
"title": "Qué Necesita Tu Atención",
|
||||
@@ -96,7 +96,7 @@
|
||||
"estimated_time": "Tiempo estimado",
|
||||
"all_caught_up": "¡Todo al día!",
|
||||
"no_actions": "No hay acciones que requieran tu atención en este momento.",
|
||||
"show_more": "Mostrar {count} Acción{count, plural, one {} other {es}} Más",
|
||||
"show_more": "Mostrar {count} Acción{count, plural, one {} other {es} Más}",
|
||||
"show_less": "Mostrar Menos",
|
||||
"total": "total",
|
||||
"critical": "críticas",
|
||||
@@ -121,17 +121,17 @@
|
||||
"run_planning": "Ejecutar Planificación Diaria",
|
||||
"run_info": "Ejecución de orquestación #{runNumber}",
|
||||
"took": "Duró {seconds}s",
|
||||
"created_pos": "{count} orden{count, plural, one {} other {es}} de compra creada{count, plural, one {} other {s}}",
|
||||
"scheduled_batches": "{count} lote{count, plural, one {} other {s}} de producción programado{count, plural, one {} other {s}}",
|
||||
"created_pos": "{count} orden{count, plural, one {} other {es} de compra creada{count, plural, one {} other {s}}",
|
||||
"scheduled_batches": "{count} lote{count, plural, one {} other {s} de producción programado{count, plural, one {} other {s}}",
|
||||
"show_more": "Mostrar {count} más",
|
||||
"show_less": "Mostrar menos",
|
||||
"no_actions": "¡No se necesitan nuevas acciones - todo va según lo planeado!",
|
||||
"based_on": "Basado en:",
|
||||
"customer_orders": "{count} pedido{count, plural, one {} other {s}} de cliente",
|
||||
"customer_orders": "{count} pedido{count, plural, one {} other {s} de cliente}",
|
||||
"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",
|
||||
@@ -170,9 +170,9 @@
|
||||
}
|
||||
},
|
||||
"types": {
|
||||
"low_stock_detection": "Stock bajo detectado para {{product_name}}. El stock se agotará en {{days_until_stockout}} días.",
|
||||
"low_stock_detection": "Stock bajo detectado para {product_name}. El stock se agotará en {days_until_stockout} días.",
|
||||
"stockout_prevention": "Previniendo desabastecimiento de ingredientes críticos",
|
||||
"forecast_demand": "Basado en pronóstico de demanda: {{predicted_demand}} unidades predichas ({{confidence_score}}% confianza)",
|
||||
"forecast_demand": "Basado en pronóstico de demanda: {predicted_demand} unidades predichas ({confidence_score}% confianza)",
|
||||
"customer_orders": "Cumpliendo pedidos confirmados de clientes",
|
||||
"seasonal_demand": "Aumento anticipado de demanda estacional",
|
||||
"inventory_replenishment": "Reposición regular de inventario",
|
||||
|
||||
@@ -36,7 +36,7 @@
|
||||
"add_another": "Agregar Otro Proveedor",
|
||||
"manage_products": "Gestionar Productos",
|
||||
"products": "productos",
|
||||
"products_for": "Productos para {{name}}",
|
||||
"products_for": "Productos para {name}",
|
||||
"add_products": "Agregar Productos",
|
||||
"no_products_available": "No hay productos disponibles",
|
||||
"select_products": "Seleccionar Productos",
|
||||
@@ -114,12 +114,26 @@
|
||||
"quantity_required": "La cantidad debe ser mayor que cero",
|
||||
"expiration_past": "La fecha de vencimiento está en el pasado",
|
||||
"expiring_soon": "¡Advertencia: Este ingrediente vence muy pronto!"
|
||||
},
|
||||
"batch_label": "Lote",
|
||||
"templates": {
|
||||
"basic-bakery": "Ingredientes Básicos de Panadería",
|
||||
"basic-bakery-desc": "Ingredientes esenciales para cualquier panadería",
|
||||
"pastry-essentials": "Esenciales de Pastelería",
|
||||
"pastry-essentials-desc": "Ingredientes para pasteles y postres",
|
||||
"bread-basics": "Básicos de Pan",
|
||||
"bread-basics-desc": "Todo lo necesario para pan artesanal",
|
||||
"chocolate-specialties": "Especialidades de Chocolate",
|
||||
"chocolate-specialties-desc": "Para productos de chocolate"
|
||||
}
|
||||
},
|
||||
"recipes": {
|
||||
"why": "Las recetas conectan tu inventario con la producción. El sistema calculará los costos exactos por artículo, rastreará el consumo de ingredientes y te ayudará a optimizar la rentabilidad de tu menú.",
|
||||
"quick_start": "Plantillas de Recetas",
|
||||
"quick_start_desc": "Comienza con recetas probadas y personalízalas según tus necesidades",
|
||||
"template_ingredients": "Ingredientes:",
|
||||
"template_instructions": "Instrucciones:",
|
||||
"template_tips": "Consejos:",
|
||||
"category": {
|
||||
"breads": "Panes",
|
||||
"pastries": "Bollería",
|
||||
@@ -209,17 +223,29 @@
|
||||
"fields": {
|
||||
"name": "Nombre Completo",
|
||||
"email": "Dirección de Correo",
|
||||
"password": "Contraseña",
|
||||
"confirm_password": "Confirmar Contraseña",
|
||||
"phone": "Teléfono",
|
||||
"role": "Rol"
|
||||
},
|
||||
"placeholders": {
|
||||
"name": "ej., María García",
|
||||
"email": "ej., maria@panaderia.com"
|
||||
"email": "ej., maria@panaderia.com",
|
||||
"password": "••••••••",
|
||||
"confirm_password": "••••••••",
|
||||
"phone": "+34 600 000 000"
|
||||
},
|
||||
"email_hint": "Este será su nombre de usuario para iniciar sesión",
|
||||
"password_hint": "Mínimo 8 caracteres",
|
||||
"errors": {
|
||||
"name_required": "El nombre es obligatorio",
|
||||
"email_required": "El correo es obligatorio",
|
||||
"email_invalid": "Formato de correo inválido",
|
||||
"email_duplicate": "Este correo ya ha sido agregado"
|
||||
"email_duplicate": "Este correo ya ha sido agregado",
|
||||
"password_required": "La contraseña es obligatoria",
|
||||
"password_min_length": "La contraseña debe tener al menos 8 caracteres",
|
||||
"confirm_password_required": "Por favor confirme la contraseña",
|
||||
"passwords_mismatch": "Las contraseñas no coinciden"
|
||||
}
|
||||
},
|
||||
"review": {
|
||||
@@ -240,7 +266,7 @@
|
||||
"quality_title": "Plantillas de Control de Calidad",
|
||||
"required": "Obligatorio",
|
||||
"ready_title": "¡Tu Panadería está Lista!",
|
||||
"ready_message": "Has configurado exitosamente {{suppliers}} proveedores, {{ingredients}} ingredientes y {{recipes}} recetas. Haz clic en 'Completar Configuración' para finalizar y comenzar a usar el sistema.",
|
||||
"ready_message": "Has configurado exitosamente {suppliers} proveedores, {ingredients} ingredientes y {recipes} recetas. Haz clic en 'Completar Configuración' para finalizar y comenzar a usar el sistema.",
|
||||
"help": "¿Necesitas hacer cambios? Usa el botón \"Atrás\" para volver a cualquier paso."
|
||||
},
|
||||
"completion": {
|
||||
|
||||
@@ -213,7 +213,7 @@
|
||||
},
|
||||
"delete": {
|
||||
"title": "Eliminar Producto del Proveedor",
|
||||
"description": "¿Estás seguro de que quieres eliminar {{product}} de la lista de precios de este proveedor?"
|
||||
"description": "¿Estás seguro de que quieres eliminar {product} de la lista de precios de este proveedor?"
|
||||
}
|
||||
},
|
||||
"delete": {
|
||||
|
||||
Reference in New Issue
Block a user