const dict = { supervision: { exactHandleHint: 'Si el tutor tiene una cuenta privada, escribe el nombre de usuario exacto que te haya compartido.', setupOwn: 'Configurar la supervisión de esta cuenta personal', setupOwnDescription: 'Usa la cuenta que se va a supervisar. Invitar a un tutor la convierte en privada; cancelar la invitación no la vuelve pública.', title: 'Supervisión', entryDescription: 'Tutor, contactos aprobados y autorización de compras', description: 'Acordad las protecciones juntos. Esto registra el consentimiento para supervisar la cuenta, no acredita una tutela legal.', yourAccount: 'Tu cuenta', active: 'Supervisada por {{name}}', activeDescription: 'Tu perfil permanece privado. En las aplicaciones compatibles se aplican los contactos aprobados, las restricciones de contenido y la autorización de compras. Otras actividades pueden no estar disponibles.', orphaned: 'La supervisión sigue activa, pero el tutor no está disponible.', notActive: 'La supervisión no está activa.', invite: 'Invitar a un tutor', inviteConsent: 'Invita a {{name}} a supervisar esta cuenta. Enviar la invitación convierte el perfil en privado, aunque después la canceles. Si acepta, se cerrarán las sesiones actuales y las actividades protegidas requerirán contactos aprobados o autorización de compra.', pending: 'Invitaciones pendientes', pendingDescription: 'Una invitación no activa la supervisión. Ambas personas deben dar su consentimiento.', expires: 'Caduca el {{date}}', accept: 'Aceptar la supervisión', acceptConsent: 'Acepta supervisar a {{name}}. Gestionarás los contactos aprobados y revisarás las compras. Esto no te permite iniciar sesión en su cuenta.', cancelInvitation: 'Cancelar invitación', children: 'Cuentas que supervisas', contacts: 'Contactos aprobados de {{name}}', contactsDescription: 'Un contacto aprobado puede interactuar en las aplicaciones compatibles. Siguen aplicándose los bloqueos y las protecciones de la otra persona.', removeContact: 'Quitar contacto', removeConsent: 'Retira la aprobación de {{name}}. Se comprobará de nuevo el acceso a las conversaciones existentes.', addContact: 'Aprobar un contacto', addConsent: 'Aprueba a {{name}} como contacto de esta cuenta supervisada.', noContacts: 'Aún no hay contactos aprobados.', purchases: 'Autorizaciones de compra', noPurchases: 'No hay autorizaciones de compra.', more: 'Más compras', firstPage: 'Primera página', approvePurchase: 'Autorizar compra', rejectPurchase: 'Rechazar compra', purchaseConsent: 'Revisa cada artículo, opción, vendedor y total. Tu decisión se aplica solo a esta compra exacta.', purchaseBound: 'La autorización solo sirve para esta compra. Los cambios requieren otra autorización; una autorización cancelada no puede reutilizarse.', quantity: 'Cantidad: {{quantity}}', shipping: 'Envío', tax: 'Impuestos', discount: 'Descuento', rounding: 'Ajuste por conversión de moneda', total: 'Total', merchantUnavailable: 'No se puede verificar al vendedor. No es posible autorizar la compra hasta que esté disponible su identidad.', personalOnly: 'La supervisión se gestiona desde una cuenta personal.', account: 'Cuenta', retry: 'Reintentar', saved: 'Cambios guardados.', loadError: 'No se pudo verificar el acceso actual. Inténtalo de nuevo.', changeError: 'No se pudo guardar el cambio. Comprueba el acceso actual y vuelve a intentarlo.', reauthSetup: 'Configura una contraseña o un correo verificado en los ajustes antes de confirmar este cambio.', accountSettings: 'Ajustes de la cuenta', confirm: 'Confirmar', transitionHelp: 'Solicitar ayuda para cambiar o terminar la supervisión', searchLabel: 'Nombre de usuario', search: 'Buscar', noPeople: 'No se encontraron personas disponibles.', status: { pending: 'Pendiente de revisión del tutor', approved: 'Autorizada', rejected: 'Rechazada', reserved: 'Compra en curso', confirmed: 'Compra completada', cancelled: 'Cancelada', }, }, organizationDirectory: { invalidName: 'Usa un nombre de organización en texto plano (hasta 300 caracteres).', review: { title: 'Revisar solicitudes de acceso a organizaciones', forbidden: 'Esta acción requiere autorización vigente del personal de Oxy.', empty: 'No hay solicitudes pendientes de revisión.', hint: 'Revisa la documentación de forma independiente. La aprobación concede acceso de administración a la cuenta existente.', independent: 'Otro revisor debe decidir sobre tu propia solicitud.', evidence: 'Referencia de la documentación de revisión', approved: 'Aprobar acceso', rejected: 'Rechazar solicitud', conflict: 'La solicitud o la organización ha cambiado. Actualiza la lista antes de tomar otra decisión.', failed: 'No se pudo guardar la revisión. Tu decisión no se ha confirmado.', }, title: 'Directorio de organizaciones', search: 'Busca tu organización', searchHint: 'Busca una organización existente antes de crear una cuenta. Su identidad se comparte entre las aplicaciones de Oxy.', empty: 'No se encontraron organizaciones.', retry: 'Reintentar', loadMore: 'Mostrar más', failed: 'No se pudo cargar el directorio de organizaciones.', unclaimed: 'Sin reclamar', claimed: 'Organización administrada', inactive: 'Inactiva', newAccount: 'Crear una nueva cuenta de organización', newAccountHint: 'Crea y administra una organización nueva. Si ya aparece en el directorio, elige la entrada existente.', addDirectory: 'Añadir al directorio', directoryHint: 'Esto crea una entrada compartida sin reclamar. No te da acceso para administrar la organización.', added: 'Organización añadida al directorio', back: 'Volver a la búsqueda', type: 'Tipo de organización', types: { business: 'Empresa', nonprofit: 'Sin ánimo de lucro', public_body: 'Organismo público', community: 'Comunidad', other: 'Otro', }, name: 'Nombre de la organización', legalName: 'Nombre legal', website: 'Sitio web', country: 'Código de país', save: 'Guardar organización', saved: 'Organización actualizada', invalid: 'Revisa los datos. Usa una URL completa y un código de país de dos letras.', saveFailed: 'No se pudo guardar la organización. Inténtalo de nuevo.', claim: 'Solicitar acceso de administración', claimHint: 'Oxy revisará las pruebas de tu autorización. Una solicitud no concede acceso ni verifica tu cargo.', evidence: 'Referencia de la documentación', evidenceHint: 'Indica una referencia a tu expediente privado de verificación o documentación acreditativa. Solo tú y los revisores podéis verla.', claimSent: 'Solicitud enviada para revisión', claimFailed: 'No se pudo enviar la solicitud. Inténtalo de nuevo.', claimedHint: 'Esta organización ya tiene administradores. Contacta con uno para solicitar acceso.', requests: 'Solicitudes de acceso a organizaciones', pending: 'Pendiente de revisión', approved: 'Aprobada', rejected: 'Rechazada', requestError: 'No se pudieron cargar tus solicitudes.', view: 'Datos de la organización', readonly: 'No tienes permiso para editar esta organización.', }, signin: { title: 'Iniciar sesión', subtitle: 'Usa tu cuenta de Oxy', emailAccounts: { title: 'Elige una cuenta', description: '{{identifier}} tiene varias cuentas. Elige con cuál entrar.', }, chooser: { title: 'Elige una cuenta', subtitle: 'Continúa con una de tus cuentas o usa otra.', useAnother: 'Usar otra cuenta', continueAs: 'Continuar como {{name}}', subtitleToApp: 'para continuar en {{app}}', }, addAccountTitle: 'Añadir otra cuenta', addAccountSubtitle: 'Inicia sesión con otra cuenta', actions: { continue: 'Continuar', back: 'Atrás', }, createAccountLink: '¿Nuevo en Oxy? Crea una cuenta', status: { signingIn: 'Iniciando sesión…', }, errors: { notConfigured: 'El inicio de sesión no está disponible', notConfiguredDescription: '{{app}} todavía no está configurada para iniciar sesión. Contacta con quien desarrolla la app.', failed: 'No se pudo iniciar sesión', failedDescription: 'Algo ha ido mal. Inténtalo de nuevo.', rateLimited: 'Demasiados intentos. Vuelve a probar en {{seconds}} s.', invalidCredentials: 'El nombre de usuario, el email o la contraseña no son correctos. Si varias cuentas usan este email, entra con el nombre de usuario.', emailAccountsFull: 'Este email ya tiene todas las cuentas que puede tener.', codeInvalid: 'Ese código no es correcto o ha caducado.', requestExpired: 'Este inicio de sesión ha caducado. Envía un email nuevo.', secondFactorInvalid: 'Ese código no es correcto. Prueba con el actual.', originNotAllowed: 'Aquí no se puede iniciar sesión.', generic: 'Algo ha ido mal. Inténtalo de nuevo.', }, subtitleToApp: 'para continuar en {{app}}', orContinueWith: 'o continúa con', qr: { caption: 'Escanea con Commons para entrar', renew: 'Mostrar un código nuevo', }, terms: { before: 'Al continuar, aceptas nuestros', termsLink: 'Términos del servicio', and: 'y la', privacyLink: 'Política de privacidad', }, noAccount: '¿No tienes cuenta?', createAccount: 'Crear cuenta', identifier: { label: 'Email o nombre de usuario', placeholder: 'tu@ejemplo.com', required: 'Escribe tu email o nombre de usuario.', }, checkEmail: { title: 'Revisa tu email', description: 'Si hay una cuenta con {{identifier}}, le hemos enviado un código y un enlace para iniciar sesión.', codeLabel: 'Código', codeHint: 'Escribe el código del email o abre su enlace en este navegador.', codeHasLetters: '¿Tu código tiene letras?', codeDigitsOnly: '¿Tu código solo tiene números?', resend: 'Enviar un email nuevo', resendIn: 'Enviar un email nuevo en {{seconds}} s', resent: 'Te hemos enviado un email nuevo.', retryLater: 'Ya te hemos enviado varios emails. Espera unos minutos y vuelve a intentarlo.', usePassword: 'Usar tu contraseña', differentAccount: 'Usar otra cuenta', }, password: { title: 'Escribe tu contraseña', label: 'Contraseña', required: 'Escribe tu contraseña.', forgot: '¿La has olvidado? Recibe un código por email', }, secondFactor: { title: 'Verificación en dos pasos', description: 'Escribe el código de tu app de autenticación.', backupDescription: 'Escribe uno de tus códigos de seguridad. Cada uno sirve una sola vez.', label: 'Código de autenticación', backupLabel: 'Código de seguridad', useBackup: 'Usar un código de seguridad', useAuthenticator: 'Usar tu app de autenticación', }, link: { approvedTitle: 'Has iniciado sesión', approvedDescription: 'Vuelve a la app donde pediste iniciar sesión: continuará sola. Puedes cerrar esta pestaña.', otherDeviceTitle: 'Abre el enlace en el mismo navegador', otherDeviceDescription: 'Este enlace solo funciona en el navegador donde pediste iniciar sesión. Ábrelo allí o escribe en la app el código del email.', invalidTitle: 'Este enlace no se puede usar', invalidDescription: 'Ha caducado o ya se ha usado. Pide un email nuevo en la app o escribe el código del último.', }, }, signup: { title: 'Crea tu cuenta', subtitle: 'Elige tu nombre de usuario. Después confirmamos tu email.', createInCommons: 'Crearla en Commons', backToSignInLink: '¿Ya tienes cuenta? Inicia sesión', username: { label: 'Nombre de usuario', placeholder: 'tunombre', required: 'Elige un nombre de usuario.', taken: 'Ese nombre de usuario ya está en uso.', }, email: { title: '¿Cuál es tu email?', subtitle: 'Lo usas para iniciar sesión: te enviamos un código cada vez. Nadie más lo ve.', label: 'Email', placeholder: 'tu@ejemplo.com', invalid: 'Escribe un email válido.', }, commonsSubtitle: 'O crea tu identidad en Commons y guarda tu propia clave.', laterNote: 'Más adelante puedes añadir una contraseña o una app de autenticación en los ajustes de seguridad de tu cuenta.', }, profile: { title: 'Perfil', edit: 'Editar perfil', noBio: 'Este usuario aún no tiene biografía.', joinedOn: 'Se unió el {{date}}', bornOn: 'Nació el {{date}}', reputation: 'Reputación', followers: 'Seguidores', following: 'Siguiendo', more: '+ {{count}} más', errorTitle: 'Error de perfil', errorSubtext: 'Esto puede ocurrir si el usuario no existe o el servicio de perfiles no está disponible.', }, language: { title: 'Idioma', subtitle: 'Elige los idiomas que usas. El primero es tu idioma de interfaz principal.', current: 'Idioma actual', selected: 'Tus idiomas', available: 'Idiomas disponibles', primary: 'Principal', remove: 'Quitar', changed: 'Idioma cambiado a {{lang}}', saveFailed: 'Error al guardar la preferencia de idioma', search: 'Buscar idiomas', }, editProfile: { title: 'Editar perfil', subtitle: 'Gestiona tu perfil y preferencias', notSet: 'Sin definir', sections: { profilePicture: 'Foto de perfil', basicInfo: 'Información básica', about: 'Sobre ti', quickActions: 'Acciones rápidas', security: 'Seguridad', }, items: { avatar: { subtitle: 'Actualiza tu foto de perfil', }, displayName: { title: 'Nombre para mostrar', subtitle: 'Así aparecerá tu nombre para los demás', add: 'Añade tu nombre para mostrar', firstName: 'Nombre', firstNamePlaceholder: 'Introduce tu nombre', lastName: 'Apellido', lastNamePlaceholder: 'Introduce tu apellido (opcional)', invalidChars: 'Usa solo letras, espacios, apóstrofos y separadores de nombre', invalidTitle: 'Usa texto plano sin < ni > (hasta 300 caracteres)', }, username: { checking: 'Comprobando disponibilidad…', changeHint: 'Este nombre permite encontrarte en Oxy. Al cambiarlo, tu nombre de usuario anterior puede quedar disponible para otra persona.', title: 'Usuario', subtitle: 'Tu identificador único en la plataforma', label: 'Usuario', placeholder: 'Elige un usuario', choose: 'Elige un usuario', required: 'El usuario es obligatorio', tooShort: 'El usuario debe tener al menos 3 caracteres', }, email: { title: 'Correo electrónico', subtitle: 'Tu dirección de correo principal', label: 'Correo electrónico', placeholder: 'Introduce tu correo electrónico', add: 'Añade tu correo electrónico', invalid: 'Introduce una dirección de correo válida', }, bio: { title: 'Biografía', subtitle: 'Cuenta algo sobre ti', label: 'Biografía', placeholder: 'Cuenta algo sobre ti', }, phone: { title: 'Número de teléfono', subtitle: 'Tu número de teléfono de contacto', label: 'Número de teléfono', placeholder: 'Introduce tu número de teléfono', }, address: { title: 'Dirección', subtitle: 'Tu dirección física', label: 'Dirección', placeholder: 'Introduce tu dirección', }, birthday: { title: 'Fecha de nacimiento', subtitle: 'Tu fecha de nacimiento', label: 'Fecha de nacimiento', placeholder: 'AAAA-MM-DD', day: 'Día', month: 'Mes', year: 'Año', }, locations: { title: 'Ubicaciones', subtitle: 'Lugares donde has estado o vives', add: 'Añade tus ubicaciones', placeholder: 'Introduce el nombre del lugar', yourLocations: 'Tus ubicaciones', count: '{{count}} ubicación añadida', count_plural: '{{count}} ubicaciones añadidas', }, links: { title: 'Enlaces', subtitle: 'Comparte tu web, perfiles sociales, etc.', add: 'Añade tus enlaces', placeholder: 'Introduce la URL', yourLinks: 'Tus enlaces', count: '{{count}} enlace añadido', count_plural: '{{count}} enlaces añadidos', }, previewProfile: { title: 'Previsualizar perfil', subtitle: 'Ver cómo se ve tu perfil para otros', }, privacySettings: { title: 'Ajustes de privacidad', subtitle: 'Controla quién puede ver tu perfil', }, verifyAccount: { title: 'Verificar cuenta', subtitle: 'Obtén una insignia verificada', }, }, confirms: { removeAvatar: '¿Eliminar tu foto de perfil?', }, crop: { title: 'Recortar avatar', subtitle: 'Pellizca para acercar, arrastra para colocar', noImage: 'No hay imagen para recortar', reset: 'Restablecer', resetToCenter: 'Restablecer al centro', confirm: 'Usar foto', cancel: 'Cancelar', saving: 'Guardando…', helper: 'El círculo recortado es lo que aparecerá en tu perfil. Pellizca para acercar, arrastra para colocar.', zoom: '{{value}}×', zoomIn: 'Acercar', zoomOut: 'Alejar', a11yImage: 'Vista previa del recorte. Pellizca para acercar y arrastra para reposicionar la imagen.', a11yReset: 'Restablecer el recorte a la posición predeterminada', a11yResetAnnouncement: 'Recorte restablecido', }, toasts: { profileUpdated: 'Perfil actualizado correctamente', updateFailed: 'Error al actualizar el perfil', avatarRemoved: 'Avatar eliminado', selectImage: 'Selecciona un archivo de imagen', avatarUnchanged: 'El avatar no cambió', avatarSelected: 'Avatar seleccionado', avatarUpdated: 'Avatar actualizado', updateAvatarFailed: 'Error al actualizar el avatar', noActiveSession: 'No hay sesión activa', cropMeasureFailed: 'No se pudo medir la imagen', cropNotReady: 'La imagen aún no está lista', cropFailed: 'No se pudo recortar la imagen', }, changeAvatar: 'Cambiar avatar', }, changeAvatar: { title: 'Cambiar foto de perfil', sources: { upload: { title: 'Subir desde el dispositivo', description: 'Elige una foto de tu galería', }, camera: { title: 'Hacer una foto', description: 'Usa tu cámara', }, files: { title: 'Mis archivos de Oxy', description: 'Elige una imagen que ya has subido', }, remove: { title: 'Eliminar la foto actual', description: 'Vuelve a tus iniciales', }, }, remove: { confirmTitle: '¿Eliminar la foto de perfil?', confirmMessage: 'Tu perfil mostrará tus iniciales. Puedes añadir una foto nueva cuando quieras.', confirmLabel: 'Eliminar', }, permission: { libraryDenied: 'Oxy necesita acceso a tus fotos para subir una imagen.', cameraDenied: 'Oxy necesita acceso a tu cámara para hacer una foto.', openSettings: 'Abrir ajustes', }, errors: { pickerUnavailable: 'La selección de fotos no está disponible en este dispositivo.', cameraUnavailable: 'La cámara no está disponible en este dispositivo.', pickFailed: 'No se pudo abrir el selector de fotos.', cameraFailed: 'No se pudo abrir la cámara.', loadImageFailed: 'No se pudo cargar la imagen seleccionada.', }, a11y: { currentPhoto: 'Tu foto de perfil actual', }, }, common: { stepOf: 'Paso {{step}} de {{total}}', actions: { back: 'Atrás', continue: 'Continuar', next: 'Siguiente', getStarted: 'Comenzar', createAccount: 'Crear cuenta', signIn: 'Entrar', signOut: 'Cerrar sesión', verify: 'Verificar', resetPassword: 'Restablecer contraseña', signedOut: 'Sesión cerrada', close: 'Cerrar', delete: 'Eliminar', tryAgain: 'Reintentar', }, cancel: 'Cancelar', revoke: 'Revocar', retry: 'Reintentar', save: 'Guardar', saved: 'Guardado correctamente', saving: 'Guardando...', unnamed: 'Sin nombre', accountFallback: 'Cuenta {{handle}}', links: { recoverAccount: 'Recuperar tu cuenta', signUp: 'Registrarse', }, labels: { username: 'Usuario', email: 'Correo electrónico', password: 'Contraseña', confirmPassword: 'Confirmar contraseña', }, errors: { signOutFailed: 'Hubo un problema al cerrar sesión. Inténtalo de nuevo.', signOutAllFailed: 'Hubo un problema al cerrar sesión en todas las cuentas. Inténtalo de nuevo.', }, confirms: { signOut: '¿Seguro que quieres cerrar sesión?', signOutAll: '¿Seguro que quieres cerrar sesión en todas las cuentas?', }, status: { notSignedIn: 'No has iniciado sesión', loading: 'Cargando...', }, back: 'Atrás', remove: 'Eliminar', }, accountOverview: { title: 'Cuenta', sections: { profile: 'Perfil', accountSettings: 'Configuración de la cuenta', accountManagement: 'Gestión de la cuenta', additionalAccounts: 'Cuentas adicionales', quickActions: 'Acciones rápidas', support: 'Soporte y ajustes', actions: 'Acciones de la cuenta', }, actions: { manage: 'Gestionar', }, loadingAdditional: { title: 'Cargando cuentas...', subtitle: 'Espera mientras cargamos tus cuentas adicionales', }, additional: { noAccounts: { title: 'No hay otras cuentas', subtitle: 'Añade otra cuenta para cambiar entre ellas', }, }, items: { addAccount: { title: 'Añadir otra cuenta', subtitle: 'Inicia sesión con otra cuenta', }, signOutAll: { title: 'Cerrar sesión en todas las cuentas', subtitle: 'Eliminar todas las cuentas de este dispositivo', }, accountSwitcher: { switchPrompt: '¿Cambiar a {{username}}?', titleShow: 'Mostrar conmutador de cuentas', titleHide: 'Ocultar conmutador de cuentas', subtitleHide: 'Ocultar el conmutador de cuentas', subtitleSwitchBetween: 'Cambiar entre {{count}} cuentas', subtitleLoading: 'Cargando cuentas adicionales...', subtitleManageMultiple: 'Gestionar varias cuentas', }, editProfile: { title: 'Editar perfil', subtitle: 'Actualiza tu información personal', }, security: { title: 'Seguridad y privacidad', subtitle: 'Seguridad y ajustes de privacidad', }, notifications: { title: 'Notificaciones', subtitle: 'Gestiona tus preferencias de notificación', }, billing: { title: 'Gestión de facturación', subtitle: 'Métodos de pago y facturas', coming: '¡La gestión de facturación estará disponible pronto!', }, downloadData: { title: 'Descargar mis datos', subtitle: 'Exporta la información de tu cuenta', confirmTitle: 'Descargar datos de la cuenta', confirmMessage: 'Elige el formato para exportar los datos de tu cuenta:', downloading: 'Preparando descarga...', success: 'Datos descargados correctamente', error: 'Error al descargar los datos', }, deleteAccount: { title: 'Eliminar cuenta', subtitle: 'Elimina tu cuenta permanentemente', confirmTitle: 'Eliminar cuenta', confirmMessage: 'Esta acción no se puede deshacer. Esto eliminará permanentemente tu cuenta y todos los datos asociados.\n\n¿Seguro que quieres eliminar tu cuenta?', finalConfirm: 'Esta es tu advertencia final. Tu cuenta será eliminada permanentemente y no se podrá recuperar. Escribe "{{username}}" para confirmar.', confirm: 'Eliminar para siempre', passwordRequired: 'Se requiere confirmación de contraseña. Por favor, usa un modal con entrada de contraseña para completar la eliminación de la cuenta.', missingFields: 'Se requiere contraseña y confirmación', confirmMismatch: 'El texto de confirmación no coincide con el usuario', success: 'Cuenta eliminada correctamente', error: 'Error al eliminar la cuenta', }, preferences: { title: 'Preferencias de la cuenta', subtitle: 'Personaliza tu experiencia', coming: '¡Las preferencias de la cuenta estarán disponibles pronto!', }, help: { title: 'Ayuda y soporte', subtitle: 'Obtén ayuda con tu cuenta', coming: '¡La ayuda y soporte estarán disponibles pronto!', }, connectedApps: { title: 'Aplicaciones conectadas', subtitle: 'Gestiona el acceso de terceros', coming: '¡Las aplicaciones conectadas estarán disponibles pronto!', }, about: { title: 'Acerca de', subtitle: 'Versión e información de la app', }, signOut: { title: 'Cerrar sesión', subtitle: 'Cierra sesión en tu cuenta actual', }, history: { title: 'Historial', subtitle: 'Ver y gestionar tu historial de búsqueda', }, searchSettings: { title: 'Configuración de búsqueda', subtitle: 'SafeSearch y personalización', }, language: { title: 'Idioma', subtitle: 'Elige tu idioma preferido', }, privacyPolicy: { title: 'Política de privacidad', subtitle: 'Cómo manejamos tus datos', }, termsOfService: { title: 'Términos de servicio', subtitle: 'Términos y condiciones de uso', }, }, manageComing: '¡La gestión de tu cuenta Oxy estará disponible pronto!', addAccountComing: '¡La función de agregar otra cuenta estará disponible pronto!', }, accountCenter: { sections: { quickActions: 'Acciones rápidas', accountManagement: 'Gestión de la cuenta', multiAccount: 'Multi‑cuenta', addAccount: 'Añadir cuenta', moreOptions: 'Más opciones', accounts: 'Cuentas', }, quickActions: { overview: 'Resumen', editProfile: 'Editar perfil', sessions: 'Sesiones', premium: 'Premium', billing: 'Facturación', switch: 'Cambiar', }, items: { accountOverview: { title: 'Resumen de la cuenta', subtitle: 'Información completa de la cuenta', }, editProfile: { title: 'Editar perfil', subtitle: 'Gestiona tu perfil y preferencias', }, manageSessions: { title: 'Gestionar sesiones', subtitle: 'Seguridad y dispositivos activos', }, fileManagement: { title: 'Gestión de archivos', subtitle: 'Sube, descarga y gestiona tus archivos', }, premium: { title: 'Suscripciones Oxy+', manage: 'Gestiona tu plan premium', upgrade: 'Mejorar a funciones premium', }, billing: { title: 'Gestión de facturación', subtitle: 'Métodos de pago y facturas', }, switchAccount: { title: 'Cambiar de cuenta', subtitle: '{{count}} cuentas disponibles', }, addAccount: { title: 'Añadir otra cuenta', subtitle: 'Inicia sesión con otra cuenta', }, notifications: { title: 'Notificaciones', subtitle: 'Gestiona la configuración de notificaciones', coming: '¡La función de notificaciones estará disponible pronto!', }, appInfo: { title: 'Información de la app', subtitle: 'Versión y detalles del sistema', }, }, signingOut: 'Cerrando sesión...', version: 'Versión {{version}}', }, accountSwitcher: { loading: 'Cargando cuentas...', toasts: { contextRemoved: 'Se quitó {{account}}', contextRemoveFailed: 'Hubo un problema al quitar esa cuenta. Inténtalo de nuevo.', principalRemoved: 'Se cerró la sesión de {{name}} en este dispositivo', principalRemoveFailed: 'Hubo un problema al cerrar esa sesión. Inténtalo de nuevo.', activateFailed: 'Hubo un problema al cambiar de cuenta. Inténtalo de nuevo.', }, confirms: { removeContextTitle: '¿Quitar esta cuenta?', removeContext: '¿Dejar de usar {{account}} como {{person}} en este dispositivo? Quien más acceda a {{account}} aquí lo conserva.', removePrincipalTitle: '¿Cerrar sesión en este dispositivo?', removePrincipal: '¿Cerrar la sesión de {{name}} en este dispositivo? Se quitan todas las cuentas a las que llega desde aquí. No afecta a nadie más.', }, scanQr: 'Escanear código QR', qrHeadline: 'Inicia sesión con tu identidad de Oxy', signInWithOxy: 'Inicia sesión con Oxy', signUpWithOxy: 'Regístrate con Oxy', getCommons: 'Descargar Commons', commonsNotInstalled: '¿No tienes Commons? Descarga la app para iniciar sesión con tu Oxy ID.', showQrAnyway: 'Tengo Commons en otro dispositivo', switchWhileSignedInAs: 'Cambiar de cuenta, con la sesión iniciada como {{name}}', manageOnDevice: 'Gestionar cuentas en este dispositivo', continueWithOxy: 'Continuar con Oxy', havingTrouble: '¿Algún problema?', progress: { preparing: 'Preparando la solicitud', awaitingApproval: 'Esperando la aprobación', scanWithCommons: 'Escanea con Commons en tu móvil', continueInCommons: 'Continúa en Commons', checkCommons: 'Revisa Commons en tu móvil', openedInCommons: 'Abierto en Commons', confirming: 'Confirmando identidad', confirmed: 'Identidad confirmada', }, context: { unavailable: 'No disponible ahora mismo', operatedBy: 'Gestionada por {{name}}', remove: 'Quitar {{account}} de {{person}}', }, principal: { signOut: 'Cerrar la sesión de {{name}} en este dispositivo', }, signInFailures: { denied: 'Se rechazó el inicio de sesión en Commons.', expired: 'La solicitud de inicio de sesión ha caducado. Inténtalo de nuevo.', network: 'No se pudo conectar con Oxy. Comprueba tu conexión e inténtalo de nuevo.', notConfigured: 'Esta app aún no está preparada para iniciar sesión.', unsupportedFlow: 'Este inicio de sesión no se puede completar aquí.', claimFailed: 'Se aprobó el inicio de sesión, pero no pudimos completarlo. Inténtalo de nuevo.', generic: 'No se pudo iniciar sesión. Inténtalo de nuevo.', }, linkOpenFailed: 'No se pudo abrir el enlace. Inténtalo de nuevo.', }, reputation: { faq: { title: 'Preguntas frecuentes sobre reputación', subtitle: 'Preguntas frecuentes sobre el sistema de reputación', search: 'Buscar en las FAQ...', noResults: 'No se encontraron preguntas que coincidan con "{{query}}"', items: { what: { q: '¿Qué es la reputación?', a: 'La reputación es un reconocimiento de tus acciones positivas en el ecosistema de Oxy. No se puede enviar ni recibir directamente.', }, earn: { q: '¿Cómo gano reputación?', a: 'Ayudando a otros, reportando errores, contribuyendo contenido y participando en eventos de la comunidad.', }, lose: { q: '¿Puedo perder reputación?', a: 'La reputación puede reducirse por acciones negativas o por incumplir las reglas de la comunidad.', }, use: { q: '¿Qué puedo hacer con la reputación?', a: 'Desbloquea recompensas, insignias y funciones especiales a medida que ganas más reputación.', }, transfer: { q: '¿Puedo transferir reputación a otros?', a: 'No, la reputación no se puede enviar ni recibir. Solo se gana con tus acciones.', }, support: { q: '¿Cómo obtengo soporte?', a: 'Contacta con el soporte de Oxy a través de la app o el sitio web para cualquier pregunta relacionada con la reputación.', }, }, }, rules: { title: 'Reglas de reputación', subtitle: 'Cómo ganar puntos de reputación', empty: 'No se encontraron reglas.', }, leaderboard: { title: 'Clasificación de reputación', subtitle: 'Mayores contribuidores de la comunidad', empty: 'No hay datos de clasificación.', }, rewards: { title: 'Recompensas de reputación', subtitle: 'Desbloquea funciones especiales y reconocimiento', intro: '¡Desbloquea funciones especiales y reconocimiento ganando reputación!', earlyAccess: { title: '🎉 Acceso anticipado', desc: 'Obtén acceso anticipado a nuevas funciones con 100+ de reputación.', }, badge: { title: '🏅 Insignia de la comunidad', desc: 'Gana una insignia especial con 500+ de reputación.', }, featured: { title: '🌟 Miembro destacado', desc: 'Destácate en la comunidad con 1000+ de reputación.', }, moreComing: '¡Más recompensas próximamente!', }, center: { balance: 'Saldo de reputación', actions: { leaderboard: 'Clasificación', rules: 'Reglas', about: 'Acerca de', rewards: 'Recompensas', faq: 'FAQ', }, info: 'La reputación solo se puede ganar con acciones positivas en el ecosistema de Oxy. No se puede enviar ni recibir directamente.', history: 'Historial de reputación', noHistory: 'Aún no hay historial de reputación.', noDescription: 'Sin descripción', }, about: { title: 'Acerca de la reputación', subtitle: 'Aprende sobre el sistema de reputación (Oxy Trust)', intro: 'La reputación es un reconocimiento de tus acciones positivas en el ecosistema de Oxy. No se puede enviar ni recibir directamente, solo se gana contribuyendo a la comunidad.', how: { title: 'Cómo ganar reputación', help: 'Ayudando a otros usuarios', report: 'Reportando errores', contribute: 'Contribuyendo contenido', participate: 'Participando en eventos', other: 'Otras acciones positivas', }, why: { title: '¿Por qué la reputación?', text: 'La reputación desbloquea funciones especiales y reconocimiento en el ecosistema de Oxy. ¡Cuanto más contribuyas, más ganarás!', }, }, achievements: { unlocked: 'Logros desbloqueados', locked: 'Logros bloqueados', firstStep: 'Primer paso', firstStepDesc: 'Ganaste tu primer punto de reputación', novice: 'Novato', noviceDesc: 'Alcanzaste 10 puntos de reputación', contributor: 'Contribuidor', contributorDesc: 'Alcanzaste 50 puntos de reputación', risingStar: 'Estrella en ascenso', risingStarDesc: 'Alcanzaste 100 puntos de reputación', earlyAdopter: 'Pionero', earlyAdopterDesc: 'Parte de la comunidad desde el inicio', communityHero: 'Héroe de la comunidad', communityHeroDesc: 'Alcanzaste 500 puntos de reputación', legend: 'Leyenda', legendDesc: 'Alcanzaste 1000 puntos de reputación', phoenix: 'Fénix', phoenixDesc: 'Alcanzaste 2500 puntos de reputación', unstoppable: 'Imparable', unstoppableDesc: 'Alcanzaste 5000 puntos de reputación', bugHunter: 'Cazador de errores', bugHunterDesc: 'Reportaste errores útiles', helper: 'Ayudante', helperDesc: 'Ayudaste a 10 usuarios', streakMaster: 'Maestro de rachas', streakMasterDesc: 'Racha de actividad de 7 días', }, }, welcomeNew: { navTitle: 'Bienvenida', welcome: { titleWithName: 'Te damos la bienvenida, {{username}} 👋', title: 'Te damos la bienvenida 👋', body: 'Acabas de crear una cuenta en un espacio tranquilo y ético. Unas pocas cosas rápidas — y listo.', }, account: { title: 'Una sola cuenta. Simple.', bullets: [ 'Una identidad en todo', 'Sin volver a iniciar sesión todo el tiempo', 'Tus preferencias van contigo', ], }, principles: { title: 'En qué creemos', bullets: [ 'Privacidad por defecto', 'Sin feeds manipuladores', 'Tú decides qué compartir', 'No vendemos tus datos', ], }, reputation: { title: 'Reputación = Confianza y crecimiento', body: 'Oxy Trust es un sistema de reputación que reacciona a lo que haces. Las acciones útiles, respetuosas y constructivas la aumentan. Las acciones dañinas o de poco esfuerzo la reducen. Más reputación puede desbloquear beneficios; poca reputación puede limitar funciones. Mantiene la justicia y recompensa la contribución real.', }, name: { title: '¿Cuál es tu nombre?', body: 'Añade tu nombre para que la gente sepa quién eres.', firstLabel: 'Nombre', firstPlaceholder: 'Tu nombre', lastLabel: 'Apellidos', lastPlaceholder: 'Tus apellidos', saveFailed: 'No se pudo guardar tu nombre', }, avatar: { title: 'Hazlo tuyo', body: 'Añade un avatar para que te reconozcan. Se mostrará donde aparezcas aquí. Puedes omitirlo — puedes añadirlo más tarde.', add: 'Añadir avatar', change: 'Cambiar avatar', }, ready: { title: '¡Todo listo!', body: 'Explora. Contribuye. Gana reputación. Mantén el control.', }, actions: { back: 'Atrás', next: 'Siguiente', skip: 'Omitir', enter: 'Entrar', continue: 'Continuar', }, trust: { title: 'Oxy Trust = Confianza y crecimiento', body: 'Oxy Trust es un sistema de reputación que reacciona a lo que haces. Las acciones útiles, respetuosas y constructivas ganan reputación. Lo dañino o de poco esfuerzo la reduce. Más reputación eleva tu nivel de confianza y puede desbloquear beneficios; una reputación baja puede limitar funciones. Mantiene las cosas justas y recompensa la contribución real.', }, }, history: { title: 'Historial', actions: 'Acciones', recent: 'Historial reciente', loading: 'Cargando historial...', empty: 'Aún no hay historial', justNow: 'Justo ahora', minutesAgo: 'minutos atrás', hoursAgo: 'horas atrás', daysAgo: 'días atrás', deleteLast15Minutes: { title: 'Eliminar últimos 15 minutos', subtitle: 'Eliminar entradas recientes del historial', confirm: '¿Eliminar los últimos 15 minutos del historial?', success: 'Últimos 15 minutos eliminados', error: 'Error al eliminar el historial', }, clearAll: { title: 'Borrar todo el historial', subtitle: 'Eliminar todas las entradas del historial', confirm: '¿Borrar todo el historial? Esto no se puede deshacer.', success: 'Historial borrado', error: 'Error al borrar el historial', }, }, searchSettings: { title: 'Configuración de búsqueda', safeSearch: { title: 'SafeSearch', label: 'Activar SafeSearch', description: 'Filtrar contenido explícito de los resultados de búsqueda', updated: 'Configuración de SafeSearch actualizada', error: 'Error al actualizar SafeSearch', }, personalization: { title: 'Personalización de búsqueda', label: 'Búsqueda personalizada', description: 'Usa tu actividad para mejorar los resultados de búsqueda', updated: 'Personalización de búsqueda actualizada', error: 'Error al actualizar la personalización', }, searchPersonalization: { error: 'No se pudo actualizar la personalización', }, }, privacySettings: { title: 'Configuración de privacidad', loadError: 'Error al cargar la configuración de privacidad', updated: 'Configuración de privacidad actualizada', updateError: 'Error al actualizar la configuración de privacidad', sections: { account: 'PRIVACIDAD DE LA CUENTA', interactions: 'INTERACCIONES', activity: 'ACTIVIDAD Y DATOS', content: 'CONTENIDO Y SEGURIDAD', blockedUsers: 'USUARIOS BLOQUEADOS', restrictedUsers: 'USUARIOS RESTRINGIDOS', }, noBlockedUsers: 'No hay usuarios bloqueados', noRestrictedUsers: 'No hay usuarios restringidos', unblock: 'Desbloquear', unblockError: 'Error al desbloquear al usuario', unrestrict: 'Quitar restricción', unrestrictError: 'Error al quitar la restricción del usuario', restrictedDescription: 'Interacciones limitadas', userUnblocked: 'Usuario desbloqueado', userUnrestricted: 'Restricción del usuario eliminada', isPrivateAccount: 'Cuenta privada', isPrivateAccountDesc: 'Solo los seguidores aprobados pueden ver tus publicaciones', profileVisibility: 'Visibilidad del perfil', profileVisibilityDesc: 'Controla quién puede ver tu perfil', hideOnlineStatus: 'Ocultar estado en línea', hideOnlineStatusDesc: 'No mostrar cuando estás en línea', hideLastSeen: 'Ocultar última vez visto', hideLastSeenDesc: 'No mostrar cuándo estuviste activo por última vez', allowTagging: 'Permitir etiquetado', allowTaggingDesc: 'Permite que otros te etiqueten en publicaciones', allowMentions: 'Permitir menciones', allowMentionsDesc: 'Permite que otros te mencionen', allowDirectMessages: 'Permitir mensajes directos', allowDirectMessagesDesc: 'Permite que otros te envíen mensajes directos', hideReadReceipts: 'Ocultar confirmaciones de lectura', hideReadReceiptsDesc: 'No mostrar confirmaciones de lectura en mensajes', showActivity: 'Mostrar estado de actividad', showActivityDesc: 'Mostrar tu actividad en tu perfil', dataSharing: 'Compartir datos', dataSharingDesc: 'Permitir compartir datos para personalización', locationSharing: 'Compartir ubicación', locationSharingDesc: 'Compartir tu ubicación', analyticsSharing: 'Compartir análisis', analyticsSharingDesc: 'Permitir recopilación de datos de análisis', sensitiveContent: 'Mostrar contenido sensible', sensitiveContentDesc: 'Permitir contenido sensible o explícito', autoFilter: 'Filtro automático', autoFilterDesc: 'Filtrar automáticamente contenido inapropiado', muteKeywords: 'Silenciar palabras clave', muteKeywordsDesc: 'Ocultar publicaciones que contengan palabras clave silenciadas', blockScreenshots: 'Bloquear capturas de pantalla', blockScreenshotsDesc: 'Evitar capturas de pantalla de tu contenido', }, accountVerification: { title: 'Verificación de cuenta', description: 'Solicita una insignia verificada para tu cuenta. Las cuentas verificadas ayudan a establecer autenticidad y credibilidad.', sections: { request: 'SOLICITUD DE VERIFICACIÓN', benefits: 'Qué te aporta la verificación', }, reasonLabel: 'Motivo de la verificación *', reasonPlaceholder: 'Explica por qué necesitas una insignia verificada (p. ej., figura pública, marca, organización)', reasonRequired: 'Por favor, proporciona un motivo para la verificación', evidenceLabel: 'Evidencia (Opcional)', evidencePlaceholder: 'Proporciona documentación de respaldo o enlaces (p. ej., sitio web oficial, perfiles de redes sociales)', submit: 'Enviar solicitud', submitError: 'Error al enviar la solicitud de verificación', successTitle: 'Solicitud enviada', successMessage: 'Tu solicitud de verificación ha sido enviada. ID de solicitud: {{requestId}}', ok: 'OK', error: 'Servicio no disponible', note: 'Nota: Las solicitudes de verificación se revisan manualmente y pueden tardar varios días. Te notificaremos cuando tu solicitud haya sido revisada.', heroTitle: 'Consigue una insignia de verificación', benefits: { authenticity: 'Confirma que tu identidad es auténtica y de confianza', badge: 'Muestra una insignia de verificación en toda la plataforma', credibility: 'Genera credibilidad ante quienes te siguen', }, }, help: { title: 'Ayuda y soporte', options: 'Obtener ayuda', resources: 'Recursos', contactError: 'Error al abrir el cliente de correo', reportError: 'Error al abrir el cliente de correo', linkError: 'Error al abrir el enlace', faqComing: 'FAQ próximamente', faq: { title: 'Preguntas frecuentes', subtitle: 'Encuentra respuestas a preguntas comunes', }, alia: { title: 'Pide ayuda a Alia', subtitle: 'Obtén ayuda con tu cuenta de Oxy', openError: 'No se pudo abrir Alia. Inténtalo de nuevo.', }, contact: { title: 'Contactar con soporte', subtitle: 'Obtén ayuda de nuestro equipo de soporte', }, reportBug: { summary: 'Título', summaryRequired: 'Añade un título breve.', description: '¿Qué ha ocurrido?', descriptionRequired: 'Describe el problema.', descriptionHint: '¿Qué estabas haciendo? ¿Qué esperabas que ocurriera?', emailHint: 'Continúa en tu app de correo para revisar y enviar el informe.', continueEmail: 'Continuar en correo', title: 'Reportar un error', subtitle: 'Ayúdanos a mejorar reportando problemas', }, documentation: { title: 'Documentación', subtitle: 'Guías de usuario y tutoriales', }, community: { title: 'Comunidad', subtitle: 'Únete a nuestra comunidad', }, developersPortal: { title: 'Portal de desarrolladores', subtitle: 'Documentación de API y recursos para desarrolladores', }, }, legal: { title: 'Documentos legales', documents: 'Documentos', policies: 'Políticas y directrices', opening: 'Abriendo documento...', openError: 'Error al abrir el documento', privacyPolicy: { title: 'Política de privacidad', subtitle: 'Cómo manejamos tus datos', }, termsOfService: { title: 'Términos de servicio', subtitle: 'Términos y condiciones de uso', }, communityGuidelines: { title: 'Directrices de la comunidad', subtitle: 'Reglas y expectativas para nuestra comunidad', }, dataRetention: { title: 'Política de retención de datos', subtitle: 'Cuánto tiempo conservamos tus datos', }, contentModeration: { title: 'Política de moderación de contenido', subtitle: 'Cómo moderamos el contenido', }, childSafety: { title: 'Política de seguridad infantil', subtitle: 'Protegiendo a los menores en nuestra plataforma', }, cookiePolicy: { title: 'Política de cookies', subtitle: 'Cómo usamos cookies y tecnologías similares', }, }, userList: { followersDescription: 'Personas que siguen esta cuenta.', followingDescription: 'Cuentas que sigue esta persona.', search: 'Buscar cuentas', searchPlaceholder: 'Buscar por nombre o usuario', noSearchResults: 'No hay cuentas que coincidan con tu búsqueda.', followers: 'Seguidores', following: 'Siguiendo', noFollowers: 'Aún no hay seguidores', noFollowersDesc: 'Cuando alguien siga a este usuario, aparecerá aquí.', noFollowing: 'No sigue a nadie', noFollowingDesc: 'Cuando este usuario siga a alguien, aparecerá aquí.', }, sessionManagement: { title: 'Sesiones activas', subtitle: 'Gestiona tus sesiones activas en todos los dispositivos', loading: 'Cargando sesiones...', lastRefreshed: 'Última actualización {{time}}', currentSession: 'Sesión actual', sessionLabel: 'Sesión {{id}}...', switch: 'Cambiar', logout: 'Cerrar sesión', active: 'Activa', logoutOthers: { title: 'Cerrar otras sesiones', noOtherSessions: 'No hay otras sesiones', subtitle: 'Finalizar todas las sesiones excepto esta', }, logoutAll: { title: 'Cerrar todas las sesiones', subtitle: 'Finalizar todas las sesiones incluyendo esta', }, empty: 'No se encontraron sesiones activas', close: 'Cerrar', toasts: { loadFailed: 'Error al cargar las sesiones. Inténtalo de nuevo.', logoutSuccess: 'Sesión cerrada correctamente', logoutFailed: 'Error al cerrar la sesión. Inténtalo de nuevo.', noOtherSessions: 'No hay otras sesiones para cerrar.', logoutOthersSuccess: 'Otras sesiones cerradas correctamente', logoutOthersFailed: 'Error al cerrar las otras sesiones. Inténtalo de nuevo.', logoutAllFailed: 'Error al cerrar todas las sesiones. Inténtalo de nuevo.', switchSuccess: 'Sesión cambiada', switchFailed: 'Error al cambiar de sesión', }, confirms: { logoutSession: '¿Seguro que quieres cerrar esta sesión?', logoutOthers: 'Esto cerrará {{count}} otra(s) sesión(es). ¿Continuar?', logoutAll: 'Esto cerrará todas las sesiones incluyendo esta y tendrás que volver a iniciar sesión. ¿Continuar?', }, }, appInfo: { title: 'Información de la app', sections: { package: 'Información del paquete', system: 'Información del sistema', user: 'Información del usuario', api: 'Configuración de API', build: 'Información de compilación', quickActions: 'Acciones rápidas', }, items: { name: 'Nombre', version: 'Versión', description: 'Descripción', noDescription: 'Sin descripción', mainEntry: 'Entrada principal', moduleEntry: 'Entrada del módulo', typesEntry: 'Entrada de tipos', platform: 'Plataforma', platformVersion: 'Versión de la plataforma', screenWidth: 'Ancho de pantalla', screenHeight: 'Alto de pantalla', environment: 'Entorno', development: 'Desarrollo', production: 'Producción', authStatus: 'Estado de autenticación', authenticated: 'Autenticado', notAuthenticated: 'No autenticado', userId: 'ID de usuario', username: 'Usuario', email: 'Correo electrónico', premiumStatus: 'Estado premium', premium: 'Premium', standard: 'Estándar', totalActiveSessions: 'Total de sesiones activas', apiBaseUrl: 'URL base de API', notConfigured: 'No configurado', connectionStatus: 'Estado de conexión', checking: 'Verificando...', connected: 'Conectado', disconnected: 'Desconectado', unknown: 'Desconocido', buildTimestamp: 'Marca de tiempo de compilación', reactNative: 'React Native', reactNativeValue: 'Expo/React Native', jsEngine: 'Motor de JavaScript', jsEngineValue: 'Hermes', copyFullReport: 'Copiar informe completo', copyFullReportSubtitle: 'Copiar toda la información de la aplicación al portapapeles', runSystemCheck: 'Ejecutar verificación del sistema', runningSystemCheck: 'Ejecutando verificación del sistema...', systemCheckSubtitle: 'Verificar el estado de la aplicación', systemCheckRunning: 'Verificando API, autenticación y estado de la plataforma...', }, toasts: { copiedToClipboard: '{{label}} copiado al portapapeles', copyFailed: 'Error al copiar al portapapeles', systemCheckSuccess: 'Verificación del sistema completada correctamente', systemCheckFailed: 'Error en la verificación del sistema', apiConnectionSuccess: 'Conexión a la API exitosa', apiConnectionFailed: 'Error al conectar con el servidor de API', oxyServicesNotInitialized: 'OxyServices no inicializado', noUsernameOrNav: 'No hay usuario disponible o la navegación no es compatible', }, }, learnMoreUsernames: { introTitle: 'Tu identidad única', introText: 'Tu nombre de usuario es la forma en que las personas te encuentran y reconocen en todas las apps de Oxy.', sections: { what: { title: '¿Qué es un nombre de usuario?', content: 'Tu nombre de usuario es tu identificador único en Oxy. Es la forma en que otras personas te encuentran y mencionan. Piensa en él como tu identificador en redes sociales: es público y representa tu identidad en todas las apps de Oxy.', }, rules: { title: 'Reglas del nombre de usuario', content: 'Los nombres de usuario solo pueden contener letras minúsculas (a-z) y números (0-9). Deben tener al menos 4 caracteres. No se permiten caracteres especiales, espacios ni mayúsculas para mantener los nombres de usuario simples y fáciles de recordar.', }, unique: { title: '¿Por qué debe ser único?', content: 'Cada nombre de usuario solo puede pertenecer a una persona. Esto asegura que cuando alguien te busque o te mencione, encuentre a la persona correcta. También previene la confusión y la suplantación de identidad.', }, change: { title: '¿Puedo cambiarlo después?', content: '¡Sí! Puedes cambiar tu nombre de usuario en cualquier momento en la configuración de tu cuenta. Ten en cuenta que tu antiguo nombre de usuario quedará disponible para que otros lo usen, y las personas que conocían tu antiguo nombre de usuario necesitarán encontrarte con el nuevo.', }, tips: { title: 'Consejos para elegir un nombre de usuario', content: 'Elige algo memorable y fácil de escribir. Evita usar información personal como tu año de nacimiento o número de teléfono. Considera usar un nombre que te represente en todos los contextos, tanto profesional como personal.', }, }, collapseHint: 'Contraer sección', expandHint: 'Expandir sección', footer: '¿Necesitas más ayuda? Visita nuestro Centro de Ayuda para información adicional.', }, payment: { title: 'Pago', summary: { title: 'Resumen del pago', orderSummary: 'Resumen del pedido', payment: 'Pago', reviewDetails: 'Revisa los detalles de tu pago', completePayment: 'Completa tu pago', subtotal: 'Subtotal', tax: 'Impuesto', total: 'Total', amountToPay: 'Monto a pagar', }, method: { title: 'Elige el método de pago', }, details: { cardDetails: 'Detalles de la tarjeta', peable: 'Peable', faircoinPayment: 'Pago con FairCoin', paymentDetails: 'Detalles del pago', creditCard: 'Tarjeta de crédito', enterCardSecurely: 'Introduce los datos de tu tarjeta de forma segura', acceptedCards: 'Aceptamos Visa, Mastercard y más', cardNumber: 'Número de tarjeta', expiry: 'Caducidad', readyToProcess: 'Listo para procesar el pago...', payWithWallet: 'Paga con tu billetera de la app', balance: 'Saldo: {{balance}}', payWithFairCoin: 'Paga con FairCoin', scanToPay: 'Escanea para pagar', fairWalletInstructions: 'Usa las opciones de abajo para pagar con FAIRWallet', openInFairWallet: 'Abrir en FAIRWallet', copyAddress: 'Copiar dirección', addressCopied: '¡Dirección copiada al portapapeles!', waitingForPayment: 'Esperando el pago...', }, review: { title: 'Revisar pago', securePayment: 'Pago seguro', securePaymentDesc: 'Tu pago está protegido con cifrado estándar de la industria', amount: 'Monto', paymentMethod: 'Método de pago', card: 'Tarjeta', peableAccount: 'Cuenta Peable', faircoinWallet: 'Billetera FairCoin', paidViaQR: 'Pagado vía QR', processing: 'Procesando...', payNow: 'Pagar ahora', }, success: { title: 'Pago completado', heading: '¡Pago exitoso!', thanks: 'Gracias por tu pago.', processed: 'Tu transacción se ha procesado correctamente.', }, actions: { close: 'Cerrar', continue: 'Continuar', back: 'Atrás', done: 'Listo', }, errors: { invalidAmount: 'Monto de pago inválido o faltante.', }, methods: { card: { label: 'Tarjeta de crédito/débito', description: 'Paga de forma segura con tu tarjeta de crédito o débito.', }, oxy: { label: 'Peable', description: 'Usa tu saldo de Peable en la app.', }, faircoin: { label: 'FAIRWallet', description: 'Paga con FairCoin escaneando un código QR.', }, }, }, userLinks: { title: 'Enlaces', linkCount: '{{count}} enlace', linkCount_plural: '{{count}} enlaces', }, fileManagement: { title: 'Gestión de archivos', photos: 'Fotos', selectFile: 'Seleccionar un archivo', selected: '{{count}} seleccionado(s)', selectedWithMax: '{{count}}/{{max}} seleccionado(s)', available: '{{count}} disponible(s)', tapToSelect: 'Toca para seleccionar', itemCount: '{{count}} elemento', itemCount_plural: '{{count}} elementos', reviewFiles: 'Revisar archivos', readyToUpload: '{{count}} archivo(s) listo(s) para subir', clear: 'Limpiar', confirm: 'Confirmar', delete: 'Eliminar ({{count}})', visibility: 'Visibilidad', changeVisibility: 'Cambiar visibilidad', changeVisibilityConfirm: '¿Cambiar la visibilidad de {{count}} archivo(s)?', private: 'Privado', public: 'Público', unlisted: 'No listado', cancel: 'Cancelar', deleteFile: 'Eliminar archivo', deleteFiles: 'Eliminar archivos', searchPhotos: 'Buscar fotos...', searchFiles: 'Buscar archivos...', found: 'Encontrados', photo: 'Foto', photos_stat: 'Fotos', file: 'Archivo', files: 'Archivos', size: 'Tamaño', totalSize: 'Tamaño total', total: 'Total', loadingMore: 'Cargando más...', notInUse: 'Sin usar', removedAfterClaim: 'Retirado tras una reclamación legal', contentLost: 'Perdido: su contenido no se pudo recuperar', moveToTrash: 'Mover a la papelera', moveToTrashCount: 'Mover a la papelera ({{count}})', appAccess: { title: 'Apps con acceso', description: 'Estas apps pueden abrir este archivo por su cuenta. Revoca una app para quitarle ese acceso.', empty: 'Ninguna app puede abrir este archivo por su cuenta.', loadError: 'No se pudieron cargar las apps que pueden abrir este archivo', via: { upload: 'Guardó este archivo por ti', link: 'Lo compartiste tú', }, revoke: 'Revocar', confirm: { title: '¿Revocar {{name}}?', message: '{{name}} ya no podrá abrir este archivo y cualquier reproducción que haya iniciado se detendrá ahora.', }, toasts: { revoked: '{{name}} ya no puede abrir este archivo', revokeFailed: 'No se pudo revocar el acceso de {{name}}', }, a11y: { revoke: 'Revocar el acceso de {{name}} a este archivo', }, }, trashView: { title: 'Papelera', subtitle: 'Restaura archivos o elimínalos definitivamente', notice: 'Los archivos permanecen en la papelera hasta que los restaures o elimines, y siguen contando para tu almacenamiento.', emptyTitle: 'La papelera está vacía', emptyDescription: 'Los archivos que muevas a la papelera aparecerán aquí. Puedes restaurarlos o eliminarlos definitivamente.', trashedOn: 'Movido a la papelera el {{date}}', deleteForever: 'Eliminar definitivamente', loadError: 'No se pudo cargar la papelera', a11y: { restore: 'Restaurar {{name}}', deleteForever: 'Eliminar {{name}} definitivamente', }, }, loadingPhotoLayout: 'Cargando diseño de fotos...', uploading: 'Subiendo', upload: 'Subir', uploadPhoto: 'Subir foto', uploadPhotos: 'Subir fotos', uploadFiles: 'Subir archivos', clearSearch: 'Limpiar búsqueda', retry: 'Reintentar', loadError: { title: 'No se pudieron cargar tus archivos', description: 'Algo salió mal. Comprueba tu conexión e inténtalo de nuevo.', }, choosePhoto: 'Elegir foto', done: 'Listo', doneWithCount: 'Listo ({{count}})', photoPicker: { emptyTitle: 'Aún no hay fotos', emptySubtitle: 'Sube desde tu dispositivo para empezar', }, details: { title: 'Detalles del archivo', download: 'Descargar', type: 'Tipo', uploaded: 'Subido', description: 'Descripción', }, a11y: { viewAll: 'Mostrar todos los archivos', viewPhotos: 'Mostrar solo fotos', viewVideos: 'Mostrar solo vídeos', viewDocuments: 'Mostrar solo documentos', viewAudio: 'Mostrar solo audio', sortBy: 'Ordenar por {{field}}, {{order}}', uploadFile: 'Subir archivo desde el dispositivo', uploadFromDevice: 'Subir foto desde el dispositivo', photoCellSelected: 'Foto {{name}}, seleccionada', photoCellUnselected: 'Foto {{name}}, no seleccionada', selectionCount: '{{count}} foto seleccionada', selectionCount_plural: '{{count}} fotos seleccionadas', cancelPicker: 'Cancelar selección de foto', confirmSelection: 'Confirmar selección', moveToTrash: 'Mover {{name}} a la papelera', deleteFile: 'Eliminar {{name}}', openTrash: 'Abrir la papelera', }, emptyPhotos: { title: 'Aún no hay fotos', ownDescription: 'Sube fotos para empezar. Puedes seleccionar varias fotos a la vez.', otherDescription: 'Este usuario aún no ha subido fotos', }, emptyFiles: { title: 'Aún no hay archivos', ownDescription: 'Sube archivos para empezar. Puedes seleccionar varios archivos a la vez.', otherDescription: 'Este usuario aún no ha subido archivos', }, noResults: { title: 'Sin resultados', description: 'No se encontraron archivos que coincidan con "{{query}}"', }, toasts: { fileTypeBlocked: 'Este tipo de archivo no se puede seleccionar', maxSelection: 'Puedes seleccionar hasta {{max}}', loadFailed: 'Error al cargar los archivos', filesTooLarge: 'Los siguientes archivos son demasiado grandes (máx. 50MB): {{files}}', uploadSuccess: '{{count}} archivo(s) subido(s) correctamente', uploadFailed: '{{count}} archivo(s) fallaron al subir', uploadError: 'Error al subir archivos', invalidFileMissing: 'Archivo no válido: falta el archivo', invalidFileName: 'Archivo no válido: falta el nombre', invalidFileSize: 'Archivo no válido "{{name}}": falta el tamaño', fileEmpty: 'El archivo "{{name}}" está vacío', fileTooLarge: '"{{name}}" es demasiado grande. El tamaño máximo es {{maxSize}}', noValidFiles: 'No hay archivos válidos para subir', imagesOnlyRequired: 'Solo se pueden seleccionar archivos de imagen', waitForSelection: 'Espera a que se complete la selección actual', noFilesSelected: 'No se seleccionaron archivos', loadSomeFailed: 'Error al cargar algunos archivos:\n{{errors}}', noFilesProcessed: 'No se pudieron procesar los archivos. Intenta seleccionarlos de nuevo.', filePickerNotAvailable: 'Selector de archivos no disponible. Instala expo-document-picker', selectFilesFailed: 'Error al seleccionar archivos', deleteSuccess: 'Archivo eliminado correctamente', fileNotFound: 'Archivo no encontrado. Es posible que ya haya sido eliminado.', noPermission: 'No tienes permiso para eliminar este archivo.', deleteFailed: 'Error al eliminar el archivo', bulkDeleteSuccess: '{{count}} archivo(s) eliminado(s) correctamente', bulkDeleteFailed: '{{count}} archivo(s) fallaron al eliminar', bulkDeleteError: 'Error al eliminar archivos', movedToTrash: 'Movido a la papelera. Puedes restaurarlo desde la papelera.', bulkMovedToTrash: '{{count}} archivo(s) movido(s) a la papelera', moveToTrashFailed: 'No se pudo mover el archivo a la papelera', restored: 'Archivo restaurado', notInTrash: 'Este archivo ya no está en la papelera.', restoreFailed: 'No se pudo restaurar el archivo', deletedForever: 'Archivo eliminado definitivamente', visibilitySuccess: 'Visibilidad de {{count}} archivo(s) actualizada a {{visibility}}', visibilityFailed: '{{count}} archivo(s) fallaron al actualizar visibilidad', visibilityError: 'Error al actualizar la visibilidad', downloadStarted: 'Descarga de archivo iniciada', downloadSuccess: 'Archivo descargado correctamente', downloadMobile: 'Usa tu navegador para descargar el archivo', downloadFailed: 'Error al descargar el archivo', fileNotFoundContent: 'Archivo no encontrado. Es posible que haya sido eliminado.', loadContentFailed: 'Error al cargar el contenido del archivo', openFailed: 'Error al abrir el archivo', }, confirms: { deleteFile: '¿Seguro que quieres eliminar "{{filename}}"? Esta acción no se puede deshacer.', deleteFiles: '¿Seguro que quieres eliminar {{count}} archivo(s)? Esta acción no se puede deshacer.', moveToTrash: '¿Mover "{{filename}}" a la papelera? Dejará de mostrarse en todas partes y podrás restaurarlo desde la papelera.', moveFilesToTrash: '¿Mover {{count}} archivo(s) a la papelera? Dejarán de mostrarse en todas partes y podrás restaurarlos desde la papelera.', deleteForever: '¿Eliminar "{{filename}}" definitivamente? Esta acción no se puede deshacer.', deleteForeverInUse: '"{{filename}}" todavía se usa en {{count}} lugar(es) de tus aplicaciones. Al eliminarlo, también desaparecerá de ellos. ¿Eliminarlo definitivamente?', }, viewMode: 'Tipo de archivo', }, notifications: { title: 'Notificaciones', subtitle: 'Gestiona las alertas push, por correo y de seguridad', updateError: 'No se han podido actualizar las preferencias de notificación', sections: { channels: 'Canales', alerts: 'Alertas', marketing: 'Marketing', }, items: { push: { title: 'Notificaciones push', subtitle: 'Alertas en tiempo real en tus dispositivos', }, emailDigest: { title: 'Resumen por correo', subtitle: 'Resumen periódico de la actividad de tu cuenta', }, securityAlerts: { title: 'Alertas de seguridad', subtitle: 'Inicios de sesión, códigos de recuperación y cambios de claves', }, marketingEmails: { title: 'Correos de marketing', subtitle: 'Novedades del producto y ofertas ocasionales', }, }, }, preferences: { displayCurrency: { label: 'Moneda mostrada', saveFailed: 'No se ha podido guardar la moneda. Inténtalo de nuevo.', unavailable: 'Equivalencia en {{currency}} no disponible', approximate: 'Aprox. {{amount}}', estimate: 'Importe orientativo. El importe final se cotiza en FAIR al pagar.', }, title: 'Preferencias', subtitle: 'Tema, movimiento y configuración regional', sections: { appearance: 'Apariencia', language: 'Idioma', region: 'Región', }, theme: { light: 'Claro', dark: 'Oscuro', system: 'Predeterminado del sistema', }, items: { theme: { title: 'Tema', }, reduceMotion: { title: 'Reducir movimiento', subtitle: 'Minimizar animaciones en todas las apps de Oxy', systemOn: 'Siguiendo al sistema: reducir movimiento activado', }, language: { title: 'Idioma', }, timezone: { title: 'Zona horaria', unknown: 'No se ha podido detectar la zona horaria', }, about: { title: 'Acerca de las preferencias', subtitle: 'Las preferencias se sincronizan en todas las apps de Oxy en las que inicies sesión', }, }, }, connectedApps: { title: 'Aplicaciones conectadas', subtitle: 'Gestiona el acceso de aplicaciones de terceros', empty: { title: 'Sin aplicaciones conectadas', subtitle: 'Las apps que autorices a iniciar sesión con tu cuenta Oxy aparecerán aquí', }, item: { granted: 'Concedido {{relative}}', lastUsed: 'Último uso: {{relative}}', }, confirm: { title: 'Revocar acceso', message: '¿Revocar el acceso de {{name}} a tu cuenta Oxy?', }, toasts: { revoked: 'Acceso revocado para {{name}}', revokeFailed: 'No se ha podido revocar el acceso', }, }, oxyOne: { pricePeriod: '/mes', annualTotal: '{{total}} facturados anualmente', businessApp: 'Una app de empresa incluida', businessAppChoice: 'Elige {{mercaria}} o Homiio Plus.', subtitle: { personal: 'Más posibilidades en Oxy.', creator: 'Más herramientas para tu trabajo creativo.', business: 'Un plan para tu equipo.', }, free: 'Gratis', annualPrice: '{{price}}/mes · {{total}} facturados anualmente', monthlyPrice: '{{price}}/mes', payAsYouGo: 'Créditos cuando los necesites', credits: '{{count}} créditos cada mes', creditsDescription: 'Para Alia y la API de Oxy.', storage: '{{amount}} de almacenamiento compartido', storageDescription: 'Espacio para fotos, archivos, audio y correos.', apps: 'Tus apps, juntas', discount: '{{percent}}% de descuento en paquetes de créditos', discountDescription: 'Ahorra cuando necesites más créditos.', familyMembers: 'Comparte con hasta {{count}} personas', familyDescription: 'Toda la familia comparte el almacenamiento y los créditos.', seats: '{{count}} miembros del equipo', seatPrice: '{{base}} de base + {{seat}} por miembro al mes', audience: 'Tipo de plan', personal: 'Personal', creator: 'Creadores', business: 'Empresas', members: 'Miembros', individual: 'Individual', family: 'Familia', billing: 'Periodo de facturación', monthly: 'Mensual', annual: 'Anual −20%', teamSize: 'Miembros del equipo', choosePlan: 'Elige un plan', preview: 'Vista previa de planes. Las compras aún no están disponibles; esto no cambia tu suscripción ni tu acceso actual.', unavailable: 'Próximamente', more: 'Explorar todas las ventajas', }, accountMenu: { plan: { get: 'Obtener un plan de Oxy One', explore: 'Explorar los planes de Oxy One', current: 'Oxy One {{plan}}', manage: 'Gestionar tu plan', }, label: 'Menú de cuenta', manage: 'Gestiona tu cuenta de Oxy', greeting: '¡Hola, {{name}}!', switchAccount: 'Cambiar de cuenta', viewProfile: 'Ver perfil', addAnother: 'Añadir otra cuenta', signOutAll: 'Cerrar sesión en todas las cuentas', open: 'Menú de cuenta', openHint: 'Abre el menú de cuenta', openWithUser: 'Menú de cuenta de {{name}}', switching: 'Cambiando de cuenta…', signOutAccount: 'Cerrar sesión de {{name}}', storage: { getStorage: 'Obtener almacenamiento', cleanUp: 'Liberar espacio', categories: { photosVideos: 'Fotos y vídeos', documents: 'Archivos y documentos', recordings: 'Audio', mail: 'Correo', family: 'Almacenamiento familiar', other: 'Otros', }, title: 'Almacenamiento de Oxy', usage: '{{used}} de {{total}} en uso', used: 'Usado', free: 'Libre', unavailable: 'Detalles de uso no disponibles', upgrade: 'Mejorar plan', manage: 'Gestionar almacenamiento', }, data: 'Tus datos en Oxy', settings: 'Ajustes de Oxy', help: 'Ayuda y comentarios', dataDescription: 'Consulta y gestiona los datos de tu cuenta', settingsDescription: 'Gestiona las preferencias de tu cuenta', signOut: 'Cerrar sesión', privacy: 'Política de privacidad', terms: 'Términos del servicio', }, accounts: { activeAccount: { a11y: 'Cuenta activa: {{name}}. Toca para cambiar de cuenta.', label: 'Cuenta activa', }, roles: { owner: { label: 'Propietario', }, admin: { label: 'Administrador', }, editor: { label: 'Editor', }, developer: { label: 'Desarrollador', }, billing: { label: 'Facturación', }, viewer: { label: 'Lector', }, }, kinds: { organization: { label: 'Organización', description: 'Una cuenta de equipo compartida con miembros', }, project: { label: 'Proyecto', description: 'Una cuenta independiente que tú controlas', }, bot: { label: 'Bot', description: 'Una cuenta programática con credenciales de servicio', }, community: { label: 'Comunidad', description: 'Un foro en el que publican sus miembros, compartido con quien lo sigue', }, }, accountCategory: { news: 'Noticias', politics: 'Política', business: 'Negocios', startup: 'Startups y emprendimiento', finance: 'Finanzas e inversión', crypto: 'Cripto y web3', marketplace: 'Marketplace y anuncios', retail: 'Comercio y ecommerce', real_estate: 'Inmobiliaria', agency: 'Agencia inmobiliaria', landlord: 'Casero y gestión de fincas', cooperative: 'Cooperativa de vivienda', architecture: 'Arquitectura y construcción', technology: 'Tecnología', software: 'Software y desarrollo', ai: 'IA y aprendizaje automático', security: 'Seguridad y privacidad', automation: 'Automatización y herramientas', science: 'Ciencia e investigación', education: 'Educación y formación', books: 'Libros y escritura', health: 'Salud y medicina', fitness: 'Deporte y bienestar', sports: 'Deportes', gaming: 'Videojuegos y esports', music: 'Música', film: 'Cine y TV', podcast: 'Pódcast y audio', art: 'Arte y diseño', photography: 'Fotografía', comedy: 'Comedia', food: 'Comida y bebida', travel: 'Viajes y lugares', fashion: 'Moda y belleza', home_garden: 'Hogar y jardín', diy: 'Bricolaje y manualidades', automotive: 'Coches y motor', animals: 'Animales y mascotas', family: 'Familia y crianza', nonprofit: 'ONG y benéficas', government: 'Gobierno y sector público', community: 'Comunidad local', activism: 'Activismo y defensa', environment: 'Medio ambiente y sostenibilidad', religion: 'Religión y espiritualidad', other: 'Otra', }, create: { title: 'Crear cuenta', subtitle: 'Crea una cuenta que tú controlas. Tendrá su propio perfil, miembros y aplicaciones.', displayName: { label: 'Nombre visible', invalidChars: 'Usa solo letras, espacios, apóstrofos y separadores de nombre', invalidTitle: 'Usa texto plano sin < ni > (hasta 300 caracteres)', }, bio: { label: 'Biografía (opcional)', }, username: { label: 'Nombre de usuario', available: 'El nombre de usuario está disponible', taken: 'El nombre de usuario ya está en uso', tooShort: 'El nombre de usuario debe tener al menos 3 caracteres', invalidChars: 'Solo letras, números, guiones y guiones bajos', mustEndInBot: 'El nombre de usuario de una cuenta de bot debe terminar en “bot”', checkFailed: 'No se pudo comprobar la disponibilidad', }, accountCategory: { label: 'Categorías', hint: 'Elige hasta {{max}}. La primera es tu categoría principal.', }, toasts: { success: 'Cuenta creada', failed: 'No se pudo crear la cuenta', }, typeSection: 'Tipo de cuenta', detailsSection: 'Detalles', }, manage: { create: { subtitle: 'Añade una organización, proyecto o bot', }, switch: { title: 'Cambiar de cuenta', count: '{{count}} cuentas', countOne: '{{count}} cuenta', empty: 'Cuentas que posees o compartes', }, }, members: { title: 'Miembros', subtitle: 'Personas con acceso a esta cuenta.', empty: 'Aún no hay miembros.', inherited: 'Heredado', actions: { remove: 'Eliminar miembro', transfer: 'Transferir propiedad', }, errors: { identifierRequired: 'Introduce un nombre de usuario o correo para invitar', missingAccount: 'Ninguna cuenta seleccionada.', noPermission: 'No tienes permiso para ver los miembros.', userNotFound: 'Usuario no encontrado', }, invite: { title: 'Añadir un miembro', identifierLabel: 'Nombre de usuario o correo', roleLabel: 'Rol', submit: 'Añadir miembro', }, removeConfirm: { title: 'Eliminar miembro', description: '¿Eliminar a este miembro de la cuenta? Perderá todo el acceso.', }, transferConfirm: { title: 'Transferir propiedad', description: '¿Transferir la propiedad de esta cuenta a este miembro? Pasarás a ser administrador. Esto no se puede deshacer.', }, toasts: { added: 'Miembro añadido', addFailed: 'No se pudo añadir el miembro', removed: 'Miembro eliminado', removeFailed: 'No se pudo eliminar el miembro', roleUpdated: 'Rol actualizado', roleFailed: 'No se pudo actualizar el rol', transferred: 'Propiedad transferida', transferFailed: 'No se pudo transferir la propiedad', }, }, settings: { title: 'Configuración de la cuenta', subtitle: 'Gestiona el perfil, los miembros y el acceso de esta cuenta.', save: 'Guardar cambios', displayName: { label: 'Nombre visible', invalidChars: 'Usa solo letras, espacios, apóstrofos y separadores de nombre', invalidTitle: 'Usa texto plano sin < ni > (hasta 300 caracteres)', }, bio: { label: 'Biografía (opcional)', }, picture: { change: 'Cambiar imagen', }, categories: { title: 'Categorías', footer: 'La primera categoría es la principal que se muestra en el perfil. Hasta {{max}}.', primary: 'Principal', makePrimary: 'Hacer principal', remove: 'Quitar {{category}}', add: 'Añadir una categoría', atCap: 'Hasta {{max}}. Quita una para añadir otra.', unavailable: 'Categoría no disponible', }, sections: { access: 'Acceso', dangerZone: 'Zona de peligro', }, members: { subtitle: 'Invita a personas y gestiona los roles', }, archive: { title: 'Archivar cuenta', subtitle: 'Desactivar esta cuenta', confirmTitle: 'Archivar cuenta', confirmDescription: '¿Archivar esta cuenta? Se desactivará y sus miembros perderán el acceso.', }, errors: { missingAccount: 'Ninguna cuenta seleccionada.', }, toasts: { saved: 'Cuenta actualizada', saveFailed: 'No se pudo actualizar la cuenta', archived: 'Cuenta archivada', archiveFailed: 'No se pudo archivar la cuenta', }, }, }, deleteAccount: { title: 'Eliminar cuenta', warning: 'Esta acción no se puede deshacer. Tu cuenta y todos los datos asociados se eliminarán de forma permanente.', confirmLabel: 'Escribe "{{username}}" para confirmar', confirm: 'Eliminar para siempre', error: 'No se pudo eliminar la cuenta', handoff: { commonsTitle: 'Elimina tu cuenta en Oxy Commons', commonsMessage: 'Tu clave de identidad la guarda Oxy Commons en este dispositivo, y eliminar tu cuenta la necesita. Commons se abrirá en Ajustes > Eliminar cuenta para terminar.', openCommons: 'Abrir Oxy Commons', commonsOpenFailed: 'No se pudo abrir Oxy Commons. Ábrelo tú y ve a Ajustes > Eliminar cuenta.', elsewhereTitle: 'Elimina tu cuenta donde está tu identidad', elsewhereMessage: 'Eliminar tu cuenta necesita tu clave de identidad, y no está en este dispositivo. Abre Oxy Commons en el dispositivo que la guarda y ve a Ajustes > Eliminar cuenta.', gotIt: 'Entendido', identityUnreadable: 'No se pudo leer el almacén de identidad de este dispositivo. Desbloquea el dispositivo e inténtalo de nuevo.', }, keyless: { subtitle: '@{{username}} y todo lo que contiene se eliminan para siempre. Escribe tu nombre de usuario y confirma con un código que te enviamos por email.', action: 'Eliminar cuenta', done: 'Tu cuenta se ha eliminado.', doneDescription: 'Se ha cerrado tu sesión.', keyed: 'Esta cuenta usa Commons: elimínala en Oxy Commons, Ajustes > Eliminar cuenta, con su clave.', }, }, manageAccount: { title: 'Gestiona tu cuenta de Oxy', signOutOfThisAccount: 'Cerrar sesión de esta cuenta', sections: { profile: 'Perfil', preferences: 'Preferencias', security: 'Seguridad', sessions: 'Sesiones y dispositivos', legal: 'Legal', dangerZone: 'Zona de peligro', }, items: { editProfile: { title: 'Editar perfil', subtitle: 'Nombre, usuario, biografía, enlaces', }, theme: { title: 'Color del tema', subtitle: 'Personaliza tu color de Bloom', }, billing: { title: 'Facturación', subtitle: 'Gestiona la suscripción y los métodos de pago', }, }, sessions: { thisDevice: 'Este dispositivo', lastActive: 'Última actividad {{relative}}', loading: 'Cargando sesiones…', empty: 'No hay sesiones activas', signOutAllOnThisDevice: 'Cerrar sesión en los demás dispositivos', signOutAllSubtitle: 'Finalizar {{count}} sesión(es) de otros dispositivos', otherSession: 'Otra sesión', }, confirms: { removeDeviceTitle: 'Eliminar dispositivo', removeDevice: '¿Cerrar sesión en "{{name}}"?', signOutAllDevicesTitle: 'Cerrar sesión en los demás dispositivos', signOutAllDevices: '¿Finalizar {{count}} sesión(es) de otros dispositivos? No se cerrará tu sesión aquí.', }, toasts: { deviceRemoved: 'Sesión cerrada en {{name}}', deviceRemoveFailed: 'No se pudo eliminar el dispositivo', allDevicesSignedOut: 'Sesión cerrada en todos los demás dispositivos', allDevicesFailed: 'No se pudo cerrar sesión en los demás dispositivos', }, }, trust: { tiers: { 'new': 'Nuevo', trusted: 'De confianza', high_trust: 'Alta confianza', verified: 'Verificado', restricted: 'Restringido', }, center: { title: 'Centro de confianza', balance: 'puntos de reputación', history: 'Historial de reputación', noHistory: 'Aún no hay historial de reputación.', noDescription: 'Sin descripción', info: 'La reputación solo se gana con acciones positivas en el ecosistema Oxy. No se puede enviar ni recibir directamente.', loadError: 'No se pudieron cargar los datos de reputación', actions: { title: 'Explorar', about: 'Acerca de', faq: 'Preguntas frecuentes', leaderboard: 'Clasificación', rewards: 'Recompensas', rules: 'Reglas', }, }, about: { title: 'Acerca de Oxy Trust', subtitle: 'Conoce el sistema de reputación', intro: 'Oxy Trust es un reconocimiento de tus acciones positivas en el ecosistema Oxy. La reputación no se puede enviar ni recibir directamente, solo se gana contribuyendo a la comunidad.', how: { title: 'Cómo ganar reputación', contribute: 'Aportar contenido', help: 'Ayudar a otros usuarios', participate: 'Participar en eventos', report: 'Reportar errores', other: 'Otras acciones positivas', }, why: { title: '¿Por qué Oxy Trust?', text: 'Tu reputación y tu nivel de confianza desbloquean funciones especiales y reconocimiento en el ecosistema Oxy. ¡Cuanto más contribuyas, más ganas!', }, }, faq: { title: 'Preguntas frecuentes de Trust', subtitle: 'Preguntas frecuentes sobre Oxy Trust', search: 'Buscar preguntas frecuentes...', noResults: 'No se encontraron preguntas que coincidan con "{{query}}"', items: { what: { q: '¿Qué es Oxy Trust?', a: 'Oxy Trust es un sistema de reputación que reconoce tus contribuciones positivas en todo el ecosistema Oxy. Tu reputación refleja lo útiles, respetuosas y constructivas que son tus acciones.', }, earn: { q: '¿Cómo gano reputación?', a: 'Ganas reputación aportando contenido, ayudando a otros usuarios, participando en eventos y reportando errores. Las acciones constructivas y positivas elevan tu reputación con el tiempo.', }, lose: { q: '¿Puedo perder reputación?', a: 'Sí. Las acciones dañinas, abusivas o de poco esfuerzo pueden reducir tu reputación y bajar tu nivel de confianza.', }, use: { q: '¿Para qué sirve la reputación?', a: 'Tu reputación y tu nivel de confianza desbloquean funciones especiales, reconocimiento y privilegios en todo el ecosistema Oxy.', }, transfer: { q: '¿Puedo enviar o recibir reputación?', a: 'No. La reputación no se puede transferir entre cuentas. Solo se puede ganar con tus propias acciones.', }, support: { q: '¿Dónde puedo conseguir ayuda?', a: 'Si tienes preguntas sobre Oxy Trust, lee la sección Acerca de o contacta con soporte desde la pantalla de Ayuda.', }, }, }, leaderboard: { title: 'Clasificación de Trust', subtitle: 'Principales colaboradores de la comunidad', rankLabel: 'puesto {{rank}}', empty: 'No hay datos de clasificación', emptyDesc: 'Los principales colaboradores aparecerán aquí a medida que crezca la comunidad.', error: 'No se pudo cargar la clasificación', }, rewards: { title: 'Recompensas de Trust', subtitle: 'Desbloquea funciones especiales y reconocimiento', }, rules: { title: 'Reglas de Trust', subtitle: 'Cómo ganar reputación', empty: 'No se encontraron reglas.', categories: { content: 'Contenido', social: 'Social', trust: 'Confianza', moderation: 'Moderación', physical: 'Vida real', penalty: 'Penalizaciones', other: 'Otros', }, }, achievements: { unlocked: 'Logros', locked: 'Logros bloqueados', firstStep: 'Primer paso', firstStepDesc: 'Ganaste tu primer punto de reputación', novice: 'Principiante', noviceDesc: 'Alcanzaste 10 puntos de reputación', contributor: 'Colaborador', contributorDesc: 'Alcanzaste 50 puntos de reputación', risingStar: 'Estrella emergente', risingStarDesc: 'Alcanzaste 100 puntos de reputación', communityHero: 'Héroe de la comunidad', communityHeroDesc: 'Alcanzaste 500 puntos de reputación', legend: 'Leyenda', legendDesc: 'Alcanzaste 1000 puntos de reputación', phoenix: 'Fénix', phoenixDesc: 'Alcanzaste 2500 puntos de reputación', unstoppable: 'Imparable', unstoppableDesc: 'Alcanzaste 5000 puntos de reputación', helper: 'Ayudante', helperDesc: 'Ayudaste a 10 usuarios', bugHunter: 'Cazador de errores', bugHunterDesc: 'Reportaste errores útiles', streakMaster: 'Maestro de la racha', streakMasterDesc: 'Racha de actividad de 7 días', earlyAdopter: 'Pionero', earlyAdopterDesc: 'Has formado parte de la comunidad desde el principio', }, }, consent: { title: 'Continuar a {{app}}', subtitle: 'Usa tu cuenta de Oxy para iniciar sesión en {{app}}. Revisa qué implica esta conexión antes de continuar.', provenance: { title: 'Quién solicita acceso', official: 'Aplicación oficial de Oxy', developer: 'Publicada por {{developer}}', thirdParty: 'Aplicación de terceros', }, permissions: { title: 'Permisos solicitados', basic: 'Iniciar sesión y leer tu perfil básico', }, resource: { title: 'App de Oxy y recurso protegido', }, writeActions: { title: 'Acciones que puede realizar esta conexión', }, effects: { write: 'Escritura', external: 'Externa', financial: 'Financiera', security: 'Seguridad', }, scopes: { openid: 'Confirmar tu identidad', profile: 'Leer tu perfil básico', email: 'Leer tu dirección de correo', offlineAccess: 'Mantener tu sesión iniciada cuando no estés', userRead: 'Leer tu perfil básico', filesRead: 'Leer tus archivos', filesWrite: 'Subir y modificar tus archivos', filesDelete: 'Eliminar tus archivos', webhooksReceive: 'Recibir webhooks', inferenceInvoke: 'Ejecutar peticiones de IA en tu nombre', inferenceModelsRead: 'Ver los modelos de IA disponibles', inferenceUsageRead: 'Ver su consumo y costes de IA', inferenceRoutingRead: 'Ver cómo se enrutan las peticiones de IA', inferenceRoutingWrite: 'Cambiar cómo se enrutan las peticiones de IA', inferenceProvidersRead: 'Ver sus proveedores de IA conectados', inferenceProvidersWrite: 'Gestionar sus proveedores de IA conectados', federationWrite: 'Actuar en servicios federados', }, account: { title: 'Iniciando sesión como', id: 'ID de cuenta: {{id}}', }, links: { website: 'Sitio web', privacy: 'Política de privacidad', terms: 'Términos del servicio', }, allow: 'Continuar a {{app}}', deny: 'Cancelar', disclaimer: 'Al continuar, {{app}} podrá iniciar sesión con tu cuenta de Oxy. Puedes gestionar las apps conectadas cuando quieras en los ajustes de tu cuenta de Oxy.', }, emailCode: { title: 'Revisa tu email', sentTo: 'Hemos enviado un código de 6 dígitos a {{email}}.', label: 'Código', resend: 'Enviar un código nuevo', resent: 'Te hemos enviado un código nuevo.', changeEmail: 'Usar otro email', errors: { codeInvalid: 'Ese código no es correcto o ha caducado.', tooManyAttempts: 'Demasiados códigos incorrectos. Pide uno nuevo.', expired: 'Ha pasado demasiado tiempo. Empieza de nuevo.', unavailable: 'Oxy no puede enviar emails ahora. Inténtalo más tarde.', rateLimited: 'Demasiados códigos. Inténtalo más tarde.', }, }, linkCommons: { title: 'Vincula Commons', subtitle: 'Guarda tu propia clave: vincula Commons y esta cuenta será solo tuya. Su email se elimina y tu frase de recuperación en Commons es cómo vuelves a entrar.', scan: 'En tu móvil, abre Commons, elige «Tengo una cuenta de Oxy en la web» y escanea este código.', waiting: 'Esperando a Commons…', compareTitle: 'Comprueba el código', compare: 'Commons muestra el mismo código. Si no es así, cancela.', confirm: 'Sí, vincular Commons', cancel: 'Cancelar', doneTitle: 'Commons está vinculado', done: 'Esta cuenta ahora es de autocustodia. Su email se ha eliminado: tu frase de recuperación en Commons es cómo vuelves a entrar.', already: 'Esta cuenta ya usa Commons.', expired: 'Este código ha caducado.', renew: 'Mostrar un código nuevo', failed: 'No se ha podido vincular Commons. Inténtalo de nuevo.', confirmTitle: 'Confirma la vinculación', confirmDescription: 'Para terminar, confirma que eres tú con un código que te enviamos por email.', confirmPasswordDescription: 'Para terminar, confirma que eres tú con tu contraseña.', row: 'Guarda tu propia clave con Commons', }, reauth: { title: 'Confirma que eres tú', emailDescription: 'Te enviaremos un código a tu email para confirmar este cambio.', sendCode: 'Enviar código', codeSent: 'Hemos enviado un código de 6 dígitos a tu email.', codeLabel: 'Código del email', passwordLabel: 'Contraseña actual', usePassword: 'Usar tu contraseña', useEmail: 'Recibir un código por email', errors: { invalid: 'No ha funcionado. Revisa lo que has escrito e inténtalo de nuevo.', totpRequired: 'Escribe también el código de tu app de autenticación.', }, }, signInSecurity: { title: 'Inicio de sesión y seguridad', subtitle: 'Email, contraseña, app de autenticación y dónde tienes la sesión iniciada', methodsTitle: 'Cómo inicias sesión', notPersonal: 'Solo una cuenta personal inicia sesión con email, contraseña o app de autenticación.', loadFailed: 'No se ha podido cargar cómo inicia sesión esta cuenta.', retry: 'Reintentar', noEmailWarning: 'Esta cuenta no tiene email. Solo puedes entrar con tu contraseña y, si la olvidas, no hay forma de recuperar la cuenta.', status: { on: 'Activada', off: 'Desactivada', }, commons: { title: 'Commons', }, errors: { lastSignInMethod: 'Es tu única forma de iniciar sesión. Añade otra antes.', passwordRequired: 'Crea una contraseña primero y confirma con ella.', emailUnchanged: 'Ese ya es tu email.', }, email: { title: 'Email', none: 'Sin email', description: 'Los códigos y enlaces para iniciar sesión y los avisos de seguridad llegan a esta dirección.', noneDescription: 'Añade un email para iniciar sesión con un código o un enlace, y para recuperar la cuenta si olvidas la contraseña.', change: 'Cambiar email', add: 'Añadir un email', remove: 'Quitar email', removeNeedsPassword: 'Para quitar tu email, crea antes una contraseña: será tu única forma de iniciar sesión.', newLabel: 'Nueva dirección de email', newDescription: 'Enviaremos un código a la nueva dirección para comprobar que es tuya.', invalid: 'Escribe una dirección de email válida.', sendCode: 'Enviar código', confirmTitle: 'Confirma el nuevo email', confirmDescription: 'Escribe el código que hemos enviado a {{email}} y confirma que eres tú.', codeLabel: 'Código enviado al nuevo email', save: 'Guardar email', saved: 'Tu email se ha actualizado. Se ha cerrado la sesión en los demás dispositivos.', removeTitle: 'Quitar tu email', removeDescription: 'Solo podrás iniciar sesión con tu contraseña. Si la olvidas, no hay forma de recuperar la cuenta. Confirma con tu contraseña.', removed: 'Tu email se ha quitado. Se ha cerrado la sesión en los demás dispositivos.', }, password: { title: 'Contraseña', setTitle: 'Crear una contraseña', changeTitle: 'Cambiar la contraseña', description: 'Inicia sesión con tu contraseña en lugar de con un código por email. Usa al menos {{min}} caracteres.', newLabel: 'Contraseña nueva', repeatLabel: 'Repite la contraseña', tooShort: 'Usa al menos {{min}} caracteres.', mismatch: 'Las contraseñas no coinciden.', signOutOthers: 'Cerrar sesión en todos los demás sitios', save: 'Guardar contraseña', saved: 'Tu contraseña se ha guardado.', row: 'Opcional: inicia sesión con contraseña', remove: 'Quitar contraseña', removeTitle: 'Quitar tu contraseña', removeDescription: 'Iniciarás sesión con un código o un enlace enviado a tu email.', removed: 'Tu contraseña se ha quitado. Se ha cerrado la sesión en los demás dispositivos.', }, totp: { title: 'App de autenticación', description: 'Después del código por email o de la contraseña, Oxy también te pide un código de una app como Google Authenticator o 1Password.', setUp: 'Configurar', scan: 'Escanea este código QR con tu app de autenticación o escribe la clave de configuración.', secretLabel: 'Clave de configuración', codeLabel: 'Código de la app', enable: 'Activar', enabled: 'La app de autenticación está activada.', disable: 'Desactivar la app de autenticación', disabled: 'La app de autenticación está desactivada.', on: 'Activada', off: 'Desactivada', backupTitle: 'Guarda tus códigos de seguridad', backupDescription: 'Si pierdes el móvil, cada código te permite iniciar sesión una vez. Guárdalos en un lugar seguro: no se volverán a mostrar.', copy: 'Copiar códigos', copied: 'Códigos de seguridad copiados.', savedThem: 'Ya los he guardado', regenerate: 'Obtener códigos de seguridad nuevos', regenerateDescription: 'Tus códigos de seguridad anteriores dejarán de funcionar.', remaining: 'Quedan {{count}} códigos de seguridad', row: 'Un segundo paso al iniciar sesión', onWithCodes: 'Activada · quedan {{count}} códigos de seguridad', }, }, domains: { title: 'Dominios', subtitle: 'Demuestra que un dominio es tuyo y muéstralo en tu perfil', add: { title: 'Añadir un dominio', label: 'Dominio', action: 'Obtener código de verificación', }, instructions: { title: 'Verifica {{domain}}', dns: 'Añade este registro TXT al DNS del dominio:', wellKnown: 'O publica este texto en la URL .well-known de abajo:', verify: 'Verificar', }, list: { title: 'Tus dominios', empty: 'Aún no tienes dominios', }, method: { dns: 'Registro DNS', wellKnown: 'Archivo .well-known', }, verified: '{{domain}} está verificado', errors: { request: 'No se pudo empezar la verificación. Revisa el dominio e inténtalo otra vez.', notYet: 'Aún no está verificado. Los cambios de DNS pueden tardar en aparecer.', remove: 'No se pudo quitar el dominio', }, remove: { title: 'Quitar dominio', message: '¿Quitar {{domain}} de tu cuenta?', confirm: 'Quitar', }, }, follow: { pending: 'Solicitado', disabled: 'Desactivado aquí', named: '{{label}}: {{name}}', verbs: { follow: { idle: 'Seguir', active: 'Siguiendo', everywhere: 'Dejar de seguir en todas partes', undo: 'Deja de seguir esta cuenta', undoNamed: 'Deja de seguir a {{name}}', checking: 'Comprobando si sigues esta cuenta', checkingNamed: 'Comprobando si sigues a {{name}}', }, subscribe: { idle: 'Suscribirse', active: 'Suscrito', everywhere: 'Cancelar la suscripción en todas partes', undo: 'Cancela la suscripción', undoNamed: 'Cancela la suscripción a {{name}}', checking: 'Comprobando la suscripción', checkingNamed: 'Comprobando si estás suscrito a {{name}}', }, join: { idle: 'Unirse', active: 'Unido', everywhere: 'Salir en todas partes', undo: 'Deja de ser miembro', undoNamed: 'Deja de ser miembro de {{name}}', checking: 'Comprobando si eres miembro', checkingNamed: 'Comprobando si eres miembro de {{name}}', }, watch: { idle: 'Vigilar', active: 'Vigilando', everywhere: 'Dejar de vigilar en todas partes', undo: 'Deja de vigilar', undoNamed: 'Deja de vigilar {{name}}', checking: 'Comprobando si lo vigilas', checkingNamed: 'Comprobando si vigilas {{name}}', }, }, all: { idle: 'Seguir a todos', hint: 'Sigue a las {{count}} cuentas', hintOne: 'Sigue a {{count}} cuenta', undoHint: 'Deja de seguir las {{count}} cuentas', undoHintOne: 'Deja de seguir {{count}} cuenta', }, menu: { forDuration: '{{label}} durante {{duration}}', showIn: 'Mostrar en {{app}}', hideIn: 'No mostrar en {{app}}', thisApp: 'esta app', options: '{{label}}: opciones', optionsHint: 'Abre más opciones', }, durations: { day: '24 horas', threeDays: '72 horas', week: 'una semana', }, errors: { update: 'No se pudo actualizar el estado', read: 'No se pudo comprobar el estado', mode: 'No se pudo cambiar el ajuste de esta aplicación', offline: 'No tienes conexión. Compruébala y vuelve a intentarlo.', signedOut: 'Vuelve a iniciar sesión para continuar', forbidden: 'Esta aplicación no tiene permiso para hacerlo', notFound: 'Esto ya no está disponible', rateLimited: 'Demasiados intentos. Vuelve a intentarlo en un momento.', }, }, }; export default dict;