halkyon/packages/halkyon_app/lib/l10n/halkyon_app_localizations_en.dart
Tizian 「ティツィアーン」 7aee78bd87
feat(base,app,learn,todo,train,meditate): agent accounts with tokens
ADR 0044's step 6a (D42, D43, D45): accounts for programs, such as AI
assistants, that an identified person makes from the Profile.

halkyon_base keeps them on the instance's register, which its members
ask: an agent is an account (agent_account: its owner, its name, its
public keys, set by itself once) with one token (agent_token: 32
random bytes, kept as their SHA-256 alone, shown once). agents.create,
mine, newToken, revoke, delete and setKeys serve its owner;
agentSignIn.signIn exchanges the token for an ordinary server-side
session of a day, with the scopes identified and agent, at most 60
sign-ins an hour from a network. Revoking a token or making a new one
ends the agent's sessions; a token unused for 90 days lapses in every
service's pruning. Up to 5 agents a person, where the operator didn't
switch them off (AGENTS=off; said on the privacy page and in
instance.basics). An agent makes no agents, creates or owns no shared
space, is invited and raised as a Viewer alone, is never handed a
space on, is named no operator and granted no assistants; each refusal
has its test. Deleting a person deletes their agents first; an agent's
public profile names whose agent it is.

In the apps, every Profile has an Agents card (halkyon_app's
AgentsSection): made with a name and a handle, its token shown once to
copy, a new token, the token taken back, deleted. Learn's Share sheet
marks an agent among the members and offers it no role above Viewer.

