Ensure full Spanish localization for all 1.2.0 strings

- OnboardingView: wrap page titles/descriptions with String(localized:)
  using symbolic keys so SwiftUI can look them up correctly
- IAPService.paywallBenefits: change from static let to static var,
  wrap all strings with String(localized:) using symbolic keys
- en.lproj: add symbolic keys for new onboarding pages and paywall benefits
- es-ES.lproj: add Spanish translations for all new keys (onboarding pages,
  paywall benefits, batch update, contribution fields) plus pre-existing
  gaps (Monthly Highlights, Best/Worst Performer, Best Contributor)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
alexandrev-tibco
2026-02-20 22:41:40 +01:00
parent 015e718b39
commit 472342fa67
4 changed files with 70 additions and 14 deletions
@@ -112,6 +112,16 @@
"feature_no_ads" = "No Ads";
"feature_no_ads_desc" = "Ad-free experience forever";
// Paywall benefits (1.2.0)
"paywall_benefit_history_title" = "Your complete history";
"paywall_benefit_history_subtitle" = "Every snapshot, contribution, and gain since day one";
"paywall_benefit_charts_title" = "Charts that reveal patterns";
"paywall_benefit_charts_subtitle" = "Allocation, drawdown, performance — all in one place";
"paywall_benefit_forecasts_title" = "12-month forecasts";
"paywall_benefit_forecasts_subtitle" = "See where your portfolio is likely heading";
"paywall_benefit_noads_title" = "No ads, ever";
"paywall_benefit_noads_subtitle" = "Clean, focused experience with no distractions";
// MARK: - Settings
"settings_title" = "Settings";
"subscription" = "Subscription";
@@ -177,6 +187,16 @@
"onboarding_sync_desc" = "Your data syncs automatically via iCloud across all your Apple devices.";
"get_started" = "Get Started";
// Onboarding pages (1.2.0)
"onboarding_clarity_title" = "Know exactly where you stand";
"onboarding_clarity_desc" = "See your total wealth, real returns, and allocation — always up to date.";
"onboarding_habit_title" = "5 minutes a month is enough";
"onboarding_habit_desc" = "Log your values once a month. Portfolio Journal handles the math and shows your progress.";
"onboarding_calm_title" = "Ignore the noise. Track the trend.";
"onboarding_calm_desc" = "Daily swings don't tell the real story. Your growth over months and years does.";
"onboarding_goals_title" = "Reach your financial goals";
"onboarding_goals_desc" = "Set targets, track milestones, and see exactly how far you've come.";
// MARK: - Errors
"error_generic" = "An error occurred. Please try again.";
"error_no_purchases" = "No purchases found to restore";
@@ -137,6 +137,26 @@
"Unlimited sources, advanced charts & more" = "Fuentes ilimitadas, gráficos avanzados y más";
"See full access" = "Ver acceso completo";
// Paywall benefits (1.2.0)
"paywall_benefit_history_title" = "Tu historial completo";
"paywall_benefit_history_subtitle" = "Cada snapshot, aportación y ganancia desde el primer día";
"paywall_benefit_charts_title" = "Gráficos que revelan patrones";
"paywall_benefit_charts_subtitle" = "Asignación, drawdown, rendimiento — todo en un lugar";
"paywall_benefit_forecasts_title" = "Previsiones a 12 meses";
"paywall_benefit_forecasts_subtitle" = "Ve a dónde se dirige tu cartera";
"paywall_benefit_noads_title" = "Sin anuncios, nunca";
"paywall_benefit_noads_subtitle" = "Una experiencia limpia y sin distracciones";
// MARK: - Onboarding pages (1.2.0)
"onboarding_clarity_title" = "Sabe exactamente dónde estás";
"onboarding_clarity_desc" = "Consulta tu patrimonio total, rendimientos reales y distribución — siempre actualizado.";
"onboarding_habit_title" = "5 minutos al mes son suficientes";
"onboarding_habit_desc" = "Registra tus valores una vez al mes. Portfolio Journal hace los cálculos y muestra tu progreso.";
"onboarding_calm_title" = "Ignora el ruido. Sigue la tendencia.";
"onboarding_calm_desc" = "Las variaciones diarias no cuentan la historia real. Tu crecimiento en meses y años sí.";
"onboarding_goals_title" = "Alcanza tus metas financieras";
"onboarding_goals_desc" = "Define objetivos, sigue los hitos y ve exactamente hasta dónde has llegado.";
// MARK: - Batch Update (1.2.0)
"Batch Update" = "Actualización en bloque";
"Current value" = "Valor actual";
@@ -147,3 +167,11 @@
"New capital added" = "Capital nuevo añadido";
"Contribution (Optional)" = "Aportación (opcional)";
"Track new capital added to separate it from investment growth." = "Registra el capital nuevo para separarlo del crecimiento de la inversión.";
// MARK: - Monthly Highlights (pre-existing gaps)
"Monthly Highlights" = "Aspectos destacados del mes";
"Best Performer" = "Mejor rendimiento";
"Worst Performer" = "Peor rendimiento";
"Best Contributor" = "Mayor aportador";
"Update Check-in" = "Actualizar chequeo";
"Completed %@" = "Completado %@";