feat: Fuenfte Stufe der iOS-App - Kategorien, Schlagwoerter, Bank, zweiter Faktor
Die Nebenraeume haengen unter Einstellungen, nicht als eigene Reiter: Man braucht sie selten, und eine Leiste mit zehn Reitern findet niemand mehr. - Kategorien: anlegen, aendern, archivieren, loeschen - samt Gruppen. Eine Kategorie oeffnet ihre Erkennungswoerter, die sich dort hinzufuegen und entfernen lassen. Darunter steht, was sonst niemand merkt: Sie wirken nur auf kuenftige Importe. - Woerter, die oft korrigiert werden, stehen als Pruefmeldung in den Einstellungen - behalten oder entfernen. - Schlagwoerter: anlegen, umbenennen, umfaerben, loeschen. Neue bekommen reihum eine Farbe, damit nicht alle grau sind. - Einstellungen: Erscheinungsbild, Hauptwaehrung und Budget-Starttag lassen sich jetzt aendern. Ohne Sichern-Knopf - es ist je Zeile genau ein Wert, und das Backend nimmt ihn einzeln entgegen. Dazu der Hinweis, dass sie dem Konto gehoeren und nicht dem Geraet. - Bank: abrufen und Salden auffrischen. Verbinden bleibt am Rechner, die Bank leitet fest dorthin zurueck. Der letzte Fehler der Verbindung steht dabei, sonst ruft man vergeblich ab. - Zweiter Faktor: einrichten in drei Schritten. Auf dem Telefon fuehrt der Weg ueber die otpauth-Adresse direkt in die Authenticator-App statt ueber einen QR-Code, den man sich selbst zeigen muesste. Die Rettungscodes erscheinen einmal; das Blatt laesst sich nicht wegwischen und erst schliessen, wenn man bestaetigt hat, sie gesichert zu haben. Abschalten des zweiten Faktors bleibt bewusst draussen: Es verlangt das Kontopasswort, und die App speichert keines. Ein Vollzugang auf diesem Geraet soll den Schutz des Kontos nicht aufheben koennen. 59 Tests gruen. Texte in Deutsch und Englisch, zeilengleich. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@@ -11,6 +11,9 @@
|
||||
"allgemein.unbekannt" = "Unknown";
|
||||
"allgemein.sichern" = "Save";
|
||||
"allgemein.ok" = "OK";
|
||||
"allgemein.fertig" = "Done";
|
||||
"allgemein.bearbeiten" = "Edit";
|
||||
"allgemein.loeschen" = "Delete";
|
||||
|
||||
/* --- Tabs --- */
|
||||
"reiter.dashboard" = "Overview";
|
||||
@@ -271,3 +274,87 @@
|
||||
"eingang.stand.offen" = "pending";
|
||||
"eingang.stand.unklar" = "unclear";
|
||||
"eingang.stand.verworfen" = "discarded";
|
||||
|
||||
/* --- Manage --- */
|
||||
"nebenraeume.titel" = "Manage";
|
||||
"nebenraeume.kategorien" = "Categories";
|
||||
"nebenraeume.tags" = "Tags";
|
||||
"nebenraeume.bank" = "Bank connection";
|
||||
|
||||
/* --- Categories --- */
|
||||
"kategorien.leer" = "No categories yet.";
|
||||
"kategorien.neu" = "New category";
|
||||
"kategorien.aendern" = "Edit category";
|
||||
"kategorien.neueGruppe" = "New group";
|
||||
"kategorien.gruppe" = "Group";
|
||||
"kategorien.art" = "Kind";
|
||||
"kategorien.ausgaben" = "Expenses";
|
||||
"kategorien.einnahmen" = "Income";
|
||||
"kategorien.archivierteZeigen" = "Show archived";
|
||||
"kategorien.sparen" = "saving";
|
||||
"kategorien.ohneAuswertung" = "not counted";
|
||||
"kategorien.istSparen" = "Spending that is not a loss";
|
||||
"kategorien.istSparenErklaerung" = "For savings and reserves. Spending more than planned is no warning here - it is good news.";
|
||||
"kategorien.ohneAuswertungSchalter" = "Keep out of reports";
|
||||
"kategorien.ohneAuswertungErklaerung" = "For pass-through items. The transactions stay but count in no chart and no total.";
|
||||
"kategorien.loeschen" = "Delete category";
|
||||
"kategorien.loeschenFrage" = "Delete this category?";
|
||||
"kategorien.loeschenErklaerung" = "Only possible while no transaction is attached.";
|
||||
"kategorien.archivierenStattLoeschen" = "Archiving hides the category and keeps its transactions. Deleting only works while none are attached.";
|
||||
"kategorien.gruppeLoeschen" = "Delete group";
|
||||
"kategorien.gruppeLoeschenFrage" = "Delete this group?";
|
||||
"kategorien.gruppeLoeschenErklaerung" = "Only possible while no category is left in it.";
|
||||
"kategorien.erkennungswoerter" = "Match words";
|
||||
"kategorien.wortHinzufuegen" = "Add a word";
|
||||
"kategorien.erkennungErklaerung" = "If one of these words appears in the payee or description, the importer assigns this category. The longest word wins. Applies to future imports only - existing transactions stay as they are.";
|
||||
"kategorien.markiertTitel" = "Words that get corrected a lot";
|
||||
"kategorien.markiertErklaerung" = "These words often assign the wrong category. Keep them if those were one-offs - remove them if the word does not work.";
|
||||
"kategorien.markiertZaehler" = "applied %1$d times, corrected %2$d times";
|
||||
"kategorien.behalten" = "Keep";
|
||||
"kategorien.entfernen" = "Remove";
|
||||
|
||||
/* --- Tags --- */
|
||||
"tags.neu" = "New tag";
|
||||
"tags.erklaerung" = "Tags sit across categories: one transaction can carry several. Good for everything that does not fit a category - Iceland trip, tax deductible, to be reimbursed.";
|
||||
|
||||
/* --- Settings --- */
|
||||
"einstellungen.erscheinungsbild" = "Appearance";
|
||||
"einstellungen.system" = "System";
|
||||
"einstellungen.hell" = "Light";
|
||||
"einstellungen.dunkel" = "Dark";
|
||||
"einstellungen.serverweitErklaerung" = "These settings belong to your account, not just this device - the browser follows them too.";
|
||||
|
||||
/* --- Two-factor setup --- */
|
||||
"zweifaktor.stand" = "Two-factor";
|
||||
"zweifaktor.aktiv" = "Active";
|
||||
"zweifaktor.inaktiv" = "Not set up";
|
||||
"zweifaktor.aktivErklaerung" = "Signing in through the browser asks for a code as well. Turning it off only works on the desktop - it needs your password, and this app deliberately stores none.";
|
||||
"zweifaktor.inaktivErklaerung" = "A second factor protects your account even if someone knows your password.";
|
||||
"zweifaktor.einrichten" = "Set up";
|
||||
"zweifaktor.schrittEins" = "Step 1: add it to your authenticator app";
|
||||
"zweifaktor.schrittZwei" = "Step 2: confirm with a code";
|
||||
"zweifaktor.inAppOeffnen" = "Open in authenticator app";
|
||||
"zweifaktor.geheimnis" = "Secret";
|
||||
"zweifaktor.geheimnisErklaerung" = "The button opens the app directly. If that does not work, type the secret in by hand.";
|
||||
"zweifaktor.code" = "Six-digit code";
|
||||
"zweifaktor.aktivieren" = "Turn on";
|
||||
"zweifaktor.rettungscodes" = "Recovery codes";
|
||||
"zweifaktor.rettungscodesErklaerung" = "Each code works once instead of an app code. They appear here and nowhere else - save them now.";
|
||||
"zweifaktor.codesSichern" = "Save codes";
|
||||
"zweifaktor.codesNotiert" = "I have saved them";
|
||||
|
||||
/* --- Bank --- */
|
||||
"bank.leerTitel" = "No bank connection";
|
||||
"bank.leerErklaerung" = "Connecting a bank only works on the desktop - the bank redirects there. You can fetch from here afterwards.";
|
||||
"bank.land" = "Country";
|
||||
"bank.zuletzt" = "Last fetched";
|
||||
"bank.nie" = "never";
|
||||
"bank.gueltigBis" = "Valid until";
|
||||
"bank.takt" = "Automatically";
|
||||
"bank.alleNMinuten" = "every %d minutes";
|
||||
"bank.abrufen" = "Fetch now";
|
||||
"bank.saldenAuffrischen" = "Refresh balances only";
|
||||
"bank.saldenAufgefrischt" = "Balances refreshed.";
|
||||
"bank.abrufFertig" = "Fetch complete";
|
||||
"bank.abrufErgebnis" = "Fetched %1$d transactions, %2$d of them new.";
|
||||
"bank.ohneZuordnung" = "This connection has no account assigned yet. That is done on the desktop.";
|
||||
|
||||
Reference in New Issue
Block a user