The migrations, the module's and each host's (Learn, Meditate, Todo,
Train), are additive alone: CREATE TABLE "agent_account" with a unique
index on "agentId" (one row an agent account) and one on "ownerId" (a
person's agents, and deleting them with the person), and CREATE TABLE
"agent_token" with unique indexes on "agentId" (one token an agent)
and "tokenHash" (the sign-in finds the token by its hash). No existing
table is touched, so the server before the deploy keeps working on the
migrated database.

Whats-New: Make agents in your Profile: accounts for programs such as AI assistants, which sign in with a token and see only what you share with them.
Whats-New-De: Leg in deinem Profil Agenten an: Konten für Programme wie KI-Assistenten, die sich mit einem Token anmelden und nur sehen, was du mit ihnen teilst.

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

2161 lines
59 KiB
Dart
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

// 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 passwordAuthenticatorKeyCopied =>
'Key copied. It\'s taken off the clipboard again in a minute.';
@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 passwordPhraseNotAWord =>
'Not a word a recovery phrase is made of';
@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 operatorOperatorsCount(int count) {
String _temp0 = intl.Intl.pluralLogic(
count,
locale: localeName,
other: '$count operators',
one: '1 operator',
);
return '$_temp0';
}
@override
String get operatorAccountsTitle => 'Accounts';
@override
String operatorAccountsCount(int count) {
String _temp0 = intl.Intl.pluralLogic(
count,
locale: localeName,
other: '$count accounts',
one: '1 account',
);
return '$_temp0';
}
@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 operatorHandleSuggested =>
'Only handles there are here are suggested.';
@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 assistantSetCount(int count) {
String _temp0 = intl.Intl.pluralLogic(
count,
locale: localeName,
other: '$count assistants',
one: '1 assistant',
zero: 'None set up',
);
return '$_temp0';
}
@override
String assistantPeopleCount(int count) {
String _temp0 = intl.Intl.pluralLogic(
count,
locale: localeName,
other: '$count people',
one: '1 person',
zero: 'nobody granted',
);
return '$_temp0';
}
@override
String get assistantSetUpTitle => 'Set up here';
@override
String get assistantPeopleTitle => 'People';
@override
String get assistantGranteesFoundNone =>
'Nobody with an assistant has a handle starting like this.';
@override
String get assistantUnpriced => 'No prices: counts its tokens only';
@override
String assistantEffort(String effort) {
String _temp0 = intl.Intl.selectLogic(
effort,
{
'low': 'low',
'medium': 'medium',
'high': 'high',
'xhigh': 'extra high',
'max': 'max',
'other': '$effort',
},
);
return '$_temp0';
}
@override
String assistantEffortName(String effort) {
String _temp0 = intl.Intl.selectLogic(
effort,
{
'low': 'Low',
'medium': 'Medium',
'high': 'High',
'xhigh': 'Extra high',
'max': 'Max',
'other': '$effort',
},
);
return '$_temp0';
}
@override
String assistantEffortSetUp(String effort, String max) {
return 'Effort $effort, up to $max';
}
@override
String assistantEffortFixed(String effort) {
return 'Effort $effort';
}
@override
String assistantNameUnset(String name) {
return '$name (no longer set up)';
}
@override
String assistantNotAgreedCount(int count) {
String _temp0 = intl.Intl.pluralLogic(
count,
locale: localeName,
other: '$count not agreed to yet',
one: '1 not agreed to yet',
);
return '$_temp0';
}
@override
String get assistantGrant => 'Grant assistants';
@override
String get assistantGrantSave => 'Grant';
@override
String get assistantGrantChange => 'Change assistants';
@override
String get assistantGrantLimitHelper =>
'Empty for none. Days and months are UTC\'s.';
@override
String get assistantGrantBudget => 'Budget, for all of them together';
@override
String get assistantGrantMoneyDaily => 'Money a day';
@override
String get assistantGrantMoneyMonthly => 'Money a month';
@override
String get assistantGrantTokensDaily => 'Tokens a day';
@override
String get assistantGrantTokensMonthly => 'Tokens a month';
@override
String get assistantGrantMoneyNote =>
'Money counts the assistants with prices, tokens count every one. Whichever runs out first stops them.';
@override
String assistantGrantReplaces(int count) {
String _temp0 = intl.Intl.pluralLogic(
count,
locale: localeName,
other: 'Granting replaces the budgets these people have:',
one: 'Granting replaces the budget this person has:',
);
return '$_temp0';
}
@override
String assistantGrantUnsetDropped(String names) {
return 'Saving takes back what is no longer set up: $names.';
}
@override
String get assistantGrantLimitInvalid => 'Not a number this takes';
@override
String get assistantGrantTokens => 'tokens';
@override
String get assistantGrantNote =>
'They agree once to what goes where before they ask one. Assistants they have already stay. 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 assistantRevoke => 'Take back';
@override
String get assistantRevokeAllTitle => 'Take back every assistant?';
@override
String get assistantRevokeMessage =>
'They can no longer ask any of them, and their budget goes. 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 assistantYourBudget => 'Your budget, for all of them';
@override
String get assistantAgree => 'Read and agree';
@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 assistantConsentProvider(String host) {
return 'It holds for every assistant at $host.';
}
@override
String get assistantConsentWhatGoes =>
'Only what you send goes there: your question, what you pick of what it is about, and what it looks up where you let it. 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 encrypted: only your devices can read them.';
@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 get assistantProblemInvalidEffort =>
'It doesn\'t think at this effort.';
@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 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.';
@override
String get whatsNewTitle => 'What\'s new';
@override
String whatsNewVersion(String version) {
return 'Version $version';
}
@override
String get profileIdentified => 'Your progress is kept with your account.';
@override
String get profileProblemAvatarInvalid =>
'This picture can\'t be used: choose a PNG, JPEG, WebP or GIF image.';
@override
String get profileProblemBioTooLong => 'At most 500 characters.';
@override
String get profileProblemDisplayNameTooLong => 'At most 30 characters.';
@override
String get profileProblemHandleInvalid =>
'A handle is 1 to 30 letters (a to z), digits or underscores.';
@override
String get profileProblemHandleReserved =>
'This handle is kept for the instance.';
@override
String get profileProblemHandleTaken => 'Someone else has this handle.';
@override
String get profileProblemLinkInvalid =>
'Links start with https:// or http://.';
@override
String get profileProblemPublished =>
'You have published: your handle can\'t change, nor your profile go.';
@override
String get profileProblemTooManyHandleChecks =>
'Too many handles were tried. Try again in an hour.';
@override
String get profileProblemTooManyLinkChecks =>
'The links were checked too often. Try again in an hour.';
@override
String get profileProblemTooManyLinks => 'At most 4 links.';
@override
String get profileSheetNotFound => 'Nobody on this instance has this handle.';
@override
String get profileSheetTitle => 'Profile';
@override
String get profileSheetUnreachable =>
'The profile couldn’t be loaded. Check your connection.';
@override
String get profileSignInWays => 'Ways to sign in';
@override
String get profileTabProfile => 'Profile';
@override
String get profileTitle => 'Profile';
@override
String get profileWayEmail => 'Email address';
@override
String get profileWayLinked => 'Signs you in';
@override
String get publicProfileAddLink => 'Add link';
@override
String publicProfileAddress(String address) {
return 'Others find you as @$address';
}
@override
String publicProfileAddressPrivate(String address) {
return 'Private until you fill in your profile or publish something; then others find you as @$address.';
}
@override
String get publicProfileBio => 'Bio';
@override
String get publicProfileCheckLinks => 'Check links';
@override
String get publicProfileChoosePicture => 'Choose picture';
@override
String get publicProfileDisplayName => 'Display name';
@override
String get publicProfileDisplayNameHint =>
'The name shown beside your handle';
@override
String get publicProfileFailed => 'Couldn\'t reach the instance. Try again.';
@override
String get publicProfileHandle => 'Handle';
@override
String get publicProfileHandleChangeTitle => 'Change your handle';
@override
String get publicProfileHandleChecking => 'Checking…';
@override
String get publicProfileHandleChoose => 'Choose a handle';
@override
String get publicProfileHandleChooseTitle => 'Choose your handle';
@override
String get publicProfileHandleConfirmChange => 'Change';
@override
String get publicProfileHandleConfirmChoose => 'Choose';
@override
String get publicProfileHandleDialogText =>
'Others find you by your handle. You can change it until you first publish a studyset.';
@override
String get publicProfileHandleFirst =>
'Choose your handle first: your profile is made with it, and saves as you write from then on.';
@override
String get publicProfileHandleFixed =>
'Fixed since you published: others refer to it.';
@override
String publicProfileHandleFree(String handle) {
return '@$handle is free';
}
@override
String get publicProfileHandleHint =>
'Letters, digits and underscores, up to 30';
@override
String get publicProfileHandleYours => 'This is your handle';
@override
String get publicProfileIntro =>
'How others see you once you publish: the handle they find you by, your name, a few words and links. It saves as you write, once you have chosen your handle.';
@override
String get publicProfileLinkHint => 'https://…';
@override
String get publicProfileLinkVerified => 'Links back to your profile';
@override
String get publicProfileLinks => 'Links';
@override
String publicProfileLinksChecked(int count, int verified) {
String _temp0 = intl.Intl.pluralLogic(
count,
locale: localeName,
other: 'Checked: $verified of $count links link back to your profile.',
one: 'Checked: $verified of 1 link links back to your profile.',
);
return '$_temp0';
}
@override
String get publicProfileLinksHint => 'Your site or other accounts, up to 4.';
@override
String publicProfilePage(String url) {
return 'Your profile page: $url';
}
@override
String get publicProfilePageCopied => 'Address copied.';
@override
String get publicProfilePageCopy => 'Copy the address';
@override
String get publicProfilePicture => 'Picture';
@override
String get publicProfilePictureLater =>
'Choose your handle to add a picture.';
@override
String get publicProfilePictureType => 'Images';
@override
String get publicProfileRemove => 'Remove profile';
@override
String get publicProfileRemoveLink => 'Remove link';
@override
String get publicProfileRemoveMessage =>
'Your display name, bio, links and picture are removed. Your handle stays yours and private until you fill in your profile again or publish something.';
@override
String get publicProfileRemovePicture => 'Remove picture';
@override
String get publicProfileRemoveTitle => 'Remove your public profile?';
@override
String get publicProfileRemoved => 'Profile removed.';
@override
String get publicProfileRetry => 'Retry';
@override
String get publicProfileSavedNow => 'Saved';
@override
String get publicProfileSaving => 'Saving…';
@override
String get publicProfileTitle => 'Public profile';
@override
String get publicProfileUnreachable =>
'Your public profile can\'t be reached right now.';
@override
String get publicProfileVerifyHint =>
'A link gets a checkmark once its page links back to your profile page with rel=\"me\", as Mastodon checks links.';
@override
String get profileAccount => 'Account';
@override
String get profileSheetLinkVerified => 'Links back to this profile';
@override
String get speechNoRecognizer =>
'This device has no speech recognition installed. Install one, such as FUTO Voice Input or Google\'s speech services, then try again.';
@override
String get lookAppearance => 'Appearance';
@override
String get lookAppearanceDevice => 'Device theme';
@override
String get lookAppearanceLight => 'Light';
@override
String get lookAppearanceDark => 'Dark';
@override
String get lookLanguage => 'Language';
@override
String get lookLanguageDevice => 'Device language';
@override
String get syncStateHeldBack => 'Held back on mobile data';
@override
String get syncFilesHeld => 'Files wait for Wi-Fi';
@override
String get mobileDataTitle => 'On mobile data';
@override
String get mobileDataAsk => 'Ask first';
@override
String get mobileDataWithoutFiles => 'Sync without files';
@override
String get mobileDataEverything => 'Sync everything';
@override
String mobileDataBanner(int count) {
String _temp0 = intl.Intl.pluralLogic(
count,
locale: localeName,
other: '$count changes waiting',
one: '1 change waiting',
zero: 'sync paused',
);
return 'On mobile data · $_temp0';
}
@override
String get mobileDataBannerWithoutFiles => 'Without files';
@override
String get mobileDataBannerNotNow => 'Not now';
@override
String get agentsTitle => 'Agents';
@override
String get agentsIntro =>
'An agent is an account of yours for a program, such as an AI assistant. It signs in with a token, sees only what you invite it to, as a Viewer, and suggests changes rather than making them.';
@override
String get agentsNone => 'No agents yet.';
@override
String get agentsMake => 'Make an agent';
@override
String get agentsName => 'Name';
@override
String get agentsMakeAction => 'Make';
@override
String agentsTokenTitle(String handle) {
return 'Token for @$handle';
}
@override
String get agentsTokenBody =>
'Give this token to the program the agent is for. It\'s shown only now: if it\'s lost, make a new one. Unused for 90 days, it lapses.';
@override
String get agentsTokenCopy => 'Copy token';
@override
String get agentsTokenCopied => 'Token copied';
@override
String get agentsDone => 'Done';
@override
String agentsLastUsed(String handle, String date) {
return '@$handle · signed in $date';
}
@override
String agentsNeverUsed(String handle) {
return '@$handle · never signed in';
}
@override
String agentsNoToken(String handle) {
return '@$handle · no token';
}
@override
String get agentsNewToken => 'New token';
@override
String get agentsRevoke => 'Take back token';
@override
String agentsRevokeTitle(String handle) {
return 'Take back @$handle\'s token?';
}
@override
String get agentsRevokeMessage =>
'It signs in no more, and its sessions end, until you give it a new token.';
@override
String get agentsDelete => 'Delete';
@override
String agentsDeleteTitle(String handle) {
return 'Delete @$handle?';
}
@override
String get agentsDeleteMessage =>
'Its account goes, and with it its memberships.';
@override
String agentsActions(String handle) {
return 'Options for @$handle';
}
@override
String get agentProblemAgentsOff => 'This instance doesn\'t allow agents.';
@override
String agentProblemTooMany(int count) {
return 'You have as many agents as you may ($count).';
}
@override
String get agentProblemNameTooLong => 'This name is too long.';
@override
String get agentProblemNotFound => 'This agent is gone.';
@override
String get agentProblemFailed =>
'The instance couldn\'t be reached. Try again.';
@override
String agentOf(String owner) {
return 'Agent of @$owner';
}
@override
String get operatorIsAgent =>
'An agent can\'t be an operator or be granted assistants.';
}
/// 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');
}