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

282 lines
24 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.",
"instanceAddressInsecure": "{app} erreicht Instanzen nur über HTTPS, damit unterwegs niemand mitliest oder verändert, was es sendet. Frag nach der HTTPS-Adresse der Instanz.",
"instanceInsecure": "{name} wird über einfaches HTTP erreicht, wo unterwegs mitgelesen und verändert werden könnte, was {app} sendet. Deshalb öffnet {app} es nicht mehr. Das Konto bleibt auf {name} und auf diesem Gerät. Nutze eine andere Instanz oder entferne diese von diesem Gerät.",
"instanceInsecureUseAnother": "Andere Instanz nutzen",
"instanceInsecureRemove": "Von diesem Gerät entfernen",
"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?",
"accountSignOutFailed": "Abmelden auf diesem Gerät hat nicht geklappt. Versuch es noch einmal.",
"accountDeleteFailed": "Dein Konto wurde nicht gelöscht: Die Instanz war nicht erreichbar. Versuch es noch einmal.",
"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.",
"gitHubCreateAccountInstead": "Erstelle stattdessen ein Konto mit deiner E-Mail-Adresse und einem Passwort.",
"gitHubNoAccountSetUpPassword": "Noch kein Konto hier meldet sich mit diesem GitHub-Konto an. Richte stattdessen ein Passwort ein, um deinen Fortschritt zu behalten.",
"gitHubUsePassword": "Dieses Konto meldet sich jetzt mit seiner E-Mail-Adresse und seinem Passwort an, nicht mehr mit GitHub.",
"gitHubDeprecated": "GitHub lässt sich nicht mehr als Anmeldeweg hinzufügen: Deine E-Mail-Adresse und dein Passwort sind es.",
"gitHubEnded": "Die Anmeldung mit GitHub ist auf dieser Instanz beendet.",
"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",
"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",
"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}. Richte bis dahin ein Passwort ein: Ein Konto ohne wird 30 Tage später mit allem darin gelöscht.",
feat(app): signing in with SimpleLogin, its sheet and the start screen's offer (ADR 0020) Where the instance offers SimpleLogin, the start screen offers it first, saying that the instance keeps only the SimpleLogin ID, and opens a sheet that waits for SimpleLogin's page in the browser (Cancel ends the wait), then: for someone new, the choice between creating an account (the suggested handle or another, checked with the instance, the password twice, the recovery phrase shown once and three of its words typed back, nothing reaching the instance before) and linking theirs again with its handle and recovery phrase; for an account, its password opening its keys; for an account of before, the keys made with the handle it lacks. SimpleLoginCubit holds the steps, each refusal shown where it is mended (a handle's on the handle, a sign-in to begin again on the browser's), and closing the sheet stops waiting on the loopback. The suggested handle is never checked: the instance suggests none that anybody has, and every answer about a handle counts against its limit (D5). The fake's handle rule is now the module's. Learn and Todo build it with SimpleLogin's browser (halkyon_oidc_flutter, now a direct dependency of both, with their names on the loopback's page), their schemes and their loopback ports (43823, 43824), as the instance's forwarding page has them. Their tests offer no SimpleLogin; halkyon_app's test the sheet. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
2026-10-24 01:21:29 +02:00
"passwordSignedInBefore": "Nur ein seitdem angemeldetes Gerät kann diese Warnung ausblenden: Melde dich auf diesem neu an oder ändere dein Passwort.",
"simpleLoginContinue": "Weiter mit SimpleLogin",
"simpleLoginNote": "SimpleLogin ist die Anmeldung von Proton, und ein Proton-Konto funktioniert dort auch. SimpleLogin erfährt, dass du {instance} nutzt, und {instance} speichert nur deine SimpleLogin-ID: Dein Name schlägt einmal ein Handle vor, sonst wird nichts gespeichert.",
"simpleLoginTitle": "Mit SimpleLogin anmelden",
"simpleLoginAddTitle": "SimpleLogin hinzufügen",
"simpleLoginInBrowser": "Mach in deinem Browser weiter.",
"simpleLoginNewcomerTitle": "Neu hier?",
"simpleLoginNewcomerIntro": "Zu deinem SimpleLogin-Konto gibt es auf {instance} noch kein Konto.",
"simpleLoginCreateHint": "Wähle ein Handle und ein Passwort; du bekommst eine Wiederherstellungsphrase.",
"simpleLoginHaveOne": "Ich habe schon eins",
"simpleLoginHaveOneHint": "Verknüpfe es wieder mit deinem Handle und deiner Wiederherstellungsphrase.",
"simpleLoginHandleIntro": "Andere finden dich über dein Handle. Es bleibt privat, bis du etwas veröffentlichst oder dein Profil ausfüllst, und lässt sich bis zu deiner ersten Veröffentlichung ändern.",
"simpleLoginHandle": "Handle",
"simpleLoginHandleFree": "@{handle} ist frei",
"simpleLoginPasswordIntro": "Wähle ein Passwort: Du gibst es ein, wenn du dich auf einem anderen Gerät anmeldest. 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.",
"simpleLoginCreate": "Konto erstellen",
"simpleLoginUnlockTitle": "Dein Passwort",
"simpleLoginUnlockIntroAs": "Mit SimpleLogin als @{handle} angemeldet. Dein Passwort öffnet deine Schlüssel auf diesem Gerät.",
"simpleLoginUnlockIntro": "Mit SimpleLogin angemeldet. Dein Passwort öffnet deine Schlüssel auf diesem Gerät.",
"simpleLoginOpen": "Öffnen",
"simpleLoginMendTitle": "Konto verknüpfen",
"simpleLoginMendIntro": "Dein SimpleLogin-Konto ist nicht mehr das, das dein Konto kennt. Verknüpfe sie wieder mit deinem Handle und deiner Wiederherstellungsphrase: Deine anderen Geräte werden dann abgemeldet.",
"simpleLoginMend": "Verknüpfen",
"simpleLoginWrongPassword": "Das Passwort stimmt nicht.",
"simpleLoginMendDoesNotFit": "Das Handle oder die Wiederherstellungsphrase stimmt nicht.",
"simpleLoginUnavailable": "Diese Instanz bietet die Anmeldung mit SimpleLogin nicht an.",
"simpleLoginDenied": "Die Anmeldung bei SimpleLogin wurde abgelehnt, also wurde nichts geteilt.",
"simpleLoginNoBrowser": "Es gibt keinen Browser, der die Seite von SimpleLogin öffnen kann.",
"simpleLoginStartAgain": "Die Anmeldung hat zu lange gedauert, oder eine andere ist an ihre Stelle getreten. Beginne sie noch einmal.",
"simpleLoginRejected": "SimpleLogin hat die Anmeldung nicht bestätigt. Beginne sie noch einmal.",
"simpleLoginProviderUnavailable": "Die Instanz erreicht SimpleLogin gerade nicht. Versuch es später noch einmal.",
"simpleLoginTakenByAnotherPerson": "Dieses SimpleLogin-Konto gehört hier zu einem anderen Konto.",
"simpleLoginOtherIdentityLinked": "Dein Konto hat schon ein anderes SimpleLogin-Konto.",
"simpleLoginTooManyAttempts": "Von diesem Netz aus wurden zu viele Anmeldungen begonnen. Versuch es in einer Stunde noch einmal.",
"simpleLoginHandleInvalid": "Ein Handle besteht aus 1 bis 30 Buchstaben (a bis z), Ziffern oder Unterstrichen.",
"simpleLoginHandleReserved": "Dieses Handle ist der Instanz vorbehalten.",
"simpleLoginHandleTaken": "Dieses Handle hat schon jemand anderes.",
"simpleLoginTooManyHandleChecks": "Es wurden zu viele Handles ausprobiert. Versuch es in einer Stunde noch einmal."
}