Release 1.2.1: iCloud sync improvements + ASO multilingual metadata
iCloud sync: - Force viewContext.refreshAllObjects() on remote change notifications so data from other devices is picked up immediately without app restart - Call refreshFromCloudKit() on foreground to merge any changes made while the device was inactive - Wait up to 10s for initial CloudKit sync on launch before showing onboarding (shows "Checking iCloud..." during the wait) - New OnboardingICloudCheckView: shown on fresh installs with iCloud available, lets user restore from iCloud before starting onboarding from scratch Localization: - Added de, fr, it, ja, pt-BR lproj folders - New iCloud onboarding strings in en + es-ES (+ button literals) ASO metadata (fastlane): - Updated en-US: new subtitle, keywords, description (fixed "no cloud sync" claim), promotional text, release notes - Added full metadata for es-ES, de-DE, fr-FR, it, ja, pt-BR (63 files total) - All keyword fields validated ≤100 Unicode chars Infrastructure: - Gemfile + Gemfile.lock for fastlane - Scripts/archive_and_upload_appstore.sh for CI/CD Version: 1.2.1 (build 7) Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -124,6 +124,16 @@
|
||||
"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.";
|
||||
@@ -157,10 +167,27 @@
|
||||
"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";
|
||||
|
||||
Reference in New Issue
Block a user