f2f54a5ca3
- AddSourceView: sección de valor reencuadrada como 'Valor de hoy' (primer check-in); si se omite, abre AddSnapshotView automáticamente en vez de dejar al usuario en el dashboard vacío - QuickUpdateView: estado sin fuentes ahora tiene CTA 'Añade tu primera fuente' → .openAddFirstSource - 3 claves nuevas localizadas en los 7 idiomas - Bump a 1.6.1 (84) Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01VXtwQP6nYnbLFVqsHiTK5G
681 lines
30 KiB
Plaintext
681 lines
30 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.";
|
||
"reengagement_goal_title" = "You're on track 📈";
|
||
"reengagement_goal_body" = "At this pace you'll reach \"%@\" by %@. See how close you are.";
|
||
"reengagement_yoy_title" = "Look at that growth 👀";
|
||
"reengagement_yoy_body" = "You're up %@ over the last year. Check the trend.";
|
||
"reengagement_month_title" = "Nice month 📈";
|
||
"reengagement_month_body" = "Your portfolio grew %@ this month. Take a look.";
|
||
"reengagement_milestone_title" = "So close 🎯";
|
||
"reengagement_milestone_body" = "You're almost at %@. How close are you today?";
|
||
"reengagement_streak_title" = "Keep the streak alive 🔥";
|
||
"reengagement_streak_body" = "You've logged %d months in a row. Don't stop now.";
|
||
"reengagement_neutral_title" = "Anything new? 👀";
|
||
"reengagement_neutral_body" = "There's been movement in your portfolio. See what changed.";
|
||
"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";
|
||
"insight_allocation_title" = "Allocation drift";
|
||
"insight_allocation_over_value" = "%1$@ is %2$.0f%% — above your %3$.0f%% target";
|
||
"insight_allocation_under_value" = "%1$@ is %2$.0f%% — below your %3$.0f%% target";
|
||
"insight_allocation_detail" = "Rebalance to stay on plan";
|
||
"insight_concentration_title" = "Concentration risk";
|
||
"insight_concentration_value" = "%1$@ is %2$.0f%% of your portfolio";
|
||
"insight_concentration_detail" = "Consider spreading it out";
|
||
"insight_best_performer_title" = "Best performer";
|
||
"insight_worst_performer_title" = "Needs attention";
|
||
"insight_performer_value" = "%1$@ · %2$+.1f%%";
|
||
"insight_diversification_title" = "Diversification";
|
||
"insight_diversification_single_value" = "All in one source — consider adding another";
|
||
"insight_diversification_good_value" = "Spread across %d categories";
|
||
"goal_projection_projected" = "Projected: %@";
|
||
"goal_projection_add_contributions" = "Add contributions to reach this";
|
||
"goal_chip_ahead" = "Ahead of schedule";
|
||
"goal_chip_on_track" = "On track";
|
||
"goal_chip_behind" = "Behind";
|
||
"goal_chip_at_this_pace" = "At this pace…";
|
||
"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";
|
||
|
||
"chart_group_overview" = "Overview";
|
||
"chart_group_analyze" = "Analyze";
|
||
"chart_group_risk" = "Risk";
|
||
"chart_group_forecast" = "Forecast";
|
||
"kpi_total_value" = "Total Value";
|
||
"kpi_period_return" = "Period Return";
|
||
"kpi_cagr" = "CAGR";
|
||
"kpi_volatility" = "Volatility";
|
||
"kpi_max_drawdown" = "Max Drawdown";
|
||
"chart_zoom_in" = "Zoom in";
|
||
"chart_zoom_out" = "Zoom out";
|
||
"chart_zoom_reset" = "Reset zoom";
|
||
|
||
"quick_update_paste_suggestion" = "Paste %@ into %@";
|
||
"quick_update_next_badge" = "NEXT";
|
||
|
||
// App Intents (1.4.2)
|
||
"intent_logged_dialog" = "Saved %1$@ for %2$@.";
|
||
"intent_amount_invalid" = "The amount must be greater than zero. How much?";
|
||
|
||
// Chart share (1.4.2)
|
||
"chart_share_button" = "Share chart";
|
||
"chart_share_text" = "My %@ chart — tracked with Portfolio Journal";
|
||
"chart_share_tagline" = "Private, calm investment tracking for iPhone & iPad.";
|
||
"chart_share_scan" = "Scan to download";
|
||
"chart_locked_title" = "%@ is a Premium chart";
|
||
"chart_locked_cta" = "Unlock Premium";
|
||
|
||
// Calm 2.0 Home (1.5.0)
|
||
"checkin_done_title" = "%@ check-in done";
|
||
"checkin_done_next" = "Next one: %@";
|
||
"checkin_next_due" = "Next check-in: %@";
|
||
"checkin_days_left" = "%d days left";
|
||
"checkin_due_today" = "Due today";
|
||
"checkin_overdue" = "Overdue";
|
||
"dash_chart_yoy" = "Year vs Year";
|
||
"home_chart_locked_sub" = "Unlock with Premium to explore this chart.";
|
||
"checkin_sources_progress" = "%1$d of %2$d sources updated";
|
||
|
||
// Guided check-in (1.5.0 Fase 2)
|
||
"guided_previous_value" = "Last month";
|
||
"guided_paste_amount" = "Paste %@";
|
||
"guided_next" = "Next";
|
||
"guided_same_as_last" = "Same as last month";
|
||
"guided_skip" = "Skip";
|
||
"guided_reflection_title" = "How does this month feel?";
|
||
"guided_reflection_subtitle" = "A quick note for your future self.";
|
||
"guided_note_placeholder" = "One honest line about this month…";
|
||
"guided_finish" = "Finish check-in";
|
||
"guided_done_title" = "%@ check-in done";
|
||
"guided_streak" = "%d months in a row";
|
||
"guided_share_month" = "Share this month";
|
||
"guided_done_cta" = "Done";
|
||
"journal_no_note" = "No note yet.";
|
||
|
||
// What's New catalog (1.4.1–1.5.0)
|
||
"whats_new_version_header" = "Version %@";
|
||
"whats_new_150_redesign_title" = "A calmer, cleaner look";
|
||
"whats_new_150_redesign_body" = "Redesigned Home with a clear hero, your check-in front and center, and less noise everywhere.";
|
||
"whats_new_150_guided_title" = "Guided monthly check-in";
|
||
"whats_new_150_guided_body" = "One source per step, live deltas, a quick reflection — your 5-minute ritual, reimagined.";
|
||
"whats_new_150_rings_title" = "Goal rings & journal timeline";
|
||
"whats_new_150_rings_body" = "Fitness-style progress rings for goals and a mood timeline for your investing story.";
|
||
"whats_new_142_ocr_title" = "Update from a screenshot";
|
||
"whats_new_142_ocr_body" = "Share a screenshot of your bank app — the balance is recognized on-device, nothing leaves your phone.";
|
||
"whats_new_142_siri_title" = "Siri in your language";
|
||
"whats_new_142_siri_body" = "\"Log my Indexa balance\" — record values by voice or from Shortcuts, no app needed.";
|
||
"whats_new_142_charts_title" = "Charts, rebuilt";
|
||
"whats_new_142_charts_body" = "Native sidebar on iPad, smart KPIs per chart, and a share button with beautiful branded images.";
|
||
"whats_new_141_extension_title" = "Update without switching apps";
|
||
"whats_new_141_extension_body" = "Share a value from your bank app straight into Portfolio Journal with the new share extension.";
|
||
"whats_new_141_ipad_title" = "Better on iPad";
|
||
"whats_new_141_ipad_body" = "Redesigned charts for the big screen, with pinch-to-zoom and value labels.";
|
||
"whats_new_141_icloud_title" = "More in sync";
|
||
"whats_new_141_icloud_body" = "Monthly contributions and allocation targets now sync across your devices via iCloud.";
|
||
"whats_new_title_format" = "What's New in %@";
|
||
|
||
// TipKit (1.5.0 Fase 4)
|
||
"tip_quick_update_title" = "Update everything in seconds";
|
||
"tip_quick_update_body" = "Quick Update lists all your sources in one screen — paste values from your clipboard and go.";
|
||
"tip_ocr_title" = "Or just share a screenshot";
|
||
"tip_ocr_body" = "From your bank app: screenshot → Share → Portfolio Journal. The balance is read on-device.";
|
||
"tip_siri_title" = "Next time, try your voice";
|
||
"tip_siri_body" = "Say \"Log my account balance in Portfolio Journal\" to Siri — no need to open the app.";
|
||
"tip_chart_share_title" = "Share this chart";
|
||
"tip_chart_share_body" = "Renders a beautiful image with your data, ready for X or WhatsApp.";
|
||
"allocation_total" = "Total";
|
||
|
||
// iCloud error hints (1.5.0)
|
||
"icloud_hint_schema" = "Some records were rejected by iCloud. This usually means the app's iCloud schema hasn't finished setting up — it often resolves within a few hours of first use, or after the next app update.";
|
||
"icloud_hint_quota" = "Your iCloud storage is full. Free up space in iCloud settings and try again.";
|
||
"icloud_hint_network" = "Couldn't reach iCloud. Check your connection and try again.";
|
||
"icloud_hint_partial_generic" = "Some records couldn't sync this time. The app will retry automatically.";
|
||
"icloud_status_error" = "iCloud sync problem";
|
||
"icloud_status_syncing" = "Syncing with iCloud";
|
||
"icloud_show_details" = "Show technical details";
|
||
"yoy_vs_prev" = "vs %@";
|
||
"yoy_best_year" = "Best year";
|
||
"yoy_worst_year" = "Worst year";
|
||
|
||
// Quick Update paste/scan (1.5.0)
|
||
"quick_update_paste_value" = "Paste %@";
|
||
"quick_update_scan" = "Scan";
|
||
"quick_update_done_kbd" = "Done";
|
||
"quick_update_scanning" = "Reading image…";
|
||
"quick_update_pick_amount" = "Which amount?";
|
||
"quick_update_no_amount_found" = "No amount recognized in that image.";
|
||
"icloud_copy_diagnostics" = "Copy iCloud diagnostics";
|
||
"icloud_diagnostics_copied" = "Diagnostics copied to clipboard";
|
||
|
||
"Smooth Gaps in Charts" = "Smooth Gaps in Charts";
|
||
|
||
// MARK: - Data Gaps (1.5.0)
|
||
"gaps_banner_title" = "%d months are missing data";
|
||
"gaps_missing_count" = "%d missing";
|
||
"gaps_range_between" = "Between %@ and %@";
|
||
"Fill in missing data" = "Fill in missing data";
|
||
"Missing Data" = "Missing Data";
|
||
"Fill Gap" = "Fill Gap";
|
||
"The chart estimates these months. Add real snapshots to keep your history accurate." = "The chart estimates these months. Add real snapshots to keep your history accurate.";
|
||
"Dismiss" = "Dismiss";
|
||
|
||
// MARK: - Shareable Monthly Summary (1.5.0)
|
||
"share_summary_streak_badge" = "%d mo";
|
||
"Monthly Summary" = "Monthly Summary";
|
||
"Portfolio Value" = "Portfolio Value";
|
||
"Tracked with" = "Tracked with";
|
||
"Share monthly summary" = "Share monthly summary";
|
||
"since last check-in" = "since last check-in";
|
||
|
||
// MARK: - Import Preview (1.5.0)
|
||
"import_preview_nothing" = "Nothing new to import. Your data is already up to date.";
|
||
"import_preview_sources" = "Create %d sources";
|
||
"import_preview_snapshots_new" = "Create %d snapshots";
|
||
"import_preview_snapshots_update" = "Update %d snapshots";
|
||
"import_preview_categories" = "Create %d categories";
|
||
"import_preview_goals" = "Create %d goals";
|
||
"import_preview_journal_new" = "Create %d journal entries";
|
||
"import_preview_journal_update" = "Update %d journal entries";
|
||
"Review Import" = "Review Import";
|
||
"Reviewing import…" = "Reviewing import…";
|
||
"Import" = "Import";
|
||
|
||
/* 1.6.0 gap auto-fill */
|
||
"gaps_estimated_note" = "Estimated";
|
||
"gaps_autofill_cta" = "Auto-fill %d months";
|
||
"Add manually" = "Add manually";
|
||
"Auto-fill estimates the missing months between two snapshots (marked as estimated). Or add the real values yourself." = "Auto-fill estimates the missing months between two snapshots (marked as estimated). Or add the real values yourself.";
|
||
|
||
/* 1.6.0 auto-backup */
|
||
"Auto Backup" = "Auto Backup";
|
||
"Off" = "Off";
|
||
"Daily" = "Daily";
|
||
"Weekly" = "Weekly";
|
||
"Monthly" = "Monthly";
|
||
"Last auto backup" = "Last auto backup";
|
||
|
||
/* 1.6.0 hide balances */
|
||
"Hide balances" = "Hide balances";
|
||
"Show balances" = "Show balances";
|
||
"Balance hidden" = "Balance hidden";
|
||
"Reveal your balances" = "Reveal your balances";
|
||
"Privacy" = "Privacy";
|
||
"Hide Balances" = "Hide Balances";
|
||
"Require Face ID to Reveal" = "Require Face ID to Reveal";
|
||
"Hide all monetary amounts behind a blur. Great for using the app in public or taking screenshots. Optionally require Face ID to reveal them." = "Hide all monetary amounts behind a blur. Great for using the app in public or taking screenshots. Optionally require Face ID to reveal them.";
|
||
|
||
/* 1.6.0 Siri intents */
|
||
"intent_networth_empty" = "You don't have any portfolio value recorded yet.";
|
||
"intent_networth_dialog" = "Your net worth is %@.";
|
||
"intent_streak" = "You're on a %d-month streak.";
|
||
"intent_streak_with_date" = "You're on a %d-month streak. Your last check-in was %@.";
|
||
"intent_streak_none" = "You don't have an active streak yet. Log a value to start one.";
|
||
|
||
// Charts workable (1.6.0)
|
||
"chart_range_button" = "Custom range";
|
||
"chart_range_from" = "From";
|
||
"chart_range_to" = "To";
|
||
"chart_filtered_prefix" = "Filtered: %@";
|
||
"chart_overlay_contributions" = "vs Contributions";
|
||
"chart_insight_best_month" = "Best month in range: %1$@ (%2$@)";
|
||
|
||
// Share cards 2.0 (1.6.0)
|
||
"share_options_title" = "Share your progress";
|
||
"share_percent_only" = "Only percentages";
|
||
"share_format_post" = "Post";
|
||
"share_format_story" = "Story";
|
||
"share_card_cta" = "Share";
|
||
|
||
// Share cards 2.1 — brand header + download CTA (1.6.0)
|
||
"share_hero_eyebrow" = "Total return";
|
||
"share_metric_yoy" = "This year";
|
||
"share_metric_since_inception" = "Since inception";
|
||
"share_cta_headline" = "Track yours — free";
|
||
"share_cta_sub" = "Scan to get Portfolio Journal";
|
||
|
||
// Share cards 2.2 — as-of date + theme (1.6.0)
|
||
"share_as_of" = "As of %@";
|
||
"share_theme_dark" = "Dark";
|
||
"share_theme_light" = "Light";
|
||
|
||
// Activation: first source → first snapshot (1.6.1)
|
||
"add_source_value_header" = "Today's Value";
|
||
"add_source_value_footer" = "Saved as your first check-in — your progress starts today.";
|
||
"quick_update_add_first_source" = "Add Your First Source";
|