2025-11-07 18:24:38 +00:00
{
2025-12-05 20:07:01 +01:00
"orchestration" : {
"daily_summary" : "{purchase_orders_count, plural, =0 {} =1 {Created 1 purchase order} other {Created {purchase_orders_count} purchase orders}}{purchase_orders_count, plural, =0 {} other { and }}{production_batches_count, plural, =0 {no production batches} =1 {scheduled 1 production batch} other {scheduled {production_batches_count} production batches}}. {critical_items_count, plural, =0 {All items in stock.} =1 {1 critical item needs attention} other {{critical_items_count} critical items need attention}}{total_financial_impact_eur, select, 0 {} other { (€{total_financial_impact_eur} at risk)}}{min_depletion_hours, select, 0 {} other { - {min_depletion_hours}h until stockout}}."
} ,
2025-11-07 18:24:38 +00:00
"purchaseOrder" : {
2025-11-20 22:10:16 +01:00
"low_stock_detection" : "Low stock for {supplier_name}. Current stock of {product_names_joined} will run out in {days_until_stockout} days." ,
2025-11-21 16:15:09 +01:00
"low_stock_detection_detailed" : "{critical_product_count, plural, =1 {{critical_products_0} will deplete in {min_depletion_hours} hours} other {{critical_product_count} critical items running low}}. With {supplier_name}'s {supplier_lead_time_days}-day delivery, we must order {order_urgency, select, critical {IMMEDIATELY} urgent {TODAY} important {soon} other {now}} to prevent {affected_batches_count, plural, =0 {production delays} =1 {disruption to {affected_batches_0}} other {{affected_batches_count} batch disruptions}}{potential_loss_eur, select, 0 {} other { (€{potential_loss_eur} at risk)}}." ,
2025-11-20 22:10:16 +01:00
"forecast_demand" : "Order scheduled based on {forecast_period_days}-day demand forecast for {product_names_joined} from {supplier_name}." ,
"safety_stock_replenishment" : "Replenishing safety stock for {product_names_joined} from {supplier_name}." ,
"supplier_contract" : "Scheduled order per contract with {supplier_name}." ,
"seasonal_demand" : "Seasonal demand preparation for {product_names_joined} from {supplier_name}." ,
"production_requirement" : "Required for upcoming production batches from {supplier_name}." ,
"manual_request" : "Manual purchase request for {product_names_joined} from {supplier_name}."
2025-11-07 18:24:38 +00:00
} ,
"productionBatch" : {
2025-11-20 22:10:16 +01:00
"forecast_demand" : "Scheduled based on forecast: {predicted_demand} {product_name} needed (current stock: {current_stock}). Confidence: {confidence_score}%." ,
2025-12-13 23:57:54 +01:00
"forecast_demand_enhanced" : "Scheduled based on enhanced forecast: {predicted_demand} {product_name} needed ({variance}% variance from historical average). Confidence: {confidence_score}%." ,
2025-11-20 22:10:16 +01:00
"customer_order" : "Customer order for {customer_name}: {order_quantity} {product_name} (Order #{order_number}) - delivery {delivery_date}." ,
"stock_replenishment" : "Stock replenishment for {product_name} - current level below minimum." ,
"seasonal_preparation" : "Seasonal preparation batch for {product_name}." ,
"promotion_event" : "Production for promotional event - {product_name}." ,
"urgent_order" : "Urgent order requiring immediate production of {product_name}." ,
"regular_schedule" : "Regular scheduled production of {product_name}."
2025-11-07 18:24:38 +00:00
} ,
"consequence" : {
"stockout_risk" : "Stock-out risk in {{impact_days}} days. Products affected: {{affected_products_joined}}." ,
"insufficient_supply" : "Insufficient supply for {{impact_days}}-day period." ,
"production_delay" : "Potential production delay of {{delay_hours}} hours." ,
"customer_commitment" : "Customer delivery commitment at risk." ,
"quality_issue" : "Quality standards may be compromised." ,
"cost_increase" : "Material costs may increase by {{percentage}}%."
} ,
"severity" : {
"critical" : "Critical" ,
"high" : "High" ,
"medium" : "Medium" ,
"low" : "Low"
} ,
"triggers" : {
"orchestrator_auto" : "Automatic (Orchestrator)" ,
"manual" : "Manual Request" ,
"customer_order" : "Customer Order" ,
"forecast" : "Demand Forecast" ,
"inventory_alert" : "Inventory Alert"
} ,
"errors" : {
"INSUFFICIENT_DATA" : "Insufficient historical data for accurate calculation" ,
"INVALID_PARAMETERS" : "Invalid parameters provided" ,
"LEAD_TIME_INVALID" : "Lead time or demand deviation is zero or negative" ,
"NO_DEMAND_DATA" : "No historical demand data available (minimum 2 data points required)"
} ,
feat: Add i18n support for AI insights with structured reasoning
Complete i18n implementation for internal service reasoning:
- Update AIInsight interface to include reasoning_data field
- Integrate useReasoningTranslation hook in AI Insights page
- Add translation keys for safety stock, price forecaster, and optimization
Translation coverage (EN/ES/EU):
- Safety Stock: statistical z-score, advanced variability, fixed percentage, errors
- Price Forecaster: price change predictions, volatility alerts, buying recommendations
- Optimization: EOQ calculations, MOQ/max constraints, tier pricing
Benefits:
- AI insights now display in user's preferred language
- Consistent with PO/Batch reasoning translation pattern
- Structured parameters enable rich, contextualized translations
- Falls back gracefully to description field if translation missing
Implementation:
- frontend/src/api/services/aiInsights.ts: Add reasoning_data to interface
- frontend/src/pages/app/analytics/ai-insights/AIInsightsPage.tsx: Translate insights
- frontend/src/locales/*/reasoning.json: Add safetyStock, priceForecaster, optimization keys
This completes the full i18n implementation for the bakery AI system.
2025-11-07 19:25:08 +00:00
"safetyStock" : {
"statistical_z_score" : "Safety stock calculated using statistical method (service level {{service_level}}%, z-score {{z_score}}). Based on demand std dev {{demand_std_dev}} and {{lead_time_days}}-day lead time. Result: {{safety_stock}} units." ,
"advanced_variability" : "Safety stock calculated with advanced variability analysis. Accounts for both demand variability (σ ={{demand_std_dev}}) and lead time uncertainty (σ ={{lead_time_std_dev}} days). Result: {{safety_stock}} units." ,
"fixed_percentage" : "Safety stock set at {{percentage}}% of {{lead_time_days}}-day demand ({{lead_time_demand}} units). Result: {{safety_stock}} units." ,
"error_lead_time_invalid" : "Cannot calculate safety stock: lead time ({{lead_time_days}} days) or demand std dev ({{demand_std_dev}}) is invalid." ,
"error_insufficient_data" : "Insufficient demand history for safety stock calculation ({{data_points}} data points, need {{min_required}})."
} ,
"priceForecaster" : {
"decrease_expected" : "Price expected to decrease {{change_pct}}% over next {{forecast_days}} days. Current: €{{current_price}}, forecast: €{{forecast_mean}}. Recommendation: Wait for better price." ,
"increase_expected" : "Price expected to increase {{change_pct}}% over next {{forecast_days}} days. Current: €{{current_price}}, forecast: €{{forecast_mean}}. Recommendation: Buy now to lock in current price." ,
"high_volatility" : "High price volatility detected (CV={{coefficient}}). Average daily price change: {{avg_daily_change_pct}}%. Recommendation: Wait for price dip." ,
"below_average" : "Current price €{{current_price}} is {{below_avg_pct}}% below historical average (€{{mean_price}}). Favorable buying opportunity." ,
"stable" : "Price is stable. Current: €{{current_price}}, forecast: €{{forecast_mean}} ({{expected_change_pct}}% change expected). Normal procurement timing recommended." ,
"insufficient_data" : "Insufficient price history for reliable forecast ({{history_days}} days available, need {{min_required_days}} days)."
} ,
"optimization" : {
"eoq_base" : "Economic Order Quantity calculated: {{eoq}} units (required: {{required_quantity}}, annual demand: {{annual_demand}}). Optimized for {{optimal_quantity}} units." ,
"moq_applied" : "Minimum order quantity constraint applied: {{moq}} units." ,
"max_applied" : "Maximum order quantity constraint applied: {{max_qty}} units." ,
"no_tiers" : "No price tiers available for this product. Base quantity: {{base_quantity}} units at €{{unit_price}} per unit." ,
"current_tier" : "Current pricing tier: €{{current_tier_price}} per unit for {{base_quantity}} units (total: €{{base_cost}})." ,
"tier_upgraded" : "Upgraded to better price tier! Ordering {{tier_min_qty}} units ({{additional_qty}} extra) at €{{tier_price}} per unit saves €{{savings}} compared to {{base_quantity}} units at €{{base_price}}."
} ,
2025-11-07 18:24:38 +00:00
"jtbd" : {
"health_status" : {
"green" : "Everything is running smoothly" ,
"yellow" : "Some items need attention" ,
"red" : "Critical issues require immediate action" ,
2025-11-27 15:52:40 +01:00
"green_simple" : "✅ Everything is ready for today" ,
"yellow_simple" : "⚠️ Some items need attention" ,
"red_simple" : "🔴 Critical issues require action" ,
"yellow_simple_with_count" : "⚠️ {count} action{count, plural, one {} other {s}} needed" ,
2025-11-07 18:24:38 +00:00
"last_updated" : "Last updated" ,
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.
2025-11-07 18:34:30 +00:00
"next_check" : "Next check" ,
"never" : "Never" ,
2025-11-15 21:21:06 +01:00
"critical_issues" : "{count} critical issue{count, plural, one {} other {s}}" ,
"actions_needed" : "{count} action{count, plural, one {} other {s}} needed"
2025-11-07 18:24:38 +00:00
} ,
"action_queue" : {
"title" : "What Needs Your Attention" ,
2025-12-05 20:07:01 +01:00
"what_happened" : "What happened" ,
"why_needed" : "Why this is needed" ,
"what_to_do" : "What you should do" ,
2025-11-07 18:24:38 +00:00
"what_if_not" : "What happens if I don't do this?" ,
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.
2025-11-07 18:34:30 +00:00
"estimated_time" : "Estimated time" ,
2025-11-07 18:24:38 +00:00
"all_caught_up" : "All caught up!" ,
"no_actions" : "No actions requiring your attention right now." ,
2025-11-15 21:21:06 +01:00
"show_more" : "Show {count} More Action{count, plural, one {} other {s}}" ,
2025-11-07 18:24:38 +00:00
"show_less" : "Show Less" ,
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.
2025-11-07 18:34:30 +00:00
"total" : "total" ,
"critical" : "critical" ,
2025-11-15 21:21:06 +01:00
"important" : "important" ,
"consequences" : {
"delayed_delivery_impact" : "Delayed delivery may impact production schedule" ,
"immediate_action_required" : "Immediate action required to prevent production issues" ,
"some_features_limited" : "Some features are limited"
} ,
"actions" : {
"approve" : "Approve" ,
2025-11-18 07:17:17 +01:00
"reject" : "Reject" ,
2025-11-15 21:21:06 +01:00
"view_details" : "View Details" ,
"modify" : "Modify" ,
"dismiss" : "Dismiss" ,
"complete_setup" : "Complete Setup"
}
2025-11-07 18:24:38 +00:00
} ,
"orchestration_summary" : {
"title" : "Last Night I Planned Your Day" ,
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.
2025-11-07 18:34:30 +00:00
"ready_to_plan" : "Ready to Plan Your Bakery Day" ,
"run_planning" : "Run Daily Planning" ,
2025-11-21 16:15:09 +01:00
"run_info" : "Orchestration run #{runNumber}" ,
"took" : "Took {seconds}s" ,
2025-11-15 21:21:06 +01:00
"created_pos" : "Created {count} purchase order{count, plural, one {} other {s}}" ,
"scheduled_batches" : "Scheduled {count} production batch{count, plural, one {} other {es}}" ,
"show_more" : "Show {count} more" ,
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.
2025-11-07 18:34:30 +00:00
"show_less" : "Show less" ,
2025-11-07 18:24:38 +00:00
"no_actions" : "No new actions needed - everything is on track!" ,
"based_on" : "Based on:" ,
2025-11-15 21:21:06 +01:00
"customer_orders" : "{count} customer order{count, plural, one {} other {s}}" ,
2025-11-07 18:24:38 +00:00
"historical_demand" : "Historical demand" ,
"inventory_levels" : "Inventory levels" ,
"ai_optimization" : "AI optimization" ,
2025-11-15 21:21:06 +01:00
"actions_required" : "{count} item{count, plural, one {} other {s}} need{count, plural, one {s} other {}}} your approval before proceeding" ,
2025-11-13 16:01:08 +01:00
"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"
2025-11-07 18:24:38 +00:00
} ,
"production_timeline" : {
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.
2025-11-07 18:34:30 +00:00
"title" : "Your Production Plan Today" ,
"no_production" : "No Production Scheduled" ,
"no_batches" : "No batches are scheduled for production today." ,
"ready_by" : "Ready by" ,
"start_batch" : "Start Batch" ,
"pause_batch" : "Pause Batch" ,
"completed" : "Completed" ,
"total" : "Total" ,
"done" : "Done" ,
"active" : "Active" ,
"pending" : "Pending" ,
"view_full_schedule" : "View Full Production Schedule"
2025-11-07 18:24:38 +00:00
} ,
"insights" : {
"savings" : "Savings This Week" ,
"inventory" : "Inventory Status" ,
"waste" : "Waste Reduction" ,
"deliveries" : "On-Time Deliveries"
} ,
"actions" : {
"approve" : "Approve" ,
"view_details" : "View Details" ,
"modify" : "Modify" ,
"start_batch" : "Start Batch" ,
"pause_batch" : "Pause" ,
"complete_setup" : "Complete Setup" ,
"dismiss" : "Dismiss" ,
"view_alert" : "View Details" ,
"run_planning" : "Run Daily Planning"
}
2025-11-20 19:14:49 +01:00
} ,
"types" : {
"low_stock_detection" : "Low stock detected for {{product_name}}. Stock will run out in {{days_until_stockout}} days." ,
"stockout_prevention" : "Preventing stockout for critical ingredients" ,
"forecast_demand" : "Based on demand forecast: {{predicted_demand}} units predicted ({{confidence_score}}% confidence)" ,
"customer_orders" : "Fulfilling confirmed customer orders" ,
"seasonal_demand" : "Anticipated seasonal demand increase" ,
"inventory_replenishment" : "Regular inventory replenishment" ,
"production_schedule" : "Scheduled production batch" ,
"other" : "Standard replenishment"
2025-12-13 23:57:54 +01:00
} ,
"factors" : {
"historical_pattern" : "Historical Pattern" ,
"weather_sunny" : "Sunny Weather" ,
"weather_rainy" : "Rainy Weather" ,
"weather_cold" : "Cold Weather" ,
"weather_hot" : "Hot Weather" ,
"weekend_boost" : "Weekend Demand" ,
"inventory_level" : "Inventory Level" ,
"seasonal_trend" : "Seasonal Trend" ,
"general" : "Other Factor" ,
"weather_impact_sunny" : "Sunny Weather Impact" ,
"seasonal_trend_adjustment" : "Seasonal Trend Adjustment" ,
"historical_sales_pattern" : "Historical Sales Pattern" ,
"current_inventory_trigger" : "Current Inventory Trigger"
} ,
"dashboard" : {
"factors_title" : "Key Factors Influencing This Decision" ,
"confidence" : "Confidence: {confidence}%" ,
"variance" : "Variance: {variance}% from historical average"
2025-11-07 18:24:38 +00:00
}
}