diff --git a/public/locales/de/chores.json b/public/locales/de/chores.json new file mode 100644 index 0000000..a8e283a --- /dev/null +++ b/public/locales/de/chores.json @@ -0,0 +1,75 @@ +{ + "title": "Aufgaben", + "myChores": "Meine Aufgaben", + "allChores": "Alle Aufgaben", + "addChore": "Aufgabe hinzufügen", + "editChore": "Aufgabe bearbeiten", + "deleteChore": "Aufgabe löschen", + "completeChore": "Aufgabe abschließen", + "dueDate": "Fälligkeitsdatum", + "assignedTo": "Zugewiesen an", + "priority": "Priorität", + "status": "Status", + "description": "Beschreibung", + "choreView": { + "assignment": "Zuweisung", + "assigned": "Zugewiesen", + "last": "Letzte", + "schedule": "Zeitplan", + "due": "Fällig", + "statistics": "Statistiken", + "completed": "Abgeschlossen", + "times": "mal", + "details": "Details", + "createdBy": "Erstellt von", + "na": "Nicht verfügbar", + "taskCompleted": "Aufgabe abgeschlossen", + "taskCompletedMessage": "Deine Aufgabe wurde als abgeschlossen markiert", + "taskCompletionUndone": "Aufgabenabschluss wurde rückgängig gemacht.", + "taskSkipUndone": "Aufgabe überspringen wurde rückgängig gemacht.", + "undoSuccessful": "Rückgängig erfolgreich", + "undoFailed": "Rückgängig fehlgeschlagen", + "undoFailedMessage": "Die Aktion konnte nicht rückgängig gemacht werden. Bitte versuche es erneut.", + "resetTimer": "Timer zurücksetzen", + "resetTimerConfirmation": "Bist du sicher, dass du den Timer zurücksetzen möchtest? Dies löscht alle Zeitaufzeichnungen seit du die Aufgabe gestartet hast.", + "clearAllTimeRecords": "Alle Zeitaufzeichnungen löschen", + "clearAllTimeConfirmation": "Dies löscht dauerhaft alle Timer für diese Aufgabe und setzt sie zurück auf \"nicht gestartet\".", + "descriptionTitle": "Beschreibung", + "description": "Beschreibung:", + "previousNote": "Vorherige Notiz", + "previousNoteLabel": "Vorherige Notiz:", + "subtasksLabel": "Unteraufgaben:", + "taskActions": "Aufgabenaktionen", + "addNote": "Notiz hinzufügen", + "additionalNotes": "Zusätzliche Notizen:", + "notePlaceholder": "Notiz zur Fertigstellung hinzufügen...", + "setCustomCompletionTime": "Benutzerdefinierte Abschlusszeit festlegen", + "skipTask": "Aufgabe überspringen", + "skipTaskConfirmation": "Bist du sicher, dass du diese Aufgabe überspringen möchtest?", + "markComplete": "Als abgeschlossen markieren", + "markAsDone": "Als erledigt markieren", + "edit": "Bearbeiten", + "archive": "Archivieren", + "unarchive": "Archivierung aufheben", + "viewHistory": "Verlauf anzeigen", + "history": "Verlauf", + "startTimer": "Timer starten", + "start": "Starten", + "pauseTimer": "Timer pausieren", + "approve": "Genehmigen", + "reject": "Ablehnen", + "pendingApproval": "Genehmigung ausstehend", + "undo": "Rückgängig", + "skip": "Überspringen", + "cancel": "Abbrechen", + "noPriority": "Keine Priorität", + "subtasks": "Unteraufgaben", + "noDescription": "Keine Beschreibung verfügbar", + "timer": { + "active": "Timer aktiv", + "paused": "Timer pausiert", + "reset": "Timer zurücksetzen", + "delete": "Sitzung löschen" + } + } +} diff --git a/public/locales/de/common.json b/public/locales/de/common.json new file mode 100644 index 0000000..15671f1 --- /dev/null +++ b/public/locales/de/common.json @@ -0,0 +1,33 @@ +{ + "save": "Speichern", + "cancel": "Abbrechen", + "delete": "Löschen", + "edit": "Bearbeiten", + "close": "Schließen", + "confirm": "Bestätigen", + "loading": "Laden...", + "error": "Fehler", + "success": "Erfolg", + "warning": "Warnung", + "refresh": "Aktualisieren", + "copy": "Kopieren", + "copied": "Kopiert!", + "settings": "Einstellungen", + "yes": "Ja", + "no": "Nein", + "back": "Zurück", + "backToCalendar": "Zurück zum Kalender", + "logout": "Abmelden", + "version": "Version", + "navigation": { + "allTasks": "Alle Aufgaben", + "archived": "Archiviert", + "things": "Dinge", + "labels": "Beschriftungen", + "projects": "Projekte", + "filters": "Filter", + "activities": "Aktivitäten", + "points": "Punkte", + "settings": "Einstellungen" + } +} diff --git a/public/locales/de/settings.json b/public/locales/de/settings.json new file mode 100644 index 0000000..f11c9fd --- /dev/null +++ b/public/locales/de/settings.json @@ -0,0 +1,174 @@ +{ + "title": "Einstellungen", + "circleSettings": { + "title": "Kreis-Einstellungen", + "description": "Dein Account wird automatisch mit einem Kreis verbunden, wenn du einen erstellst oder beitrittst. Lade einfach Freunde ein, indem du den einzigartigen Kreis-Code oder Link unten teilst. Du erhältst eine Benachrichtigung, wenn jemand deinem Kreis beitreten möchte. Wenn du gehen möchtest, klicke einfach auf 'Kreis verlassen'.", + "circleCode": "Kreis-Code", + "copyCode": "Code kopieren", + "copyLink": "Link kopieren", + "codeCopied": "Kreis-Code kopiert!", + "linkCopied": "Kreis-Link kopiert!", + "joinCircle": "Einem Kreis beitreten", + "joinCirclePlaceholder": "Kreis-Code eingeben", + "join": "Beitreten", + "leave": "Kreis verlassen", + "leaveConfirmTitle": "Kreis verlassen", + "leaveConfirmMessage": "Bist du sicher, dass du diesen Kreis verlassen möchtest?", + "circleMembers": "Kreis-Mitglieder", + "circleMemberRequests": "Kreis-Beitrittsanfragen", + "admin": "Administrator", + "member": "Mitglied", + "pending": "Ausstehend", + "accept": "Akzeptieren", + "reject": "Ablehnen", + "makeAdmin": "Zum Administrator machen", + "makeMember": "Zum Mitglied machen", + "remove": "Entfernen", + "webhookURL": "Webhook-URL", + "webhookDescription": "Gib eine Webhook-URL ein, um Benachrichtigungen für Kreis-Ereignisse zu erhalten", + "webhookPlaceholder": "https://deine-webhook-url.com" + }, + "accountSettings": { + "title": "Account-Einstellungen", + "subscription": "Abonnement", + "subscriptionStatus": "Aktueller Plan", + "free": "Kostenlos", + "plus": "Plus", + "upgrade": "Upgraden", + "cancel": "Kündigen", + "changePassword": "Passwort ändern", + "password": "Passwort", + "dangerZone": "Gefahrenbereich", + "dangerZoneDescription": "Sobald du dein Konto löschst, gibt es kein Zurück mehr. Bitte sei dir sicher.", + "deleteAccount": "Account löschen" + }, + "localization": { + "title": "Lokalisierung", + "description": "Passe Sprache, Datumsformat und regionale Einstellungen für dein Konto an.", + "language": "Sprache", + "languageDescription": "Wähle deine bevorzugte Sprache", + "dateFormat": "Datumsformat", + "dateFormatDescription": "Wähle, wie Daten in der gesamten Anwendung angezeigt werden sollen", + "timeFormat": "Zeitformat", + "timeFormatDescription": "Wähle 12-Stunden- oder 24-Stunden-Zeitformat", + "12hour": "12-Stunden (AM/PM)", + "24hour": "24-Stunden", + "firstDayOfWeek": "Erster Tag der Woche", + "firstDayOfWeekDescription": "Wähle, welcher Tag deine Woche beginnt", + "sunday": "Sonntag", + "monday": "Montag", + "saturday": "Samstag", + "formats": { + "mdy": "MM/TT/JJJJ (USA)", + "dmy": "TT/MM/JJJJ (Europa)", + "ymd": "JJJJ-MM-TT (ISO)", + "long": "Langes Format (z.B. 1. Januar 2024)", + "short": "Kurzes Format (z.B. 1. Jan 2024)" + } + }, + "sidepanel": { + "title": "Seitenleisten-Anpassung", + "description": "Passe das Layout und die Sichtbarkeit von Karten in der Seitenleiste an. Dieser Bereich ist nur auf großen Bildschirmgeräten wie Tablets und Desktops verfügbar." + }, + "theme": { + "title": "Theme-Einstellungen", + "description": "Wähle, wie die Seite für dich aussieht. Wähle ein einzelnes Theme oder synchronisiere mit deinem System und wechsle automatisch zwischen Tag- und Nacht-Themes.", + "themeMode": "Theme-Modus", + "light": "Hell", + "dark": "Dunkel", + "system": "System" + }, + "notifications": { + "settingsSaved": "Einstellungen erfolgreich gespeichert", + "settingsSaveFailed": "Speichern der Einstellungen fehlgeschlagen", + "invalidWebhook": "Ungültige Webhook-URL" + }, + "profile": { + "title": "Profil-Einstellungen", + "description": "Aktualisiere deinen Anzeigenamen und dein Profilbild.", + "photoUpdated": "Foto aktualisiert", + "photoUpdatedMessage": "Dein Profilbild wurde erfolgreich aktualisiert!", + "uploadFailed": "Upload fehlgeschlagen", + "uploadFailedMessage": "Das Hochladen deines Fotos ist fehlgeschlagen. Bitte versuche es erneut.", + "profileUpdated": "Profil aktualisiert", + "profileUpdatedMessage": "Deine Profilinformationen wurden erfolgreich gespeichert!", + "updateFailed": "Update fehlgeschlagen", + "updateFailedMessage": "Dein Profil konnte nicht aktualisiert werden. Bitte überprüfe deine Verbindung und versuche es erneut.", + "changePhoto": "Foto ändern", + "displayName": "Anzeigename", + "displayNamePlaceholder": "Gib deinen Anzeigenamen ein", + "timezone": "Zeitzone", + "timezonePlaceholder": "Wähle deine Zeitzone", + "save": "Speichern", + "cancel": "Abbrechen" + }, + "overview": { + "title": "Einstellungen", + "subtitle": "Passe deine Erfahrung an und verwalte deine Account-Einstellungen", + "upgrade": { + "title": "Auf Plus upgraden", + "description": "Schalte mächtige Funktionen frei, um deine Produktivität zu steigern", + "button": "Jetzt upgraden", + "features": { + "richText": "Rich-Text-Beschreibungen", + "notifications": "Aufgaben-Benachrichtigungen", + "apiIntegrations": "API-Integrationen", + "advancedAutomation": "Erweiterte Automatisierung" + } + }, + "sections": { + "profile": { + "title": "Profil-Einstellungen", + "description": "Aktualisiere deine Profilinformationen, Foto, Anzeigenamen und Zeitzonen-Einstellungen." + }, + "circle": { + "title": "Kreis-Einstellungen", + "description": "Verwalte deinen Kreis, lade Mitglieder ein und bearbeite Beitrittsanfragen." + }, + "account": { + "title": "Account-Einstellungen", + "description": "Verwalte dein Abonnement, ändere dein Passwort und Account-Löschoptionen." + }, + "subaccounts": { + "title": "Verwaltete Accounts", + "description": "Erstelle und verwalte Unter-Accounts zum Anmelden und Erledigen zugewiesener Aufgaben." + }, + "notifications": { + "title": "Benachrichtigungen", + "description": "Konfiguriere Push-Benachrichtigungen, E-Mail-Benachrichtigungen und Benachrichtigungsziele für Aufgaben." + }, + "mfa": { + "title": "Multi-Faktor-Authentifizierung", + "description": "Füge eine zusätzliche Sicherheitsebene mit MFA über Authenticator-Apps hinzu." + }, + "apitokens": { + "title": "API-Token", + "description": "Generiere und verwalte Zugriffstoken für Drittanbieter-Integrationen und API-Zugang." + }, + "storage": { + "title": "Speicher-Einstellungen", + "description": "Sichere und stelle deine Daten wieder her, verwalte lokalen Speicher und Synchronisierungseinstellungen." + }, + "sidepanel": { + "title": "Seitenleisten-Anpassung", + "description": "Passe das Layout und die Sichtbarkeit von Karten in der Seitenleisten-Oberfläche an." + }, + "theme": { + "title": "Theme-Einstellungen", + "description": "Wähle dein bevorzugtes Theme und konfiguriere Dunkel-/Hell-Modus-Einstellungen." + }, + "localization": { + "title": "Lokalisierung", + "description": "Passe Sprache, Datumsformat, Zeitformat und regionale Einstellungen an." + }, + "advanced": { + "title": "Erweiterte Einstellungen", + "description": "Konfiguriere Webhooks, Echtzeit-Updates und andere erweiterte Funktionen für erhöhte Produktivität." + }, + "developer": { + "title": "Entwickler-Einstellungen", + "description": "Zeige technische Informationen über Authentifizierungs-Token, SSE-Verbindungen und Debug-Daten an." + } + } + } +} \ No newline at end of file diff --git a/src/contexts/LocalizationContext.jsx b/src/contexts/LocalizationContext.jsx index bfd5016..9cd5e5a 100644 --- a/src/contexts/LocalizationContext.jsx +++ b/src/contexts/LocalizationContext.jsx @@ -21,6 +21,7 @@ export const TIME_FORMATS = { export const RTL_LANGUAGES = ['ar', 'he', 'fa', 'ur'] export const AVAILABLE_LANGUAGES = [ + { code: 'de', name: 'German', nativeName: 'Deutsch' }, { code: 'en', name: 'English', nativeName: 'English' }, { code: 'es', name: 'Spanish', nativeName: 'Español' }, { code: 'fr', name: 'French', nativeName: 'Français' },