ADR 0021, D9 and D17. Before a question sends a private studyset's content to a remote model, through the parts chosen or a wider reach with private studysets switched on, a warning names the studysets, the provider's host and its terms (where checked: Anthropic, OpenAI, Google, OpenRouter), and is asked once per studyset and assistant: the agreement is kept in the person's sealed settings (schema 13, privateAgreements, folded only where both rows hold it), shown in the studyset's privacy dialog with Take back, and marked on the folded button while it holds. Follow-ups and Try again ask again once taken back, as the scope keeps where the parts came from (partsFrom). No warning for an own assistant on this machine (loopback or localhost, halkyon_llm's LlmEndpoint.onThisMachine); the local network may be shared. Texts that step 3 made untrue: the consent sheet now says what an assistant looks up goes too and that conversations are kept encrypted for the person's devices; the privacy dialogs no longer mention showing a studyset to Claude; the privacy page says what is looked up and when a private studyset goes. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
1604 lines
46 KiB
Dart
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, 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 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');
|
|
}
|