halkyon/packages/halkyon_app/lib/l10n/halkyon_app_localizations_en.dart
Tizian 「ティツィアーン」 36899cdc3b
feat(app,learn,todo): the assistants in Settings and on the operator's screen
ADR 0021, step 2's app half. halkyon_app asks the module's assistant
endpoints (ServerpodAssistantGateway, ServerpodAssistantOperatorGateway)
and a person's own provider directly (halkyon_llm), behind
AssistantRepository: an AssistantChoice is a GrantedAssistant, asked
through the instance, which counts it, or a PersonalAssistant with the
person's own key, which the instance never sees. assistant_messages.dart
turns a conversation into the endpoint's models and back.

AssistantsCard, for an app's settings: what is granted and left of its
limits, agreed to once on a sheet saying what goes where, the person's
use by UTC month, the instance's privacy page, and their own assistants
where the operator allows own keys (kept ones stay listed, unasked,
where it doesn't). AssistantGrantsCard on InstanceOperatorScreen: grants
by handle with their limits in the pricing's unit, changed and taken
back after asking, everyone's use by month; a found account's menu
grants too. Nothing shows where nothing is offered or can be read.
package:halkyon_app/assistant_models.dart holds the models in pure Dart.

Learn keeps own assistants in the person's settings (ownAssistants,
schema 12, SettingsOwnAssistants); SettingsRepository.update refuses
(OwnAssistantRefused) to write a key where the settings would not be
sealed (SettingsGateway.seals). Learn depends on halkyon_llm directly.
Todo wires the gateways; a member offers no assistant. No feature asks
an assistant yet (step 3).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
2026-10-26 07:17:07 +01:00

