This commit resolves three critical translation/localization issues in the bakery dashboard:
1. **Health Status Translation Keys**: Fixed HealthStatusCard's translateKey function to properly handle `dashboard.health.*` keys by correctly stripping the `dashboard.` prefix while preserving the `health.` namespace path. This ensures checklist items like "production_on_schedule" and "all_ingredients_in_stock" display correctly in Spanish.
2. **Reasoning Translation Keys**: Updated backend dashboard_service.py to use the correct i18n key prefixes:
- Purchase orders now use `reasoning.purchaseOrder.*` instead of `reasoning.types.*`
- Production batches now use `reasoning.productionBatch.*`
- Added context parameter to `_get_reasoning_type_i18n_key()` method for proper namespace routing
3. **Template Variable Interpolation**: Fixed template variable replacement in action cards:
- Added array preprocessing logic in both backend and frontend to convert `product_names` arrays to `product_names_joined` strings
- Updated ActionQueueCard's translateKey to preprocess array parameters before i18n interpolation
- Fixed ProductionTimelineCard to properly handle reasoning namespace prefix removal
These fixes ensure that:
- Health status indicators show translated text instead of raw keys (e.g., "Producción a tiempo" vs "dashboard.health.production_on_schedule")
- Purchase order reasoning displays with proper product names and stockout days instead of literal template variables (e.g., "Stock bajo para Harina. El stock se agotará en 7 días" vs "Stock bajo para {{product_name}}")
- All dashboard components consistently handle i18n key namespaces and parameter interpolation
Affected files:
- frontend/src/components/dashboard/HealthStatusCard.tsx
- frontend/src/components/dashboard/ActionQueueCard.tsx
- frontend/src/components/dashboard/ProductionTimelineCard.tsx
- services/orchestrator/app/services/dashboard_service.py