feat: implement calendar management features including create, update, and delete functionalities

This commit is contained in:
Linus Rath
2026-03-15 00:14:58 +01:00
parent f149501dff
commit caed067cda
18 changed files with 1772 additions and 68 deletions
+34
View File
@@ -1598,9 +1598,17 @@
"nav_next": "Weiter",
"import": {
"title": "Kalender importieren",
"tab_file": "Datei",
"tab_url": "URL",
"select_file": ".ics-Datei auswählen",
"drop_file": "oder Datei hier ablegen",
"supported_formats": "iCalendar (.ics) Dateien werden unterstützt",
"url_description": "Geben Sie die URL eines externen iCalendar (.ics) Feeds ein, um Termine zu importieren.",
"url_placeholder": "https://example.com/calendar.ics",
"url_hint": "Unterstützt CalDAV und iCalendar (.ics) URLs",
"fetch": "Abrufen",
"invalid_url": "Bitte geben Sie eine gültige URL ein",
"url_fetch_failed": "Kalender konnte nicht von der URL abgerufen werden",
"parsing": "Kalenderdatei wird analysiert...",
"parsed_events": "{count} Termine gefunden",
"no_events": "Keine Termine in der Datei gefunden",
@@ -1613,6 +1621,32 @@
"error": "Kalender konnte nicht importiert werden",
"file_too_large": "Datei überschreitet das 5-MB-Limit",
"invalid_format": "Ungültiges Kalenderdateiformat"
},
"management": {
"title": "Kalenderverwaltung",
"description": "Erstellen, umbenennen und anpassen Ihrer Kalender. Rechtsklick auf einen Kalender in der Seitenleiste, um die Farbe schnell zu ändern.",
"name": "Name",
"name_placeholder": "Kalendername",
"color": "Farbe",
"change_color": "Farbe ändern",
"add_calendar": "Kalender hinzufügen",
"edit": "Bearbeiten",
"delete": "Löschen",
"save": "Speichern",
"create": "Erstellen",
"cancel": "Abbrechen",
"default": "Standard",
"confirm_delete": "\"{name}\" löschen? Alle Termine in diesem Kalender werden entfernt.",
"calendar_created": "Kalender erstellt",
"calendar_updated": "Kalender aktualisiert",
"calendar_deleted": "Kalender gelöscht",
"color_updated": "Kalenderfarbe aktualisiert",
"error_create": "Kalender konnte nicht erstellt werden",
"error_update": "Kalender konnte nicht aktualisiert werden",
"error_delete": "Kalender konnte nicht gelöscht werden",
"caldav_url": "CalDAV-URL",
"copy_url": "CalDAV-URL kopieren",
"url_copied": "CalDAV-URL in die Zwischenablage kopiert"
}
},
"advanced_search": {
+67
View File
@@ -1598,9 +1598,17 @@
"nav_next": "Next",
"import": {
"title": "Import Calendar",
"tab_file": "File",
"tab_url": "URL",
"select_file": "Select .ics file",
"drop_file": "or drop file here",
"supported_formats": "Supports iCalendar (.ics) files",
"url_description": "Enter the URL of an external iCalendar (.ics) feed to import events.",
"url_placeholder": "https://example.com/calendar.ics",
"url_hint": "Supports CalDAV and iCalendar (.ics) URLs",
"fetch": "Fetch",
"invalid_url": "Please enter a valid URL",
"url_fetch_failed": "Failed to fetch calendar from URL",
"parsing": "Parsing calendar file...",
"parsed_events": "{count} events found",
"no_events": "No events found in file",
@@ -1613,6 +1621,65 @@
"error": "Failed to import calendar",
"file_too_large": "File exceeds 5MB limit",
"invalid_format": "Invalid calendar file format"
},
"management": {
"title": "Calendar Management",
"description": "Create, rename, and customize your calendars. Right-click a calendar in the sidebar to quickly change its color.",
"name": "Name",
"name_placeholder": "Calendar name",
"color": "Color",
"change_color": "Change color",
"add_calendar": "Add calendar",
"edit": "Edit",
"delete": "Delete",
"save": "Save",
"create": "Create",
"cancel": "Cancel",
"default": "Default",
"confirm_delete": "Delete \"{name}\"? All events in this calendar will be removed.",
"confirm_clear": "Clear all events from \"{name}\"? This cannot be undone.",
"clear_events": "Clear events",
"events_cleared": "{count} events cleared",
"error_clear": "Failed to clear calendar events",
"calendar_created": "Calendar created",
"calendar_updated": "Calendar updated",
"calendar_deleted": "Calendar deleted",
"color_updated": "Calendar color updated",
"error_create": "Failed to create calendar",
"error_update": "Failed to update calendar",
"error_delete": "Failed to delete calendar",
"caldav_url": "CalDAV URL",
"copy_url": "Copy CalDAV URL",
"url_copied": "CalDAV URL copied to clipboard"
},
"subscription": {
"title": "iCal Subscription",
"section_title": "iCal Subscriptions",
"description": "Subscribe to an external iCalendar feed. Events will be synced automatically into their own calendar.",
"url_label": "Calendar URL",
"url_placeholder": "https://example.com/calendar.ics",
"name_label": "Calendar name",
"name_placeholder": "e.g. Public Holidays",
"color_label": "Color",
"refresh_interval": "Refresh interval",
"interval_15": "Every 15 minutes",
"interval_30": "Every 30 minutes",
"interval_60": "Every hour",
"interval_360": "Every 6 hours",
"interval_1440": "Every day",
"subscribe": "Subscribe",
"subscribing": "Subscribing...",
"invalid_url": "Please enter a valid URL",
"success": "Subscribed to \"{name}\"",
"error": "Failed to add subscription",
"refresh": "Refresh now",
"refresh_success": "Subscription refreshed",
"refresh_error": "Failed to refresh subscription",
"unsubscribe": "Unsubscribe",
"confirm_delete": "Unsubscribe from \"{name}\"? The calendar and all its events will be removed.",
"deleted": "Subscription removed",
"delete_error": "Failed to remove subscription",
"last_refreshed": "Last updated: {time}"
}
},
"advanced_search": {
+34
View File
@@ -1598,9 +1598,17 @@
"nav_next": "Siguiente",
"import": {
"title": "Importar calendario",
"tab_file": "Archivo",
"tab_url": "URL",
"select_file": "Seleccionar archivo .ics",
"drop_file": "o arrastra el archivo aquí",
"supported_formats": "Archivos iCalendar (.ics) compatibles",
"url_description": "Introduce la URL de un feed iCalendar (.ics) externo para importar eventos.",
"url_placeholder": "https://example.com/calendar.ics",
"url_hint": "Compatible con URLs CalDAV e iCalendar (.ics)",
"fetch": "Obtener",
"invalid_url": "Introduce una URL válida",
"url_fetch_failed": "No se pudo obtener el calendario desde la URL",
"parsing": "Analizando archivo de calendario...",
"parsed_events": "{count} eventos encontrados",
"no_events": "No se encontraron eventos en el archivo",
@@ -1613,6 +1621,32 @@
"error": "Error al importar el calendario",
"file_too_large": "El archivo supera el límite de 5 MB",
"invalid_format": "Formato de archivo de calendario no válido"
},
"management": {
"title": "Gestión de calendarios",
"description": "Crea, renombra y personaliza tus calendarios. Haz clic derecho en un calendario en la barra lateral para cambiar su color rápidamente.",
"name": "Nombre",
"name_placeholder": "Nombre del calendario",
"color": "Color",
"change_color": "Cambiar color",
"add_calendar": "Añadir calendario",
"edit": "Editar",
"delete": "Eliminar",
"save": "Guardar",
"create": "Crear",
"cancel": "Cancelar",
"default": "Predeterminado",
"confirm_delete": "¿Eliminar \"{name}\"? Se eliminarán todos los eventos de este calendario.",
"calendar_created": "Calendario creado",
"calendar_updated": "Calendario actualizado",
"calendar_deleted": "Calendario eliminado",
"color_updated": "Color del calendario actualizado",
"error_create": "Error al crear el calendario",
"error_update": "Error al actualizar el calendario",
"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"
}
},
"advanced_search": {
+34
View File
@@ -1598,9 +1598,17 @@
"nav_next": "Suivant",
"import": {
"title": "Importer un calendrier",
"tab_file": "Fichier",
"tab_url": "URL",
"select_file": "Sélectionner un fichier .ics",
"drop_file": "ou déposez le fichier ici",
"supported_formats": "Fichiers iCalendar (.ics) supportés",
"url_description": "Entrez l'URL d'un flux iCalendar (.ics) externe pour importer des événements.",
"url_placeholder": "https://example.com/calendar.ics",
"url_hint": "Prend en charge les URLs CalDAV et iCalendar (.ics)",
"fetch": "Récupérer",
"invalid_url": "Veuillez entrer une URL valide",
"url_fetch_failed": "Impossible de récupérer le calendrier depuis l'URL",
"parsing": "Analyse du fichier en cours...",
"parsed_events": "{count} événements trouvés",
"no_events": "Aucun événement trouvé dans le fichier",
@@ -1613,6 +1621,32 @@
"error": "Échec de l'importation du calendrier",
"file_too_large": "Le fichier dépasse la limite de 5 Mo",
"invalid_format": "Format de fichier calendrier invalide"
},
"management": {
"title": "Gestion des calendriers",
"description": "Créez, renommez et personnalisez vos calendriers. Clic droit sur un calendrier dans la barre latérale pour changer rapidement sa couleur.",
"name": "Nom",
"name_placeholder": "Nom du calendrier",
"color": "Couleur",
"change_color": "Changer la couleur",
"add_calendar": "Ajouter un calendrier",
"edit": "Modifier",
"delete": "Supprimer",
"save": "Enregistrer",
"create": "Créer",
"cancel": "Annuler",
"default": "Par défaut",
"confirm_delete": "Supprimer \"{name}\" ? Tous les événements de ce calendrier seront supprimés.",
"calendar_created": "Calendrier créé",
"calendar_updated": "Calendrier mis à jour",
"calendar_deleted": "Calendrier supprimé",
"color_updated": "Couleur du calendrier mise à jour",
"error_create": "Échec de la création du calendrier",
"error_update": "Échec de la mise à jour du calendrier",
"error_delete": "Échec de la suppression du calendrier",
"caldav_url": "URL CalDAV",
"copy_url": "Copier l'URL CalDAV",
"url_copied": "URL CalDAV copiée dans le presse-papiers"
}
},
"advanced_search": {
+34
View File
@@ -1598,9 +1598,17 @@
"nav_next": "Successivo",
"import": {
"title": "Importa calendario",
"tab_file": "File",
"tab_url": "URL",
"select_file": "Seleziona file .ics",
"drop_file": "o trascina il file qui",
"supported_formats": "File iCalendar (.ics) supportati",
"url_description": "Inserisci l'URL di un feed iCalendar (.ics) esterno per importare eventi.",
"url_placeholder": "https://example.com/calendar.ics",
"url_hint": "Supporta URL CalDAV e iCalendar (.ics)",
"fetch": "Recupera",
"invalid_url": "Inserisci un URL valido",
"url_fetch_failed": "Impossibile recuperare il calendario dall'URL",
"parsing": "Analisi del file in corso...",
"parsed_events": "{count} eventi trovati",
"no_events": "Nessun evento trovato nel file",
@@ -1613,6 +1621,32 @@
"error": "Importazione del calendario fallita",
"file_too_large": "Il file supera il limite di 5 MB",
"invalid_format": "Formato del file calendario non valido"
},
"management": {
"title": "Gestione calendari",
"description": "Crea, rinomina e personalizza i tuoi calendari. Fai clic destro su un calendario nella barra laterale per cambiarne rapidamente il colore.",
"name": "Nome",
"name_placeholder": "Nome del calendario",
"color": "Colore",
"change_color": "Cambia colore",
"add_calendar": "Aggiungi calendario",
"edit": "Modifica",
"delete": "Elimina",
"save": "Salva",
"create": "Crea",
"cancel": "Annulla",
"default": "Predefinito",
"confirm_delete": "Eliminare \"{name}\"? Tutti gli eventi in questo calendario verranno rimossi.",
"calendar_created": "Calendario creato",
"calendar_updated": "Calendario aggiornato",
"calendar_deleted": "Calendario eliminato",
"color_updated": "Colore del calendario aggiornato",
"error_create": "Impossibile creare il calendario",
"error_update": "Impossibile aggiornare il calendario",
"error_delete": "Impossibile eliminare il calendario",
"caldav_url": "URL CalDAV",
"copy_url": "Copia URL CalDAV",
"url_copied": "URL CalDAV copiato negli appunti"
}
},
"advanced_search": {
+34
View File
@@ -1598,9 +1598,17 @@
"nav_next": "次へ",
"import": {
"title": "カレンダーをインポート",
"tab_file": "ファイル",
"tab_url": "URL",
"select_file": ".icsファイルを選択",
"drop_file": "またはファイルをここにドロップ",
"supported_formats": "iCalendar (.ics) ファイルに対応",
"url_description": "外部のiCalendar (.ics) フィードのURLを入力してイベントをインポートします。",
"url_placeholder": "https://example.com/calendar.ics",
"url_hint": "CalDAVおよびiCalendar (.ics) URLに対応",
"fetch": "取得",
"invalid_url": "有効なURLを入力してください",
"url_fetch_failed": "URLからカレンダーを取得できませんでした",
"parsing": "カレンダーファイルを解析中...",
"parsed_events": "{count}件のイベントが見つかりました",
"no_events": "ファイルにイベントが見つかりません",
@@ -1613,6 +1621,32 @@
"error": "カレンダーのインポートに失敗しました",
"file_too_large": "ファイルサイズが5MBを超えています",
"invalid_format": "無効なカレンダーファイル形式"
},
"management": {
"title": "カレンダー管理",
"description": "カレンダーの作成、名前変更、カスタマイズができます。サイドバーのカレンダーを右クリックして色を素早く変更できます。",
"name": "名前",
"name_placeholder": "カレンダー名",
"color": "色",
"change_color": "色を変更",
"add_calendar": "カレンダーを追加",
"edit": "編集",
"delete": "削除",
"save": "保存",
"create": "作成",
"cancel": "キャンセル",
"default": "デフォルト",
"confirm_delete": "\"{name}\"を削除しますか?このカレンダーのすべてのイベントが削除されます。",
"calendar_created": "カレンダーを作成しました",
"calendar_updated": "カレンダーを更新しました",
"calendar_deleted": "カレンダーを削除しました",
"color_updated": "カレンダーの色を更新しました",
"error_create": "カレンダーの作成に失敗しました",
"error_update": "カレンダーの更新に失敗しました",
"error_delete": "カレンダーの削除に失敗しました",
"caldav_url": "CalDAV URL",
"copy_url": "CalDAV URLをコピー",
"url_copied": "CalDAV URLをクリップボードにコピーしました"
}
},
"advanced_search": {
+34
View File
@@ -1598,9 +1598,17 @@
"nav_next": "Volgende",
"import": {
"title": "Agenda importeren",
"tab_file": "Bestand",
"tab_url": "URL",
"select_file": "Selecteer .ics-bestand",
"drop_file": "of sleep het bestand hierheen",
"supported_formats": "iCalendar (.ics) bestanden worden ondersteund",
"url_description": "Voer de URL in van een externe iCalendar (.ics) feed om evenementen te importeren.",
"url_placeholder": "https://example.com/calendar.ics",
"url_hint": "Ondersteunt CalDAV en iCalendar (.ics) URLs",
"fetch": "Ophalen",
"invalid_url": "Voer een geldige URL in",
"url_fetch_failed": "Kan agenda niet ophalen van URL",
"parsing": "Agendabestand wordt verwerkt...",
"parsed_events": "{count} evenementen gevonden",
"no_events": "Geen evenementen gevonden in bestand",
@@ -1613,6 +1621,32 @@
"error": "Agenda importeren mislukt",
"file_too_large": "Bestand overschrijdt de limiet van 5 MB",
"invalid_format": "Ongeldig agendabestandsformaat"
},
"management": {
"title": "Agendabeheer",
"description": "Maak, hernoem en pas uw agenda's aan. Klik met de rechtermuisknop op een agenda in de zijbalk om snel de kleur te wijzigen.",
"name": "Naam",
"name_placeholder": "Agendanaam",
"color": "Kleur",
"change_color": "Kleur wijzigen",
"add_calendar": "Agenda toevoegen",
"edit": "Bewerken",
"delete": "Verwijderen",
"save": "Opslaan",
"create": "Aanmaken",
"cancel": "Annuleren",
"default": "Standaard",
"confirm_delete": "\"{name}\" verwijderen? Alle afspraken in deze agenda worden verwijderd.",
"calendar_created": "Agenda aangemaakt",
"calendar_updated": "Agenda bijgewerkt",
"calendar_deleted": "Agenda verwijderd",
"color_updated": "Agendakleur bijgewerkt",
"error_create": "Agenda aanmaken mislukt",
"error_update": "Agenda bijwerken mislukt",
"error_delete": "Agenda verwijderen mislukt",
"caldav_url": "CalDAV-URL",
"copy_url": "CalDAV-URL kopiëren",
"url_copied": "CalDAV-URL gekopieerd naar klembord"
}
},
"advanced_search": {
+34
View File
@@ -1598,9 +1598,17 @@
"nav_next": "Próximo",
"import": {
"title": "Importar calendário",
"tab_file": "Arquivo",
"tab_url": "URL",
"select_file": "Selecionar arquivo .ics",
"drop_file": "ou arraste o arquivo aqui",
"supported_formats": "Arquivos iCalendar (.ics) suportados",
"url_description": "Insira a URL de um feed iCalendar (.ics) externo para importar eventos.",
"url_placeholder": "https://example.com/calendar.ics",
"url_hint": "Suporta URLs CalDAV e iCalendar (.ics)",
"fetch": "Buscar",
"invalid_url": "Insira uma URL válida",
"url_fetch_failed": "Não foi possível buscar o calendário da URL",
"parsing": "Analisando arquivo de calendário...",
"parsed_events": "{count} eventos encontrados",
"no_events": "Nenhum evento encontrado no arquivo",
@@ -1613,6 +1621,32 @@
"error": "Falha ao importar calendário",
"file_too_large": "Arquivo excede o limite de 5 MB",
"invalid_format": "Formato de arquivo de calendário inválido"
},
"management": {
"title": "Gerenciamento de calendários",
"description": "Crie, renomeie e personalize seus calendários. Clique com o botão direito em um calendário na barra lateral para alterar rapidamente sua cor.",
"name": "Nome",
"name_placeholder": "Nome do calendário",
"color": "Cor",
"change_color": "Alterar cor",
"add_calendar": "Adicionar calendário",
"edit": "Editar",
"delete": "Excluir",
"save": "Salvar",
"create": "Criar",
"cancel": "Cancelar",
"default": "Padrão",
"confirm_delete": "Excluir \"{name}\"? Todos os eventos neste calendário serão removidos.",
"calendar_created": "Calendário criado",
"calendar_updated": "Calendário atualizado",
"calendar_deleted": "Calendário excluído",
"color_updated": "Cor do calendário atualizada",
"error_create": "Falha ao criar calendário",
"error_update": "Falha ao atualizar calendário",
"error_delete": "Falha ao excluir calendário",
"caldav_url": "URL CalDAV",
"copy_url": "Copiar URL CalDAV",
"url_copied": "URL CalDAV copiada para a área de transferência"
}
},
"advanced_search": {