halkyon/packages/halkyon_app/lib/l10n/halkyon_app_localizations_de.dart
Tizian 「ティツィアーン」 ae57cbe864
feat(auth)!: codes by mail no longer sign in
ADR 0017, step 3 (D4: nobody signs in with email codes yet, so the
password replaces them outright). `emailCode.verifyCode`,
`emailSignIn.signIn` and the switch token go, with the register's
`verifySignInCode` and `completeEmailSwitch` and their operations
between services. `emailCode.sendCode` stays, now without a session
(signing up and getting back in have none), as what proves an address
for a password's setup, a sign-up, a setup never finished and the
resets; `accountRecovery.sendCode`, which did that for the resets,
goes. The `switchChallengeId` column stays: Serverpod's challenges
still link a completion token, and older servers read it during a
deploy.

The apps: halkyon_app's email sign-in (its bloc, sheet, gateway calls
and the start screen's Continue with email) goes; Learn's profile and
Todo's account sheet show `AccountSecuritySection` (a password set up
by someone anonymous or signing in with GitHub, whose end it names;
the authenticators; changing the password; new recovery codes and
phrase), which reads anew after every change the repository makes.

BREAKING CHANGE: Learn's `minimumAppBuild` is 22: builds up to 21 sign
in with the endpoints that went. Todo was never released and stays at
build 1.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
2026-10-23 14:12:41 +02:00

772 lines
22 KiB
Dart

