feat(i18n): add Spanish (Mexico, es-MX) translation

This commit is contained in:
iamdoubz committed 2026-07-12 15:47:07 -05:00
1 parent 51a03b0ec4
commit b8c58d6ab8
1 file changed
+531
+531
View File
@@ -0,0 +1,531 @@
{
"nav.recording": "Grabación",
"nav.hardware": "Hardware",
"nav.storage": "Almacenamiento",
"nav.calendar": "Calendario",
"nav.sync": "Sincronización",
"nav.ai": "IA",
"nav.mcp": "Servidor MCP",
"nav.privacy": "Privacidad",
"nav.about": "Acerca de",
"nav.language": "Idioma",
"settings.language.title": "Idioma",
"settings.language.display": "Idioma de la interfaz",
"settings.language.display_hint": "El idioma de la interfaz de la aplicación. Agregar un idioma es tan sencillo como colocar un solo archivo de traducción.",
"settings.transcription.title": "Idioma de transcripción",
"settings.transcription.label": "Idioma",
"settings.transcription.auto": "Detección automática",
"settings.transcription.applies_hint": "Se aplica a la próxima grabación. El idioma realmente utilizado se muestra después en cada reunión.",
"settings.transcription.english_only": "Solo inglés",
"settings.transcription.model_english_only": "«{model}» es solo en inglés.",
"settings.transcription.no_model": "Ningún modelo seleccionado.",
"settings.transcription.switch_multilingual": "Cambia a un modelo multilingüe arriba para elegir un idioma.",
"settings.hardware.title": "Hardware",
"settings.hardware.active_backend": "Backend activo",
"settings.hardware.model_meta": "· modelo {size}",
"settings.hardware.preferred_backend": "Backend preferido",
"settings.hardware.auto_backend": "Automático (el mejor disponible)",
"settings.hardware.not_available": "no disponible",
"settings.hardware.fallback_hint": "Recurre automáticamente (NPU → NVIDIA → AMD → Intel → CPU) si el backend elegido no se carga.",
"settings.hardware.audio_devices": "Dispositivos de audio",
"settings.hardware.recording_device": "Dispositivo de grabación",
"settings.hardware.default_system_audio": "Audio del sistema predeterminado",
"settings.hardware.recording_device_hint": "WhispAssist graba lo que reproduce este dispositivo (loopback) — el otro lado de la llamada. Elige una salida específica si no quieres que siga el valor predeterminado del sistema de Windows.",
"settings.hardware.microphone": "Micrófono",
"settings.hardware.mic_off": "Desactivado — no capturar mi micrófono",
"settings.hardware.default_mic": "Micrófono predeterminado",
"settings.hardware.mic_hint": "Agrega tu propia voz a la transcripción en vivo para que se capturen ambos lados de la reunión. Permanece en tu dispositivo — no se sube nada. Elige «Desactivado» para transcribir solo el audio del sistema de arriba.",
"settings.hardware.npu_detected": "Acelerador NPU detectado",
"settings.hardware.ready": "Listo",
"settings.hardware.downloading": "Descargando…",
"settings.hardware.package_needed": "Se necesita un paquete",
"settings.hardware.npu_hint": "Tu NPU necesita un paquete de aceleración único (modelo Whisper ONNX{extra}). Se descarga en segundo plano; también puedes iniciarlo ahora.",
"settings.hardware.plus_openvino": " + entorno de ejecución OpenVINO",
"settings.hardware.download_npu": "Descargar paquete NPU",
"settings.hardware.dml_title": "Aceleración de GPU (DirectML)",
"settings.hardware.dml_hint": "Tu GPU puede acelerarse sin Vulkan mediante DirectML — un paquete único (modelo Whisper ONNX{extra}).",
"settings.hardware.plus_directml": " + entorno de ejecución DirectML",
"settings.hardware.download_dml": "Descargar paquete DirectML",
"settings.hardware.detection_unavailable": "Detección de hardware no disponible.",
"settings.hardware.low_overhead": "Preajuste de baja carga",
"settings.hardware.low_overhead_note": "CPU + modelo más pequeño, para uso con batería/en segundo plano",
"settings.hardware.models": "Modelos",
"settings.hardware.downloading_model": "Descargando {name}",
"settings.hardware.active_badge": "Activo",
"settings.hardware.installed": "Instalado",
"settings.hardware.use": "Usar",
"settings.hardware.remove": "Quitar",
"settings.hardware.cant_remove_active": "No se puede quitar el modelo activo",
"settings.hardware.download": "Descargar",
"settings.hardware.diarization": "Diarización de hablantes",
"settings.hardware.diarization_hint": "Instala ambos modelos para que las grabaciones terminadas se separen por hablante (Hablante 1, Hablante 2, …) en lugar de una sola transcripción continua. Se ejecuta totalmente sin conexión, una vez por reunión al detenerse. Sin ellos, cada línea se atribuye a un solo hablante.",
"settings.storage.title": "Almacenamiento",
"settings.storage.location_label": "Ubicación",
"settings.storage.location_hint": "Cambiar la ubicación de almacenamiento aún no es compatible — aquí es donde residen actualmente las reuniones, los modelos y la base de datos.",
"settings.storage.retention_title": "Retención",
"settings.storage.retention_hint": "Elimina automáticamente las reuniones más antiguas que superen un límite. Se comprueba una vez al inicio; vacío significa sin límite. Nunca afecta a una reunión que se está grabando.",
"settings.storage.max_age": "Antigüedad máxima (días)",
"settings.storage.max_size": "Tamaño máximo (GB)",
"settings.storage.no_limit": "sin límite",
"settings.storage.export_import_title": "Exportar e importar",
"settings.storage.export_hint_1": "Mueve grabaciones entre computadoras como carpetas de paquete portátiles (audio, transcripción, notas, resumen y un",
"settings.storage.export_hint_2": "manifiesto). Exporta a cualquier carpeta — una unidad sincronizada, una memoria USB o el punto de montaje local de un destino de sincronización — y luego impórtalo en la otra computadora. Las reuniones importadas obtienen un id nuevo, por lo que reimportar nunca sobrescribe nada.",
"settings.storage.export_dialog_title": "Exportar todas las reuniones a…",
"settings.storage.import_dialog_title": "Importar un paquete (o una carpeta de paquetes)…",
"settings.storage.exporting": "Exportando…",
"settings.storage.export_all": "Exportar todas las reuniones…",
"settings.storage.importing": "Importando…",
"settings.storage.import_all": "Importar reuniones…",
"settings.storage.exported_one": "{n} reunión exportada.",
"settings.storage.exported_many": "{n} reuniones exportadas.",
"settings.storage.imported_one": "{n} reunión importada.",
"settings.storage.imported_many": "{n} reuniones importadas.",
"settings.calendar.title": "Calendario y Outlook .pst",
"settings.calendar.intro_1": "Importa eventos y asistentes desde un respaldo local de Outlook",
"settings.calendar.intro_2": "— solo lectura, no se escribe nada de vuelta en el archivo. Nada sale de este dispositivo.",
"settings.calendar.pst_file": "Archivo .pst",
"settings.calendar.no_file": "Ningún archivo seleccionado",
"settings.calendar.browse": "Examinar…",
"settings.calendar.password": "Contraseña",
"settings.calendar.password_note": "raramente necesaria",
"settings.calendar.optional": "opcional",
"settings.calendar.import_range": "Rango de importación",
"settings.calendar.range_30": "Últimos 30 días",
"settings.calendar.range_90": "Últimos 90 días",
"settings.calendar.range_180": "Últimos 6 meses",
"settings.calendar.range_365": "Último año",
"settings.calendar.range_all": "Todo el tiempo",
"settings.calendar.range_hint": "Un buzón de larga duración puede contener años de entradas periódicas/festivas — reducir el rango mantiene el calendario importado en lo que realmente es relevante. Se aplica tanto a este botón de importar como a la reimportación automática al iniciar.",
"settings.calendar.importing": "Importando…",
"settings.calendar.import": "Importar",
"settings.calendar.import_progress": "{processed}/{total} eventos",
"settings.calendar.auto_reimport": "Reimportar este archivo automáticamente al iniciar",
"settings.calendar.auto_reimport_hint": "Se ejecuta una vez al inicio, no con un temporizador — la reimportación se puede repetir sin problemas (los eventos existentes se cotejan y actualizan, no se duplican).",
"settings.calendar.import_failed": "Error de importación: {error} — el archivo en sí no se toca; comprueba la ruta e inténtalo de nuevo.",
"settings.calendar.cleanup_title": "Limpiar",
"settings.calendar.cleanup_hint": "Los eventos ya vinculados a una reunión grabada se conservan siempre, sin importar la opción elegida abajo.",
"settings.calendar.cleanup_30": "Más antiguos de 30 días",
"settings.calendar.cleanup_90": "Más antiguos de 90 días",
"settings.calendar.cleanup_180": "Más antiguos de 6 meses",
"settings.calendar.cleanup_365": "Más antiguos de 1 año",
"settings.calendar.cleanup_all": "Eliminar todo",
"settings.calendar.cleaning": "Limpiando…",
"settings.calendar.cleanup_btn": "Limpiar calendario",
"settings.calendar.cleanup_result": "{deleted}{extra} eliminados.",
"settings.calendar.cleanup_kept": ", {n} conservados (vinculados a una reunión)",
"settings.calendar.cleanup_failed": "Error al limpiar: {error}",
"settings.calendar.imported_events": "Eventos importados",
"settings.calendar.no_events": "Aún no se han importado eventos.",
"settings.calendar.search_title": "Buscar título",
"settings.calendar.search_placeholder": "Nombre de la reunión…",
"settings.calendar.date_label": "Fecha",
"settings.calendar.events_count": "{shown} de {total} eventos",
"settings.calendar.untitled": "(sin título)",
"settings.dialog_title": "Configuración",
"settings.close": "Cerrar",
"settings.close_title": "Cerrar (Esc)",
"settings.sync.stub": "Modo de vista previa — el backend de sincronización aún no está implementado (Fase 9). Los cambios se mantienen solo en la interfaz.",
"settings.sync.title": "Sincronización y subida",
"settings.sync.enable_label": "Habilitar la subida de artefactos de reuniones a los destinos configurados",
"settings.sync.enable_hint": "Desactivado por defecto. No se sube nada a menos que esto esté activado y haya un destino habilitado. Los destinos autoalojados mantienen los datos en tu propio servidor; las nubes de terceros están claramente etiquetadas.",
"settings.sync.targets_title": "Destinos",
"settings.sync.no_targets": "Aún no hay destinos. Agrega uno abajo.",
"settings.sync.third_party": "terceros",
"settings.sync.your_server": "tu servidor",
"settings.sync.edit": "Editar",
"settings.sync.remove": "Quitar",
"settings.sync.edit_target": "Editar destino",
"settings.sync.add_target": "Agregar un destino",
"settings.sync.webdav_hint": "WebDAV cubre Nextcloud, ownCloud, Cloudreve, Seafile y Synology. (Seafile: habilita SeafDAV en el servidor.)",
"settings.sync.name": "Nombre",
"settings.sync.name_placeholder": "Nextcloud de casa",
"settings.sync.provider": "Proveedor",
"settings.sync.server_url": "URL del servidor",
"settings.sync.server_url_note_1": "Solo la URL de tu servidor — WhispAssist agrega",
"settings.sync.server_url_note_2": "automáticamente.",
"settings.sync.remote_folder": "Carpeta remota",
"settings.sync.username": "Nombre de usuario",
"settings.sync.app_password": "Contraseña de aplicación",
"settings.sync.pw_keep": "déjalo en blanco para mantener la contraseña actual",
"settings.sync.pw_store": "almacenada en el administrador de credenciales del sistema",
"settings.sync.upload_legend": "Subir",
"settings.sync.artifact_transcript": "transcripción",
"settings.sync.artifact_notes": "notas",
"settings.sync.artifact_summary": "resumen",
"settings.sync.artifact_recording": "grabación (.wav, si se conserva)",
"settings.sync.allow_plaintext": "Permitir http en texto plano para una dirección LAN (no recomendado)",
"settings.sync.encrypt_before": "Cifrar antes de subir (el destino almacena solo texto cifrado)",
"settings.sync.requires_vault": "— requiere una bóveda desbloqueada",
"settings.sync.test_connection": "Probar conexión",
"settings.sync.save_changes": "Guardar cambios",
"settings.sync.add_target_btn": "Agregar destino",
"settings.sync.cancel": "Cancelar",
"settings.sync.third_party_banner": "{kind} es una nube de terceros — subir envía tus datos fuera de tu dispositivo a {kind}.",
"settings.sync.link_account": "Vincular cuenta de {kind}…",
"settings.sync.oauth_hint": "Abre un inicio de sesión OAuth (redirección loopback); el token se almacena en el administrador de credenciales del sistema.",
"settings.sync.footnote": "Las credenciales nunca se escriben en la configuración ni en la base de datos — solo en el administrador de credenciales del sistema. TLS es obligatorio para destinos que no sean de la LAN.",
"settings.ai.title": "Proveedor de resúmenes de IA",
"settings.ai.intro_1": "Los resúmenes se ejecutan en un LLM local por defecto. Apunta esto a Ollama en esta computadora o en otra máquina de tu LAN (p. ej.",
"settings.ai.intro_2": "— ambos cuentan como local, así que nada sale de tu red. Los proveedores alojados (Anthropic) son opcionales, están desactivados por defecto y envían la transcripción a un tercero en cuanto activas uno.",
"settings.ai.provider": "Proveedor",
"settings.ai.off": "Desactivado",
"settings.ai.provider_ollama": "Ollama (local / LAN)",
"settings.ai.provider_custom": "Personalizado (compatible con OpenAI)",
"settings.ai.provider_anthropic": "Anthropic (Claude) — alojado, sale de este dispositivo",
"settings.ai.endpoint": "Endpoint",
"settings.ai.model": "Modelo",
"settings.ai.api_key": "Clave API",
"settings.ai.api_key_set_placeholder": "•••••••••••••••• (ya configurada — déjalo en blanco para mantenerla)",
"settings.ai.show_api_key": "Mostrar clave API",
"settings.ai.hide_api_key": "Ocultar clave API",
"settings.ai.anthropic_banner": "Anthropic es un servicio alojado de terceros — la transcripción de esta reunión sale de tu dispositivo cuando generas un resumen.",
"settings.ai.endpoint_banner": "Este endpoint no está en tu máquina ni en tu LAN — tu transcripción saldría de tu red.",
"settings.ai.saving": "Guardando…",
"settings.ai.save": "Guardar",
"settings.ai.test_connection": "Probar conexión",
"settings.ai.this_hosted_provider": "este proveedor alojado",
"settings.ai.reachable": "Accesible",
"settings.ai.unreachable": "Inaccesible",
"settings.ai.model_count_one": "· {n} modelo",
"settings.ai.model_count_many": "· {n} modelos",
"settings.ai.on_lan": "· en tu máquina / LAN",
"settings.ai.leaves_network": "· sale de tu red",
"settings.ai.advanced_title": "Configuración avanzada de Ollama",
"settings.ai.changed": "{n} modificados",
"settings.ai.reset_all": "Restablecer todo a los valores predeterminados",
"settings.ai.system_prompt": "Prompt del sistema",
"settings.ai.system_prompt_placeholder": "p. ej. Eres un resumidor de reuniones conciso.",
"settings.ai.system_prompt_hint": "Se agrega antes del formato de salida requerido por WhispAssist, para que tus instrucciones no puedan romper el análisis del resumen/tareas.",
"settings.ai.think": "Razonar",
"settings.ai.think_help": "Esfuerzo de razonamiento (solo modelos de razonamiento).",
"settings.ai.keep_alive": "Mantener activo",
"settings.ai.keep_alive_help": "Cuánto tiempo permanece el modelo en la RAM. p. ej. 5m, 1h, 0 (descargar), -1 (siempre).",
"settings.ai.runtime_hardware": "Ejecución y hardware",
"settings.ai.rarely_needed": "— raramente necesario",
"settings.ai.save_advanced": "Guardar avanzado",
"settings.ai.saved": "Guardado",
"settings.ai.turn_off": "Desactivar",
"settings.ai.default_value": "Predeterminado {value}.",
"settings.ai.reset_default": "Restablecer al valor predeterminado",
"settings.ai.reset_field": "Restablecer {name}",
"settings.mcp.title": "Servidor MCP",
"settings.mcp.banner_1": "Esto permite que tu propio agente de programación (Claude Code, Codex, Copilot, OpenCode, …) obtenga el contexto de la reunión en tu máquina local. Una vez conectado,",
"settings.mcp.banner_agent": "ese agente",
"settings.mcp.banner_2": "puede reenviar lo que lee a la nube de su propio proveedor de modelos — fuera del control de WhispAssist. WhispAssist en sí nunca envía estos datos a ningún lado; el servidor solo escucha en este dispositivo (",
"settings.mcp.banner_3": ") y cada lectura se registra abajo.",
"settings.mcp.enable": "Habilitar el servidor MCP",
"settings.mcp.enable_hint": "Desactivado por defecto. Solo loopback, protegido con token — nada es accesible desde la red.",
"settings.mcp.transport": "Transporte",
"settings.mcp.transport_http": "HTTP en streaming",
"settings.mcp.transport_stdio": "stdio (el agente genera un proceso)",
"settings.mcp.port": "Puerto",
"settings.mcp.transport_change_hint": "Para cambiar el transporte/puerto, apaga primero el servidor y vuelve a encenderlo.",
"settings.mcp.scope_title": "Alcance",
"settings.mcp.expose": "Exponer",
"settings.mcp.scope_none": "Ninguno — no se comparte nada",
"settings.mcp.scope_selected": "Seleccionados — solo los resúmenes de funciones que hayas marcado como compartidos",
"settings.mcp.scope_all": "Todo — reuniones, transcripciones, tareas y resúmenes compartidos",
"settings.mcp.expose_recordings": "Permitir también reuniones con una grabación guardada (desactivado por defecto — la transcripción de una reunión grabada se retiene incluso en el alcance «Todo» hasta que esto esté activado)",
"settings.mcp.token_title": "Nuevo token de autenticación — se muestra una vez, cópialo ahora",
"settings.mcp.token_hint": "Esto no se volverá a mostrar. Se almacena en el administrador de credenciales del sistema; si lo pierdes, apaga el servidor y vuelve a encenderlo para generar uno nuevo.",
"settings.mcp.copied": "Copiado",
"settings.mcp.copy": "Copiar",
"settings.mcp.endpoint": "Endpoint",
"settings.mcp.endpoint_hint": "Apunta la configuración del cliente MCP de tu agente a {kind}, con el token de arriba como credencial bearer.",
"settings.mcp.kind_command": "comando",
"settings.mcp.kind_url": "URL",
"settings.mcp.access_log": "Registro de accesos",
"settings.mcp.access_log_hint": "Cada lectura de herramienta que hace un agente, permitida o denegada (FR-MCP-5).",
"settings.mcp.no_reads": "Ningún agente ha leído nada aún.",
"settings.mcp.log_meeting": "reunión {id}",
"settings.mcp.refresh": "Actualizar",
"settings.privacy.title": "Privacidad",
"settings.privacy.intro": "Lo que WhispAssist puede enviar realmente fuera de este dispositivo ahora mismo. Con todo desactivado (lo predeterminado), nada sale del dispositivo.",
"settings.privacy.llm_endpoint": "Endpoint del LLM",
"settings.privacy.off": "desactivado",
"settings.privacy.local_only": "solo local",
"settings.privacy.leaves_device": "sale de este dispositivo",
"settings.privacy.sync_label": "Sincronización",
"settings.privacy.enabled": "habilitada",
"settings.privacy.mcp_label": "Servidor MCP",
"settings.privacy.mcp_on": "activado · {scope}",
"settings.privacy.mcp_loopback_note": "Entrante solo en loopback — no agrega nada a la lista de salida de arriba. Un agente conectado aún puede reenviar lo que lee a su propio proveedor de modelos; consulta la pestaña del servidor MCP.",
"settings.privacy.egress_title": "Lista de permitidos de salida",
"settings.privacy.no_egress": "No hay hosts en la lista de permitidos — WA no realiza ninguna salida de contenido.",
"settings.privacy.sync_targets_title": "Destinos de sincronización",
"settings.privacy.third_party": "terceros",
"settings.privacy.your_server": "tu servidor",
"settings.privacy.tls": "TLS",
"settings.privacy.no_tls": "sin TLS",
"settings.privacy.refresh": "Actualizar",
"settings.privacy.unavailable": "Autocomprobación de privacidad no disponible.",
"settings.privacy.vault_title": "Bóveda de cifrado",
"settings.privacy.vault_intro": "Cifra notas, transcripciones y resúmenes en reposo con una contraseña. (Los archivos de audio aún no se cifran.)",
"settings.privacy.vault_password": "Contraseña de la bóveda",
"settings.privacy.enable_vault": "Habilitar bóveda",
"settings.privacy.vault_pw_hint": "Usa al menos 8 caracteres. Si la olvidas, el contenido cifrado no se podrá recuperar.",
"settings.privacy.vault_locked_1": "La bóveda está ",
"settings.privacy.locked_word": "bloqueada",
"settings.privacy.vault_locked_2": ". Desbloquéala para leer las reuniones cifradas.",
"settings.privacy.password": "Contraseña",
"settings.privacy.unlock": "Desbloquear",
"settings.privacy.vault_unlocked_1": "La bóveda está ",
"settings.privacy.unlocked_word": "desbloqueada",
"settings.privacy.vault_unlocked_2": ". Las nuevas notas, transcripciones y resúmenes se cifran en reposo.",
"settings.privacy.lock_now": "Bloquear ahora",
"settings.privacy.change_password": "Cambiar contraseña",
"settings.privacy.current_password": "Contraseña actual",
"settings.privacy.new_password": "Nueva contraseña",
"settings.about.title": "Acerca de",
"settings.about.tagline": "Un asistente de reuniones totalmente local, de código abierto y nativo de Windows.",
"settings.about.build_commit": "Commit de compilación",
"consent.heading": "Antes de grabar",
"consent.body": "Grabar conversaciones sin el consentimiento de los participantes puede ser ilegal en tu región. Consulta las leyes locales sobre grabación. Esto es una advertencia, no asesoría legal.",
"consent.accept": "Entiendo — habilitar la grabación",
"consent.cancel": "Cancelar",
"hosted.heading": "Antes de usar {provider}",
"hosted.body_1": "Generar con",
"hosted.body_2": "envía la transcripción de esta reunión a sus servidores — sale de este dispositivo y queda sujeta a su política de privacidad. WhispAssist no tiene control sobre el tratamiento de los datos una vez que salen de tu dispositivo. Esto está desactivado por defecto; lo estás eligiendo ahora.",
"hosted.accept": "Entiendo — continuar",
"hosted.cancel": "Cancelar",
"theme.group": "Tema",
"theme.system": "Según el sistema",
"theme.light": "Claro",
"theme.dark": "Oscuro",
"import.dialog_label": "Agregar una reunión desde un archivo o URL",
"import.title": "Agregar una reunión",
"import.close": "Cerrar",
"import.close_title": "Cerrar (Esc)",
"import.body": "Importa una grabación existente — un archivo de audio/video local o un enlace (YouTube, una página de streaming o una URL de medios directa). Se transcribe y se diariza igual que una grabación en vivo.",
"import.file_or_url": "Archivo o URL",
"import.source_placeholder": "Pega una URL o busca un archivo…",
"import.choose_file": "Elegir un archivo local",
"import.browse": "Examinar…",
"import.title_label": "Título",
"import.optional": "opcional",
"import.title_placeholder": "Por defecto, el nombre del archivo",
"import.filter_av": "Audio / video",
"import.requires_1": "Requiere",
"import.requires_2": "instalado y en tu PATH (además de",
"import.requires_3": "para las URL). WhispAssist no los incluye.",
"import.importing": "Importando… esto puede tardar un rato",
"import.import": "Importar",
"import.cancel": "Cancelar",
"tagchip.filter": "Filtrar reuniones etiquetadas con «{tag}»",
"tagchip.remove": "Quitar etiqueta {tag}",
"levelmeter.system_mic": "Nivel de entrada del sistema y del micrófono",
"levelmeter.system": "Nivel de entrada del sistema",
"app.tagline": "local · privado",
"app.note_template": "Plantilla de notas",
"app.no_template": "Sin plantilla",
"app.add_meeting": "Agregar reunión",
"app.add_meeting_title": "Agregar una reunión desde un archivo o URL",
"app.record": "Grabar",
"app.record_title": "Iniciar grabación (Ctrl+Mayús+R)",
"app.stop": "Detener",
"app.stop_title": "Detener grabación (Ctrl+Mayús+R)",
"app.cancel": "Cancelar",
"app.cancel_title": "Descartar esta grabación y eliminarla",
"app.recording": "Grabando…",
"app.backend_title": "Backend de transcripción activo",
"app.retention_title": "Guardar el audio como .wav para esta reunión",
"app.saving": "guardando",
"app.not_saved": "no guardado",
"app.reconnecting": "reconectando el dispositivo de audio…",
"app.settings": "Configuración",
"app.settings_title": "Configuración (Ctrl+,)",
"app.discard_confirm": "¿Descartar esta grabación? Se eliminarán su audio y su transcripción.",
"app.announce_started": "Grabación iniciada",
"app.announce_paused": "Grabación en pausa",
"app.announce_stopped": "Grabación detenida",
"app.consent_dialog": "Consentimiento de grabación",
"app.vault_dialog": "Desbloquear la bóveda de cifrado",
"app.vault_title": "Desbloquear la bóveda de cifrado",
"app.vault_desc": "Tus reuniones están cifradas en reposo. Ingresa tu contraseña para leerlas.",
"app.vault_password": "Contraseña de la bóveda",
"app.vault_incorrect": "Contraseña incorrecta",
"app.unlock": "Desbloquear",
"app.continue_locked": "Continuar bloqueado",
"app.show_meetings": "Mostrar lista de reuniones",
"app.hide_meetings": "Ocultar lista de reuniones",
"app.show_summary": "Mostrar panel de resumen",
"app.hide_summary": "Ocultar panel de resumen",
"app.resize_meetings": "Redimensionar lista de reuniones",
"app.resize_summary": "Redimensionar panel de resumen",
"meetings.search_placeholder": "Buscar reuniones…",
"meetings.search_aria": "Buscar reuniones",
"meetings.filter_tag_aria": "Filtrar por etiqueta",
"meetings.all_tags": "Todas las etiquetas",
"meetings.from_date_aria": "Desde la fecha",
"meetings.to_date_aria": "Hasta la fecha",
"meetings.bulk_format_aria": "Formato de exportación masiva",
"meetings.bulk_export": "Exportación masiva",
"meetings.bulk_export_title": "Exportar todas las reuniones que coincidan con los filtros de etiqueta/fecha de arriba",
"meetings.exporting": "Exportando…",
"meetings.exported_one": "{n} reunión exportada.",
"meetings.exported_many": "{n} reuniones exportadas.",
"meetings.searching": "Buscando…",
"meetings.loading": "Cargando reuniones…",
"meetings.no_matches": "Sin coincidencias.",
"meetings.empty": "Aún no hay reuniones — haz clic en Grabar arriba para empezar.",
"meetings.status.recording": "grabando",
"meetings.status.transcribing": "transcribiendo",
"meetings.status.recovering": "recuperando",
"meetings.status.error": "error",
"meetings.resume": "Reanudar transcripción",
"meetings.delete_aria": "Eliminar reunión",
"meetings.delete_confirm": "¿Eliminar esta reunión? Se eliminarán su grabación, transcripción y notas.",
"transcript.heading": "Transcripción",
"transcript.title_aria": "Título de la reunión",
"transcript.lang_title": "Idioma de transcripción",
"transcript.lang_auto": "detectando…",
"transcript.show": "Mostrar transcripción",
"transcript.hide": "Ocultar transcripción",
"transcript.empty": "No hay transcripción para esta reunión.",
"transcript.will_appear": "La transcripción aparecerá aquí mientras grabas.",
"transcript.play_from_here": "Reproducir desde aquí",
"transcript.resize": "Redimensionar transcripción y notas",
"transcript.reprocess_placeholder": "Volver a transcribir con…",
"transcript.reprocess_lang_aria": "Idioma de reprocesamiento",
"transcript.reprocess_keep_lang": "Mantener el idioma actual",
"transcript.reprocess_go": "Ir",
"transcript.retranscribing": "Volviendo a transcribir…",
"transcript.has_note": "Tiene una nota",
"transcript.note_placeholder": "Agrega una nota para este momento…",
"transcript.note_aria": "Nota para esta línea de la transcripción",
"transcript.filter_md": "Markdown",
"transcript.filter_pdf": "PDF",
"transcript.filter_docx": "Documento de Word",
"transcript.filter_obsidian": "Nota de Obsidian",
"notes.heading": "Notas",
"notes.show": "Mostrar notas",
"notes.hide": "Ocultar notas",
"notes.placeholder": "Notas…",
"notes.live_placeholder": "Escribe notas mientras hablas…",
"notes.toolbar_aria": "Formato de notas",
"notes.bold": "Negrita",
"notes.italic": "Cursiva",
"notes.h1": "Encabezado 1",
"notes.h2": "Encabezado 2",
"notes.bullet": "Lista con viñetas",
"notes.checkbox_title": "Casilla de verificación",
"notes.checkbox_aria": "Elemento de lista con casilla",
"notes.edit_raw": "Editar el markdown en bruto",
"notes.render": "Renderizar el markdown",
"notes.editor": "Editor",
"notes.preview": "Vista previa",
"notes.export_md_title": "Exportar notas como .md",
"notes.export_pdf_title": "Exportar notas como .pdf",
"notes.export_docx_title": "Exportar notas como .docx",
"notes.export_bundle_title": "Exportar audio + transcripción + notas a una carpeta",
"notes.export_obsidian_title": "Exportar una nota de Obsidian (notas + resumen + transcripción, sin audio)",
"summary.recording_heading": "Grabación",
"summary.loading_recording": "Cargando grabación…",
"summary.sync_heading": "Sincronización",
"summary.uploading": "Subiendo…",
"summary.upload_now": "Subir ahora",
"summary.no_uploads": "Aún no hay subidas para esta reunión.",
"summary.retry": "reintentar",
"summary.tags_heading": "Etiquetas",
"summary.tags_select": "Selecciona una reunión para etiquetarla.",
"summary.tag_add_placeholder": "Agregar etiqueta…",
"summary.tag_first_placeholder": "proyecto, cliente, tema…",
"summary.generating": "Generando…",
"summary.generate_tags": "Generar etiquetas",
"summary.saving": "Guardando…",
"summary.save_tags": "Guardar etiquetas",
"summary.summary_heading": "Resumen",
"summary.ai_provider": "Proveedor de IA",
"summary.provider_off": "Desactivado",
"summary.provider_custom": "Personalizado",
"summary.local": "local",
"summary.leaves_device": "sale de este dispositivo",
"summary.this_hosted_provider": "este proveedor alojado",
"summary.select_generate": "Selecciona una reunión para generar un resumen.",
"summary.decisions_heading": "Decisiones",
"summary.regenerate": "Regenerar",
"summary.generated_hint": "Generado localmente tras la reunión (requiere un proveedor de LLM local).",
"summary.no_provider": "No hay proveedor de IA configurado — habilita uno en Configuración.",
"summary.generate_summary": "Generar resumen",
"summary.briefs_heading": "Resúmenes de funciones",
"summary.briefs_select": "Selecciona una reunión para crear o ver resúmenes de funciones.",
"summary.briefs_desc": "Destila esta reunión en una especificación lista para agentes (requiere un proveedor de LLM local) — entrégala a un agente de programación o sírvela a través del servidor MCP una vez que esté activado.",
"summary.brief_repo_placeholder": "Repo de destino (opcional), p. ej. acme/reporting-web",
"summary.distilling": "Destilando…",
"summary.create_brief": "Crear resumen de función",
"summary.brief_mcp_title": "Disponible cuando el servidor MCP está activado",
"summary.copied": "Copiado",
"summary.copy_md": "Copiar como Markdown",
"summary.copy_json": "Copiar como JSON",
"summary.brief_problem": "Problema",
"summary.brief_outcome": "Resultado deseado",
"summary.brief_criteria": "Criterios de aceptación",
"summary.brief_none": "Nada capturado.",
"summary.brief_context": "Contexto",
"summary.action_items_heading": "Tareas",
"summary.ai_select": "Selecciona una reunión para ver sus tareas.",
"summary.ai_empty": "Aún no hay ninguna — agrega una abajo o genera un resumen para extraerlas automáticamente.",
"summary.confirmed": "Confirmada",
"summary.ai_text_placeholder": "Tarea…",
"summary.ai_text_aria": "Texto de la tarea",
"summary.owner": "Responsable",
"summary.due_date": "Fecha límite",
"summary.reminder_title": "Programar un recordatorio local para esta fecha límite",
"summary.ai_delete_title": "Eliminar esta tarea",
"summary.ai_delete_aria": "Eliminar tarea",
"summary.add_action_item": "Agregar tarea",
"summary.save_action_items": "Guardar tareas",
"summary.calendar_heading": "Evento del calendario",
"summary.cal_select": "Selecciona una reunión para vincularla a un evento del calendario.",
"summary.event_search_placeholder": "Buscar título del evento…",
"summary.linked_event": "Evento vinculado",
"summary.change_event": "Cambiar evento…",
"summary.link_event": "Vincular un evento…",
"summary.untitled_event": "(sin título)",
"summary.no_events_1": "Aún no se han importado eventos — importa uno",
"summary.no_events_2": "desde Configuración → Calendario.",
"summary.no_events_match": "Ningún evento coincide con esta búsqueda/fecha — prueba a borrar una.",
"summary.organizer_label": "Organizador: {name}",
"summary.participants_heading": "Participantes",
"summary.participants_hint": "Se rellena a partir del evento del calendario vinculado.",
"summary.speakers_heading": "Hablantes",
"summary.speakers_select": "Selecciona una reunión para nombrar a sus hablantes.",
"summary.no_speakers": "Aún no se han detectado hablantes.",
"summary.speaker_name_placeholder": "Nombre del hablante",
"summary.save": "Guardar",
"summary.cancel": "Cancelar",
"summary.name_speaker": "Nombrar a este hablante…",
"summary.add_new_name": "+ Agregar nuevo nombre…",
"settings.recording.title": "Grabación",
"settings.recording.record_default": "Grabar las reuniones por defecto",
"settings.recording.save_audio_as": "guardar el audio como",
"settings.recording.default_hint": "Desactivado por defecto. Cuando está desactivado, el audio se usa solo para producir la transcripción y se elimina al finalizar la reunión. También puedes activar la grabación por reunión.",
"settings.recording.consent_label": "Consentimiento: {status}.",
"settings.recording.consent_ack": "reconocido",
"settings.recording.consent_not": "aún no reconocido",
"settings.recording.auto_label": "Iniciar la grabación automáticamente cuando comience un evento del calendario",
"settings.recording.auto_hint": "Solo mientras WhispAssist esté abierto. Cuando llega la hora de inicio de un evento del calendario importado, comienza una grabación automáticamente (usando tu configuración de retención predeterminada de arriba). Nada se ejecuta en segundo plano — el temporizador solo se arma mientras la aplicación está en ejecución. Importa eventos en Configuración → Calendario."
}