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:
120
frontend/src/locales/eu/reasoning.json
Normal file
120
frontend/src/locales/eu/reasoning.json
Normal file
@@ -0,0 +1,120 @@
|
||||
{
|
||||
"purchaseOrder": {
|
||||
"low_stock_detection": "{{supplier_name}}-rentzat stock baxua. {{product_names_joined}}-ren egungo stocka {{days_until_stockout}} egunetan amaitu
|
||||
|
||||
ko da.",
|
||||
"forecast_demand": "{{supplier_name}}-ren {{product_names_joined}}-rentzat {{forecast_period_days}} eguneko eskaera aurreikuspenean oinarritutako eskaera programatua.",
|
||||
"safety_stock_replenishment": "{{supplier_name}}-ren {{product_names_joined}}-rentzat segurtasun stockaren birjartzea.",
|
||||
"supplier_contract": "{{supplier_name}}-rekin kontratuaren arabera programatutako eskaera.",
|
||||
"seasonal_demand": "{{supplier_name}}-ren {{product_names_joined}}-rentzat denboraldiko eskaeraren prestaketa.",
|
||||
"production_requirement": "{{supplier_name}}-ren hurrengo ekoizpen loteetarako beharrezkoa.",
|
||||
"manual_request": "{{supplier_name}}-ren {{product_names_joined}}-rentzat eskuzko erosketa eskaera."
|
||||
},
|
||||
"productionBatch": {
|
||||
"forecast_demand": "Aurreikuspenen arabera programatua: {{predicted_demand}} {{product_name}} behar dira (egungo stocka: {{current_stock}}). Konfiantza: {{confidence_score}}%.",
|
||||
"customer_order": "{{customer_name}}-rentzat bezeroaren eskaera: {{order_quantity}} {{product_name}} (Eskaera #{{order_number}}) - entrega {{delivery_date}}.",
|
||||
"stock_replenishment": "{{product_name}}-rentzat stockaren birjartzea - egungo maila minimoa baino txikiagoa.",
|
||||
"seasonal_preparation": "{{product_name}}-rentzat denboraldiko prestaketa lotea.",
|
||||
"promotion_event": "Promozio ekitaldirako ekoizpena - {{product_name}}.",
|
||||
"urgent_order": "{{product_name}}-ren berehalako ekoizpena behar duen eskaera larria.",
|
||||
"regular_schedule": "{{product_name}}-ren ohiko ekoizpen programatua."
|
||||
},
|
||||
"consequence": {
|
||||
"stockout_risk": "Stock amaitzeko arriskua {{impact_days}} egunetan. Produktu kaltetuak: {{affected_products_joined}}.",
|
||||
"insufficient_supply": "{{impact_days}} eguneko aldirako hornidura ez nahikoa.",
|
||||
"production_delay": "{{delay_hours}} orduko ekoizpen atzerapena posiblea.",
|
||||
"customer_commitment": "Bezeroari entregatzeko konpromisoa arriskuan.",
|
||||
"quality_issue": "Kalitate estandarrak arriskuan egon daitezke.",
|
||||
"cost_increase": "Materialen kostuak %{{percentage}} gehitu daitezke."
|
||||
},
|
||||
"severity": {
|
||||
"critical": "Kritikoa",
|
||||
"high": "Altua",
|
||||
"medium": "Ertaina",
|
||||
"low": "Baxua"
|
||||
},
|
||||
"triggers": {
|
||||
"orchestrator_auto": "Automatikoa (Orkestatzailea)",
|
||||
"manual": "Eskuzko Eskaera",
|
||||
"customer_order": "Bezeroaren Eskaera",
|
||||
"forecast": "Eskaeraren Aurreikuspena",
|
||||
"inventory_alert": "Inbentarioaren Alerta"
|
||||
},
|
||||
"errors": {
|
||||
"INSUFFICIENT_DATA": "Datu historiko ez nahikoa kalkulu zehatzerako",
|
||||
"INVALID_PARAMETERS": "Emandako parametroak ez baliodunak",
|
||||
"LEAD_TIME_INVALID": "Entrega denbora edo eskaeraren desbideratzea zero edo negatiboa da",
|
||||
"NO_DEMAND_DATA": "Ez dago eskaeraren datu historikorik eskuragarri (gutxienez 2 datu puntu behar dira)"
|
||||
},
|
||||
"jtbd": {
|
||||
"health_status": {
|
||||
"green": "Dena ondo dabil",
|
||||
"yellow": "Elementu batzuek arreta behar dute",
|
||||
"red": "Arazo kritikoek ekintza berehalakoa behar dute",
|
||||
"last_updated": "Azken eguneratzea",
|
||||
"next_check": "Hurrengo egiaztapena"
|
||||
},
|
||||
"action_queue": {
|
||||
"title": "Zer Behar Du Zure Arreta",
|
||||
"why_needed": "Zergatik behar da hau:",
|
||||
"what_if_not": "Zer gertatzen da hau egiten ez badut?",
|
||||
"estimated_time": "Estimatutako denbora: {{minutes}} min",
|
||||
"all_caught_up": "Dena egunean!",
|
||||
"no_actions": "Ez dago une honetan zure arreta behar duen ekintzarik.",
|
||||
"show_more": "Erakutsi {{count}} Ekintza{{plural}} Gehiago",
|
||||
"show_less": "Erakutsi Gutxiago",
|
||||
"critical_badge": "{{count}} kritiko{{plural}}",
|
||||
"important_badge": "{{count}} garrantzitsu{{plural}}"
|
||||
},
|
||||
"orchestration_summary": {
|
||||
"title": "Bart Gauean Zure Eguna Planifikatu Nuen",
|
||||
"no_runs": "Zure Okindegiko Eguna Planifikatzeko Prest",
|
||||
"no_runs_message": "Sistemak oraindik ez du eguneko plangintza exekutatu. Egin klik 'Exekutatu Eguneko Plangintza'-n zure lehen plana sortzeko.",
|
||||
"run_number": "Orkestazio exekuzioa #{{number}}",
|
||||
"duration": "{{seconds}}s behar izan zituen",
|
||||
"pos_created": "{{count}} erosketa agindu{{plural}} sortu nituen",
|
||||
"batches_created": "{{count}} ekoizpen lote{{plural}} programatu nituen",
|
||||
"no_actions": "Ez dira ekintza berriak behar - dena bidean dago!",
|
||||
"based_on": "Oinarrituta:",
|
||||
"customer_orders": "{{count}} bezero eskaera{{plural}}",
|
||||
"historical_demand": "Eskaera historikoa",
|
||||
"inventory_levels": "Inbentario mailak",
|
||||
"ai_optimization": "IA optimizazioa",
|
||||
"actions_required": "{{count}} elementu{{plural}}k zure onespena behar du{{verb}} aurrera jarraitu aurretik"
|
||||
},
|
||||
"production_timeline": {
|
||||
"title": "Gaurko Ekoizpen Denbora-lerroa",
|
||||
"no_batches": "Ez dago ekoizpen loterik programatuta gaurko",
|
||||
"status": {
|
||||
"pending": "Zain",
|
||||
"in_progress": "Prozesuan",
|
||||
"completed": "Osatua",
|
||||
"cancelled": "Bertan behera utzita"
|
||||
},
|
||||
"ready_by": "{{time}}rako prest",
|
||||
"priority": {
|
||||
"low": "Lehentasun Baxua",
|
||||
"normal": "Normala",
|
||||
"high": "Lehentasun Altua",
|
||||
"urgent": "Larria"
|
||||
}
|
||||
},
|
||||
"insights": {
|
||||
"savings": "Aste Honetako Aurrezkiak",
|
||||
"inventory": "Inbentarioaren Egoera",
|
||||
"waste": "Hondakinen Murrizketa",
|
||||
"deliveries": "Garaiz Entregatutakoak"
|
||||
},
|
||||
"actions": {
|
||||
"approve": "Onetsi",
|
||||
"view_details": "Ikusi Xehetasunak",
|
||||
"modify": "Aldatu",
|
||||
"start_batch": "Hasi Lotea",
|
||||
"pause_batch": "Pausatu",
|
||||
"complete_setup": "Osatu Konfigurazioa",
|
||||
"dismiss": "Baztertu",
|
||||
"view_alert": "Ikusi Xehetasunak",
|
||||
"run_planning": "Exekutatu Eguneko Plangintza"
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user