// ignore: unused_import
import 'package:intl/intl.dart' as intl;
import 'halkyon_app_localizations.dart';
// ignore_for_file: type=lint
/// The translations for German (`de`).
class HalkyonAppLocalizationsDe extends HalkyonAppLocalizations {
HalkyonAppLocalizationsDe([String locale = 'de']) : super(locale);
@override
String get tryAgain => 'Erneut versuchen';
@override
String instanceWelcome(String app) {
return 'Willkommen bei $app';
}
@override
String get instanceBuiltInTagline => 'In der App voreingestellt';
@override
String get instanceAnother => 'Andere Instanz';
@override
String get instanceAnotherTagline => 'Gib ihre Adresse ein';
@override
String get instanceAddress => 'Adresse der Instanz';
@override
String get instanceAddressInvalid => 'Das ist keine Adresse.';
@override
String get instanceAddressRequired => 'Gib die Adresse einer Instanz ein.';
@override
String get instanceContinue => 'Weiter';
@override
String instanceUnreachable(String app, String name) {
return 'Unter $name antwortet keine Instanz von $app.';
}
@override
String instanceUseBuiltIn(String name) {
return '$name verwenden';
}
@override
String instanceOpenFailed(String name) {
return 'Die App auf $name konnte nicht geöffnet werden.';
}
@override
String instanceDataAndBackupsIn(String place) {
return 'Daten und Sicherungen: $place';
}
@override
String instanceDataIn(String place) {
return 'Daten: $place';
}
@override
String instanceBackupsIn(String place) {
return 'Sicherungen: $place';
}
@override
String get instanceNoBackups => 'Keine Sicherungen';
@override
String get instanceEuropeanUnion => 'Europäische Union';
@override
String instanceCountryInEu(String country) {
return '$country (EU)';
}
@override
String instanceSubdivisionOf(String subdivision, String country) {
return '$subdivision, $country';
}
@override
String get accountsTitle => 'Konten';
@override
String get accountAdd => 'Konto hinzufügen';
@override
String get accountAddSubtitle =>
'Wähle die Instanz für das Konto, das du hinzufügst.';
@override
String get accountSignedIn => 'Angemeldet';
@override
String get accountAnonymous => 'Anonym';
@override
String get accountRemoveTooltip => 'Konto entfernen';
@override
String get accountRemoveTitle => 'Konto entfernen?';
@override
String accountRemoveMessage(String name) {
return '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.';
}
@override
String get accountRemoveConfirm => 'Entfernen';
@override
String accountSignedInOn(String instance) {
return 'Angemeldet auf $instance';
}
@override
String accountAnonymousOn(String instance) {
return 'Anonym auf $instance';
}
@override
String get accountSwitch => 'Konto wechseln';
@override
String get accountSignOut => 'Abmelden';
@override
String get accountSignOutTitle => 'Abmelden?';
@override
String get accountDelete => 'Konto löschen';
@override
String get accountDeleteTitle => 'Dein Konto löschen?';
@override
String get aboutSourceCode =>
'Der Quellcode dessen, was diese Instanz ausführt:';
@override
String get aboutSourceUnreachable =>
'Diese Instanz war nicht erreichbar, um nach ihrem Quellcode zu fragen.';
@override
String get sessionUnreachable => 'Der Server war nicht erreichbar.';
@override
String get personDataFailed =>
'Die Daten dieses Geräts konnten nicht geöffnet werden.';
@override
String get startSignedOut => 'Abgemeldet';
@override
String startOn(String instance) {
return 'Starte auf $instance:';
}
@override
String get startWithGitHub => 'Mit GitHub anmelden';
@override
String get startWithoutAccount => 'Ohne Konto starten';
@override
String get startAnonymous =>
'Dein Fortschritt wird auf diesem Gerät gespeichert. Melde dich an, um ihn zu behalten.';
@override
String get startGitHubFailed => 'Anmeldung mit GitHub fehlgeschlagen.';
@override
String get startNoGitHubAccount =>
'Noch kein Konto hier meldet sich mit diesem GitHub-Konto an.';
@override
String get startOtherInstance => 'Andere Instanz verwenden';
@override
String get syncTitle => 'Synchronisierung';
@override
String get syncNow => 'Jetzt synchronisieren';
@override
String get syncStateSyncing => 'Wird synchronisiert…';
@override
String get syncStateSynced => 'Alles synchronisiert';
@override
String get syncStateFailing => 'Synchronisierung schlägt fehl';
@override
String get syncStateNotYet => 'Noch nicht synchronisiert';
@override
String syncStateMismatch(String server) {
return 'Diese App kann nicht mit $server synchronisieren';
}
@override
String get 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.';
@override
String syncLastCompleted(String time) {
return 'Zuletzt abgeschlossen um $time';
}
@override
String syncLastFailed(String time) {
return 'Letzter Versuch fehlgeschlagen um $time';
}
@override
String get syncNoRunYet =>
'Seit dem Start der App wurde noch keine Synchronisierung abgeschlossen';
@override
String syncPending(int count) {
String _temp0 = intl.Intl.pluralLogic(
count,
locale: localeName,
other: '$count Änderungen warten auf die Synchronisierung',
one: '1 Änderung wartet auf die Synchronisierung',
);
return '$_temp0';
}
@override
String get syncTroubleLabel => 'Synchronisierung benötigt Aufmerksamkeit';
@override
String syncMismatchBanner(String server) {
return 'Diese App kann nicht mehr mit $server synchronisieren. Aktualisiere sie, um weiter zu synchronisieren.';
}
@override
String get syncMismatchMore => 'Mehr';
@override
String get startSignIn => 'Anmelden';
@override
String get startCreateAccount => 'Konto erstellen';
@override
String startGitHubEnds(String date) {
return 'Die Anmeldung mit GitHub endet am $date.';
}
@override
String get passwordAddress => 'E-Mail-Adresse';
@override
String get passwordPassword => 'Passwort';
@override
String get passwordNewPassword => 'Neues Passwort';
@override
String get passwordCurrent => 'Aktuelles Passwort';
@override
String get passwordRepeat => 'Neues Passwort wiederholen';
@override
String get passwordsDiffer => 'Die beiden Passwörter stimmen nicht überein.';
@override
String get passwordShow => 'Passwort anzeigen';
@override
String get passwordHide => 'Passwort verbergen';
@override
String get passwordContinue => 'Weiter';
@override
String get passwordBack => 'Zurück';
@override
String get passwordDone => 'Fertig';
@override
String get passwordCopy => 'Kopieren';
@override
String get passwordCopied => 'Kopiert.';
@override
String get passwordSave => 'Als Datei speichern';
@override
String get passwordQrCode => 'QR-Code für deine Authenticator-App';
@override
String get passwordMailCode => 'Code aus der E-Mail';
@override
String passwordMailCodeSent(String address) {
return 'Wir haben dir einen Code an $address geschickt. Er gilt 15 Minuten.';
}
@override
String get passwordResendCode => 'Neuen Code senden';
@override
String get passwordTotpCode => 'Code aus deiner Authenticator-App';
@override
String get passwordRecoveryCode => 'Wiederherstellungscode';
@override
String get passwordUseRecoveryCode =>
'Stattdessen einen Wiederherstellungscode verwenden';
@override
String get passwordUseTotpCode =>
'Stattdessen deine Authenticator-App verwenden';
@override
String get passwordUnlocking =>
'Dein Passwort wird auf diesem Gerät entsperrt …';
@override
String get passwordMakingKeys =>
'Deine Schlüssel werden auf diesem Gerät erstellt …';
@override
String get passwordSignInTitle => 'Anmelden';
@override
String get passwordSignInAction => 'Anmelden';
@override
String passwordSignInIntro(String instance) {
return 'Mit der E-Mail-Adresse und dem Passwort deines Kontos auf $instance.';
}
@override
String passwordSecondFactorIntro(String instance) {
return 'Gib den Code ein, den deine Authenticator-App für $instance zeigt.';
}
@override
String get passwordRecoveryCodeIntro =>
'Gib einen deiner Wiederherstellungscodes ein. Jeder meldet einmal an.';
@override
String get passwordForgot => 'Passwort vergessen?';
@override
String get passwordOtherPassword => 'Adresse oder Passwort ändern';
@override
String get passwordLostAuthenticator => 'Authenticator verloren?';
@override
String get passwordLostAuthenticatorTitle => 'Authenticator verloren';
@override
String get 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.';
@override
String get passwordResetWithMail => 'Mit einem Code per E-Mail zurücksetzen';
@override
String passwordResetWithMailHint(String address) {
return 'Wir schicken einen Code an $address.';
}
@override
String get passwordResetWithPhrase =>
'Mit deiner Wiederherstellungsphrase zurücksetzen';
@override
String get passwordResetWithPhraseHint =>
'Die 24 Wörter, die du dir notiert hast.';
@override
String get passwordSignInWithoutCode => 'Ohne Code anmelden';
@override
String get passwordSignInWithoutCodeHint =>
'Sobald ein Zurücksetzen, um das du gebeten hast, wirksam ist.';
@override
String get passwordResetAction => 'Zurücksetzen';
@override
String passwordAuthenticatorResetAt(String date) {
return '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.';
}
@override
String passwordUnfinishedIntro(String address) {
return 'Dein Konto wurde nie fertig eingerichtet. Wir haben dir einen Code an $address geschickt: Damit meldest du dich an und richtest einen Authenticator ein.';
}
@override
String get passwordPhraseField => 'Wiederherstellungsphrase';
@override
String get passwordPhraseFieldHint =>
'Die 24 Wörter, durch Leerzeichen getrennt';
@override
String get passwordPhraseFieldIntro =>
'Gib deine Wiederherstellungsphrase ein: Sie beweist, dass das Konto deines ist.';
@override
String get passwordAuthenticatorTitle => 'Authenticator einrichten';
@override
String get 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.';
@override
String get passwordAuthenticatorKey => 'Schlüssel';
@override
String get passwordAuthenticatorOpen => 'In deiner Authenticator-App öffnen';
@override
String get passwordAuthenticatorNoApp =>
'Keine App auf diesem Gerät öffnet ihn. Scanne den Code oder tippe den Schlüssel ein.';
@override
String get passwordAuthenticatorCodeIntro =>
'Gib dann den Code ein, den sie zeigt.';
@override
String get passwordExistingCode => 'Code von einem bisherigen Authenticator';
@override
String get passwordRecoveryCodesTitle => 'Wiederherstellungscodes';
@override
String get 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.';
@override
String get passwordCodesKept => 'Ich habe sie aufbewahrt';
@override
String get passwordPhraseTitle => 'Deine Wiederherstellungsphrase';
@override
String get 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.';
@override
String get passwordPhraseWrittenDown => 'Ich habe sie aufgeschrieben';
@override
String get passwordPhraseCheckTitle => 'Wiederherstellungsphrase prüfen';
@override
String get passwordPhraseCheckIntro =>
'Tippe die gefragten Wörter aus deiner Notiz ein.';
@override
String passwordPhraseWord(int number) {
return 'Wort $number';
}
@override
String get passwordPhraseWrong =>
'Das sind nicht die Wörter. Sieh noch einmal in deine Notiz.';
@override
String get passwordPhraseShowAgain => 'Phrase noch einmal zeigen';
@override
String get passwordCreateTitle => 'Konto erstellen';
@override
String passwordCreateIntro(String instance) {
return 'Auf $instance, mit deiner E-Mail-Adresse, einem Passwort und einer Authenticator-App für den Code, den jede Anmeldung braucht.';
}
@override
String get passwordSetUpTitle => 'Passwort einrichten';
@override
String get 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.';
@override
String get 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.';
@override
String get passwordFinishResetTitle => 'Zurücksetzen abschließen';
@override
String get 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.';
@override
String get passwordFinishResetHavePhrase =>
'Ich habe meine Wiederherstellungsphrase';
@override
String get passwordFinishResetKeepsKeys =>
'Dein Konto behält seine Schlüssel: Nichts Verschlüsseltes geht verloren.';
@override
String get passwordFinishResetNewKeys =>
'Ohne deine Wiederherstellungsphrase bekommt dein Konto neue Schlüssel: Was mit den alten verschlüsselt war, ist verloren.';
@override
String get passwordRecoveryTitle => 'Zurück in dein Konto';
@override
String get passwordRecoveryWithPhrase =>
'Ich habe meine Wiederherstellungsphrase';
@override
String get passwordRecoveryWithPhraseHint =>
'Setze sofort ein neues Passwort. Alles bleibt.';
@override
String get 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.';
@override
String get passwordRecoveryNoCodeHint =>
'Auch deinen Authenticator verloren? Setze dein Konto 72 Stunden später mit deiner Wiederherstellungsphrase zurück: Sie behält alles.';
@override
String get passwordRecoveryWithoutPhrase => 'Mein Konto zurücksetzen';
@override
String get passwordRecoveryWithoutPhraseHint =>
'Wirkt 72 Stunden später. Ohne deine Wiederherstellungsphrase ist Verschlüsseltes verloren.';
@override
String get 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.';
@override
String get passwordRecoveryFinish => 'Zurücksetzen abschließen';
@override
String get passwordRecoveryFinishHint =>
'72 Stunden nachdem du darum gebeten hast.';
@override
String passwordResetStarted(String date) {
return '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.';
}
@override
String get passwordSectionTitle => 'Passwort und Authenticator';
@override
String get passwordSectionFailed =>
'Wie dein Konto sich anmeldet, konnte nicht gelesen werden.';
@override
String passwordSectionGitHubEnds(String date) {
return 'Die Anmeldung mit GitHub endet am $date. Richte bis dahin ein Passwort ein, um dein Konto zu behalten.';
}
@override
String get passwordSectionSetUp => 'Passwort einrichten';
@override
String get passwordSectionSetUpHint =>
'Melde dich mit deiner E-Mail-Adresse, einem Passwort und einer Authenticator-App an.';
@override
String get passwordSectionUnfinished =>
'Fertig einrichten: Authenticator hinzufügen';
@override
String get passwordSectionUnfinishedHint =>
'Dein Passwort meldet dich an, sobald ein Authenticator eingerichtet ist.';
@override
String get passwordSectionChange => 'Passwort ändern';
@override
String get passwordSectionKeysMissing =>
'Melde dich auf diesem Gerät mit deinem Passwort an, um das zu ändern.';
@override
String get passwordSectionNotConfirmed => 'Noch nicht eingerichtet';
@override
String passwordSectionRemove(String name) {
return '$name entfernen?';
}
@override
String get passwordSectionRemoveIntro =>
'Gib zur Bestätigung einen Code aus einem deiner Authenticators ein.';
@override
String get passwordSectionRemoveAction => 'Entfernen';
@override
String get passwordSectionAddAuthenticator => 'Authenticator hinzufügen';
@override
String get passwordSectionRecoveryCodes => 'Neue Wiederherstellungscodes';
@override
String get passwordSectionRecoveryCodesHint =>
'Die alten gelten dann nicht mehr.';
@override
String get passwordSectionNewPhrase => 'Neue Wiederherstellungsphrase';
@override
String get passwordSectionPhraseHint =>
'Deine alte Phrase gilt dann nicht mehr.';
@override
String get passwordChangeTitle => 'Passwort ändern';
@override
String get passwordChangeIntro =>
'Deine anderen Geräte werden abgemeldet. Deine Schlüssel bleiben: Nichts geht verloren.';
@override
String get passwordChangeAction => 'Passwort ändern';
@override
String get passwordChanged =>
'Passwort geändert. Deine anderen Geräte sind abgemeldet.';
@override
String get passwordNewCodesIntro =>
'Gib einen Code aus deiner Authenticator-App ein. Deine alten Wiederherstellungscodes gelten dann nicht mehr.';
@override
String get passwordNewPhraseIntro =>
'Deine neue Wiederherstellungsphrase. Schreib die 24 Wörter der Reihe nach auf: Sobald du sie bestätigst, öffnet deine alte Phrase nichts mehr.';
@override
String get passwordPhraseKept =>
'Neue Wiederherstellungsphrase gesetzt. Die alte gilt nicht mehr.';
@override
String get passwordWrongCredentials =>
'Die Adresse, das Passwort oder der Code stimmt nicht.';
@override
String get passwordTooManyAttempts =>
'Zu viele Versuche. Versuch es in einer Stunde wieder.';
@override
String get passwordSetupIncomplete =>
'Dein Konto wurde nie fertig eingerichtet: Richte einen Authenticator ein.';
@override
String passwordNotDue(String date) {
return 'Das wirkt am $date.';
}
@override
String get passwordNotDueYet => 'Das wirkt noch nicht.';
@override
String get passwordNoReset => 'Für diese Adresse wartet kein Zurücksetzen.';
@override
String get 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.';
@override
String get passwordAddressTaken =>
'Diese Adresse gehört zu einem anderen Konto.';
@override
String get passwordNoAddress => 'Dein Konto hat noch keine E-Mail-Adresse.';
@override
String get passwordNoPassword => 'Dieses Konto hat kein Passwort.';
@override
String get passwordWrongCode =>
'Dieser Code stimmt nicht. Gib den ein, den deine App gerade zeigt.';
@override
String get passwordWrongExistingCode =>
'Der Code von deinem anderen Authenticator stimmt nicht.';
@override
String get passwordLastAuthenticator =>
'Dein letzter Authenticator kann nicht weg: Jede Anmeldung braucht einen.';
@override
String get passwordTooManyAuthenticators =>
'Dein Konto hat so viele Authenticators, wie es darf. Entferne zuerst einen.';
@override
String get passwordUnknownAuthenticator => 'Dieser Authenticator ist weg.';
@override
String get passwordInvalidSetup =>
'Die Instanz hat nicht angenommen, was dieses Gerät erstellt hat. Aktualisiere die App oder versuch es noch einmal.';
@override
String get passwordChallengeExpired =>
'Das hat zu lange gedauert. Versuch es noch einmal.';
@override
String get passwordUnavailable =>
'Diese Instanz bietet keine Anmeldung mit Passwort.';
@override
String get passwordNotAnAddress => 'Das ist keine E-Mail-Adresse.';
@override
String get passwordTooManyCodes =>
'Zu viele Codes angefordert. Versuch es in einer Stunde wieder.';
@override
String get passwordWrongMailCode => 'Dieser Code stimmt nicht.';
@override
String get passwordTooManyMailTries =>
'Zu viele falsche Codes. Fordere einen neuen an.';
@override
String get passwordMailCodeExpired =>
'Dieser Code gilt nicht mehr. Fordere einen neuen an.';
@override
String get passwordMailFailed =>
'Die Instanz konnte die E-Mail nicht senden. Versuch es später noch einmal.';
@override
String get passwordOtherAddressLinked =>
'Dein Konto hat eine andere E-Mail-Adresse.';
@override
String get passwordNotAPhrase =>
'Das ist keine Wiederherstellungsphrase: Prüf jedes Wort und ihre Anzahl.';
@override
String get passwordPhraseDoesNotFit =>
'Die Adresse oder die Wiederherstellungsphrase stimmt nicht.';
@override
String get passwordUnusable =>
'Dieses Passwort geht nicht: Es ist leer oder enthält Zeichen, die kein Text sind.';
@override
String get 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.';
@override
String get passwordKeysMissing =>
'Die Schlüssel deines Kontos sind nicht auf diesem Gerät. Melde dich hier ab und mit deinem Passwort wieder an.';
@override
String get passwordFailed =>
'Die Instanz war nicht erreichbar. Prüf die Verbindung und versuch es noch einmal.';
}