Whoever guessed codes decided whether the owner was mailed (the re-review's fourth finding): the address a sign-in sent was optional, so a guesser left it out and no mail went, and a wait begun without a mail used up the one mail there was. Every call carrying a code after the password or the phrase proved (signing in, the phrase's reset, a change of password, a new phrase, deletion) now takes the account's address and the language of its mails, and is refused (wrongCredentials, as anything wrong after the password) before any code is checked when the address isn't the account's; every wait mails the owner, not only the first. The app sends the address the person typed, or for changes while signed in the one this device signed in with, and says so where it doesn't know it (addressUnknown). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
796 lines
22 KiB
Dart
796 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 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.';
|
|
}
|
|
|
|
/// 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');
|
|
}
|