halkyon/packages/halkyon_app/lib/l10n/halkyon_app_de.arb

236 lines
19 KiB
Text
Raw Normal View History

{
"@@locale": "de",
"tryAgain": "Erneut versuchen",
"instanceWelcome": "Willkommen bei {app}",
"instanceBuiltInTagline": "In der App voreingestellt",
"instanceAnother": "Andere Instanz",
"instanceAnotherTagline": "Gib ihre Adresse ein",
"instanceAddress": "Adresse der Instanz",
"instanceAddressInvalid": "Das ist keine Adresse.",
"instanceAddressRequired": "Gib die Adresse einer Instanz ein.",
"instanceContinue": "Weiter",
"instanceUnreachable": "Unter {name} antwortet keine Instanz von {app}.",
"instanceUseBuiltIn": "{name} verwenden",
"instanceOpenFailed": "Die App auf {name} konnte nicht geöffnet werden.",
"instanceDataAndBackupsIn": "Daten und Sicherungen: {place}",
"instanceDataIn": "Daten: {place}",
"instanceBackupsIn": "Sicherungen: {place}",
"instanceNoBackups": "Keine Sicherungen",
"instanceEuropeanUnion": "Europäische Union",
"instanceCountryInEu": "{country} (EU)",
"instanceSubdivisionOf": "{subdivision}, {country}",
"accountsTitle": "Konten",
"accountAdd": "Konto hinzufügen",
"accountAddSubtitle": "Wähle die Instanz für das Konto, das du hinzufügst.",
"accountSignedIn": "Angemeldet",
"accountAnonymous": "Anonym",
"accountRemoveTooltip": "Konto entfernen",
"accountRemoveTitle": "Konto entfernen?",
"accountRemoveMessage": "Entfernt das Konto auf {name} von diesem Gerät, mit allem, was das Gerät davon hat. Was es synchronisiert hat, bleibt auf {name}: Melde dich dort wieder an, um es wiederzuhaben. In ein anonymes Konto kann man sich nicht wieder anmelden.",
"accountRemoveConfirm": "Entfernen",
"accountSignedInOn": "Angemeldet auf {instance}",
"accountAnonymousOn": "Anonym auf {instance}",
"accountSwitch": "Konto wechseln",
"accountSignOut": "Abmelden",
"accountSignOutTitle": "Abmelden?",
"accountDelete": "Konto löschen",
"accountDeleteTitle": "Dein Konto löschen?",
"aboutSourceCode": "Der Quellcode dessen, was diese Instanz ausführt:",
"aboutSourceUnreachable": "Diese Instanz war nicht erreichbar, um nach ihrem Quellcode zu fragen.",
"sessionUnreachable": "Der Server war nicht erreichbar.",
"personDataFailed": "Die Daten dieses Geräts konnten nicht geöffnet werden.",
"startSignedOut": "Abgemeldet",
"startOn": "Starte auf {instance}:",
"startWithGitHub": "Mit GitHub anmelden",
"startWithoutAccount": "Ohne Konto starten",
"startAnonymous": "Dein Fortschritt wird auf diesem Gerät gespeichert. Melde dich an, um ihn zu behalten.",
"startGitHubFailed": "Anmeldung mit GitHub fehlgeschlagen.",
"startNoGitHubAccount": "Noch kein Konto hier meldet sich mit diesem GitHub-Konto an.",
"startOtherInstance": "Andere Instanz verwenden",
"syncTitle": "Synchronisierung",
"syncNow": "Jetzt synchronisieren",
"syncStateSyncing": "Wird synchronisiert…",
"syncStateSynced": "Alles synchronisiert",
"syncStateFailing": "Synchronisierung schlägt fehl",
"syncStateNotYet": "Noch nicht synchronisiert",
"syncStateMismatch": "Diese App kann nicht mit {server} synchronisieren",
"syncMismatchDetail": "Aktualisiere die App. Ist sie schon aktuell, muss der Server aktualisiert werden. Was du bis dahin tust, bleibt auf diesem Gerät und wird danach synchronisiert.",
"syncLastCompleted": "Zuletzt abgeschlossen um {time}",
"syncLastFailed": "Letzter Versuch fehlgeschlagen um {time}",
"syncNoRunYet": "Seit dem Start der App wurde noch keine Synchronisierung abgeschlossen",
"syncPending": "{count, plural, =1{1 Änderung wartet auf die Synchronisierung} other{{count} Änderungen warten auf die Synchronisierung}}",
"syncTroubleLabel": "Synchronisierung benötigt Aufmerksamkeit",
"syncMismatchBanner": "Diese App kann nicht mehr mit {server} synchronisieren. Aktualisiere sie, um weiter zu synchronisieren.",
feat(app): sign in with a password and TOTP on the device ADR 0017, step 3: halkyon_app's side, which Learn and Todo take. - The account's cryptography on the device (`SodiumAccountCrypto`): halkyon_keys and SRP's client half, each step on an isolate of its own. sodium hands out results as views of native memory its finalizers free once the isolate that made them ends, so everything crossing back is copied first: a view read freed memory and crashed the process. - `PasswordGateway` on the module's endpoints (steps without a session through a client holding none; an authenticator set up with a session granted but not yet the device's), and `PasswordRepository` running the flows: signing in (M2 checked, the keys opened before anything is trusted), signing up, a password for someone signed in, an account never finished, the authenticators, recovery codes, changing the password, a new recovery phrase, and getting back in. - The unlocked keys in the system's keyring per instance and person (`SecureAccountKeyStore`), gone once another person signs in or nobody, and with the instance's removal. - The screens: the start screen's Sign in and Create an account (and when GitHub sign-in ends), the sign-in sheet (codes, recovery codes, an account never finished, a lost authenticator), the account's setup (the recovery phrase shown once, three random words typed back before anything reaches the instance; the authenticator's QR code, drawn with pub.dev's qr; the recovery codes), getting back in, and the account section (`AccountSecuritySection`). - `FileSaver` moves from Learn into halkyon_app, for the phrase and the codes in Todo too; `AppDependencies` names it and `passwords`. - halkyon_keys rebuilds account keys from the secret keys a device kept; the key proof's message is in halkyon_base_client, checked against the register's. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
2026-10-20 15:42:45 +02:00
"syncMismatchMore": "Mehr",
"startSignIn": "Anmelden",
"startCreateAccount": "Konto erstellen",
"startGitHubEnds": "Die Anmeldung mit GitHub endet am {date}.",
"passwordAddress": "E-Mail-Adresse",
"passwordPassword": "Passwort",
"passwordNewPassword": "Neues Passwort",
"passwordCurrent": "Aktuelles Passwort",
"passwordRepeat": "Neues Passwort wiederholen",
"passwordsDiffer": "Die beiden Passwörter stimmen nicht überein.",
"passwordShow": "Passwort anzeigen",
"passwordHide": "Passwort verbergen",
"passwordContinue": "Weiter",
"passwordBack": "Zurück",
"passwordDone": "Fertig",
"passwordCopy": "Kopieren",
"passwordCopied": "Kopiert.",
"passwordSave": "Als Datei speichern",
"passwordQrCode": "QR-Code für deine Authenticator-App",
"passwordMailCode": "Code aus der E-Mail",
"passwordMailCodeSent": "Wir haben dir einen Code an {address} geschickt. Er gilt 15 Minuten.",
"passwordResendCode": "Neuen Code senden",
"passwordTotpCode": "Code aus deiner Authenticator-App",
"passwordRecoveryCode": "Wiederherstellungscode",
"passwordUseRecoveryCode": "Stattdessen einen Wiederherstellungscode verwenden",
"passwordUseTotpCode": "Stattdessen deine Authenticator-App verwenden",
"passwordUnlocking": "Dein Passwort wird auf diesem Gerät entsperrt …",
"passwordMakingKeys": "Deine Schlüssel werden auf diesem Gerät erstellt …",
"passwordSignInTitle": "Anmelden",
"passwordSignInAction": "Anmelden",
"passwordSignInIntro": "Mit der E-Mail-Adresse und dem Passwort deines Kontos auf {instance}.",
"passwordSecondFactorIntro": "Gib den Code ein, den deine Authenticator-App für {instance} zeigt.",
"passwordRecoveryCodeIntro": "Gib einen deiner Wiederherstellungscodes ein. Jeder meldet einmal an.",
"passwordForgot": "Passwort vergessen?",
"passwordOtherPassword": "Adresse oder Passwort ändern",
"passwordLostAuthenticator": "Authenticator verloren?",
"passwordLostAuthenticatorTitle": "Authenticator verloren",
"passwordLostAuthenticatorIntro": "Mit einem Wiederherstellungscode meldest du dich wie gewohnt an. Ohne einen kannst du deine Authenticators zurücksetzen lassen: Das wirkt 72 Stunden später, und eine Anmeldung mit einem Code stoppt es bis dahin.",
"passwordResetWithMail": "Mit einem Code per E-Mail zurücksetzen",
"passwordResetWithMailHint": "Wir schicken einen Code an {address}.",
"passwordResetWithPhrase": "Mit deiner Wiederherstellungsphrase zurücksetzen",
"passwordResetWithPhraseHint": "Die 24 Wörter, die du dir notiert hast.",
"passwordSignInWithoutCode": "Ohne Code anmelden",
"passwordSignInWithoutCodeHint": "Sobald ein Zurücksetzen, um das du gebeten hast, wirksam ist.",
"passwordResetAction": "Zurücksetzen",
"passwordAuthenticatorResetAt": "Deine Authenticators werden am {date} zurückgesetzt. Wir haben dir eine E-Mail geschickt: Warst du es nicht, melde dich vorher mit einem Code an, um es zu stoppen. Danach meldest du dich nur mit deinem Passwort an und richtest einen neuen Authenticator ein.",
"passwordUnfinishedIntro": "Dein Konto wurde nie fertig eingerichtet. Wir haben dir einen Code an {address} geschickt: Damit meldest du dich an und richtest einen Authenticator ein.",
"passwordPhraseField": "Wiederherstellungsphrase",
"passwordPhraseFieldHint": "Die 24 Wörter, durch Leerzeichen getrennt",
"passwordPhraseFieldIntro": "Gib deine Wiederherstellungsphrase ein: Sie beweist, dass das Konto deines ist.",
"passwordAuthenticatorTitle": "Authenticator einrichten",
"passwordAuthenticatorIntro": "Jede Anmeldung braucht einen Code aus einer Authenticator-App wie Aegis, 2FAS oder Proton Authenticator. Scanne diesen Code damit oder tippe den Schlüssel ein.",
"passwordAuthenticatorKey": "Schlüssel",
"passwordAuthenticatorOpen": "In deiner Authenticator-App öffnen",
"passwordAuthenticatorNoApp": "Keine App auf diesem Gerät öffnet ihn. Scanne den Code oder tippe den Schlüssel ein.",
"passwordAuthenticatorCodeIntro": "Gib dann den Code ein, den sie zeigt.",
"passwordAuthenticatorOwnerIntro": "Bestätige zum Hinzufügen, dass du es bist: mit deinem Passwort und einem Code von einem bisherigen Authenticator.",
feat(app): sign in with a password and TOTP on the device ADR 0017, step 3: halkyon_app's side, which Learn and Todo take. - The account's cryptography on the device (`SodiumAccountCrypto`): halkyon_keys and SRP's client half, each step on an isolate of its own. sodium hands out results as views of native memory its finalizers free once the isolate that made them ends, so everything crossing back is copied first: a view read freed memory and crashed the process. - `PasswordGateway` on the module's endpoints (steps without a session through a client holding none; an authenticator set up with a session granted but not yet the device's), and `PasswordRepository` running the flows: signing in (M2 checked, the keys opened before anything is trusted), signing up, a password for someone signed in, an account never finished, the authenticators, recovery codes, changing the password, a new recovery phrase, and getting back in. - The unlocked keys in the system's keyring per instance and person (`SecureAccountKeyStore`), gone once another person signs in or nobody, and with the instance's removal. - The screens: the start screen's Sign in and Create an account (and when GitHub sign-in ends), the sign-in sheet (codes, recovery codes, an account never finished, a lost authenticator), the account's setup (the recovery phrase shown once, three random words typed back before anything reaches the instance; the authenticator's QR code, drawn with pub.dev's qr; the recovery codes), getting back in, and the account section (`AccountSecuritySection`). - `FileSaver` moves from Learn into halkyon_app, for the phrase and the codes in Todo too; `AppDependencies` names it and `passwords`. - halkyon_keys rebuilds account keys from the secret keys a device kept; the key proof's message is in halkyon_base_client, checked against the register's. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
2026-10-20 15:42:45 +02:00
"passwordExistingCode": "Code von einem bisherigen Authenticator",
"passwordRecoveryCodesTitle": "Wiederherstellungscodes",
"passwordRecoveryCodesIntro": "Jeder meldet dich einmal anstelle eines Codes aus deinem Authenticator an, falls du ihn verlierst. Bewahre sie auf, wo nur du sie findest: Sie werden nur jetzt angezeigt.",
"passwordCodesKept": "Ich habe sie aufbewahrt",
"passwordPhraseTitle": "Deine Wiederherstellungsphrase",
"passwordPhraseIntro": "Diese 24 Wörter öffnen die Schlüssel deines Kontos, falls du dein Passwort vergisst: Ohne sie ist Verschlüsseltes verloren. Schreib sie der Reihe nach auf und bewahre sie auf, wo nur du sie findest. Sie werden nur jetzt angezeigt.",
"passwordPhraseWrittenDown": "Ich habe sie aufgeschrieben",
"passwordPhraseCheckTitle": "Wiederherstellungsphrase prüfen",
"passwordPhraseCheckIntro": "Tippe die gefragten Wörter aus deiner Notiz ein.",
"passwordPhraseWord": "Wort {number}",
"passwordPhraseWrong": "Das sind nicht die Wörter. Sieh noch einmal in deine Notiz.",
"passwordPhraseShowAgain": "Phrase noch einmal zeigen",
"passwordCreateTitle": "Konto erstellen",
"passwordCreateIntro": "Auf {instance}, mit deiner E-Mail-Adresse, einem Passwort und einer Authenticator-App für den Code, den jede Anmeldung braucht.",
"passwordSetUpTitle": "Passwort einrichten",
"passwordSetUpIntro": "Melde dich mit deiner E-Mail-Adresse, einem Passwort und einer Authenticator-App an, auf diesem Gerät und anderen. Alles, was du hast, bleibt.",
"passwordChooseIntro": "Wähle ein Passwort. Es verlässt dieses Gerät nie: Die Instanz kann es nicht lesen und nicht zurücksetzen, ohne dass verloren geht, was es schützt.",
"passwordFinishResetTitle": "Zurücksetzen abschließen",
"passwordFinishResetIntro": "72 Stunden nachdem du um das Zurücksetzen deines Kontos gebeten hast, schließt du es hier mit einem neuen Code per E-Mail ab.",
"passwordFinishResetHavePhrase": "Ich habe meine Wiederherstellungsphrase",
"passwordFinishResetKeepsKeys": "Dein Konto behält seine Schlüssel: Nichts Verschlüsseltes geht verloren.",
"passwordFinishResetNewKeys": "Ohne deine Wiederherstellungsphrase bekommt dein Konto neue Schlüssel: Was mit den alten verschlüsselt war, ist verloren.",
"passwordRecoveryTitle": "Zurück in dein Konto",
"passwordRecoveryWithPhrase": "Ich habe meine Wiederherstellungsphrase",
"passwordRecoveryWithPhraseHint": "Setze sofort ein neues Passwort. Alles bleibt.",
"passwordRecoveryWithPhraseIntro": "Deine Wiederherstellungsphrase öffnet die Schlüssel deines Kontos, die dann dein neues Passwort schützt. Ein Code aus deinem Authenticator oder ein Wiederherstellungscode bestätigt es.",
"passwordRecoveryNoCodeHint": "Auch deinen Authenticator verloren? Setze dein Konto 72 Stunden später mit deiner Wiederherstellungsphrase zurück: Sie behält alles.",
"passwordRecoveryWithoutPhrase": "Mein Konto zurücksetzen",
"passwordRecoveryWithoutPhraseHint": "Wirkt 72 Stunden später. Ohne deine Wiederherstellungsphrase ist Verschlüsseltes verloren.",
"passwordRecoveryStartIntro": "Wir schicken einen Code an deine Adresse. Dein Konto kann dann 72 Stunden später zurückgesetzt werden; eine Anmeldung mit deinem Passwort stoppt es bis dahin.",
"passwordRecoveryFinish": "Zurücksetzen abschließen",
"passwordRecoveryFinishHint": "72 Stunden nachdem du darum gebeten hast.",
"passwordResetStarted": "Dein Konto kann ab dem {date} zurückgesetzt werden. Wir haben dir eine E-Mail geschickt: Warst du es nicht, melde dich vorher mit deinem Passwort an, um es zu stoppen.",
"passwordSectionTitle": "Passwort und Authenticator",
"passwordSectionFailed": "Wie dein Konto sich anmeldet, konnte nicht gelesen werden.",
"passwordSectionGitHubEnds": "Die Anmeldung mit GitHub endet am {date}. Richte bis dahin ein Passwort ein, um dein Konto zu behalten.",
"passwordSectionSetUp": "Passwort einrichten",
"passwordSectionSetUpHint": "Melde dich mit deiner E-Mail-Adresse, einem Passwort und einer Authenticator-App an.",
"passwordSectionUnfinished": "Fertig einrichten: Authenticator hinzufügen",
"passwordSectionUnfinishedHint": "Dein Passwort meldet dich an, sobald ein Authenticator eingerichtet ist.",
"passwordSectionChange": "Passwort ändern",
"passwordSectionKeysMissing": "Melde dich auf diesem Gerät mit deinem Passwort an, um das zu ändern.",
"passwordSectionNotConfirmed": "Noch nicht eingerichtet",
"passwordSectionRemove": "{name} entfernen?",
"passwordSectionRemoveIntro": "Gib zur Bestätigung dein Passwort und einen Code aus einem deiner Authenticators ein.",
feat(app): sign in with a password and TOTP on the device ADR 0017, step 3: halkyon_app's side, which Learn and Todo take. - The account's cryptography on the device (`SodiumAccountCrypto`): halkyon_keys and SRP's client half, each step on an isolate of its own. sodium hands out results as views of native memory its finalizers free once the isolate that made them ends, so everything crossing back is copied first: a view read freed memory and crashed the process. - `PasswordGateway` on the module's endpoints (steps without a session through a client holding none; an authenticator set up with a session granted but not yet the device's), and `PasswordRepository` running the flows: signing in (M2 checked, the keys opened before anything is trusted), signing up, a password for someone signed in, an account never finished, the authenticators, recovery codes, changing the password, a new recovery phrase, and getting back in. - The unlocked keys in the system's keyring per instance and person (`SecureAccountKeyStore`), gone once another person signs in or nobody, and with the instance's removal. - The screens: the start screen's Sign in and Create an account (and when GitHub sign-in ends), the sign-in sheet (codes, recovery codes, an account never finished, a lost authenticator), the account's setup (the recovery phrase shown once, three random words typed back before anything reaches the instance; the authenticator's QR code, drawn with pub.dev's qr; the recovery codes), getting back in, and the account section (`AccountSecuritySection`). - `FileSaver` moves from Learn into halkyon_app, for the phrase and the codes in Todo too; `AppDependencies` names it and `passwords`. - halkyon_keys rebuilds account keys from the secret keys a device kept; the key proof's message is in halkyon_base_client, checked against the register's. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
2026-10-20 15:42:45 +02:00
"passwordSectionRemoveAction": "Entfernen",
"passwordSectionAddAuthenticator": "Authenticator hinzufügen",
"passwordSectionRecoveryCodes": "Neue Wiederherstellungscodes",
"passwordSectionRecoveryCodesHint": "Die alten gelten dann nicht mehr.",
"passwordSectionNewPhrase": "Neue Wiederherstellungsphrase",
"passwordSectionPhraseHint": "Deine alte Phrase gilt dann nicht mehr.",
"passwordChangeTitle": "Passwort ändern",
"passwordChangeIntro": "Deine anderen Geräte werden abgemeldet. Deine Schlüssel bleiben: Nichts geht verloren.",
"passwordChangeAction": "Passwort ändern",
"passwordChanged": "Passwort geändert. Deine anderen Geräte sind abgemeldet.",
"passwordNewCodesIntro": "Gib dein Passwort und einen Code aus deiner Authenticator-App ein. Deine alten Wiederherstellungscodes gelten dann nicht mehr.",
feat(app): sign in with a password and TOTP on the device ADR 0017, step 3: halkyon_app's side, which Learn and Todo take. - The account's cryptography on the device (`SodiumAccountCrypto`): halkyon_keys and SRP's client half, each step on an isolate of its own. sodium hands out results as views of native memory its finalizers free once the isolate that made them ends, so everything crossing back is copied first: a view read freed memory and crashed the process. - `PasswordGateway` on the module's endpoints (steps without a session through a client holding none; an authenticator set up with a session granted but not yet the device's), and `PasswordRepository` running the flows: signing in (M2 checked, the keys opened before anything is trusted), signing up, a password for someone signed in, an account never finished, the authenticators, recovery codes, changing the password, a new recovery phrase, and getting back in. - The unlocked keys in the system's keyring per instance and person (`SecureAccountKeyStore`), gone once another person signs in or nobody, and with the instance's removal. - The screens: the start screen's Sign in and Create an account (and when GitHub sign-in ends), the sign-in sheet (codes, recovery codes, an account never finished, a lost authenticator), the account's setup (the recovery phrase shown once, three random words typed back before anything reaches the instance; the authenticator's QR code, drawn with pub.dev's qr; the recovery codes), getting back in, and the account section (`AccountSecuritySection`). - `FileSaver` moves from Learn into halkyon_app, for the phrase and the codes in Todo too; `AppDependencies` names it and `passwords`. - halkyon_keys rebuilds account keys from the secret keys a device kept; the key proof's message is in halkyon_base_client, checked against the register's. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
2026-10-20 15:42:45 +02:00
"passwordNewPhraseIntro": "Deine neue Wiederherstellungsphrase. Schreib die 24 Wörter der Reihe nach auf: Sobald du sie bestätigst, öffnet deine alte Phrase nichts mehr.",
"passwordPhraseKept": "Neue Wiederherstellungsphrase gesetzt. Die alte gilt nicht mehr.",
"passwordWrongCredentials": "Die Adresse, das Passwort oder der Code stimmt nicht.",
"passwordTooManyAttempts": "Zu viele Versuche. Versuch es in einer Stunde wieder.",
"passwordSetupIncomplete": "Dein Konto wurde nie fertig eingerichtet: Richte einen Authenticator ein.",
"passwordNotDue": "Das wirkt am {date}.",
"passwordNotDueYet": "Das wirkt noch nicht.",
"passwordNoReset": "Für diese Adresse wartet kein Zurücksetzen.",
"passwordExists": "Das Konto dieser Adresse hat schon ein Passwort. Melde dich damit an oder komm zurück in dein Konto, falls du es vergessen hast.",
"passwordAddressTaken": "Diese Adresse gehört zu einem anderen Konto.",
"passwordNoAddress": "Dein Konto hat noch keine E-Mail-Adresse.",
"passwordNoPassword": "Dieses Konto hat kein Passwort.",
"passwordWrongCode": "Dieser Code stimmt nicht. Gib den ein, den deine App gerade zeigt.",
"passwordLastAuthenticator": "Dein letzter Authenticator kann nicht weg: Jede Anmeldung braucht einen.",
"passwordTooManyAuthenticators": "Dein Konto hat so viele Authenticators, wie es darf. Entferne zuerst einen.",
"passwordUnknownAuthenticator": "Dieser Authenticator ist weg.",
"passwordInvalidSetup": "Die Instanz hat nicht angenommen, was dieses Gerät erstellt hat. Aktualisiere die App oder versuch es noch einmal.",
"passwordChallengeExpired": "Das hat zu lange gedauert. Versuch es noch einmal.",
"passwordUnavailable": "Diese Instanz bietet keine Anmeldung mit Passwort.",
"passwordNotAnAddress": "Das ist keine E-Mail-Adresse.",
"passwordTooManyCodes": "Zu viele Codes angefordert. Versuch es in einer Stunde wieder.",
"passwordWrongMailCode": "Dieser Code stimmt nicht.",
"passwordTooManyMailTries": "Zu viele falsche Codes. Fordere einen neuen an.",
"passwordMailCodeExpired": "Dieser Code gilt nicht mehr. Fordere einen neuen an.",
"passwordMailFailed": "Die Instanz konnte die E-Mail nicht senden. Versuch es später noch einmal.",
"passwordOtherAddressLinked": "Dein Konto hat eine andere E-Mail-Adresse.",
"passwordNotAPhrase": "Das ist keine Wiederherstellungsphrase: Prüf jedes Wort und ihre Anzahl.",
"passwordPhraseDoesNotFit": "Die Adresse oder die Wiederherstellungsphrase stimmt nicht.",
"passwordUnusable": "Dieses Passwort geht nicht: Es ist leer oder enthält Zeichen, die kein Text sind.",
"passwordInstanceUnproven": "Die Instanz konnte nicht beweisen, dass sie dein Passwort kennt, daher vertraut dieses Gerät ihr nicht. Versuch es noch einmal; passiert es wieder, ist die Instanz nicht die, die sie zu sein behauptet.",
"passwordKeysMissing": "Die Schlüssel deines Kontos sind nicht auf diesem Gerät. Melde dich hier ab und mit deinem Passwort wieder an.",
"passwordUnsafeCosts": "Die Instanz wollte dein Passwort auf eine Weise prüfen lassen, die kein Konto nutzt, daher wurde nichts gesendet. Passiert es wieder, ist die Instanz nicht die, die sie zu sein behauptet.",
"passwordFailed": "Die Instanz war nicht erreichbar. Prüf die Verbindung und versuch es noch einmal.",
"passwordMinLength": "Mindestens {count} Zeichen",
fix(auth): codes wait after ten wrong in a row, and the owner is told Whoever knew the password could guess codes at 10 an hour forever, unnoticed, each guess checked against every authenticator (the second reading's M4). Every code an account's second factor refuses after a right password (sign-in, a phrase's reset, a change) or from a signed-in device (removing an authenticator, new recovery codes, the code from one confirmed before) now counts, per account, from every network; after every tenth in a row no code is taken (codesWait, saying until when), an hour, then twice as long each time, a day at the most (longestCodeWait, second_factor_waits.dart): at a day, ten guesses a day still have about a 1 % chance a year against one authenticator, so the first wait mails the owner that someone knows their password. The instance keeps no address, so sign-in and the phrase's reset now send the address the device typed (and its language), used only for that mail after its hash is checked against the account's. A code accepted clears it all. Migration (module, Learn's and Todo's servers, Learn's device schema): CREATE TABLE "second_factor_failures" ("id" bigserial PRIMARY KEY, "authUserId" uuid NOT NULL, "failures" bigint NOT NULL, "waits" bigint NOT NULL, "waitUntil" timestamp, "updatedAt" timestamp NOT NULL) with a unique index on "authUserId": a new table, nothing touched. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
2026-10-20 21:47:38 +02:00
"passwordTooShort": "Ein neues Passwort braucht mindestens {count} Zeichen: Sollte die Datenbank der Instanz je nach außen gelangen, wird ein kurzes zuerst erraten.",
"passwordCodesWait": "Zu viele falsche Codes hintereinander: Bis {date} wird kein Code angenommen. Waren es nicht deine, kennt jemand dein Passwort: Ändere es dann.",
fix(auth): a session's wrong codes end the session, not the account's codes Wrong codes for removing an authenticator, new recovery codes or confirming one counted toward the account's waits (the re-review's third finding): a stolen session alone, without the password, could keep the owner's codes waiting for up to a day at a time, renewed without end, holding them out of signing in and of changing the password, the way to end that session, and nobody was mailed. Those codes now count per session, where the session is (the register's own, or a member's, which forwards the code): each try counted before its code is checked (one statement, so tries sent at once count each), a code accepted clearing the count, and the tenth wrong in a row ending the session (sessionEnded; the device says it was signed out). A try that checked no code (a refusal of something else) is taken back. The account's waits now count only codes after a right password, and the per-account ten tries an hour, which a session could fill as well, go. Migration (module, Learn's and Todo's servers, Learn's device schema): CREATE TABLE "session_code_failures" ("id" bigserial PRIMARY KEY, "sessionId" uuid NOT NULL, "authUserId" uuid NOT NULL, "failures" bigint NOT NULL, "updatedAt" timestamp NOT NULL) with a unique index on "sessionId": a new table, nothing touched. Its rows go with a code accepted, with the person, and hourly once their session is gone. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
2026-10-20 22:53:20 +02:00
"passwordDeleteIntro": "Dein Konto wird mit allem darin gelöscht, in jedem Dienst dieser Instanz. Gib zur Bestätigung dein Passwort und einen Code deiner Authenticator-App ein.",
"passwordSessionEnded": "Zu viele falsche Codes hintereinander von diesem Gerät: Es wurde abgemeldet. Melde dich wieder mit deinem Passwort und einem Code an.",
"passwordAddressUnknown": "Gib die E-Mail-Adresse deines Kontos ein: Dorthin geht der Code.",
"passwordDeleteIntroByMail": "Dein Konto wird mit allem darin gelöscht, in jedem Dienst dieser Instanz. Keiner seiner Authenticators funktioniert gerade, daher bestätigt es ein Code per E-Mail: Gib dein Passwort ein, dann den Code, den wir an deine Adresse schicken.",
"passwordDeleteSendCode": "Code per E-Mail schicken",
"passwordChangedSignInAgain": "Dein Passwort wurde geändert, aber dieser Dienst konnte dich gerade noch nicht anmelden. Melde dich wieder mit dem neuen Passwort an.",
"passwordSignInAgain": "Um einem Konto, das sich mit GitHub anmeldet, ein Passwort zu geben, melde dich erst wieder mit GitHub an: Es ist mehr als ein paar Minuten her.",
"passwordSignInWithGitHubAgain": "Wieder mit GitHub anmelden",
"passwordOfferTitle": "Richte ein Passwort ein",
"passwordOfferBody": "Die Anmeldung mit GitHub endet. Richte ein Passwort und eine Authenticator-App ein, um dein Konto zu behalten.",
"passwordOfferLater": "Später",
"passwordAuthenticatorPasswordIntro": "Bestätige zum Hinzufügen mit deinem Passwort, dass du es bist.",
"passwordWarningTitle": "Jemand hat dein Passwort ausprobiert",
"passwordWarningBody": "Am {date} hat ein bei deinem Konto angemeldetes Gerät zehnmal hintereinander ein falsches Passwort oder einen falschen Code gesendet und wurde abgemeldet. Warst du das nicht, hat vielleicht jemand anderes dieses Gerät oder seine Sitzung: Ändere dein Passwort.",
"passwordWarningDismiss": "Ausblenden",
"passwordWarningLater": "Später erinnern",
"passwordResetsTitle": "Ein Zurücksetzen steht an",
"passwordResetsAuthenticator": "Am {date} werden deine Authenticator-Apps entfernt: Jemand hat es mit deinem Passwort angefordert. Warst du das nicht, sag es ab und ändere dein Passwort.",
"passwordResetsAccount": "Am {date} bekommt dein Konto ein neues Passwort und neue Schlüssel, und was mit den alten verschlüsselt ist, geht verloren: Jemand hat es mit einem Code per Mail angefordert. Warst du das nicht, sag es ab.",
"passwordResetsCallOff": "Absagen",
"passwordCallOffTitle": "Zurücksetzen absagen",
"passwordCallOffIntro": "Dein Passwort und ein Code sagen jedes anstehende Zurücksetzen ab.",
"passwordSectionGitHubEndsDeletes": "Die Anmeldung mit GitHub endet am {date}. Dann wird dein Konto mit allem darin gelöscht, es sei denn, du richtest vorher ein Passwort ein."
}