Files
kapteins-daagbok/client/src/i18n/locales/es.json
T

1090 lines
69 KiB
JSON
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
{
"translation": {
"app": {
"name": "Kapteins Daagbok",
"tagline": "Diario de navegación de un yate privado",
"beta": "Beta",
"beta_hint": "Versión beta — Las funciones aún pueden sufrir cambios"
},
"footer": {
"kofi_label": "Ko-fi",
"kofi_title": "Apoya el proyecto, su desarrollo y los gastos de funcionamiento en Ko-fi"
},
"languages": {
"de": "Deutsch",
"en": "English",
"da": "Dansk",
"sv": "Svenska",
"nb": "Norsk",
"fr": "Français",
"es": "Español"
},
"dialog": {
"ok": "Vale",
"yes": "Sí",
"no": "No"
},
"errors": {
"load_failed": "No se han podido cargar los datos.",
"save_failed": "No se han podido guardar los cambios.",
"delete_failed": "Error al borrar.",
"export_failed": "Error al exportar."
},
"common": {
"unsaved_changes_title": "Cambios no guardados",
"unsaved_changes_message": "Tienes cambios sin guardar. ¿De verdad quieres salir de la página? Se perderán tus cambios.",
"unsaved_changes_stay": "Quedarse",
"unsaved_changes_save_leave": "Guardar y salir",
"unsaved_changes_discard": "Descartar",
"unsaved_changes_leave": "Abandonado",
"previous": "Anterior",
"next": "Siguiente"
},
"nav": {
"dashboard": "Panel de control",
"vessel": "Datos del buque",
"crew": "Tripulación",
"deviation": "Tabla de distracciones",
"logs": "Entradas del diario de a bordo",
"stats": "Estadísticas",
"settings": "Configuración",
"admin": "Admin"
},
"auth": {
"welcome": "Bienvenido a Kapteins Daagbok",
"tagline": "Tu diario de navegación seguro y cifrado con E2E.",
"register": "Registrarse con Passkey",
"login": "Iniciar sesión con Passkey",
"login_as": "Iniciar sesión como {{name}}",
"quick_login": "Inicio de sesión rápido",
"forget_account": "¿Has olvidado tu cuenta en este dispositivo?",
"not_user": "¿No es {{name}}?",
"recovery_title": "Tu clave de recuperación",
"recovery_warning": "IMPORTANTE: Anota estas 12 palabras. Si pierdes tu Passkey y estas palabras, no se podrán recuperar tus datos.",
"confirm_recovery": "He apuntado las palabras",
"status_logged_in": "Iniciado sesión",
"status_logged_out": "Desconectado",
"copied": "¡Copiado!",
"copy_phrase": "Hacer una copia de la llave",
"enter_recovery": "Introducir la clave de recuperación",
"recovery_fallback_warning": "Tu Passkey se ha autenticado correctamente, pero tu dispositivo no admite la derivación de claves basada en hardware. Introduce tu frase de recuperación de 12 palabras para descifrar tu diario de registro.",
"recovery_placeholder": "Introduce tu clave de recuperación, compuesta por 12 palabras separadas por espacios...",
"back": "Atrás",
"decrypting": "Descifrado...",
"decrypt_logbook": "Descifrar el diario de a bordo",
"error_incorrect_recovery": "Clave de recuperación incorrecta. Fallo en el descifrado.",
"error_decryption_failed": "Error al descifrar. Comprueba tu clave de recuperación.",
"or_register": "o Registrarse",
"explore_demo": "Explora la demo sin necesidad de crear una cuenta",
"username_placeholder": "Nombre de usuario / Nombre de patrón",
"processing": "Procesando...",
"help": "Ayuda",
"setup_pin_title": "Configurar un PIN local (opcional)",
"setup_pin_warning": "Dado que tu dispositivo no admite la derivación directa de claves Passkey, de lo contrario tendrías que introducir tu clave de 12 palabras cada vez que iniciaras sesión en este dispositivo. Configura un PIN local para evitarlo.",
"pin_placeholder": "Por ejemplo, 123456",
"pin_label": "Código PIN local (4-8 dígitos)",
"save_pin": "Guardar PIN y continuar",
"skip_pin": "Saltar y utilizar la función de recuperación",
"enter_pin_title": "Descifrar con el PIN",
"enter_pin_warning": "Introduce tu PIN local para desbloquear la clave de descifrado en este dispositivo.",
"enter_pin_placeholder": "Introduce tu PIN...",
"decrypt_with_pin": "Descifrar",
"use_recovery_instead": "En su lugar, utiliza la clave de recuperación",
"error_incorrect_pin": "PIN incorrecto. Error al descifrar.",
"error_invalid_host": "Passkeys no funciona a través de 127.0.0.1. Abre la aplicación a través de localhost.",
"use_localhost_link": "Cambiar a localhost",
"error_passkey_cancelled": "Passkey: sesión cancelada o caducada. Inténtalo de nuevo.",
"error_invalid_rp_id": "El dominio Passkey no es válido (RP ID). A nivel local, utiliza solo http://localhost:5173 con RP_ID=localhost en el archivo .env.",
"error_session_incomplete": "El registro está incompleto. Vuelve a registrarte con Passkey.",
"restore_checking": "Se está comprobando la sesión…",
"restore_title": "Recuperar sesión",
"restore_subtitle": "Tu cuenta sigue activa. Desbloquea tu diario de a bordo con Passkey o tu PIN.",
"restore_unlocking": "Se está desbloqueando…",
"restore_with_passkey": "Desbloquear con Passkey ({{name}})",
"restore_with_pin": "Desbloquear con el PIN",
"restore_pin_warning": "Introduce tu PIN local para desbloquear tu diario de a bordo tras la recarga.",
"restore_other_account": "Iniciar sesión con otra cuenta"
},
"pwa": {
"title": "Instalar la aplicación",
"generic_benefit": "Instala Kapteins Daagbok en tu dispositivo para disfrutar de un acceso más rápido, poder utilizarlo sin conexión y guardar los datos de forma permanente.",
"ios_instructions": "En el iPad/iPhone: añade la aplicación al pantalla de inicio para que tus datos del diario de navegación permanezcan protegidos y la aplicación se inicie como una aplicación nativa.",
"ios_step_share": "Toca el icono de compartir en la barra Safari",
"ios_step_add": "Selecciona «Ir a la pantalla de inicio»",
"install_now": "Instalar ahora",
"installing": "Instalación…",
"later": "Más tarde",
"never": "No volver a mostrar",
"platform_ios": "Instalación a través de Safari",
"platform_android": "Instalación a través del navegador",
"platform_desktop": "Instalación como aplicación de escritorio",
"settings_section": "Instalación de la aplicación",
"update_title": "Hay una actualización disponible",
"update_desc": "Ya está disponible una nueva versión de Kapteins Daagbok. Actualiza para obtener los últimos cambios.",
"update_now": "Actualizar ahora",
"update_reloading": "Cargando…",
"storage_persist_hint": "El navegador puede borrar los datos sin conexión. Permite el almacenamiento permanente para que tu diario de navegación permanezca protegido (en la configuración del navegador o la próxima vez que se te avise)."
},
"sync": {
"status_synced": "Doblada",
"status_syncing": "Sincronizar…",
"status_offline": "Caché sin conexión",
"status_unsynced": "Cambios no sincronizados",
"conflict_title": "Conflicto de sincronización",
"conflict_message": "{{count}} No se han podido sincronizar los cambios (entrada {{id}}…). Elige qué versión quieres aplicar.",
"conflict_use_server": "Aplicar la versión del servidor",
"conflict_keep_local": "Conservar mi versión"
},
"vessel": {
"title": "Datos maestros de buques",
"name": "Nombre del yate",
"type": "Tipo de yate",
"type_unset": "— no especificado —",
"type_sailing": "velero",
"type_motor": "yate a motor",
"length_m": "Longitud (m)",
"draft_m": "Calado (m)",
"air_draft_m": "Altura (m)",
"invalid_metric": "Valor numérico no válido: introduzca los metros en formato decimal (p. ej., 12,5).",
"port": "puerto de origen",
"owner": "Propietario",
"charter": "Empresa de alquiler de barcos",
"registration": "Matrícula",
"callsign": "Indicativo de llamada por radio",
"atis": "N.º ATIS",
"mmsi": "N.º MMSI",
"save": "Guardar datos del barco",
"saving": "Se está guardando...",
"saved": "¡Datos del barco guardados correctamente!",
"loading": "Se están cargando los datos del barco...",
"sails_list": "Aparejo (velas disponibles)",
"sails_help": "Introduce aquí las velas de las que dispone tu barco (por ejemplo, la vela mayor, el génova, el foque).",
"add_sail": "Añadir vela",
"sail_name_placeholder": "p. ej., la vela mayor",
"no_sails": "No hay velas guardadas.",
"photo_add": "Añadir foto",
"photo_change": "Cambiar foto",
"photo_delete": "Eliminar foto",
"tanks_section": "Depósitos (capacidad)",
"tanks_help": "Opcional en litros: permite utilizar el control deslizante en el diario cuando se conocen las capacidades de los depósitos.",
"freshwater_capacity_l": "Agua potable (litros)",
"fuel_capacity_l": "Combustible (litros)",
"greywater_capacity_l": "Aguas grises (litros)",
"invalid_tank_liters": "Valor numérico no válido: introduce los litros como un número (por ejemplo, 200)."
},
"logs": {
"title": "Diario de a bordo",
"new_entry": "Nuevo día de viaje",
"travel_details": "Detalles del viaje",
"add_event": "Añadir una nueva entrada al diario de a bordo",
"add_event_btn": "Añadir evento",
"edit_event": "Editar evento",
"save_event_btn": "Guardar cambio",
"cancel_event_edit": "Cancelar",
"delete_event": "Eliminar evento",
"sign_cleared_skipper_re_sign_title": "Se ha eliminado la firma del patrón",
"sign_cleared_skipper_re_sign": "Se ha modificado el registro de eventos. Se ha eliminado la firma del patrón. Por favor, vuelva a aprobarlo.",
"date": "Fecha",
"day_of_travel": "Día del viaje",
"travel_day_number": "Día del viaje {{number}}",
"departure": "Puerto de salida (viaje desde)",
"destination": "Puerto de destino (a)",
"route": "Viaje desde/hacia",
"tanks": "Depósitos",
"customize_columns": "Ajustar columnas",
"column_selector_title": "Columnas que se deben mostrar",
"freshwater": "Agua dulce (litros)",
"fuel": "Combustible (litros)",
"greywater": "Aguas grises (litros)",
"greywater_level": "Nivel",
"tank_slider_of_max": "{{current}} / {{max}} L",
"tank_capacity_tooltip": "Si en los datos del barco se han introducido las capacidades de los depósitos (en litros), puedes introducir aquí los niveles de llenado mediante el control deslizante.",
"morning": "Situación a primera hora de la mañana",
"refilled": "Repuesto",
"evening": "Situación al atardecer",
"consumption": "Consumo diario",
"signatures": "Firmas / Autorización",
"sign_skipper": "Firma del patrón",
"sign_crew": "Firma del equipo",
"sign_hint": "Firmar con el dedo, un bolígrafo o el ratón",
"sign_clear": "Eliminar",
"sign_export_image": "[Firma]",
"sign_with_passkey": "Compartir con Passkey",
"sign_passkey_signing": "Se está solicitando Passkey…",
"sign_passkey_signed": "Publicado por {{username}}",
"sign_passkey_export": "Passkey: {{username}} ({{date}})",
"sign_attribution_export": "{{username}} ({{date}})",
"sign_passkey_clear": "Eliminar la autorización Passkey",
"sign_mode_passkey": "Passkey",
"sign_mode_classic": "Clásico",
"sign_passkey_failed": "Passkey: error en la autorización",
"sign_passkey_cancelled": "Passkey: autorización cancelada",
"sign_invalid": "Firma no válida: el contenido ha sido modificado",
"sign_badge_skipper": "patrón",
"sign_badge_skipper_invalid": "No válido",
"sign_badge_skipper_title_valid": "Skipper lo ha publicado",
"sign_badge_skipper_title_invalid": "Firma del capitán no válida — Se ha modificado el contenido",
"sign_classic_or_passkey": "Opcional: firma clásica o autorización Passkey en la parte superior",
"sign_crew_passkey_hint": "Los miembros del equipo con permisos de escritura pueden compartir mediante Passkey",
"sign_offline_hint": "La autorización Passkey requiere conexión a Internet; la firma clásica se puede realizar sin conexión",
"sign_lock_notice": "Una vez firmada, no se podrán realizar modificaciones en la entrada del diario de a bordo (excepto en las fotos) sin que el patrón y la tripulación tengan que volver a firmar.",
"sign_lock_active": "Esta entrada está firmada. Los cambios en el diario de a bordo (excepto las fotos) eliminan automáticamente las firmas del patrón y de la tripulación.",
"sign_lock_warning_title": "Confirmar la firma",
"sign_lock_warning": "Una vez firmada, no se podrán realizar modificaciones en la entrada del diario de a bordo (excepto en las fotos) sin que el patrón y la tripulación tengan que volver a firmar.\n\n¿Quieres continuar?",
"sign_proceed": "Firmar",
"sign_cancel": "Cancelar",
"sign_cleared_re_sign_title": "Se han eliminado las firmas",
"sign_cleared_re_sign": "Se ha modificado la entrada del diario de a bordo. Se han eliminado las firmas del patrón y de la tripulación. Por favor, vuelva a firmar.",
"no_entries": "No se han encontrado entradas en el diario de navegación de este yate. ¡Crea tu primer día de viaje!",
"back_to_list": "Volver a la lista de revistas",
"save": "Guardar página del diario de a bordo",
"saving": "Se está guardando...",
"saved": "¡Página del diario de a bordo guardada correctamente!",
"loading": "Se está cargando el diario...",
"view_mode_label": "Vista",
"view_list": "Lista",
"live_mode": "En directo",
"live_title": "Diario en vivo",
"live_loading": "Se está cargando Live-Journal...",
"live_retry": "Intentarlo de nuevo",
"live_load_error": "No se ha podido cargar Live-Journal.",
"live_action_error": "No se ha podido guardar la entrada.",
"live_open_editor": "Editor completo",
"live_actions_label": "Ofertas de última hora",
"live_stream_label": "Registro de eventos",
"live_stream_title": "Diario",
"live_no_events": "Aún no hay entradas — selecciona una acción.",
"live_motor_start": "Arranque del motor",
"live_motor_stop": "Parada del motor",
"live_cast_off": "Desplazarse",
"live_moor": "Crear",
"live_sails_btn": "Vela",
"live_sails_pick": "Elegir vela",
"live_sails_pick_hint": "Toca varias velas (vuelve a tocarlas para deseleccionarlas) y, a continuación, introduce los datos.",
"live_sails_selected": "Selección: {{sails}}",
"live_sails_confirm": "Registrarse",
"live_sails_confirm_count": "Registrarse ({{count}})",
"live_sails": "Vela: {{sails}}",
"live_position": "Cargo",
"live_position_coords": "Posición {{lat}}, {{lng}}",
"live_position_manual_hint": "El GPS no está disponible. Introduce manualmente la latitud y la longitud o vuelve a intentarlo pulsando el botón de GPS.",
"live_position_gps_loading": "Se está calculando la posición GPS…",
"live_position_invalid": "Introduzca coordenadas válidas (latitud 90…90, longitud 180…180).",
"live_position_lat_placeholder": "Ancho (Lat)",
"live_position_lng_placeholder": "Longitud (Lng)",
"live_photo_btn": "Foto (cámara)",
"live_photo_capture_btn": "Grabar",
"live_photo_save_btn": "Guardar",
"live_photo_retake_btn": "Volver a grabar",
"live_photo_capture_failed": "Error al grabar. Inténtalo de nuevo.",
"live_photo_open_camera_btn": "Abrir la cámara",
"live_photo_native_hint": "Haz una foto con la cámara del dispositivo y guárdala aquí.",
"live_photo_camera_starting": "Se está encendiendo la cámara…",
"live_photo_camera_denied": "Se ha denegado el acceso a la cámara o no está disponible.",
"live_photo_camera_unavailable": "Este navegador no es compatible con la cámara.",
"live_photo_no_camera": "Este dispositivo no dispone de cámara.",
"live_photo_error": "No se ha podido guardar la foto.",
"live_photo_entry": "Foto: {{caption}}",
"live_photo_entry_plain": "Foto tomada",
"live_undo_photo_hint": "Foto guardada",
"live_voice_btn": "Nota de voz",
"live_voice_hint": "Graba una nota de voz breve (máx. 60 segundos).",
"live_voice_record": "Iniciar grabación",
"live_voice_stop": "Finalizar la grabación",
"live_voice_recording": "Grabación {{time}}",
"live_voice_save": "Guardar",
"live_voice_saving": "Se está guardando…",
"live_voice_retake": "Volver a grabar",
"live_voice_mic_denied": "No se permite el acceso al micrófono o no está disponible.",
"live_voice_record_failed": "Error en la grabación. Inténtalo de nuevo.",
"live_voice_unavailable": "No hay nota de voz disponible",
"live_voice_too_large": "La grabación es demasiado larga. Por favor, graba una más corta.",
"live_voice_error": "No se ha podido guardar la nota de voz.",
"live_voice_entry": "Nota de voz: {{caption}}",
"live_voice_entry_plain": "Nota de voz",
"live_voice_caption_label": "Rotulación (opcional)",
"live_voice_caption_placeholder": "por ejemplo, comunicación por radio con el capitán del puerto",
"live_voice_transcribe_action": "Transcribir",
"live_voice_transcribing": "Transcribe...",
"live_voice_transcribe_failed": "Se ha guardado la nota de voz, pero la transcripción ha fallado.",
"live_undo_voice_hint": "Nota de voz guardada",
"live_comment_btn": "Comentario",
"live_comment_placeholder": "Escribir texto libre…",
"live_comment_confirm": "Registrarse",
"live_gps_error": "No se ha podido determinar la posición GPS.",
"live_gps_start_hint": "Empieza siempre tu recorrido diario por un lugar.",
"live_event_generic": "Evento",
"live_weather_btn": "El tiempo",
"live_weather_owm_btn": "OpenWeatherMap Consultar el tiempo",
"live_weather_owm_loading": "Se está cargando la información meteorológica…",
"live_weather_position_required": "Para el tiempo de OpenWeatherMap, introduce primero una ubicación (botón «Ubicación»). La ubicación no puede tener más de 6 horas de antigüedad.",
"live_weather_position_stale": "La última posición tiene más de 6 horas de antigüedad. Por favor, registra una nueva posición antes de consultar la información meteorológica.",
"live_wind_btn": "Viento",
"live_temp_btn": "T °C",
"live_pressure_btn": "presión atmosférica",
"live_precip_btn": "Precipitaciones",
"live_sea_state_btn": "mar agitado",
"live_visibility_btn": "Visibilidad",
"live_course_btn": "Curso",
"live_fuel_btn": "+ Diésel",
"live_water_btn": "+ Agua",
"live_wind_entry": "Viento {{value}}",
"live_temp_entry": "Temperatura {{temp}} °C",
"live_pressure_entry": "Presión atmosférica {{value}} hPa",
"live_precip_entry": "Precipitaciones {{value}}",
"live_sea_state_entry": "Mar picado {{value}}",
"live_visibility_entry": "Visibilidad {{value}}",
"live_course_entry": "Curso {{course}}",
"live_fuel_entry": "Diésel +{{liters}} L",
"live_water_entry": "Agua +{{liters}} L",
"live_auto_position": "Posición automática",
"live_undo_hint": "Entrada guardada",
"live_undo_btn": "Deshacer",
"live_cancel": "Demolición",
"live_pressure_placeholder": "p. ej., 1013",
"live_temp_placeholder": "p. ej., 18",
"live_precip_placeholder": "por ejemplo, lluvia ligera",
"live_sea_state_placeholder": "p. ej., 3",
"live_visibility_placeholder": "por ejemplo, 10 km",
"live_course_placeholder": "p. ej., 245",
"live_fuel_placeholder": "Litros rellenados",
"live_water_placeholder": "Litros rellenados",
"live_sog_btn": "SOG",
"live_stw_btn": "STW",
"live_sog_entry": "SOG {{speed}} kn",
"live_stw_entry": "STW {{speed}} kn",
"live_sog_placeholder": "p. ej., 5,2",
"live_stw_placeholder": "p. ej., 4,8",
"live_sog_hint": "Distancia recorrida (km) — El valor del GPS se rellena automáticamente si está disponible.",
"delete_entry": "Eliminar etiqueta",
"delete_confirm": "¿Estás seguro de que quieres eliminar definitivamente este día de viaje?",
"carry_over_tanks_title": "¿Importar los datos del día anterior?",
"carry_over_tanks_confirm": "¿Se mantienen los valores iniciales del puerto de salida, el agua dulce, el combustible y las aguas grises del último día del viaje?\n\nPuerto de salida: {{departure}}\nAgua dulce: {{fw}} L\nCombustible: {{fuel}} L\nAguas grises: {{greywater}} L",
"carry_over_tanks_yes": "Aplicar",
"carry_over_tanks_no": "Empezar desde cero",
"event_title": "Registro cronológico de eventos",
"event_creator": "Publicado por",
"no_events": "Aún no se han registrado eventos para este día del viaje.",
"event_time": "Hora",
"event_mgk": "Curso de MgK",
"event_rwk": "Curso RwK",
"event_course_section": "Curso",
"course_dial_hint": "Girar el anillo o introducir el grado",
"course_dial_step_label": "Incremento",
"course_step_fine": "1.º",
"course_step_medium": "5°",
"course_step_coarse": "10°",
"course_tab_mgk": "MgK",
"course_tab_rwk": "rwK",
"course_invalid": "Rango no válido (0360)",
"course_placeholder_degrees": "p. ej., 180",
"course_placeholder_cardinal": "p. ej., NW",
"compass_n": "N",
"compass_e": "O",
"compass_s": "S",
"compass_w": "W",
"wind_mode_cardinal": "cardenal",
"wind_mode_degrees": "Como grado",
"event_wind_direction": "Dirección del viento",
"event_wind_strength": "intensidad del viento",
"event_sea_state": "mar agitado",
"event_visibility": "Visibilidad",
"event_visibility_placeholder": "por ejemplo, 10 km",
"weather_slider_unset": "—",
"weather_slider_pressure": "{{value}} hPa",
"weather_slider_sea_state": "Nivel {{value}}",
"weather_slider_heel": "{{value}}°",
"event_weather": "El tiempo",
"event_log": "Logge (sm)",
"event_gps": "Coordenadas GPS",
"event_location": "Localidad / Puerto",
"event_location_placeholder": "p. ej., Kiel",
"event_remarks": "Observaciones / Incidentes",
"gps_btn": "Obtener las coordenadas GPS",
"gps_permission_denied": "Se ha denegado el acceso a la ubicación. Permítelo en la configuración del navegador o del dispositivo y vuelve a intentarlo.",
"gps_timeout": "Tiempo de espera del GPS agotado. Inténtalo de nuevo, a ser posible al aire libre, donde haya buena cobertura.",
"gps_position_unavailable": "No hay señal GPS disponible. Por favor, espera o introduce las coordenadas manualmente.",
"gps_unavailable": "Este navegador o dispositivo no es compatible con el GPS.",
"gps_failed": "No se ha podido determinar la posición GPS.",
"gps_fallback_no_location": "Error en el GPS. Introduce una ubicación en «Lugar / Puerto», el puerto de salida o de destino, o introduce las coordenadas manualmente.",
"gps_fallback_success": "Coordenadas de «{{location}}» determinadas a partir del nombre de la localidad (no mediante GPS).",
"gps_fallback_failed": "La búsqueda por GPS y por nombre de lugar ha fallado. Introduzca las coordenadas manualmente.",
"gps_quality_excellent": "Buena recepción GPS (±{{accuracy}} m)",
"gps_quality_good": "Buena recepción GPS (±{{accuracy}} m)",
"gps_quality_fair": "Recepción GPS moderada (±{{accuracy}} m): para mejorar la recepción, sal al aire libre.",
"gps_quality_poor": "Señal GPS débil (±{{accuracy}} m): probablemente haya pocos satélites. Inténtalo de nuevo al aire libre o comprueba la posición.",
"gps_quality_unknown": "Se ha obtenido la posición GPS (el dispositivo no indica la precisión).",
"gps_live_intro_title": "Ubicación del registro en tiempo real",
"gps_live_intro_body": "Para que la aplicación pueda registrar automáticamente tu ubicación y utilizar el botón de GPS, necesita acceder a tu ubicación.\n\nPulsa en «Permitir ubicación» y, en el siguiente cuadro de diálogo, confirma el permiso. Si lo prefieres, puedes introducir la ubicación manualmente en cualquier momento en la sección «Ubicación».",
"gps_live_intro_allow": "Permitir el acceso a la ubicación",
"gps_live_intro_later": "Más tarde",
"gps_enable_in_settings_hint": "El acceso a la ubicación está bloqueado. Puedes autorizarlo posteriormente en la configuración del navegador o del dispositivo (sitio web / aplicación → Ubicación).",
"weather_btn": "OpenWeatherMap Consultar el tiempo",
"weather_offline": "OpenWeatherMap requiere una conexión a Internet. Actualmente estás desconectado.",
"event_wind_pressure": "Presión atmosférica (hPa)",
"event_heel": "Inclinación (°)",
"event_sails": "Navegación a vela / Motor",
"motor_propulsion": "Recorrido en máquina",
"sails_picker_show_more": "Ver todas las velas",
"sails_picker_show_less": "Mostrar menos",
"motor_hours": "Horas de funcionamiento (total)",
"fuel_per_motor_hour": "Consumo por hora de funcionamiento",
"event_distance": "Distancia (m)",
"export_csv": "Descargar CSV",
"share_csv": "CSV compartir",
"export_pdf": "Descargar PDF",
"exporting_pdf": "Se está generando PDF...",
"ai_summary_title": "Resumen generado por IA",
"ai_summary_read_only": "Creado por el patrón — solo visible para la tripulación.",
"ai_summary_empty": "Aún no hay resumen disponible.",
"ai_summary_generate": "Generar resumen",
"ai_summary_regenerate": "Volvér a generar",
"ai_summary_generating": "Se está generando…",
"ai_summary_attempts_remaining": "Quedan {{remaining}} de {{max}} intentos",
"ai_summary_error": "El resumen generado por IA no se ha podido realizar. Inténtalo de nuevo más tarde.",
"ai_summary_error_no_key": "No hay ninguna clave API de OpenRouter configurada en el servidor.",
"ai_summary_error_rate_limited": "Se ha alcanzado el número máximo de generaciones para este día del viaje.",
"ai_summary_error_forbidden": "Solo el capitán puede generar resúmenes de IA.",
"ai_summary_offline": "El resumen generado por IA requiere una conexión a Internet. Actualmente no tienes conexión.",
"photos_title": "Archivos adjuntos con fotos",
"export_photos_zip": "Descargar fotos (ZIP)",
"exporting_photos_zip": "Creando archivo ZIP...",
"no_photos_to_download": "No hay fotos disponibles en este cuaderno de bitácora.",
"photo_caption_label": "Descripción de la foto / Etiqueta (opcional)",
"photo_caption_placeholder": "p. ej., izar las velas cerca de la entrada del puerto",
"photo_btn": "Hacer una foto / Subir una foto",
"photo_camera_btn": "Hacer una foto",
"photo_gallery_btn": "Seleccionar de la galería",
"photo_processing": "Se está procesando...",
"no_photos": "Aún no se han añadido fotos de este día del viaje.",
"photo_delete_confirm": "¿Estás seguro de que quieres borrar esta foto de forma definitiva?",
"confirm_yes": "Sí",
"confirm_no": "No",
"track_upload_title": "Ruta GPS (archivo)",
"track_upload_points": "Puntos",
"gps_tracking_btn_gpx": "Descargar el archivo de pista",
"gps_track_upload_help": "Arrastra aquí un archivo GPX, KML o GeoJSON, o haz clic para seleccionarlo",
"gps_track_upload_btn": "Subir un registro GPS",
"gps_track_delete": "Eliminar archivo de pista",
"gps_track_delete_confirm": "¿Estás seguro de que quieres eliminar este archivo de pista de forma definitiva?",
"track_distance": "Ruta GPS (sm)",
"track_speed_max": "Velocidad máxima (nudos)",
"track_speed_avg": "Ø Velocidad (nudos)",
"track_map_title": "Ruta GPS en OpenSeaMap",
"track_map_start": "Inicio",
"track_map_end": "Objetivo",
"track_map_speed_slow": "lentamente",
"track_map_speed_fast": "rápido",
"nmea_import_title": "Importar protocolo NMEA",
"nmea_import_intro": "Carga un archivo .nmea desde el registrador de a bordo. La aplicación te sugiere entradas del diario; tú decides qué se importan.",
"nmea_import_btn": "Importar NMEA",
"nmea_file_label": "Archivo NMEA",
"nmea_stats": "{{lines}} frases detectadas · Tipos: {{types}}",
"nmea_warn_no_position": "No se han encontrado registros de posición; los campos de ruta y GPS pueden dejarse en blanco.",
"nmea_warn_duplicate_file": "Este archivo NMEA ya se ha importado. Si se vuelve a importar el mismo archivo, se añadirán entradas duplicadas al diario.",
"nmea_mode_label": "Crear entradas en el diario",
"nmea_mode_interval": "Por intervalos de tiempo",
"nmea_mode_change": "En caso de cambios significativos",
"nmea_mode_both": "Ambas cosas (unir)",
"nmea_interval_label": "Intervalo (minutos)",
"nmea_import_track": "Importar un registro GPS desde NMEA",
"nmea_preview": "Vista previa",
"nmea_preview_hint": "{{count}} Entradas de diario sugeridas",
"nmea_select_all": "Seleccionar todo",
"nmea_select_none": "No seleccionar ninguna",
"nmea_source_interval": "Intervalo",
"nmea_source_change": "Evento",
"nmea_apply": "Incorporar al diario",
"nmea_back": "Atrás",
"nmea_cancel": "Cancelar",
"nmea_archive_question": "¿Archivar el registro sin procesar localmente? (Solo en este dispositivo, sin sincronizar.)",
"nmea_archive_keep": "Archivar",
"nmea_archive_discard": "Descartar",
"nmea_archive_stored": "NMEA archivado: {{name}}",
"nmea_archive_delete_confirm": "¿Desea borrar el registro NMEA archivado de este dispositivo?",
"nmea_error_no_samples": "No hay registros NMEA válidos en el archivo.",
"nmea_error_parse": "No se ha podido leer el archivo NMEA.",
"nmea_error_read": "No se ha podido leer el archivo.",
"nmea_error_no_file": "Selecciona primero un archivo NMEA.",
"nmea_error_no_selection": "Selecciona al menos una entrada del diario.",
"nmea_remark_interval": "Intervalo NMEA",
"nmea_remark_uncertain": "inseguro",
"nmea_remark_depth": "Profundidad {{depth}} m",
"nmea_change_course": "Cambio de rumbo de {{from}}° a {{to}}°",
"nmea_change_wind": "Viento {{from}}° → {{to}}°",
"nmea_change_wind_speed": "Viento {{from}} → {{to}} nudos",
"nmea_change_pressure": "Presión atmosférica {{from}} → {{to}} hPa",
"nmea_change_depth": "Profundidad {{from}} → {{to}} m",
"nmea_change_engine_start": "Motor encendido ({{rpm}} rpm)",
"nmea_change_engine_stop": "Apagar el motor",
"nmea_change_autopilot_on": "Activar el piloto automático",
"nmea_change_autopilot_off": "Desactivar el piloto automático",
"nmea_change_gps_lost": "Se ha perdido la señal del GPS",
"nmea_change_gps_regained": "Posición GPS recuperada",
"nmea_change_water_temp": "Temperatura del agua {{from}} → {{to}} °C",
"nmea_change_departure": "Salida / Inicio del trayecto",
"nmea_change_anchor": "Frenar / Parar",
"nmea_change_speed": "Velocidad {{from}} → {{to}} nudos",
"track_map_error": "No se ha podido cargar el mapa.",
"exporting": "Exportar...",
"share_unsupported": "En este dispositivo no es posible compartir. En su lugar, se ha descargado el archivo.",
"invite_crew": "Invitar a la tripulación",
"invite_link_copied": "¡Enlace de invitación copiado en el portapapeles!",
"invite_link_desc": "Comparte este enlace con los miembros de la tripulación para concederles derechos de escritura en este diario de a bordo.",
"collaborators_list": "Miembros / Equipo",
"revoke": "Eliminar",
"revoke_confirm": "¿Estás seguro de que quieres revocar el acceso a este miembro del equipo?",
"invite_role": "Papel",
"invite_expires": "El enlace es válido durante 48 horas"
},
"dashboard": {
"title": "Tus diarios de a bordo",
"subtitle": "Elige un diario de viaje o crea uno nuevo para gestionar tus viajes.",
"create_btn": "Crear un diario de a bordo",
"new_logbook_placeholder": "Nombre del diario de navegación o del yate",
"logout": "Cerrar sesión",
"logged_in_as": "Iniciado sesión como {{name}}",
"delete_confirm": "¿Estás seguro de que quieres eliminar este diario de forma definitiva? Se borrarán todos los datos locales y las copias del servidor.\n\nConsejo: si quieres conservar los datos más adelante, crea primero una copia de seguridad (.daagbok) en Ajustes → Copia de seguridad y restauración.",
"no_logbooks": "No se han encontrado diarios. ¡Crea tu primer diario para empezar!",
"loading": "Se están cargando los registros...",
"travel_days_count_zero": "Sin días de viaje",
"travel_days_count_one": "1 día de viaje",
"travel_days_count_other": "{{count}} días de viaje",
"status_synced": "Doblada",
"status_local": "Solo caché local",
"delete_btn": "Borrar el registro",
"section_owned": "Mis diarios de a bordo",
"section_shared": "Diarios compartidos",
"section_shared_hint": "Te han invitado como miembro de la tripulación. El perfil del patrón y la configuración pertenecen al propietario.",
"role_owner": "Mi propio diario de a bordo",
"role_owner_hint": "Eres el propietario y el patrón de este diario de navegación",
"role_crew": "Acceso para la tripulación",
"role_crew_hint": "Cuaderno de bitácora abierto a todos: puedes colaborar como tripulante y firmarlo",
"role_read": "Solo lectura",
"role_read_hint": "Cuaderno de bitácora compartido: solo lectura, sin posibilidad de editar",
"open_profile": "Abrir el perfil de {{name}}",
"open_logbook": "Abrir el diario de a bordo «{{title}}»",
"edit_title": "Cambiar el nombre del diario de a bordo",
"edit_placeholder": "Nuevo nombre del diario de a bordo",
"edit_success": "El diario de a bordo se ha renombrado correctamente",
"edit_btn": "Renombrar",
"filter_label": "Filtrar registros",
"filter_placeholder": "Nombre, año, fecha, tripulación o barco…",
"filter_clear": "Restablecer filtros",
"filter_results": "{{count}} resultados",
"filter_no_results": "No hay ningún diario de navegación que coincida con tu búsqueda. Prueba con otro nombre o otro año.",
"sort_label": "Ordenar",
"sort_by_label": "Ordenar por",
"sort_by_name": "Nombre",
"sort_by_date": "Fecha",
"sort_dir_label": "Orden",
"sort_asc": "En orden ascendente",
"sort_desc": "En orden descendente",
"sort_name_asc": "Nombres de la A a la Z",
"sort_name_desc": "Nombre de la Z a la A",
"sort_date_asc": "Los más antiguos primero",
"sort_date_desc": "Las más recientes primero"
},
"profile": {
"title": "Perfil de usuario",
"subtitle": "Cuenta, Passkey y estadísticas de {{name}}",
"back": "Volver al panel de control",
"loading": "Se está cargando el perfil…",
"load_error": "No se ha podido cargar el perfil.",
"copy_failed": "Error al copiar.",
"processing": "Se está procesando…",
"identity_title": "Identidad de la cuenta",
"username": "Nombre de usuario",
"user_id": "ID de usuario",
"copy_user_id": "Copiar el ID de usuario",
"account_since": "Cuenta desde",
"prf_status": "Derivación de claves Passkey (PRF)",
"prf_active": "Activo",
"prf_inactive": "Sin amueblar",
"passkeys_title": "Passkeys",
"passkeys_desc": "Registra un Passkey diferente en cada dispositivo. Así podrás iniciar sesión incluso si cambias de plataforma.",
"passkeys_empty": "No se han encontrado Passkey.",
"add_passkey_btn": "Añadir un nuevo Passkey",
"add_passkey_success": "Passkey añadido correctamente.",
"add_passkey_failed": "No se ha podido añadir Passkey.",
"remove_passkey_btn": "Eliminar Passkey",
"remove_passkey_last_title": "Último Passkey",
"remove_passkey_last_desc": "El único Passkey no se puede eliminar sin perder el acceso a tu cuenta. Para eliminar la cuenta por completo, utiliza el enlace que aparece al final de esta página.",
"remove_passkey_failed": "No se ha podido eliminar Passkey.",
"remove_passkey_confirm_title": "¿Eliminar Passkey?",
"remove_passkey_confirm_desc": "Este dispositivo ya no podrá volver a iniciar sesión con este Passkey.",
"remove_passkey_confirm_yes": "Eliminar",
"remove_passkey_confirm_no": "Cancelar",
"pin_title": "PIN local",
"pin_status": "Estado",
"pin_active": "Activo en este dispositivo",
"pin_inactive": "Sin amueblar",
"pin_confirm_label": "Confirmar el PIN",
"pin_confirm_placeholder": "Introduce el PIN de nuevo",
"pin_set_btn": "Configurar el PIN",
"pin_change_btn": "Cambiar el PIN",
"pin_remove_btn": "Eliminar el PIN",
"pin_saved": "PIN guardado.",
"pin_save_failed": "No se ha podido guardar el PIN.",
"pin_mismatch": "Los códigos PIN introducidos no coinciden.",
"pin_length_error": "El PIN debe tener al menos 4 caracteres.",
"pin_no_session": "La sesión ha caducado; vuelve a iniciar sesión.",
"remove_pin_confirm_title": "¿Eliminar el PIN?",
"remove_pin_confirm_desc": "Tienes que volver a iniciar sesión en este dispositivo con Passkey o con la clave de recuperación.",
"remove_pin_confirm_yes": "Eliminar el PIN",
"remove_pin_confirm_no": "Cancelar",
"security_title": "Lista de comprobación de seguridad",
"security_desc": "Resumen de los principales mecanismos de seguridad de tu cuenta.",
"security_passkeys_ok": "Se ha registrado al menos un Passkey",
"security_passkeys_missing": "No hay ningún Passkey registrado",
"security_prf_ok": "Derivación de claves PRF activa",
"security_prf_missing": "PRF no configurado",
"security_pin_ok": "PIN local en este dispositivo",
"security_pin_missing": "Sin PIN local",
"security_recovery_ok": "Clave de recuperación configurada",
"security_recovery_hint": "Las 12 palabras se mostraron durante el registro. Guárdalas fuera de línea y separadas del dispositivo. Puedes generar una nueva clave más abajo; la antigua dejará de ser válida.",
"recovery_rotate_btn": "Crear una nueva clave de recuperación",
"recovery_rotate_confirm_title": "¿Quieres crear una nueva clave de recuperación?",
"recovery_rotate_confirm_desc": "La clave de 12 palabras anterior deja de ser válida de inmediato. Asegúrate de guardar la nueva clave en un lugar seguro antes de continuar.",
"recovery_rotate_confirm_yes": "Generar una nueva clave",
"recovery_rotate_confirm_no": "Cancelar",
"recovery_rotate_new_warning": "IMPORTANTE: Anota estas 12 palabras y guárdalas en un lugar físico. La clave de recuperación anterior ya no es válida a partir de ahora.",
"recovery_rotate_failed": "No se ha podido crear la clave de recuperación.",
"recovery_rotate_no_session": "La sesión de cifrado ha caducado. Cierra la sesión y vuelve a iniciar sesión, y luego vuelve a intentarlo.",
"device_title": "Este aparato",
"device_desc": "Caché local, estado de sincronización e inicio de sesión rápido en este navegador.",
"device_sync_pending": "{{count}} entradas de sincronización pendientes",
"device_sync_ok": "Todos los cambios locales se sincronizan",
"device_remembered": "Cuenta guardada en este dispositivo para iniciar sesión rápidamente",
"device_not_remembered": "La cuenta no aparece en la lista de inicio de sesión rápido",
"device_forget_btn": "¿Has olvidado tu cuenta en este dispositivo?",
"device_forget_confirm_title": "¿Eliminar el inicio de sesión rápido?",
"device_forget_confirm_desc": "La cuenta desaparecerá de la lista de inicio de sesión rápido en este dispositivo. Tu sesión y tus registros locales se mantendrán.",
"device_forget_confirm_yes": "Eliminar",
"device_forget_confirm_no": "Cancelar",
"passkey_label": "Nombre para el nuevo Passkey (opcional)",
"passkey_label_placeholder": "p. ej., MacBook, iPhone",
"passkey_rename_btn": "Guardar nombre",
"passkey_rename_success": "Passkey: nombre guardado.",
"passkey_rename_failed": "No se ha podido guardar el nombre Passkey.",
"passkey_unnamed": "Anónimo Passkey",
"stats_title": "Estadísticas",
"stats_subtitle": "Acerca de todos tus registros en este dispositivo",
"stats_logbooks": "Diarios de a bordo",
"stats_account_since": "Cuenta desde",
"stats_shared_logbooks": "Diarios compartidos",
"appearance_title": "Aplicación y presentación",
"appearance_desc": "El diseño y la combinación de colores se aplican a toda la aplicación en este dispositivo.",
"theme_label": "Estilo de diseño de la aplicación",
"theme_auto": "Automático (detección del sistema operativo)",
"theme_ocean": "Océano (morfismo del vidrio)",
"theme_material": "Material (Android)",
"theme_cupertino": "Cupertino (iOS)",
"color_scheme_label": "Modo claro o oscuro",
"color_scheme_auto": "Automático (sistema)",
"color_scheme_light": "Claro",
"color_scheme_dark": "Oscuro",
"integrations_title": "Integraciones",
"owm_key": "OpenWeatherMap Clave de API",
"owm_help": "Opcional: clave API OpenWeatherMap propia. Si no se introduce ninguna, se utilizará la clave del servidor que figura en la configuración del operador.",
"ai_title": "Funciones de IA y protección de datos",
"ai_desc": "Autoriza el uso de la inteligencia artificial (integraciones locales o en la nube) para tus registros.",
"ai_help": "La activación permite resumir automáticamente los relatos de viaje y transcribir las notas de voz. Para su procesamiento, las grabaciones de voz y las entradas del diario de a bordo se transmiten de forma cifrada a OpenRouter. Los datos no se almacenan allí de forma permanente.\n\nDado que el funcionamiento de estos recursos en la nube genera costes, agradeceríamos cualquier apoyo voluntario a través del enlace de donaciones de Ko-fi que aparece en el pie de página, para poder seguir ofreciendo estas funciones de forma gratuita para todos de manera permanente.",
"ai_enable_label": "Activar la transcripción y los resúmenes diarios",
"ai_unauthorized_alert_title": "Funciones de IA no autorizadas",
"ai_unauthorized_alert_desc": "Para transcribir notas de voz o resumir relatos de viajes, debes aceptar la transmisión de datos a OpenRouter en tu perfil de usuario, en la sección «Funciones de IA y protección de datos».",
"prefs_save": "Guardar",
"prefs_saving": "Se está guardando…",
"prefs_saved": "Guardado",
"tour_title": "Recorrido por la aplicación",
"tour_desc": "Deja que te guíen de nuevo por las secciones más importantes de la aplicación.",
"tour_restart": "Reiniciar el recorrido",
"push_title": "Notificaciones push",
"push_desc": "Como propietario del diario de navegación, recibirás una notificación cuando los miembros de la tripulación invitados sincronicen los cambios. No se transmite ningún contenido en texto sin cifrar.",
"push_enable": "Notificar los cambios en la tripulación",
"push_active": "Las notificaciones push están activadas en este dispositivo.",
"push_unsupported": "Este navegador no admite notificaciones push.",
"push_denied_hint": "Las notificaciones están bloqueadas. Actívalas en la configuración del navegador o del dispositivo.",
"push_ios_install_hint": "En el iPhone/iPad: añade la app al pantalla de inicio (iOS 16.4 o posterior) para recibir notificaciones push.",
"push_error": "No se han podido activar las notificaciones push.",
"sections": {
"account": "Cuenta y configuración",
"fleet": "Flota y tripulación",
"security": "Seguridad y dispositivo",
"stats": "Estadísticas",
"danger": "Zona de peligro"
}
},
"vessel_pool": {
"title": "flota",
"section_title": "Tus naves",
"subtitle": "Gestiona aquí todas las naves para tus diarios de a bordo. Para cada diario de a bordo, selecciona la nave activa de esta lista.",
"loading": "Cargando la flota de barcos…",
"add_vessel": "Añadir barco",
"edit_vessel": "Editar barco",
"no_vessels": "Todavía no hay barcos en el grupo.",
"delete_confirm": "¿De verdad quieres eliminar este barco de la flota?",
"max_vessels": "Se ha alcanzado el número máximo de 20 buques en la flota."
},
"logbook_vessel": {
"title": "Embarcación para este diario de navegación",
"subtitle": "Elige el barco para este diario de navegación. Los días de viaje utilizarán los datos de navegación y de combustible del barco seleccionado.",
"active_vessel": "Embarcación para este diario de navegación",
"no_vessels_in_pool": "No hay ningún barco en la flota: primero hay que añadirlo en el perfil de usuario.",
"no_vessel": "No se ha seleccionado ningún barco",
"unnamed": "Sin título",
"save": "Guardar barco",
"saved": "Barco guardado en el diario de navegación.",
"selection_only_hint": "Puedes ver el barco elegido por el propietario (cuaderno de bitácora compartido).",
"manage_in_profile": "Gestionar barcos en el perfil de usuario"
},
"person_pool": {
"title": "Tripulación habitual y patrón",
"subtitle": "Crea aquí tu lista de personas: patrones y tripulación para todos los diarios de a bordo. De esta lista, selecciona la tripulación activa para cada diario de a bordo y cada día de viaje.",
"loading": "Se está cargando la lista de personas…",
"skippers_section": "Patrón habitual",
"crew_section": "Equipo habitual",
"add_skipper": "Añadir patrón",
"add_crew": "Añadir un miembro del equipo",
"edit_skipper": "Editar patrón",
"no_skippers": "Todavía no hay ningún patrón en la lista.",
"no_crew": "Todavía no hay miembros de la tripulación en la lista.",
"delete_confirm": "¿De verdad quieres eliminar a esta persona de la lista?"
},
"logbook_crew": {
"title": "Tripulación de este diario de a bordo",
"subtitle": "Elige el patrón y la tripulación para este diario de a bordo. Los nuevos días de viaje adoptarán esta selección de forma predeterminada.",
"loading": "Se está cargando la tripulación…",
"active_skipper": "Capitán de este diario de navegación",
"active_crew": "Tripulación de este diario de a bordo",
"no_skippers_in_pool": "No hay ningún patrón en la lista: primero hay que añadirlo al perfil de usuario.",
"no_crew_in_pool": "No hay ningún equipo en la piscina: primero hay que crearlo en el perfil de usuario.",
"no_skipper": "No se ha elegido ningún patrón",
"unnamed": "Sin título",
"save": "Guardar equipo",
"saved": "Tripulación guardada en el diario de a bordo.",
"selection_only_hint": "Puedes ver la tripulación designada por el propietario (cuaderno de bitácora compartido)."
},
"entry_crew": {
"title": "Tripulación de este día de viaje",
"subtitle": "Puede diferir del formato estándar del diario de viaje. Los días siguientes del viaje se copian del día anterior.",
"day_skipper": "Patrón de ese día",
"day_crew": "El equipo de ese día",
"no_skipper": "No se ha elegido ningún patrón",
"no_crew": "No se ha seleccionado ningún equipo"
},
"crew": {
"title": "Perfiles de los patrones y la tripulación",
"skipper_section": "Perfil del patrón",
"skipper_read_only_hint": "El perfil del patrón solo puede ser editado por el propietario del diario de navegación.",
"crew_section": "Lista de la tripulación",
"add_crew": "Añadir un miembro del equipo",
"edit_crew": "Editar perfil de un miembro del equipo",
"no_crew": "Aún no se ha añadido ningún miembro de la tripulación.",
"max_crew": "Se ha alcanzado el número máximo de 12 miembros de la tripulación en la reserva.",
"name": "Nombre",
"address": "Dirección",
"birthdate": "Cumpleaños",
"phone": "Número de teléfono",
"nationality": "Nacionalidad",
"passport": "Número de pasaporte / documento de identidad",
"bloodtype": "Grupo sanguíneo",
"allergies": "Alergias",
"diseases": "Antecedentes médicos / Enfermedades",
"save": "Guardar datos del patrón",
"save_member": "Guardar miembro",
"saved": "¡Perfil del patrón guardado correctamente!",
"loading": "Se están cargando los archivos de la tripulación...",
"delete_confirm": "¿Estás seguro de que quieres eliminar a este miembro del equipo?"
},
"deviation": {
"title": "Tabla de desviación de la brújula",
"subtitle": "Introduce la desviación de la brújula magnética (desv.) para los rumbos (MgK) de 000° a 360°, en intervalos de 10°.",
"heading": "MgK",
"deviation": "Distracción",
"save": "Guardar rejilla de calibración",
"saving": "Se está guardando...",
"saved": "¡Rejilla de calibración guardada correctamente!",
"loading": "Se está cargando la tabla de calibración..."
},
"settings": {
"title": "Configuración del diario de a bordo",
"subtitle": "Compartir, hacer copias de seguridad y colaborar en este diario de a bordo.",
"select_logbook_hint": "Selecciona un diario de a bordo para editar su configuración.",
"no_key": "No hay ninguna clave API OpenWeatherMap disponible. Introduce tu propia clave en el perfil de usuario o ponte en contacto con el administrador.",
"weather_success": "¡Datos meteorológicos recuperados correctamente!",
"weather_error": "No se han podido recuperar los datos meteorológicos. Comprueba la clave API y la conexión.",
"weather_unauthorized": "No se han podido recuperar los datos meteorológicos. La clave API no es válida o no está autorizada.",
"weather_not_found": "No se han podido recuperar los datos meteorológicos. No se ha encontrado la localidad o las coordenadas indicadas.",
"weather_bad_request": "No se han podido recuperar los datos meteorológicos. No se ha especificado ninguna localidad ni posición GPS.",
"weather_date_mismatch": "Solo se pueden consultar los datos meteorológicos correspondientes a la fecha de hoy ({{today}}). Esta entrada del diario de a bordo está fechada el {{date}}.",
"gps_error": "Indica una ubicación o busca las coordenadas GPS.",
"share_title": "Compartir el diario de a bordo (solo lectura)",
"share_desc": "Activa esta opción para crear un enlace público de solo lectura. Cualquier persona que tenga el enlace podrá ver tus viajes, los perfiles de tus yates y la tripulación. Las claves de cifrado nunca se envían al servidor (permanecen en la parte hash de la URL).",
"share_privacy_warning": "Recomendación: comparte este enlace solo en privado (por ejemplo, por correo electrónico o mensajería instantánea), no en las redes sociales.",
"share_enable": "Activar enlace público",
"share_copied": "¡Enlace copiado!",
"share_copy_btn": "Copiar enlace",
"share_btn": "Compartir enlace",
"link_qr_hint": "Código QR para escanear con el smartphone",
"link_qr_alt": "Código QR del enlace",
"danger_zone_title": "Zona de peligro",
"danger_zone_desc": "Al eliminar tu cuenta, se borrarán de forma irreversible todos tus Passkey, diarios de a bordo, datos de naves, perfiles de tripulación, entradas de viaje y claves E2E. Esta acción no se puede deshacer.",
"delete_account_btn": "Eliminar la cuenta de forma definitiva",
"delete_account_confirm_title": "¿Eliminar la cuenta?",
"delete_account_confirm_desc": "¿Estás completamente seguro de que quieres eliminar de forma definitiva tu cuenta y todos los registros asociados, así como los datos cifrados con E2E?",
"delete_account_confirm_yes": "Sí, eliminar la cuenta y todos los datos",
"delete_account_confirm_no": "Cancelar",
"delete_account_failed": "No se ha podido eliminar la cuenta. Inténtalo de nuevo.",
"delete_backup_hint": "Consejo: Antes de borrarlos, haz copias de seguridad de tus diarios de a bordo (.daagbok) en la configuración de cada uno de ellos.",
"deleting_account": "Se está eliminando la cuenta…",
"invite_push_prompt_title": "¿Quieres activar las notificaciones push?",
"invite_push_prompt_message": "En cuanto los miembros de la tripulación invitados sincronicen los cambios, podrás recibir una notificación push. El contenido del diario de a bordo no se envía en texto sin cifrar.",
"invite_push_prompt_ios_message": "En cuanto los miembros del equipo sincronicen los cambios, podrás recibir una notificación push. En el iPhone/iPad: añade la aplicación al pantalla de inicio (iOS 16.4+), y luego activa las notificaciones push en el perfil de usuario.",
"invite_push_prompt_enable": "Activar ahora",
"invite_push_prompt_later": "Más tarde",
"invite_push_prompt_success": "Las notificaciones push están activadas en este dispositivo.",
"backup_title": "Copias de seguridad y restauración",
"backup_desc": "Copia de seguridad completa y cifrada de este diario de a bordo (entradas, fotos, notas de voz, rutas GPS, tripulación, barco). Protegida con una contraseña de seguridad, para poder restaurarla en esta cuenta o en una nueva.",
"backup_export_title": "Hacer una copia de seguridad",
"backup_export_desc": "Descarga todos los datos locales en un archivo .daagbok comprimido. Guarda el archivo y la frase de contraseña por separado y en un lugar seguro.",
"backup_restore_title": "Restaurar copia de seguridad",
"backup_restore_desc": "Restaura una copia de seguridad en tu cuenta actual, incluso después de haber creado una nueva cuenta.",
"backup_passphrase": "Contraseña de copia de seguridad",
"backup_passphrase_placeholder": "Mínimo 8 caracteres",
"backup_passphrase_confirm": "Confirmar la frase de contraseña",
"backup_passphrase_short": "La frase de contraseña de copia de seguridad debe tener una longitud mínima de 8 caracteres.",
"backup_passphrase_mismatch": "Las frases de contraseña no coinciden.",
"backup_wrong_passphrase": "La frase de contraseña es incorrecta o la copia de seguridad está dañada.",
"backup_export_btn": "Descargar copia de seguridad",
"backup_exporting": "Se está creando una copia de seguridad…",
"backup_export_success": "Se ha creado una copia de seguridad ({{count}} días de viaje).",
"backup_file_label": "Archivo de copia de seguridad (.daagbok)",
"backup_export_progress": "Archivos comprimidos {{current}} / {{total}}…",
"backup_invalid_archive": "El archivo no es un archivo de copia de seguridad válido.",
"backup_version_unsupported": "Formato de copia de seguridad antiguo (v1). Utiliza una copia de seguridad .daagbok actual.",
"backup_import_size_confirm": "Esta copia de seguridad ocupa aproximadamente {{size}}. La restauración en el dispositivo puede tardar más tiempo y ocupar mucho espacio de almacenamiento. ¿Deseas continuar?",
"backup_stat_voice": "{{count}} Notas de voz",
"backup_stat_size": "Sin comprimir, aprox. {{size}}",
"backup_preview_btn": "Comprobar el contenido",
"backup_previewing": "Comprueba…",
"backup_restore_btn": "Restaurar",
"backup_restoring": "Se está restaurando…",
"backup_restore_success": "Se ha recuperado el diario de a bordo «{{title}}».",
"backup_restore_cancelled": "La recuperación se ha interrumpido.",
"backup_invalid_json": "El archivo no es un archivo JSON válido.",
"backup_invalid_format": "Formato de copia de seguridad desconocido u obsoleto.",
"backup_not_owner": "Solo el propietario del diario de navegación puede crear copias de seguridad.",
"backup_not_authenticated": "Inicia sesión para restaurar una copia de seguridad.",
"backup_id_conflict": "Ya existe un registro con este ID.",
"backup_overwrite_confirm": "Se sustituirá el registro existente con el mismo ID. ¿Desea continuar?",
"backup_new_id_confirm": "¿Importar la copia de seguridad como un nuevo diario con un nuevo ID?",
"backup_stat_entries": "{{count}} Días de viaje",
"backup_stat_photos": "{{count}} Fotos",
"backup_stat_crew": "{{count}} Entradas de la tripulación",
"backup_stat_tracks": "{{count}} Rutas GPS",
"backup_exported_at": "Exportado: {{date}}"
},
"disclaimer": {
"title": "Notas importantes",
"intro": "Por favor, lee las siguientes indicaciones antes de utilizar Kapteins Daagbok.",
"e2e_title": "Cifrado de extremo a extremo",
"e2e_body": "Los datos de tu diario de a bordo se cifran de extremo a extremo. Solo tú —o las personas que tengan tu clave— podéis leer el contenido. En el servidor solo se almacenan datos cifrados.",
"pwa_title": "Aplicación web progresiva (PWA)",
"pwa_body": "Kapteins Daagbok funciona como una aplicación web progresiva en tu navegador y se puede instalar en tu dispositivo, de forma similar a una aplicación nativa, pero sin necesidad de pasar por una tienda de aplicaciones.",
"storage_title": "Almacenamiento local y sincronización",
"storage_body": "Tus datos se almacenan temporalmente en tu dispositivo (IndexedDB). Cuando hay conexión a Internet, los cambios se sincronizan con el servidor. Si no hay conexión, puedes seguir trabajando; la sincronización se realizará más tarde.",
"free_title": "Gratis y sin publicidad",
"free_body": "Kapteins Daagbok es gratuito y no contiene publicidad.",
"liability_title": "Exención de responsabilidad",
"liability_body": "El uso de la aplicación es bajo su propia responsabilidad. No se asume ninguna responsabilidad por los daños que puedan derivarse del uso de la aplicación, incluyendo entradas erróneas o incompletas en el diario de a bordo, pérdida de datos o fallos técnicos.",
"warranty_title": "Sin garantía",
"warranty_body": "No se ofrece garantía alguna respecto al funcionamiento, la exactitud o la disponibilidad del servicio. El servicio puede interrumpirse, restringirse o suspenderse en cualquier momento.",
"copyright": "© 2026 KnorrLabs, Markus F.J. Busche",
"accept": "Aceptar y continuar",
"close": "Cerrar",
"button_title": "Avisos y exención de responsabilidad"
},
"feedback": {
"button_title": "Enviar comentarios",
"title": "Comentarios",
"intro": "Comparte errores, ideas o comentarios generales. Tu mensaje se enviará al equipo del proyecto a través de un canal de notificación seguro.",
"category_label": "Categoría",
"category_general": "General",
"category_bug": "Informar de un error",
"category_feature": "Sugerencia de función",
"category_translation": "Error de traducción",
"contact_label": "Correo electrónico (opcional)",
"contact_placeholder": "deine@email.beispiel",
"message_label": "Mensaje",
"message_placeholder": "Describe tus comentarios…",
"send": "Enviar",
"sending": "Se está enviando…",
"cancel": "Cancelar",
"success": "¡Muchas gracias! Se ha enviado tu comentario.",
"error_send": "No se ha podido enviar el comentario. Inténtalo de nuevo más tarde.",
"error_invalid_email": "Introduce una dirección de correo electrónico válida.",
"error_not_configured": "La función de comentarios no está disponible en este servidor.",
"error_rate_limited": "Se han enviado demasiados mensajes de comentarios en poco tiempo. Por favor, espera unos minutos.",
"error_spam": "No se ha podido enviar este mensaje. Por favor, reformúlalo."
},
"demo": {
"logbook_title": "Cuaderno de bitácora de la demostración en el mar Báltico",
"badge": "Demostración",
"public_banner": "Vista de demostración sin posibilidad de edición",
"cta_register": "Crear cuenta",
"back_to_login": "Inscripción"
},
"invitation": {
"error_invalid_key": "El enlace de invitación no es válido desde el punto de vista criptográfico (la clave es incorrecta).",
"error_missing_key": "El enlace de invitación no contiene ninguna clave de descifrado (#key=...). Utiliza el enlace completo que te ha facilitado el propietario.",
"error_expired": "Esta invitación ha caducado (válida durante 48 horas).",
"error_invalid_token": "El token de invitación no es válido.",
"error_load_failed": "No se han podido cargar los detalles de la invitación.",
"error_incomplete_session": "Sesión incompleta: vuelve a iniciar sesión (falta el ID de usuario).",
"error_accept_failed": "Error al registrarse.",
"error_login_failed": "Passkey: error al iniciar sesión.",
"error_username_missing": "No se ha podido identificar el nombre de usuario. Vuelve a iniciar sesión.",
"error_register_failed": "El registro ha fallado.",
"loading_joining": "Inscripción...",
"loading_checking": "Se está comprobando la invitación...",
"loading_unlocking": "Se está activando y sincronizando el diario de a bordo...",
"loading_retrieving_key": "Cargando clave de cifrado...",
"error_title": "Error en la invitación",
"back_to_start": "Volver al inicio",
"title": "Invitación al diario de a bordo",
"invited_by": "Invitación de",
"vessel_logbook": "Barco / Diario de navegación",
"signed_in_preparing": "Iniciado sesión como {{username}}. Se está preparando el acceso...",
"join_again": "Volver a unirse",
"login_or_register_hint": "Inicia sesión o crea una cuenta para unirte al diario de a bordo.",
"or_sign_up": "O REGÍSTRATE",
"register_crew_account": "Crear una nueva cuenta de equipo",
"username_label": "Nombre de usuario",
"create_passkey": "Crear Passkey",
"switch_language_en": "Español",
"switch_language_de": "Alemán"
},
"stats": {
"title": "Estadísticas",
"subtitle": "Autonomía, consumo y tipo de propulsión de un vistazo",
"scope_label": "Ámbito de evaluación",
"scope_logbook": "Este diario de a bordo",
"scope_account": "Todos los diarios de a bordo",
"loading": "Se están calculando las estadísticas…",
"no_data": "Aún no hay días de viaje disponibles.",
"total_distance": "Distancia total",
"travel_days": "Días de viaje",
"sail_distance": "A vela",
"motor_distance": "Recorrido en máquina",
"motor_hours_total": "Total de horas de funcionamiento",
"daily_motor_hours": "Horas de funcionamiento por día de viaje",
"avg_motor_hours": "Ø Horas de máquina por día de viaje",
"unknown_propulsion": "Desconocido",
"fuel_total": "Combustible total",
"water_total": "Agua en total",
"daily_etmal": "Etmal diurnos",
"daily_consumption": "Consumo diario",
"route_overview": "Ruta",
"route_map_title": "Resumen de rutas",
"propulsion_title": "Vela frente a motor",
"propulsion_hint": "La distribución se basa en los eventos del diario de navegación por día de viaje, no en segmentos de GPS.",
"avg_distance": "Ø por día de viaje",
"avg_fuel": "Ø Combustible",
"avg_water": "Ø Agua",
"fuel_per_nm": "Consumo de combustible por kilómetro",
"fuel_per_motor_hour": "Consumo de combustible por hora de funcionamiento",
"daily_fuel_per_motor_hour": "Consumo de combustible por hora de funcionamiento por día de viaje",
"fuel_legend": "Combustible",
"water_legend": "Agua",
"unit_nm": "sm",
"unit_h": "h",
"unit_l": "L",
"day_label": "Día {{day}}",
"account_logbooks": "Resumen de los registros",
"col_logbook": "Diario de a bordo",
"event_series_title": "Historial de eventos",
"event_series_hint": "Valores cronológicos del registro de eventos.",
"event_series_pressure": "presión atmosférica",
"event_series_wind": "Viento",
"event_series_motor": "Motor",
"event_series_empty": "No hay entradas."
},
"tour": {
"skip": "Saltar el recorrido",
"back": "Atrás",
"next": "Continuar",
"finish": "Listo",
"progress": "Paso {{current}} de {{total}}",
"steps": {
"welcome": {
"title": "¡Bienvenido a bordo!",
"body": "Hemos creado para ti un diario de navegación de demostración con tres días de travesía por la bahía de Kiel. Puedes borrar las entradas de ejemplo en cualquier momento si quieres empezar con tu propio diario de navegación. Este breve recorrido te muestra las funciones más importantes."
},
"welcome_public": {
"title": "¡Bienvenido a bordo!",
"body": "Explora nuestro diario de navegación de demostración con tres días de travesía por la bahía de Kiel, sin necesidad de crear una cuenta. El recorrido te muestra las entradas del diario, así como la selección de barco y tripulación para este diario. Más adelante podrás gestionar la flota y la tripulación habitual en tu perfil de usuario."
},
"nav_logs": {
"title": "Entradas del diario de a bordo",
"body": "Aquí puedes gestionar los datos de tu viaje: salida, destino, tiempo, niveles de combustible y rutas GPS."
},
"entry_list": {
"title": "Tus días de viaje",
"body": "Cada tarjeta representa un día de viaje. Toca una entrada para ver o editar los detalles."
},
"entry_open": {
"title": "Abrir el día del viaje",
"body": "Así es como se ve una entrada completada en el diario de a bordo: con eventos, niveles de combustible y mucho más."
},
"entry_track": {
"title": "Ruta GPS",
"body": "Sube archivos GPX o consulta en el mapa las rutas ya guardadas, incluyendo la distancia y la velocidad."
},
"nav_vessel": {
"title": "Barco para el diario de navegación",
"body": "Elige de tu flota la nave para este diario de a bordo. Puedes gestionar las naves en tu perfil de usuario, en la sección «Flota y tripulación»."
},
"profile_vessel_pool": {
"title": "flota",
"body": "En el perfil de usuario puedes añadir todas tus embarcaciones: yates de alquiler, tu propio barco, etc. A continuación, selecciona la embarcación correspondiente para cada diario de navegación."
},
"profile_crew_pool": {
"title": "Tripulación habitual y patrón",
"body": "En el perfil de usuario puedes gestionar tu lista de personas: varios patrones (por ejemplo, para alquileres) y tripulantes para todos los cuadernos de bitácora."
},
"nav_logbook_crew": {
"title": "Tripulación por diario de navegación",
"body": "Elige de la lista quiénes figuran como patrón y tripulación en este diario de a bordo. Los días de viaje adoptan esta selección de forma predeterminada."
},
"nav_stats": {
"title": "Panel de estadísticas",
"body": "Aquí puedes ver las distancias recorridas, el consumo, los mapas de ruta y la distribución de la propulsión, todo ello calculado automáticamente a partir de las entradas de tu diario de a bordo."
},
"nav_feedback": {
"title": "Enviar comentarios",
"body": "A través de este formulario puedes enviar errores, ideas o comentarios generales directamente al equipo del proyecto; también puedes hacerlo en cualquier momento después del recorrido haciendo clic en el icono de la esquina superior derecha."
},
"nav_profile": {
"title": "Tu perfil de usuario",
"body": "A través del botón «Skipper» de la parte superior puedes acceder a tu perfil personal, independientemente del diario de navegación actual."
},
"profile_preferences": {
"title": "Cuenta y presentación",
"body": "Aquí puedes gestionar la identidad de tu cuenta, el tema y el modo claro/oscuro. Puedes volver a iniciar el recorrido por la aplicación en cualquier momento. Encontrarás los ajustes de Passkey y de seguridad más abajo, en el perfil."
},
"finish": {
"title": "¡De acuerdo!",
"body": "Enseguida accederás al panel de estadísticas. Puedes volver a iniciar el recorrido en cualquier momento desde tu perfil de usuario. ¡Buen viaje!"
}
}
},
"seo": {
"title": "Kapteins Daagbok Diario de navegación digital gratuito (sin publicidad)",
"description": "Diario de navegación digital gratuito y sin publicidad, con cifrado de extremo a extremo e inicio de sesión mediante Passkey. Documenta de forma segura los días de viaje, los rastros GPS, la tripulación y los datos del barco, incluso sin conexión como PWA.",
"keywords": "Diario de a bordo de yates, diario de navegación, diario de a bordo, navegación a vela, Passkey, cifrado E2E, ruta GPS, diario de navegación marítima, gratuito, sin publicidad, gratis, sin anuncios",
"ogImageAlt": "Kapteins Daagbok Logotipo"
}
}
}