const messages = {
  common: {
    cancel: "Cancelar",
    create: "Crear",
    save: "Guardar",
    saving: "Guardando…",
    saveChanges: "Guardar cambios",
    connected: "Conectado",
    notConnected: "No conectado",
    disconnect: "Desconectar",
    disconnecting: "Desconectando...",
  },
  root: {
    commandActions: "Acciones",
    commandSearch: "Buscar",
    commandAppearance: "Apariencia",
    toggleTheme: "Cambiar tema",
    extensionSignedInTitle: "Sesión iniciada",
    extensionSignedInDescription:
      "Abre de nuevo la extensión de Clips para empezar a grabar.",
    gotIt: "Entendido",
  },
  builderCredits: {
    pausedTitle: "Créditos de Builder.io en pausa",
    transcriptionDescription:
      "Actualiza Builder.io para reanudar la transcripción de respaldo. Las transcripciones nativas existentes seguirán visibles.",
    cleanupDescription:
      "Actualiza Builder.io para reanudar la limpieza de transcripciones, los resúmenes y los títulos con IA. Se conservó la transcripción nativa.",
    settingsDescription:
      "Actualiza Builder.io para reanudar la transcripción de respaldo, la limpieza de transcripciones, los resúmenes y los títulos con IA. Las transcripciones nativas existentes seguirán visibles.",
    titleDescription:
      "La generación de títulos con IA está en pausa. Tu transcripción sigue funcionando.",
    upgrade: "Actualizar Builder.io",
    retryAfterUpgrade: "Reintentar tras actualizar",
    openAiSetup: "Configuración de IA",
    featureBackupTranscription: "Transcripción de respaldo",
    featureCleanup: "Limpieza de transcripción",
    featureSummaries: "Resúmenes",
    featureTitles: "Títulos con IA",
  },
  recorder: {
    cameraBlurTitle: "Desenfocar fondo",
    cameraBlurDescription: "Mantente nítido y desenfoca lo que hay detrás",
    cameraBlurToggle: "Desenfocar el fondo de la cámara",
    cameraBlurIntensityLabel: "Intensidad",
    cameraBlurIntensityAria: "Intensidad del desenfoque de fondo",
  },
  navigation: {
    brand: "Clips",
    library: "Biblioteca",
    spaces: "Espacios",
    meetings: "Reuniones",
    dictate: "Dictar",
    archive: "Archivo",
    trash: "Papelera",
    settings: "Ajustes",
    notifications: "Notificaciones",
    insights: "Información",
    space: "Espacio",
    folder: "Carpeta",
    extensions: "Extensiones",
    newRecording: "Nueva grabación",
    folders: "Carpetas",
    newFolder: "Nueva carpeta",
    noSpaces: "Aún no hay espacios",
    desktopCta: "Obtener la app de escritorio",
    desktopTitle: "Obtén la app de escritorio de Clips.",
    desktopBody:
      "Graba desde la barra de menús, con atajo global y actualizaciones automáticas.",
    expandSidebar: "Expandir barra lateral",
    collapseSidebar: "Contraer barra lateral",
    agentEmptyState: "¿Cómo puedo ayudarte con tus grabaciones?",
    agentSuggestionSummary: "Resume mi última grabación",
    agentSuggestionPricing: "Encuentra dónde mencioné precios",
    agentSuggestionFiller: "Quita las muletillas de este clip",
    createFolderError: "Error al crear",
    folderCreated: "Carpeta creada",
    folderNamePlaceholder: "Nombre de la carpeta",
  },
  empty: {
    library: {
      title: "Tu biblioteca está vacía",
      body: "Captura tu primera grabación de pantalla y aparecerá aquí, lista para compartir.",
      cta: "Grabar tu primer Clip",
    },
    folder: {
      title: "Esta carpeta está vacía",
      body: "Arrastra grabaciones aquí o pulsa grabar para empezar algo nuevo en esta carpeta.",
      cta: "Grabar aquí",
    },
    space: {
      title: "Aún no hay grabaciones en este espacio",
      body: "Comparte una grabación con el espacio o graba algo nuevo; tu equipo lo verá aquí.",
      cta: "Grabar para este espacio",
    },
    archive: {
      title: "No hay nada archivado",
      body: "Las grabaciones archivadas se ocultan de la biblioteca, pero se conservan. Siempre puedes restaurarlas más tarde.",
    },
    trash: {
      title: "La papelera está vacía",
      body: "Las grabaciones eliminadas aparecen aquí durante 30 días antes de eliminarse permanentemente.",
    },
    search: {
      title: "Sin coincidencias",
      body: "Prueba con otro término de búsqueda o revisa los filtros.",
    },
  },
  trashRoute: {
    title: "Papelera",
    selected: "{{count}} seleccionados",
    deselectAll: "Deseleccionar todo",
    selectAll: "Seleccionar todo",
    restore: "Restaurar",
    deleteForever: "Eliminar para siempre",
    deleteForeverTitle: "¿Eliminar para siempre?",
    bulkDeleteDescription:
      "Grabaciones que se eliminarán permanentemente: {{count}}. Esto no se puede deshacer.",
    singleDeleteDescription:
      "Esta grabación se eliminará permanentemente. Esto no se puede deshacer.",
    restored: "Restaurado",
    restoreFailed: "Error al restaurar",
    permanentlyDeleted: "Eliminado permanentemente",
    deleteFailed: "Error al eliminar",
  },
  recordingRoute: {
    pageTitle: "Grabación de clip · Clips",
  },
  meetingDetailRoute: {
    pageTitle: "Reunión · Clips",
  },
  recordingPage: {
    untitledClip: "Clip sin título",
    recordingNotFound: "Grabación no encontrada",
    noAccess: "Es posible que no tengas acceso a este clip.",
    backToLibrary: "Volver a la biblioteca",
    storageStillDisconnected: "El almacenamiento aún no está conectado",
    finishBuilderOrS3:
      "Finalice la ventana emergente Builder.io o configure el almacenamiento S3 y vuelva a intentarlo.",
    loomImportResumed: "Se reanudó la importación de Loom",
    clipUploadResumed: "Se reanudó la carga del clip",
    couldNotRetryLoom: "No se pudo volver a intentar importar Loom",
    couldNotResumeUpload: "No se pudo reanudar la carga",
    tryAgainMoment: "Inténtalo de nuevo en un momento.",
    aiRequestFailed: "La solicitud de IA falló",
    titleUpdated: "Título actualizado",
    transcriptNotReady: "La transcripción aún no está lista",
    tryAfterTranscription:
      "Inténtelo de nuevo después de que finalice la transcripción.",
    titleGenerationQueued: "Generación de títulos en cola",
    descriptionQueued: "Solicitud de descripción en cola",
    chapterQueued: "Solicitud de capítulo en cola",
    fillerQueued: "Eliminación de palabras de relleno en cola",
    silenceQueued: "Eliminación de silencio en cola",
    workflowQueued: "Solicitud de flujo de trabajo en cola",
    pageTitle: "Grabación de clips · Clips",
    loomMissingUrl: "A esta grabación Loom le falta su fuente URL.",
    finalizeFailed: "Finalización fallida ({{status}})",
    uploadTooLarge:
      "Clips intentó comprimir esta grabación de escritorio, pero aún es demasiado grande para cargarla. El original se guarda localmente y se puede volver a intentar desde el menú Clips.",
    desktopSavedUploadFailed:
      "La grabadora de escritorio terminó y guardó una copia local, pero Clips no pudo cargarla. Puedes volver a intentarlo desde el menú Clips sin volver a grabar.",
    retryLibrary: "Puedes volver a intentarlo desde la biblioteca.",
    processingStuck:
      "El procesamiento no se ha completado después de 30 segundos (estado={{status}}). Es posible que el clip no haya terminado de cargarse; verifique los registros del servidor para ver si hay mensajes fragmentados/finalizados.",
    uploadingAssembling:
      "Cargar y ensamblar su video; esto generalmente toma solo unos segundos.",
    connectStorageImportLoom:
      "Conecte el almacenamiento para importar este Loom.",
    connectStorageFinishClip:
      "Conecte el almacenamiento para terminar de guardar este clip.",
    uploadPausedSaved: "Carga pausada; clip guardado localmente.",
    savingWentWrong: "Algo salió mal al guardar este clip.",
    finishingClip: "Terminando tu clip...",
    loomSourcePreserved:
      "Se conserva el enlace fuente de Loom. Conecte el almacenamiento Builder.io o S3 y Clips volverá a intentar guardar su propia copia.",
    clipDataPreserved:
      "Los datos de su clip aún se conservan. Conecte el almacenamiento Builder.io o S3 y Clips lo cargará automáticamente.",
    details: "Detalles",
    importingLoom: "Importando Loom...",
    uploadingSavedClip: "Subiendo clip guardado...",
    storageConnectedSavingLoom:
      "El almacenamiento está conectado. Clips está guardando su propia copia ahora.",
    storageConnectedFinishing:
      "El almacenamiento está conectado. Clips está terminando la carga ahora.",
    connectStorageImportLoomTitle:
      "Conecte el almacenamiento para importar Loom",
    connectStorageFinishSaving:
      "Conecte el almacenamiento para terminar de guardar",
    chooseStorageRetryLoom:
      "Elija dónde Clips debe almacenar los videos. Después de conectarse, Clips volverá a intentar esta importación de Loom.",
    chooseStorageUpload:
      "Elija dónde Clips debe almacenar los videos. Después de que se conecte, este clip guardado se cargará automáticamente.",
    storageConnectedImporting: "Almacenamiento conectado. Importando Loom...",
    storageConnectedUploading:
      "Almacenamiento conectado. Subiendo este vídeo...",
    retryImport: "Reintentar importación",
    retryUpload: "Reintentar subir",
    checkAgain: "Comprobar de nuevo",
    back: "Atrás",
    done: "Listo",
    edit: "Editar",
    aiTools: "herramientas de inteligencia artificial",
    enhanceRecording: "Mejorar esta grabación",
    regenerateTitle: "Regenerar título",
    regenerateDescription: "Regenerar descripción",
    autoChapters: "capítulos automáticos",
    removeFillerWords: "Eliminar palabras de relleno",
    removeSilences: "Eliminar silencios (>1,2s)",
    generatePrSummary: "Generar resumen de relaciones públicas",
    generateSop: "Generar SOP",
    generateSopTooltip:
      "SOP significa Procedimiento operativo estándar: un runbook paso a paso reutilizable generado a partir de este clip.",
    generateTicket: "Generar ticket",
    generateEmail: "Generar correo electrónico",
    share: "Compartir",
    fromMeeting: "De la reunión:",
    untitled: "Intitulado",
    agent: "Agente",
    activity: "Actividad",
    transcript: "Transcripción",
    insights: "Perspectivas",
    settings: "Ajustes",
    askAboutClip: "Pregunta por este vídeo...",
    summarizeClip: "Resumir este clip",
    generateChapters: "Generar capítulos a partir de la transcripción",
    findActionItems: "Encuentre elementos de acción y seguimientos",
    draftRecap: "Redacte un resumen para compartir",
    findKeyMoments: "Encuentra los momentos clave",
    listFollowUpActions: "Listar acciones de seguimiento",
    draftQuestions: "Borradores de preguntas para el autor.",
    retryFailed: "Reintento fallido: {{message}}",
    networkError: "error de red",
    ownerInsights: "Perspectivas del propietario",
    ownerInsightsDescription:
      "Las vistas, la finalización y los detalles del espectador son visibles para los editores de este clip.",
  },
  sharePage: {
    agentReadableContext: "Contexto de clip legible por el agente",
    agentInstructions:
      "Obtenga agentContextUrl para la transcripción y el marco JPEG URLs. Busque el cuadro URLs para VER la pantalla, no solo leer la transcripción.",
    untitledClip: "Clip sin título",
    incorrectPassword: "Contraseña incorrecta",
    passwordProtected: "Este clip está protegido con contraseña.",
    linkExpired: "Enlace caducado",
    linkExpiredMessage:
      "El creador estableció una caducidad para este enlace para compartir.",
    clipUnavailable: "Clip no disponible",
    clipUnavailableMessage:
      "Esta grabación no es pública o el enlace no es válido. Si es tu clip, inicia sesión para verificar el acceso.",
    signIn: "Iniciar sesión",
    somethingWentWrong: "algo salió mal",
    pleaseTryAgain: "Por favor inténtalo de nuevo.",
    connectStorageFinish: "Conecte el almacenamiento para terminar este clip.",
    needsAttention: "Este clip necesita atención para terminar.",
    savingWentWrong: "Algo salió mal al guardar este clip.",
    finishingClip: "Terminando este clip...",
    loomPreservedManage:
      "Se conserva el enlace fuente de Loom. Conecte el almacenamiento Builder.io o S3 y luego vuelva a intentar la importación.",
    videoPreservedManage:
      "El vídeo se conserva. Conecte el almacenamiento Builder.io o S3 y Clips terminará de cargarlo.",
    creatorNeedsStorage:
      "El creador debe conectar el almacenamiento Builder.io o S3 antes de que este clip pueda finalizar.",
    signInStorage:
      "Si este es su clip, inicie sesión aquí para conectar el almacenamiento Builder.io o S3 y finalizar la carga.",
    uploadNotCompleteSession:
      "La carga aún no se ha completado. Abra el panel de este clip o pídale al creador que verifique el almacenamiento.",
    uploadNotCompleteSignIn:
      "La carga aún no se ha completado. Si este es tu clip, inicia sesión para abrir los controles del propietario y verificar el almacenamiento.",
    creatorMayRetry: "Es posible que el creador deba volver a intentarlo.",
    uploadingAssembling:
      "Subiendo y montando el vídeo. Esta página se actualizará automáticamente.",
    details: "Detalles",
    connectStorageFinishSaving:
      "Conecte el almacenamiento para terminar de guardar",
    chooseStorageCheck:
      "Elija dónde Clips debe almacenar los videos. Después de que se conecte, esta página se verificará nuevamente.",
    storageConnectedChecking:
      "Almacenamiento conectado. Comprobando este vídeo...",
    signInToFinish: "Inicia sesión para finalizar",
    signInIfYours: "Inicia sesión si este es tuyo",
    openDashboard: "Abrir panel",
    checkAgain: "Comprobar de nuevo",
    backToHome: "De vuelta a casa",
    generatingTitle: "Generando título",
    tryClips: "Prueba Clips",
    clipOptions: "Opciones de clip",
    downloading: "Descargando...",
    downloadMp4: "Descargar MP4",
    share: "Compartir",
    agent: "Agente",
    comments: "Comentarios",
    transcript: "Transcripción",
    insights: "Perspectivas",
    downloadForMac: "Descargar para Mac",
    downloadForWindows: "Descargar para Windows",
    downloadDesktopApp: "Descargar la aplicación de escritorio",
    agentNativeClips: "Agent-Native Clips",
    agentNativeClipsIntro: "es una alternativa gratuita,",
    openSource: "de código abierto",
    agentFriendly: "compatible con agentes",
    loomAlternative: "a Loom",
    signUp: "Registrarse",
    ownerInsights: "Estadísticas del propietario",
    ownerInsightsDescription:
      "Las vistas, la finalización y los detalles de espectadores son visibles para los editores de este clip.",
  },
  meetingDetail: {
    untitledMeeting: "Reunión sin título",
    unassigned: "No asignado",
    them: "A ellos",
    me: "A mí",
    regeneratingNotes: "Notas regeneradoras: se conservan sus propias notas",
    meetingRemoved: "Reunión eliminada",
    couldNotRemoveMeeting: "No se pudo eliminar la reunión",
    couldNotLoadMeeting: "No se pudo cargar esta reunión.",
    transcriptCopied: "Transcripción copiada",
    couldNotCopyTranscript: "No se pudo copiar la transcripción",
    allMeetings: "Todas las reuniones",
    live: "Vivir",
    generatingNotesInline: "Generando notas...",
    regenerateNotes: "regenerar notas",
    share: "Compartir",
    meetingOptions: "Opciones de reunión",
    removeMeeting: "Eliminar reunión",
    removeThisMeeting: "¿Eliminar esta reunión?",
    removeDescription:
      "Esto elimina la reunión de Clips. No eliminará ninguna transcripción vinculada ni cambiará su Google Calendar.",
    cancel: "Cancelar",
    removing: "Eliminando...",
    remove: "Eliminar",
    desktopHint:
      "Grabe notas en vivo para esta reunión desde la aplicación de escritorio Clips: la transcripción y las notas de IA aparecerán aquí automáticamente.",
    getDesktopApp: "Obtener aplicación de escritorio",
    generateNotesFailed: "No se pudieron generar notas. Intentar otra vez.",
    attendee_one: "asistente {{count}}",
    attendee_other: "asistentes {{count}}",
    joinCall: "Unirse a la llamada",
    myNotes: "mis notas",
    aiNotes: "notas de IA",
    actionItems: "Elementos de acción",
    working: "Laboral…",
    noActionItems:
      "Aún no hay elementos de acción. Aparecen aquí después de generar notas a partir de una transcripción.",
    transcript: "Transcripción",
    segments: "segmentos {{count}}",
    copyTranscript: "Copiar transcripción",
    copyFullTranscript: "Copiar transcripción completa",
    attendee_many: "{{count}} attendees",
  },
  transcriptPanel: {
    transcribing: "Transcribiendo…",
    pendingDescription:
      "La transcripción en vivo aparece tan pronto como se captura la voz. La limpieza continúa en segundo plano.",
    noSpeechDetected: "No se detectó voz",
    noSpeechDescription:
      "No captamos ningún discurso en esta grabación. Si eso fue intencional, ya está todo listo. De lo contrario, verifique sus permisos de micrófono y voz y luego vuelva a intentar la transcripción.",
    retry: "Rever",
    transcriptUnavailable: "Transcripción no disponible: {{reason}}",
    transcriptUnavailableTitle: "Transcripción no disponible",
    providerNeedsAttention: "El proveedor requiere atención",
    providerNeedsAttentionDescription:
      "El proveedor actual pausó esta solicitud. Cambia a Builder.io o actualiza la clave y vuelve a intentarlo.",
    enableTranscriptionTitle: "Activar transcripción",
    enableTranscriptionDescription:
      "Activa subtítulos, búsqueda en la transcripción y resúmenes para este Clip.",
    searchPlaceholder: "Transcripción de búsqueda",
    copyTranscript: "Copiar transcripción",
    downloadSrt: "Descargar .srt",
    cleanupRunning: "Limpiando la transcripción en segundo plano.",
    noMatches: "Sin coincidencias.",
    noTranscript: "Aún no hay transcripción.",
    noTranscriptCaptured: "No se capturó ninguna transcripción.",
    backupFailed:
      "No se capturó ningún discurso localmente y la transcripción de respaldo no finalizó. Vuelva a intentarlo o verifique los permisos de micrófono y voz.",
    backupNotSetup:
      "No se capturó ninguna voz localmente y no se configuró la transcripción de respaldo.",
    cleanupKept:
      "La limpieza no pudo terminar. Se mantuvo la transcripción nativa.",
    cleanupBuilderFailed:
      "La limpieza no pudo finalizar aunque Builder.io esté conectado. Se mantuvo la transcripción nativa.",
    cleanupPaused:
      "La limpieza está en pausa. Conecte IA en Configuración: Builder.io (créditos gratis) o su propia clave LLM.",
    builderNoResponse:
      "No recibí respuesta del constructor. Permita ventanas emergentes e inténtelo de nuevo.",
    saveFailed: "Error al guardar ({{status}})",
    savedRetrying: "Guardado. Reintentando la transcripción...",
    getGroqKey: "Obtener la clave Groq",
    groqKeysStart: "Las teclas Groq comienzan con",
    waiting: "Esperando…",
    nativeSpeechPrimary:
      "La voz nativa sigue siendo la fuente principal de transcripción.",
  },
  thumbnailPicker: {
    failedCapture: "No se pudo capturar el fotograma",
    failedGif: "No se pudo generar GIF; pruebe con un rango más corto",
    nothingToApply: "Aún no hay nada que aplicar",
    updated: "Miniatura actualizada",
    failedUpdate: "No se pudo actualizar la miniatura",
    thumbnail: "Miniatura",
    upload: "Subir",
    frame: "Fotograma",
    animatedGif: "GIF animado",
    uploadImage: "Sube una imagen",
    uploadedPreview: "Vista previa cargada",
    currentThumbnail: "Miniatura actual",
    frameAt: "Marco en {{time}}",
    captureFrame: "Fotograma de captura",
    preview: "Avance",
    capturedFrame: "fotograma capturado",
    capturePreview: "Capturar un fotograma para obtener una vista previa",
    start: "Empieza: {{time}}",
    duration: "Duración: {{time}}",
    generateGif: "Generar GIF",
    animatedPreview: "Vista previa en miniatura animada",
    generateGifPreview: "Genera un GIF para obtener una vista previa",
    cancel: "Cancelar",
    saveThumbnail: "Guardar miniatura",
  },
  shareDialog: {
    publicDescription:
      "Cualquiera que tenga el enlace puede verlo: inicie sesión para comentar o reaccionar.",
    shareRecording: "Compartir grabación",
    shareTitle: 'Compartir "{{title}}"',
    link: "Enlace",
    invite: "Invitar",
    embed: "Insertar",
    shareLink: "Enlace para compartir",
    shareWithAgents: "Compartir con agentes",
    copyAgentPrompt: "Copiar indicación para agente",
    agentPrompt:
      "Obtén esta URL de contexto para agentes de Clips: {{agentContextUrl}}. Usa transcript.segments para el contexto hablado, obtén recommendedFrames o las URLs de la API de fotogramas para ver la pantalla y revisa browserDiagnostics si está presente para ver registros de consola redactados y metadatos de solicitudes fetch/XHR.",
    agentTokenDescription:
      "Este agente URL utiliza un token de corta duración, por lo que los agentes pueden leer el clip sin exponer la contraseña.",
    gifPreview: "vista previa de GIF",
    openPlayer: "jugador abierto",
    downloadMp4: "Descargar MP4",
    embedsNeedPublic: "Los elementos insertados necesitan un clip público",
    embedPublicDescription:
      "Este clip es actualmente {{visibility}}. Los iframes integrados se cargan de forma anónima, por lo que el clip debe ser público para que los espectadores lo vean.",
    makingPublic: "Hacer público…",
    makePublic: "Promulgar",
    askOwnerPublic: "Pídele al propietario que lo haga público.",
    responsive: "Responsivo (16:9)",
    fixedSize: "Tamaño fijo",
    embedIframeTitle: "Video de Clips",
    width: "Ancho",
    height: "Altura",
    autoplay: "Reproducción automática",
    startAt: "Empezar en (segundos)",
    embedCode: "Código de inserción",
    sharePlainTitle: "Compartir {{title}}",
  },
  shareUi: {
    owner: "Propietario: {{email}}",
    generalAccess: "Acceso general",
    restrictedLinkDescription:
      "Este enlace sólo funcionará para las personas que ya tienen acceso.",
    makingPublic: "Hacer público…",
    makePublicAndCopy: "Hacer público y copiar",
    copy: "Copiar",
    addPeopleByEmail: "Agregar personas por correo electrónico",
    notifyPeople: "Notificar a la gente",
    peopleWithAccess: "personas con acceso",
    ownerRole: "Dueño",
    remove: "Eliminar",
    noAccessYet: "Nadie tiene acceso todavía.",
    visibility: {
      private: {
        label: "Privado",
        description: "Sólo las personas con acceso pueden ver",
      },
      org: {
        label: "Organización",
        description: "Cualquier persona de su organización puede ver",
      },
      public: {
        label: "Público",
        description: "Cualquier persona con el enlace puede ver",
      },
    },
    roles: {
      viewer: "Espectador",
      editor: "Editor",
      admin: "Administración",
    },
  },
  quickAsk: {
    title: "Pregunta sobre esta reunión",
    toggleHint: "para alternar · Esc para cerrar",
    quickPrompts: "Indicaciones rápidas",
    whatDidIMiss: "¿Qué me perdí?",
    whatDidIMissPrompt: "¿Qué me perdí?",
    summarizeLastFive: "Resume los últimos 5 minutos.",
    summarizeLastFivePrompt:
      "Resuma los últimos 5 minutos de esta reunión en 3-5 puntos.",
    actionItemsForMe: "Elementos de acción para mí",
    actionItemsForMePrompt:
      "Enumere los elementos de acción de esta reunión que me han sido asignados. Utilice viñetas de casilla de verificación.",
    history: "Historia",
    emptyDescription:
      "Pregunta cualquier cosa. El agente tiene la transcripción completa y el contexto de la reunión.",
    placeholder: "Pregunta cualquier cosa...",
    send: "Enviar",
    sentToChat:
      "Enviado al chat: consulte la barra lateral del agente para obtener la respuesta.",
  },
  brandingEditor: {
    title: "Herrada",
    uploadImageFile: "Por favor cargue un archivo de imagen.",
    logoUploaded: "Logotipo subido",
    uploadFailed: "Error al subir",
    brandingUpdated: "Marca actualizada",
    saveFailed: "No se pudo guardar",
    organizationName: "Nombre de la organización",
    brandColor: "Color de la marca",
    brandColorPicker: "Selector de color de marca",
    useColor: "Utilice {{color}}",
    logo: "Logo",
    logoPreview: "Vista previa del logotipo",
    dropReplace: "Suelta una nueva imagen para reemplazar",
    dropHere: "Coloque un PNG / JPG / SVG aquí",
    uploading: "Subiendo…",
    chooseFile: "Elige el archivo",
    remove: "Eliminar",
    preview: "Avance",
    organizationFallback: "Organización",
    saving: "Ahorro…",
    save: "Ahorrar",
  },
  downloadRoute: {
    pageTitle: "Descargar Clips Desktop",
    description:
      "Graba tu pantalla desde la barra de menú. Aplicación de escritorio de actualización automática para macOS y Windows.",
    macSublabel: "Traducido: Universal (Apple Silicon + Intel)",
    windowsSublabel: "Instalador MSI de 64 bits",
    downloadFor: "Descargar para {{platform}}",
    alsoFor: "También disponible para {{platform}}",
    backToLibrary: "Volver a la biblioteca",
    clipsDesktop: "Clips Desktop",
    heroDescription:
      "Una grabadora de barra de menú para pantalla, cámara y pantalla + cámara. Inicio con un clic, burbuja de cámara que se puede arrastrar, enlace para compartir instantáneamente cuando se detiene.",
    versionReleased: "Versión {{version}} - lanzada {{date}}",
    version: "Versión {{version}}",
    manifestError:
      "No se pudo cargar el manifiesto de lanzamiento: elija un instalador de la página de lanzamientos.",
    loadingRelease: "Cargando la última versión...",
    chromeTitle: "Extensión Chrome para registros del navegador",
    chromeDescription:
      "Utilice la extensión cuando desee una grabación más una consola redactada y obtenga diagnósticos/XHR desde la pestaña desde la que inicia. La aplicación de escritorio sigue siendo la grabadora diaria más fluida.",
    installChrome: "Instalar la extensión Chrome",
    chromePending: "Chrome Web Store URL pendiente",
  },
  inviteRoute: {
    missingToken: "Falta el token de invitación.",
    notFound: "Invitación no encontrada o caducada.",
    loadFailed: "No se pudo cargar la invitación",
    joined: "Se unió a {{team}}",
    theTeam: "el equipo",
    acceptFailed: "No se pudo aceptar la invitación",
    declined: "Invitación rechazada",
    declineFailed: "No se pudo rechazar",
    signInRequired: "Inicio de sesión requerido",
    signInDescription:
      "Debes iniciar sesión antes de poder aceptar una invitación.",
    signIn: "Iniciar sesión",
    invited: "has sido invitado",
    loading: "Cargando…",
    role: "Traducido: Role:",
    invitedToJoin: "{{inviter}} te invitó a unirte a {{team}} en Clips.",
    emailMismatch:
      "Aviso: esta invitación fue enviada a {{inviteEmail}}. Has iniciado sesión como {{sessionEmail}}. Aceptar seguirá funcionando, pero el correo electrónico de su cuenta será el que se unirá.",
    decline: "Rechazar",
    joining: "Unión…",
    acceptInvite: "Aceptar invitación",
    declineInvite: "¿Rechazar esta invitación?",
    declineDescription:
      "La invitación será eliminada. El administrador siempre puede enviarte uno nuevo.",
    cancel: "Cancelar",
    pageTitle: "Unirse al equipo · Clips",
  },
  settings: {
    openAgentSettings: "Abrir ajustes del agente",
    agentDescription:
      "Abre los ajustes del agente en la barra lateral para modelos, claves API, automatizaciones, voz y otros controles.",
    agentTitle: "Ajustes del agente",
    title: "Ajustes",
    pageTitle: "Ajustes · Clips",
    intro: "Preferencias y servicios conectados para este espacio de Clips.",
    languageTitle: "Idioma",
    languageDescription:
      "Elige el idioma de la interfaz para esta cuenta. Clips lo recordará en todos tus dispositivos.",
    languageLabel: "Idioma de la interfaz",
    whatsNew: "Novedades",
    changelogEmpty: "Aún no hay actualizaciones.",
    viewAllUpdates: "Ver todas las actualizaciones",
    expand: "Expandir",
    collapse: "Contraer",
    changelogMarkdown: `# Registro de cambios

Todos los cambios visibles para los usuarios de Clips se documentan aquí. Puedes abrirlo en cualquier momento desde el menú de comandos (Cmd+K -> "Novedades") o desde Ajustes.

## 2026-06-23

### Añadido

- Ahora puedes ver las novedades directamente dentro de Clips. El registro de cambios vive en el menú de comandos (Cmd+K) y en Ajustes.`,
    profile: "Perfil",
    email: "Correo electrónico",
    displayName: "Nombre visible",
    displayNamePlaceholder: "Tu nombre",
    playback: "Reproducción",
    defaultPlaybackSpeed: "Velocidad de reproducción predeterminada",
    playbackDescription:
      "Se aplica automáticamente cuando abres una grabación.",
    transcript: "Transcripción",
    transcriptCleanup: "Limpieza en segundo plano",
    transcriptCleanupDescription:
      "Muestra la transcripción nativa de inmediato y luego la mejora en segundo plano cuando esté disponible.",
    notifications: "Notificaciones",
    emailNotifications: "Notificaciones por correo",
    emailNotificationsDescription:
      "Recibe un correo cuando alguien comenta, reacciona o comparte una grabación contigo.",
    saved: "Ajustes guardados",
    saveFailed: "No se pudo guardar",
    builderConnectedToast: "Builder.io conectado",
    videoStorage: "Almacenamiento de vídeo",
    videoStorageDescription:
      "Builder.io es la ruta principal de almacenamiento para las subidas de Clips. S3 está disponible si necesitas usar tu propio bucket.",
    checkingBuilder: "Comprobando Builder.io",
    builderConnected: "Builder.io conectado",
    connectBuilder: "Usar Builder.io (gratis)",
    builderConnectedFor: "Usando Builder.io para {{orgName}}.",
    builderConnectedGeneric:
      "Los clips nuevos usan el proveedor Builder.io conectado.",
    builderIncludes:
      "Incluye almacenamiento de objetos, subidas y transcripción gestionada para clips nuevos.",
    s3Title: "Almacenamiento compatible con S3",
    secondary: "Secundario",
    active: "Activo",
    s3BuilderConnectedDescription:
      "Úsalo solo si este espacio debe subir a tu propio bucket en lugar de Builder.io.",
    s3CurrentProvider: "Usando actualmente {{providerName}}.",
    s3OwnBucketDescription:
      "Usa tu propio bucket si no quieres almacenamiento de Builder.io.",
    configureS3: "Configurar S3",
    hideS3: "Ocultar S3",
    saveStorage: "Guardar almacenamiento",
    storageSaved: "Ajustes de almacenamiento guardados",
    storageRequired: "Endpoint, bucket, access key y secret son obligatorios.",
    s3EndpointLabel: "URL del endpoint",
    s3BucketLabel: "Balde",
    s3AccessKeyLabel: "ID de clave de acceso",
    s3SecretAccessKeyLabel: "Clave de acceso secreta",
    s3RegionLabel: "Región",
    s3PublicBaseUrlLabel: "URL base pública",
    apiSetup: "Configuración de IA",
    apiSetupDescription:
      "Conecta IA con créditos gratis de Builder.io o tus propias claves LLM.",
    builderEasySetup: "Créditos gratis de Builder.io",
    builderAiAvailable:
      "Los créditos de IA incluidos y la transcripción gestionada están disponibles para Clips.",
    builderAiDescription:
      "Usa Builder.io primero para créditos de IA incluidos, almacenamiento de objetos, subidas y transcripción gestionada.",
    providerKeyTitle: "Usar tu propia clave de proveedor",
    providerKeyDescription:
      "Añade claves de Anthropic, OpenAI, Gemini, Groq u OpenRouter para uso facturado por proveedor.",
    providerKeysSet: "{{count}} configuradas",
    checkingProviderKeys: "Comprobando claves de proveedor…",
    keySet: "Configurada",
    replaceKey: "Reemplazar clave…",
    pasteProviderKey: "Pega primero una clave de proveedor.",
    apiKeySaved: "Clave de API guardada",
    apiKeyFailed: "No se pudo guardar la clave",
    slackTitle: "Agent-Native Clips para Slack",
    slackDescription:
      "Comparte un clip público, pega el enlace en Slack y se reproducirá en línea, sin pasos adicionales para quienes lo vean. Conecta cada espacio una sola vez.",
    checkingSlack: "Comprobando Slack",
    slackConnected_one: "{{count}} espacio conectado",
    slackConnected_many: "{{count}} espacios conectados",
    slackConnected_other: "{{count}} espacios conectados",
    slackOauthNeeded: "Se necesitan credenciales OAuth",
    slackPreviewDescription:
      "Los enlaces públicos de Clips pueden mostrarse como vistas previas reproducibles en Slack.",
    connectSlack: "Conectar Slack",
    slackClientMissing:
      "Configura SLACK_CLIENT_ID y SLACK_CLIENT_SECRET para este despliegue antes de conectar espacios.",
    slackSigningMissing:
      "Configura SLACK_SIGNING_SECRET para verificar los callbacks de eventos de Slack.",
    connectedBy: "Conectado por {{email}}",
    disconnectSlackLabel: "Desconectar {{team}}",
    slackConnectedToast: "Slack conectado",
    slackCheckedToast: "Conexión de Slack comprobada",
    slackDisconnectedToast: "Slack desconectado",
    slackConnectFailed: "Error al conectar Slack",
    slackDisconnectFailed: "Error al desconectar Slack",
    disconnectSlackTitle: "¿Desconectar Slack?",
    disconnectSlackDescription:
      "Clips eliminará el token de bot almacenado para {{team}} y dejará de enviar vistas previas reproducibles de Slack.",
    thisWorkspace: "este espacio",
    slackConnected: "Slack conectado",
  },
  insightsHub: {
    title: "Estadísticas",
    period: "Periodo",
    last7Days: "Últimos 7 días",
    last14Days: "Últimos 14 días",
    last30Days: "Últimos 30 días",
    last90Days: "Últimos 90 días",
    exportCsv: "Exportar CSV",
    description:
      "Interacción en tu organización durante los últimos {{days}} días.",
    views: "Vistas",
    reactions: "Reacciones",
    comments: "Comentarios",
    recordings: "Grabaciones",
    engagementTrend: "Tendencia de interacción",
    topVideos: "Videos principales",
    topCreators: "Creadores principales",
  },
  folderTree: {
    noFolders: "Aún no hay carpetas",
    rename: "Renombrar",
    newSubfolder: "Nueva subcarpeta",
    delete: "Eliminar",
    renameFolder: "Renombrar carpeta",
    renamed: "Carpeta renombrada",
    renameFailed: "Error al renombrar",
    createInside: 'Crea una carpeta dentro de "{{name}}".',
    folderName: "Nombre de carpeta",
    created: "Carpeta creada",
    createFailed: "Error al crear",
    deleteFolder: "¿Eliminar carpeta?",
    deleteDescription:
      "Las grabaciones dentro se moverán al ámbito principal (raíz de biblioteca o carpeta superior). Las subcarpetas anidadas se eliminan. Esto no se puede deshacer.",
    deleted: "Carpeta eliminada",
    deleteFailed: "Error al eliminar",
  },
  organizationSettings: {
    pageTitle: "Configuración de organización · Clips",
    title: "Organización · Configuración",
    namedTitle: "{{name}} · Configuración",
    noOrganization:
      "Aún no hay organización. Crea una desde el selector de organización para empezar.",
    description:
      "Administración de organización: marca, miembros e invitaciones.",
    adminsOnlyBranding: "Solo los administradores pueden editar la marca.",
    members: "Miembros",
    pendingInvites: "Invitaciones pendientes",
    noPendingInvites: "No hay invitaciones pendientes.",
    email: "Correo electrónico",
    role: "Rol",
    sent: "Enviado",
  },
  recordingInsights: {
    loading: "Cargando estadísticas…",
    noData: "Aún no hay datos.",
    views: "Vistas",
    uniqueViewers: "Espectadores únicos",
    completion: "Finalización",
    ctaConversion: "Conversión de CTA",
    dropOff: "Abandono",
    viewersCount: "{{count}} espectadores",
    watching: "Viendo",
    recentViewers: "Espectadores recientes",
    noViewers: "Aún no hay espectadores.",
    anonymous: "Anónimo",
    anon: "Anón.",
    moreViewers: "+{{count}} más",
  },
  libraryGrid: {
    spaceRoot: "Raíz del espacio",
    libraryRoot: "Raíz de la biblioteca",
    clipsMoved: "{{count}} clips movidos",
    moveFailed: "No se pudieron mover los clips",
    titleRequired: "El título no puede estar vacío",
    clipRenamed: "Clip renombrado",
    renameFailed: "No se pudo renombrar el clip",
    renameClip: "Renombrar clip",
    clipTitle: "Título del clip",
    movedToTrash: "Movido a la papelera",
    restoredFromArchive: "Restaurado desde el archivo",
    archived: "Archivado",
    clipsArchived: "{{count}} clips archivados",
    clipsArchiveFailed: "{{count}} clips no se pudieron archivar",
    clipsMovedToTrash: "{{count}} clips movidos a la papelera",
    clipsTrashFailed: "{{count}} clips no se pudieron mover a la papelera",
  },
  notificationsRoute: {
    pageTitle: "Notificaciones · Clips",
    title: "Notificaciones",
    description:
      "Comentarios, reacciones, menciones y compartidos en tus grabaciones durante los últimos 30 días.",
    replySent: "Respuesta enviada",
    sendFailed: "No se pudo enviar",
    all: "Todo",
    comments: "Comentarios",
    reactions: "Reacciones",
    mentions: "Menciones",
    shares: "Compartidos",
    loading: "Cargando…",
    replyTo: "Responder a {{email}} en",
    replyPlaceholder: "Escribe una respuesta…",
  },
  stitchManager: {
    defaultTitle: "Grabación unida",
    title: "Unir grabaciones",
    pickAtLeastTwo: "Elige al menos 2 grabaciones para unir",
    videoUrlMissing:
      "Una o más grabaciones aún no tienen una URL de video lista",
    connectStorage:
      "Conecta almacenamiento antes de unir grabaciones: Builder.io (almacenamiento + IA en el plan gratuito) o almacenamiento compatible con S3.",
    created: "Grabación unida creada",
    failed: "No se pudieron unir las grabaciones",
    noOtherRecordings: "No hay otras grabaciones disponibles.",
    combineOrder: "Orden de combinación",
    emptyQueue:
      "Haz clic en grabaciones a la izquierda para agregarlas aquí. Arrastra para reordenar.",
    titleLabel: "Título",
    combining:
      "Combinando con ffmpeg.wasm — {{progress}}%. Las uniones grandes pueden tardar un minuto.",
    combine: "Combinar",
  },
  inviteDialog: {
    title: "Invitar miembros",
    description:
      "Pega uno o más correos separados por comas o saltos de línea. Las invitaciones caducan en 7 días.",
    enterEmail: "Introduce al menos una dirección de correo.",
    invalidEmails: "Correo(s) no válido(s): {{emails}}",
    emailFailed: "{{email}}: {{message}}",
    failed: "Falló",
    sent: "Se enviaron {{count}} invitaciones.",
    sentWithFailures: "Se enviaron {{sent}} invitaciones, {{failed}} fallaron.",
    emails: "Correos",
    memberRole: "Miembro — grabar, editar, compartir",
    adminRole: "Admin — control total",
    sending: "Enviando…",
    sendInvites: "Enviar invitaciones",
  },
  membersList: {
    memberRole: "Miembro",
    adminRole: "Admin",
    roleUpdated: "Rol de {{email}} actualizado a {{role}}",
    updateFailed: "No se pudo actualizar el rol",
    removed: "{{email}} eliminado de la organización",
    removeFailed: "No se pudo eliminar el miembro",
    noMembers: "Aún no hay miembros.",
    member: "Miembro",
    joined: "Se unió",
    you: "(tú)",
    removeMemberLabel: "Eliminar {{email}}",
    removeTitle: "¿Eliminar miembro?",
    removeDescription:
      "{{email}} perderá acceso a esta organización. Siempre puedes volver a invitarlo.",
    remove: "Eliminar",
  },
  slackShareHint: {
    playsInline: "Se reproduce inline en Slack",
    connectedDescription:
      "Pega este enlace en cualquier espacio conectado para reproducirlo inline.",
    makeInline: "Haz que se reproduzca inline en Slack",
    connectDescription:
      "Conecta un espacio para que este enlace se despliegue como video.",
    connect: "Conectar",
  },
  commentsPanel: {
    disabled: "Los comentarios están desactivados para esta grabación.",
    beFirst: "Sé la primera persona en comentar",
    leaveNotePanel: "Deja una nota en la parte superior de este panel.",
    leaveNoteTimestamp: "Deja una nota en la marca de tiempo actual.",
    leaveComment: "Deja un comentario...",
    signInToComment: "Inicia sesión para dejar un comentario.",
    signIn: "Iniciar sesión",
    replyingTo: "Respondiendo a",
    commentAt: "Comentar en",
    writeReply: "Escribe una respuesta...",
    commentButton: "Comentar",
    composerPlaceholder: "Añadir un comentario…",
    mentionSomeone: "Mencionar a alguien",
    addEmoji: "Añadir emoji",
  },
  shareMeeting: {
    pageTitle: "Notas de reunión · Clips",
    description: "Notas de reunión con IA compartidas mediante Clips.",
    unavailable: "Esta reunión es privada o ya no está disponible.",
    tryClips: "Probar Clips",
    attendees: "{{count}} asistentes",
    noAiNotes: "Aún no se han generado notas de IA para esta reunión.",
    summary: "Resumen",
    keyPoints: "Puntos clave",
    actionItems: "Elementos de acción",
  },
  deleteRecordingMenu: {
    movedToTrash: "Clip movido a la papelera",
    deleteFailed: "No se pudo eliminar el clip",
    clipOptions: "Opciones del clip",
    delete: "Eliminar",
    moveTitle: "¿Mover este clip a la papelera?",
    moveDescription:
      "Esto elimina el clip de tu biblioteca. Puedes restaurarlo desde la papelera o eliminarlo para siempre más tarde.",
    deleting: "Eliminando...",
    moveToTrash: "Mover a la papelera",
  },
  recordingToolbar: {
    controls: "Controles de grabación",
    resumeRecording: "Reanudar grabación",
    pauseRecording: "Pausar grabación",
    resumeShortcut: "Reanudar (⌥⇧P)",
    pauseShortcut: "Pausar (⌥⇧P)",
    stop: "Detener grabación",
    elapsed: "Tiempo transcurrido",
    cancel: "Cancelar grabación",
    cancelShortcut: "Cancelar (⌥⇧C)",
  },
  countdownOverlay: {
    startsIn: "La grabación empieza en {{count}}",
    cancel: "Cancelar grabación",
    skip: "Saltar cuenta atrás e iniciar ahora",
    hint: "Esc para cancelar · Enter para iniciar ahora",
  },
  videoPlayer: {
    loomVideo: "Video de Loom",
    noVideo: "No hay video disponible",
    thanks: "Gracias por mirar",
    playClip: "Reproducir clip",
  },
  searchBar: {
    placeholder: "Buscar grabaciones…",
    clear: "Borrar búsqueda",
    searching: "Buscando…",
    noMatchesFor: "Sin coincidencias para",
    titleTranscript: "Título + transcripción",
    titleComment: "Título + comentario",
    transcript: "Transcripción",
    comment: "Comentario",
    titleOrDescription: "Título o descripción",
  },
  organizationSwitcher: {
    noOrganization: "Sin organización",
    organizationCount: "{{count}} organizaciones",
    organizations: "Organizaciones",
    noOrganizations: "Aún no hay organizaciones",
    switchFailed: "No se pudo cambiar de organización",
    newOrganization: "Nueva organización",
    createOrganization: "Crear organización",
    organizationName: "Nombre de organización",
    created: 'Creada "{{name}}"',
    createFailed: "No se pudo crear la organización",
    creating: "Creando…",
  },
  playerControls: {
    playbackSpeed: "Velocidad de reproducción",
  },
  autoRecordPrompt: {
    notesStarted: "Notas iniciadas.",
    cancelWithSeconds: "Cancelar ({{count}} s)",
    startNotesQuestion: "Es hora de esta reunión. ¿Iniciar notas?",
    autoStartsIn: "Inicio automático en {{count}} s",
    startNotes: "Iniciar notas",
    dismiss: "Descartar",
  },
  meetingCanvas: {
    noAiNotes:
      "Aún no hay notas de IA. Genera notas a partir de una transcripción finalizada.",
    noNotes: "No hay notas.",
    yourNotes: "Tus notas…",
    clickToEdit: "Haz clic para editar",
  },
  meetingCard: {
    live: "En directo",
    transcript: "Transcripción",
    aiNotesReady: "Notas de IA listas",
    noSummary: "Aún no hay resumen",
    transcriptSource: "Fuente de transcripción",
    now: "Ahora",
    started: "Iniciada",
    inMinutes: "en {{count}} min",
    inHours: "en {{count}} h",
    join: "Unirse",
    openNotes: "Abrir notas",
    open: "Abrir",
  },
  transcriptBubbles: {
    listening: "Escuchando…",
    noTranscript: "Aún no hay transcripción.",
    liveTranscriptDescription:
      "La transcripción en vivo aparecerá aquí cuando empiecen las notas.",
    me: "Yo",
    them: "Ellos",
  },
  editorLayout: {
    trimmed: "Recortado",
    trimFailed: "No se pudo recortar",
    cut: "Cortado",
    cutFailed: "No se pudo cortar",
    split: "Dividido",
    splitFailed: "No se pudo dividir",
    loadingRecording: "Cargando grabación…",
    recordingNotFound: "Grabación no encontrada",
    noVideoYet: "Aún no hay video disponible.",
  },
  transcriptEditor: {
    transcript: "Transcripción",
    selectionRange: "· selección {{start}} → {{end}}",
    selectTextToTrim: "· selecciona texto para recortar",
    cutSelection: "Cortar selección",
    noTranscript: "Aún no hay transcripción.",
  },
  createSpaceDialog: {
    newSpace: "Nuevo espacio",
    description: "Crea un espacio en la organización actual.",
    name: "Nombre",
    color: "Color",
    useColor: "Usar color {{color}}",
    spaceCreated: "Espacio creado",
    createFailed: "No se pudo crear el espacio",
  },
  signInPrompt: {
    title: "Inicia sesión para {{intent}}",
    description:
      "Crea una cuenta o inicia sesión para {{intent}} en este clip. Te traeremos de vuelta aquí cuando termines.",
    notNow: "Ahora no",
    signIn: "Iniciar sesión",
  },
  embedRoute: {
    passwordRequired: "Contraseña requerida",
    unavailable: "Clip no disponible.",
  },
  cameraVisualizer: {
    bubble: "Burbuja",
    live: "En vivo",
    waiting: "Esperando",
    opening: "Abriendo",
    stop: "Detener",
    openingEllipsis: "Abriendo...",
    test: "Probar",
    selectedPreview: "Vista previa de la cámara seleccionada",
    preview: "Vista previa de cámara",
    setBubbleSize: "Definir tamaño de burbuja de cámara {{size}}",
  },
  storageSetup: {
    builderTimeout:
      "No hubo respuesta de Builder en 5 minutos. Revisa la ventana emergente e inténtalo de nuevo.",
    builderConnected: "Builder.io conectado",
    waitingForBuilder: "Esperando a Builder...",
    connectBuilder: "Usar Builder.io (gratis)",
    free: "Gratis",
    configureS3: "configurar almacenamiento compatible con S3",
    whyPrompt: "¿Por qué veo esto?",
    whyDescription:
      "Clips es 100% gratis y de código abierto, así que necesitas conectar una forma de almacenar clips. Conecta almacenamiento con Builder.io para almacenamiento e IA en el plan gratuito, o usa almacenamiento compatible con S3 y tus propias claves LLM.",
  },
  captureInstall: {
    title: "Choose your recorder (Localizado)",
    description:
      "Use Chrome when you need browser logs, or desktop for the smoothest everyday capture. (Localizado)",
    chromeTitle: "Chrome extension (Localizado)",
    chromeDescription:
      "Best when you want redacted console and network diagnostics from the browser tab. (Localizado)",
    chromePendingDescription:
      "Browser logs option is ready, pending the Chrome Web Store URL. (Localizado)",
    desktopTitle: "Desktop app (Localizado)",
    desktopDescription:
      "Most seamless for global shortcuts, menu-bar recording, meetings, and repeat captures. (Localizado)",
  },
  editableTitle: {
    untitled: "Untitled Clip (Localizado)",
    renameFailed: "Failed to rename clip (Localizado)",
    emptyTitle: "Title cannot be empty (Localizado)",
    generatingTitle: "Generating title (Localizado)",
    placeholder: "Clip title (Localizado)",
    editLabel: "Edit clip title (Localizado)",
  },
  chapters: {
    title: "Chapters (Localizado)",
    addHere: "Add here (Localizado)",
    empty: "No chapters yet. (Localizado)",
    remove: "Remove chapter (Localizado)",
    saveFailed: "Failed to save chapters (Localizado)",
    duplicateAtPoint: "A chapter already exists at this point (Localizado)",
    defaultTitle: "Chapter {{count}} (Localizado)",
    seekTo: "Seek to {{time}} (Localizado)",
  },
  editorToolbar: {
    undoTooltip: "Undo (Cmd/Ctrl+Z) (Localizado)",
    playPauseTooltip: "Play / Pause (Space) (Localizado)",
    sourceDuration: "({{duration}} src) (Localizado)",
    previewSpeed: "Preview speed (Localizado)",
    previewSpeedTooltip: "Preview speed while trimming (Localizado)",
    cutSelection: "Cut selection (Localizado)",
    cutSelectedRange: "Cut selected range (Localizado)",
    edit: "Edit (Localizado)",
    playheadEdits: "Playhead edits (Localizado)",
    splitAtPlayhead: "Split at playhead (Localizado)",
    cutBeforePlayhead: "Cut before playhead (Localizado)",
    cutAfterPlayhead: "Cut after playhead (Localizado)",
    panels: "Panels (Localizado)",
    hideChapters: "Hide chapters (Localizado)",
    showChapters: "Show chapters (Localizado)",
    thumbnail: "Thumbnail (Localizado)",
    stitchClips: "Stitch clips (Localizado)",
    zoom: "Zoom (Localizado)",
    zoomOut: "Zoom out (Localizado)",
    fitToWidth: "Fit to width (Localizado)",
    zoomIn: "Zoom in (Localizado)",
    clearAllEdits: "Clear all edits (Localizado)",
    loadingFfmpeg: "Loading ffmpeg… (Localizado)",
    exportMp4: "Export MP4 (Localizado)",
    longExportTitle: "This export is long (Localizado)",
    longExportDescription:
      "The edited video is {{duration}}. ffmpeg.wasm runs in your browser and may run out of memory for very long exports. You can try anyway or download the original file instead. (Localizado)",
    downloadOriginal: "Download original (Localizado)",
    exportAnyway: "Export anyway (Localizado)",
    clearAllEditsTitle: "Clear all edits? (Localizado)",
    clearAllEditsDescription:
      "This removes every trim, blur, and the custom thumbnail from this recording. The original video is never modified. (Localizado)",
    clearEdits: "Clear edits (Localizado)",
    nothingToUndo: "Nothing to undo (Localizado)",
    undoFailed: "Undo failed (Localizado)",
    editsCleared: "Edits cleared (Localizado)",
    clearFailed: "Clear failed (Localizado)",
    selectRangeFirst:
      "Select a range on the waveform or transcript first (Localizado)",
    selectionCut: "Selection cut (Localizado)",
    trimFailed: "Trim failed (Localizado)",
    movePlayheadPastIntro:
      "Move the playhead past the intro you want to cut (Localizado)",
    startCut: "Start cut (Localizado)",
    movePlayheadBeforeEnding:
      "Move the playhead before the ending you want to cut (Localizado)",
    endCut: "End cut (Localizado)",
    splitAdded: "Split added (Localizado)",
    splitFailed: "Split failed (Localizado)",
    videoNotReady: "Video not ready yet (Localizado)",
    exportedMp4: "Exported MP4 (Localizado)",
    exportFailed:
      "Export failed — ffmpeg.wasm can't always handle long videos. Try shorter edits or use the original file. (Localizado)",
  },
  preRecord: {
    modeScreenCamera: "Screen + cam (Localizado)",
    modeScreenOnly: "Screen only (Localizado)",
    modeCameraOnly: "Camera only (Localizado)",
    surfaceWindow: "Window (Localizado)",
    surfaceWindowDescription: "Best for slides or one app (Localizado)",
    surfaceBrowser: "Browser tab (Localizado)",
    surfaceBrowserDescription: "Choose an open tab (Localizado)",
    surfaceScreen: "Screen (Localizado)",
    surfaceScreenDescription: "Capture everything (Localizado)",
    microphoneSelectionUnsupported:
      "This browser does not support microphone device selection. (Localizado)",
    enumerateFailed: "Could not enumerate devices (Localizado)",
    noMicrophone: "No microphone (Localizado)",
    defaultMicrophone: "Default microphone (Localizado)",
    shortMicLabel: "Mic {{id}} (Localizado)",
    defaultCamera: "Default camera (Localizado)",
    shortCameraLabel: "Camera {{id}} (Localizado)",
    noAudio: "No audio (Localizado)",
    noCamera: "No camera (Localizado)",
    loomImportFailed: "Could not import that Loom. (Localizado)",
    fixMicrophoneAccess:
      "Fix microphone access or turn audio off before recording. (Localizado)",
    fixCameraAccess:
      "Fix camera access or switch to Screen mode before recording. (Localizado)",
    captureSource: "Capture source (Localizado)",
    selectedSurface: "{{surface}} selected (Localizado)",
    change: "Change (Localizado)",
    audioAndCamera: "Audio & camera (Localizado)",
    audio: "Audio (Localizado)",
    check: "Check (Localizado)",
    choose: "Choose (Localizado)",
    defaultMicPlaceholder: "Default mic (Localizado)",
    openingMicrophone: "Opening microphone... (Localizado)",
    chooseMicrophone: "Choose microphone... (Localizado)",
    includeAudioAria: "Include audio in this recording (Localizado)",
    tryClipsDesktop: "Try Clips Desktop. (Localizado)",
    cameraOff: "Camera off (Localizado)",
    includeCameraAria: "Include camera in this recording (Localizado)",
    startRecording: "Start recording (Localizado)",
    uploadVideo: "Upload video (Localizado)",
    importLoom: "Import Loom (Localizado)",
    importing: "Importing... (Localizado)",
    import: "Import (Localizado)",
  },
  playerSettings: {
    title: "Settings (Localizado)",
    privacy: "Privacy (Localizado)",
    visibility: "Visibility (Localizado)",
    visibilityPrivate: "Private (Localizado)",
    visibilityOrg: "Organization (Localizado)",
    visibilityPublic: "Public (Localizado)",
    passwordProtection: "Password protection (Localizado)",
    passwordSetPlaceholder:
      "Password is set — type to replace, leave empty + Save to clear (Localizado)",
    noPasswordPlaceholder: "No password (Localizado)",
    expiry: "Expiry (Localizado)",
    viewerOptions: "Viewer options (Localizado)",
    comments: "Comments (Localizado)",
    reactions: "Reactions (Localizado)",
    allowDownloads: "Allow downloads (Localizado)",
    animatedThumbnail: "Animated thumbnail (Localizado)",
    defaultPlaybackSpeed: "Default playback speed (Localizado)",
    callToAction: "Call to action (Localizado)",
    defaultCtaLabel: "Learn more (Localizado)",
    addCta: "+ Add (Localizado)",
    noCtas:
      "No CTAs yet. Add a button that appears during or after the video. (Localizado)",
    buttonLabelPlaceholder: "Button label (Localizado)",
    placementThroughout: "Throughout (Localizado)",
    placementEnd: "At end (Localizado)",
    delete: "Delete (Localizado)",
  },
  recordRoute: {
    pageTitle: "New recording — Clips (Localizado)",
    uploadFailed: "Upload failed (Localizado)",
    uploadFailedAtChunk:
      "Upload failed at chunk {{chunk}}/{{total}}: {{message}} (Localizado)",
    couldNotStartRecording: "Could not start recording (Localizado)",
    couldNotStartRecorder: "Could not start recorder (Localizado)",
    openSettings: "Open settings (Localizado)",
    openedRecorderInNewTab: "Opened recorder in a new tab (Localizado)",
    videoReadyToUpload: "Video is ready to upload (Localizado)",
    videoUploaded: "Video uploaded (Localizado)",
    videoTooLarge: "Video is too large (Localizado)",
    storageNeededToFinishLoomImport:
      "Storage needed to finish Loom import (Localizado)",
    loomImported: "Loom imported (Localizado)",
    couldNotImportLoom: "Could not import that Loom. (Localizado)",
    recordingReadyToUpload: "Recording is ready to upload (Localizado)",
    recordingSaved: "Recording saved (Localizado)",
    noLocalRecordingData:
      "No local recording data is available to download. (Localizado)",
    recordingDownloadStarted: "Recording download started (Localizado)",
    backToLibrary: "Back to library (Localizado)",
    clipsRecorder: "Clips recorder (Localizado)",
    preparingSources: "Preparing sources… (Localizado)",
    recordingScreen:
      "Recording your screen — switch to the window you want to capture (Localizado)",
    largeClipsNeedReencode:
      "Large clips need a quick re-encode before upload. (Localizado)",
    savingRecording: "Saving your recording… (Localizado)",
    sessionExpired: "Session expired (Localizado)",
    sessionExpiredDescription:
      "Your login session has expired. Log in again to start recording. (Localizado)",
    logIn: "Log in (Localizado)",
    betterInDesktop: "Better in the desktop app (Localizado)",
    desktopAppDescription:
      "Menu-bar launch, global shortcuts, auto-updates, and smoother repeat recordings. (Localizado)",
    downloadDesktopApp: "Download desktop app (Localizado)",
    technicalDetails: "Technical details (Localizado)",
    whatToCheck: "What to check (Localizado)",
    downloadRecording: "Download recording (Localizado)",
    openRecorderInTab: "Open recorder in tab (Localizado)",
    connectStorageToFinish:
      "Conecta almacenamiento en la siguiente pantalla: Builder.io (almacenamiento + IA en el plan gratuito) o almacenamiento compatible con S3. Clips terminará de guardarlo.",
    connectStorageToRetryLoom:
      "Conecta almacenamiento en la siguiente pantalla: Builder.io (almacenamiento + IA en el plan gratuito) o almacenamiento compatible con S3. Clips reintentará la importación.",
  },
  dictateRoute: {
    pageTitle: "Dictate · Clips (Localizado)",
    howToUse: "How to use Dictate (Localizado)",
    browserDictation: "Browser dictation (Localizado)",
    browserDictationDescription:
      "Use the button on this page, or press the shortcut while this tab is focused. Browser dictation saves here for copy and cleanup. (Localizado)",
    desktopShortcuts: "Desktop shortcuts (Localizado)",
    desktopShortcutsDescriptionSuffix: ", in the desktop app. (Localizado)",
    holdFn: "Hold Fn (Localizado)",
    browserUnavailable:
      "Browser speech recognition is unavailable here. Use Chrome or the desktop app for global dictation. (Localizado)",
    browserUnavailableShort:
      "Browser speech recognition is unavailable here (Localizado)",
    startSpeaking: "Start speaking... (Localizado)",
    replacedOriginal: "Replaced original with cleaned text (Localizado)",
    noText: "No text (Localizado)",
    emptyTranscript: "Empty transcript (Localizado)",
    replaceOriginal: "Replace original with cleaned (Localizado)",
    cleanupWithAi: "Cleanup with AI (Localizado)",
    cleanupHint:
      'Click "Cleanup with AI" to fix punctuation, casing, and filler words. (Localizado)',
    startFirst: "Start your first dictation (Localizado)",
    emptyDesktopDescription:
      "Hold {{fnKey}} anywhere on your Mac, or press {{modifierKey}} ⇧ Space. Your history will live here. (Localizado)",
    emptyWebDescription:
      "Dictation runs through the desktop app for global shortcuts that work in any app — Slack, your editor, anywhere. (Localizado)",
    downloadDesktopApp: "Download Clips desktop app (Localizado)",
    holdToDictate: "hold to dictate (Localizado)",
    toggle: "toggle (Localizado)",
    desktopCtaTitle: "Dictate from anywhere with the desktop app (Localizado)",
    desktopCtaDescription:
      "Press {{modifierKey}} ⇧ Space in any app. Browser dictation is unreliable — the desktop app is the way to use this. (Localizado)",
    noSpeechCaptured: "No speech captured (Localizado)",
    dictationSaved: "Dictation saved (Localizado)",
    voiceToTextDescription:
      "Voice-to-text dictation with AI cleanup. Get the desktop app to dictate from anywhere with a global shortcut. (Localizado)",
    loadFailed: "Couldn't load dictations. (Localizado)",
    noFilterMatches: "No dictations matching this filter. (Localizado)",
  },
  clipsFinalRaw: {
    splitAtPlayhead: "Dividir en el cabezal (S)",
    selectedCount: "{{count}} seleccionados",
    move: "Mover",
    moveSelected: "Mover {{count}} seleccionados",
    current: "Actual",
    clearSelection: "Borrar selección",
    waitingForStorage: "Esperando almacenamiento",
    savedLocally: "Guardado localmente",
    uploadFailed: "Error de subida",
    connectStorageToFinish:
      "Ábrelo para conectar almacenamiento y terminar de guardar.",
    retryFromClipsMenu:
      "Reintenta desde el menú de Clips; no hace falta grabar de nuevo.",
    removeFailedClip: "Eliminar este clip fallido.",
    remove: "Eliminar",
    viewsCount: "{{count}} visualizaciones",
    recordingMenu: "Menú de grabación",
    moveToFolder: "Mover a carpeta",
    unarchive: "Desarchivar",
    shareNamedMeeting: 'Compartir "{{title}}"',
    shareMeeting: "Compartir reunión",
    shareLink: "Enlace para compartir",
    alreadyHaveIt: "Ya lo tengo",
    link: "Enlace",
    invite: "Invitar",
    inviteFailed: "No se pudo invitar a la persona",
    removePersonFailed: "No se pudo eliminar a la persona",
    passwordProtectedDescription:
      "Este video está protegido. Introduce la contraseña para verlo.",
    password: "Contraseña",
    unlock: "Desbloquear",
    noEngagementData: "Aún no hay datos de interacción.",
    allCaughtUp: "Ya estás al día.",
    someone: "Alguien",
    view: "Ver",
    reply: "Responder",
    commentedOn: "comentó en",
    reactedTo: "reaccionó a",
    mentionedYouIn: "te mencionó en",
    shared: "compartió",
    noCreatorsYet: "Aún no hay creadores.",
    creator: "Creador",
    engagement: "Interacción",
    selectedMicrophoneWaveform: "Forma de onda del micrófono seleccionado",
    goHome: "Ir al inicio",
    testMic: "Probar micrófono",
    archivePageTitle: "Archivo · Clips",
    insightsPageTitle: "Información · Clips",
    folderPageTitle: "Carpeta · Clips",
    spacePageTitle: "Espacio · Clips",
    spacesPageTitle: "Espacios · Clips",
    trashPageTitle: "Papelera · Clips",
  },
  bugReportRoute: {
    pageTitle: "Informe de error · Clips",
    donePageTitle: "Informe de error enviado · Clips",
    eyebrow: "Informe de error",
    title: "Grabar un informe de error",
    description:
      "Captura una reproducción breve con pantalla, voz y contexto del navegador redactado para tu equipo.",
    issueTitleLabel: "Título del problema",
    issueTitlePlaceholder: "¿Qué salió mal?",
    detailsLabel: "Detalles",
    detailsPlaceholder: "¿Qué esperabas que ocurriera?",
    emailLabel: "Tu correo electrónico",
    emailPlaceholder: "tu@example.com",
    severityLabel: "Severidad",
    severityLow: "Baja",
    severityNormal: "Normal",
    severityHigh: "Alta",
    severityUrgent: "Urgente",
    sourceLabel: "Origen",
    sourceUnknown: "Página actual del producto",
    startRecording: "Grabar informe de pantalla",
    privacyNote:
      "Clips guarda la grabación con acceso de espacio de trabajo de forma predeterminada. Las URL y los metadatos se redactan antes de guardarse.",
    doneTitle: "Informe de error enviado",
    doneDescription:
      "La grabación se guardó en Clips y se notificó al producto anfitrión.",
    openRecording: "Abrir grabación",
    copyLink: "Copiar enlace",
    copied: "Copiado",
    returnToProduct: "Volver al producto",
    missingRecording: "No se encontró la grabación",
  },
  meetingsRoute: {
    pageTitle: "Meetings · Clips (Localizado)",
    transcriptPending: "Transcript pending (Localizado)",
    notesPending: "Notes pending (Localizado)",
    pastRecordings: "Past recordings (Localizado)",
    calendarNeedsReconnect:
      "Google Calendar needs to be reconnected to keep showing your upcoming meetings. (Localizado)",
    connectGoogleCalendar: "Connect Google Calendar (Localizado)",
    desktopReminder:
      "Get a desktop reminder when meetings start so recorded notes land in this history automatically. (Localizado)",
    getDesktopApp: "Get desktop app (Localizado)",
    requiredForReminders:
      "Required for meeting reminders and transcription. (Localizado)",
    calendarConnected: "Calendar connected (Localizado)",
    calendarDisconnected: "Calendar disconnected (Localizado)",
    calendarSettings: "Calendar settings (Localizado)",
    connectCalendarReminder:
      "Connect Google Calendar for meeting reminders. (Localizado)",
    disconnectGoogleCalendarTitle: "Disconnect Google Calendar? (Localizado)",
    title: "Meetings (Localizado)",
    intro: "Upcoming calendar meetings and your recorded notes. (Localizado)",
    searchPlaceholder: "Search meetings... (Localizado)",
    clearSearch: "Clear search (Localizado)",
    noMeetingsYet: "No meetings yet (Localizado)",
    noMeetingsDescription:
      "Upcoming calendar meetings show up here, and finished recordings land here once you take notes. (Localizado)",
    noMeetingsMatch: 'No meetings match "{{query}}" (Localizado)',
    refreshing: "Refreshing… (Localizado)",
  },
};

export default messages;
