773da6800b
iCloud sync: - Fix: deploy CloudKit schema to production so exports work - Fix: PredictionCache marked syncable=NO (binary attr caused partial failures) - Fix: forceExportToiCloud uses createdAt+1ms for guaranteed persistent history - Fix: auto-deduplication on CloudKit import (processRemoteChanges) - Add: NSPersistentHistoryTrackingKey always enabled regardless of CloudKit state - Add: cloudKitForceReload notification so repositories re-fetch on remote changes Sources UI: - Add: horizontal category filter chips in SourceListView - Add: search toggle button with animated TextField Other: - Add: ITSAppUsesNonExemptEncryption=NO in Info.plist (skip manual compliance) - Add: fastlane submit lane with run_precheck_before_submit=false - Update: release notes all locales for 1.3.1 - Update: fastlane API key via pass Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
245 lines
11 KiB
Plaintext
245 lines
11 KiB
Plaintext
/*
|
|
Localizable.strings
|
|
PortfolioJournal
|
|
|
|
Spanish (Spain) localization
|
|
*/
|
|
|
|
// MARK: - Journal
|
|
"Home" = "Inicio";
|
|
"Sources" = "Fuentes";
|
|
"Charts" = "Gráficos";
|
|
"Settings" = "Ajustes";
|
|
"Journal" = "Diario";
|
|
"Search monthly notes" = "Buscar notas mensuales";
|
|
"Monthly Check-ins" = "Chequeos mensuales";
|
|
"No monthly notes yet." = "Aún no hay notas mensuales.";
|
|
"No matching notes." = "No hay notas que coincidan.";
|
|
"Jump to month" = "Ir al mes";
|
|
"Today" = "Hoy";
|
|
"Mood not set" = "Estado de ánimo no establecido";
|
|
"No rating" = "Sin valoración";
|
|
"No note yet." = "Sin nota todavía.";
|
|
"Monthly Note" = "Nota mensual";
|
|
"Open Full Note" = "Ver nota completa";
|
|
"Duplicate Previous" = "Duplicar anterior";
|
|
"Save" = "Guardar";
|
|
"loading" = "Cargando...";
|
|
"loading_data" = "Cargando tus datos...";
|
|
|
|
// MARK: - Monthly Check-in
|
|
"Monthly Check-in" = "Chequeo mensual";
|
|
"This Month" = "Este mes";
|
|
"No check-in yet this month" = "Aún no hay chequeo este mes";
|
|
"Start your first check-in anytime." = "Empieza tu primer chequeo cuando quieras.";
|
|
"Mark Check-in Complete" = "Marcar chequeo completado";
|
|
"Editing stays open. New check-ins unlock after 70% of the month." = "La edición permanece abierta. Los nuevos chequeos se desbloquean tras el 70 % del mes.";
|
|
"Momentum & Streaks" = "Impulso y rachas";
|
|
"Log a check-in to start a streak" = "Registra un chequeo para iniciar una racha";
|
|
"Streak" = "Racha";
|
|
"On-time in a row" = "A tiempo seguidos";
|
|
"Best" = "Mejor";
|
|
"Personal best" = "Mejor personal";
|
|
"Avg early" = "Media de antelación";
|
|
"vs deadline" = "vs. fecha límite";
|
|
"On-time score" = "Puntuación a tiempo";
|
|
"Achievements" = "Logros";
|
|
"View all achievements" = "Ver todos los logros";
|
|
"Monthly Pulse" = "Pulso mensual";
|
|
"Optional" = "Opcional";
|
|
"Rate this month" = "Valora este mes";
|
|
"Skip" = "Omitir";
|
|
"How did it feel?" = "¿Cómo te sentiste?";
|
|
"Monthly Summary" = "Resumen mensual";
|
|
"Starting" = "Inicio";
|
|
"Ending" = "Final";
|
|
"Contributions" = "Aportaciones";
|
|
"Net Performance" = "Rendimiento neto";
|
|
"Update Sources" = "Actualizar fuentes";
|
|
"Add sources to start your monthly check-in." = "Añade fuentes para empezar tu chequeo mensual.";
|
|
"Updated this cycle" = "Actualizado en este ciclo";
|
|
"Needs update" = "Necesita actualización";
|
|
"Snapshot Notes" = "Notas de snapshots";
|
|
"No snapshot notes for this month." = "No hay notas de snapshots este mes.";
|
|
"Source" = "Fuente";
|
|
"last_check_in" = "Último chequeo: %@";
|
|
"next_check_in" = "Próximo chequeo: %@";
|
|
"on_time_rate" = "%@ a tiempo";
|
|
"on_time_count" = "%d/%d a tiempo";
|
|
"tightest_finish" = "Final más ajustado: %@ antes de la fecha límite.";
|
|
"date_today" = "Hoy";
|
|
"date_yesterday" = "Ayer";
|
|
"date_never" = "Nunca";
|
|
"calendar_event_title" = "%@: Chequeo mensual";
|
|
"calendar_event_notes" = "Abre %@ y completa tu chequeo mensual.";
|
|
|
|
// MARK: - Achievements View
|
|
"achievements_title" = "Logros";
|
|
"achievements_view_all" = "Ver todos los logros";
|
|
"achievements_nav_title" = "Logros";
|
|
"achievements_progress_title" = "Progreso";
|
|
"achievements_unlocked_title" = "Desbloqueados";
|
|
"achievements_unlocked_empty" = "Completa chequeos para desbloquear logros.";
|
|
"achievements_locked_title" = "Bloqueados";
|
|
"achievements_locked_empty" = "Todos los logros desbloqueados. ¡Buen trabajo!";
|
|
|
|
// MARK: - Monthly Check-in Moods
|
|
"mood_energized_title" = "En llamas";
|
|
"mood_confident_title" = "Confiado";
|
|
"mood_balanced_title" = "Estable";
|
|
"mood_cautious_title" = "Cauteloso";
|
|
"mood_stressed_title" = "Estresado";
|
|
"mood_energized_detail" = "Me siento imparable";
|
|
"mood_confident_detail" = "En camino y sereno";
|
|
"mood_balanced_detail" = "Calmado y paciente";
|
|
"mood_cautious_detail" = "Observando los movimientos";
|
|
"mood_stressed_detail" = "Necesito un respiro";
|
|
|
|
// MARK: - Categories
|
|
"category_stocks" = "Acciones";
|
|
"category_bonds" = "Bonos";
|
|
"category_real_estate" = "Inmobiliario";
|
|
"category_crypto" = "Cripto";
|
|
"category_cash" = "Efectivo";
|
|
"category_etfs" = "ETFs";
|
|
"category_retirement" = "Jubilación";
|
|
"category_other" = "Otros";
|
|
"uncategorized" = "Sin categoría";
|
|
|
|
// MARK: - Monthly Check-in Achievements
|
|
"achievement_streak_3_title" = "Racha de 3 meses";
|
|
"achievement_streak_3_detail" = "Has mantenido tus chequeos a tiempo durante tres meses seguidos.";
|
|
"achievement_streak_6_title" = "Racha de medio año";
|
|
"achievement_streak_6_detail" = "Seis chequeos a tiempo consecutivos.";
|
|
"achievement_streak_12_title" = "Un año de impulso";
|
|
"achievement_streak_12_detail" = "Un año completo sin perder la fecha límite.";
|
|
"achievement_perfect_on_time_title" = "Nunca tarde";
|
|
"achievement_perfect_on_time_detail" = "Todos los chequeos llegaron antes de la fecha límite.";
|
|
"achievement_clutch_finish_title" = "Final ajustado";
|
|
"achievement_clutch_finish_detail" = "Entregado con horas de margen y a tiempo.";
|
|
"achievement_early_bird_title" = "Madrugador";
|
|
"achievement_early_bird_detail" = "De media terminas con bastante margen.";
|
|
|
|
// MARK: - Accessibility
|
|
"rating_accessibility" = "Valoración %d de 5";
|
|
"achievements_unlocked_count" = "%d de %d desbloqueados";
|
|
|
|
// MARK: - Satisfaction & Review Dialogs
|
|
"checkin_enjoying_dialog_title" = "¿Cuánto disfrutas Portfolio Journal?";
|
|
"checkin_enjoying_dialog_message" = "¡Felicidades por tu nuevo logro! Tu opinión nos ayuda a mejorar.";
|
|
"not_now" = "Ahora no";
|
|
"rating_1_star" = "1 estrella";
|
|
"rating_n_stars" = "%d estrellas";
|
|
"app_store_review_title" = "¿Te gustaría dejar una reseña en el App Store?";
|
|
"app_store_review_message" = "Gracias por las 5 estrellas. Ayuda mucho a que otros inversores descubran la app.";
|
|
"write_review" = "Escribir reseña";
|
|
|
|
// MARK: - Paywall (1.2.0)
|
|
"Your full portfolio,\nfully clear" = "Tu cartera completa,\ntotalmente clara";
|
|
"One payment. Every feature. Forever." = "Un pago. Todas las funciones. Para siempre.";
|
|
"Get Full Access" = "Obtener acceso completo";
|
|
"Restore Purchases" = "Restaurar compras";
|
|
"Payment charged to your Apple ID account." = "El pago se cargará a tu cuenta de Apple ID.";
|
|
"Terms" = "Términos";
|
|
"Privacy" = "Privacidad";
|
|
"· one-time · Family Sharing" = "· pago único · Family Sharing";
|
|
"Full access, one payment" = "Acceso completo, un solo pago";
|
|
"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.";
|
|
|
|
// iCloud check antes del onboarding (1.2.1)
|
|
"icloud_check_title" = "¿Ya usas Portfolio Journal?";
|
|
"icloud_check_description" = "Si tienes datos en otro dispositivo, activa iCloud para restaurarlos aquí.";
|
|
"icloud_enabled_title" = "iCloud activado";
|
|
"icloud_enabled_description" = "Cierra la app y ábrela de nuevo. Tus datos se cargarán automáticamente desde iCloud.";
|
|
"checking_icloud" = "Comprobando iCloud...";
|
|
// Literales de botones (SwiftUI auto-lookup)
|
|
"Restore from iCloud" = "Restaurar desde iCloud";
|
|
"Start Fresh" = "Empezar desde cero";
|
|
"Got it" = "Entendido";
|
|
|
|
// MARK: - Batch Update (1.2.0)
|
|
"Batch Update" = "Actualización en bloque";
|
|
"Current value" = "Valor actual";
|
|
"Contribution this period (optional)" = "Aportación en este periodo (opcional)";
|
|
"save_1_snapshot" = "Guardar 1 snapshot";
|
|
"save_n_snapshots" = "Guardar %d snapshots";
|
|
|
|
// MARK: - Monthly Check-in Card
|
|
"checkin_update_month" = "Actualizar %@";
|
|
"checkin_start_new" = "Iniciar";
|
|
|
|
// MARK: - Contribution (1.2.0)
|
|
"Include Contribution" = "Incluir aportación";
|
|
"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 %@";
|
|
|
|
// MARK: - Paywall literals (1.2.1)
|
|
"Your full portfolio,\nfully clear" = "Tu portfolio completo,\nen todo su potencial";
|
|
"One payment. Every feature. Forever." = "Un solo pago. Todas las funciones. Para siempre.";
|
|
"Get Full Access" = "Obtener acceso completo";
|
|
"Restore Purchases" = "Restaurar compras";
|
|
"Payment charged to your Apple ID account." = "El cobro se realizará a tu cuenta de Apple ID.";
|
|
|
|
// MARK: - Re-engagement & Monthly Notifications (1.2.1)
|
|
"reengagement_title" = "Tu portfolio te espera";
|
|
"reengagement_body" = "Unos minutos son suficientes para mantener el control de tus inversiones.";
|
|
"monthly_checkin_notification_title" = "Ya puedes actualizar tu portfolio";
|
|
"monthly_checkin_notification_body" = "Registra los valores de este mes y sigue la evolución de tu cartera.";
|
|
|
|
// MARK: - Onboarding QuickStart (1.3.0)
|
|
"onboarding_quickstart_title" = "Ya casi está";
|
|
"onboarding_quickstart_subtitle" = "Añade tu primera fuente de inversión para empezar a seguir tu portfolio.";
|
|
"onboarding_add_first_source" = "Añadir mi primera inversión";
|
|
"onboarding_import_data" = "Importar datos existentes";
|
|
|
|
// MARK: - iCloud Sync Status (1.3.1)
|
|
"Force Upload to iCloud" = "Forzar subida a iCloud";
|
|
"Uploading..." = "Subiendo...";
|
|
"No export yet" = "Aún no exportado";
|
|
"Syncing with iCloud..." = "Sincronizando con iCloud...";
|
|
"Not synced yet" = "Aún no sincronizado";
|
|
"Refresh" = "Actualizar";
|
|
|
|
// MARK: - iCloud Diagnostics (1.3.1)
|
|
"Verify iCloud Setup" = "Verificar configuración iCloud";
|
|
"Checking…" = "Comprobando…";
|
|
|
|
// MARK: - Sources Filter & Search (1.3.1)
|
|
"sources_filter_all" = "Todas";
|
|
"Search sources" = "Buscar fuentes";
|
|
"Clear Filters" = "Limpiar filtros";
|
|
|
|
// MARK: - AddSourceView (1.3.0)
|
|
"add_source_name_placeholder" = "p.ej. ETF MSCI World, Cuenta ING, Piso...";
|
|
"add_source_name_footer" = "Una fuente es cualquier inversión que quieras seguir: acciones, ETFs, cuentas de ahorro, inmuebles, cripto y más.";
|