1604 lines
46 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 instanceAddressInsecure(String app) {
return '$app reaches instances over HTTPS only, so that nobody on the way reads or changes what it sends. Ask for the instance\'s HTTPS address.';
}
@override
String instanceInsecure(String name, String app) {
return '$name is reached over plain HTTP, where anyone on the way could read and change what $app sends, so $app no longer opens it. Its account stays on $name and on this device. Use another instance, or remove it from this device.';
}
@override
String get instanceInsecureUseAnother => 'Use another instance';
@override
String get instanceInsecureRemove => 'Remove from this device';
@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 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.';
}
@override
String get accountRemoveConfirm => 'Remove';
@override
String accountSignedInOn(String instance) {
return 'Signed in on $instance';
}
@override
String get accountSwitch => 'Switch account';
@override
String get accountSignOut => 'Sign out';
@override
String get accountDelete => 'Delete account';
@override
String get accountDeleteTitle => 'Delete your account?';
@override
String get accountSignOutFailed =>
'Couldn\'t sign out on this device. Try again.';
@override
String get accountDeleteFailed =>
'Couldn\'t delete your account: the instance wasn\'t reached. Try again.';
@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 startOtherInstance => 'Use another instance';
@override
String startNoWay(String instance) {
return '$instance offers no way to create an account.';
}
@override
String startSignUpsApproved(String instance) {
return 'New accounts on $instance wait until its operator approves them.';
}
@override
String startSignUpsClosed(String instance) {
return '$instance takes no new accounts: sign in with yours.';
}
@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 waitWaiting(String instance) {
return 'Your account waits until the operator of $instance approves it.';
}
@override
String waitSuspended(String instance) {
return 'The operator of $instance has suspended your account. Only they can lift it.';
}
@override
String waitApproved(String instance) {
return 'The operator of $instance has approved your account. Sign in once more, as you did before.';
}
@override
String waitEnded(String instance) {
return 'This sign-up has ended: the operator of $instance refused it, or it waited too long.';
}
@override
String get waitBack => 'Back to the start';
@override
String get waitMatchingCode => 'Matching code';
@override
String waitMatchingNote(String instance) {
return 'When the operator of $instance reads you four words, check that they are these. Never read them out yourself: Halkyon never asks anyone to.';
}
@override
String get waitCheckNow => 'Check now';
@override
String waitUnreachable(String instance) {
return '$instance couldn\'t be reached. It\'s asked again every 30 seconds.';
}
@override
String get waitDelete => 'Delete this account';
@override
String get waitDeleteTitle => 'Delete this account?';
@override
String get waitDeleteMessage =>
'It goes with everything it has, and nobody can sign in to it again.';
@override
String get waitDeleteFailed => 'Couldn\'t delete the account. Try again.';
@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 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 passwordHandleIntro(String address) {
return 'A code is on its way to $address. Meanwhile, choose your handle: others find you by it. It stays private until you publish something or fill in your profile, and can change until your first publish.';
}
@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 passwordAuthenticatorOwnerIntro =>
'To add it, confirm it is you: your password and a code from an authenticator you added before.';
@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 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 your password and 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 your password and 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 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 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 signUpsClosed => 'This instance takes no new accounts.';
@override
String get signUpsTooManyWaiting =>
'Too many new accounts already wait for approval. Try again later.';
@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 =>
'Enter your account\'s email address: the code goes there.';
@override
String get passwordDeleteIntroByMail =>
'Your account goes with everything in it, in every service of this instance. None of its authenticators works now, 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 passwordAuthenticatorPasswordIntro =>
'To add it, confirm it is you with your password.';
@override
String get passwordWarningTitle => 'Someone tried your password';
@override
String passwordWarningBody(String date) {
return 'On $date, a device signed in to your account sent a wrong password or code ten times in a row, and was signed out. If that wasn\'t you, someone else may have that device or its session: change your password.';
}
@override
String get passwordWarningDismiss => 'Dismiss';
@override
String get passwordWarningLater => 'Remind me later';
@override
String get passwordResetsTitle => 'A reset is waiting';
@override
String passwordResetsAuthenticator(String date) {
return 'Your authenticators will be removed on $date: someone asked with your password. If that wasn\'t you, call it off and change your password.';
}
@override
String passwordResetsAccount(String date) {
return 'Your account will get a new password and new keys on $date, and what is encrypted under the old ones will be lost: someone asked with a code by mail. If that wasn\'t you, call it off.';
}
@override
String get passwordResetsCallOff => 'Call it off';
@override
String get passwordCallOffTitle => 'Call off the reset';
@override
String get passwordCallOffIntro =>
'Your password and a code call off every reset waiting.';
@override
String get passwordSignedInBefore =>
'Only a device signed in since then can dismiss this warning: sign in again on this one, or change your password.';
@override
String get simpleLoginContinue => 'Continue with SimpleLogin';
@override
String simpleLoginNote(String instance) {
return 'SimpleLogin is Proton\'s sign-in, and a Proton account works there too. It learns that you use $instance, which keeps only your SimpleLogin ID: your name suggests a handle once, and nothing else is kept.';
}
@override
String get simpleLoginTitle => 'Sign in with SimpleLogin';
@override
String get simpleLoginAddTitle => 'Add SimpleLogin';
@override
String get simpleLoginInBrowser => 'Continue in your browser.';
@override
String get simpleLoginNewcomerTitle => 'New here?';
@override
String simpleLoginNewcomerIntro(String instance) {
return 'Your SimpleLogin account has no account on $instance yet.';
}
@override
String get simpleLoginCreateHint =>
'Choose a handle and a password; you get a recovery phrase.';
@override
String get simpleLoginHaveOne => 'I already have one';
@override
String get simpleLoginHaveOneHint =>
'Link it again with your handle and your recovery phrase.';
@override
String get handleIntro =>
'Others find you by your handle. It stays private until you publish something or fill in your profile, and can change until your first publish.';
@override
String get handleLabel => 'Handle';
@override
String handleFree(String handle) {
return '@$handle is free';
}
@override
String get handleChecking => 'Checking…';
@override
String get simpleLoginPasswordIntro =>
'Choose a password: you type it when you sign in on another device. 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 simpleLoginCreate => 'Create the account';
@override
String get simpleLoginUnlockTitle => 'Your password';
@override
String simpleLoginUnlockIntroAs(String handle) {
return 'Signed in with SimpleLogin as @$handle. Your password opens your keys on this device.';
}
@override
String get simpleLoginUnlockIntro =>
'Signed in with SimpleLogin. Your password opens your keys on this device.';
@override
String get simpleLoginOpen => 'Open';
@override
String get simpleLoginMendTitle => 'Link your account';
@override
String get simpleLoginMendIntro =>
'Your SimpleLogin account isn\'t the one your account knows any more. Link them again with your handle and your recovery phrase: your other devices are then signed out.';
@override
String get simpleLoginMend => 'Link';
@override
String get simpleLoginWrongPassword => 'The password isn\'t right.';
@override
String get simpleLoginMendDoesNotFit =>
'The handle or the recovery phrase isn\'t right.';
@override
String get simpleLoginForgotTitle => 'A new password';
@override
String get simpleLoginForgotIntro =>
'Your recovery phrase opens your keys, which your new password then protects. Everything stays; your other devices are signed out.';
@override
String get simpleLoginForgotDoesNotFit => 'The recovery phrase isn\'t right.';
@override
String simpleLoginResetWaiting(String date) {
return 'New keys were asked for: from $date, a SimpleLogin sign-in can set them up. Your password opening your keys calls it off.';
}
@override
String get simpleLoginPhraseLost => 'Lost your recovery phrase too?';
@override
String get simpleLoginResetTitle => 'New keys';
@override
String simpleLoginResetIntro(String instance) {
return 'Without your password or your recovery phrase, nobody can open your keys, not even $instance. New ones can be set up 72 hours from now, when you sign in with SimpleLogin again. Your handle, your profile and what you published stay; what was encrypted under your old keys is lost, unless you finish on a device still signed in, which keeps them.';
}
@override
String get simpleLoginResetIntroDevices =>
'Meanwhile your signed-in devices show the reset, and your password calls it off there, should someone else have asked for it.';
@override
String get simpleLoginResetAsk => 'Ask for new keys';
@override
String get simpleLoginResetAskedTitle => 'New keys asked for';
@override
String simpleLoginResetAskedIntro(String date) {
return 'From $date, sign in with SimpleLogin again to set them up. Should you find your password or your recovery phrase before then, opening your keys with it calls the reset off.';
}
@override
String get simpleLoginResetDueTitle => 'Your new keys';
@override
String get simpleLoginResetDueIntro =>
'The new keys you asked for can be set up now. Or open your old keys with your password, which calls the reset off.';
@override
String get simpleLoginResetNewKeys => 'Set up new keys';
@override
String get simpleLoginResetNewKeysHint =>
'A new password and recovery phrase. What was encrypted under your old keys is lost, unless you finish on a device still signed in.';
@override
String get simpleLoginResetHavePassword => 'I have my password';
@override
String get simpleLoginResetHavePasswordHint => 'Your keys open, and stay.';
@override
String get simpleLoginResetKeepIntro =>
'Choose a new password: your keys stay, under it and a new recovery phrase, so nothing is lost. Your other devices are signed out.';
@override
String get simpleLoginResetFinish => 'Set up the keys';
@override
String get simpleLoginProofKeyTitle => 'Your password and a code';
@override
String simpleLoginProofKeyIntroAs(String handle) {
return 'Signed in with SimpleLogin as @$handle. Your account also signs in with a password: type it and a code from your authenticator once, and your password opens your keys after SimpleLogin from then on.';
}
@override
String get simpleLoginProofKeyIntro =>
'Your account also signs in with a password: type it and a code from your authenticator once, and your password opens your keys after SimpleLogin from then on.';
@override
String simpleLoginResetBanner(String date) {
return 'New keys were asked for with your SimpleLogin account: from $date, whoever has it can set them up. Unless that was you, call it off with your password.';
}
@override
String get simpleLoginResetBannerDue =>
'New keys were asked for with your SimpleLogin account, and whoever has it can set them up now. Unless that was you, call it off with your password.';
@override
String get simpleLoginResetBannerDueHere =>
'New keys were asked for with your SimpleLogin account and can be set up now. If that was you, finish here: your keys stay. If not, call it off with your password.';
@override
String get simpleLoginResetFinishHere => 'Finish here';
@override
String get simpleLoginCallOffIntro =>
'Your password calls off the reset of your keys.';
@override
String get simpleLoginResetCalledOff => 'Reset called off.';
@override
String get simpleLoginResetFinished =>
'New password and recovery phrase set.';
@override
String get simpleLoginUnavailable =>
'This instance doesn\'t offer sign-in with SimpleLogin.';
@override
String get simpleLoginDenied =>
'SimpleLogin\'s sign-in was declined, so nothing was shared.';
@override
String get simpleLoginNoBrowser =>
'There\'s no browser to open SimpleLogin\'s page in.';
@override
String get simpleLoginStartAgain =>
'The sign-in took too long, or another one took its place. Begin it again.';
@override
String get simpleLoginRejected =>
'SimpleLogin didn\'t confirm the sign-in. Begin it again.';
@override
String get simpleLoginProviderUnavailable =>
'The instance can\'t reach SimpleLogin right now. Try again later.';
@override
String get simpleLoginTakenByAnotherPerson =>
'This SimpleLogin account belongs to another account here.';
@override
String get simpleLoginOtherIdentityLinked =>
'Your account has another SimpleLogin account already.';
@override
String get simpleLoginTooManyAttempts =>
'Too many sign-ins began from this network. Try again in an hour.';
@override
String get handleInvalid =>
'A handle is 1 to 30 letters (a to z), digits or underscores.';
@override
String get handleReserved => 'This handle is kept for the instance.';
@override
String get handleTaken => 'Someone else has this handle.';
@override
String get handleTooManyChecks =>
'Too many handles were tried. Try again in an hour.';
@override
String get simpleLoginSectionTitle => 'SimpleLogin';
@override
String get simpleLoginSignsYouIn => 'Signs you in';
@override
String get simpleLoginAddHint =>
'Sign in with SimpleLogin, or with your Proton account.';
@override
String get simpleLoginAdded => 'SimpleLogin added.';
@override
String get operatorTitle => 'This instance';
@override
String get operatorAccounts => 'Accounts and operators';
@override
String operatorWaitingCount(int count) {
String _temp0 = intl.Intl.pluralLogic(
count,
locale: localeName,
other: '$count accounts wait for approval',
one: '1 account waits for approval',
zero: 'Nobody waits for approval',
);
return '$_temp0';
}
@override
String get operatorWaitingTitle => 'Waiting';
@override
String get operatorNobodyWaits => 'Nobody waits.';
@override
String get operatorNoHandle => 'No handle yet';
@override
String operatorNewSince(String date) {
return 'New, waiting since $date';
}
@override
String operatorSuspendedSince(String date) {
return 'Suspended since $date';
}
@override
String get operatorApproveNote =>
'Read them these four words, and approve only once they confirm these are on their screen.';
@override
String get operatorApprove => 'Approve';
@override
String get operatorRefuse => 'Refuse';
@override
String get operatorRefuseTitle => 'Refuse this account?';
@override
String get operatorRefuseMessage =>
'It is deleted with everything it has. They can sign up again.';
@override
String get operatorOperatorsTitle => 'Operators';
@override
String get operatorTakeBack => 'Take back';
@override
String get operatorTakeBackTitle => 'Take back the role?';
@override
String get operatorTakeBackMessage =>
'They keep their account, but no longer approve, refuse or suspend accounts here.';
@override
String get operatorAppoint => 'Name an operator';
@override
String get operatorAppointMessage =>
'They approve, refuse and suspend accounts here, and name operators, as you do.';
@override
String get operatorAppointConfirm => 'Name';
@override
String get operatorHandle => 'Handle';
@override
String get operatorFindTitle => 'Find an account';
@override
String get operatorFoundNone => 'No account\'s handle starts like this.';
@override
String operatorMadeOn(String date) {
return 'Since $date';
}
@override
String get operatorIsOperator => 'Operator';
@override
String get operatorIsWaiting => 'Waiting';
@override
String get operatorIsSuspended => 'Suspended';
@override
String get operatorSuspend => 'Suspend';
@override
String get operatorSuspendTitle => 'Suspend this account?';
@override
String get operatorSuspendMessage =>
'They are signed out everywhere and can\'t sign in until you approve them again. Nothing they have is deleted.';
@override
String get operatorMakeOperator => 'Name as operator';
@override
String get operatorNotFound =>
'That account isn\'t there any more, or doesn\'t wait.';
@override
String get operatorIsOperatorProblem =>
'An operator can\'t be suspended. Take back their role first.';
@override
String get operatorLastOperator =>
'The instance needs at least one operator.';
@override
String get operatorNotAllowed =>
'Only the instance\'s operators can do this.';
@override
String get operatorFailed => 'That didn\'t work. Try again.';
@override
String get operatorAssistantNotSet =>
'That assistant isn\'t set up here any more.';
@override
String get operatorInvalidLimit => 'A limit can\'t be below zero.';
@override
String get assistantGrantsTitle => 'Assistants';
@override
String get assistantGrantsNone => 'Nobody has an assistant yet.';
@override
String get assistantGrant => 'Grant an assistant';
@override
String get assistantGrantSave => 'Grant';
@override
String get assistantGrantChange => 'Change limits';
@override
String get assistantGrantAssistant => 'Assistant';
@override
String get assistantGrantDaily => 'Limit a day';
@override
String get assistantGrantMonthly => 'Limit a month';
@override
String get assistantGrantLimitHelper =>
'Empty for none. Days and months are UTC\'s.';
@override
String get assistantGrantLimitInvalid => 'Not a number this takes';
@override
String get assistantGrantNoHandle => 'No account has this handle.';
@override
String get assistantGrantTokens => 'tokens';
@override
String get assistantGrantNote =>
'They agree once to what goes where before they ask it. You see how much they use, never what they ask.';
@override
String assistantPerDay(String amount) {
return '$amount a day';
}
@override
String assistantPerMonth(String amount) {
return '$amount a month';
}
@override
String get assistantNoLimits => 'No limits';
@override
String get assistantGrantAgreed => 'Agreed';
@override
String get assistantGrantNotAgreed => 'Not agreed yet';
@override
String get assistantGrantOutdated =>
'Its prices changed: set its limits again';
@override
String get assistantGrantUnset => 'No longer set up';
@override
String get assistantRevoke => 'Take back';
@override
String assistantRevokeTitle(String assistant) {
return 'Take back $assistant?';
}
@override
String get assistantRevokeMessage =>
'They can no longer ask it. What they used stays counted.';
@override
String get assistantUseByMonth => 'Use by month';
@override
String get assistantUseTitle => 'Use of assistants';
@override
String get assistantUseNone => 'Nothing used in this month.';
@override
String get assistantUseKept =>
'Counted per UTC day, kept for this month and the two before. Never what was asked.';
@override
String assistantRequests(int count) {
String _temp0 = intl.Intl.pluralLogic(
count,
locale: localeName,
other: '$count requests',
one: '1 request',
);
return '$_temp0';
}
@override
String assistantTokens(String amount) {
return '$amount tokens';
}
@override
String get assistantsTitle => 'Assistants';
@override
String assistantModelAt(String model, String host) {
return '$model at $host';
}
@override
String assistantLeftToday(String left, String limit) {
return '$left of $limit left today';
}
@override
String assistantLeftThisMonth(String left, String limit) {
return '$left of $limit left this month';
}
@override
String get assistantAgree => 'Read and agree';
@override
String get assistantWaitsForLimits => 'Waits for its limits to be set again';
@override
String get assistantYourUse => 'Your use';
@override
String assistantPrivacyPage(String instance) {
return 'What goes where on $instance';
}
@override
String get assistantOwnTitle => 'With your own key';
@override
String get assistantOwnAdd => 'Add an assistant with your own key';
@override
String get assistantOwnNote =>
'The app asks your provider directly: this instance sees neither your key nor your questions, and counts nothing. The key is kept in your settings, encrypted on your devices.';
@override
String get assistantOwnEdit => 'Your own key';
@override
String get assistantOwnName => 'Name';
@override
String get assistantOwnProtocol => 'API';
@override
String get assistantOwnBaseUrl => 'Address';
@override
String get assistantOwnBaseUrlHelper =>
'Empty for the provider\'s own. Mistral, OpenRouter or a model of your own: its address with /v1.';
@override
String get assistantOwnBaseUrlInvalid =>
'Only https, or http on your own network';
@override
String get assistantOwnModel => 'Model';
@override
String get assistantOwnKey => 'Key';
@override
String get assistantOwnKeyHelper =>
'Empty for a model of your own that takes none.';
@override
String get assistantOwnImages => 'Reads images';
@override
String get assistantOwnSave => 'Save';
@override
String get assistantOwnRemove => 'Remove';
@override
String assistantOwnRemoveTitle(String name) {
return 'Remove $name?';
}
@override
String get assistantOwnRemoveMessage =>
'Its key goes from your settings on every device.';
@override
String get assistantOwnRefused =>
'The key wasn\'t kept: this device can\'t encrypt your settings yet. Open your account\'s keys here first.';
@override
String assistantOwnNotAllowed(String instance) {
return 'Whoever runs $instance doesn\'t allow own keys here, so the app doesn\'t ask these.';
}
@override
String assistantConsentTitle(String name) {
return 'Before you ask $name';
}
@override
String assistantConsentModel(String model, String host) {
return 'It answers with the model $model at $host.';
}
@override
String get assistantConsentWhatGoes =>
'Only what you send goes there: your question and what you pick of what it is about. The provider\'s own terms apply to it.';
@override
String get assistantConsentImages => 'It reads the images you add.';
@override
String assistantConsentInstance(String instance) {
return 'It passes through $instance on its way, which keeps none of it.';
}
@override
String assistantConsentOperator(String instance) {
return 'Whoever runs $instance sees how much you use it (requests, tokens, cost), never what you ask.';
}
@override
String get assistantConsentConversations =>
'Your conversations are kept on your devices, encrypted.';
@override
String get assistantConsentAgree => 'Agree';
@override
String assistantConsentAgreedOn(String date) {
return 'You agreed on $date.';
}
@override
String get assistantProblemNotGranted =>
'This assistant isn\'t granted to you any more.';
@override
String get assistantProblemNotAgreed => 'Agree to what goes where first.';
@override
String assistantProblemLimitReached(String time) {
return 'Its limit is reached until $time.';
}
@override
String get assistantProblemLimitReachedNow => 'Its limit is reached for now.';
@override
String get assistantProblemLimitOutdated =>
'It waits for its limits to be set again.';
@override
String get assistantProblemImagesNotRead => 'It reads no images.';
@override
String get assistantProblemMalformed => 'This question can\'t be sent.';
@override
String get assistantProblemTooLarge =>
'This question is too long, or holds too many or too large images.';
@override
String get assistantProblemTooManyAtOnce =>
'Wait for the answers on their way first.';
@override
String get assistantProblemProviderKey => 'The provider refused the key.';
@override
String get assistantProblemProviderBusy =>
'The provider is busy. Try again in a moment.';
@override
String get assistantProblemProviderRefused =>
'The provider refused this question.';
@override
String get assistantProblemProviderFailed =>
'The provider failed. Try again.';
@override
String get assistantProblemNotAllowed =>
'Only people it is granted to can do this.';
@override
String get assistantProblemFailed => 'That didn\'t work. Try again.';
}
/// 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');
}