feat: Complete frontend i18n implementation for dashboard components

- Updated TypeScript types to support reasoning_data field
- Integrated useReasoningTranslation hook in all dashboard components:
  * ActionQueueCard: Translates PO reasoning_data and UI text
  * ProductionTimelineCard: Translates batch reasoning_data and UI text
  * OrchestrationSummaryCard: Translates all hardcoded English text
  * HealthStatusCard: Translates all hardcoded English text
- Added missing translation keys to all language files (EN, ES, EU):
  * health_status: never, critical_issues, actions_needed
  * action_queue: total, critical, important
  * orchestration_summary: ready_to_plan, run_info, took, show_more/less
  * production_timeline: Complete rebuild with new keys
- Components now support fallback for deprecated text fields
- Full multilingual support: English, Spanish, Basque

Dashboard is now fully translatable and will display reasoning in user's language.
This commit is contained in:
Claude
2025-11-07 18:34:30 +00:00
parent 84d38842ab
commit 28136cf198
9 changed files with 619 additions and 152 deletions

View File

@@ -50,52 +50,55 @@
"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"
"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}}}"
},
"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",
"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{{plural}} Más",
"show_more": "Mostrar {{count}} Acción{{count, plural, one {} other {es}}} Más",
"show_less": "Mostrar Menos",
"critical_badge": "{{count}} crítico{{plural}}",
"important_badge": "{{count}} importante{{plural}}"
"total": "total",
"critical": "críticas",
"important": "importantes"
},
"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!",
"ready_to_plan": "Listo Para Planificar Tu Día en la Panadería",
"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}}}",
"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{{plural}} de cliente{{plural}}",
"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 con IA",
"actions_required": "{{count}} elemento{{plural}} necesita{{verb}} tu aprobación antes de proceder"
"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"
},
"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"
}
"title": "Tu Plan de Producción de Hoy",
"no_production": "No Hay Producción Programada",
"no_batches": "No hay lotes programados para producción hoy.",
"ready_by": "Listo para",
"start_batch": "Iniciar Lote",
"pause_batch": "Pausar Lote",
"completed": "Completado",
"total": "Total",
"done": "Hecho",
"active": "Activo",
"pending": "Pendiente",
"view_full_schedule": "Ver Cronograma Completo de Producción"
},
"insights": {
"savings": "Ahorros Esta Semana",