diff --git a/web/public/static/langs/es.json b/web/public/static/langs/es.json
index 091316cf..9c0744be 100644
--- a/web/public/static/langs/es.json
+++ b/web/public/static/langs/es.json
@@ -16,5 +16,124 @@
"nav_button_publish_message": "Publicar notificación",
"notifications_copied_to_clipboard": "Copiado al portapapeles",
"alert_not_supported_title": "Notificaciones no soportadas",
- "alert_not_supported_description": "Las notificaciones no están soportadas por tu navegador."
+ "alert_not_supported_description": "Las notificaciones no están soportadas por tu navegador.",
+ "notifications_tags": "Etiquetas",
+ "notifications_attachment_copy_url_title": "Copiar la URL del archivo adjunto en el portapapeles",
+ "notifications_attachment_copy_url_button": "Copiar URL",
+ "notifications_attachment_open_title": "Ir a {{url}}",
+ "notifications_attachment_open_button": "Abrir archivo adjunto",
+ "notifications_attachment_link_expires": "el enlace expira el día {{fecha}}",
+ "notifications_attachment_link_expired": "el enlace de descarga ha expirado",
+ "notifications_click_copy_url_title": "Copiar la URL del enlace en el portapapeles",
+ "notifications_click_copy_url_button": "Copiar enlace",
+ "notifications_click_open_title": "Ir a {{url}}",
+ "notifications_click_open_button": "Abrir enlace",
+ "notifications_none_for_topic_title": "Aún no has recibido ninguna notificación en este tópico.",
+ "notifications_none_for_topic_description": "Para enviar notificaciones a este tópico, simplemente realice un PUT o POST a la URL del tópico.",
+ "notifications_none_for_any_title": "No ha recibido ninguna notificación.",
+ "notifications_no_subscriptions_title": "Parece que aún no tiene ninguna suscripción.",
+ "notifications_no_subscriptions_description": "Haga clic en el enlace \"Añadir suscripción\" para crear o suscribirse a un tópico. Después, puede enviar mensajes a través de un PUT o POST y recibirá notificaciones aquí.",
+ "notifications_more_details": "Para más información, consulta la página web o la documentación.",
+ "notifications_loading": "Cargando notificaciones …",
+ "publish_dialog_title_topic": "Publicar en {{topic}}",
+ "publish_dialog_title_no_topic": "Publicar notificación",
+ "publish_dialog_progress_uploading": "Cargando …",
+ "publish_dialog_progress_uploading_detail": "Cargando {{loaded}}/{{total}} ({{percent}}%) …",
+ "publish_dialog_message_published": "Notificación publicada",
+ "publish_dialog_attachment_limits_file_and_quota_reached": "supera el límite y la cuota de archivos de {{fileSizeLimit}}, restan {{remainingBytes}}",
+ "publish_dialog_attachment_limits_file_reached": "supera el límite de archivos de {{fileSizeLimit}}",
+ "publish_dialog_attachment_limits_quota_reached": "supera la cuota, restan {{remainingBytes}}",
+ "publish_dialog_priority_min": "Prioridad mínima",
+ "publish_dialog_priority_default": "Prioridad predeterminada",
+ "publish_dialog_priority_max": "Prioridad máxima",
+ "publish_dialog_base_url_label": "URL del servicio",
+ "publish_dialog_base_url_placeholder": "URL del servicio, por ejemplo, https://example.com",
+ "publish_dialog_topic_label": "Nombre del tópico",
+ "publish_dialog_topic_placeholder": "Nombre del tópico, ej. phil_alerts",
+ "publish_dialog_title_label": "Título",
+ "publish_dialog_message_label": "Mensaje",
+ "publish_dialog_tags_placeholder": "Lista de etiquetas separadas por comas, por ejemplo: warning, srv1-backup",
+ "publish_dialog_click_label": "Click URL",
+ "publish_dialog_click_placeholder": "URL que se abre cuando se hace click en la notificación",
+ "publish_dialog_email_label": "Email",
+ "publish_dialog_email_placeholder": "Dirección a la que se reenviará la notificación, por ejemplo, phil@example.com",
+ "publish_dialog_attach_label": "URL del archivo adjunto",
+ "publish_dialog_filename_label": "Nombre del archivo",
+ "publish_dialog_delay_placeholder": "Retraso en la entrega, por ejemplo, {{unixTimestamp}}, {{relativeTime}}, o \"{{naturalLanguage}}\" (sólo en inglés)",
+ "publish_dialog_other_features": "Otras características:",
+ "publish_dialog_chip_click_label": "Click URL",
+ "publish_dialog_chip_email_label": "Reenviar al email",
+ "publish_dialog_chip_attach_url_label": "Adjuntar un archivo por URL",
+ "publish_dialog_chip_attach_file_label": "Adjuntar archivo local",
+ "publish_dialog_chip_topic_label": "Cambiar de tópico",
+ "publish_dialog_button_cancel_sending": "Cancelar el envío",
+ "publish_dialog_button_cancel": "Cancelar",
+ "publish_dialog_checkbox_publish_another": "Publicar otro",
+ "publish_dialog_attached_file_title": "Archivo adjunto:",
+ "publish_dialog_attached_file_filename_placeholder": "Nombre del archivo adjunto",
+ "publish_dialog_drop_file_here": "Suelta el archivo aquí",
+ "emoji_picker_search_placeholder": "Buscar emojis",
+ "subscribe_dialog_subscribe_title": "Suscribirse al tópico",
+ "subscribe_dialog_subscribe_description": "Los tópicos pueden no estar protegidos por contraseña, así que elija un nombre que no sea fácil de adivinar. Una vez suscrito, puede hacer PUT/PIST de notificaciones.",
+ "subscribe_dialog_subscribe_topic_placeholder": "Nombre del tópico, ej. phil_alerts",
+ "subscribe_dialog_subscribe_use_another_label": "Usar otro servidor",
+ "subscribe_dialog_login_title": "Es necesario iniciar sesión",
+ "subscribe_dialog_login_description": "Este tópico está protegido por contraseña. Por favor, introduzca su nombre de usuario y contraseña para suscribirse.",
+ "subscribe_dialog_login_username_label": "Nombre de usuario, ej. phil",
+ "subscribe_dialog_login_password_label": "Contraseña",
+ "subscribe_dialog_login_button_back": "Volver",
+ "subscribe_dialog_login_button_login": "Iniciar sesión",
+ "subscribe_dialog_error_user_not_authorized": "Usuario {{username}} no autorizado",
+ "subscribe_dialog_error_user_anonymous": "anónimo",
+ "prefs_notifications_title": "Notificaciones",
+ "prefs_notifications_sound_title": "Sonido de notificación",
+ "prefs_notifications_min_priority_any": "Cualquier prioridad",
+ "prefs_notifications_min_priority_low_and_higher": "Prioridad baja y superior",
+ "prefs_notifications_min_priority_max_only": "Solo prioridad máxima",
+ "prefs_notifications_delete_after_title": "Eliminar notificaciones",
+ "prefs_notifications_delete_after_never": "Nunca",
+ "prefs_notifications_delete_after_three_hours": "Después de tres horas",
+ "prefs_notifications_delete_after_one_day": "Después de un día",
+ "prefs_notifications_delete_after_one_week": "Después de una semana",
+ "prefs_notifications_delete_after_one_month": "Después de un mes",
+ "prefs_users_title": "Administrar usuarios",
+ "prefs_users_description": "Añada/elimine usuarios para sus tópicos protegidos aquí. Tenga en cuenta que el nombre de usuario y la contraseña se guardan en el almacenamiento local del navegador.",
+ "prefs_users_add_button": "Añadir usuario",
+ "prefs_users_dialog_title_edit": "Editar usuario",
+ "prefs_users_dialog_base_url_label": "URL del servicio, ej. https://ntfy.sh",
+ "prefs_users_dialog_button_add": "Añadir",
+ "prefs_users_dialog_button_save": "Guardar",
+ "prefs_appearance_title": "Apariencia",
+ "prefs_appearance_language_title": "Idioma",
+ "error_boundary_title": "Oh no, ntfy tuvo un error",
+ "error_boundary_button_copy_stack_trace": "Copiar el stack trace",
+ "error_boundary_stack_trace": "Stack trace",
+ "error_boundary_gathering_info": "Reunir más información …",
+ "notifications_example": "Ejemplo",
+ "prefs_notifications_min_priority_title": "Prioridad mínima",
+ "notifications_none_for_any_description": "Para enviar notificaciones a un tópico, simplemente realice un PUT o POST a la URL del tópico. Aquí hay un ejemplo usando uno de sus tópicos.",
+ "subscribe_dialog_subscribe_button_cancel": "Cancelar",
+ "subscribe_dialog_subscribe_button_subscribe": "Suscribir",
+ "publish_dialog_message_placeholder": "Escriba un mensaje aquí",
+ "publish_dialog_tags_label": "Etiquetas",
+ "publish_dialog_priority_label": "Prioridad",
+ "publish_dialog_priority_low": "Prioridad baja",
+ "publish_dialog_priority_high": "Prioridad alta",
+ "publish_dialog_delay_label": "Retraso",
+ "publish_dialog_title_placeholder": "Título de la notificación, por ejemplo, Alerta de espacio en disco",
+ "publish_dialog_details_examples_description": "Para ver ejemplos y una descripción detallada de todas las funciones de envío, consulte la documentación.",
+ "publish_dialog_attach_placeholder": "Adjuntar un archivo por URL, por ejemplo, https://f-droid.org/F-Droid.apk",
+ "publish_dialog_filename_placeholder": "Nombre del archivo adjunto",
+ "publish_dialog_chip_delay_label": "Retraso en la entrega",
+ "prefs_notifications_min_priority_default_and_higher": "Prioridad predeterminada y superior",
+ "prefs_notifications_min_priority_high_and_higher": "Prioridad alta y superior",
+ "prefs_users_table_user_header": "Usuario",
+ "prefs_users_table_base_url_header": "URL del servicio",
+ "publish_dialog_button_send": "Enviar",
+ "prefs_notifications_sound_no_sound": "Sin sonido",
+ "prefs_users_dialog_password_label": "Contraseña",
+ "error_boundary_description": "Obviamente, esto no debería ocurrir. Lo sentimos mucho.
Si tienes un minuto, por favor informa de esto en GitHub, o avísanos vía Discord o Matrix.",
+ "prefs_users_dialog_title_add": "Añadir usuario",
+ "prefs_users_dialog_button_cancel": "Cancelar",
+ "prefs_users_dialog_username_label": "Nombre de usuario, ej. phil"
}