Files
Oxicloud/frontend/static/locales/es.json
T
DioCrafts 2ebc4e82b2 feat(upload): batch dedup-check + instant uploads + resilient parallel uploads
Backend:
- POST /api/dedup/check-batch — returns the subset of submitted whole-file
  BLAKE3 hashes the caller already owns, in one query (user-scoped,
  anti-enumeration via idx_files_blob_hash). Lets a client learn which of N
  files it can skip with a single round trip.
  (dedup_service::user_owned_blob_references, dedup_handler, routes) + tests.

Frontend — upload pipeline:
- Instant ("by-hash") upload for content the caller already owns: hash every
  in-band file, ONE /api/dedup/check-batch, create the owned ones with zero
  content bytes, upload only the rest. Covers all sizes below the 8 MB delta
  threshold (delta handles larger files). vendor/hashWasm computes the
  whole-file BLAKE3 on the main thread.
- Resilient parallel uploads: bounded concurrency (4) + a per-file deadline,
  so one stuck/slow/failing file no longer freezes the whole batch — it blocks
  only its own lane and times out / is skipped while the rest proceed. Quota
  exhaustion stops the run early; partial results are reported ("N uploaded,
  M failed").
- Folder uploads (uploadTree) show live bell progress + a final result and go
  through the same dedup + parallel pipeline.
- Storage bar ("Almacenamiento") refreshes after uploads/deletes
  (session.refresh) instead of showing the stale login value.

Frontend — i18n / UI fixes:
- Fix literal {{count}} and {{percentage}}/{{used}}/{{total}} (param-name
  mismatches) in the selection toolbar and storage line; add es strings.
- Remove the underline on user-menu link rows.

Benchmark (uploadStrategies.bench.test.ts) compares baseline / per-file / batch:
the batch collapses N per-file probes into one check (e.g. a WAN 1000-file run
drops from 1700 to 1001 round trips) while matching per-file's byte savings.

Also includes in-progress group virtual-description i18n work present in the
working tree (groups.ts, ResourceList, locale `groups` keys).

Verified: cargo clippy -D warnings (clean), backend 448 tests; frontend
npm run check (clean), 58 unit tests.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-20 17:03:30 +02:00

1117 lines
47 KiB
JSON
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
{
"server": {
"magic_link": {
"page": {
"expired_title": "Este enlace de inicio de sesión ya no es válido",
"expired_body": "Es posible que el enlace haya expirado o ya se haya utilizado. Podemos enviarte uno nuevo — llegará a tu bandeja de entrada en unos segundos.",
"resend_to": "Enviar un nuevo enlace a {{email}}",
"generic_unavailable": "Este enlace de inicio de sesión ya no es válido. Es posible que ya se haya usado o que haya expirado. Solicita uno nuevo desde la página de inicio de sesión.",
"service_unavailable": "El inicio de sesión por enlace mágico no está habilitado en este servidor.",
"internal_error": "Algo salió mal al iniciar sesión. Por favor, inténtalo de nuevo.",
"resend_failure": "Algo salió mal al enviar el enlace. Por favor, inténtalo de nuevo.",
"cross_browser_title": "¿Continuar el inicio de sesión en este dispositivo?",
"cross_browser_body": "Has abierto este enlace de inicio de sesión en un navegador o dispositivo diferente del que lo solicitó.",
"cross_browser_warning": "Si solicitaste este enlace, es seguro continuar. Si no, cierra esta página — hacer clic en Continuar iniciaría sesión a otra persona en tu cuenta.",
"cross_browser_continue": "Continuar e iniciar sesión",
"resend_confirmation_title": "Revisa tu bandeja de entrada",
"resend_confirmation_body": "Si el enlace de inicio de sesión pertenecía a una cuenta activa, se acaba de enviar uno nuevo. Por favor, revisa tu bandeja de entrada.",
"return_link": "Volver a OxiCloud"
},
"email": {
"invitation": {
"subject": "{{inviter}} ha compartido un {{kind}} contigo en OxiCloud",
"body": "{{inviter_full}} ha compartido un {{kind}} contigo en OxiCloud.\n\nÁbrelo haciendo clic en el enlace de abajo:\n{{link}}\n\nEl enlace es de un solo uso y expira en {{ttl_hours}} horas.\nSi no esperabas esta invitación, puedes ignorar este mensaje.\n\n— OxiCloud"
},
"login": {
"subject": "Inicia sesión en OxiCloud",
"body": "Hola,\n\nUsa el enlace de abajo para iniciar sesión en OxiCloud. El enlace es de un solo uso y expira en {{ttl_minutes}} minutos. Ábrelo en el mismo dispositivo donde lo solicitaste.\n\n{{link}}\n\nSi no solicitaste este enlace de inicio de sesión, puedes ignorar este mensaje — no se necesita ninguna acción adicional.\n\n— OxiCloud"
},
"kind_file": "archivo",
"kind_folder": "carpeta",
"english_fallback_divider": "--- Versión en inglés a continuación ---"
}
},
"notification": {
"share": {
"subject": "{{inviter}} ha compartido un {{kind}} contigo en OxiCloud",
"body": "{{inviter_full}} ha compartido un {{kind}} contigo en OxiCloud.\n\nAbre OxiCloud para ver tu nuevo recurso compartido:\n{{login_link}}\n\nPuede que tengas más recursos compartidos nuevos de {{inviter}} — inicia sesión para ver todos tus elementos compartidos.\n\n— OxiCloud\n\nRecibes este mensaje porque tienes una cuenta de OxiCloud y la preferencia de notificación de recursos compartidos está activada. Puedes desactivarla en tu perfil (Enviarme un correo cuando alguien comparta conmigo)."
}
}
},
"app": {
"title": "OxiCloud",
"description": "Sistema de almacenamiento en la nube minimalista"
},
"nav": {
"files": "Archivos",
"shared": "Compartidos",
"recent": "Recientes",
"favorites": "Favoritos",
"photos": "Fotos",
"music": "Música",
"trash": "Papelera",
"sharedwithme": "Compartidos conmigo",
"profile": "Perfil",
"shared_with_me": "Compartidos conmigo",
"groups": "Grupos"
},
"photos": {
"empty_state": "Aún no hay fotos",
"empty_hint": "Sube imágenes o videos para verlos aquí",
"items_selected": "seleccionados",
"view_daily": "Día",
"view_monthly": "Mes",
"view_yearly": "Año",
"group_by": "Agrupar por"
},
"music": {
"create_playlist": "Crear Lista",
"playlists": "Listas",
"no_playlists": "Sin listas aún",
"empty_hint": "Crea tu primera lista para empezar a organizar tu música",
"select_playlist": "Selecciona una lista",
"select_hint": "Elige una lista de la barra lateral o crea una nueva",
"add_tracks": "Añadir Pistas",
"no_tracks": "No hay pistas en esta lista",
"unknown_artist": "Artista Desconocido",
"unknown_title": "Desconocido",
"confirm_delete": "¿Eliminar esta lista?",
"playlist_name": "Nombre de la lista",
"create": "Crear",
"delete": "Eliminar",
"share": "Compartir",
"edit": "Editar",
"play_all": "Reproducir Todo",
"shuffle": "Aleatorio",
"repeat": "Repetir",
"repeat_one": "Repetir Una",
"queue": "Cola",
"queue_empty": "Cola vacía",
"not_playing": "No reproduciendo",
"play": "Reproducir",
"pause": "Pausar",
"previous": "Anterior",
"next": "Siguiente",
"volume": "Volumen",
"mute": "Silenciar",
"unmute": "Activar sonido",
"title": "Título",
"artist": "Artista",
"album": "Álbum",
"tracks": "pistas",
"add": "Añadir",
"added": "¡Añadido!",
"added_to_playlist": "añadido a la lista",
"add_to_playlist": "Añadir a playlist",
"load_error": "Error al cargar listas",
"add_error": "No se pudieron añadir las pistas",
"no_playlists_yet": "No hay listas aún. ¡Crea una primero!",
"selected_files": "Seleccionados:",
"share_with_user": "ID de usuario o email",
"playback_error": "Error de reproducción",
"error": "Error",
"remove": "Eliminar",
"track_removed": "Pista eliminada",
"manage_shares": "Gestionar compartidos",
"no_shares": "Sin compartidos aún",
"remove_share": "Eliminar compartido",
"can_write": "Puede editar",
"read_only": "Solo lectura",
"public": "Pública",
"private": "Privada",
"toggle_public": "Visibilidad",
"make_public": "Hacer pública",
"make_private": "Hacer privada",
"set_cover": "Establecer portada",
"cover_updated": "Portada actualizada",
"search_audio": "Buscar archivos de audio…",
"no_audio_files": "No se encontraron archivos de audio",
"selected": "seleccionados",
"loading": "Cargando…",
"search_error": "No se pudieron cargar los archivos de audio",
"adding": "Añadiendo…",
"prev": "Anterior"
},
"share": {
"dialogTitle": "Compartir Enlace",
"linkLabel": "Enlace compartido:",
"copyLink": "Copiar",
"permissions": "Permisos:",
"permissionRead": "Lectura",
"permissionWrite": "Escritura",
"permissionReshare": "Recompartir",
"password": "Protección con contraseña:",
"generatePassword": "Generar",
"expiration": "Fecha de caducidad:",
"update": "Actualizar compartido",
"remove": "Eliminar compartido",
"notifyTitle": "Enviar notificación",
"notifyEmailLabel": "Dirección de correo:",
"notifyMessageLabel": "Mensaje (opcional):",
"notifySend": "Enviar notificación",
"shareWithOthers": "Compartir con otros",
"sharePublicly": "Compartir públicamente",
"shareSettings": "Configuración de compartido",
"shareCopied": "Enlace copiado al portapapeles",
"shareCreated": "Enlace compartido creado correctamente",
"shareUpdated": "Configuración de compartido actualizada",
"shareRemoved": "Compartido eliminado correctamente",
"inviteByEmail": "Invitar por correo — se enviará una invitación",
"directoryUnavailable": "Directorio de usuarios no disponible",
"linkNamePlaceholder": "Nombre del enlace (opcional)",
"newLink": "Nuevo enlace",
"noExpiry": "Sin caducidad",
"pending": "Pendiente",
"people": "Personas",
"publicLinks": "Enlaces públicos",
"role": {
"canEdit": "Puede editar",
"canManage": "Puede gestionar",
"canView": "Puede ver"
},
"searchPlaceholder": "Buscar personas…",
"shareOf": "Compartir:",
"sharedLink": "Enlace compartido",
"copied": "Enlace copiado",
"copy": "Copiar",
"copy_failed": "No se pudo copiar el enlace",
"download": "Descargar",
"files": "Archivos",
"folders": "Carpetas",
"link_name": "Nombre del enlace (opcional)",
"notifyByEmail": "Notificar por correo",
"revoke": "Eliminar",
"role_label": "Rol"
},
"share_dialogTitle": "Compartir Enlace",
"share_linkLabel": "Enlace compartido:",
"share_copyLink": "Copiar",
"share_permissions": "Permisos:",
"share_permissionRead": "Lectura",
"share_permissionWrite": "Escritura",
"share_permissionReshare": "Recompartir",
"share_password": "Protección con contraseña:",
"share_generatePassword": "Generar",
"share_expiration": "Fecha de caducidad:",
"share_update": "Actualizar compartido",
"share_remove": "Eliminar compartido",
"share_notifyTitle": "Enviar notificación",
"share_notifyEmailLabel": "Dirección de correo:",
"share_notifyMessageLabel": "Mensaje (opcional):",
"share_notifySend": "Enviar notificación",
"shared": {
"backToFiles": "Volver a Archivos",
"pageTitle": "Recursos Compartidos",
"pageDescription": "Administra tus archivos y carpetas compartidos",
"filterType": "Tipo:",
"filterAll": "Todos",
"filterFiles": "Archivos",
"filterFolders": "Carpetas",
"sortBy": "Ordenar por:",
"sortByName": "Nombre",
"sortByDate": "Fecha compartido",
"sortByExpiration": "Caducidad",
"search": "Buscar",
"colName": "Nombre",
"colType": "Tipo",
"colDateShared": "Fecha compartido",
"colExpiration": "Caducidad",
"colPermissions": "Permisos",
"colPassword": "Contraseña",
"colActions": "Acciones",
"emptyStateTitle": "Aún no hay recursos compartidos",
"emptyStateDesc": "Cuando compartas archivos o carpetas, aparecerán aquí",
"goToFiles": "Ir a Archivos",
"typeFile": "Archivo",
"typeFolder": "Carpeta",
"noExpiration": "Sin caducidad",
"hasPassword": "Sí",
"noPassword": "No",
"editShare": "Editar compartido",
"notifyShare": "Notificar a alguien",
"copyLink": "Copiar enlace",
"removeShare": "Eliminar compartido",
"linkCopied": "¡Enlace copiado al portapapeles!",
"linkCopyFailed": "Error al copiar el enlace",
"itemUpdated": "Configuración de compartido actualizada",
"itemRemoved": "Compartido eliminado correctamente",
"invalidEmail": "Por favor, introduce una dirección de correo válida",
"notificationSent": "Notificación enviada correctamente",
"notificationFailed": "Error al enviar la notificación",
"shared_backToFiles": "Volver a Archivos",
"shared_pageTitle": "Recursos Compartidos",
"shared_pageDescription": "Administra tus archivos y carpetas compartidos",
"shared_filterType": "Tipo:",
"shared_filterAll": "Todos",
"shared_filterFiles": "Archivos",
"shared_filterFolders": "Carpetas",
"shared_sortBy": "Ordenar por:",
"shared_sortByName": "Nombre",
"shared_sortByDate": "Fecha compartido",
"shared_sortByExpiration": "Caducidad",
"shared_search": "Buscar",
"shared_colName": "Nombre",
"shared_colType": "Tipo",
"shared_colDateShared": "Fecha compartido",
"shared_colExpiration": "Caducidad",
"shared_colPermissions": "Permisos",
"shared_colPassword": "Contraseña",
"shared_colActions": "Acciones",
"shared_emptyStateTitle": "Aún no hay recursos compartidos",
"shared_emptyStateDesc": "Cuando compartas archivos o carpetas, aparecerán aquí",
"shared_goToFiles": "Ir a Archivos",
"shared_typeFile": "Archivo",
"shared_typeFolder": "Carpeta",
"shared_noExpiration": "Sin caducidad",
"shared_hasPassword": "Sí",
"shared_noPassword": "No",
"shared_editShare": "Editar compartido",
"shared_notifyShare": "Notificar a alguien",
"shared_copyLink": "Copiar enlace",
"shared_removeShare": "Eliminar compartido",
"shared_linkCopied": "¡Enlace copiado al portapapeles!",
"shared_linkCopyFailed": "Error al copiar el enlace",
"shared_itemUpdated": "Configuración de compartido actualizada",
"shared_itemRemoved": "Compartido eliminado correctamente",
"shared_invalidEmail": "Por favor, introduce una dirección de correo válida",
"shared_notificationSent": "Notificación enviada correctamente",
"shared_notificationFailed": "Error al enviar la notificación"
},
"actions": {
"search": "Buscar archivos...",
"new_folder": "Nueva carpeta",
"upload": "Subir",
"upload_files": "Subir archivos",
"upload_folder": "Subir carpeta",
"upload.uploading": "Subiendo...",
"upload.complete": "{count} / {total} subidos",
"upload.files": "archivos",
"rename": "Renombrar",
"move": "Mover a...",
"move_to": "Mover a",
"delete": "Eliminar",
"download": "Descargar",
"view": "Ver",
"cancel": "Cancelar",
"confirm": "Confirmar",
"share": "Compartir",
"favorite": "Añadir a favoritos",
"unfavorite": "Quitar de favoritos",
"copy": "Copiar",
"notify": "Notificar",
"send": "Enviar",
"clear_recent": "Limpiar recientes",
"logout": "Cerrar sesión",
"create": "Crear",
"search_btn": "Buscar",
"close": "Cerrar",
"delete_permanently": "Eliminar permanentemente",
"empty_trash": "Vaciar papelera",
"open_parent_folder": "Ir a la carpeta padre",
"add": "Añadir",
"apply": "Aplicar",
"clear": "Limpiar",
"remove": "Quitar"
},
"user_menu": {
"appearance": "Apariencia",
"about": "Acerca de OxiCloud",
"about_description": "Plataforma de almacenamiento en la nube creada con Rust y Arquitectura Limpia. Rápida, segura y privada.",
"admin_panel": "Panel de administración",
"profile": "Mi perfil",
"role_user": "Usuario",
"theme": {
"light": "Claro",
"dark": "Oscuro",
"auto": "Como el sistema"
},
"manage_groups": "Gestionar grupos",
"admin": "Admin"
},
"files": {
"name": "Nombre",
"type": "Tipo",
"size": "Tamaño",
"modified": "Modificado",
"no_files": "No hay archivos en esta carpeta",
"empty_hint": "Sube archivos o crea carpetas para comenzar",
"loading": "Cargando archivos…",
"view_grid": "Vista de cuadrícula",
"view_list": "Vista de lista",
"file_types": {
"document": "Documento",
"image": "Imagen",
"video": "Video",
"audio": "Audio",
"pdf": "PDF",
"text": "Texto",
"folder": "Carpeta",
"spreadsheet": "Hoja de cálculo",
"presentation": "Presentación",
"archive": "Archivo comprimido",
"installer": "Instalador",
"code": "Código"
},
"owner": "Propietario",
"add_favorites": "Añadir a favoritos",
"added_favorites": "Añadido a favoritos",
"col_name": "Nombre",
"col_owner": "Propietario",
"col_size": "Tamaño",
"col_type": "Tipo",
"copy": "Copiar",
"edit": "Editar",
"file": "Archivo",
"folder": "Carpeta",
"new_folder": "Nueva carpeta",
"share": "Compartir",
"view": "Ver",
"selected_count": "{{count}} seleccionados",
"uploaded_saved": "Subida completa — {{mb}} MB deduplicados",
"uploaded_partial": "{{ok}} subidos, {{failed}} fallaron",
"upload_failed": "La subida falló"
},
"dialogs": {
"rename_folder": "Renombrar carpeta",
"rename_file": "Renombrar archivo",
"new_name": "Nuevo nombre",
"new_folder_title": "Nueva carpeta",
"folder_name": "Nombre de la carpeta",
"folder_placeholder": "Mi carpeta",
"rename_title": "Renombrar",
"move_file": "Mover archivo",
"move_folder": "Mover carpeta",
"select_destination": "Selecciona la carpeta destino:",
"select_this_folder": "Seleccionar esta carpeta",
"go_to_parent": ".. (carpeta superior)",
"no_subfolders": "Sin subcarpetas",
"root": "Raíz",
"delete_confirmation": "¿Estás seguro de que quieres eliminar",
"and_contents": "y todo su contenido",
"no_undo": "Esta acción no se puede deshacer",
"confirm_title": "Confirmar acción",
"confirm_delete": "Mover a papelera",
"confirm_delete_file": "¿Estás seguro de que quieres mover a la papelera el archivo \"{{name}}\"?",
"confirm_delete_folder": "¿Estás seguro de que quieres mover a la papelera la carpeta \"{{name}}\" y todo su contenido?",
"confirm_permanent_delete": "Eliminar permanentemente",
"confirm_permanent_delete_msg": "¿Estás seguro de que quieres eliminar permanentemente este elemento? Esta acción no se puede deshacer.",
"confirm_empty_trash": "Vaciar papelera",
"confirm_delete_share": "Eliminar enlace compartido",
"confirm_delete_share_msg": "¿Estás seguro de que quieres eliminar este enlace compartido?",
"share_file": "Compartir Archivo",
"share_folder": "Compartir Carpeta",
"existing_shares": "Compartidos Existentes",
"share_options": "Opciones de Compartición",
"password": "Contraseña",
"expiration": "Caducidad",
"permissions": "Permisos",
"generated_link": "Enlace Generado",
"notify": "Enviar Notificación",
"recipient": "Destinatario",
"message": "Mensaje",
"move_to_home": "Mover a la carpeta de inicio"
},
"dropzone": {
"drag_files": "Arrastra archivos aquí o haz clic para seleccionar",
"drop_files": "Suelta los archivos para subirlos"
},
"permissions": {
"read": "Lectura",
"write": "Escritura",
"reshare": "Recompartir"
},
"errors": {
"file_not_found": "Archivo no encontrado",
"folder_not_found": "Carpeta no encontrada",
"delete_error": "Error al eliminar",
"upload_error": "Error al subir el archivo",
"rename_error": "Error al renombrar",
"move_error": "Error al mover",
"empty_name": "El nombre no puede estar vacío",
"name_exists": "Ya existe un archivo o carpeta con ese nombre",
"generic_error": "Ha ocurrido un error",
"group_name_invalid": "El nombre del grupo debe seguir el formato de prefijo de correo (letras, dígitos, punto, guión, guion bajo; 1–64 caracteres).",
"group_cycle": "Este miembro creaería una referencia circular entre grupos.",
"group_depth_exceeded": "Esta profundidad de anidamiento excede el máximo permitido (8).",
"group_virtual_immutable": "El grupo «Internal» es gestionado por el sistema y no se puede modificar.",
"group_not_found": "Grupo no encontrado.",
"group_name_taken": "Ya existe un grupo con este nombre."
},
"breadcrumb": {
"home": "Inicio"
},
"trash": {
"empty_trash": "Vaciar papelera",
"empty_state": "La papelera está vacía",
"original_location": "Ubicación original",
"deleted_date": "Fecha de eliminación",
"remaining": "Restante",
"actions": "Acciones",
"restore": "Restaurar",
"delete_permanently": "Eliminar permanentemente",
"empty_confirm": "¿Estás seguro de que quieres vaciar la papelera? Esta acción eliminará permanentemente todos los elementos.",
"groupby": {
"remaining_days": "Días restantes",
"trashed_time": "Fecha de eliminación"
},
"delete": "Eliminar permanentemente",
"empty_action": "Vaciar papelera"
},
"daysRemaining": {
"expired": "Caducado",
"today": "Hoy",
"tomorrow": "Mañana",
"inDays": "{{count}} días"
},
"expiryChip": {
"never": "Nunca caduca",
"expired": "Caducado",
"today": "Caduca hoy",
"tomorrow": "Caduca mañana",
"inDays": "Caduca en {{count}} días",
"onDate": "Caduca el {{date}}"
},
"auth": {
"login_title": "Iniciar sesión",
"username": "Usuario",
"username_placeholder": "Ingresa tu nombre de usuario",
"login_identifier": "Usuario o correo electrónico",
"login_identifier_placeholder": "Ingresa tu usuario o correo electrónico",
"password": "Contraseña",
"password_placeholder": "Ingresa tu contraseña",
"login_button": "Iniciar sesión",
"no_account": "¿No tienes cuenta?",
"register": "Regístrate",
"admin_setup": "¿Primera vez?",
"setup": "Configurar administrador",
"register_title": "Crear cuenta",
"email": "Email",
"email_placeholder": "Ingresa tu email",
"confirm_password": "Confirmar contraseña",
"confirm_password_placeholder": "Confirma tu contraseña",
"register_button": "Crear cuenta",
"have_account": "¿Ya tienes cuenta?",
"login": "Iniciar sesión",
"setup_title": "Configuración inicial",
"setup_step1": "Admin",
"setup_step2": "Sistema",
"setup_step3": "Completado",
"admin_username": "Usuario administrador",
"admin_email": "Email administrador",
"admin_password": "Contraseña administrador",
"create_admin": "Crear administrador",
"back_to_login": "¿Ya está configurado?",
"admin_success": "¡Cuenta de administrador creada con éxito! Ahora puedes iniciar sesión.",
"account_success": "¡Cuenta creada con éxito! Ahora puedes iniciar sesión.",
"passwords_mismatch": "Las contraseñas no coinciden",
"admin_create_error": "Error al crear cuenta de administrador",
"or": "o",
"sso_login": "Iniciar sesión con SSO",
"sso_login_provider": "Iniciar sesión con {{provider}}",
"magicLinkHint": "¿Sin contraseña? Introduce tu correo electrónico y te enviaremos un enlace de inicio de sesión único.",
"magicLinkEmailLabel": "Correo electrónico",
"magicLinkEmailPlaceholder": "tu@ejemplo.com",
"magicLinkSubmit": "Enviar enlace de inicio de sesión",
"magicLinkSent": "Si existe una cuenta para ese correo, se ha enviado un enlace de inicio de sesión. Revisa tu bandeja de entrada.",
"magicLinkUnavailable": "El inicio de sesión por correo electrónico no está disponible en este servidor.",
"magicLinkNetworkError": "No se pudo conectar con el servidor: {{message}}",
"magicLinkToggle": "¿Sin contraseña? Recíbelo por correo",
"passwordsMatch": "Las contraseñas coinciden",
"capsLock": "Bloq Mayús activado",
"caps_lock": "Bloq Mayús activado",
"magic_email_label": "Correo electrónico",
"magic_hint": "¿Sin contraseña? Introduce tu correo electrónico y te enviaremos un enlace de inicio de sesión único.",
"magic_unavailable": "El inicio de sesión por correo electrónico no está disponible en este servidor.",
"passwords_match": "Las contraseñas coinciden",
"sign_in": "Iniciar sesión"
},
"storage": {
"title": "Almacenamiento",
"calculating": "Calculando...",
"used": "{{percentage}}% usado ({{used}} / {{total}})"
},
"viewer": {
"unsupported_file": "Este tipo de archivo no se puede previsualizar.",
"download_file": "Descargar archivo",
"zoom_in": "Acercar",
"zoom_out": "Alejar",
"zoom_reset": "Restablecer zoom"
},
"language_selector": {
"title": "¡Bienvenido!",
"subtitle": "Selecciona tu idioma para continuar",
"continue": "Continuar",
"languages": {
"en": "English",
"es": "Español",
"zh": "中文",
"fa": "فارسی",
"fr": "Français",
"de": "Deutsch",
"pt": "Português",
"ar": "العربية",
"hi": "हिन्दी",
"it": "Italiano",
"ja": "日本語",
"ko": "한국어",
"nl": "Nederlands",
"ru": "Русский"
}
},
"favorites": {
"empty_state": "Aún no hay favoritos",
"empty_hint": "Marca archivos o carpetas con estrella para añadirlos a favoritos",
"add": "Añadir a favoritos",
"remove": "Quitar de favoritos",
"added_title": "Añadido a favoritos",
"added_msg": "añadido a favoritos",
"removed_title": "Quitado de favoritos",
"removed_msg": "quitado de favoritos"
},
"recent": {
"title": "Recientes",
"clear": "Limpiar recientes",
"accessed": "Accedido",
"empty_state": "No hay archivos recientes",
"empty_hint": "Los archivos que abras aparecerán aquí",
"loadMore": "Cargar más"
},
"notifications": {
"file_renamed": "Archivo renombrado",
"file_renamed_to": "Archivo renombrado a \"{{name}}\"",
"folder_renamed": "Carpeta renombrada",
"folder_renamed_to": "Carpeta renombrada a \"{{name}}\"",
"file_uploaded": "Archivo subido",
"file_deleted": "Archivo movido a papelera",
"folder_deleted": "Carpeta movida a papelera",
"item_deleted_permanently": "Elemento eliminado permanentemente",
"trash_emptied": "Papelera vaciada correctamente",
"title": "Notificaciones",
"empty": "Sin notificaciones",
"link_created": "Enlace creado",
"share_success": "Enlace compartido creado correctamente",
"upload_files_section_title": "Subida no disponible aquí",
"upload_files_section_body": "Ve a la sección Archivos para subir archivos"
},
"batch": {
"one_selected": "1 elemento seleccionado",
"n_selected": "{{count}} elementos seleccionados",
"confirm_delete": "¿Estás seguro de que quieres mover {{count}} elementos a la papelera?",
"move_title": "Mover {{count}} elemento(s)",
"add_favorites": "Añadir a favoritos",
"move_copy": "Mover o copiar"
},
"admin": {
"page_title": "Panel de Administración",
"back_to_app": "Volver a OxiCloud",
"loading": "Cargando…",
"access_denied": "Acceso Denegado",
"access_denied_desc": "Se requieren privilegios de administrador para acceder a este panel.",
"sign_in": "Iniciar sesión",
"tab_dashboard": "Panel",
"tab_users": "Usuarios",
"tab_oidc": "SSO / OIDC",
"total_users": "Usuarios Totales",
"active_users": "Usuarios Activos",
"admins": "Administradores",
"version": "Versión",
"storage_overview": "Resumen de Almacenamiento",
"used": "Usado",
"total_quota": "Cuota Total",
"usage_pct": "Uso %",
"users_over_80": "Usuarios >80% cuota",
"users_over_quota": "Usuarios sobre cuota",
"system": "Sistema",
"auth_label": "Auth",
"oidc_label": "OIDC",
"quotas_label": "Cuotas",
"enabled": "Habilitado",
"disabled": "Deshabilitado",
"active": "Activo",
"off": "Inactivo",
"allow_registration": "Permitir registro público",
"registration_warning": "El registro público está deshabilitado. Solo los administradores pueden crear nuevos usuarios.",
"user_management": "Gestión de Usuarios",
"create_user": "Crear Usuario",
"col_user": "Usuario",
"col_role": "Rol",
"col_auth": "Auth",
"col_status": "Estado",
"col_storage": "Almacenamiento",
"col_last_login": "Último Acceso",
"col_actions": "Acciones",
"loading_users": "Cargando usuarios…",
"failed_load_users": "Error al cargar usuarios",
"no_users_found": "No se encontraron usuarios",
"showing_users": "Mostrando {{from}}-{{to}} de {{total}}",
"prev": "Anterior",
"next": "Siguiente",
"inactive": "Inactivo",
"you_badge": "(tú)",
"local": "Local",
"never": "Nunca",
"just_now": "Ahora mismo",
"minutes_ago": "hace {{n}}m",
"hours_ago": "hace {{n}}h",
"days_ago": "hace {{n}}d",
"edit_quota_title": "Editar cuota",
"reset_password_title": "Restablecer contraseña",
"toggle_role_title": "Cambiar rol",
"deactivate_title": "Desactivar",
"activate_title": "Activar",
"delete_title": "Eliminar",
"sso_title": "Inicio de Sesión Único (OIDC / SSO)",
"enable_sso": "Habilitar autenticación SSO",
"provider_name": "Nombre del Proveedor",
"issuer_url": "URL del Emisor",
"issuer_url_hint": "URL del emisor OpenID Connect de tu proveedor de identidad",
"auto_discover": "Auto-descubrir",
"discovering": "Descubriendo…",
"client_id": "Client ID",
"client_secret": "Client Secret",
"client_secret_placeholder": "Dejar vacío para mantener el valor actual",
"secret_configured": "Ya hay un client secret configurado",
"callback_url": "URL de Callback",
"callback_url_hint": "(registrar en tu IdP)",
"advanced_settings": "Configuración Avanzada",
"scopes": "Scopes",
"auto_provision": "Auto-provisionar usuarios en el primer inicio de sesión",
"admin_groups": "Grupos de Admin",
"admin_groups_hint": "Nombres de grupos OIDC separados por comas que mapean al rol de admin",
"disable_password": "Desactivar inicio de sesión con contraseña (solo OIDC)",
"password_warning": "¡Esto impedirá TODOS los inicios de sesión con contraseña!",
"test_btn": "Probar",
"save_btn": "Guardar",
"saving": "Guardando…",
"settings_saved": "Configuración guardada — OIDC ahora está {{status}}",
"quota_modal_title": "Actualizar Cuota de Almacenamiento",
"quota_user_label": "Usuario:",
"new_quota": "Nueva Cuota",
"quota_unlimited_hint": "Establecer 0 para ilimitado",
"cancel": "Cancelar",
"create_user_title": "Crear Nuevo Usuario",
"username_label": "Nombre de usuario",
"username_placeholder": "juanperez",
"username_hint": "3–32 caracteres",
"password_label": "Contraseña",
"password_placeholder": "Mín 8 caracteres",
"email_label": "Correo",
"email_optional": "(opcional)",
"email_placeholder": "usuario@ejemplo.com (auto-generado si vacío)",
"role_label": "Rol",
"role_user": "Usuario",
"role_admin": "Admin",
"quota_label": "Cuota",
"creating": "Creando…",
"reset_pw_title": "Restablecer Contraseña",
"new_password_label": "Nueva Contraseña",
"resetting": "Restableciendo…",
"reset_btn": "Restablecer",
"confirm_role_change": "¿Cambiar rol a {{role}}?",
"confirm_deactivate": "¿Estás seguro de que quieres desactivar este usuario?",
"confirm_activate": "¿Estás seguro de que quieres activar este usuario?",
"confirm_delete_user": "¿ELIMINAR usuario \"{{name}}\"? ¡Esto no se puede deshacer!",
"confirm_action": "Confirmar Acción",
"confirm_yes": "Confirmar",
"confirm_no": "Cancelar",
"error_username_short": "El nombre de usuario debe tener al menos 3 caracteres",
"error_password_short": "La contraseña debe tener al menos 8 caracteres",
"error_generic": "Error",
"error_network": "Error de red: {{message}}",
"error_create_user": "Error al crear usuario",
"tab_storage": "Almacenamiento",
"storage_title": "Backend de Almacenamiento",
"storage_current_backend": "Backend Activo",
"storage_total_blobs": "Total de Blobs",
"storage_total_size": "Tamaño Total",
"storage_dedup_ratio": "Ratio de Dedup",
"storage_backend": "Tipo de Backend",
"storage_local": "Sistema de Archivos Local",
"storage_s3": "Compatible con S3",
"storage_provider_preset": "Proveedor Preconfigurado",
"storage_preset_custom": "Personalizado",
"storage_endpoint_url": "URL del Endpoint",
"storage_endpoint_hint": "Dejar vacío para usar Amazon S3 por defecto",
"storage_bucket": "Bucket",
"storage_region": "Región",
"storage_access_key": "Access Key ID",
"storage_secret_key": "Secret Access Key",
"storage_secret_configured": "Ya hay una clave secreta configurada",
"storage_key_placeholder": "Dejar vacío para mantener el valor actual",
"storage_path_style": "Forzar Path Style",
"storage_path_style_hint": "Requerido para MinIO y algunos proveedores compatibles con S3",
"storage_test_connection": "Probar Conexión",
"storage_test_success": "Conexión exitosa",
"storage_test_failure": "Conexión fallida",
"storage_save": "Guardar",
"storage_saved": "Configuración de almacenamiento guardada correctamente",
"storage_migration": "Migración de Backend",
"storage_migration_coming_soon": "La migración de backend estará disponible en una futura actualización.",
"migration_status_label": "Estado:",
"migration_start": "Iniciar Migración",
"migration_pause": "Pausar",
"migration_resume": "Reanudar",
"migration_verify": "Verificar Integridad",
"migration_complete": "Finalizar",
"migration_started": "Migración iniciada",
"migration_paused_msg": "Migración pausada",
"migration_resumed_msg": "Migración reanudada",
"migration_completed_msg": "Migración finalizada. Reinicia el servidor para usar el nuevo backend.",
"migration_verifying": "Verificando…",
"migration_verify_passed": "Verificación exitosa",
"migration_verify_failed": "Verificación fallida",
"migration_failed_blobs": "blobs fallidos",
"testing": "Probando…",
"smtp_disabled": "Desactivado (host no configurado)",
"smtp_enabled": "Activado",
"smtp_enabled_label": "Estado",
"smtp_intro": "SMTP se configura exclusivamente a través de variables de entorno (OXICLOUD_SMTP_*). Los valores siguientes se leen del servidor en ejecución — para modificarlos, edita el entorno y reinicia OxiCloud.",
"smtp_not_configured": "SMTP no está configurado en este servidor.",
"smtp_send_failed": "Fallo al enviar.",
"smtp_send_test": "Enviar correo de prueba",
"smtp_sending": "Enviando…",
"smtp_sent": "Correo de prueba enviado.",
"smtp_server_code": "Respuesta del servidor",
"smtp_test_intro": "Envía un mensaje de diagnóstico predefinido al destinatario indicado abajo e informa de la respuesta del servidor SMTP para que puedas cruzarla con los registros de tu relay.",
"smtp_test_missing_to": "Introduce una dirección de destinatario.",
"smtp_test_title": "Enviar correo de prueba",
"smtp_test_to": "Dirección del destinatario",
"smtp_title": "Correo saliente (SMTP)",
"tab_smtp": "SMTP",
"admin_users": "Administradores",
"confirm_role": "¿Cambiar rol a {{role}}?",
"dashboard": "Panel",
"email": "Correo",
"mig_complete": "Finalizar",
"mig_pause": "Pausar",
"mig_resume": "Reanudar",
"mig_verify_failed": "Verificación fallida",
"mig_verify_passed": "Verificación exitosa",
"mig_verifying": "Verificando…",
"oidc_auto_provision": "Auto-provisionar usuarios en el primer inicio de sesión",
"oidc_callback": "URL de Callback",
"oidc_client_id": "Client ID",
"oidc_disable_pw": "Desactivar inicio de sesión con contraseña (solo OIDC)",
"oidc_issuer": "URL del Emisor",
"oidc_scopes": "Scopes",
"password": "Contraseña",
"quotas": "Cuotas",
"reset_pw_for": "Nueva contraseña para",
"role": "Rol",
"smtp_fail": "Fallo al enviar.",
"smtp_send": "Enviar",
"smtp_test": "Enviar correo de prueba",
"smtp_user_state": "Auth",
"status": "Estado",
"storage": "Almacenamiento",
"storage_endpoint": "URL del Endpoint",
"storage_tab": "Almacenamiento",
"time_min_ago": "hace {{n}} min",
"title": "Admin",
"user": "Usuario",
"username": "Nombre de usuario",
"users": "Usuarios"
},
"profile": {
"page_title": "Perfil",
"back_to_app": "Volver a OxiCloud",
"loading": "Cargando…",
"not_authenticated": "No Autenticado",
"not_authenticated_desc": "Inicia sesión para ver tu perfil.",
"sign_in": "Iniciar sesión",
"role_admin": "Administrador",
"role_user": "Usuario",
"account_details": "Detalles de la Cuenta",
"username": "Nombre de usuario",
"email": "Correo electrónico",
"role": "Rol",
"last_login": "Último acceso",
"storage": "Almacenamiento",
"used": "Usado",
"quota": "Cuota",
"usage": "Uso",
"unlimited": "Ilimitado",
"app_passwords": "Contraseñas de Aplicación",
"app_pw_desc": "Genera contraseñas para clientes WebDAV, CalDAV y CardDAV. Cada contraseña se muestra solo una vez.",
"app_pw_label_placeholder": "Etiqueta (ej. Thunderbird, macOS)",
"generate": "Generar",
"generating": "Generando…",
"new_password_for": "Nueva contraseña para",
"copy_warning": "Copia esta contraseña ahora. No podrás verla de nuevo.",
"copy_to_clipboard": "Copiar al portapapeles",
"col_label": "Etiqueta",
"col_created": "Creado",
"col_last_used": "Último uso",
"col_status": "Estado",
"active": "Activa",
"revoked": "Revocada",
"revoke_title": "Revocar",
"no_app_passwords": "Aún no hay contraseñas de aplicación.",
"client_sessions": "Sesiones de cliente",
"client_sessions_desc": "Generadas automáticamente al conectar un cliente compatible con Nextcloud.",
"col_client": "Cliente",
"never": "Nunca",
"just_now": "Ahora mismo",
"minutes_ago": "hace {{n}} min",
"hours_ago": "hace {{n}}h",
"days_ago": "hace {{n}} días",
"edit_profile": "Editar perfil",
"edit_oidc_managed": "Para cambiar tu información (nombre, apellidos, foto de perfil, …), actualízala en tu proveedor de identidad. Los cambios se aplicarán en tu próximo inicio de sesión.",
"username_claim_hint": "Entre 2 y 64 caracteres, letras / dígitos / punto / guion / subrayado. Una vez elegido, el nombre de usuario no se puede cambiar (los clientes DAV/NextCloud dependen de él).",
"username_already_claimed": "Nombre de usuario fijado y no modificable (los clientes DAV/NextCloud dependen de él).",
"given_name": "Nombre",
"family_name": "Apellidos",
"notify_on_share": "Enviarme un correo cuando alguien comparta conmigo",
"notify_on_share_hint": "Cuando esté desmarcado, los recursos compartidos seguirán apareciendo en tu cuenta — simplemente no recibirás un correo sobre ellos.",
"save_profile": "Guardar cambios",
"profile_saved": "Perfil actualizado",
"profile_no_changes": "Sin cambios que guardar.",
"profile_save_failed": "Error al guardar",
"username_taken_error": "Ese nombre de usuario ya está en uso.",
"username_immutable_error": "Tu nombre de usuario ya está fijado y no se puede cambiar aquí. Contacta con un administrador si necesitas renombrarlo.",
"change_password": "Cambiar Contraseña",
"current_password": "Contraseña Actual",
"new_password": "Nueva Contraseña",
"min_8_chars": "Al menos 8 caracteres",
"confirm_password": "Confirmar Nueva Contraseña",
"update_password": "Actualizar Contraseña",
"updating": "Actualizando…",
"password_updated": "Contraseña actualizada correctamente",
"passwords_no_match": "Las contraseñas no coinciden",
"password_too_short": "La contraseña debe tener al menos 8 caracteres",
"password_change_failed": "Error al cambiar la contraseña",
"error_network": "Error de red: {{message}}",
"error_label_required": "Introduce una etiqueta",
"error_create_pw": "Error al crear contraseña de aplicación",
"confirm_revoke": "¿Revocar contraseña \"{{label}}\"? Los clientes que la usen dejarán de funcionar.",
"error_revoke": "Error al revocar contraseña",
"edit_photo": "Edit photo",
"photo_tab_url": "URL",
"photo_tab_upload": "Upload",
"photo_url_placeholder": "https://example.com/photo.jpg",
"photo_url_hint": "https://, http://, or data:image/…;base64,… accepted",
"photo_choose_file": "Choose a photo (PNG, JPEG, WebP)",
"photo_resize_note": "Images larger than 512 × 512 px are automatically resized.",
"photo_save": "Save photo",
"photo_remove": "Remove photo",
"photo_cancel": "Cancel",
"photo_save_failed": "Failed to save photo",
"photo_no_file": "Please select a file first",
"photo_managed_by_oidc": "Photo managed by your identity provider.",
"password_mismatch": "Las contraseñas no coinciden"
},
"upload": {
"uploading": "Subiendo...",
"files": "archivos",
"complete": "{{count}} / {{total}} subidos"
},
"storage_quota_exceeded": "Cuota de almacenamiento superada",
"sharedwithme": {
"pageTitle": "Compartido conmigo",
"pageDescription": "Archivos y carpetas que otros usuarios han compartido contigo",
"emptyStateTitle": "Aún no hay nada compartido contigo",
"emptyStateDesc": "Los elementos que otros usuarios compartan contigo aparecerán aquí",
"loadMore": "Cargar más",
"sharedBy": "Compartido por",
"colName": "Nombre",
"colType": "Tipo",
"colSharedBy": "Compartido por",
"colDate": "Fecha de compartición",
"colPermissions": "Permisos"
},
"groupby": {
"none": "Ninguno",
"title": "Agrupar por",
"owner": "Propietario",
"shareDate": "Fecha de compartición",
"type": "Tipo",
"type.folders": "Carpetas",
"accessedAt": "Fecha de acceso",
"modifiedAt": "Fecha de modificación",
"createdAt": "Fecha de creación",
"size": "Tamaño",
"favoriteDate": "Fecha de favorito",
"byFiles": "By files",
"sharedWith": "Shared with",
"justAdded": "Nuevo",
"folders": "Carpetas"
},
"dateBucket": {
"today": "Hoy",
"last7days": "Últimos 7 días",
"last30days": "Últimos 30 días",
"unknown": "Desconocido"
},
"groups": {
"title": "Gestionar grupos",
"create_button": "Crear grupo",
"create_dialog_title": "Nuevo grupo",
"edit_dialog_title": "Renombrar grupo",
"name_label": "Nombre",
"name_placeholder": "ingenieria",
"description_label": "Descripción (opcional)",
"members_section": "Miembros",
"add_member_placeholder": "Añadir un usuario o grupo…",
"no_members": "Aún no hay miembros.",
"remove_member": "Eliminar",
"delete_group": "Eliminar grupo",
"delete_confirm": "¿Eliminar el grupo «{name}»? Se revocarán las concesiones que hagan referencia a este grupo.",
"empty_state": "Aún no hay grupos.",
"load_more": "Cargar más",
"back_to_list": "Volver",
"loading": "Cargando…",
"virtual_badge": "Sistema",
"member_count_zero": "Sin miembros",
"member_count_one": "1 miembro",
"member_count_other": "{count} miembros",
"delete_confirm_label": "Escribe el nombre del grupo para confirmar:",
"delete_confirm_mismatch": "Escribe el nombre del grupo exactamente para confirmar.",
"virtual_internal_name": "Interno",
"members_loading": "Cargando miembros…",
"members_empty": "Sin miembros",
"virtual_internal_explanation": "Todos los usuarios internos de este servidor",
"create": "Crear grupo",
"empty": "Aún no hay grupos.",
"members": "Miembros"
},
"myshares": {
"copyLink": "Copiar enlace",
"deleteLink": "Eliminar enlace",
"notifyByEmail": "Notificar por correo",
"notifyFailed": "No se pudo enviar la notificación.",
"notifyGroupMembers": "Notificar a los miembros del grupo",
"notifyRateLimited": "Demasiadas notificaciones para este destinatario — inténtalo más tarde.",
"removeAccess": "Quitar acceso",
"resendInvitation": "Reenviar correo de invitación",
"publicLinks": "Enlaces públicos"
},
"sort": {
"asc": "ascendente",
"desc": "descendente"
},
"notif": {
"errorTitle": "Error",
"searchError": "Error al realizar la búsqueda",
"cleanupCompleted": "Limpieza completada",
"cleanupCompletedBody": "Se ha borrado el historial de archivos recientes",
"batchCopy": "Copia en lote",
"batchCopyBody": "{{success}} copiados, {{errors}} fallidos",
"itemsCopied": "Elementos copiados",
"itemsCopiedBody": "{{count}} elementos copiados correctamente",
"batchMove": "Movimiento en lote",
"batchMoveBody": "{{success}} movidos, {{errors}} fallidos",
"itemsMoved": "Elementos movidos",
"itemsMovedBody": "{{count}} elementos movidos correctamente",
"batchDelete": "Borrado en lote",
"batchDeleteBody": "{{success}} movidos a la papelera, {{errors}} fallidos",
"movedToTrash": "Movido a la papelera",
"movedToTrashBody": "{{count}} elementos movidos a la papelera",
"trashItemsError": "No se pudieron mover los elementos a la papelera",
"preparingDownload": "Preparando descarga",
"preparingDownloadBody": "Preparando la descarga…",
"downloadItemsError": "No se pudieron descargar los elementos seleccionados",
"favoritesAddError": "No se pudieron añadir los elementos a favoritos",
"invalidEmail": "Introduce una dirección de correo válida",
"notificationSendError": "No se pudo enviar la notificación",
"folderCreated": "Carpeta creada",
"folderCreatedBody": "«{{name}}» creada correctamente",
"fileMoved": "Archivo movido",
"fileMovedBody": "Archivo movido correctamente",
"fileMoveError": "Error al mover el archivo: {{error}}",
"fileMoveErrorGeneric": "Error al mover el archivo",
"folderMoved": "Carpeta movida",
"folderMovedBody": "Carpeta movida correctamente",
"folderMoveError": "Error al mover la carpeta: {{error}}",
"folderMoveErrorGeneric": "Error al mover la carpeta",
"fileCopied": "Archivo copiado",
"fileCopiedBody": "Archivo copiado correctamente",
"fileCopyError": "Error al copiar el archivo: {{error}}",
"fileCopyErrorGeneric": "Error al copiar el archivo",
"folderRenamed": "Carpeta renombrada",
"folderRenamedBody": "Carpeta renombrada a «{{name}}»",
"fileTrashed": "Archivo movido a la papelera",
"fileTrashedBody": "«{{name}}» movido a la papelera",
"fileDeleted": "Archivo eliminado",
"fileDeletedBody": "«{{name}}» eliminado correctamente",
"fileDeleteError": "Error al eliminar el archivo",
"folderTrashed": "Carpeta movida a la papelera",
"folderTrashedBody": "«{{name}}» movida a la papelera",
"folderDeleted": "Carpeta eliminada",
"folderDeletedBody": "«{{name}}» eliminada correctamente",
"folderDeleteError": "Error al eliminar la carpeta",
"itemRestored": "Elemento restaurado",
"itemRestoredBody": "Elemento restaurado correctamente",
"itemRestoreError": "Error al restaurar el elemento",
"itemDeleted": "Elemento eliminado",
"itemDeletedBody": "Elemento eliminado permanentemente",
"itemDeleteError": "Error al eliminar el elemento",
"trashEmptied": "Papelera vaciada",
"trashEmptiedBody": "La papelera se ha vaciado correctamente",
"trashEmptyError": "Error al vaciar la papelera",
"cacheCleared": "Caché limpiada",
"cacheClearedBody": "Caché de búsqueda limpiada correctamente",
"cacheClearError": "Error al limpiar la caché de búsqueda",
"wopiOpenError": "No se pudo abrir el editor de documentos.",
"linkCopied": "Enlace copiado",
"linkCopiedBody": "Enlace copiado al portapapeles",
"linkCopyError": "No se pudo copiar el enlace",
"notificationSent": "Notificación enviada",
"notificationSentBody": "Notificación enviada a {{email}}"
},
"category": {
"audio": "Audio",
"code": "Código",
"text": "Texto"
},
"common": {
"add": "Añadir",
"cancel": "Cancelar",
"clear": "Limpiar",
"close": "Cerrar",
"confirm": "Confirmar",
"copy": "Copiar",
"create": "Crear",
"delete": "Eliminar",
"download": "Descargar",
"load_more": "Cargar más",
"loading": "Cargando…",
"next": "Siguiente",
"no": "No",
"previous": "Anterior",
"remove": "Eliminar",
"rename": "Renombrar",
"save": "Guardar",
"search": "Buscar",
"yes": "Sí"
},
"device": {
"continue": "Continuar",
"unknown": "Desconocido"
},
"expiryBucket": {
"expired": "Caducado",
"noExpiry": "Sin caducidad",
"today": "Hoy",
"tomorrow": "Mañana"
},
"nextcloud": {
"error_title": "Error",
"sign_in_with": "Iniciar sesión con {{provider}}"
},
"search": {
"size_label": "Tamaño",
"title": "Buscar",
"type": {
"audio": "Audio"
},
"type_label": "Tipo"
},
"sizeBucket": {
"folders": "Carpetas"
},
"view": {
"grid": "Vista de cuadrícula",
"list": "Vista de lista"
}
}