{
  "about.contact_title": "¿Sugerencias o has encontrado un fallo?",
  "about.contact_body": "Escríbenos a",
  "about.contact_email_label": "feedback@midipiano.app",
  "about.feature_adaptive_body": "Pide a la app que repita un trozo difícil, baja la velocidad o ensaya con una sola mano hasta que te salga perfecto.",
  "about.feature_adaptive_title": "Practica a tu medida",
  "about.feature_connect_body": "Funciona con casi cualquier piano moderno. Conéctalo por cable o Bluetooth y la app escuchará lo que tocas.",
  "about.feature_connect_title": "Conecta tu teclado digital",
  "about.feature_feedback_body": "Te mostramos al instante si pulsaste la nota correcta o si vas demasiado rápido, para que puedas mejorar en cada intento.",
  "about.feature_feedback_title": "Aprende de tus errores",
  "about.feature_scores_body": "Carga cualquier partitura en formato digital y verás cómo cobra vida en tu pantalla.",
  "about.feature_scores_title": "Toca tu música favorita",
  "about.hero_cta_midi": "Conectar teclado",
  "about.hero_cta_practice": "Empezar a tocar",
  "about.lead": "Carga tus partituras favoritas, conecta tu piano digital y recibe ayuda en tiempo real mientras tocas. Sin presiones, todo a tu velocidad.",
  "about.partners_copied": "¡Copiado!",
  "about.partners_discount": "5% de descuento con el código",
  "about.partners_sponsored": "Publicidad",
  "about.partners_title": "Pianos con luces compatibles",
  "about.title": "Aprende piano a tu propio ritmo.",
  "action.close": "Cerrar",
  "app.name": "midipiano.app",
  "app.tagline": "Conecta tu teclado MIDI, importa partituras MusicXML o MEI y recibe correcciones instantáneas de aciertos, errores y timing directamente en el navegador.",
  "app.top_title.about": "Sobre midipiano.app",
  "app.top_title.challenge": "Reto del día",
  "app.top_title.load": "Importar Partitura",
  "app.top_title.midi": "Dispositivos MIDI",
  "app.top_title.practice": "Practicar",
  "aria.main_nav": "Navegación principal",
  "cookies.accept_all": "Aceptar cookies",
  "cookies.banner_text": "Al usar midipiano.app aceptas nuestros Términos y Condiciones. Usamos las cookies y el almacenamiento del navegador necesarios para que la app funcione. Puedes aceptar o rechazar las cookies opcionales.",
  "cookies.manage_button": "Aviso de cookies ({mode})",
  "cookies.manage_button_short": "Aviso legal y cookies",
  "cookies.mode_all": "almacenamiento esencial y cookies opcionales",
  "cookies.mode_essential": "solo esenciales",
  "cookies.policy_link": "Política de cookies",
  "cookies.privacy_link": "Política de privacidad",
  "cookies.reject_optional": "Rechazar opcionales",
  "legal.terms_link": "Términos y Condiciones",
  "legal.third_party_link": "Licencias",
  "feedback.mail_fallback_copied": "No se pudo abrir la app de correo automáticamente. Email copiado: {email}",
  "feedback.mail_fallback_manual": "No se pudo abrir la app de correo automáticamente. Escribe a: {email}",
  "feedback.summary_show_details": "Mostrar feedback",
  "feedback.summary_hide_details": "Ocultar feedback",
  "feedback.summary_score_label": "Puntuación de práctica",
  "feedback.summary_score_aria": "Puntuación de práctica {score} de 100",
  "feedback.summary_star_aria": "{rating} de 5 estrellas",
  "feedback.summary_review_measures": "Revisar {measures}",
  "feedback.summary_title": "Resumen de práctica",
  "feedback.summary_accuracy": "Precisión",
  "feedback.summary_timing_not_measured": "Timing no medido",
  "feedback.summary_timing_avg_value": "Timing medio {ms} ms",
  "feedback.summary_weak_measures": "{count} compases débiles",
  "feedback.summary_errors": "Errores",
  "feedback.summary_missed": "Omitidas",
  "feedback.summary_early_late": "Pronto / tarde",
  "feedback.summary_sync": "Problemas de sincronía",
  "feedback.summary_speed": "Velocidad",
  "feedback.summary_balanced": "Sesión equilibrada",
  "feedback.summary_no_hand_data": "Aún no hay datos por mano.",
  "feedback.summary_no_weak_measures": "Sin compases débiles",
  "feedback.summary_no_notes_played": "Aún no se han tocado notas",
  "feedback.summary_no_notes_played_detail": "Toca unas notas primero y midipiano.app podrá señalarte compases concretos.",
  "feedback.summary_by_hand": "Por mano",
  "feedback.summary_measures_to_review": "Compases a repasar",
  "feedback.summary_hand_values": "{accuracy}% · omitidas {missed} · media {timing}",
  "feedback.summary_missed_count": "{count} omitidas",
  "feedback.summary_wrong_count": "{count} incorrectas",
  "feedback.summary_offtime_count": "{count} fuera de tiempo",
  "feedback.summary_sync_count": "{count} sinc.",
  "feedback.summary_measure_label": "c.{measure}",
  "feedback.summary_left_hand": "Mano izquierda",
  "feedback.summary_right_hand": "Mano derecha",
  "feedback.summary_both_hands": "Ambas manos",
  "feedback.summary_mostly_early": "Tiendes a adelantarte",
  "feedback.summary_mostly_late": "Tiendes a llegar tarde",
  "feedback.summary_left_more_missed": "La izquierda omitió más notas",
  "feedback.summary_right_more_missed": "La derecha omitió más notas",
  "feedback.summary_hands_out_of_sync": "Las manos no llegan juntas",
  "feedback.summary_partial": "Sesión parcial",
  "feedback.summary_wait_assisted": "Modo espera asistido",
  "feedback.summary_loop": "Práctica en bucle",
  "focus.button.aria_enter": "Entrar en modo Focus",
  "focus.button.aria_exit": "Salir del modo Focus",
  "focus.button.bottom": "Focus",
  "focus.button.exit_bottom": "Modo Focus",
  "focus.button.exit_top": "Salir",
  "focus.button.top": "Modo",
  "focus.fab_label": "Modo focus",
  "focus.hand_short_both": "Ambas manos",
  "focus.hand_short_left": "Solo izquierda",
  "focus.hand_short_right": "Solo derecha",
  "focus.loop_disabled_title": "Bucle A-B desactivado",
  "focus.loop_enabled_title": "Bucle A-B activado",
  "focus.loop_toggle_aria": "Alternar loop A-B",
  "focus.no_exercise": "Sin ejercicio",
  "import.error_file_too_large": "Archivo demasiado grande ({current}). Máximo: {max}.",
  "import.error_mxl_entry_count": "MXL con demasiadas entradas ({count}). Máximo: {max}.",
  "import.error_mxl_entry_too_large": "Entrada MXL demasiado grande ({entry}: {current}). Máximo: {max}.",
  "import.error_mxl_uncompressed_too_large": "MXL descomprimido demasiado grande ({current}). Máximo: {max}.",
  "import.status_processing_fun": "Procesando la partitura...",
  "import.status_error": "Error al importar: {error}",
  "import.recaptcha_generic_error": "No hemos podido verificar la importación. Espera unos segundos y vuelve a intentarlo.",
  "import.file_too_large": "El fichero es demasiado grande para importarlo. Prueba con una partitura más pequeña.",
  "import.file_unavailable": "No hemos podido leer el archivo. Selecciónalo de nuevo: los archivos en la nube (iCloud, Dropbox) pueden estar descargándose todavía.",
  "import.status_file_too_large": "Archivo demasiado grande ({current}). Máximo: {max}.",
  "import.status_format_not_allowed": "Formato no permitido. Usa solo: {formats}",
  "import.status_imported_success": "Importado con éxito: {file}",
  "import.status_select_valid": "Selecciona un archivo válido ({formats}).",
  "language.selector_aria": "Idioma",
  "language.short_label": "Idioma",
  "midi.enable": "Activar MIDI",
  "midi.enable_enabled": "MIDI activado",
  "midi.error_api_unavailable": "No hay API MIDI disponible.",
  "midi.generic_label": "MIDI",
  "midi.indicator_connected": "MIDI conectado: {input}",
  "midi.indicator_disconnected": "MIDI no conectado",
  "midi.input_generic": "entrada",
  "midi.inputs_aria": "Entradas MIDI",
  "midi.insecure_hint": " | probable causa: HTTP no seguro, prueba HTTPS",
  "midi.no_inputs": "No hay entradas MIDI",
  "midi.refresh_devices": "Buscar dispositivos",
  "midi.reconnect_prompt_title": "El teclado se ha desconectado",
  "midi.reconnect_prompt_body": "Puede que tu teclado MIDI haya perdido la conexión mientras la pantalla estaba apagada. Reactívalo para seguir tocando.",
  "midi.reconnect_prompt_action": "Reactivar",
  "midi.experimental_tag": "Beta",
  "midi.output_lights_subsection": "Luces de teclas (opcional)",
  "midi.output_lights_enabled": "Luces",
  "midi.output_lights_enabled_aria": "Activar las luces del teclado",
  "midi.output_lights_profile": "Fabricante/modelo",
  "midi.output_lights_profile_aria": "Fabricante o modelo de teclado con luces",
  "midi.output_lights_profile_generic": "Genérico (detección automática)",
  "midi.output_lights_profile_mustar_meks": "Mustar / MEKS",
  "midi.output_lights_profile_casio_navigate": "Casio (MIDI In Navigate)",
  "midi.output_lights_profile_partykeys": "PopuMusic · PartyKeys",
  "midi.output_lights_profile_popupiano": "PopuMusic · PopuPiano",
  "midi.output_lights_profile_hint_generic": "Modo genérico: envía Note On/Off estándar. Si tu teclado no responde, usa el escaneo automático para detectar el canal.",
  "midi.output_lights_profile_hint_mustar_meks": "Modo Mustar / MEKS: envía Note On/Off estándar y también mensajes de luces Mustar. Si no reacciona, usa el escaneo automático para fijar el canal.",
  "midi.output_lights_profile_hint_casio": "Casio (LK-S): activa MIDI In Navigate en el teclado y luego usa el escaneo automático para fijar el canal que enciende las luces.",
  "midi.output_channel": "Canal de salida",
  "midi.output_channel_aria": "Canal de salida MIDI",
  "midi.select_output_placeholder": "Selecciona receptor...",
  "midi.output_option_web_audio": "Audio del navegador (Web Audio)",
  "midi.output_channel_scan_help_aria": "Ayuda de configuración automática de canal",
  "midi.output_channel_scan_committed": "Canal fijado en {channel}.",
  "midi.output_channel_scan_finished": "Escaneo 1-16 finalizado. Si viste respuesta de luces, repítelo y pulsa \"Usar canal\".",
  "midi.output_channel_scan_running": "Escaneando canal {current}/{total}... Pulsa \"Usar canal\" si responde.",
  "midi.output_channel_scan_start": "Escanear 1-16",
  "midi.output_channel_scan_use_current": "Usar canal {channel}",
  "midi.output_channel_scan_modal_title": "Configuración automática de canal",
  "midi.output_channel_scan_modal_body": "Esta función prueba automáticamente los canales 1-16 y envía una nota de prueba en cada canal.",
  "midi.output_channel_scan_modal_body_mustar_meks": "Para Mustar / MEKS, este escaneo prueba los canales 1-16 con Note On/Off estándar y luego aplica mensajes de luces Mustar en el canal seleccionado.",
  "midi.output_channel_scan_modal_body_casio": "Para Casio con teclas iluminadas, este escaneo envía notas MIDI estándar (Note On/Off).",
  "midi.output_channel_scan_modal_steps": "Cuando tu teclado reaccione, pulsa de nuevo en \"Escanear\" para fijar el canal detectado.",
  "midi.output_channel_scan_modal_steps_mustar_meks": "Pulsa Escanear y observa las luces del teclado. Cuando reaccione, pulsa Escanear otra vez para fijar el canal.",
  "midi.output_channel_scan_modal_steps_casio": "En el teclado, activa antes MIDI In Navigate. Despues ejecuta Escanear y vuelve a pulsar cuando las luces reaccionen.",
  "midi.output_channel_scan_modal_experimental_note": "El comportamiento puede variar según el modelo de teclado y la versión de firmware.",
  "midi.output_channel_scan_modal_experimental_note_mustar_meks": "Algunos firmwares Mustar / MEKS solo reaccionan en puertos MIDI de salida concretos.",
  "midi.output_channel_scan_modal_experimental_note_casio": "MIDI In Navigate se configura en el teclado y la app no puede activarlo ni desactivarlo de forma remota.",
  "midi.output_volume": "Volumen de salida",
  "midi.outputs_aria": "Receptor de salida",
  "midi.reco_ios_link_label": "Descubre MIDIWeb Browser (midiweb.cc)",
  "midi.reco_ios_appstore_label": "Descargar en el App Store",
  "midi.reco_ios_body": "Los navegadores del iPhone y el iPad (Safari, Chrome, Edge...) no pueden conectarse a un teclado MIDI. Nuestra recomendación: MIDIWeb Browser, un navegador gratuito con soporte MIDI. Ábrelo y entra en https://midipiano.app.",
  "midi.reco_mac_body": "Safari en el Mac no puede conectarse a un teclado MIDI. Usa un navegador con soporte MIDI como Chrome, Edge o Firefox, o nuestra alternativa recomendada: MIDIWeb Browser, también disponible para macOS.",
  "midi.reco_firefox_desktop_body": "Firefox te pedirá instalar un pequeño add-on de permisos de Mozilla la primera vez que habilites MIDI con un teclado conectado. Es normal, seguro y solo ocurre una vez. Si no hay ningún dispositivo MIDI conectado, Firefox omite ese aviso y solo se activa el teclado virtual. Chrome y Edge funcionan sin pasos extra.",
  "midi.reco_firefox_android_body": "El MIDI no está disponible en Firefox para Android. Usa Chrome u otro navegador compatible para conectar tu teclado.",
  "midi.status_activate_first": "Primero activa MIDI.",
  "midi.status_api_missing": "Este navegador no expone la API WebMIDI para esta página. Prueba MIDIWeb Browser con HTTPS.",
  "midi.status_enable_error": "No se pudo activar MIDI ({name}: {message}) [contexto {secure}, {protocol}//{host}]{insecureHint}",
  "midi.status_input_connected": "Entrada conectada: {input}{outputInfo}",
  "midi.status_input_label": "Entrada",
  "midi.status_invalid_input": "Entrada MIDI no válida.",
  "midi.status_invalid_output": "Salida MIDI no válida.",
  "midi.status_web_audio_output_connected": "Receptor activado: audio desde el navegador.",
  "midi.status_native_activated": "MIDI activado correctamente. Selecciona entrada y salida.",
  "midi.status_native_error": "{action} ({errorName}: {errorMessage}).",
  "midi.status_output_connected": "Salida conectada: {output} (vol {volume}){inputInfo}",
  "midi.status_output_selector_missing": "Selector de salida MIDI no disponible.",
  "midi.status_read_ports_error": "MIDI activado ({mode}), pero falló al leer los puertos MIDI ({errorName}: {errorMessage}).",
  "midi.status_state_change_error": "MIDI activado ({mode}), pero falló al registrar los cambios de estado ({error}).",
  "midi.status_virtual_output": "Salida virtual",
  "virtual_keyboard.output_modal_title": "Configura entrada/salida de sonido",
  "virtual_keyboard.output_modal_body": "La práctica necesita una entrada activa. Activa MIDI, elige Navegador web para usar el teclado virtual o una entrada MIDI física, y después elige Audio del navegador o una salida MIDI para el sonido.",
  "virtual_keyboard.output_modal_configure": "Configurar MIDI",
  "virtual_keyboard.output_modal_continue": "Ahora no",
  "midi.step_enable": "Paso 1: Permisos del sistema",
  "midi.step_select_input": "Paso 2: entrada de sonido",
  "midi.step_select_output": "Paso 3: salida de sonido",
  "nav.home": "Inicio",
  "nav.settings": "Ajustes",
  "option.exercise_fallback": "Ejercicio",
  "option.exercise_prefix": "Ejercicio: {name}",
  "option.score_prefix": "Partitura: {name}",
  "option.temp_prefix": "Temporal: {name}",
  "panel.load.compat_line_1": "• Formatos de partitura compatibles: MusicXML (.musicxml, .xml, .mxl) y MEI (.mei). MusicXML/MXL suele conservar el aspecto visual de la partitura tal como fue creada.",
  "panel.load.compat_line_2": "• No se aceptan directamente: .mid, .midi, .pdf, .mscz, .sib, .gp/.gp3/.gp4/.gp5. Exporta o convierte a MusicXML, MXL o MEI y vuelve a importar.",
  "panel.load.compat_line_3": "• Puedes exportar a MusicXML/MXL desde aplicaciones como musescore.org, Finale o Sibelius.",
  "panel.load.compat_title": "¿Qué formatos se aceptan?",
  "panel.load.dropzone_subtitle": "También puedes arrastrar y soltar el archivo",
  "panel.load.dropzone_title": "Haz clic aquí para seleccionar una partitura",
  "panel.load.file_aria": "Archivo de partitura",
  "panel.load.formats_allowed": "Formatos permitidos: .mxl, .musicxml, .xml, .mei",
  "panel.load.go_imported": "Ir al ejercicio importado",
  "panel.load.hint": "Importa una partitura desde tu dispositivo.",
  "panel.load.local_source": "Importar nueva partitura",
  "panel.load.processing_detail": "Preparando el render MusicXML.",
  "panel.load.processing_file": "Renderizando",
  "panel.load.processing_title": "Procesando partitura...",
  "panel.load.ready": "Partitura cargada. Abriendo práctica.",
  "panel.load.select_valid_file": "Selecciona un archivo válido.",
  "panel.load.title": "Importar Partitura",
  "panel.midi.hint": "Para practicar, activa MIDI, elige una entrada y elige una salida de sonido. Usa Navegador web como entrada para tocar con el teclado virtual.",
  "panel.midi.title": "Conecta tu instrumento digital",
  "playback.completed": "Reproducción completada.",
  "playback.modal_need_output_body": "Para usar la reproducción, primero configura la conexión MIDI y conecta una salida.",
  "playback.modal_need_output_title": "Configura la salida MIDI",
  "playback.modal_open_midi_tab": "Abrir conexión MIDI",
  "playback.need_output": "Conecta una salida MIDI para reproducir.",
  "playback.no_active_exercise": "No hay ejercicio activo.",
  "playback.no_notes_for_hand": "No hay notas para el modo de mano seleccionado.",
  "playback.output_error": "Error en salida MIDI: {error}",
  "playback.playing": "Reproduciendo: {name}",
  "playback.preparing": "Preparando reproducción...",
  "playback.stopped": "Reproducción detenida.",
  "playback.stopped_output_disconnected": "Reproducción detenida: salida MIDI desconectada.",
  "playback.stopped_output_missing": "Reproducción detenida: salida MIDI no disponible.",
  "practice.auto_restart_count_in": "Reinicio automático con cuenta atrás",
  "practice.auto_restart_on_end": "Autoiniciar al terminar",
  "practice.completed_press_start": "Rango completado. Pulsa Practicar para volver a empezar.",
  "practice.count_in_active": "Cuenta atrás",
  "practice.count_in_wait": "Cuenta atrás activa: espera {beats} pulso(s)",
  "practice.diagnosis_both": "Tiempo y fuerza inestables. Practica más lento (tempo 50%).",
  "practice.diagnosis_timing_only": "Desfase temporal puro. Mueve las manos en bloque.",
  "practice.diagnosis_velocity_only": "Buen timing, pero el control de fuerza entre dedos es irregular.",
  "practice.difficulty_aria": "Dificultad",
  "practice.difficulty_beginner": "Principiante (150 ms)",
  "practice.difficulty_custom": "Personalizado",
  "practice.difficulty_master": "Maestría (40 ms)",
  "practice.difficulty_normal": "Normal (80 ms)",
  "practice.dynamics_fair": "Dinámica irregular (dV {dv})",
  "practice.dynamics_good": "Dinámica aceptable (dV {dv})",
  "practice.dynamics_perfect": "Dinámica equilibrada (dV {dv})",
  "practice.dynamics_voicing": "Voicing detectado +{boost}% (dV {dv})",
  "practice.dynamics_weak": "Dinámica descompensada (dV {dv})",
  "practice.dynamics_weak_feedback": "Notas correctas, pero fuerza descompensada (dV {dv})",
  "practice.exercise_aria": "Ejercicios",
  "practice.exercise_catalog_label": "Ejercicios",
  "practice.exercise_catalog_loading": "Cargando ejercicios...",
  "practice.exercise_not_found": "Ejercicio no encontrado",
  "practice.geometry_not_ready": "La partitura aún no está lista para practicar. Inténtalo de nuevo.",
  "practice.exercise_topbar_label": "Ejercicio",
  "practice.extra_note": "Nota extra",
  "practice.hand_mode_aria": "Modo de manos",
  "practice.hand_mode_both": "Ambas manos",
  "practice.hand_mode_left": "Solo izquierda",
  "practice.hand_mode_right": "Solo derecha",
  "practice.hands_delta": "Desfase manos: {ms} ms",
  "practice.hands_out_of_sync": "Descoordinado entre manos ({ms} ms)",
  "practice.incorrect": "Incorrecto",
  "practice.loop_ab": "Bucle A-B",
  "practice.loop_enable": "Repetir compases (A-B)",
  "practice.full_score": "Ver contexto",
  "practice.full_score_aria": "Ver partitura completa del loop",
  "practice.stopped_ready": "Toma detenida. Puedes repetir o limpiar.",
  "practice.no_active_exercise": "Sin ejercicio activo",
  "practice.no_exercises_loaded": "Sin ejercicios cargados",
  "practice.no_notes_for_hand": "No hay notas para la mano seleccionada",
  "practice.pedagogy.button": "Guía",
  "practice.pedagogy.button_aria": "Abrir guía del ejercicio",
  "practice.pedagogy.empty": "Este ejercicio no incluye una guía pedagógica adicional.",
  "practice.pedagogy.focus_label": "Enfoque:",
  "practice.pedagogy.goal_label": "Objetivo:",
  "practice.pedagogy.level.advanced": "Avanzado",
  "practice.pedagogy.level.beginner": "Principiante",
  "practice.pedagogy.level.generic": "Nivel",
  "practice.pedagogy.level.intermediate": "Intermedio",
  "practice.pedagogy.level_with_stage": "{level} · Etapa {stage}",
  "practice.pedagogy.tips_title": "Consejos",
  "practice.pedagogy.title": "Guía del ejercicio",
  "practice.pedagogy.unavailable": "Guía no disponible",
  "practice.note_correct": "Nota correcta ({source})",
  "practice.note_correct_off_timing": "Nota correcta fuera de tiempo ({source})",
  "practice.note_missed": "Nota perdida",
  "practice.need_midi_access": "Activa MIDI antes de empezar a practicar.",
  "practice.need_web_audio_output": "Selecciona Audio del navegador como salida de sonido antes de empezar a practicar.",
  "practice.play": "🔊 Escuchar",
  "practice.precision_compact": "🎯 Precisión: {precision}% (Aciertos: {success} | Errores: {errors})",
  "practice.press_start_count_in": "Pulsa Practicar para empezar.",
  "practice.preparing": "Preparando...",
  "practice.progress": "Progreso: {progress}",
  "practice.range_aria": "Rango de práctica por compases",
  "practice.range_end_aria": "Fin de rango",
  "practice.range_start_aria": "Inicio de rango",
  "practice.speed_aria": "Velocidad",
  "practice.tempo_advanced_aria": "Detalles de tempo",
  "practice.tempo_bpm_input": "BPM objetivo",
  "practice.tempo_changes_label": "Cambios de tempo en la partitura",
  "practice.tempo_default": "Predeterminado",
  "practice.tempo_now": "Ahora",
  "practice.tempo_playing_now": "Sonando ahora",
  "practice.tempo_reset_100": "Restablecer 100%",
  "practice.tempo_score": "Tempo de partitura",
  "practice.tempo_variable": "Tempo variable",
  "practice.stop": "■ Detener",
  "practice.timing_compact": "Timing {onTime}/{count} · ±{avg} ms · temprano {early} · tarde {late}",
  "practice.timing_guide_count_in": "Guía de timing: cuenta atrás {current}/{total}",
  "practice.timing_guide_focus_count_in": "Cuenta atrás {current}/{total}",
  "practice.timing_guide_focus_idle": "Guía de pulso",
  "practice.timing_guide_focus_ignored": "Timing ignorado",
  "practice.timing_guide_focus_running": "{delta} · pulso {beat}/{beatsPerMeasure}",
  "practice.timing_guide_focus_waiting": "Esperando primera nota",
  "practice.timing_guide_idle": "Guía de timing: inicia un ejercicio.",
  "practice.timing_guide_ignored": "Guía de timing desactivada (timing ignorado).",
  "practice.timing_guide_running_musical": "Guía de timing: {delta} · pulso {beat}/{beatsPerMeasure} · nota {current}/{total}",
  "practice.timing_guide_waiting": "Guía de timing: esperando la primera nota correcta.",
  "practice.timing_ignored_compact": "Timing ignorado",
  "practice.transport_play": "▶ Practicar",
  "practice.transport_pause": "Pausar",
  "practice.transport_paused": "Pausado",
  "practice.status_ready": "Listo",
  "practice.status_practicing": "Practicando...",
  "practice.status_listening": "Escuchando...",
  "practice.transport_resume": "Reanudar",
  "practice.transport_stop": "⏹ Detener",
  "practice.waiting_start_count_in": "Esperando Practicar",
  "score_surface.processing": "Procesando...",
  "score_surface.resizing": "Redimensionando partitura...",
  "seo.feature_1": "Feedback MIDI en tiempo real",
  "seo.feature_2": "Entrenamiento por manos separadas",
  "seo.feature_3": "Soporte multiidioma",
  "seo.feature_4": "Importación de MusicXML y MEI",
  "seo.jsonld_description": "Practica piano online en el navegador. Conecta tu teclado MIDI, importa partituras MusicXML o MEI y entrena cada mano con feedback visual en tiempo real.",
  "seo.meta_description": "Practica piano online en el navegador. Conecta tu teclado MIDI, importa partituras MusicXML o MEI y entrena cada mano con feedback visual en tiempo real.",
  "seo.title": "midipiano.app - Practica Piano Online con MIDI",
  "seo.h1": "Practica piano online con tu teclado MIDI",
  "seo.faq_title": "Preguntas frecuentes",
  "seo.faq_q1": "¿Puedo practicar piano online con un teclado MIDI?",
  "seo.faq_a1": "Sí. midipiano.app funciona en tu navegador: conecta un teclado MIDI por USB o Bluetooth y toca partituras interactivas con feedback en tiempo real para cada mano.",
  "seo.faq_q2": "¿Qué teclados MIDI son compatibles?",
  "seo.faq_a2": "Cualquier teclado o piano digital compatible con MIDI. Usa un navegador con Web MIDI como Chrome o Edge; en iPhone y iPad puedes tocar con la app MIDIWeb Browser. El reto diario se mantiene entre La2 y Sol5, así que cualquier teclado que llegue al Do2 lo cubre.",
  "seo.faq_q3": "¿Necesito instalar algo o crear una cuenta?",
  "seo.faq_a3": "No. midipiano.app funciona íntegramente en el navegador: nada que instalar y sin cuenta.",
  "seo.faq_q4": "¿Puedo importar mis propias partituras?",
  "seo.faq_a4": "Sí. Importa archivos MusicXML, MXL o MEI y se muestran como partituras interactivas que puedes practicar con cada mano por separado, en bucles y a tu propio tempo.",
  "seo.faq_q5": "¿Cómo funciona el feedback de práctica?",
  "seo.faq_a5": "La app escucha tu teclado MIDI mientras tocas y puntúa cada nota en tiempo real, por mano y por bucle, con ejercicios integrados de principiante a avanzado.",
  "seo.faq_q6": "¿Qué es el reto diario?",
  "seo.faq_a6": "Una pieza corta nueva cada día, la misma para todo el mundo, en tres niveles de dificultad. Tienes tres intentos por nivel: tócala a primera vista, consigue tus estrellas del día y comparte tu resultado.",
  "seo.challenge_title": "Reto diario de piano: una pieza nueva cada día - midipiano.app",
  "seo.challenge_meta_description": "Una pieza corta nueva cada día, la misma para todo el mundo, en tres niveles. Conecta tu teclado MIDI, tócala a primera vista y comparte tus estrellas.",
  "seo.challenge_h1": "El reto diario de piano",
  "seo.challenge_how_title": "Cómo funciona",
  "seo.challenge_how_body": "Cada día a medianoche UTC aparece una pieza nueva, generada para esa fecha e idéntica para todos los jugadores. Elige tu nivel, escúchala si quieres y tócala a primera vista en tu teclado MIDI mientras la app puntúa cada nota.",
  "seo.challenge_need_title": "Qué necesitas",
  "seo.challenge_need_body": "Un teclado MIDI conectado por USB o Bluetooth y un navegador con Web MIDI, como Chrome o Edge. Nada que instalar y sin cuenta. Tienes tres intentos por nivel y cuenta el mejor.",
  "settings.aria_button": "Ajustes",
  "settings.aria_panel": "Ajustes",
  "settings.ble_timing_smoothing": "Suavizar timing BLE MIDI (experimental)",
  "settings.ignore_timing": "Ignorar timing (solo notas)",
  "settings.keep_awake": "Mantener pantalla activa",
  "settings.recommended_short": "Recom.",
  "settings.section_about": "Sobre midipiano.app",
  "settings.contact_button": "Contactar",
  "settings.error_reporting": "Compartir diagnósticos opcionales",
  "settings.section_engine": "Motor de evaluación",
  "settings.section_visualization": "Visualización",
  "settings.show_feedback": "Mostrar feedback",
  "settings.show_keyboard": "Mostrar teclado virtual",
  "settings.keep_screen_awake": "Mantener la pantalla activa",
  "settings.keep_screen_awake_unsupported": "No disponible en este navegador.",
  "settings.staff_zoom": "Zoom partitura",
  "settings.sync_tolerance": "Tolerancia de sincronía (ms)",
  "settings.sync_tolerance_recommended": "Recomendación: {value} ms (clic para aplicar)",
  "settings.title": "Ajustes",
  "settings.two_hand_sync": "Validar sincronía de manos",
  "settings.vexflow_unavailable": "VexFlow no está disponible en este navegador.",
  "settings.virtual_metronome": "Metrónomo virtual",
  "settings.virtual_metronome_volume": "Volumen metrónomo",
  "settings.zoom_in_aria": "Acercar",
  "settings.zoom_out_aria": "Alejar",
  "summary.completed": "completado",
  "summary.interrupted": "interrumpido",
  "summary.last_result": "Último: {exerciseName} ({handMode}), {completion}. {successCount}/{totalExpectedNotes} aciertos, {errorCount} errores, timing {timingOnTime}/{timingCount} en tiempo (media ±{timingAvgAbsMs} ms). [{when}]",
  "summary.last_result_timing_ignored": "Último: {exerciseName} ({handMode}), {completion}. {successCount}/{totalExpectedNotes} aciertos, {errorCount} errores, timing ignorado. [{when}]",
  "tabs.about": "Inicio",
  "tabs.load": "Importar",
  "tabs.midi": "MIDI",
  "tabs.nav_about": "Inicio",
  "tabs.nav_load": "Importar",
  "tabs.nav_midi": "MIDI",
  "tabs.nav_practice": "Práctica",
  "tabs.practice": "Práctica",
  "ui.placeholder_pending": "Pendiente en midipiano.app",
  "ui.previous_render_preserved": "El render anterior sigue visible.",
  "ui.settings_hint": "Los ajustes principales se están migrando a midipiano.app.",
  "timing.feel_early": "Adelantado ({pct}% pulso)",
  "timing.feel_late": "Tarde ({pct}% pulso)",
  "timing.feel_on_time": "En pulso",
  "timing.status_early": "Adelantado",
  "timing.status_late": "Tarde",
  "timing.status_on_time": "En pulso",
  "settings.wait_mode": "Modo espera (pausar hasta acertar nota)",
  "practice.note_near_time": "Nota correcta, ligeramente fuera ({source})",
  "feedback.sheet.show": "Mostrar feedback",
  "feedback.sheet.hide": "Ocultar feedback",
  "settings.diagnostics_help_aria": "Sobre los diagnósticos opcionales",
  "settings.diagnostics_modal_title": "Diagnósticos opcionales",
  "settings.diagnostics_modal_body": "Cuando está activada, midipiano.app envía datos técnicos de diagnóstico anónimos y temporales que nos ayudan a mejorar la fiabilidad, el rendimiento y la compatibilidad con dispositivos, y a saber de forma agregada qué ajustes de la app (como el tema de la interfaz) se usan realmente.",
  "settings.diagnostics_modal_close": "Entendido",
  "settings.diagnostics_modal_choice": "Puedes cambiar esta opción en cualquier momento desde Ajustes.",
  "settings.diagnostics_modal_more": "Más información en nuestra",
  "midi.input_option_web_browser": "Navegador web (teclado virtual)",
  "import.part_selection_title": "Elegir parte de piano",
  "import.part_selection_body": "Esta partitura tiene más de una parte real de piano.",
  "import.part_selection_status": "Elige qué parte de piano importar.",
  "import.render_timeout": "La partitura tardó demasiado o se interrumpió la conexión. Inténtalo de nuevo.",
  "import.part_selection_both": "Ambas",
  "import.part_selection_parts_count": "({count} partes)",
  "feedback.summary_duration": "Duración",
  "feedback.summary_release": "Soltar",
  "feedback.summary_pedal": "Pedal",
  "feedback.summary_chord_clarity": "Claridad de acordes",
  "feedback.summary_release_early": "Sueltas la tecla demasiado pronto",
  "feedback.summary_release_late": "Sueltas la tecla demasiado tarde",
  "feedback.summary_pedal_check": "Revisa los cambios de pedal",
  "feedback.summary_pedal_not_measured": "Pedal no medido",
  "feedback.summary_chords_uneven": "Acordes desiguales",
  "feedback.summary_repeat_weak_measures": "Repetir compases débiles",
  "feedback.summary_try_speed": "Probar {speed}%",
  "feedback.summary_next_objective": "Próximo objetivo: {objective}",
  "feedback.summary_next_objective_no_input": "Próximo objetivo: toca las primeras notas",
  "feedback.summary_objective_measure": "en c.{measure}",
  "feedback.summary_objective_accuracy": "Precisión",
  "feedback.summary_objective_timing": "Ritmo",
  "feedback.summary_objective_left_hand": "Mano izquierda",
  "feedback.summary_objective_right_hand": "Mano derecha",
  "feedback.summary_objective_sync": "Sincronía de manos",
  "feedback.summary_objective_release": "Soltar notas",
  "feedback.summary_objective_pedal": "Pedalización",
  "feedback.summary_objective_chord_clarity": "Claridad de acordes",
  "feedback.summary_objective_balanced": "Sesión equilibrada",
  "feedback.reward_headline_first_result": "Primer intento guardado",
  "feedback.reward_headline_new_best": "Nuevo récord personal",
  "feedback.reward_headline_improved": "Has mejorado",
  "feedback.reward_headline_solid_pass": "Buen pase",
  "feedback.reward_headline_next_rep": "La siguiente repetición está lista",
  "feedback.reward_chip_baseline": "Primer intento",
  "feedback.reward_chip_new_best": "Nuevo récord",
  "feedback.reward_chip_improved": "+{points} vs anterior",
  "feedback.reward_chip_near_star": "{points} para la siguiente estrella",
  "feedback.reward_chip_no_misses": "Sin omitidas",
  "feedback.reward_chip_timing_improved": "Timing mejorado",
  "feedback.reward_chip_clean_left": "Izquierda limpia",
  "feedback.reward_chip_clean_right": "Derecha limpia",
  "feedback.reward_chip_clean_pass": "Pase limpio",
  "feedback.reward_history_first": "Primer intento con esta configuración",
  "feedback.reward_history_previous": "Anterior {score}",
  "feedback.reward_history_best": "Mejor {score}",
  "feedback.reward_heatmap_aria": "Mapa de compases",
  "feedback.reward_heatmap_measure_label": "c.{measure}: {status}",
  "feedback.reward_heatmap_clean": "limpio",
  "feedback.reward_heatmap_ok": "bien",
  "feedback.reward_heatmap_weak": "débil",
  "feedback.reward_heatmap_not_attempted": "no intentado",
  "feedback.analysis_global_title": "Análisis global",
  "feedback.analysis_global_hint": "Métricas del ámbito seleccionado.",
  "feedback.analysis_measure_title": "Compás {measure}",
  "feedback.analysis_measure_hint": "Métricas del compás seleccionado.",
  "feedback.map_title": "Mapa de práctica",
  "feedback.map_hint": "Toca un compás para revisarlo.",
  "feedback.map_all_measures": "Todos los compases",
  "feedback.map_selected_measure": "Compás {measure} seleccionado",
  "feedback.score_help_aria": "Cómo se calcula la puntuación de práctica",
  "feedback.score_help_text": "Puntuación = precisión de notas + ritmo.\nDos manos: la sincronía cuenta un 10%.\nLa técnica fina puede restar hasta 5 pts.\nEstrellas: 5★ 90+ · 4★ 75+ · 3★ 60+ · 2★ 40+.",
  "feedback.scope_label": "Vista",
  "feedback.scope_full": "Ejercicio completo",
  "feedback.scope_loop": "Bucle {number}",
  "feedback.map_previous_range": "Compases anteriores",
  "feedback.map_next_range": "Compases siguientes",
  "feedback.map_range_label": "Rango de compases",
  "feedback.map_range_option": "Compases {start}-{end}",
  "feedback.summary_timing": "Ritmo",
  "feedback.summary_clean": "Limpio",
  "settings.feedback_sounds": "Sonidos de feedback",
  "practice.catalog_filters_aria": "Filtros de ejercicios",
  "practice.catalog_filter_level": "Nivel",
  "practice.catalog_filter_family": "Familia",
  "practice.catalog_filter_hand": "Mano foco",
  "practice.catalog_filter_duration": "Duración",
  "practice.catalog_empty": "No hay ejercicios disponibles.",
  "practice.catalog_no_matches": "Ningún ejercicio coincide con estos filtros.",
  "practice.catalog_count": "{visible} de {total} ejercicios",
  "practice.catalog_level_count": "{count} ejercicios",
  "practice.catalog_level_count_one": "1 ejercicio",
  "practice.catalog_expand_level": "Ver",
  "practice.catalog_collapse_level": "Ocultar",
  "practice.catalog_filter_all_levels": "Todos los niveles",
  "practice.catalog_filter_all_families": "Todas las familias",
  "practice.catalog_filter_all_hands": "Cualquier mano",
  "practice.catalog_filter_any_duration": "Cualquier duración",
  "practice.catalog_filter_duration_3": "Hasta 3 min",
  "practice.catalog_filter_duration_5": "Hasta 5 min",
  "practice.catalog_filter_duration_7": "Hasta 7 min",
  "practice.catalog_minutes": "{minutes} min",
  "practice.catalog_family_scales": "Escalas",
  "practice.catalog_family_arpeggios": "Arpegios",
  "practice.catalog_family_chords": "Acordes",
  "practice.catalog_family_independence": "Independencia",
  "practice.catalog_family_leaps": "Saltos",
  "practice.catalog_family_rhythm": "Ritmo",
  "practice.catalog_family_polyrhythm": "Polirritmia",
  "practice.catalog_family_reading": "Lectura",
  "practice.catalog_family_voice-control": "Control de voces",
  "practice.catalog_family_other": "Otros",
  "practice.catalog_hand_both": "Ambas manos",
  "practice.catalog_hand_left": "Mano izquierda",
  "practice.catalog_hand_right": "Mano derecha",
  "practice.catalog_hand_alternating": "Manos alternadas",
  "tabs.nav_exercises": "Ejercicios",
  "app.top_title.exercises": "Catálogo de ejercicios",
  "exercises.title": "Catálogo de ejercicios",
  "exercises.search": "Buscar",
  "exercises.search_placeholder": "Título, objetivo, etiqueta...",
  "exercises.catalog_col_exercise": "Ejercicio",
  "exercises.catalog_col_goal": "Objetivo",
  "practice.catalog_filter_tags": "Etiquetas",
  "practice.catalog_filter_all_tags": "Todas las etiquetas",
  "exercises.catalog_col_time": "Recomendaciones de práctica",
  "exercises.curriculum_level_1": "Nivel 1 · Principiante básico",
  "exercises.curriculum_level_2": "Nivel 2 · Principiante con dos manos",
  "exercises.curriculum_level_3": "Nivel 3 · Elemental",
  "exercises.curriculum_level_4": "Nivel 4 · Elemental avanzado",
  "exercises.curriculum_level_5": "Nivel 5 · Intermedio",
  "exercises.curriculum_level_6": "Nivel 6 · Intermedio avanzado / avanzado inicial",
  "settings.theme": "Tema",
  "settings.theme_midnight": "Concierto nocturno",
  "settings.theme_ivory": "Estudio marfil",
  "settings.theme_ocean": "Práctica oceánica",
  "settings.theme_forest": "Focus bosque",
  "settings.theme_aubergine": "Escenario berenjena",
  "exercises.catalog_variant": "Variante",
  "feedback.summary_not_applicable": "No aplica",
  "feedback.summary_not_measured_short": "Sin medir",
  "feedback.summary_release_early_count": "{count} soltadas pronto",
  "feedback.summary_release_late_count": "{count} soltadas tarde",
  "cookies.consent_aria": "Consentimiento de cookies",
  "feedback.summary_hand_sync_score": "Sincronía",
  "feedback.summary_fine_technique": "Técnica fina",
  "feedback.metric_accuracy_help": "Porcentaje de notas esperadas tocadas correctamente. Las notas omitidas, equivocadas o fuera de la ventana de timing bajan esta métrica. Es la parte más importante de la puntuación: 65%.",
  "feedback.metric_timing_help": "Distancia media respecto al pulso esperado en las notas tocadas. Menos milisegundos es mejor. Aporta el 25% de la puntuación.",
  "feedback.metric_sync_help": "Mide si las notas de mano izquierda y derecha que deberían caer juntas se tocan juntas. Si el pasaje usa una sola mano, esta métrica no puntúa y su peso pasa a precisión y timing.",
  "feedback.metric_fine_help": "Ajuste diagnóstico pequeño para soltar notas, duración, pedal, articulación y claridad de acordes cuando se puede medir. Como máximo resta 5 puntos a la puntuación global.",
  "feedback.summary_no_penalty": "Sin penalización",
  "feedback.summary_fine_penalty": "-{points} pt",
  "keyboard.aria_label": "Teclado de piano virtual",
  "service.unavailable_title": "Volvemos enseguida",
  "service.unavailable_body": "El servicio está descansando un momento. Vuelve a probar en un ratito.",
  "service.offline_load": "Sin conexión. Conéctate a internet para cargar esta partitura.",
  "service.unavailable_short": "No disponible ahora mismo",
  "feedback.stat_missed": "Fallos",
  "feedback.stat_wrong": "Erróneas",
  "feedback.stat_offtime": "A destiempo",
  "feedback.stat_sync": "Sincronía",
  "feedback.stat_releases": "Al soltar",
  "feedback.summary_hands_title": "Estadísticas por mano",
  "feedback.summary_tends_early": "se adelanta",
  "feedback.summary_tends_late": "se atrasa",
  "feedback.summary_dragging": "ralentizando",
  "feedback.summary_rushing": "acelerando",
  "feedback.summary_touch_evenness": "pulsación {percent}%",
  "feedback.summary_dir_early": "antes ◀",
  "feedback.summary_dir_late": "tarde ▶",
  "feedback.summary_extra_notes": "Notas de más",
  "feedback.map_minimap_aria": "Vista general de la obra",
  "exercises.curriculum_level_0": "Nivel 0 · Primeros pasos",
  "exercises.curriculum_level_7": "Nivel 7 · Avanzado",
  "exercises.unit_min": "min",
  "exercises.unit_min_per_chord": "min por acorde",
  "exercises.unit_min_per_arpeggio": "min por arpegio",
  "exercises.unit_reps": "reps",
  "exercises.unit_per_scale": "por escala",
  "exercises.unit_per_key": "por tecla",
  "exercises.unit_measure_fragments": "fragmentos de compás",
  "exercises.unit_free_loop": "bucle libre",
  "exercises.challenge_reco_body": "Con este nivel ya estás preparado para el reto {tier}: una pieza corta nueva cada día, a primera vista. ¿Te atreves?",
  "exercises.challenge_reco_cta": "Ir a los retos",
  "feedback.reward_chip_hands_synced": "Manos sincronizadas",
  "midi.output_channel_scan_modal_feedback": "¿Algo no funciona? Escríbenos a feedback@midipiano.app",
  "midi.enable_activating": "Activando…",
  "midi.refresh_searching": "Buscando…",
  "tabs.nav_challenge": "Retos",
  "challenge.title": "Reto del día",
  "challenge.intro": "Una pieza nueva cada día, la misma para todos: conecta tu teclado, escúchala si quieres, pulsa Iniciar el reto y tócala a primera vista. ¿Lo conseguirás?",
  "challenge.unavailable": "El reto de hoy no está disponible ahora mismo. Vuelve a intentarlo pronto.",
  "challenge.needs_midi": "Necesitas un teclado MIDI conectado para jugar el reto.",
  "challenge.needs_midi_cta": "Conectar teclado",
  "challenge.tier_starter": "Iniciación",
  "challenge.tier_intermediate": "Intermedio",
  "challenge.tier_advanced": "Avanzado",
  "challenge.tier_starter_hint": "La melodía en su forma más sencilla, a tempo tranquilo.",
  "challenge.tier_intermediate_hint": "Tempo más vivo y notas de paso que rellenan la melodía.",
  "challenge.tier_advanced_hint": "Tempo rápido, figuras hasta semicorcheas, octavas y acordes de séptima.",
  "challenge.attempts_intro": "El mejor de {count} intentos.",
  "challenge.lives_left": "Intentos restantes: {count}",
  "challenge.lives_aria": "Intentos restantes: {remaining} de {total}",
  "challenge.retry": "Reintentar",
  "challenge.leave": "Terminar el reto",
  "challenge.exit": "Salir",
  "challenge.continue_later": "Seguir más tarde",
  "challenge.practice": "Practicar esta pieza",
  "challenge.practice_score_name": "Reto {tier} · {label}",
  "challenge.practice_locked": "Juega como mínimo un intento del reto para desbloquear la práctica.",
  "challenge.best_so_far": "Tu mejor marca",
  "challenge.no_score": "Esta vez sin puntuación.",
  "challenge.no_score_yet": "Aún sin puntuación.",
  "challenge.autoscroll_on": "Autoscroll: activado",
  "challenge.autoscroll_off": "Autoscroll: desactivado",
  "challenge.play": "Jugar este reto",
  "challenge.status_done": "Jugado",
  "challenge.share": "Compartir resultado",
  "challenge.cancel_start": "Cancelar",
  "challenge.start": "Iniciar el reto",
  "challenge.get_ready": "¡Prepárate!",
  "challenge.get_ready_hint": "Manos al teclado: la cuenta de entrada empieza enseguida.",
  "challenge.score_name": "Reto del día",
  "challenge.preparing": "Preparando el reto…",
  "challenge.result_title": "¡Reto completado!",
  "challenge.result_title_attempt": "Intento completado",
  "challenge.next_in": "Nuevo reto en {time}",
  "challenge.time_hm": "{hours} h {minutes} min",
  "challenge.time_m": "{minutes} min",
  "challenge.share_text": "Reto del día {label} · nivel {tier}",
  "challenge.share_on": "Compartir en {network}",
  "challenge.share_other": "Más opciones para compartir",
  "challenge.share_cta": "Compartir mi resultado",
  "challenge.view_score": "Ver la partitura",
  "challenge.show_result": "Ver resultado",
  "midi.firefox_denied_hint": "Firefox ha denegado el acceso MIDI sin preguntar. Lo hace cuando no detecta ningún dispositivo MIDI. Asegúrate de que el teclado está conectado con un cable USB de datos y encendido, recarga esta página y vuelve a habilitar MIDI.",
  "challenge.copy": "Copiar al portapapeles",
  "challenge.best_score": "Tu mejor puntuación: {score}%",
  "challenge.finish_confirm": "Aún te quedan {count} intentos para mejorar tu puntuación. ¿Seguro que quieres terminar el reto de hoy?",
  "challenge.finish_confirm_last": "Aún te queda un intento para mejorar tu puntuación. ¿Seguro que quieres terminar el reto de hoy?",
  "challenge.finish_confirm_action": "Terminar igualmente"
}
