feat: Implement complete i18n support for reasoning data
Created comprehensive multilingual translation system for JTBD dashboard reasoning fields. Backend generates structured data, frontend translates using i18n in EN, ES, and EU (Euskara). Frontend Changes: 1. Created reasoning.json translation files (EN, ES, EU) - Purchase order reasoning types - Production batch reasoning types - Consequence translations - Severity levels - Error codes - All JTBD dashboard UI text 2. Created useReasoningTranslation hook - translatePOReasonng() - For purchase orders - translateBatchReasoning() - For production batches - translateConsequence() - For consequences - translateSeverity() - For severity levels - translateError() - For error codes - useReasoningFormatter() - Higher-level formatting Translation Examples: EN: "Low stock for Harinas del Norte. Stock runs out in 3 days." ES: "Stock bajo para Harinas del Norte. Se agota en 3 días." EU: "Harinas del Norte-rentzat stock baxua. 3 egunetan amaituko da." Documentation: - Created REASONING_I18N_AUDIT.md with full audit of hardcoded text - Identified all files needing updates - Documented strategy for backend error codes Next Steps: - Update dashboard components to use translations - Fix demo seed scripts - Fix backend services to return error codes
This commit is contained in:
118
frontend/src/locales/es/reasoning.json
Normal file
118
frontend/src/locales/es/reasoning.json
Normal file
@@ -0,0 +1,118 @@
|
||||
{
|
||||
"purchaseOrder": {
|
||||
"low_stock_detection": "Stock bajo para {{supplier_name}}. El stock actual de {{product_names_joined}} se agotará en {{days_until_stockout}} días.",
|
||||
"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}}.",
|
||||
"seasonal_demand": "Preparación de demanda estacional para {{product_names_joined}} de {{supplier_name}}.",
|
||||
"production_requirement": "Requerido para próximos lotes de producción de {{supplier_name}}.",
|
||||
"manual_request": "Solicitud de compra manual para {{product_names_joined}} de {{supplier_name}}."
|
||||
},
|
||||
"productionBatch": {
|
||||
"forecast_demand": "Programado según pronóstico: {{predicted_demand}} {{product_name}} necesarios (stock actual: {{current_stock}}). Confianza: {{confidence_score}}%.",
|
||||
"customer_order": "Pedido de cliente para {{customer_name}}: {{order_quantity}} {{product_name}} (Pedido #{{order_number}}) - entrega {{delivery_date}}.",
|
||||
"stock_replenishment": "Reposición de stock para {{product_name}} - nivel actual por debajo del mínimo.",
|
||||
"seasonal_preparation": "Lote de preparación estacional para {{product_name}}.",
|
||||
"promotion_event": "Producción para evento promocional - {{product_name}}.",
|
||||
"urgent_order": "Pedido urgente que requiere producción inmediata de {{product_name}}.",
|
||||
"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.",
|
||||
"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}}%."
|
||||
},
|
||||
"severity": {
|
||||
"critical": "Crítico",
|
||||
"high": "Alto",
|
||||
"medium": "Medio",
|
||||
"low": "Bajo"
|
||||
},
|
||||
"triggers": {
|
||||
"orchestrator_auto": "Automático (Orquestador)",
|
||||
"manual": "Solicitud Manual",
|
||||
"customer_order": "Pedido de Cliente",
|
||||
"forecast": "Pronóstico de Demanda",
|
||||
"inventory_alert": "Alerta de Inventario"
|
||||
},
|
||||
"errors": {
|
||||
"INSUFFICIENT_DATA": "Datos históricos insuficientes para un cálculo preciso",
|
||||
"INVALID_PARAMETERS": "Parámetros proporcionados no válidos",
|
||||
"LEAD_TIME_INVALID": "El tiempo de entrega o la desviación de la demanda es cero o negativo",
|
||||
"NO_DEMAND_DATA": "No hay datos históricos de demanda disponibles (se requieren mínimo 2 puntos de datos)"
|
||||
},
|
||||
"jtbd": {
|
||||
"health_status": {
|
||||
"green": "Todo funciona correctamente",
|
||||
"yellow": "Algunos elementos necesitan atención",
|
||||
"red": "Problemas críticos requieren acción inmediata",
|
||||
"last_updated": "Última actualización",
|
||||
"next_check": "Próxima verificación"
|
||||
},
|
||||
"action_queue": {
|
||||
"title": "Qué Necesita Tu Atención",
|
||||
"why_needed": "Por qué es necesario esto:",
|
||||
"what_if_not": "¿Qué pasa si no hago esto?",
|
||||
"estimated_time": "Tiempo estimado: {{minutes}} min",
|
||||
"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{{plural}} Más",
|
||||
"show_less": "Mostrar Menos",
|
||||
"critical_badge": "{{count}} crítico{{plural}}",
|
||||
"important_badge": "{{count}} importante{{plural}}"
|
||||
},
|
||||
"orchestration_summary": {
|
||||
"title": "Anoche Planifiqué Tu Día",
|
||||
"no_runs": "Listo para Planificar Tu Día en la Panadería",
|
||||
"no_runs_message": "El sistema aún no ha ejecutado la planificación diaria. Haz clic en 'Ejecutar Planificación Diaria' para generar tu primer plan.",
|
||||
"run_number": "Ejecución de orquestación #{{number}}",
|
||||
"duration": "Tardó {{seconds}}s",
|
||||
"pos_created": "Creé {{count}} orden{{plural}} de compra",
|
||||
"batches_created": "Programé {{count}} lote{{plural}} de producción",
|
||||
"no_actions": "¡No se necesitan nuevas acciones - todo está en marcha!",
|
||||
"based_on": "Basado en:",
|
||||
"customer_orders": "{{count}} pedido{{plural}} de cliente{{plural}}",
|
||||
"historical_demand": "Demanda histórica",
|
||||
"inventory_levels": "Niveles de inventario",
|
||||
"ai_optimization": "Optimización con IA",
|
||||
"actions_required": "{{count}} elemento{{plural}} necesita{{verb}} tu aprobación antes de proceder"
|
||||
},
|
||||
"production_timeline": {
|
||||
"title": "Línea de Tiempo de Producción de Hoy",
|
||||
"no_batches": "No hay lotes de producción programados para hoy",
|
||||
"status": {
|
||||
"pending": "Pendiente",
|
||||
"in_progress": "En Proceso",
|
||||
"completed": "Completado",
|
||||
"cancelled": "Cancelado"
|
||||
},
|
||||
"ready_by": "Listo para {{time}}",
|
||||
"priority": {
|
||||
"low": "Prioridad Baja",
|
||||
"normal": "Normal",
|
||||
"high": "Prioridad Alta",
|
||||
"urgent": "Urgente"
|
||||
}
|
||||
},
|
||||
"insights": {
|
||||
"savings": "Ahorros Esta Semana",
|
||||
"inventory": "Estado del Inventario",
|
||||
"waste": "Reducción de Desperdicio",
|
||||
"deliveries": "Entregas a Tiempo"
|
||||
},
|
||||
"actions": {
|
||||
"approve": "Aprobar",
|
||||
"view_details": "Ver Detalles",
|
||||
"modify": "Modificar",
|
||||
"start_batch": "Iniciar Lote",
|
||||
"pause_batch": "Pausar",
|
||||
"complete_setup": "Completar Configuración",
|
||||
"dismiss": "Descartar",
|
||||
"view_alert": "Ver Detalles",
|
||||
"run_planning": "Ejecutar Planificación Diaria"
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user