Zoomen war das falsche Werkzeug. Man konnte nur naeher heran, aber nicht sagen, WAS man behalten will – und das Ergebnis war immer quadratisch, auch wenn das Logo breit ist. Jetzt liegt ein Rahmen auf dem Bild: ziehen zum Verschieben, acht Griffe zum Aufziehen. Aussen abgedunkelt, Drittel-Linien zum Ausrichten, und darunter steht, wie gross der Ausschnitt gerade ist. "Ganzes Bild" setzt zurueck. Das Seitenverhaeltnis des Ausschnitts bleibt. Ein breites Logo wird ein breites Logo, kein quadratisches mit Luft an den Seiten. Der Ausschnitt wird in BILDPUNKTEN gefuehrt, nicht in Bildschirmpunkten – umgerechnet wird nur fuer die Anzeige. So trifft das Ergebnis genau den Bereich im Rahmen, ohne dass sich ueber viele Zieh-Bewegungen Rundungsfehler aufaddieren. Am Bildrand haelt die gegenueberliegende Kante still, statt dass der Rahmen beim Anschlag mitwandert; zieht man einen Griff ueber die eigene Kante hinaus, bleibt sie stehen, statt sich umzustuelpen. Auf dem Telefon sind die Griffe groesser – mit dem Finger waeren vierzehn Pixel nicht zu treffen. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
799 lines
46 KiB
JSON
799 lines
46 KiB
JSON
{
|
||
"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",
|
||
"todo": "Zu erledigen",
|
||
"abos": "Abos"
|
||
},
|
||
"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.",
|
||
"activeCurrencies": "Angebotene Währungen",
|
||
"activeCurrenciesHint": "Nur diese stehen in den Auswahlfeldern für Konten und Verträge. Alle übrigen bleiben gültig – wer eine davon schon benutzt, sieht sie dort weiterhin.",
|
||
"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.",
|
||
"sections": "Abschnitte"
|
||
},
|
||
"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",
|
||
"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.",
|
||
"savingsCategory": "Sparen gegen Kategorie",
|
||
"savingsCategoryNone": "Kein Sparziel",
|
||
"savingsCategoryHint": "Überweisungen auf dieses Konto zählen im Budget als Sparen gegen diese Kategorie – auch dann, wenn sie über die Bank als zwei verknüpfte Buchungen hereinkommen. Einzelne Buchungen lassen sich davon ausnehmen.",
|
||
"savingsCategoryNeutral": "Diese Kategorie ist als „Nicht in Auswertungen einrechnen“ markiert. Der Haken an der Kategorie gewinnt: Solange er sitzt, taucht das Sparen weder im Budget noch im Dashboard auf.",
|
||
"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",
|
||
"bankBalanceMatches": "Saldo stimmt mit der Bank überein",
|
||
"bankBalanceDiffers": "Bank: {{bank}} · Certain weicht um {{diff}} ab",
|
||
"adoptBankBalance": "Saldo der Bank übernehmen",
|
||
"adoptConfirm": "Der Saldo von {{bank}} wird als richtig übernommen. Die Differenz von {{diff}} wandert in den Anfangsbestand – sie steht für Bewegungen, die Certain nie gesehen hat. Deine Buchungen bleiben unverändert.",
|
||
"adopted": "Saldo übernommen.",
|
||
"identShort_one": "{{count}} Kennung",
|
||
"identShort_other": "{{count}} Kennungen",
|
||
"bankBalanceAvailable": "Bank meldet {{bank}} als verfügbaren Saldo – der enthält Vorgemerktes und lässt sich nicht vergleichen.",
|
||
"adoptConfirmAvailable": "Achtung: {{bank}} ist der VERFÜGBARE Saldo – er enthält Vorgemerktes, das später noch als Buchung kommt. Gleichst du jetzt an, ist dein Konto genau um diese Vormerkungen zu hoch, sobald sie gebucht werden. Die Differenz von {{diff}} wandert in den Anfangsbestand, deine Buchungen bleiben unverändert.",
|
||
"breakdown": "Woraus setzt sich das zusammen?",
|
||
"part": {
|
||
"anfangsbestand": "Anfangsbestand",
|
||
"einnahmen": "Einnahmen",
|
||
"ausgaben": "Ausgaben",
|
||
"uebertraege_raus": "Überträge raus",
|
||
"uebertraege_rein": "Überträge rein",
|
||
"saldo": "ergibt",
|
||
"bankGebucht": "Bank (gebucht)",
|
||
"bankVerfuegbar": "Bank (verfügbar)",
|
||
"legs": "Die Überträge dieses Kontos",
|
||
"beforeCutoff": "davor ({{n}} bis {{datum}}, schon im Anfangsbestand)"
|
||
}
|
||
},
|
||
"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.",
|
||
"spendingIsGood": "Diese Ausgabe ist kein Verlust",
|
||
"spendingIsGoodHint": "Für Sparen, Rücklagen und Vorsorge: Der Betrag zählt weiter im Budget – das Geld ist diesen Monat gebunden –, steht aber neutral statt rot. Und mehr zurückzulegen als geplant gilt nicht als Überschreitung.",
|
||
"excludedShort": "neutral",
|
||
"applyRules": "Regeln nachträglich anwenden",
|
||
"applyRulesHint": "Regeln greifen beim Import. Alles, was vorher hereinkam – oder bevor es die Regel gab –, liegt noch ohne Kategorie da. Hier holst du das nach.",
|
||
"applyPreview": "{{kategorien}} bekämen eine Kategorie, {{uebertraege}} würden zu Überträgen. Jetzt anwenden?",
|
||
"applyNothing": "Keine Buchung ohne Kategorie passt auf eine Regel.",
|
||
"applyDone": "{{kategorien}} zugeordnet, {{uebertraege}} als Übertrag gebucht.",
|
||
"applySkipped": "Übersprungen, weil unklar"
|
||
},
|
||
"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",
|
||
"subject": "Buchung",
|
||
"budgetPeriod": "Budgetzeitraum",
|
||
"budgetPeriodAuto": "aus dem Datum",
|
||
"budgetPeriodManual": "von Hand gesetzt",
|
||
"budgetPeriodReset": "wieder aus dem Datum",
|
||
"budgetPeriodBack": "Ein Monat zurück",
|
||
"budgetPeriodForward": "Ein Monat vor",
|
||
"budgetPeriodHint": "Nur für Ausnahmefälle: eine Zahlung, die sichtbar in den einen Monat fällt und doch zum anderen gehört. Sie zählt dann nur noch dort – in ihrem eigenen Monat nicht mehr.",
|
||
"budgetPeriodChange": "ändern"
|
||
},
|
||
"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"
|
||
},
|
||
"abos": {
|
||
"title": "Abos & Verträge",
|
||
"new": "Neuer Vertrag",
|
||
"edit": "Vertrag bearbeiten",
|
||
"delete": "Löschen",
|
||
"deleteConfirm": "„{{name}}“ wirklich löschen? Der Vertrag verschwindet samt seiner Angaben. Wenn er nur ausgelaufen ist, setz ihn lieber auf gekündigt – dann bleibt er zum Nachsehen stehen.",
|
||
"monthlyTotal": "Im Monat",
|
||
"yearlyTotal": "Im Jahr",
|
||
"activeCount": "Laufende Verträge",
|
||
"dueSoon": "Demnächst fällig",
|
||
"all": "Alle Verträge",
|
||
"cancelled": "Gekündigt",
|
||
"cancelledHint": "Zählen nicht mehr in der Summe. Sie bleiben stehen, damit du später nachsehen kannst, was du hattest.",
|
||
"empty": "Noch keine Verträge. Trag ein, was regelmässig abgeht – Streaming, Handy, Versicherung, Halbtax.",
|
||
"noRate": "Für {{waehrungen}} liegt kein Kurs vor. Diese Verträge fehlen in der Summe.",
|
||
"name": "Name",
|
||
"amount": "Betrag je Abrechnung",
|
||
"currency": "Währung",
|
||
"interval": "Abgerechnet",
|
||
"every": {
|
||
"1": "monatlich",
|
||
"2": "alle 2 Monate",
|
||
"3": "vierteljährlich",
|
||
"6": "halbjährlich",
|
||
"12": "jährlich"
|
||
},
|
||
"perMonth": "{{betrag}} im Monat",
|
||
"paidFrom": "Bezahlt über",
|
||
"accountNone": "Kein Konto gewählt",
|
||
"category": "Kategorie",
|
||
"categoryNone": "Keine Kategorie",
|
||
"nextDue": "Nächste Fälligkeit",
|
||
"dueIn": "in {{tage}} Tagen",
|
||
"dueToday": "heute fällig",
|
||
"overdue": "seit {{tage}} Tagen überfällig",
|
||
"savingsAccount": "Ich lege monatlich zurück auf",
|
||
"savingsNone": "Nicht ansparen",
|
||
"savingsHint": "Bei diesem Intervall wären das {{betrag}} im Monat. Wähl das Konto, auf das du zurücklegst – dann sprengt die Rechnung nicht einen einzelnen Monat.",
|
||
"savingInto": "spart auf {{name}}",
|
||
"pattern": "Erkennungstext",
|
||
"patternHint": "Woran die Abbuchung im Auszug zu erkennen ist. Auf dem Auszug steht selten der Name, unter dem du den Vertrag kennst. Wird noch nicht ausgewertet – kommt mit der automatischen Zuordnung.",
|
||
"cancelledFlag": "Gekündigt",
|
||
"cancelledFlagHint": "Zählt dann nicht mehr in der Monatssumme, bleibt aber in der Liste stehen.",
|
||
"notes": "Notiz",
|
||
"logo": "Logo",
|
||
"logoUpload": "Bild wählen",
|
||
"logoRemove": "Entfernen",
|
||
"logoHint": "PNG, JPEG, WEBP oder GIF. Wird auf Kachelgrösse gerechnet – lad ruhig das grosse Bild hoch. Solange kein Logo da ist, gilt das Symbol unten.",
|
||
"logoAfterSave": "Ein Logo lässt sich anhängen, sobald der Vertrag gespeichert ist. Bis dahin gilt das Symbol unten.",
|
||
"cropTitle": "Ausschnitt wählen",
|
||
"cropApply": "Übernehmen",
|
||
"cropHint": "Rahmen ziehen zum Verschieben, an den Griffen aufziehen. Was im Rahmen steht, wird gespeichert.",
|
||
"cropUnreadable": "Das ist kein lesbares Bild. PNG, JPEG, WEBP oder GIF gehen.",
|
||
"cropFailed": "Der Ausschnitt liess sich nicht erzeugen.",
|
||
"cropAll": "Ganzes Bild",
|
||
"cropSize": "Ausschnitt {{breite}} × {{hoehe}}"
|
||
},
|
||
"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",
|
||
"asTransfer": "Als Übertrag buchen",
|
||
"transferTitle": "Kontoübertrag",
|
||
"transferIntro": "Kein Geld ausgegeben, nur verschoben. Es entsteht eine Buchung, die beide Salden bewegt und in keiner Auswertung zählt.",
|
||
"transferTargetOut": "Wohin ging das Geld?",
|
||
"transferTargetIn": "Woher kam das Geld?",
|
||
"transferBooked": "Als Übertrag gebucht."
|
||
},
|
||
"mailbox": {
|
||
"title": "Mail Import",
|
||
"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 · {{bekannt}} schon bekannt · {{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 seit {{seit}} gefunden. Liegen die Mails länger zurück, nimm „Älteres nachholen“ – oder prüfe den Ordner.",
|
||
"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",
|
||
"fetchOlder": "Älteres nachholen",
|
||
"every": "alle {{n}} Minuten",
|
||
"manualOnly": "nur auf Knopfdruck",
|
||
"lastPollAt": "zuletzt abgerufen: {{when}}",
|
||
"unclearTitle": "Diese Mails passten, waren aber nicht ganz zu lesen",
|
||
"unclearHint": "Sie liegen im Eingang und warten auf dich – dort trägst du nach, was fehlt."
|
||
},
|
||
"bank": {
|
||
"title": "Bankkonten Anbindung",
|
||
"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 anlegen und dabei unbedingt PRODUCTION wählen, nicht Sandbox – die Sandbox kennt weder N26 noch Revolut. Dann die Schlüsseldatei (.pem) herunterladen.",
|
||
"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. Im eingeschränkten Betrieb gibt die Bank nur heraus, was du bei Enable Banking unter „Activate by linking accounts“ verknüpft hast – dort diese Bank ergänzen und hier neu verbinden.",
|
||
"synced": "{{gebucht}} Buchungen übernommen (ab {{ab}}).",
|
||
"noMapping": "Kein Konto zugeordnet – ordne oben zuerst zu, dann wird abgerufen.",
|
||
"lastSync": "zuletzt {{when}}",
|
||
"neverSynced": "noch nie abgerufen",
|
||
"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? Dabei gehen die Kontozuordnungen verloren. Zum Auffrischen musst du NICHT trennen – such die Bank einfach erneut und verbinde nochmal, die Zuordnungen bleiben dann.",
|
||
"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": "Findest du deine Bank nicht, prüf im Control Panel unter „API applications“ die Zeile „Environment“. Steht dort SANDBOX, ist das die Ursache: Die Sandbox liefert echte Banknamen wie „Aachener Bank“ oder „Nordea“, aber weder N26 noch Revolut. Dafür brauchst du eine Anwendung in PRODUCTION.",
|
||
"range": "Die Liste reicht von „{{von}}“ bis „{{bis}}“.",
|
||
"letters": "Vorhandene Anfangsbuchstaben",
|
||
"truncatedHint": "Fehlen ganze Buchstaben, ist die Liste unvollständig. Fehlt nur deine Bank, sieh unten nach, was unter demselben Anfangsbuchstaben steht.",
|
||
"sameLetter": "Alles, was in der Liste mit „{{buchstabe}}“ beginnt:",
|
||
"pickBankMore": "Die besten {{n}} von {{treffer}} Treffern – such genauer, wenn deine Bank nicht dabei ist:",
|
||
"noAccountForCurrency": "Kein Konto in {{currency}} vorhanden. Leg zuerst eines an, dann lässt sich dieses Bankkonto zuordnen.",
|
||
"rawFields": "Was die Bank geschickt hat",
|
||
"bankBalance": "Saldo laut Bank",
|
||
"balanceMatches": "stimmt mit Certain überein",
|
||
"balanceDiffers": "Certain weicht um {{diff}} ab",
|
||
"fetchBalances": "Salden holen",
|
||
"balancesFetched": "{{n}} Salden aktualisiert.",
|
||
"syncedPending": "{{n}} vorgemerkt – die kommen, sobald die Bank sie bucht.",
|
||
"syncedTransfers": "{{n}} als Übertrag verbunden.",
|
||
"syncHint": "Umsätze angebundener Konten werden direkt gebucht – der Saldo stimmt damit von selbst. Übrig bleibt das Zuordnen der Kategorie.",
|
||
"syncAll": "Alle Konten holen",
|
||
"syncOne": "Umsätze holen",
|
||
"poll": "Automatisch holen",
|
||
"pollUnit": "Minuten",
|
||
"pollHint": "Certain holt die Umsätze dann von selbst und bucht sie. 0 schaltet das ab. Mindestens 360 Minuten: Die Banken müssen nur vier unbeaufsichtigte Abrufe je Konto und Tag zulassen – häufiger lehnen sie ab. Von Hand abrufen darfst du so oft du willst.",
|
||
"pollSaved": "Takt gespeichert.",
|
||
"syncOlder": "Älteres nachholen",
|
||
"syncedDuplicate": "{{n}} standen schon da (aus Datei oder von Hand) und wurden übersprungen.",
|
||
"addTitle": "Weitere Bank verbinden",
|
||
"balanceAvailable": "verfügbarer Saldo, nicht vergleichbar"
|
||
},
|
||
"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",
|
||
"noAccounts": "Verbunden, aber die Bank hat kein Konto übermittelt",
|
||
"noAccountsHint": "Im eingeschränkten Betrieb gibt die Bank nur Konten heraus, die du bei Enable Banking selbst verknüpft hast. Öffne dort deine Anwendung, drück „Activate by linking accounts“ und wähle diese Bank – danach hier noch einmal verbinden.",
|
||
"noAccountsDropped": "Die Bank hat {{n}} Einträge geschickt, aber ohne Kennung – damit lässt sich nichts abrufen. Das ist ein Fall für den Support von Enable Banking; schick mir die Meldung, dann formuliere ich die Anfrage.",
|
||
"uebermittelt": "Die Bank hat {{n}} Konten geschickt.",
|
||
"skipped": "{{n}} Konten konnte Certain nicht übernehmen",
|
||
"skippedHint": "Ihnen fehlt die Kennung, mit der Salden und Umsätze geholt werden. Das steht unten so, wie es angekommen ist – schick es mir, dann sehe ich, was fehlt."
|
||
},
|
||
"transfers": {
|
||
"title": "Mögliche Überträge",
|
||
"intro": "Ein Abgang hier, ein Zugang dort – vermutlich dasselbe Geld. Verbinden ändert keine Buchung: Beide bleiben stehen und zählen nur nicht mehr als Ausgabe und Einnahme. Lösen stellt alles wieder her.",
|
||
"search": "Neu suchen",
|
||
"searched": "{{verknuepft}} verbunden, {{offen}} zum Ansehen.",
|
||
"connect": "Verbinden",
|
||
"ignore": "Ignorieren",
|
||
"hasCategory": "Eine der beiden hat eine Kategorie – sie fällt durchs Verbinden aus der Auswertung.",
|
||
"linked": "Übertrag",
|
||
"release": "Verknüpfung lösen",
|
||
"releaseConfirm": "Die beiden Buchungen bleiben unverändert stehen und zählen danach wieder als Ausgabe und Einnahme.",
|
||
"question": "Übertrag von/nach {{konto}}?"
|
||
},
|
||
"todo": {
|
||
"title": "Zu erledigen",
|
||
"subtitle": "{{n}} offen",
|
||
"allDone": "Nichts offen – alles zugeordnet und gebucht.",
|
||
"from": {
|
||
"bank": "Bank",
|
||
"mail": "Mail",
|
||
"shortcut": "Kurzbefehl",
|
||
"transfer": "Übertrag",
|
||
"csv": "Datei-Import",
|
||
"manuell": "von Hand"
|
||
}
|
||
},
|
||
"dupes": {
|
||
"title": "Gleich aussehende Buchungen ({{n}})",
|
||
"intro": "Diese Zeilen sehen aus wie dieselbe Zahlung – gleiches Konto, gleicher Tag, gleicher Betrag, gleicher Text. Entscheiden musst du: Steht überall dieselbe Kennung der Bank, ist es sicher dieselbe Zahlung. Stehen verschiedene, hat die Bank sie als verschieden gemeldet – dann können es auch wirklich mehrere sein.",
|
||
"count": "{{n}} mal",
|
||
"delete": "Buchung löschen",
|
||
"deleteConfirm": "Diese Buchung wird gelöscht. Kam sie von der Bank, holt kein späterer Abruf sie zurück – der Umsatz gilt dann als erledigt.",
|
||
"noRef": "keine Kennung"
|
||
}
|
||
}
|