From cce483c5b136f26209c8135e284f012fba9d8688 Mon Sep 17 00:00:00 2001 From: Claude Date: Sat, 7 Feb 2026 21:23:40 +0000 Subject: [PATCH] fix: complete Spanish-to-English translation for RoadmapTab Added missing translation keys for visible UI elements: - Investment Scenarios section (title, subtitle, tooltip) - Table headers (Scenario, Investment, Recurring, Savings, Margin, Payback, ROI, Risk) - Risk labels (Low, Medium, High) - Wave card labels (Savings/year, Margin/year, Savings:) - Timeline badges (Conditional, risk indicators) - Tooltips (enabler wave, negative margin, projected ROI, adjusted ROI) Build verified successfully https://claude.ai/code/session_03272424-c661-4002-a75e-2f81579fdd6e --- frontend/components/tabs/RoadmapTab.tsx | 48 ++++++++++++------------- frontend/locales/en.json | 17 ++++++++- frontend/locales/es.json | 17 ++++++++- 3 files changed, 56 insertions(+), 26 deletions(-) diff --git a/frontend/components/tabs/RoadmapTab.tsx b/frontend/components/tabs/RoadmapTab.tsx index f420807..13fddd6 100644 --- a/frontend/components/tabs/RoadmapTab.tsx +++ b/frontend/components/tabs/RoadmapTab.tsx @@ -1160,11 +1160,11 @@ function WaveCard({

{formatCurrency(wave.costoRecurrenteAnual)}

-

Ahorro/año

+

{t('roadmap.comparison.savingsPerYear')}

{formatCurrency(wave.ahorroAnual)}

-

Margen/año

+

{t('roadmap.comparison.marginPerYear')}

{formatCurrency(margenAnual)}

