From b2d9ae64508e11ba2883f4ed9cff346b4f432d37 Mon Sep 17 00:00:00 2001 From: Daniel Schlieckmann Date: Wed, 21 Jan 2026 12:27:27 +0100 Subject: [PATCH 1/3] Added german language support --- task-manager.html | 183 +++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 181 insertions(+), 2 deletions(-) diff --git a/task-manager.html b/task-manager.html index f705fe3b..795fe562 100644 --- a/task-manager.html +++ b/task-manager.html @@ -503,6 +503,7 @@

📋 Task Manager

@@ -932,7 +933,8 @@

📦 Archives

// Language selector 'language.label': 'Language:', 'language.en': 'English', - 'language.fr': 'Français' + 'language.fr': 'Français', + 'language.de': 'Deutsch' }, fr: { // Page title @@ -1107,7 +1109,184 @@

📦 Archives

// Language selector 'language.label': 'Langue :', 'language.en': 'English', - 'language.fr': 'Français' + 'language.fr': 'Français', + 'language.de': 'Deutsch' + }, + de: { + // Page title + 'page.title': 'Markdown Task Manager', + + // Header + 'header.title': '📋 Task Manager', + 'header.renameProject': 'Projekt umbenennen', + 'header.deleteProject': 'Projekt aus Liste entfernen', + 'header.folder': '📁 Ordner', + 'header.newTask': '➕ Aufgabe', + 'header.archives': '📦 Archiv', + 'header.columns': '⚙️ Spalten', + + // Filters + 'filters.tags': 'Tags:', + 'filters.category': 'Kategorie:', + 'filters.user': 'Benutzer:', + 'filters.priority': 'Priorität:', + 'filters.select': 'Auswählen...', + 'filters.add': '+', + 'filters.clearAll': '✕ Alles löschen', + 'filters.search': 'In Aufgaben suchen...', + 'filters.searchClear': '✕', + + // Welcome screen + 'welcome.title': 'Willkommen! 👋', + 'welcome.description': 'Wählen Sie den Ordner aus, der die Markdown-Dateien beinhaltet (kanban.md and archive.md)', + 'welcome.start': '📁 Loslegen', + 'welcome.howItWorks': '💡 Wie funktioniert es?', + 'welcome.step1': 'Klicken Sie oben auf "Loslegen"', + 'welcome.step2': 'Wählen Sie den Ordner aus, der die Markdown-Dateien beinhaltet', + 'welcome.step3': 'Die App lädt automatisch kanban.md', + 'welcome.step4': 'Verwalten Sie Ihre Aufgaben grafisch mit Kanban', + 'welcome.step5': 'Änderungen werden als Markdown-Datei gespeichert', + 'welcome.browserWarning': '⚠️ Unterstützte Browser: Chrome 86+, Edge 86+, Opera 72+', + + // Task detail modal + 'taskDetail.title': 'Aufgabendetails', + 'taskDetail.close': 'Schließen', + 'taskDetail.delete': '🗑️ Löschen', + 'taskDetail.archive': '📦 Archivieren', + 'taskDetail.edit': '✏️ Bearbeiten', + + // Task form modal + 'taskForm.newTask': 'Neue Aufgabe', + 'taskForm.editTask': 'Aufgabe bearbeiten', + 'taskForm.titleLabel': 'Titel *', + 'taskForm.columnLabel': 'Spalte *', + 'taskForm.priorityLabel': 'Priorität', + 'taskForm.priorityNone': 'Ohne', + 'taskForm.priorityCritical': 'Kritisch', + 'taskForm.priorityHigh': 'Hoch', + 'taskForm.priorityMedium': 'Mittel', + 'taskForm.priorityLow': 'Niedrig', + 'taskForm.categoryLabel': 'Kategorie', + 'taskForm.categoryPlaceholder': 'Frontend, Backend...', + 'taskForm.assignedLabel': 'Zugewiesen an', + 'taskForm.assignedPlaceholder': '@alice', + 'taskForm.createdLabel': 'Erstellt', + 'taskForm.startedLabel': 'Begonnen', + 'taskForm.dueLabel': 'Fällig', + 'taskForm.completedLabel': 'Abgeschlossen', + 'taskForm.tagsLabel': 'Tags', + 'taskForm.tagsPlaceholder': '#bug #feature', + 'taskForm.tagsHelp': 'Mit Leerzeichen trennen', + 'taskForm.descriptionLabel': 'Beschreibung', + 'taskForm.subtasksLabel': 'Unteraufgaben', + 'taskForm.subtaskPlaceholder': 'Unteraufgabe hinzufügen...', + 'taskForm.subtaskAdd': '+ Hinzufügen', + 'taskForm.notesLabel': 'Anmerkungen', + 'taskForm.notesPlaceholder': 'Technische Anmerkungen, Ergebnisse, Entscheidungen, etc...', + 'taskForm.notesHelp': 'Markdown-Unterstützung: **fett**, *kursiv*, `code`, Listen, Links, **Abschnitte**:', + 'taskForm.cancel': 'Abbrechen', + 'taskForm.create': 'Erstellen', + 'taskForm.save': 'Speichern', + + // Columns modal + 'columns.title': 'Spalten bearbeiten', + 'columns.add': '+ Spalte hinzufügen', + + // Archives modal + 'archives.title': '📦 Archiv', + 'archives.search': 'Suche im Archiv...', + 'archives.empty': 'Keine archivierten Aufgaben', + + // Project selector + 'projects.select': 'Wählen Sie ein Projekt...', + + // Task metadata in detail modal + 'meta.priority': 'Priorität', + 'meta.status': 'Status', + 'meta.category': 'Kategorie', + 'meta.assigned': 'Zugewiesen an', + 'meta.created': 'Erstellungsdatum', + 'meta.started': 'Startdatum', + 'meta.due': 'Fälligkeitsdatum', + 'meta.completed': 'Erledigungsdatum', + 'meta.tags': 'Tags', + 'meta.description': 'Beschreibung', + 'meta.subtasks': 'Unteraufgaben ({completed}/{total})', + 'meta.notes': 'Anmerkungen', + + // Empty states + 'empty.noTasks': 'Keine Aufgaben', + + // Buttons and actions + 'action.restore': '↩️ Wiederherstellen', + 'action.delete': '🗑️', + 'action.edit': '✏️', + 'action.moveUp': 'Nach oben', + 'action.moveDown': 'Nach unten', + + // Tooltips + 'tooltip.filterByCategory': 'Nach dieser Kategorie filtern', + 'tooltip.filterByUser': 'Nach diesem Benutzer filtern', + 'tooltip.filterByTag': 'Nach diesem Tag filtern', + 'tooltip.filterByPriority': 'Nach dieser Priorität filtern', + 'tooltip.doubleClickEdit': 'Doppelklick zum Bearbeiten', + 'tooltip.delete': 'Löschen', + + // Notifications + 'notif.folderLoaded': 'Ordner erfolgreich geladen!', + 'notif.folderError': 'Problem beim Laden des Ordners', + 'notif.initializingFolder': 'Ordner wird initialisiert...', + 'notif.filesInitialized': 'Dateien erfolgreich initialisiert! (kanban.md and archive.md)', + 'notif.filesError': 'Problem beim Erstellen der Dateien', + 'notif.projectLoaded': 'Projekt "{name}" geladen', + 'notif.permissionDenied': 'Zugriff verweigert für dieses Projekt', + 'notif.projectError': 'Problem beim Wechseln des Projekts', + 'notif.projectRenamed': 'Projekt erfolgreich umbenannt', + 'notif.projectDeleted': 'Projekt aus Liste gelöscht', + 'notif.renameError': 'Problem beim Umbenennen', + 'notif.projectRestored': 'Projekt erfolgreich wiederhergestellt', + 'notif.taskMoved': 'Aufgabe verschoben!', + 'notif.taskEdited': 'Aufgabe {id} aktualisiert!', + 'notif.taskCreated': 'Aufgabe {id} erstellt!', + 'notif.taskArchived': 'Aufgabe archiviert!', + 'notif.taskDeleted': 'Aufgabe endgültig gelöscht', + 'notif.taskRestored': 'Aufgabe in ursprünglicher Spalte zurückgesetzt!', + + // Prompts and confirmations + 'prompt.projectName': 'Projektname (leer lassen, um "{name}" zu verwenden):', + 'prompt.renameProject': 'Neuer Projektname:', + 'prompt.columnName': 'Spaltenname:', + 'prompt.columnId': 'Spalten-ID (z.B., todo, done):', + 'prompt.editSubtask': 'Unteraufgabe bearbeiten:', + 'confirm.deleteColumn': 'Diese Spalte löschen?', + 'confirm.deleteSubtask': 'Diese Unteraufgabe löschen?', + 'confirm.deleteProject': 'Projekt "{name}" aus Liste löschen?\n\nDas Projekt wird nur aus der Liste gelöscht. Die Dateien bleiben bestehen.', + 'confirm.archiveTask': 'Aufgabe "{title}" archivieren?', + 'confirm.deleteTask': '⚠️ WARNUNG: Aufgabe "{title}" endgültig löschen?\n\nDies kann nicht rückgängig gemacht werden.', + 'confirm.deleteTaskFromArchive': '⚠️ WARNUNG: Aufgabe "{title}" endgültig löschen?\n\nDies kann nicht rückgängig gemacht werden.\n\nWenn die Aufgabe in der Historie vorgehalten werden soll, klicken Sie stattdessen auf "Archivieren".', + + // Alerts + 'alert.browserNotSupported': 'Ihr Browser unterstützt die File System Access API nicht.\n\Bitte Chrome 86+, Edge 86+ oder Opera 72+ nutzen.', + + // Subtasks in detail modal + 'subtask.newPlaceholder': 'Neue Unteraufgabe...', + + // Markdown generation + 'markdown.archiveTitle': '# Aufgaben-Archiv', + 'markdown.archiveDesc': '> Archivierte Aufgaben', + 'markdown.archiveSection': '## ✅ Archiv', + 'markdown.configSection': '## ⚙️ Konfiguration', + 'markdown.configColumns': '**Spalten**:', + 'markdown.configCategories': '**Kategorien**:', + 'markdown.configUsers': '**Benutzer**:', + 'markdown.configPriorities': '**Prioritäten**:', + 'markdown.configTags': '**Tags**:', + + // Language selector + 'language.label': 'Sprache:', + 'language.en': 'English', + 'language.fr': 'Français', + 'language.de': 'Deutsch' } }; From adb83425771ba150816e854739e2c59ac463e13a Mon Sep 17 00:00:00 2001 From: Daniel Schlieckmann Date: Wed, 21 Jan 2026 12:31:48 +0100 Subject: [PATCH 2/3] Task description: Remove 200 char limit, preserve line breaks --- task-manager.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/task-manager.html b/task-manager.html index 795fe562..9bd9b9ce 100644 --- a/task-manager.html +++ b/task-manager.html @@ -2353,7 +2353,7 @@

${t('welcome.howItWorks')}

descriptionLines.push(line.trim()); } } - task.description = descriptionLines.join(' ').substring(0, 200); + task.description = descriptionLines.join('\r\n'); // Parse subtasks const subtaskMatches = content.matchAll(/- \[(x| )\] (.+)/g); From e585b062cb98d6d0753a747fc51f2d145cfef545 Mon Sep 17 00:00:00 2001 From: Daniel Schlieckmann Date: Wed, 21 Jan 2026 12:40:53 +0100 Subject: [PATCH 3/3] Revert "Task description: Remove 200 char limit, preserve line breaks" This reverts commit adb83425771ba150816e854739e2c59ac463e13a. --- task-manager.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/task-manager.html b/task-manager.html index 9bd9b9ce..795fe562 100644 --- a/task-manager.html +++ b/task-manager.html @@ -2353,7 +2353,7 @@

${t('welcome.howItWorks')}

descriptionLines.push(line.trim()); } } - task.description = descriptionLines.join('\r\n'); + task.description = descriptionLines.join(' ').substring(0, 200); // Parse subtasks const subtaskMatches = content.matchAll(/- \[(x| )\] (.+)/g);