Files
InvestmentTrackerApp/PortfolioJournal/Resources/en.lproj/Localizable.strings
T
alexandrev-tibco 197bddcd7e Growth y monetización: fixes críticos, paywall multi-plan, teasers y App Intents
CRÍTICO — enlaces del App Store rotos (adquisición viral = 0):
- GoalShareService.appStoreURL apuntaba a id6744983373 (404): el QR de TODAS las
  imágenes compartidas llevaba a una página muerta. Corregido a id6757678318.
- SettingsView enlazaba id6741412965 (una novela romántica). Ahora usa la constante.

Monetización:
- IAPService multi-producto: sub anual (com.portfoliojournal.premium.annual, con
  intro offer/trial) + lifetime como ancla. isPremium acepta cualquiera de los dos.
  Paywall con selector de plan (anual por defecto si existe; degrada a solo lifetime
  mientras el producto no esté creado en App Store Connect).
- paywallBenefits: añadidos Multiple Accounts y Family Sharing (diferenciadores).
- Teaser de historia bloqueada en Charts: "N meses más con Premium" en vez de
  truncar en silencio (FreemiumValidator.hiddenHistoryMonths + banner).
- Trigger de paywall de backups ahora instrumentado (logPaywallShown "backups").

Retención / adquisición:
- Rating velocity: prompt tras 2 check-ins y 30 días (antes 3 + 90 — en una app
  mensual eso era >3 meses sin poder pedir la primera review con ~0 ratings).
- Sample data ON por defecto en onboarding (skip ya no aterriza en dashboard vacío).
- Notificación de protección de streak el día 25 si el check-in del mes está pendiente.
- App Intents + AppShortcutsProvider: "Update my portfolio" / "Check my portfolio"
  vía Siri/Shortcuts/Spotlight.
- Instrumentación: onboarding_step/onboarding_skipped y content_shared (viral loop).
- ScreenshotMode (--screenshots) para capturas de marketing automatizadas.

ASO:
- 6 locales nuevos en metadata (en-GB, en-CA, en-AU, es-MX, fr-CA, pt-PT) reusando
  traducciones — 6 campos de keywords extra; pt-PT adaptado (reforma).
- Categoría secundaria: PRODUCTIVITY.
- 17 strings nuevas localizadas en los 7 idiomas.

Pendiente manual: crear la sub anual en App Store Connect (grupo de suscripción +
intro offer 7 días) con el id exacto com.portfoliojournal.premium.annual.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_015qUZrBusG82T37R7PeokqJ
2026-07-02 22:12:32 +02:00

444 lines
18 KiB
Plaintext

