- Create getActionLabelKey() mapper function for action types - Map action types (approve_po, call_supplier, etc.) to i18n keys - Extract parameters from metadata (amount, supplier, customer, hours) - Update button rendering to use translations instead of backend strings Translation updates: - Add missing action keys: reject_po, complete_receipt, mark_received - Spanish translations: "Rechazar pedido", "Completar recepción", etc. - Basque translations: "Baztertu eskaera", "Osatu stockaren harrera", etc. Action buttons now respect user's language preference (EN/ES/EU) instead of showing hardcoded backend strings. Fixes: Issue #4 - Missing i18n for action buttons 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
298 lines
16 KiB
JSON
298 lines
16 KiB
JSON
{
|
|
"priority": {
|
|
"critical": "Kritikoa",
|
|
"important": "Garrantzitsua",
|
|
"standard": "Estandarra",
|
|
"info": "Informazioa"
|
|
},
|
|
"type_class": {
|
|
"action_needed": "Ekintza Behar Da",
|
|
"prevented_issue": "Arazoa Saihestua",
|
|
"trend_warning": "Joera Abisua",
|
|
"escalation": "Eskalazio",
|
|
"information": "Informazioa"
|
|
},
|
|
"context": {
|
|
"already_addressed": "AIak dagoeneko kudeatu du hau",
|
|
"financial_impact": "€{amount} arriskuan",
|
|
"time_until": "Erabakia behar da {time}n",
|
|
"can_user_fix": "Konpon dezakezu hau",
|
|
"requires_supplier": "{supplier} behar da",
|
|
"prevented_savings": "Aurreztua €{amount}",
|
|
"grouped_count": "{count} bilduta"
|
|
},
|
|
"actions": {
|
|
"approve_po": "Onartu €{amount} eskaera",
|
|
"reject_po": "Baztertu eskaera",
|
|
"call_supplier": "Deitu {supplier}ri ({phone})",
|
|
"see_reasoning": "Ikusi arrazoibide osoa",
|
|
"complete_receipt": "Osatu stockaren harrera",
|
|
"mark_received": "Markatu jasota gisa",
|
|
"adjust_production": "Doitu ekoizpen egutegia",
|
|
"snooze": "Atzeratu {hours}h",
|
|
"mark_read": "Markatu irakurrita gisa",
|
|
"dismiss": "Baztertu",
|
|
"navigate": "Ikusi xehetasunak",
|
|
"notify_customer": "Jakinarazi {customer}ri",
|
|
"cancel_auto_action": "Ezeztatu ekintza automatikoa"
|
|
},
|
|
"orchestration": {
|
|
"reasoning_title": "🤖 Eguneko Orkestatzailearen Arrazoibidea",
|
|
"analyzed_title": "Goiz honetan, aztertu dut:",
|
|
"actions_taken": "Beraz, antolatu dut:",
|
|
"prevented_issues": "✅ Arazoak Saihestuta",
|
|
"estimated_impact": "Aurreikusitako Eragina",
|
|
"impact_description": "Aurrezkiak eskabide presagarriak, stock falta eta hondakinak saihestuz",
|
|
"last_run": "Azken exekuzioa",
|
|
"what_ai_did": "AIak zuretzat egin duena"
|
|
},
|
|
"metrics": {
|
|
"hours": "{count, plural, =1 {# ordu} other {# ordu}}",
|
|
"minutes": "{count, plural, =1 {# minutu} other {# minutu}}",
|
|
"days": "{count, plural, =1 {# egun} other {# egun}}"
|
|
},
|
|
"escalated": "Eskalatuta",
|
|
"hub": {
|
|
"tab_list_label": "Alerta kategoriak",
|
|
"tabs": {
|
|
"all": "Alerta Guztiak",
|
|
"all_description": "Zure ogi-dendan dauden alerta guztiak",
|
|
"for_me": "Niretzat",
|
|
"for_me_description": "Zuri esleitutako alertak edo zure ekintza behar dutenak",
|
|
"archived": "Artxibatuta",
|
|
"archived_description": "Konpondutako eta baztertutako alertak"
|
|
},
|
|
"toggle_filters": "Aktibatu/desaktibatu iragazkiak",
|
|
"filters": "Iragazkiak",
|
|
"active": "Aktiboak"
|
|
},
|
|
"auto_action": {
|
|
"title": "Ekintza Automatiko Zain",
|
|
"remaining": "geratzen da",
|
|
"financial_impact": "Eragina:",
|
|
"cancel_button": "Ezeztatu Ekintza Automatikoa",
|
|
"cancelling": "Ezeztatzen...",
|
|
"cancelled_title": "Ekintza Automatikoa Ezeztatuta",
|
|
"cancelled_message": "Ekintza automatikoa saihestu da. Orain eskuz kudea dezakezu.",
|
|
"completed_title": "Ekintza Automatikoa Exekutatuta",
|
|
"help_text": "AIak automatikoki exekutatuko du ekintza hau tenporizadorea amaitzen denean. Egin klik \"Ezeztatu\"n saihestu eta eskuz kudeatzeko.",
|
|
"urgency": {
|
|
"critical": "PRESAZKOA",
|
|
"warning": "LASTER",
|
|
"info": "PROGRAMATUTA"
|
|
}
|
|
},
|
|
"priority_explainer": {
|
|
"title": "Lehentasun Puntuazioak Ulertzea",
|
|
"subtitle": "Nola kalkulatzen duen AIak zerk behar duen zure arreta lehenik",
|
|
"overview": {
|
|
"title": "Lehentasun Puntuazioa (0-100)",
|
|
"description": "Alerta bakoitzak 0-100 bitarteko lehentasun puntuazioa jasotzen du lau osagai ponderatuen arabera. Honek zure ogi-dendarako benetan garrantzitsua denean zentratzea laguntzen dizu."
|
|
},
|
|
"example_alert": "Alerta Adibidearen Lehentasuna",
|
|
"level": {
|
|
"critical": "KRITIKOA",
|
|
"important": "GARRANTZITSUA",
|
|
"standard": "ESTANDARRA",
|
|
"info": "INFORMAZIOA"
|
|
},
|
|
"components_title": "Puntuazioaren Osagaiak",
|
|
"weight": "pisua",
|
|
"business_impact": {
|
|
"name": "Negozio Eragina",
|
|
"description": "Finantza ondorioak, eskaerak eraginduta, bezeroaren gogobetetasuna",
|
|
"example1": "€500 sarrera potentzialean arriskuan",
|
|
"example2": "10 bezero eskabide eraginda",
|
|
"example3": "Bezeroaren gogobetetasunean eragin handia"
|
|
},
|
|
"urgency": {
|
|
"name": "Premura",
|
|
"description": "Denbora sentikortasuna, epe-mugak, eskalazio potentziala",
|
|
"example1": "Epe-muga 2 ordutan",
|
|
"example2": "Stock falta gertu (4 ordu)",
|
|
"example3": "Ekoizpen leihoa laster ixten"
|
|
},
|
|
"agency": {
|
|
"name": "Erabiltzailearen Ekintza Gaitasuna",
|
|
"description": "Ekintza har dezakezu? Emaitzaren gaineko kontrola duzu?",
|
|
"example1": "Zure onespena behar du",
|
|
"example2": "Klik bakarreko ekintza erabilgarri",
|
|
"example3": "Zure autoritatearen barruko erabakia behar da"
|
|
},
|
|
"confidence": {
|
|
"name": "AIaren Konfiantza",
|
|
"description": "Zenbat ziur dago AIa alerta honen baliozkotasunaz?",
|
|
"example1": "Historian oinarritutako patroietan (95% bat etortzea)",
|
|
"example2": "Datu kalitatea: Altua",
|
|
"example3": "Iragarpen zehaztasuna balioztatua"
|
|
},
|
|
"formula_title": "Formula",
|
|
"footer": "Puntuazio honek AIari alertak lehentasunez ipintzen laguntzen dio, garrantzitsuenak lehenik ikusten dituzula ziurtatuz.",
|
|
"got_it": "Ulertu dut!"
|
|
},
|
|
"trend": {
|
|
"near_threshold": "Atalasearen ondoan"
|
|
},
|
|
"action_preview": {
|
|
"title": "Ekintzaren Aurrebista",
|
|
"outcome": "Zer gertatuko da",
|
|
"financial_impact": "Finantza Eragina",
|
|
"affected_systems": "Sistema Eragindak",
|
|
"reversible": "Ekintza hau desegin daiteke",
|
|
"not_reversible": "Ekintza hau ezin da desegin",
|
|
"confidence": "AIaren Konfiantza: {{confidence}}%",
|
|
"cancel": "Ezeztatu",
|
|
"confirm": "Berretsi Ekintza"
|
|
},
|
|
"response_time": {
|
|
"title": "Erantzun Denboraren Errendimendua",
|
|
"subtitle": "Zenbat azkar erantzuten diozun alertei",
|
|
"on_time": "Garaiz",
|
|
"alerts": "alertak",
|
|
"average": "Batez Bestekoa",
|
|
"target": "Helburua",
|
|
"on_time_responses": "Garaiz Erantzunak",
|
|
"needs_improvement": "Hobetzea behar du",
|
|
"benchmark_title": "Errendimenduaren Ikuspegia",
|
|
"excellent": "Bikaina! Ogi-denda %80 baino azkarrago erantzuten ari zara. Jarraitu horrela!",
|
|
"good": "Lan ona! Saiatu alerta kritikoei helburu denboran erantzuten gehiago hobetzeko.",
|
|
"needs_work": "Alerta kritikoei erantzun azkarragoak arazoak sahiestu eta dirua aurreztu dezakete. Saiatu helburu denborak betetzen.",
|
|
"tip": "Aholkua: Gaitu mugikorretako jakinarazpenak alerta kritikoei azkarrago erantzuteko"
|
|
},
|
|
"alerts": {
|
|
"critical_stock_shortage": {
|
|
"title": "🚨 Stock Kritikoa: {{ingredient_name}}",
|
|
"message_with_po_pending": "{{ingredient_name}}-ren {{current_stock}}kg bakarrik ({{required_stock}}kg behar dituzu). Dagoeneko {{po_id}} sortu dut {{delivery_day_name}}rako entregarako. Mesedez onartu €{{po_amount}}.",
|
|
"message_with_po_created": "{{ingredient_name}}-ren {{current_stock}}kg bakarrik ({{required_stock}}kg behar dituzu). Dagoeneko {{po_id}} sortu dut. Berrikusi eta onartu €{{po_amount}}.",
|
|
"message_with_hours": "{{ingredient_name}}-ren {{current_stock}}kg bakarrik eskuragarri ({{required_stock}}kg behar dituzu {{hours_until}} ordutan).",
|
|
"message_with_date": "{{ingredient_name}}-ren {{current_stock}}kg bakarrik eskuragarri ({{required_stock}}kg behar dituzu {{production_day_name}}ko ekoizpenerako).",
|
|
"message_generic": "{{ingredient_name}}-ren {{current_stock}}kg bakarrik eskuragarri ({{required_stock}}kg behar dituzu)."
|
|
},
|
|
"low_stock": {
|
|
"title": "⚠️ Stock Baxua: {{ingredient_name}}",
|
|
"message_with_po": "{{ingredient_name}} stocka: {{current_stock}}kg (gutxienekoa: {{minimum_stock}}kg). Dagoeneko PO programatu dut osatzeko.",
|
|
"message_generic": "{{ingredient_name}} stocka: {{current_stock}}kg (gutxienekoa: {{minimum_stock}}kg). Eskaera egitea kontuan hartu."
|
|
},
|
|
"stock_depleted": {
|
|
"title": "📦 Eskaeragatik Stocka Agortu Da",
|
|
"message_with_supplier": "#{{order_id}} eskaerak {{ingredient_name}} behar du baina agortu da. Jarri harremanetan {{supplier_name}}rekin ({{supplier_phone}}).",
|
|
"message_generic": "#{{order_id}} eskaerak {{ingredient_name}} behar du baina agortu da. Berehala ekintza behar da."
|
|
},
|
|
"ingredient_shortage": {
|
|
"title": "⚠️ Osagaien Falta Ekoizpenean",
|
|
"message_with_customers": "{{ingredient_name}} nahikoa ez abian dauden loteentzat. {{affected_orders}} eskabide eraginda ({{customer_names}}). Oraingo stocka: {{current_stock}}kg, beharrezkoa: {{required_stock}}kg.",
|
|
"message_generic": "{{ingredient_name}} nahikoa ez abian dauden loteentzat. Oraingo stocka: {{current_stock}}kg, beharrezkoa: {{required_stock}}kg."
|
|
},
|
|
"expired_products": {
|
|
"title": "🚫 Iraungitako edo Iraungitzear Dauden Produktuak",
|
|
"message_with_names": "{{count}} produktu iraungitzen: {{product_names}}. Balio osoa: €{{total_value}}.",
|
|
"message_generic": "{{count}} produktu iraungitzen. Balio osoa: €{{total_value}}."
|
|
},
|
|
"production_delay": {
|
|
"title": "⏰ Ekoizpen Atzerapena: {{batch_name}}",
|
|
"message_with_customers": "{{batch_name}} lotea {{delay_minutes}} minutu atzeratu da. Bezeroak eraginda: {{customer_names}}. Jatorrizko entrega ordua: {{scheduled_time}}.",
|
|
"message_with_orders": "{{batch_name}} lotea {{delay_minutes}} minutu atzeratu da. {{affected_orders}} eskabide eraginda. Jatorrizko entrega ordua: {{scheduled_time}}.",
|
|
"message_generic": "{{batch_name}} lotea {{delay_minutes}} minutu atzeratu da. Jatorrizko entrega ordua: {{scheduled_time}}."
|
|
},
|
|
"equipment_failure": {
|
|
"title": "🔧 Ekipamendu Matxura: {{equipment_name}}",
|
|
"message_with_batches": "{{equipment_name}} huts egin du. {{affected_batches}} ekoizpeneko lote eraginda ({{batch_names}}).",
|
|
"message_generic": "{{equipment_name}} huts egin du. Berehala konponketa behar du."
|
|
},
|
|
"maintenance_required": {
|
|
"title": "🔧 Mantentze-lanak Behar Dira: {{equipment_name}}",
|
|
"message_with_hours": "{{equipment_name}}(e)k mantentze-lanak behar ditu {{hours_until}} ordutan. Programatu orain etetenak saihesteko.",
|
|
"message_with_days": "{{equipment_name}}(e)k mantentze-lanak behar ditu {{days_until}} egunetan. Programatu {{maintenance_date}} baino lehen."
|
|
},
|
|
"low_equipment_efficiency": {
|
|
"title": "📉 Eraginkortasun Baxua: {{equipment_name}}",
|
|
"message": "{{equipment_name}} %{{efficiency_percent}} eraginkortasunarekin funtzionatzen (esperoa: >{{threshold_percent}}%). Mantentze-lanak kontuan hartu."
|
|
},
|
|
"order_overload": {
|
|
"title": "📊 Eskabideen Gainzama",
|
|
"message_with_orders": "Gaitasuna %{{overload_percent}}z gainzamatuta. {{total_orders}} eskabide programatuta, gaitasuna: {{capacity_orders}}. Egutegia doitzea kontuan hartu.",
|
|
"message_generic": "Gaitasuna %{{overload_percent}}z gainzamatuta. Ekoizpen egutegia doitzea kontuan hartu."
|
|
},
|
|
"supplier_delay": {
|
|
"title": "🚚 Hornitzaile Atzerapena: {{supplier_name}}",
|
|
"message": "{{supplier_name}}(e)k {{ingredient_name}} entrega atzeratu du (PO: {{po_id}}). Data berria: {{new_delivery_date}}. Jatorrizkoa: {{original_delivery_date}}."
|
|
},
|
|
"temperature_breach": {
|
|
"title": "🌡️ Tenperatura Haustea",
|
|
"message": "Tenperatura {{location}}: {{current_temp}}°C (tartea: {{min_temp}}°C-{{max_temp}}°C). Iraupena: {{duration_minutes}} minutu."
|
|
},
|
|
"demand_surge_weekend": {
|
|
"title": "📈 Eskariaren Igoera: Asteburua",
|
|
"message": "Eskatutako eskaria %{{surge_percent}} handiagoa {{weekend_date}}rako. Produktu eragindak: {{products}}. Ekoizpena handitzea kontuan hartu."
|
|
},
|
|
"weather_impact_alert": {
|
|
"title": "🌦️ Espero den Eguraldiaren Eragina",
|
|
"message": "{{weather_condition}} esperotzen da {{date}}. Eskarian eragina: %{{impact_percent}}. Produktu eragindak: {{products}}."
|
|
},
|
|
"holiday_preparation": {
|
|
"title": "🎉 Jai Prestaketa: {{holiday_name}}",
|
|
"message": "{{holiday_name}} {{days_until}} egunetan ({{holiday_date}}). Eskatutako eskaria %{{expected_increase}} handiagoa. Funtsezko produktuak: {{products}}."
|
|
},
|
|
"severe_weather_impact": {
|
|
"title": "⛈️ Eguraldi Larriaren Eragina",
|
|
"message": "{{weather_condition}} larria esperotzen da {{date}}. Eskarian eragina: %{{impact_percent}}. Entrega ordutegiak doitzea kontuan hartu."
|
|
},
|
|
"unexpected_demand_spike": {
|
|
"title": "📊 Ustekabeko Eskariaren Igoera",
|
|
"message": "Eskaria %{{spike_percent}} igo da {{products}}entzat. Oraingo stocka agor daiteke {{hours_until_stockout}} ordutan."
|
|
},
|
|
"demand_pattern_optimization": {
|
|
"title": "💡 Eskari Ereduaren Optimizazioa",
|
|
"message": "Eredua detektatua: {{pattern_description}}. Gomendatzen da {{products}} ekoizpena doitzea eraginkortasuna optimizatzeko."
|
|
},
|
|
"inventory_optimization": {
|
|
"title": "📦 Inbentarioaren Optimizazioa",
|
|
"message": "{{ingredient_name}} etengabe gehiegizko stockarekin %{{excess_percent}}z. Gomendatzen da eskaera {{recommended_amount}}kg-ra murriztea."
|
|
},
|
|
"production_efficiency": {
|
|
"title": "⚡ Ekoizpen Eraginkortasunaren Aukera",
|
|
"message": "{{product_name}} eraginkorragoa da {{suggested_time}}etan. Ekoizpen denbora {{time_saved}} minutu laburragoa (%{{savings_percent}} aurrezkia)."
|
|
},
|
|
"sales_opportunity": {
|
|
"title": "💰 Salmenten Aukera",
|
|
"message": "{{products}}entzako eskari handia detektatuta. Ekoizpen gehigarria kontuan hartu. Sarrera potentziala: €{{potential_revenue}}."
|
|
},
|
|
"seasonal_adjustment": {
|
|
"title": "🍂 Sasoiko Doikuntza Gomendatua",
|
|
"message": "{{season}} sasoia hurbiltzen. Doitu {{products}} ekoizpena historia joerei oinarrituta (%{{adjustment_percent}} {{adjustment_direction}})."
|
|
},
|
|
"cost_reduction": {
|
|
"title": "💵 Kostu Murrizketa Aukera",
|
|
"message": "{{alternative_ingredient}}ra aldatzeak €{{savings_amount}}/hilabetean aurreztu dezake. Antzeko kalitatea, kostu txikiagoa."
|
|
},
|
|
"waste_reduction": {
|
|
"title": "♻️ Hondakin Murrizketa Aukera",
|
|
"message": "{{product_name}} hondakin handia (%{{waste_percent}}). Gomendatzen da lotea {{recommended_quantity}} unitatetara murriztea."
|
|
},
|
|
"quality_improvement": {
|
|
"title": "⭐ Kalitate Hobekuntza Gomendatua",
|
|
"message": "{{issue_description}} detektatuta {{product_name}}n. Gomendatutako ekintza: {{recommended_action}}."
|
|
},
|
|
"customer_satisfaction": {
|
|
"title": "😊 Bezeroaren Gogobetetasun Aukera",
|
|
"message": "{{customer_name}} bezeroak etengabe eskatzen du {{product_name}}. Eskaintza berezia edo leialtasun programa kontuan hartu."
|
|
},
|
|
"energy_optimization": {
|
|
"title": "⚡ Energia Optimizazioa",
|
|
"message": "{{equipment_name}}rako energia erabilera gailurra {{peak_time}}etan. {{off_peak_start}}-{{off_peak_end}}ra aldatzeak €{{savings_amount}}/hilabetean aurreztu dezake."
|
|
},
|
|
"staff_optimization": {
|
|
"title": "👥 Langile Optimizazioa",
|
|
"message": "{{shift_name}} langileak gehiegi %{{excess_percent}}z. Langile mailak doitzea kontuan hartu lan kostuak murrizteko."
|
|
},
|
|
"po_approval_needed": {
|
|
"title": "Erosketa Agindua #{{po_number}} onarpenaren beharra",
|
|
"message": "{{supplier_name}}-(r)entzako erosketa agindua {{currency}} {{total_amount}} onarpenaren zain. Entreaga {{required_delivery_date}}-(e)rako behar da."
|
|
},
|
|
"production_batch_start": {
|
|
"title": "Ekoizpen Lote Prest: {{product_name}}",
|
|
"message": "#{{batch_number}} lotea ({{quantity_planned}} {{unit}} {{product_name}}) hasteko prest. Lehentasuna: {{priority}}."
|
|
}
|
|
}
|
|
}
|