Files
certain/web/src/locales/de.json
T
GuidoandClaude Opus 5 74641aeeac diag: Alphabetischen Bereich der Bankliste zeigen
815 geladene Banken bei ueber 2500 verfuegbaren, und alle Beispiele beginnen
mit A oder B – das deutet auf eine abgeschnittene Liste, nicht auf einen
falschen Suchbegriff. Die Sandbox-Vermutung ist damit widerlegt: "Aachener
Bank" und "BBVA" sind echte Institute.

Die Antwort nennt jetzt den Bereich von/bis und alle vorhandenen
Anfangsbuchstaben. Fehlen N und R, ist die Sache entschieden und die Abfrage
braucht Blaettern – dann suche ich nicht laenger am falschen Ende.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-26 21:54:58 +02:00

624 lines
35 KiB
JSON
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
{
"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",
"open": "Offene Buchungen",
"inbox": "Eingang"
},
"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",
"expenseShare": "Ausgaben-Anteile",
"noExpenses": "Noch keine Ausgaben in diesem Monat.",
"display": "Darstellung",
"asList": "Liste",
"asPie": "Kreis",
"range": "Zeitraum",
"days30": "30 T",
"days90": "90 T",
"days180": "6 M",
"days365": "1 J"
},
"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?",
"openingDateHint": "Stand am Ende dieses Tages. Buchungen bis dahin zählen nicht zum Kontostand, bleiben aber in Liste und Auswertungen. Ohne Stichtag zählt alles.",
"shortIdentWarning": "Kurze Erkennungstexte treffen leicht Fremdes: „Euro“ steckt auch in „Europa-Park“ oder „PayPal Europe“. Solche Buchungen werden dann fälschlich zu Überträgen. Nimm lieber etwas Eindeutiges wie die IBAN oder „Revolut**5064*“.",
"moveUp": "Nach oben",
"moveDown": "Nach unten"
},
"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 …",
"excludedFromStats": "Nicht in Auswertungen einrechnen",
"excludedHint": "Für Umbuchungen zwischen eigenen Konten: Der Kontostand ändert sich, aber Budget, Dashboard und Statistik lassen diese Buchungen außen vor – das Geld ist ja nicht ausgegeben.",
"excludedShort": "neutral"
},
"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": "Der Kontostand geht nicht auf. Die Datei endet bei {{file}}, aus den Zeilen errechnet sich aber {{app}} – es fehlen bzw. sind {{diff}} zu viel.",
"reconFirst": "Ab dem {{date}} laufen beide auseinander, bei „{{payee}}“: Die Kontostand-Spalte der Datei springt um {{expected}}, die Zeile selbst weist {{actual}} aus.",
"reconOpening": "Vor der ersten Zeile stand die Datei bei {{value}}. Trage das beim Konto als Anfangssaldo ein, mit einem Stichtag am Tag davor.",
"needsTarget": "Gegenkonto wählen",
"filterColumn": "Nur Zeilen aus Spalte",
"filterValue": "mit dem Wert",
"filterValuePlaceholder": "z. B. Giro",
"filterNone": "— kein Filter —",
"filterHint": "Revolut legt alle Produkte (Giro, Erspartes, Anlagekonto …) in EINE Datei, jedes mit eigenem Kontostand. Wähle hier eines aus und lies die übrigen mit einem eigenen Konto nochmal ein – sonst zählen die Bewegungen doppelt.",
"removeEntry": "Eintrag entfernen",
"removeEntryConfirm": "Den Verlaufs-Eintrag „{{file}}“ entfernen? Die Buchungen sind bereits zurückgenommen.",
"reconMixedHint": "Enthält die Datei mehrere Konten oder Produkte? Revolut legt Giro, Erspartes und Anlagekonto in EINE Datei, jedes mit eigener Kontostand-Spalte. Dann greift der Abgleich erst, wenn du oben den Zeilenfilter setzt (z. B. Produkt = Giro) und die übrigen Produkte einzeln einliest.",
"filterTitle": "Diese Datei enthält mehrere Konten",
"filterValueOption": "{{value}} ({{count}} Zeilen)",
"removeAllUndone": "Rückgängig gemachte entfernen",
"removeAllUndoneConfirm": "{{n}} rückgängig gemachte Einträge aus dem Verlauf entfernen? Die Buchungen sind bereits weg, es verschwindet nur der Eintrag.",
"dupInbox": "schon erfasst",
"dupInboxHint": "Diese Zahlung hast du unterwegs per Kurzbefehl erfasst – Betrag gleich, Datum in der Nähe. Sie ist bereits gebucht und wird deshalb übersprungen. Falls das doch zwei verschiedene Zahlungen sind, kannst du die Zeile von Hand anhaken.",
"fromPhone": "Vom Telefon empfangen",
"fromPhoneHint": "Diese Dateien hast du per Kurzbefehl geschickt. Gebucht ist noch nichts – übernimm eine, dann läuft sie durch die normale Vorschau mit Saldo-Abgleich.",
"usePhoneFile": "Übernehmen",
"phoneFileLoaded": "„{{name}}“ geladen – jetzt Format prüfen und Vorschau erzeugen.",
"discardPhoneFile": "Datei verwerfen",
"discardPhoneFileConfirm": "„{{name}}“ verwerfen? Die Datei wird gelöscht, gebucht war ohnehin nichts.",
"detectedBank": "Format erkannt: {{name}}",
"detectedGeneric": "Format aus der Datei abgeleitet",
"detectFailed": "Format nicht erkannt",
"detectUncertain": "Nicht alles war eindeutig – wirf einen Blick auf die Spaltenzuordnung unten, bevor du die Vorschau erzeugst."
},
"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."
},
"open": {
"title": "Buchungen ohne Kategorie",
"subtitle": "{{n}} noch zuzuordnen – älteste zuerst.",
"allDone": "Alles zugeordnet.",
"choose": "Kategorie wählen …",
"noText": "Ohne Text",
"rememberKeyword": "Zweck als Schlagwort merken, damit die nächste gleiche Buchung beim Import gleich zugeordnet wird",
"copy": "Text kopieren",
"copied": "Kopiert",
"copyFailed": "Kopieren nicht möglich – Text lässt sich jetzt aber markieren."
},
"tokens": {
"title": "Schnellerfassung per Kurzbefehl",
"intro": "Ein Geräteschlüssel ist ein langes Passwort nur für dein Telefon – nicht dein Anmelde-Passwort. Damit darf ein iOS-Kurzbefehl Zahlungen an Certain schicken, aber sonst nichts: keine Buchungen lesen, nichts ändern, nichts exportieren. Geht das Telefon verloren, widerrufst du hier einfach den Schlüssel.",
"name": "Wofür ist der Schlüssel?",
"namePlaceholder": "z. B. iPhone",
"defaultAccount": "Standardkonto",
"create": "Schlüssel erzeugen",
"onceOnly": "Das ist dein Geräteschlüssel. Er wird nur JETZT angezeigt – kopiere ihn und füge ihn in den Kurzbefehl ein. Certain speichert ihn nicht im Klartext, kann ihn dir also später nicht nochmal zeigen.",
"copy": "Kopieren",
"copied": "Kopiert",
"copyFailed": "Kopieren nicht möglich – der Text lässt sich aber markieren.",
"hide": "Fertig, ausblenden",
"guideTitle": "So baust du den Kurzbefehl",
"guideNoDownload": "Zum Herunterladen anbieten kann ich ihn leider nicht: Seit iOS 15 müssen Kurzbefehl-Dateien signiert sein, und signieren kann nur ein Mac mit Apple-Konto. Nachbauen dauert zwei Minuten. Tipp: Die Aktionsnamen ändern sich je nach iOS-Version – such im Aktionsfeld einfach nach dem fett gedruckten Wort, dann findest du sie sicher.",
"step1": "Suche nach „Eingabe“ → Aktion „Eingabe anfordern“ (englisch: Ask for Input). Frage: Betrag, Eingabetyp Zahl",
"step2": "Nochmal „Eingabe anfordern“. Frage: Wofür?",
"step3": "Optional: Suche nach „Liste“ → „Aus Liste wählen“ für das Konto. Ohne diesen Schritt gilt das Standardkonto der Marke",
"step4": "Suche nach „URL“ → „Inhalte von URL abrufen“. Methode POST, unter „Header“ die zweite Zeile unten eintragen (X-Certain-Token = dein Geräteschlüssel), Anfragetext JSON mit den Feldern amount (Zahl) und payee (Text):",
"step5": "Suche nach „Wörterbuch“ → „Wörterbuchwert abrufen“, Schlüssel: message. Danach „Mitteilung anzeigen“ – dann steht in der Meldung „12.50 CHF auf …“ statt der rohen Antwort",
"guideHomeScreen": "Danach über Teilen → „Zum Home-Bildschirm\" ablegen, dann ist es ein Tipp.",
"guideAutomation": "Wenn deine Kurzbefehle die Automation „Transaktion\" anbieten, kannst du denselben Kurzbefehl daran hängen: Schritt 1 und 2 entfallen, Betrag und Händler kommen dann von dort.",
"revoke": "Widerrufen",
"revokeConfirm": "Geräteschlüssel „{{name}}“ widerrufen? Der Kurzbefehl auf dem Gerät funktioniert danach nicht mehr. Bereits erfasste Buchungen bleiben.",
"noDefault": "kein Standardkonto",
"lastUsed": "schon benutzt",
"neverUsed": "noch nie benutzt",
"fileGuideTitle": "Kontoauszug vom Handy einlesen",
"fileGuideIntro": "Revolut und Raiffeisen lassen die CSV auch am Telefon exportieren. Ein zweiter Kurzbefehl nimmt sie aus dem Teilen-Menü entgegen. Voraussetzung: Du hast für dieses Konto schon einmal am Rechner eingelesen – Certain verwendet dann dieselbe Spaltenzuordnung.",
"fileStep1": "Neuer Kurzbefehl → oben auf den Namen tippen → „Im Teilen-Menü anzeigen“ einschalten, Eingabetyp: Dateien",
"fileStep2": "Kein Konto nötig: Certain erkennt es aus der Datei (Raiffeisen führt die eigene IBAN mit, Revolut die Währung). Nur wenn das nicht eindeutig ist, trägst du account_id ein – die Nummern stehen unten.",
"fileStep3": "Suche nach „URL“ → „Inhalte von URL abrufen“. Methode POST, Header X-Certain-Token = dein Geräteschlüssel, Anfragetext „Formular“ mit einem einzigen Feld: file = Kurzbefehleingabe.",
"fileStep4": "„Mitteilung anzeigen“ – dann siehst du „14 gebucht · 512 schon vorhanden“",
"fileGuideNote": "Gebucht wird sofort, weil ein Auszug hunderte Zeilen hat. Das ist ungefährlich: Bereits vorhandene Buchungen werden erkannt und übersprungen, und der ganze Stapel lässt sich im Import-Verlauf mit einem Klick zurücknehmen.",
"accountIds": "Konto-Nummern – nur nötig, wenn die Erkennung nicht eindeutig ist"
},
"inbox": {
"title": "Eingang",
"intro": "Zahlungen, die du unterwegs erfasst hast. Sie sind bereits gebucht – hier ordnest du ihnen in Ruhe eine Kategorie zu. Die Einträge bleiben stehen, damit der spätere Kontoauszug sie wiedererkennt und nichts doppelt verbucht wird.",
"empty": "Nichts erfasst. Richte unter „Mein Konto“ eine Gerätemarke ein, dann kannst du Zahlungen per Kurzbefehl vom Telefon aus erfassen.",
"noText": "ohne Text",
"viaShortcut": "per Kurzbefehl",
"discard": "Verwerfen",
"discardConfirm": "Diese Erfassung verwerfen? Die Buchung wird gelöscht. Der Eintrag bleibt als verworfen vermerkt, damit der Kontoauszug die Zahlung später trotzdem erkennt.",
"book": "Buchen",
"bookAll": "Alle buchen",
"bookedN": "{{n}} gebucht.",
"booked": "gebucht",
"unclear": "unklar – bitte ansehen",
"viaMail": "aus einer E-Mail"
},
"mailbox": {
"title": "Postfach für Zahlungs-Mails",
"intro": "Raiffeisen und Revolut melden Überweisungen per E-Mail. Certain holt sie ab und legt sie als Vorschlag in den Eingang – gebucht wird nur, was du abnickst. Kartenzahlungen im Laden melden die Banken nicht per Mail; dafür gibt es die Schnellerfassung per Kurzbefehl unter „Mein Konto“.",
"add": "Postfach hinzufügen",
"name": "Bezeichnung",
"namePlaceholder": "z. B. Belege",
"host": "IMAP-Server",
"port": "Port",
"username": "Benutzername",
"password": "Passwort",
"passwordKeep": "Passwort (leer lassen = unverändert)",
"passwordHint": "Wird verschlüsselt gespeichert. Der Schlüssel hängt am Server-Geheimnis: Wird es getauscht, musst du das Passwort neu eintragen. Nimm nach Möglichkeit ein App-Passwort statt deines echten.",
"folder": "Ordner",
"folderHint": "Nach einem Verbindungstest kannst du hier aus den echten Ordnern wählen.",
"doneFolder": "Nach dem Auswerten verschieben nach",
"doneFolderPlaceholder": "leer = nicht verschieben",
"pollMinutes": "Abrufen alle … Minuten",
"test": "Verbindung testen",
"testOk": "Verbindung steht – {{n}} Ordner gefunden.",
"fetchNow": "Jetzt abrufen",
"fetched": "{{gefunden}} Mails geprüft · {{neu}} neu · {{unklar}} unklar.",
"lastPoll": "zuletzt abgerufen",
"neverPolled": "noch nie abgerufen",
"lastError": "Fehler",
"delete": "Postfach entfernen",
"deleteConfirm": "Postfach „{{name}}“ entfernen? Bereits erfasste Zahlungen bleiben.",
"noSenders": "Noch kein Absender zugeordnet – ohne Zuordnung wird nichts übernommen.",
"noAccount": "kein Konto",
"fromPlaceholder": "Erkennungstext, z. B. raiffeisen",
"security": "Verschlüsselung",
"secSsl": "SSL/TLS (üblich, Port 993)",
"secStarttls": "STARTTLS (Port 143)",
"secNone": "keine",
"secNoneWarn": "Ohne Verschlüsselung gehen Benutzername und Passwort im Klartext über das Netz. Nur sinnvoll, wenn der Mailserver auf demselben Rechner läuft.",
"addSender": "Absender zuordnen",
"edit": "Postfach bearbeiten",
"skippedTitle": "Diese Mails wurden übergangen",
"skippedHint": "Für sie passt keine Absender-Zuordnung. Trag einen Teil der Adresse oder des Betreffs unten ein, dann werden sie beim nächsten Abruf übernommen.",
"fetchedNone": "Keine Mails im gewählten Ordner gefunden. Stimmt der Ordner? Beim ersten Abruf werden die letzten 14 Tage durchsucht.",
"senderHint": "Gesucht wird in Absender, Betreff und im Anfang des Textes – das greift auch bei weitergeleiteten Mails. Die Währung ist optional: Revolut schickt für Euro und Franken dieselbe Mail, erst sie sagt, welches Konto gemeint ist. Zuordnungen mit Währung gehen den allgemeinen vor.",
"deleteSender": "Zuordnung entfernen",
"deleteSenderConfirm": "Zuordnung „{{text}}“ entfernen? Bereits erfasste Zahlungen bleiben.",
"anyCurrency": "jede Währung"
},
"bank": {
"title": "Bankkonten direkt verbinden",
"intro": "Seit PSD2 müssen EU-Banken eine Schnittstelle anbieten – aber nur für lizenzierte Dienste. Enable Banking hält diese Lizenz und reicht sie weiter. Damit lassen sich N26 und Revolut direkt abrufen, ohne CSV. Die Schweiz fällt nicht unter PSD2; Raiffeisen bleibt beim Datei-Import.",
"setupTitle": "Einmal einrichten",
"setupHint": "Du brauchst eine eigene Anwendung bei Enable Banking. Mitliefern lässt sich das nicht – der Schlüssel ist an deine Registrierung gebunden.",
"setupStep1": "Auf enablebanking.com anmelden (Konto wird beim ersten Anmelden angelegt).",
"setupStep2": "Eine Anwendung im Bereich „Production“ anlegen und die Schlüsseldatei (.pem) herunterladen. Sie wird erst aktiv, wenn du deine eigenen Konten verknüpfst.",
"setupStep3": "Diese Adresse dort als Rückleitung („redirect URL“) eintragen:",
"setupStart": "Zugangsdaten eintragen",
"appTitle": "Zugangsdaten von Enable Banking",
"appReady": "Anwendung hinterlegt",
"appSaved": "Gespeichert.",
"applicationId": "Application ID",
"privateKey": "Privater Schlüssel – ganzer Inhalt der .pem-Datei",
"privateKeyKeep": "Privater Schlüssel (leer lassen = unverändert)",
"privateKeyHint": "Die Datei komplett öffnen und alles einfügen, MIT den Zeilen „-----BEGIN PRIVATE KEY-----“ und „-----END PRIVATE KEY-----“ – ohne sie ist es kein gültiges PEM. Wird verschlüsselt gespeichert und verlässt den Server nie; mit ihm wird jede Anfrage an die Bank signiert.",
"baseUrl": "Öffentliche Adresse dieser Installation",
"baseUrlHint": "Muss mit https:// beginnen und von aussen erreichbar sein – Banken leiten nicht auf eine unverschlüsselte Adresse zurück. Genau diese Adresse plus /bank/rueckkehr trägst du bei Enable Banking ein.",
"country": "Land der Bank",
"findBanks": "Banken suchen",
"noBanks": "Keine Treffer. Versuch einen kürzeren Suchbegriff, oder lass das Land leer.",
"pickBank": "{{n}} Treffer von {{gesamt}} geladenen Banken – wähle deine aus:",
"connect": "Verbinden",
"notMapped": "noch keinem Konto zugeordnet",
"mapHint": "Ohne Zuordnung wird von diesem Konto nichts abgerufen.",
"noAccountsFound": "Es wurden keine Konten übermittelt.",
"sync": "Umsätze holen",
"synced": "{{geholt}} Umsätze geprüft · {{neu}} neu im Eingang.",
"noMapping": "Kein Konto zugeordnet – ordne oben zuerst zu, dann wird abgerufen.",
"lastSync": "zuletzt geholt am {{datum}}",
"neverSynced": "noch nie geholt",
"lastError": "Fehler",
"validUntil": "Zustimmung gültig bis {{datum}}",
"expiresSoon": "Zustimmung läuft am {{datum}} ab – danach musst du neu autorisieren.",
"disconnect": "Verbindung trennen",
"disconnectConfirm": "Verbindung zu „{{name}}“ trennen? Bereits abgerufene Buchungen bleiben.",
"search": "Bank suchen",
"searchPlaceholder": "z. B. revolut oder n26",
"searchHint": "Ohne Land wird überall gesucht. Das ist meist richtig: Das Sitzland einer Bank steht nicht in der IBAN – Revolut vergibt deutsche IBANs, sitzt aber in Litauen.",
"allCountries": "alle Länder",
"noMatch": "{{gesamt}} Banken geladen, aber keine passt zum Suchbegriff. Versuch etwas Kürzeres – manche heissen in der Liste anders als im Alltag.",
"noneLoaded": "Die Schnittstelle hat gar keine Banken geliefert. Das liegt nicht am Suchbegriff: Prüf, ob deine Anwendung bei Enable Banking schon aktiv ist – sie wird es erst, wenn du dort deine eigenen Konten verknüpft hast.",
"sampleTitle": "Beispiele quer durch die geladene Liste:",
"sandboxHint": "Stehen dort lauter Test- oder Mock-Institute statt echter Banken, ist deine Anwendung im Control Panel als „Sandbox“ angelegt. N26 und Revolut gibt es nur in „Production“ – dort heissen sie genau so, in DE wie in LT.",
"range": "Die Liste reicht von „{{von}}“ bis „{{bis}}“.",
"letters": "Vorhandene Anfangsbuchstaben",
"truncatedHint": "Fehlen ganze Buchstaben – etwa N oder R –, ist die Liste abgeschnitten und deine Bank wurde gar nicht mitgeliefert. Dann liegt es nicht am Suchbegriff, und ich muss die Abfrage blättern lassen."
},
"bankReturn": {
"title": "Rückkehr von der Bank",
"working": "Die Zustimmung wird abgeschlossen …",
"ok": "Verbunden. {{n}} Konten gefunden.",
"next": "Ordne sie jetzt in den Einstellungen deinen Konten in Certain zu – danach lassen sich die Umsätze holen.",
"failed": "Das hat nicht geklappt",
"failedHint": "Der Code von der Bank gilt nur einmal und nur kurz. Starte die Verbindung in den Einstellungen neu.",
"missing": "Die Bank hat keinen Code zurückgegeben.",
"toSettings": "Zu den Einstellungen"
}
}