Files
Oxicloud/static/locales/es.json
T
Dionisio 5a679dfc90 fix(security): patch 3 vulnerabilities — IDOR, ownership bypass, XSS
V1: Add owner-scoped folder pagination (list_folders_by_owner_paginated)
  - New method in FolderRepository trait, PG implementation, service & handler
  - Prevents IDOR by filtering folder listings to authenticated user

V2: Enforce ownership checks on folder mutations
  - rename_folder, move_folder, delete_folder now require caller_id
  - Service verifies folder.owner_id == caller_id (returns 404 on mismatch)
  - Propagated to folder_handler, batch_handler, batch_operations, webdav_handler
  - delete_folder_with_trash upgraded from OptionalAuthUser to AuthUser
  - download_folder_zip now checks ownership before streaming

V3: Fix XSS in frontend via DOM APIs
  - sharedView.js: innerHTML → createElement + textContent
  - contextMenus.js: innerHTML → DOM construction for share dialog

Cleanup: removed unused OptionalAuthUser import, updated all stubs/mocks
2026-02-16 00:22:42 +01:00

353 lines
13 KiB
JSON

{
"app": {
"title": "OxiCloud",
"description": "Sistema de almacenamiento en la nube minimalista"
},
"nav": {
"files": "Archivos",
"shared": "Compartidos",
"recent": "Recientes",
"favorites": "Favoritos",
"trash": "Papelera"
},
"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"
},
"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",
"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"
},
"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"
},
"files": {
"name": "Nombre",
"type": "Tipo",
"size": "Tamaño",
"modified": "Modificado",
"no_files": "No hay archivos en esta carpeta",
"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"
}
},
"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:",
"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",
"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"
},
"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"
},
"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",
"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."
},
"auth": {
"login_title": "Iniciar sesión",
"username": "Usuario",
"username_placeholder": "Ingresa tu nombre de usuario",
"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}}"
},
"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 a OxiCloud",
"subtitle": "Por favor, selecciona tu idioma",
"continue": "Continuar",
"languages": {
"en": "English",
"es": "Español",
"zh": "中文",
"fa": "فارسی",
"fr": "Français",
"de": "Deutsch",
"pt": "Português"
}
},
"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"
},
"recent": {
"title": "Recientes",
"clear": "Limpiar recientes",
"accessed": "Accedido",
"empty_state": "No hay archivos recientes",
"empty_hint": "Los archivos que abras aparecerán aquí"
},
"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"
},
"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"
}
}