@@ -1248,11 +1248,11 @@ function ScenarioComparison({ escenarios }: { escenarios: EscenarioData[] }) {

- Escenarios de Inversión + {t('roadmap.comparison.title')}

- Comparación de opciones según nivel de compromiso - + {t('roadmap.comparison.subtitle')} + ℹ️

@@ -1262,20 +1262,20 @@ function ScenarioComparison({ escenarios }: { escenarios: EscenarioData[] }) { - - - + + + - - + + - + @@ -1296,10 +1296,10 @@ function ScenarioComparison({ escenarios }: { escenarios: EscenarioData[] }) { @@ -1566,7 +1566,7 @@ function RoadmapTimeline({ waves }: { waves: WaveData[] }) { {formatCurrency(wave.inversionSetup)}
- Ahorro: + {t('roadmap.comparison.savingsLabel')} {formatCurrency(wave.ahorroAnual)}
@@ -1574,7 +1574,7 @@ function RoadmapTimeline({ waves }: { waves: WaveData[] }) { {/* Conditional badge */} {wave.esCondicional && (
- Condicional + {t('roadmap.comparison.conditional')}
)} @@ -1584,7 +1584,7 @@ function RoadmapTimeline({ waves }: { waves: WaveData[] }) { wave.riesgo === 'medio' ? 'bg-amber-500 text-white' : 'bg-red-500 text-white' }`}> - {wave.riesgo === 'bajo' ? '● Bajo' : wave.riesgo === 'medio' ? '● Medio' : '● Alto'} + ● {t(`roadmap.comparison.risk${wave.riesgo.charAt(0).toUpperCase() + wave.riesgo.slice(1)}`)} diff --git a/frontend/locales/en.json b/frontend/locales/en.json index 7d6d5d3..b2809c5 100644 --- a/frontend/locales/en.json +++ b/frontend/locales/en.json @@ -686,9 +686,13 @@ "legendRisk": "= Risk" }, "comparison": { + "title": "Investment Scenarios", + "subtitle": "Comparison of options by commitment level", + "tooltip": "ROI based on industry benchmarks. Adjusted ROI considers implementation risk factors.", "investment": "Investment", "recurring": "Recurring", "savings": "Savings", + "adjusted": "adjusted", "margin": "Margin", "payback": "Payback", "roi3y": "3y ROI", @@ -697,7 +701,18 @@ "recommendation": "Recommendation", "recommendationEnabler": "Recommendation (Enabler)", "enabler": "Enabler", - "recommended": "Recommended" + "recommended": "Recommended", + "savingsPerYear": "Savings/year", + "marginPerYear": "Margin/year", + "savingsLabel": "Savings:", + "conditional": "Conditional", + "riskLow": "Low", + "riskMedium": "Medium", + "riskHigh": "High", + "enablerWaveTooltip": "Enabler wave - its value is in unlocking subsequent waves", + "negativeMarginTooltip": "Negative annual margin", + "projectedRoiTooltip": "Projected ROI. Validate with pilot.", + "adjustedRoiTooltip": "ROI adjusted for implementation risk" }, "entryCriteria": { "wave1TierFrom": "HUMAN-ONLY (4), AUGMENT (3)", diff --git a/frontend/locales/es.json b/frontend/locales/es.json index c25908b..ea61f0e 100644 --- a/frontend/locales/es.json +++ b/frontend/locales/es.json @@ -686,9 +686,13 @@ "legendRisk": "= Riesgo" }, "comparison": { + "title": "Escenarios de Inversión", + "subtitle": "Comparación de opciones según nivel de compromiso", + "tooltip": "ROI basado en benchmarks de industria. El ROI ajustado considera factores de riesgo de implementación.", "investment": "Inversión", "recurring": "Recurrente", "savings": "Ahorro", + "adjusted": "ajustado", "margin": "Margen", "payback": "Payback", "roi3y": "ROI 3a", @@ -697,7 +701,18 @@ "recommendation": "Recomendación", "recommendationEnabler": "Recomendación (Habilitador)", "enabler": "Habilitador", - "recommended": "Recomendado" + "recommended": "Recomendado", + "savingsPerYear": "Ahorro/año", + "marginPerYear": "Margen/año", + "savingsLabel": "Ahorro:", + "conditional": "Condicional", + "riskLow": "Bajo", + "riskMedium": "Medio", + "riskHigh": "Alto", + "enablerWaveTooltip": "Wave habilitadora - su valor está en desbloquear waves posteriores", + "negativeMarginTooltip": "Margen anual negativo", + "projectedRoiTooltip": "ROI proyectado. Validar con piloto.", + "adjustedRoiTooltip": "ROI ajustado por riesgo de implementación" }, "entryCriteria": { "wave1TierFrom": "HUMAN-ONLY (4), AUGMENT (3)",
EscenarioInversiónRecurrente{t('roadmap.comparison.scenario')}{t('roadmap.comparison.investment')}{t('roadmap.comparison.recurring')} - Ahorro - (ajustado) + {t('roadmap.comparison.savings')} + ({t('roadmap.comparison.adjusted')}) MargenPayback{t('roadmap.comparison.margin')}{t('roadmap.comparison.payback')} - ROI 3a - (ajustado) + {t('roadmap.comparison.roi3y')} + ({t('roadmap.comparison.adjusted')}) Riesgo{t('roadmap.comparison.risk')}
{esc.esHabilitador && ( - 💡 + 💡 )} {!esc.esRentable && !esc.esHabilitador && ( - + )} {roiInfo.text} {roiInfo.isHighWarning && ( - ⚠️ + ⚠️ )} {roiInfo.showAjustado && esc.roi3AnosAjustado > 0 && ( - - ({esc.roi3AnosAjustado.toFixed(1)}% ajust.) + + ({esc.roi3AnosAjustado.toFixed(1)}% {t('roadmap.comparison.adjusted').slice(0, 5)}.) )}
@@ -1396,7 +1396,7 @@ function ScenarioComparison({ escenarios }: { escenarios: EscenarioData[] }) {
- {esc.riesgo.charAt(0).toUpperCase() + esc.riesgo.slice(1)} + {t(`roadmap.comparison.risk${esc.riesgo.charAt(0).toUpperCase() + esc.riesgo.slice(1)}`)}