{ "common": { "save": "Speichern", "cancel": "Abbrechen", "delete": "Löschen", "create": "Anlegen", "edit": "Bearbeiten", "loading": "Lädt…", "logout": "Abmelden", "admin": "Administrator", "user": "Benutzer", "close": "Schließen", "retry": "Erneut versuchen", "actions": "Aktionen" }, "nav": { "overview": "Übersicht", "accounts": "Konten", "categories": "Kategorien", "transactions": "Buchungen", "budget": "Budget", "import": "Import", "system": "System", "users": "Benutzer", "settings": "Einstellungen" }, "login": { "subtitle": "Bitte anmelden", "username": "Benutzername", "password": "Passwort", "submit": "Anmelden", "error": "Benutzername oder Passwort falsch", "expired": "Deine Sitzung ist abgelaufen. Bitte erneut anmelden." }, "changepw": { "title": "Passwort ändern", "forcedHint": "Bitte lege ein eigenes Passwort fest, bevor du fortfährst.", "current": "Aktuelles Passwort", "new": "Neues Passwort", "repeat": "Neues Passwort wiederholen", "submit": "Passwort speichern", "mismatch": "Die neuen Passwörter stimmen nicht überein.", "saved": "Passwort geändert.", "policyHint": "Die Passwortrichtlinie wurde geändert. Dein bisheriges Passwort erfüllt sie nicht mehr – bitte lege ein neues fest." }, "users": { "title": "Benutzer", "new": "Neuer Benutzer", "username": "Benutzername", "displayName": "Anzeigename", "password": "Temporär-Passwort", "passwordHint": "Der Benutzer wird beim ersten Login zum Ändern aufgefordert.", "role": "Rolle", "status": "Status", "active": "Aktiv", "inactive": "Deaktiviert", "resetPassword": "Passwort zurücksetzen", "deleteConfirm": "Diesen Benutzer wirklich löschen?", "created": "Benutzer angelegt.", "you": "(du)", "twoFactor": "Zwei-Faktor", "resetTwoFactor": "Zwei-Faktor zurücksetzen", "resetTwoFactorConfirm": "Zwei-Faktor für „{{name}}“ abschalten? Nur nötig, wenn Gerät und Wiederherstellungscodes verloren sind.", "twoFactorReset": "Zwei-Faktor zurückgesetzt.", "generatePassword": "Passwort erzeugen" }, "account": { "title": "Mein Konto", "password": "Passwort ändern", "twoFactor": "Zwei-Faktor-Authentifizierung", "manage2fa": "2FA verwalten" }, "settings": { "title": "Einstellungen", "general": "Darstellung & Sprache", "baseCurrency": "Hauptwährung", "baseCurrencyHint": "Währung für Budget-Summen und Dashboard-Gesamtwerte.", "locale": "Sprache", "theme": "Darstellung", "themeSystem": "Automatisch (System)", "themeLight": "Hell", "themeDark": "Dunkel", "budgetStartDay": "Budget-Monat beginnt am", "budgetStartDayHint": "Tag, an dem dein Budget-Monat startet (z. B. 25.).", "dateFormat": "Datumsformat", "saved": "Gespeichert.", "languageDe": "Deutsch", "languageEn": "Englisch", "backup": "Backup & Export", "exportHint": "Zum Ansehen und Weiterverarbeiten, etwa in einer Tabellenkalkulation. Diese Dateien lassen sich nicht zurückladen.", "exportTxnCsv": "Buchungen (CSV)", "exportTxnJson": "Buchungen (JSON)", "exportAll": "Datenübersicht (JSON)", "dbBackup": "Komplettes DB-Backup herunterladen", "dbBackupHint": "Vollständige Datenbank aller Nutzer (nur Admin) – zum Wiederherstellen sichern.", "keywordReview": "Schlagwörter prüfen", "keywordReviewHint": "Diese Schlagwörter werden auffällig oft wieder wegkorrigiert – stimmen sie vielleicht nicht mehr?", "keywordCorrected": "{{overridden}} von {{applied}} Buchungen korrigiert", "keep": "Behalten", "remove": "Entfernen", "security": "Sicherheit", "securityHint": "Zwei-Faktor-Authentisierung für dein eigenes Konto.", "twoFactor": "Zwei-Faktor verwalten", "backupHint": "Das Voll-Backup enthält alle deine Daten und lässt sich unten wieder einspielen.", "exportBackup": "Voll-Backup (JSON)", "systemBackup": "Systemweites Voll-Backup (JSON)", "systemBackupWarning": "Das systemweite Backup enthält Passwort-Hashes und Zwei-Faktor-Geheimnisse aller Benutzer. Behandle die Datei wie ein Passwort." }, "dashboard": { "title": "Übersicht", "emptyCards": "Keine Karten vorhanden – über den Anordnen-Modus hinzufügen.", "edit": "Anordnen", "done": "Fertig", "addCard": "Karte hinzufügen", "reset": "Zurücksetzen", "resetConfirm": "Dashboard auf das Standard-Layout zurücksetzen?" }, "cards": { "balances": "Kontostände", "budgetDonut": "Budget", "netWorth": "Vermögensverlauf", "budgetProgress": "Budget-Fortschritt", "incomeExpense": "Einnahmen & Ausgaben", "recent": "Letzte Buchungen", "total": "Gesamt", "planned": "geplant", "spent": "ausgegeben", "assets": "Vermögen", "income": "Einnahmen", "expense": "Ausgaben", "net": "Saldo", "noBudget": "Noch kein Budget für diesen Monat.", "breakdown": "Aufschlüsselung", "byGroup": "Gruppen", "byCategory": "Kategorien" }, "server": { "unreachable": "Server nicht erreichbar.", "sessionKept": "Deine Anmeldung ist noch gültig – sobald der Server wieder antwortet, geht es weiter." }, "accounts": { "title": "Konten", "new": "Neues Konto", "edit": "Konto bearbeiten", "name": "Name", "type": "Typ", "currency": "Währung", "icon": "Symbol", "color": "Farbe", "openingBalance": "Anfangssaldo", "openingDate": "Stichtag", "identifiers": "Erkennungs-Nummern (IBAN etc.)", "addIdentifier": "Nummer hinzufügen", "textIdentPlaceholder": "z. B. Sparkonto, Tagesgeld", "identShort": "Nr.", "total": "Gesamt", "empty": "Noch keine Konten. Lege dein erstes Konto an.", "deleteConfirm": "Dieses Konto und alle zugehörigen Buchungen löschen?" }, "accountTypes": { "girokonto": "Girokonto", "sparkonto": "Sparkonto", "bargeld": "Bargeld", "kreditkarte": "Kreditkarte", "depot": "Depot / Investment", "sonstiges": "Sonstiges" }, "identifierKinds": { "iban": "IBAN", "account_no": "Kontonummer", "card_no": "Kartennummer", "text": "Text (Erkennung)" }, "transferRules": { "title": "Transfer-Erkennung", "hint": "Buchungen, deren Text eines dieser Wörter enthält (z. B. „Revolut“), werden als Transfer gesetzt. Das Zielkonto kannst du fest wählen – oder automatisch aus dem Buchungstext erraten lassen (über die Erkennungs-Texte je Konto: Konto bearbeiten, Art „Text“).", "wordPlaceholder": "Wort (z. B. Übertrag)", "autoTarget": "automatisch", "empty": "Noch keine Transfer-Schlagwörter." }, "categories": { "title": "Kategorien", "newGroup": "Neue Gruppe", "editGroup": "Gruppe bearbeiten", "newCategory": "Neue Kategorie", "editCategory": "Kategorie bearbeiten", "name": "Name", "kind": "Art", "income": "Einnahme", "expense": "Ausgabe", "emptyGroup": "Keine Kategorien in dieser Gruppe.", "deleteConfirm": "Diese Kategorie löschen?", "deleteGroupConfirm": "Diese Gruppe samt aller Kategorien löschen?", "keywordsBtn": "Schlagwörter", "keywordsCount_one": "{{count}} Schlagwort hinterlegt", "keywordsCount_other": "{{count}} Schlagwörter hinterlegt", "keywordsTitle": "Schlagwörter – {{name}}", "keywordsHint": "Buchungen, die eines dieser Wörter im Empfänger oder Verwendungszweck enthalten, werden bei künftigen Importen automatisch dieser Kategorie zugeordnet.", "keywordAdd": "Wort eingeben und Enter", "keywordAmount": "Betrag (optional)", "keywordEmpty": "Noch keine Schlagwörter.", "keywordAddBtn": "Hinzufügen", "keywordEditHint": "Doppelklick auf ein Schlagwort lädt es mit Betrag oben zum Bearbeiten.", "keywordEditing": "Vorhandenes Schlagwort wird bearbeitet – Escape bricht ab.", "searchPlaceholder": "Kategorie suchen …" }, "transactions": { "title": "Buchungen", "new": "Neue Buchung", "edit": "Buchung bearbeiten", "expense": "Ausgabe", "income": "Einnahme", "transfer": "Transfer", "date": "Datum", "account": "Konto", "fromAccount": "Von Konto", "toAccount": "Auf Konto", "category": "Kategorie", "amount": "Betrag", "toAmount": "Gutschrift", "payee": "Empfänger", "description": "Verwendungszweck", "uncategorized": "Ohne Kategorie", "empty": "Noch keine Buchungen.", "needAccount": "Lege zuerst ein Konto an, um Buchungen zu erfassen.", "allAccounts": "Alle Konten", "allTypes": "Alle Typen", "deleteConfirm": "Diese Buchung löschen?", "amountRequired": "Bitte einen Betrag eingeben.", "accountRequired": "Bitte ein Konto wählen.", "budgetAsSavings": "Als Sparen ins Budget zählen", "budgetCategory": "Budget-Kategorie" }, "budget": { "title": "Budget", "monthMode": "Monat", "templateMode": "Standard-Budget", "income": "Einnahmen", "expenses": "Ausgaben", "planned": "Geplant", "totalIncome": "Einnahmen gesamt", "totalExpense": "Ausgaben gesamt", "reset": "Auf Standard zurücksetzen", "resetTitle": "Monat zurücksetzen", "resetConfirm": "Diesen Monat auf das Standard-Budget zurücksetzen? Die Anpassungen dieses Monats gehen verloren.", "templateHint": "Das Standard-Budget gilt für jeden Monat, solange du ihn nicht einzeln anpasst.", "prevMonth": "Vorheriger Monat", "nextMonth": "Nächster Monat", "monthsShown": "Monate:", "setAsTemplate": "Als Standard festlegen", "setAsTemplateConfirm": "Die Soll-Werte dieses Monats als neues Standard-Budget übernehmen? Die bisherige Vorlage wird ersetzt (geplante Einnahmen bleiben).", "copyFromTemplate": "Standard übernehmen", "copyFromTemplateConfirm": "Diesen Monat mit dem Standard-Budget überschreiben? Die bisherigen Anpassungen dieses Monats gehen verloren.", "addIncome": "Geplante Einnahme", "editIncome": "Einnahme bearbeiten", "noIncome": "Noch keine geplanten Einnahmen.", "deleteIncomeConfirm": "Diese geplante Einnahme löschen?", "incomeLabel": "Bezeichnung", "incomeCategory": "Kategorie", "targetAccount": "Zielkonto" }, "import": { "title": "Import", "modeCsv": "CSV", "modeDoc": "PDF · Bild", "readDoc": "Beleg auslesen", "docHint": "PDF-/Bild-Erkennung ist Best-Effort — bitte jede Zeile prüfen und ggf. korrigieren.", "extractedText": "Extrahierter Text (zur Kontrolle)", "step1": "1 · Konto & Datei", "step2": "2 · Format", "step3": "3 · Spalten zuordnen", "step4": "4 · Prüfen & buchen", "account": "Zielkonto", "file": "Datei", "preset": "Bank-Vorlage (vorgefertigt)", "template": "Eigene Vorlage", "templateAny": "Vorlage", "presetGroup": "Bank-Vorlagen", "ownGroup": "Eigene Vorlagen", "templateManual": "Manuell einstellen", "overwriteConfirm": "Vorlage „{{name}}“ mit den aktuellen Einstellungen überschreiben?", "autoPreviewNote": "Die Spaltenvorschau erscheint automatisch, sobald Datei und Format passen.", "moreColumns": "Weitere Spalten (optional)", "ibanHint": "IBAN der Gegenseite – nur nötig, wenn dein Export eine Spalte mit der IBAN des anderen Kontos enthält; dient der automatischen Transfer-Erkennung.", "belegPreview": "Beleg", "delimiter": "Trennzeichen", "decimal": "Dezimaltrenner", "dateFormat": "Datumsformat", "encoding": "Kodierung", "amountMode": "Betragsspalten", "skipRows": "Zeilen überspringen", "hasHeader": "Erste Zeile ist Kopfzeile", "modeSigned": "Ein Betrag (mit Vorzeichen)", "modeDebitCredit": "Getrennte Soll-/Haben-Spalten", "modeAbsExpense": "Ein Betrag (immer Ausgabe)", "readFile": "Datei einlesen", "makePreview": "Vorschau erstellen", "saveTemplate": "Als Vorlage speichern", "templateName": "Vorlagenname", "colDate": "Datum", "colAmount": "Betrag", "colDebit": "Soll (Ausgang)", "colCredit": "Haben (Eingang)", "colPayee": "Empfänger", "colPurpose": "Verwendungszweck", "colIban": "Gegen-IBAN", "makePreviewHint": "Ordne mindestens Datum und Betrag zu.", "rawHint": "Nur die ersten Zeilen – sie dienen nur der Spaltenzuordnung.", "makePreviewNote": "„Vorschau erstellen“ zeigt danach ALLE Buchungen zum Prüfen und Buchen.", "summary": "{{total}} Zeilen erkannt · {{n}} werden gebucht (Duplikate/ungültige ausgenommen).", "noneValid": "Keine gültige Buchung erkannt. Prüfe Datumsformat, Dezimaltrenner und Spaltenzuordnung – am einfachsten oben die passende Bank-Vorlage wählen.", "commit": "{{n}} Buchungen übernehmen", "imported": "{{n}} Buchungen importiert.", "importedCount": "{{n}} gebucht", "typeCol": "Typ", "payeeCol": "Empfänger / Zweck", "badDate": "Datum?", "duplicate": "Duplikat", "counterpart": "Gegenbuchung", "chooseAccount": "Konto wählen", "history": "Import-Verlauf", "undo": "Rückgängig", "undoConfirm": "Alle Buchungen aus {{file}} wieder entfernen?", "undone": "rückgängig gemacht", "needFile": "Bitte zuerst eine CSV-Datei wählen.", "needFileAccount": "Bitte Konto und Datei wählen.", "colFee": "Gebühr", "colCurrency": "Währung", "colState": "Status", "extraColsHint": "Gebühr wird vom Betrag abgezogen. Zeilen mit Status ungleich COMPLETED (z. B. storniert) und Zeilen in einer anderen Währung als das Zielkonto werden nicht gebucht.", "skipState": "storniert", "skipCurrency": "andere Währung", "colBalance": "Kontostand (laufend)", "reconOk": "Saldo-Abgleich stimmt: alle {{n}} Schritte passen zur Kontostand-Spalte der Datei.", "reconDiff": "Saldo-Abgleich weicht ab. Laut Datei: {{file}} · errechnet: {{app}} · Differenz: {{diff}}.", "reconFirst": "Erste Abweichung am {{date}} bei „{{payee}}“: Bank {{expected}}, erkannt {{actual}}.", "reconOpening": "Anfangssaldo laut Datei: {{value}} (trage ihn beim Konto ein, damit der Stand stimmt).", "needsTarget": "Gegenkonto wählen" }, "password": { "show": "Passwort anzeigen", "hide": "Passwort verbergen", "met": "(erfüllt)", "unmet": "(offen)", "ruleLength": "Mindestens {{n}} Zeichen", "ruleUpper": "Mindestens ein Grossbuchstabe", "ruleLower": "Mindestens ein Kleinbuchstabe", "ruleDigit": "Mindestens eine Ziffer", "ruleSpecial": "Mindestens ein Sonderzeichen" }, "twofactor": { "title": "Zwei-Faktor-Authentisierung", "intro": "Zusätzlich zum Passwort ein Einmalcode aus einer Authenticator-App. Wer nur dein Passwort kennt, kommt damit nicht mehr hinein.", "on": "Aktiv", "off": "Nicht eingerichtet", "start": "Einrichten", "scan": "Scanne den Code mit deiner Authenticator-App (z. B. Aegis, 1Password, Google Authenticator).", "qrAlt": "QR-Code zur Einrichtung der Authenticator-App", "manual": "Geht der Scan nicht, gib diesen Schlüssel von Hand ein:", "code": "Code aus der App", "codeHint": "Gib den sechsstelligen Code aus deiner Authenticator-App ein.", "activate": "Aktivieren", "verify": "Bestätigen", "useRecovery": "Wiederherstellungscode verwenden", "useApp": "Doch Code aus der App", "recoveryCode": "Wiederherstellungscode", "recoveryHint": "Gib einen deiner Wiederherstellungscodes ein. Jeder funktioniert nur einmal.", "codesTitle": "Wiederherstellungscodes", "codesHint": "Bewahre diese Codes sicher auf – zum Beispiel ausgedruckt. Sie sind der einzige Weg hinein, wenn dein Gerät verloren geht. Jeder Code funktioniert genau einmal, und angezeigt werden sie nur dieses eine Mal.", "codesSaved": "Habe ich gesichert", "codesLeft": "Noch {{n}} unbenutzte Wiederherstellungscodes.", "copy": "Kopieren", "copied": "In die Zwischenablage kopiert.", "download": "Als Datei sichern", "newCodes": "Neue Codes erzeugen", "newCodesTitle": "Neue Wiederherstellungscodes", "newCodesHint": "Die bisherigen Codes werden dabei ungültig. Zur Bestätigung dein Passwort eingeben.", "disable": "Zwei-Faktor abschalten", "disableTitle": "Zwei-Faktor abschalten", "disableHint": "Danach genügt wieder das Passwort allein. Zur Bestätigung dein Passwort eingeben.", "disabled": "Zwei-Faktor abgeschaltet.", "requiredHint": "Die Richtlinie verlangt Zwei-Faktor. Bis zur Einrichtung bleibt der Rest der Anwendung gesperrt." }, "policy": { "title": "Passwortrichtlinie", "hint": "Gilt für alle Benutzer dieser Instanz.", "minLength": "Mindestlänge", "require_upper": "Grossbuchstabe verlangen", "require_lower": "Kleinbuchstabe verlangen", "require_digit": "Ziffer verlangen", "require_special": "Sonderzeichen verlangen", "mfaRequired": "Zwei-Faktor für alle verpflichtend", "mfaHint": "Benutzer ohne zweiten Faktor müssen ihn beim nächsten Anmelden einrichten.", "tightenWarning": "Verschärfung: Benutzer, deren Passwort die neue Richtlinie nicht erfüllt, müssen es beim nächsten Anmelden ändern.", "mfaWarning": "Alle Benutzer ohne Zwei-Faktor werden beim nächsten Anmelden zur Einrichtung geführt – auch du." }, "restore": { "title": "Backup zurückladen", "hint": "Wähle eine Backup-Datei. Sie wird zuerst nur geprüft; eingespielt wird erst nach deiner Bestätigung.", "file": "Backup-Datei", "empty": "Die Datei enthält keine Daten.", "scopeUser": "Backup der Daten von „{{name}}“.", "scopeSystem": "Systemweites Backup mit {{n}} Benutzern.", "exportedAt": "Erstellt am {{when}}", "mode": "Vorgehen", "modeReplace": "Ersetzen", "modeMerge": "Ergänzen", "modeReplaceHint": "Vorhandene Daten werden gelöscht und durch das Backup ersetzt. Vorher legt der Server automatisch eine Sicherungskopie der Datenbank an.", "modeMergeHint": "Nichts wird gelöscht. Nur was fehlt, kommt hinzu; Budget, Regeln und Einstellungen bleiben unangetastet, wenn dazu schon etwas vorhanden ist.", "start": "Wiederherstellen", "confirmTitle": "Wirklich wiederherstellen?", "confirmReplace": "Alle deine Konten, Buchungen, Kategorien und Einstellungen werden gelöscht und durch das Backup ersetzt.", "confirmSystem": "Alle Benutzer und deren Daten werden gelöscht und durch das Backup ersetzt. Anschliessend sind alle Sitzungen beendet.", "done": "Wiederherstellung abgeschlossen.", "doneSystem": "Wiederherstellung abgeschlossen. Bitte neu anmelden." } }