feat: add JMAP FileNode file storage backend and file settings
- Implement JMAP FileNode client methods (get, query, list, create, update, destroy, copy) with Stalwart-compatible flat name encoding - Add FileNode/FileNodeFilter types to JMAP type definitions - Create file-store with Zustand for file management state (navigate, upload, delete, rename, move, cut/copy/paste, undo, favorites) - Add folder tree sidebar component for sidebar navigation layout - Add files settings dialog and settings page component with options for view mode, sort, icons, thumbnails, hidden files, folder layout - Update files page and file browser to support JMAP FileNode backend alongside WebDAV, with folder layout switching and settings integration - Add settings tab for files configuration in the settings page - Add translation keys for file settings, calendar subscriptions, identity deletion, contact deletion, email navigation, and reconnection messages across all 8 locales - Change WebDAV file storage to File storage in availability messages - Enhance translations test to verify source-referenced keys exist in the en locale - Fix duplicate JSX attribute in folder-tree-sidebar
This commit is contained in:
+124
-10
@@ -260,7 +260,9 @@
|
||||
"delete": "Eliminar",
|
||||
"star": "Destacar (s)",
|
||||
"unstar": "Quitar estrella (s)",
|
||||
"compose": "Redactar (c)"
|
||||
"compose": "Redactar (c)",
|
||||
"previous": "Correo anterior",
|
||||
"next": "Correo siguiente"
|
||||
},
|
||||
"spam": {
|
||||
"button_title": "Reportar spam",
|
||||
@@ -300,7 +302,10 @@
|
||||
"no_calendar": "Calendario no disponible",
|
||||
"select_calendar": "Seleccionar calendario",
|
||||
"already_in_calendar": "Ya está en tu calendario"
|
||||
}
|
||||
},
|
||||
"previous": "Anterior",
|
||||
"next": "Siguiente",
|
||||
"send": "Enviar"
|
||||
},
|
||||
"email_composer": {
|
||||
"new_message": "Nuevo Mensaje",
|
||||
@@ -362,7 +367,9 @@
|
||||
"continue_draft": "Continuar borrador",
|
||||
"close_draft_title": "¿Guardar o descartar borrador?",
|
||||
"close_draft_message": "Tiene cambios sin guardar. ¿Desea guardar esto como borrador o descartarlo?",
|
||||
"save_draft": "Guardar borrador"
|
||||
"save_draft": "Guardar borrador",
|
||||
"drop_files": "Suelta archivos para adjuntar",
|
||||
"show_less": "Mostrar menos"
|
||||
},
|
||||
"confirm_dialog": {
|
||||
"confirm": "Confirmar",
|
||||
@@ -385,7 +392,8 @@
|
||||
"yes": "Sí",
|
||||
"no": "No",
|
||||
"unknown": "Desconocido",
|
||||
"app_title": "Correo Web"
|
||||
"app_title": "Correo Web",
|
||||
"reconnecting": "Conexión perdida. Intentando reconectar…"
|
||||
},
|
||||
"notifications": {
|
||||
"email_sent": "Correo enviado exitosamente",
|
||||
@@ -491,7 +499,8 @@
|
||||
"templates": "Plantillas",
|
||||
"folders": "Carpetas",
|
||||
"keywords": "Palabras clave",
|
||||
"security": "Seguridad"
|
||||
"security": "Seguridad",
|
||||
"files": "Archivos"
|
||||
},
|
||||
"tab_groups": {
|
||||
"general": "General",
|
||||
@@ -1055,6 +1064,55 @@
|
||||
"empty": "El nombre de la plantilla es obligatorio",
|
||||
"too_long": "El nombre de la plantilla no debe superar los 200 caracteres"
|
||||
}
|
||||
},
|
||||
"files": {
|
||||
"display": {
|
||||
"title": "Visualización",
|
||||
"description": "Configura cómo se muestran los archivos y carpetas"
|
||||
},
|
||||
"default_view": {
|
||||
"label": "Vista predeterminada",
|
||||
"description": "Elige entre diseño de cuadrícula y lista",
|
||||
"list": "Lista",
|
||||
"grid": "Cuadrícula"
|
||||
},
|
||||
"default_sort": {
|
||||
"label": "Orden predeterminado",
|
||||
"description": "Elige el orden predeterminado para los archivos",
|
||||
"name": "Nombre",
|
||||
"size": "Tamaño",
|
||||
"modified": "Modificado"
|
||||
},
|
||||
"sort_direction": {
|
||||
"label": "Dirección de orden",
|
||||
"description": "Elige orden ascendente o descendente",
|
||||
"ascending": "Ascendente",
|
||||
"descending": "Descendente"
|
||||
},
|
||||
"icons": {
|
||||
"title": "Iconos",
|
||||
"description": "Configura la apariencia de los iconos de archivos"
|
||||
},
|
||||
"show_icons": {
|
||||
"label": "Mostrar iconos de archivos",
|
||||
"description": "Mostrar iconos junto a archivos y carpetas"
|
||||
},
|
||||
"colored_icons": {
|
||||
"label": "Iconos de colores",
|
||||
"description": "Usar iconos de colores en lugar de monocromáticos"
|
||||
},
|
||||
"show_thumbnails": {
|
||||
"label": "Mostrar miniaturas",
|
||||
"description": "Mostrar vistas previas de imágenes en lugar de iconos"
|
||||
},
|
||||
"behavior": {
|
||||
"title": "Comportamiento",
|
||||
"description": "Configura el comportamiento del explorador de archivos"
|
||||
},
|
||||
"show_hidden": {
|
||||
"label": "Mostrar archivos ocultos",
|
||||
"description": "Mostrar archivos y carpetas que comienzan con un punto"
|
||||
}
|
||||
}
|
||||
},
|
||||
"errors": {
|
||||
@@ -1208,7 +1266,9 @@
|
||||
"identity_name": "Enviado usando identidad: {name}",
|
||||
"identity_short": "vía {name}",
|
||||
"subaddress_tag": "+{tag}"
|
||||
}
|
||||
},
|
||||
"delete_button": "Eliminar",
|
||||
"delete_confirm_title": "Eliminar identidad"
|
||||
},
|
||||
"templates": {
|
||||
"picker_title": "Elegir una plantilla",
|
||||
@@ -1385,7 +1445,8 @@
|
||||
"name_required": "Se requiere al menos un nombre o apellido",
|
||||
"email_invalid": "Introduce una dirección de correo válida",
|
||||
"email_error_inline": "Formato de correo inválido",
|
||||
"save_failed": "Error al guardar el contacto"
|
||||
"save_failed": "Error al guardar el contacto",
|
||||
"delete": "Eliminar"
|
||||
},
|
||||
"groups": {
|
||||
"create": "Nuevo grupo",
|
||||
@@ -1663,7 +1724,40 @@
|
||||
"error_delete": "Error al eliminar el calendario",
|
||||
"caldav_url": "URL de CalDAV",
|
||||
"copy_url": "Copiar URL de CalDAV",
|
||||
"url_copied": "URL de CalDAV copiada al portapapeles"
|
||||
"url_copied": "URL de CalDAV copiada al portapapeles",
|
||||
"confirm_clear": "¿Borrar todos los eventos de \"{name}\"? Esta acción no se puede deshacer.",
|
||||
"clear_events": "Borrar eventos",
|
||||
"events_cleared": "{count} eventos borrados",
|
||||
"error_clear": "No se pudieron borrar los eventos del calendario"
|
||||
},
|
||||
"subscription": {
|
||||
"title": "Suscripción iCal",
|
||||
"section_title": "Suscripciones iCal",
|
||||
"description": "Suscríbete a un feed externo de iCalendar. Los eventos se sincronizarán automáticamente en su propio calendario. Compatible con URLs https:// y webcal://.",
|
||||
"url_label": "URL del calendario",
|
||||
"url_placeholder": "https://example.com/calendar.ics o webcal://...",
|
||||
"name_label": "Nombre del calendario",
|
||||
"name_placeholder": "p. ej., Días festivos",
|
||||
"color_label": "Color",
|
||||
"refresh_interval": "Intervalo de actualización",
|
||||
"interval_15": "Cada 15 minutos",
|
||||
"interval_30": "Cada 30 minutos",
|
||||
"interval_60": "Cada hora",
|
||||
"interval_360": "Cada 6 horas",
|
||||
"interval_1440": "Cada día",
|
||||
"subscribe": "Suscribirse",
|
||||
"subscribing": "Suscribiendo...",
|
||||
"invalid_url": "Por favor, introduce una URL válida",
|
||||
"success": "Suscrito a \"{name}\"",
|
||||
"error": "No se pudo añadir la suscripción",
|
||||
"refresh": "Actualizar ahora",
|
||||
"refresh_success": "Suscripción actualizada",
|
||||
"refresh_error": "No se pudo actualizar la suscripción",
|
||||
"unsubscribe": "Cancelar suscripción",
|
||||
"confirm_delete": "¿Cancelar la suscripción a \"{name}\"? El calendario y todos sus eventos serán eliminados.",
|
||||
"deleted": "Suscripción eliminada",
|
||||
"delete_error": "No se pudo eliminar la suscripción",
|
||||
"last_refreshed": "Última actualización: {time}"
|
||||
}
|
||||
},
|
||||
"advanced_search": {
|
||||
@@ -1741,7 +1835,7 @@
|
||||
"rename_success": "Renombrado correctamente",
|
||||
"rename_error": "Error al renombrar",
|
||||
"download_error": "Error al descargar",
|
||||
"not_available": "El almacenamiento de archivos WebDAV no está disponible en este servidor",
|
||||
"not_available": "El almacenamiento de archivos no está disponible en este servidor",
|
||||
"cancel": "Cancelar",
|
||||
"create": "Crear",
|
||||
"save": "Guardar",
|
||||
@@ -1782,6 +1876,26 @@
|
||||
"undo_error": "Error al deshacer",
|
||||
"toolbar": "Acciones de archivo",
|
||||
"file_list": "Archivos y carpetas",
|
||||
"context_menu": "Acciones"
|
||||
"context_menu": "Acciones",
|
||||
"settings_title": "Configuración de archivos",
|
||||
"settings_display": "Visualización",
|
||||
"settings_default_view": "Vista predeterminada",
|
||||
"settings_default_view_desc": "Elige entre diseño de cuadrícula y lista",
|
||||
"settings_default_sort": "Orden predeterminado",
|
||||
"settings_default_sort_desc": "Elige el orden predeterminado para los archivos",
|
||||
"settings_sort_direction": "Dirección de orden",
|
||||
"settings_sort_direction_desc": "Elige orden ascendente o descendente",
|
||||
"settings_ascending": "Ascendente",
|
||||
"settings_descending": "Descendente",
|
||||
"settings_icons": "Iconos",
|
||||
"settings_show_icons": "Mostrar iconos de archivos",
|
||||
"settings_show_icons_desc": "Mostrar iconos junto a archivos y carpetas",
|
||||
"settings_colored_icons": "Iconos de colores",
|
||||
"settings_colored_icons_desc": "Usar iconos de colores en lugar de monocromáticos",
|
||||
"settings_show_thumbnails": "Mostrar miniaturas",
|
||||
"settings_show_thumbnails_desc": "Mostrar vistas previas de imágenes en lugar de iconos",
|
||||
"settings_behavior": "Comportamiento",
|
||||
"settings_show_hidden": "Mostrar archivos ocultos",
|
||||
"settings_show_hidden_desc": "Mostrar archivos y carpetas que comienzan con un punto"
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user