/*
Localizable.strings
PortfolioJournal
English (Base) localization
*/
// MARK: - General
"app_name" = "Portfolio Journal";
"ok" = "OK";
"cancel" = "Cancel";
"save" = "Save";
"delete" = "Delete";
"edit" = "Edit";
"add" = "Add";
"done" = "Done";
"close" = "Close";
"continue" = "Continue";
"skip" = "Skip";
"error" = "Error";
"success" = "Success";
"loading" = "Loading...";
"loading_data" = "Loading your data...";
// MARK: - Tab Bar
"tab_dashboard" = "Home";
"tab_sources" = "Sources";
"tab_charts" = "Charts";
"tab_settings" = "Settings";
// MARK: - Dashboard
"dashboard_title" = "Home";
"total_portfolio_value" = "Total Portfolio Value";
"today" = "today";
"returns" = "Returns";
"by_category" = "By Category";
"pending_updates" = "Pending Updates";
"see_all" = "See All";
// MARK: - Sources
"sources_title" = "Sources";
"add_source" = "Add Source";
"source_name" = "Source Name";
"select_category" = "Select Category";
"initial_value" = "Initial Value";
"initial_value_optional" = "Initial Value (Optional)";
"reminder_frequency" = "Reminder Frequency";
"source_limit_warning" = "Source limit reached. Upgrade to Premium for unlimited sources.";
"no_sources" = "No Investment Sources";
"no_sources_message" = "Add your first investment source to start tracking your portfolio.";
// MARK: - Snapshots
"add_snapshot" = "Add Snapshot";
"edit_snapshot" = "Edit Snapshot";
"snapshot_date" = "Date";
"snapshot_value" = "Value";
"snapshot_contribution" = "Contribution";
"contribution_optional" = "Contribution (Optional)";
"notes" = "Notes";
"notes_optional" = "Notes (Optional)";
"previous_value" = "Previous: %@";
"change_from_previous" = "Change from previous";
// MARK: - Charts
"charts_title" = "Charts";
"evolution" = "Evolution";
"allocation" = "Allocation";
"performance" = "Performance";
"drawdown" = "Drawdown";
"volatility" = "Volatility";
"prediction" = "Prediction";
"portfolio_evolution" = "Portfolio Evolution";
"asset_allocation" = "Asset Allocation";
"performance_by_category" = "Performance by Category";
"drawdown_analysis" = "Drawdown Analysis";
"prediction_12_month" = "12-Month Prediction";
"not_enough_data" = "Not enough data";
// MARK: - Metrics
"cagr" = "CAGR";
"twr" = "TWR";
"max_drawdown" = "Max Drawdown";
"sharpe_ratio" = "Sharpe Ratio";
"win_rate" = "Win Rate";
"avg_monthly" = "Avg Monthly";
"best_month" = "Best Month";
"worst_month" = "Worst Month";
// MARK: - Premium
"premium" = "Premium";
"upgrade_to_premium" = "Upgrade to Premium";
"unlock_full_potential" = "Unlock Full Potential";
"one_time_purchase" = "One-time purchase";
"includes_family_sharing" = "Includes Family Sharing";
"upgrade_now" = "Upgrade Now";
"restore_purchases" = "Restore Purchases";
"premium_active" = "Premium Active";
"premium_feature" = "Premium Feature";
"unlock" = "Unlock";
// Premium Features
"feature_unlimited_sources" = "Unlimited Sources";
"feature_unlimited_sources_desc" = "Track as many investments as you want";
"feature_full_history" = "Full History";
"feature_full_history_desc" = "Access your complete investment history";
"feature_advanced_charts" = "Advanced Charts";
"feature_advanced_charts_desc" = "5 types of detailed analytics charts";
"feature_predictions" = "Predictions";
"feature_predictions_desc" = "AI-powered 12-month forecasts";
"feature_export" = "Export Data";
"feature_export_desc" = "Export to CSV and JSON formats";
"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";
"notifications" = "Notifications";
"default_reminder_time" = "Default Reminder Time";
"data" = "Data";
"export_data" = "Export Data";
"total_sources" = "Total Sources";
"total_snapshots" = "Total Snapshots";
"storage_used" = "Storage Used";
"about" = "About";
"version" = "Version";
"privacy_policy" = "Privacy Policy";
"terms_of_service" = "Terms of Service";
"support" = "Support";
"rate_app" = "Rate App";
"danger_zone" = "Danger Zone";
"reset_all_data" = "Reset All Data";
"reset_confirmation" = "This will permanently delete all your investment data. This action cannot be undone.";
// MARK: - Notification Frequencies
"frequency_monthly" = "Monthly";
"frequency_quarterly" = "Quarterly";
"frequency_semiannual" = "Semi-Annual";
"frequency_annual" = "Annual";
"frequency_custom" = "Custom";
"frequency_never" = "Never";
"every_n_months" = "Every %d month(s)";
// MARK: - Categories
"category_stocks" = "Stocks";
"category_bonds" = "Bonds";
"category_real_estate" = "Real Estate";
"category_crypto" = "Crypto";
"category_cash" = "Cash";
"category_etfs" = "ETFs";
"category_retirement" = "Retirement";
"category_other" = "Other";
"uncategorized" = "Uncategorized";
// MARK: - Time Ranges
"time_1m" = "1M";
"time_3m" = "3M";
"time_6m" = "6M";
"time_1y" = "1Y";
"time_all" = "All";
// MARK: - Export
"export_format" = "Select Format";
"export_csv" = "CSV";
"export_csv_desc" = "Compatible with Excel, Google Sheets";
"export_json" = "JSON";
"export_json_desc" = "Full data structure for backup";
// MARK: - Onboarding
"onboarding_track_title" = "Track Your Investments";
"onboarding_track_desc" = "Monitor all your investment sources in one place. Stocks, bonds, real estate, crypto, and more.";
"onboarding_visualize_title" = "Visualize Your Growth";
"onboarding_visualize_desc" = "Beautiful charts show your portfolio evolution, allocation, and performance over time.";
"onboarding_reminders_title" = "Never Miss an Update";
"onboarding_reminders_desc" = "Set reminders to track your investments regularly. Monthly, quarterly, or custom schedules.";
"onboarding_sync_title" = "Sync Everywhere";
"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.";
// iCloud check before onboarding (1.2.1)
"icloud_check_title" = "Already use Portfolio Journal?";
"icloud_check_description" = "If you have data on another device, enable iCloud to restore it here.";
"icloud_enabled_title" = "iCloud Enabled";
"icloud_enabled_description" = "Close the app and reopen it. Your data will load automatically from iCloud.";
"checking_icloud" = "Checking iCloud...";
// MARK: - Errors
"error_generic" = "An error occurred. Please try again.";
"error_no_purchases" = "No purchases found to restore";
"error_purchase_failed" = "Purchase failed: %@";
"error_export_failed" = "Export failed. Please try again.";
// MARK: - Placeholders
"placeholder_source_name" = "e.g., Vanguard 401k";
"placeholder_value" = "0.00";
"placeholder_notes" = "Add notes...";
// MARK: - Monthly Check-in Moods
"mood_energized_title" = "On Fire";
"mood_confident_title" = "Confident";
"mood_balanced_title" = "Steady";
"mood_cautious_title" = "Cautious";
"mood_stressed_title" = "Stressed";
"mood_energized_detail" = "Feeling unbeatable";
"mood_confident_detail" = "On track and composed";
"mood_balanced_detail" = "Calm and patient";
"mood_cautious_detail" = "Watching the moves";
"mood_stressed_detail" = "Need a reset";
// MARK: - Monthly Check-in Achievements
"achievement_streak_3_title" = "3-Month Streak";
"achievement_streak_3_detail" = "Kept your check-ins on time for three months straight.";
"achievement_streak_6_title" = "Half-Year Hot Streak";
"achievement_streak_6_detail" = "Six consecutive on-time check-ins.";
"achievement_streak_12_title" = "Year of Momentum";
"achievement_streak_12_detail" = "A full year without missing the deadline.";
"achievement_perfect_on_time_title" = "Never Late";
"achievement_perfect_on_time_detail" = "Every check-in landed before the deadline.";
"achievement_clutch_finish_title" = "Clutch Finish";
"achievement_clutch_finish_detail" = "Submitted with hours to spare and still on time.";
"achievement_early_bird_title" = "Early Bird";
"achievement_early_bird_detail" = "On average you finish with plenty of time left.";
"achievements_title" = "Achievements";
"achievements_view_all" = "View all achievements";
"achievements_nav_title" = "Achievements";
"achievements_progress_title" = "Progress";
"achievements_unlocked_title" = "Unlocked";
"achievements_unlocked_empty" = "Complete check-ins to unlock achievements.";
"achievements_locked_title" = "Locked";
"achievements_locked_empty" = "All achievements unlocked. Nice work!";
// MARK: - Accessibility
"rating_accessibility" = "Rating %d of 5";
"achievements_unlocked_count" = "%d of %d unlocked";
"last_check_in" = "Last check-in: %@";
"next_check_in" = "Next check-in: %@";
"on_time_rate" = "%@ on-time";
"on_time_count" = "%d/%d on time";
"tightest_finish" = "Tightest finish: %@ before deadline.";
"date_today" = "Today";
"date_yesterday" = "Yesterday";
"date_never" = "Never";
"calendar_event_title" = "%@: Monthly Check-in";
"calendar_event_notes" = "Open %@ and complete your monthly check-in.";
// MARK: - Satisfaction & Review Dialogs
"checkin_enjoying_dialog_title" = "How much are you enjoying Portfolio Journal?";
"checkin_enjoying_dialog_message" = "Congrats on your new achievement! Your feedback helps us improve.";
"not_now" = "Not Now";
"rating_1_star" = "1 Star";
"rating_n_stars" = "%d Stars";
"app_store_review_title" = "Would you like to leave an App Store review?";
"app_store_review_message" = "Thanks for the 5 stars. It really helps other investors discover the app.";
"write_review" = "Write a Review";
// MARK: - Batch Update Actions
"save_1_snapshot" = "Save 1 Snapshot";
"save_n_snapshots" = "Save %d Snapshots";
// MARK: - Monthly Check-in Card
"checkin_update_month" = "Update %@";
"checkin_start_new" = "Start";
// MARK: - Re-engagement & Monthly Notifications (1.2.1)
"reengagement_title" = "Your portfolio is waiting";
"reengagement_body" = "A few minutes is all it takes to stay on top of your investments.";
"monthly_checkin_notification_title" = "Time for your monthly update";
"monthly_checkin_notification_body" = "Log this month's values and track your portfolio growth.";
// MARK: - Onboarding QuickStart (1.3.0)
"onboarding_quickstart_title" = "Almost there";
"onboarding_quickstart_subtitle" = "Add your first investment source to start tracking your portfolio.";
"onboarding_add_first_source" = "Add My First Investment";
"onboarding_import_data" = "Import Existing Data";
// MARK: - iCloud Sync Status (1.3.1)
"Force Upload to iCloud" = "Force Upload to iCloud";
"Uploading..." = "Uploading...";
"No export yet" = "No export yet";
"Syncing with iCloud..." = "Syncing with iCloud...";
"Not synced yet" = "Not synced yet";
"Refresh" = "Refresh";
// MARK: - iCloud Diagnostics (1.3.1)
"Verify iCloud Setup" = "Verify iCloud Setup";
"Checking…" = "Checking…";
"context.hasChanges: YES ✓" = "context.hasChanges: YES ✓";
"context.hasChanges: NO ✗ — objects may not have been queued" = "context.hasChanges: NO ✗ — objects may not have been queued";
// MARK: - Sources Filter & Search (1.3.1)
"sources_filter_all" = "All";
"Search sources" = "Search sources";
"Clear Filters" = "Clear Filters";
// MARK: - AddSourceView (1.3.0)
"add_source_name_placeholder" = "e.g. MSCI World ETF, ING Savings, Apartment...";
"add_source_name_footer" = "A source is any investment you want to track: stocks, ETFs, savings accounts, real estate, crypto, and more.";
// MARK: - Goals Archive (1.3.2)
"goals_filter_active" = "Active";
"goals_filter_archived" = "Archived";
"goals_filter_all" = "All";
"goal_archive" = "Archive";
"goal_unarchive" = "Unarchive";
"goals_empty_archived" = "No archived goals.";
"goals_all_active_achieved" = "All active goals are achieved.";
// MARK: - Category Management (1.3.2)
"category_name_placeholder" = "e.g. Emergency Fund";
"category_has_sources_warning" = "Cannot delete a category that has sources. Remove or reassign all sources first.";
"categories_empty" = "No categories yet.";
// MARK: - CSV Column Mapping (1.3.2)
"csv_mapping_subtitle" = "Match your CSV columns to Portfolio Journal fields";
"csv_field_source" = "Source Name (required)";
"csv_field_value" = "Value (required)";
"csv_field_date" = "Date";
"csv_field_category" = "Category";
"csv_field_contribution" = "Contribution";
"csv_field_notes" = "Notes";
"csv_no_column" = "— Not mapped —";
"csv_enter_value" = "Enter value";
"csv_use_today" = "Use today's date";
"csv_no_date_hint" = "All rows will be imported as a snapshot for today.";
"csv_preview_section" = "CSV Preview";
"csv_required_section" = "Required Fields";
"csv_optional_section" = "Optional Fields";
// MARK: - 1.3.2 Features
"goal_achieved_notification_title" = "Goal achieved! 🎉";
"goal_achieved_notification_body" = "You reached your goal: %@";
"snapshot_duplicate_title" = "Snapshot Already Exists";
"snapshot_duplicate_message" = "You already have a snapshot for this month. Do you want to add another one?";
"snapshot_duplicate_replace" = "Replace Existing";
"snapshot_duplicate_add" = "Add Anyway";
"snapshot_contribution_propagate_title" = "Apply Contribution";
"snapshot_contribution_propagate_message" = "Apply %@ as the contribution to other snapshots too?";
"snapshot_contribution_propagate_forward" = "Apply Going Forward";
"snapshot_contribution_propagate_backward" = "Apply to Earlier";
"snapshot_contribution_propagate_all" = "Apply to All";
"snapshot_contribution_propagate_this" = "Only This Snapshot";
"contributions_vs_returns_title" = "Invested vs. Returns";
"contributions_vs_returns_invested" = "Invested";
"contributions_vs_returns_returns" = "Market Returns";
"chart_yoy_title" = "Year over Year";
"chart_yoy_estimated_note" = "* estimated (year-end forecast)";
"chart_yoy_empty" = "Add more snapshots across different years to see the comparison.";
// MARK: - Goal Delete Confirmation (1.3.2)
"goal_delete_title" = "Delete Goal";
"goal_delete_message" = "This goal will be permanently deleted. This action cannot be undone.";
"goal_delete_confirm" = "Delete";
// MARK: - 1.4.0 Features
"monthly_summary_notification_title" = "Your Monthly Portfolio Summary";
"monthly_summary_notification_body" = "Check how your investments performed this month.";
"streak_badge" = "%d-month streak";
"goals_empty_add_cta" = "Add My First Goal";
"journal_empty_title" = "No check-ins yet";
"journal_empty_body" = "Snapshot updates automatically create monthly entries. Add your first source to get started.";
"quick_update_title" = "Quick Update";
"quick_update_section_header" = "Enter current values";
"quick_update_section_footer" = "Only sources with a value entered will be updated.";
"quick_update_placeholder" = "New value";
"quick_update_save" = "Save All";
"quick_update_no_sources" = "No sources";
"quick_update_no_sources_body" = "Add investment sources first to use Quick Update.";
"update_available_title" = "Update Available";
"update_available_body" = "Version %@ is ready on the App Store.";
"whats_new_title" = "What's New in 1.4";
"whats_new_subtitle" = "Improvements to help you stay on track.";
"whats_new_quick_update_title" = "Quick Portfolio Update";
"whats_new_quick_update_body" = "Update all your sources from a single screen with one tap.";
"whats_new_streak_title" = "Update Streak";
"whats_new_streak_body" = "Track how many months in a row you've kept your portfolio up to date.";
"whats_new_goals_title" = "Smarter Goals & Journal";
"whats_new_goals_body" = "Improved empty states help you get started faster.";
"whats_new_continue" = "Let's Go";
"source_monthly_contribution_title" = "Monthly Contribution";
"source_monthly_contribution_placeholder" = "e.g. 500";
"source_monthly_contribution_not_set" = "Not configured";
"source_monthly_contribution_hint" = "Pre-filled as contribution in Quick Update";
"quick_update_contribution_label" = "Contribution";
"quick_update_contribution_placeholder" = "Amount";
"source_monthly_contribution_apply_title" = "Apply Contribution";
"source_monthly_contribution_apply_message" = "Apply %@ to all past snapshots that don't have a contribution?";
"source_monthly_contribution_apply_retroactive" = "Apply to All Past Snapshots";
"source_monthly_contribution_apply_forward" = "Only Going Forward";
// MARK: - Portfolio Insights
"insights_section_title" = "Insights";
"insight_milestone_title" = "Milestone ahead";
"insight_milestone_value" = "%1$@ from %2$@";
"insight_ytd_title" = "Year to date";
"insight_market_gains_title" = "Market gains";
"insight_market_gains_value" = "+%@ from markets";
"insight_streak_title" = "Tracking streak";
"insight_streak_value" = "%d months in a row";
"insight_forecast_title" = "On track for";
"notification_milestone_title" = "Portfolio Milestone! 🎉";
"notification_milestone_body" = "Your portfolio just passed %@. Congrats!";
"streak_protection_notification_title" = "Don't break your streak 🔥";
"streak_protection_notification_body" = "Your monthly check-in is still pending. It takes 2 minutes to keep your streak alive.";
"paywall_benefit_accounts_title" = "Multiple Accounts";
"paywall_benefit_accounts_subtitle" = "Separate portfolios for family or business";
"paywall_benefit_family_title" = "Family Sharing";
"paywall_benefit_family_subtitle" = "One purchase, up to 5 family members";
"paywall_plan_annual" = "Annual";
"paywall_plan_annual_per_year" = "%@ / year";
"paywall_plan_lifetime" = "Lifetime";
"paywall_plan_lifetime_badge" = "BEST VALUE";
"paywall_trial_days" = "days";
"paywall_trial_weeks" = "weeks";
"paywall_trial_months" = "months";
"paywall_trial_years" = "years";
"paywall_trial_format" = "%d %@ free";
"chart_history_locked" = "%d more months of history — unlock with Premium";