halkyon/packages/halkyon_app/lib/l10n/halkyon_app_localizations_en.dart
Tizian 「ティツィアーン」 09a627d1c7
fix(auth): a member behind the register's clock says the password changed
When a member's clock ran more than its allowance behind the register's,
the session after a reset was refused as unavailable (the re-review's tenth
finding), after the register had already reset the account and ended every
session, and the app read it as "this instance has no password sign-in".
It now has a refusal of its own (passwordChanged): the app says the password
was changed and to sign in again with the new one.

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

807 lines
23 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 English (`en`).
class HalkyonAppLocalizationsEn extends HalkyonAppLocalizations {
HalkyonAppLocalizationsEn([String locale = 'en']) : super(locale);
@override
String get tryAgain => 'Try again';
@override
String instanceWelcome(String app) {
return 'Welcome to $app';
}
@override
String get instanceBuiltInTagline => 'Comes with the app';
@override
String get instanceAnother => 'Another instance';
@override
String get instanceAnotherTagline => 'Enter its address';
@override
String get instanceAddress => 'Instance address';
@override
String get instanceAddressInvalid => 'This isn\'t an address.';
@override
String get instanceAddressRequired => 'Enter the address of an instance.';
@override
String get instanceContinue => 'Continue';
@override
String instanceUnreachable(String app, String name) {
return 'No instance of $app answers at $name.';
}
@override
String instanceUseBuiltIn(String name) {
return 'Use $name';
}
@override
String instanceOpenFailed(String name) {
return 'Couldn\'t open the app on $name.';
}
@override
String instanceDataAndBackupsIn(String place) {
return 'Data and backups: $place';
}
@override
String instanceDataIn(String place) {
return 'Data: $place';
}
@override
String instanceBackupsIn(String place) {
return 'Backups: $place';
}
@override
String get instanceNoBackups => 'No backups';
@override
String get instanceEuropeanUnion => 'European Union';
@override
String instanceCountryInEu(String country) {
return '$country (EU)';
}
@override
String instanceSubdivisionOf(String subdivision, String country) {
return '$subdivision, $country';
}
@override
String get accountsTitle => 'Accounts';
@override
String get accountAdd => 'Add account';
@override
String get accountAddSubtitle =>
'Choose the instance for the account to add.';
@override
String get accountSignedIn => 'Signed in';
@override
String get accountAnonymous => 'Anonymous';
@override
String get accountRemoveTooltip => 'Remove account';
@override
String get accountRemoveTitle => 'Remove account?';
@override
String accountRemoveMessage(String name) {
return 'Removes the account on $name from this device, with all the device holds of it. What it synced stays on $name: sign in there again to have it. An anonymous account can\'t be signed into again.';
}
@override
String get accountRemoveConfirm => 'Remove';
@override
String accountSignedInOn(String instance) {
return 'Signed in on $instance';
}
@override
String accountAnonymousOn(String instance) {
return 'Anonymous on $instance';
}
@override
String get accountSwitch => 'Switch account';
@override
String get accountSignOut => 'Sign out';
@override
String get accountSignOutTitle => 'Sign out?';
@override
String get accountDelete => 'Delete account';
@override
String get accountDeleteTitle => 'Delete your account?';
@override
String get aboutSourceCode => 'The source of what this instance runs:';
@override
String get aboutSourceUnreachable =>
'Couldn\'t reach this instance to ask where its source is.';
@override
String get sessionUnreachable => 'Couldn\'t reach the server.';
@override
String get personDataFailed => 'Couldn\'t open this device\'s data.';
@override
String get startSignedOut => 'Signed out';
@override
String startOn(String instance) {
return 'Start on $instance:';
}
@override
String get startWithGitHub => 'Sign in with GitHub';
@override
String get startWithoutAccount => 'Start without an account';
@override
String get startAnonymous =>
'Progress is saved on this device. Sign in to keep it.';
@override
String get startGitHubFailed => 'Couldn\'t sign in with GitHub.';
@override
String get startNoGitHubAccount =>
'No account here signs in with this GitHub account yet.';
@override
String get startOtherInstance => 'Use another instance';
@override
String get syncTitle => 'Sync';
@override
String get syncNow => 'Sync now';
@override
String get syncStateSyncing => 'Syncing…';
@override
String get syncStateSynced => 'Everything synced';
@override
String get syncStateFailing => 'Sync is failing';
@override
String get syncStateNotYet => 'Not synced yet';
@override
String syncStateMismatch(String server) {
return 'This app can\'t sync with $server';
}
@override
String get syncMismatchDetail =>
'Update the app. If it is up to date, the server needs an update. What you do meanwhile stays on this device and syncs afterwards.';
@override
String syncLastCompleted(String time) {
return 'Last completed at $time';
}
@override
String syncLastFailed(String time) {
return 'Last attempt failed at $time';
}
@override
String get syncNoRunYet => 'No sync has completed since the app started';
@override
String syncPending(int count) {
String _temp0 = intl.Intl.pluralLogic(
count,
locale: localeName,
other: '$count changes wait to sync',
one: '1 change waits to sync',
);
return '$_temp0';
}
@override
String get syncTroubleLabel => 'Sync needs attention';
@override
String syncMismatchBanner(String server) {
return 'This app can\'t sync with $server any more. Update it to keep syncing.';
}
@override
String get syncMismatchMore => 'More';
@override
String get startSignIn => 'Sign in';
@override
String get startCreateAccount => 'Create an account';
@override
String startGitHubEnds(String date) {
return 'Sign-in with GitHub ends on $date.';
}
@override
String get passwordAddress => 'Email address';
@override
String get passwordPassword => 'Password';
@override
String get passwordNewPassword => 'New password';
@override
String get passwordCurrent => 'Current password';
@override
String get passwordRepeat => 'New password again';
@override
String get passwordsDiffer => 'The two passwords differ.';
@override
String get passwordShow => 'Show password';
@override
String get passwordHide => 'Hide password';
@override
String get passwordContinue => 'Continue';
@override
String get passwordBack => 'Back';
@override
String get passwordDone => 'Done';
@override
String get passwordCopy => 'Copy';
@override
String get passwordCopied => 'Copied.';
@override
String get passwordSave => 'Save as a file';
@override
String get passwordQrCode => 'QR code for your authenticator app';
@override
String get passwordMailCode => 'Code from the email';
@override
String passwordMailCodeSent(String address) {
return 'We emailed a code to $address. It\'s valid for 15 minutes.';
}
@override
String get passwordResendCode => 'Send a new code';
@override
String get passwordTotpCode => 'Code from your authenticator app';
@override
String get passwordRecoveryCode => 'Recovery code';
@override
String get passwordUseRecoveryCode => 'Use a recovery code instead';
@override
String get passwordUseTotpCode => 'Use your authenticator app instead';
@override
String get passwordUnlocking => 'Unlocking your password on this device…';
@override
String get passwordMakingKeys => 'Making your keys on this device…';
@override
String get passwordSignInTitle => 'Sign in';
@override
String get passwordSignInAction => 'Sign in';
@override
String passwordSignInIntro(String instance) {
return 'With the email address and password of your account on $instance.';
}
@override
String passwordSecondFactorIntro(String instance) {
return 'Enter the code your authenticator app shows for $instance.';
}
@override
String get passwordRecoveryCodeIntro =>
'Enter one of the recovery codes you kept. Each signs in once.';
@override
String get passwordForgot => 'Forgot your password?';
@override
String get passwordOtherPassword => 'Change the address or password';
@override
String get passwordLostAuthenticator => 'Lost your authenticator?';
@override
String get passwordLostAuthenticatorTitle => 'Lost authenticator';
@override
String get passwordLostAuthenticatorIntro =>
'With a recovery code you sign in as usual. Without one, ask to reset your authenticators: it takes effect 72 hours later, and signing in with a code before then stops it.';
@override
String get passwordResetWithMail => 'Reset with a code by email';
@override
String passwordResetWithMailHint(String address) {
return 'We email a code to $address.';
}
@override
String get passwordResetWithPhrase => 'Reset with your recovery phrase';
@override
String get passwordResetWithPhraseHint => 'The 24 words you wrote down.';
@override
String get passwordSignInWithoutCode => 'Sign in without a code';
@override
String get passwordSignInWithoutCodeHint =>
'Once a reset you asked for has taken effect.';
@override
String get passwordResetAction => 'Reset';
@override
String passwordAuthenticatorResetAt(String date) {
return 'Your authenticators are reset on $date. We emailed you: if it wasn\'t you, sign in with a code before then to stop it. After that, sign in with your password alone and set up a new authenticator.';
}
@override
String passwordUnfinishedIntro(String address) {
return 'Your account was never finished. We emailed a code to $address: with it, you sign in and set up an authenticator.';
}
@override
String get passwordPhraseField => 'Recovery phrase';
@override
String get passwordPhraseFieldHint =>
'The 24 words, with spaces between them';
@override
String get passwordPhraseFieldIntro =>
'Enter your recovery phrase: it proves the account is yours.';
@override
String get passwordAuthenticatorTitle => 'Set up an authenticator';
@override
String get passwordAuthenticatorIntro =>
'Every sign-in takes a code from an authenticator app, such as Aegis, 2FAS or Proton Authenticator. Scan this code with it, or type in the key.';
@override
String get passwordAuthenticatorKey => 'Key';
@override
String get passwordAuthenticatorOpen => 'Open in your authenticator app';
@override
String get passwordAuthenticatorNoApp =>
'No app on this device opens it. Scan the code or type in the key.';
@override
String get passwordAuthenticatorCodeIntro => 'Then enter the code it shows.';
@override
String get passwordExistingCode =>
'Code from an authenticator you added before';
@override
String get passwordRecoveryCodesTitle => 'Recovery codes';
@override
String get passwordRecoveryCodesIntro =>
'Each signs in once in place of a code from your authenticator, should you lose it. Keep them where only you find them: they\'re shown only now.';
@override
String get passwordCodesKept => 'I\'ve kept them';
@override
String get passwordPhraseTitle => 'Your recovery phrase';
@override
String get passwordPhraseIntro =>
'These 24 words open your account\'s keys should you forget your password: without them, what\'s encrypted is lost. Write them down in order, and keep them where only you find them. They\'re shown only now.';
@override
String get passwordPhraseWrittenDown => 'I\'ve written it down';
@override
String get passwordPhraseCheckTitle => 'Check your recovery phrase';
@override
String get passwordPhraseCheckIntro =>
'Type the words asked for, from what you wrote down.';
@override
String passwordPhraseWord(int number) {
return 'Word $number';
}
@override
String get passwordPhraseWrong =>
'These aren\'t the words. Look again at what you wrote down.';
@override
String get passwordPhraseShowAgain => 'Show the phrase again';
@override
String get passwordCreateTitle => 'Create an account';
@override
String passwordCreateIntro(String instance) {
return 'On $instance, with your email address, a password, and an authenticator app for the code every sign-in takes.';
}
@override
String get passwordSetUpTitle => 'Set up a password';
@override
String get passwordSetUpIntro =>
'Sign in with your email address, a password and an authenticator app, on this device and others. Everything you have stays.';
@override
String get passwordChooseIntro =>
'Choose a password. It never leaves this device: the instance can\'t read it, and can\'t reset it without what it protects being lost.';
@override
String get passwordFinishResetTitle => 'Finish the reset';
@override
String get passwordFinishResetIntro =>
'72 hours after you asked to reset your account, finish it here with a new code by email.';
@override
String get passwordFinishResetHavePhrase => 'I have my recovery phrase';
@override
String get passwordFinishResetKeepsKeys =>
'Your account keeps its keys: nothing encrypted is lost.';
@override
String get passwordFinishResetNewKeys =>
'Without your recovery phrase, your account gets new keys: what was encrypted with the old ones is lost.';
@override
String get passwordRecoveryTitle => 'Get back into your account';
@override
String get passwordRecoveryWithPhrase => 'I have my recovery phrase';
@override
String get passwordRecoveryWithPhraseHint =>
'Set a new password at once. Everything stays.';
@override
String get passwordRecoveryWithPhraseIntro =>
'Your recovery phrase opens your account\'s keys, which your new password then protects. A code from your authenticator, or a recovery code, confirms it.';
@override
String get passwordRecoveryNoCodeHint =>
'Lost your authenticator as well? Reset your account 72 hours later with your recovery phrase: it keeps everything.';
@override
String get passwordRecoveryWithoutPhrase => 'Reset my account';
@override
String get passwordRecoveryWithoutPhraseHint =>
'Takes effect 72 hours later. Without your recovery phrase, what\'s encrypted is lost.';
@override
String get passwordRecoveryStartIntro =>
'We email a code to your address. Your account can then be reset 72 hours later; signing in with your password before then stops it.';
@override
String get passwordRecoveryFinish => 'Finish a reset';
@override
String get passwordRecoveryFinishHint => '72 hours after you asked for it.';
@override
String passwordResetStarted(String date) {
return 'Your account can be reset from $date. We emailed you: if it wasn\'t you, sign in with your password before then to stop it.';
}
@override
String get passwordSectionTitle => 'Password and authenticator';
@override
String get passwordSectionFailed =>
'Couldn\'t read how your account signs in.';
@override
String passwordSectionGitHubEnds(String date) {
return 'Sign-in with GitHub ends on $date. Set up a password before then to keep your account.';
}
@override
String get passwordSectionSetUp => 'Set up a password';
@override
String get passwordSectionSetUpHint =>
'Sign in with your email address, a password and an authenticator app.';
@override
String get passwordSectionUnfinished =>
'Finish setting up: add an authenticator';
@override
String get passwordSectionUnfinishedHint =>
'Your password signs in once an authenticator is set up.';
@override
String get passwordSectionChange => 'Change password';
@override
String get passwordSectionKeysMissing =>
'Sign in on this device with your password to change it.';
@override
String get passwordSectionNotConfirmed => 'Not set up yet';
@override
String passwordSectionRemove(String name) {
return 'Remove $name?';
}
@override
String get passwordSectionRemoveIntro =>
'Enter a code from one of your authenticators to confirm.';
@override
String get passwordSectionRemoveAction => 'Remove';
@override
String get passwordSectionAddAuthenticator => 'Add an authenticator';
@override
String get passwordSectionRecoveryCodes => 'New recovery codes';
@override
String get passwordSectionRecoveryCodesHint => 'The old ones stop working.';
@override
String get passwordSectionNewPhrase => 'New recovery phrase';
@override
String get passwordSectionPhraseHint => 'Your old phrase stops working.';
@override
String get passwordChangeTitle => 'Change password';
@override
String get passwordChangeIntro =>
'Your other devices are signed out. Your keys stay: nothing is lost.';
@override
String get passwordChangeAction => 'Change password';
@override
String get passwordChanged =>
'Password changed. Your other devices are signed out.';
@override
String get passwordNewCodesIntro =>
'Enter a code from your authenticator app. Your old recovery codes stop working.';
@override
String get passwordNewPhraseIntro =>
'Your new recovery phrase. Write the 24 words down in order: once you confirm it, your old phrase opens nothing any more.';
@override
String get passwordPhraseKept =>
'New recovery phrase set. The old one no longer works.';
@override
String get passwordWrongCredentials =>
'The address, the password or the code isn\'t right.';
@override
String get passwordTooManyAttempts =>
'Too many attempts. Try again in an hour.';
@override
String get passwordSetupIncomplete =>
'Your account was never finished: set up an authenticator.';
@override
String passwordNotDue(String date) {
return 'This takes effect on $date.';
}
@override
String get passwordNotDueYet => 'This hasn\'t taken effect yet.';
@override
String get passwordNoReset => 'No reset waits for this address.';
@override
String get passwordExists =>
'This address\'s account has a password already. Sign in with it, or get back in if you\'ve forgotten it.';
@override
String get passwordAddressTaken => 'This address belongs to another account.';
@override
String get passwordNoAddress => 'Your account has no email address yet.';
@override
String get passwordNoPassword => 'This account has no password.';
@override
String get passwordWrongCode =>
'This code isn\'t right. Enter the one your app shows now.';
@override
String get passwordWrongExistingCode =>
'The code from your other authenticator isn\'t right.';
@override
String get passwordLastAuthenticator =>
'Your last authenticator can\'t go: every sign-in needs one.';
@override
String get passwordTooManyAuthenticators =>
'Your account has as many authenticators as it may. Remove one first.';
@override
String get passwordUnknownAuthenticator => 'This authenticator is gone.';
@override
String get passwordInvalidSetup =>
'The instance didn\'t accept what this device made. Update the app, or try again.';
@override
String get passwordChallengeExpired => 'That took too long. Try again.';
@override
String get passwordUnavailable => 'This instance offers no password sign-in.';
@override
String get passwordNotAnAddress => 'This isn\'t an email address.';
@override
String get passwordTooManyCodes =>
'Too many codes asked for. Try again in an hour.';
@override
String get passwordWrongMailCode => 'This code isn\'t right.';
@override
String get passwordTooManyMailTries =>
'Too many wrong codes. Ask for a new one.';
@override
String get passwordMailCodeExpired =>
'This code is no longer valid. Ask for a new one.';
@override
String get passwordMailFailed =>
'The instance couldn\'t send the email. Try again later.';
@override
String get passwordOtherAddressLinked =>
'Your account has another email address.';
@override
String get passwordNotAPhrase =>
'This isn\'t a recovery phrase: check every word and their number.';
@override
String get passwordPhraseDoesNotFit =>
'The address or the recovery phrase isn\'t right.';
@override
String get passwordUnusable =>
'This password can\'t be used: it\'s empty, or holds characters that aren\'t text.';
@override
String get passwordInstanceUnproven =>
'The instance couldn\'t prove it knows your password, so this device trusts nothing it says. Try again; if it happens again, the instance isn\'t the one it claims to be.';
@override
String get passwordKeysMissing =>
'Your account\'s keys aren\'t on this device. Sign out and in again with your password here.';
@override
String get passwordUnsafeCosts =>
'The instance asked for your password to be checked in a way no account uses, so nothing was sent. If it happens again, the instance isn\'t the one it claims to be.';
@override
String get passwordFailed =>
'Couldn\'t reach the instance. Check the connection and try again.';
@override
String passwordMinLength(int count) {
return 'At least $count characters';
}
@override
String passwordTooShort(int count) {
return 'A new password needs at least $count characters: should the instance\'s database ever leak, a short one is guessed first.';
}
@override
String passwordCodesWait(String date) {
return 'Too many wrong codes in a row: no code is taken until $date. If they weren\'t yours, someone knows your password: change it then.';
}
@override
String get passwordDeleteIntro =>
'Your account goes with everything in it, in every service of this instance. To confirm, type your password and a code from your authenticator app.';
@override
String get passwordSessionEnded =>
'Too many wrong codes in a row from this device: it was signed out. Sign in again with your password and a code.';
@override
String get passwordAddressUnknown =>
'This device doesn\'t know your account\'s address, which this takes. Sign out, then sign in again with your address and password.';
@override
String get passwordDeleteIntroByMail =>
'Your account goes with everything in it, in every service of this instance. Its authenticator isn\'t set up, so a code by mail confirms it: type your password, then the code we email to your address.';
@override
String get passwordDeleteSendCode => 'Email me a code';
@override
String get passwordChangedSignInAgain =>
'Your password was changed, but this service couldn\'t sign you in just yet. Sign in again with the new password.';
}
/// The translations for English, as used in the United Kingdom (`en_GB`).
class HalkyonAppLocalizationsEnGb extends HalkyonAppLocalizationsEn {
HalkyonAppLocalizationsEnGb() : super('en_GB');
}
/// The translations for English, as used in the United States (`en_US`).
class HalkyonAppLocalizationsEnUs extends HalkyonAppLocalizationsEn {
HalkyonAppLocalizationsEnUs() : super('en_US');
}