halkyon_app's WhatsNew reads what each release changed from the app's assets/whats_new/ (<version>.<language>.txt, English and German, a change a line): after an update a sheet lists every release since the one the device showed last, newest first, once; Settings shows the running version's again, above About. Nothing on a fresh install. tool/release.dart drafts the missing texts from the commits that count after "Go on?" (German marked TRANSLATE:), opens them in the editor until they fit (no mark left, F-Droid's 500 characters) and commits them with the version. The English is the Forgejo notes' What's new, each language F-Droid's changelog of the build, written at publishing and copied in by tool/fdroid_repo.sh. Learn and Train bundle their texts, Learn's 0.22.0 and Train's 0.1.0 written to start. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
2831 lines
93 KiB
Dart
2831 lines
93 KiB
Dart
import 'dart:async';
|
||
|
||
import 'package:flutter/foundation.dart';
|
||
import 'package:flutter/widgets.dart';
|
||
import 'package:flutter_localizations/flutter_localizations.dart';
|
||
import 'package:intl/intl.dart' as intl;
|
||
|
||
import 'halkyon_app_localizations_de.dart';
|
||
import 'halkyon_app_localizations_en.dart';
|
||
|
||
// ignore_for_file: type=lint
|
||
|
||
/// Callers can lookup localized strings with an instance of HalkyonAppLocalizations
|
||
/// returned by `HalkyonAppLocalizations.of(context)`.
|
||
///
|
||
/// Applications need to include `HalkyonAppLocalizations.delegate()` in their app's
|
||
/// `localizationDelegates` list, and the locales they support in the app's
|
||
/// `supportedLocales` list. For example:
|
||
///
|
||
/// ```dart
|
||
/// import 'l10n/halkyon_app_localizations.dart';
|
||
///
|
||
/// return MaterialApp(
|
||
/// localizationsDelegates: HalkyonAppLocalizations.localizationsDelegates,
|
||
/// supportedLocales: HalkyonAppLocalizations.supportedLocales,
|
||
/// home: MyApplicationHome(),
|
||
/// );
|
||
/// ```
|
||
///
|
||
/// ## Update pubspec.yaml
|
||
///
|
||
/// Please make sure to update your pubspec.yaml to include the following
|
||
/// packages:
|
||
///
|
||
/// ```yaml
|
||
/// dependencies:
|
||
/// # Internationalization support.
|
||
/// flutter_localizations:
|
||
/// sdk: flutter
|
||
/// intl: any # Use the pinned version from flutter_localizations
|
||
///
|
||
/// # Rest of dependencies
|
||
/// ```
|
||
///
|
||
/// ## iOS Applications
|
||
///
|
||
/// iOS applications define key application metadata, including supported
|
||
/// locales, in an Info.plist file that is built into the application bundle.
|
||
/// To configure the locales supported by your app, you’ll need to edit this
|
||
/// file.
|
||
///
|
||
/// First, open your project’s ios/Runner.xcworkspace Xcode workspace file.
|
||
/// Then, in the Project Navigator, open the Info.plist file under the Runner
|
||
/// project’s Runner folder.
|
||
///
|
||
/// Next, select the Information Property List item, select Add Item from the
|
||
/// Editor menu, then select Localizations from the pop-up menu.
|
||
///
|
||
/// Select and expand the newly-created Localizations item then, for each
|
||
/// locale your application supports, add a new item and select the locale
|
||
/// you wish to add from the pop-up menu in the Value field. This list should
|
||
/// be consistent with the languages listed in the HalkyonAppLocalizations.supportedLocales
|
||
/// property.
|
||
abstract class HalkyonAppLocalizations {
|
||
HalkyonAppLocalizations(String locale)
|
||
: localeName = intl.Intl.canonicalizedLocale(locale.toString());
|
||
|
||
final String localeName;
|
||
|
||
static HalkyonAppLocalizations of(BuildContext context) {
|
||
return Localizations.of<HalkyonAppLocalizations>(
|
||
context,
|
||
HalkyonAppLocalizations,
|
||
)!;
|
||
}
|
||
|
||
static const LocalizationsDelegate<HalkyonAppLocalizations> delegate =
|
||
_HalkyonAppLocalizationsDelegate();
|
||
|
||
/// A list of this localizations delegate along with the default localizations
|
||
/// delegates.
|
||
///
|
||
/// Returns a list of localizations delegates containing this delegate along with
|
||
/// GlobalMaterialLocalizations.delegate, GlobalCupertinoLocalizations.delegate,
|
||
/// and GlobalWidgetsLocalizations.delegate.
|
||
///
|
||
/// Additional delegates can be added by appending to this list in
|
||
/// MaterialApp. This list does not have to be used at all if a custom list
|
||
/// of delegates is preferred or required.
|
||
static const List<LocalizationsDelegate<dynamic>> localizationsDelegates =
|
||
<LocalizationsDelegate<dynamic>>[
|
||
delegate,
|
||
GlobalMaterialLocalizations.delegate,
|
||
GlobalCupertinoLocalizations.delegate,
|
||
GlobalWidgetsLocalizations.delegate,
|
||
];
|
||
|
||
/// A list of this localizations delegate's supported locales.
|
||
static const List<Locale> supportedLocales = <Locale>[
|
||
Locale('de'),
|
||
Locale('en'),
|
||
Locale('en', 'GB'),
|
||
Locale('en', 'US'),
|
||
];
|
||
|
||
/// No description provided for @tryAgain.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Try again'**
|
||
String get tryAgain;
|
||
|
||
/// Screen readers hear it for the wordmark on the first start.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Welcome to {app}'**
|
||
String instanceWelcome(String app);
|
||
|
||
/// No description provided for @instanceBuiltInTagline.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Comes with the app'**
|
||
String get instanceBuiltInTagline;
|
||
|
||
/// No description provided for @instanceAnother.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Another instance'**
|
||
String get instanceAnother;
|
||
|
||
/// No description provided for @instanceAnotherTagline.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Enter its address'**
|
||
String get instanceAnotherTagline;
|
||
|
||
/// No description provided for @instanceAddress.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Instance address'**
|
||
String get instanceAddress;
|
||
|
||
/// No description provided for @instanceAddressInvalid.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'This isn\'t an address.'**
|
||
String get instanceAddressInvalid;
|
||
|
||
/// No description provided for @instanceAddressInsecure.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'{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.'**
|
||
String instanceAddressInsecure(String app);
|
||
|
||
/// No description provided for @instanceInsecure.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'{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.'**
|
||
String instanceInsecure(String name, String app);
|
||
|
||
/// No description provided for @instanceInsecureUseAnother.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Use another instance'**
|
||
String get instanceInsecureUseAnother;
|
||
|
||
/// No description provided for @instanceInsecureRemove.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Remove from this device'**
|
||
String get instanceInsecureRemove;
|
||
|
||
/// No description provided for @instanceAddressRequired.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Enter the address of an instance.'**
|
||
String get instanceAddressRequired;
|
||
|
||
/// No description provided for @instanceContinue.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Continue'**
|
||
String get instanceContinue;
|
||
|
||
/// No description provided for @instanceUnreachable.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'No instance of {app} answers at {name}.'**
|
||
String instanceUnreachable(String app, String name);
|
||
|
||
/// No description provided for @instanceUseBuiltIn.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Use {name}'**
|
||
String instanceUseBuiltIn(String name);
|
||
|
||
/// No description provided for @instanceOpenFailed.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Couldn\'t open the app on {name}.'**
|
||
String instanceOpenFailed(String name);
|
||
|
||
/// No description provided for @instanceDataAndBackupsIn.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Data and backups: {place}'**
|
||
String instanceDataAndBackupsIn(String place);
|
||
|
||
/// No description provided for @instanceDataIn.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Data: {place}'**
|
||
String instanceDataIn(String place);
|
||
|
||
/// No description provided for @instanceBackupsIn.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Backups: {place}'**
|
||
String instanceBackupsIn(String place);
|
||
|
||
/// No description provided for @instanceNoBackups.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'No backups'**
|
||
String get instanceNoBackups;
|
||
|
||
/// No description provided for @instanceEuropeanUnion.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'European Union'**
|
||
String get instanceEuropeanUnion;
|
||
|
||
/// A country of the European Union, where an instance keeps data: Germany (EU).
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'{country} (EU)'**
|
||
String instanceCountryInEu(String country);
|
||
|
||
/// A state or region with its country, where an instance keeps data: California, United States.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'{subdivision}, {country}'**
|
||
String instanceSubdivisionOf(String subdivision, String country);
|
||
|
||
/// No description provided for @accountsTitle.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Accounts'**
|
||
String get accountsTitle;
|
||
|
||
/// No description provided for @accountAdd.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Add account'**
|
||
String get accountAdd;
|
||
|
||
/// No description provided for @accountAddSubtitle.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Choose the instance for the account to add.'**
|
||
String get accountAddSubtitle;
|
||
|
||
/// No description provided for @accountSignedIn.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Signed in'**
|
||
String get accountSignedIn;
|
||
|
||
/// No description provided for @accountRemoveTooltip.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Remove account'**
|
||
String get accountRemoveTooltip;
|
||
|
||
/// No description provided for @accountRemoveTitle.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Remove account?'**
|
||
String get accountRemoveTitle;
|
||
|
||
/// No description provided for @accountRemoveMessage.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'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.'**
|
||
String accountRemoveMessage(String name);
|
||
|
||
/// No description provided for @accountRemoveConfirm.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Remove'**
|
||
String get accountRemoveConfirm;
|
||
|
||
/// No description provided for @accountSignedInOn.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Signed in on {instance}'**
|
||
String accountSignedInOn(String instance);
|
||
|
||
/// No description provided for @accountSwitch.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Switch account'**
|
||
String get accountSwitch;
|
||
|
||
/// No description provided for @accountSignOut.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Sign out'**
|
||
String get accountSignOut;
|
||
|
||
/// No description provided for @accountDelete.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Delete account'**
|
||
String get accountDelete;
|
||
|
||
/// No description provided for @accountDeleteTitle.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Delete your account?'**
|
||
String get accountDeleteTitle;
|
||
|
||
/// No description provided for @accountSignOutFailed.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Couldn\'t sign out on this device. Try again.'**
|
||
String get accountSignOutFailed;
|
||
|
||
/// No description provided for @accountDeleteFailed.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Couldn\'t delete your account: the instance wasn\'t reached. Try again.'**
|
||
String get accountDeleteFailed;
|
||
|
||
/// No description provided for @aboutSourceCode.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'The source of what this instance runs:'**
|
||
String get aboutSourceCode;
|
||
|
||
/// No description provided for @aboutSourceUnreachable.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Couldn\'t reach this instance to ask where its source is.'**
|
||
String get aboutSourceUnreachable;
|
||
|
||
/// No description provided for @sessionUnreachable.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Couldn\'t reach the server.'**
|
||
String get sessionUnreachable;
|
||
|
||
/// No description provided for @personDataFailed.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Couldn\'t open this device\'s data.'**
|
||
String get personDataFailed;
|
||
|
||
/// No description provided for @startSignedOut.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Signed out'**
|
||
String get startSignedOut;
|
||
|
||
/// No description provided for @startOn.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Start on {instance}:'**
|
||
String startOn(String instance);
|
||
|
||
/// No description provided for @startOtherInstance.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Use another instance'**
|
||
String get startOtherInstance;
|
||
|
||
/// On the start screen, where the instance offers neither SimpleLogin nor a password (ADR 0020, D4): nobody can make an account there.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'{instance} offers no way to create an account.'**
|
||
String startNoWay(String instance);
|
||
|
||
/// On the start screen, where new accounts wait for the operator's approval (Halkyon Learn's ADR 0021, D19).
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'New accounts on {instance} wait until its operator approves them.'**
|
||
String startSignUpsApproved(String instance);
|
||
|
||
/// On the start screen, where the operator takes no new accounts (D19); Create an account is gone.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'{instance} takes no new accounts: sign in with yours.'**
|
||
String startSignUpsClosed(String instance);
|
||
|
||
/// No description provided for @syncTitle.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Sync'**
|
||
String get syncTitle;
|
||
|
||
/// No description provided for @syncNow.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Sync now'**
|
||
String get syncNow;
|
||
|
||
/// No description provided for @syncStateSyncing.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Syncing…'**
|
||
String get syncStateSyncing;
|
||
|
||
/// No description provided for @syncStateSynced.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Everything synced'**
|
||
String get syncStateSynced;
|
||
|
||
/// No description provided for @syncStateFailing.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Sync is failing'**
|
||
String get syncStateFailing;
|
||
|
||
/// No description provided for @syncStateNotYet.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Not synced yet'**
|
||
String get syncStateNotYet;
|
||
|
||
/// No description provided for @syncStateMismatch.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'This app can\'t sync with {server}'**
|
||
String syncStateMismatch(String server);
|
||
|
||
/// No description provided for @syncMismatchDetail.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'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.'**
|
||
String get syncMismatchDetail;
|
||
|
||
/// No description provided for @syncLastCompleted.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Last completed at {time}'**
|
||
String syncLastCompleted(String time);
|
||
|
||
/// No description provided for @syncLastFailed.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Last attempt failed at {time}'**
|
||
String syncLastFailed(String time);
|
||
|
||
/// No description provided for @syncNoRunYet.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'No sync has completed since the app started'**
|
||
String get syncNoRunYet;
|
||
|
||
/// No description provided for @syncPending.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'{count, plural, =1{1 change waits to sync} other{{count} changes wait to sync}}'**
|
||
String syncPending(int count);
|
||
|
||
/// No description provided for @syncTroubleLabel.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Sync needs attention'**
|
||
String get syncTroubleLabel;
|
||
|
||
/// No description provided for @syncMismatchBanner.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'This app can\'t sync with {server} any more. Update it to keep syncing.'**
|
||
String syncMismatchBanner(String server);
|
||
|
||
/// No description provided for @syncMismatchMore.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'More'**
|
||
String get syncMismatchMore;
|
||
|
||
/// No description provided for @startSignIn.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Sign in'**
|
||
String get startSignIn;
|
||
|
||
/// No description provided for @startCreateAccount.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Create an account'**
|
||
String get startCreateAccount;
|
||
|
||
/// On the wait screen of a new account (D31), under its handle.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Your account waits until the operator of {instance} approves it.'**
|
||
String waitWaiting(String instance);
|
||
|
||
/// On the wait screen of a suspended account (D31).
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'The operator of {instance} has suspended your account. Only they can lift it.'**
|
||
String waitSuspended(String instance);
|
||
|
||
/// On the wait screen once the account is approved (D31), above Sign in.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'The operator of {instance} has approved your account. Sign in once more, as you did before.'**
|
||
String waitApproved(String instance);
|
||
|
||
/// On the wait screen once the instance knows the wait no more: refused, past its 14 days, or its pass past its 30 (D31).
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'This sign-up has ended: the operator of {instance} refused it, or it waited too long.'**
|
||
String waitEnded(String instance);
|
||
|
||
/// The button of an ended wait: the start screen.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Back to the start'**
|
||
String get waitBack;
|
||
|
||
/// Above the four words the operator reads out for the person to match (D33).
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Matching code'**
|
||
String get waitMatchingCode;
|
||
|
||
/// Under the matching code (D33): the operator reads, the person confirms, so nobody posing as the operator learns the words.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'When the operator of {instance} reads you four words, check that they are these. Never read them out yourself: Halkyon never asks anyone to.'**
|
||
String waitMatchingNote(String instance);
|
||
|
||
/// Asks the instance at once where the wait stands; it asks every 30 seconds by itself.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Check now'**
|
||
String get waitCheckNow;
|
||
|
||
/// On the wait screen, when asking where the wait stands failed.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'{instance} couldn\'t be reached. It\'s asked again every 30 seconds.'**
|
||
String waitUnreachable(String instance);
|
||
|
||
/// On the wait screen of a new account: deletes it with its pass (D31).
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Delete this account'**
|
||
String get waitDelete;
|
||
|
||
/// The question before a waiting account is deleted.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Delete this account?'**
|
||
String get waitDeleteTitle;
|
||
|
||
/// Under that question.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'It goes with everything it has, and nobody can sign in to it again.'**
|
||
String get waitDeleteMessage;
|
||
|
||
/// On the wait screen, when deleting the account failed.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Couldn\'t delete the account. Try again.'**
|
||
String get waitDeleteFailed;
|
||
|
||
/// No description provided for @passwordAddress.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Email address'**
|
||
String get passwordAddress;
|
||
|
||
/// No description provided for @passwordPassword.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Password'**
|
||
String get passwordPassword;
|
||
|
||
/// No description provided for @passwordNewPassword.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'New password'**
|
||
String get passwordNewPassword;
|
||
|
||
/// No description provided for @passwordCurrent.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Current password'**
|
||
String get passwordCurrent;
|
||
|
||
/// No description provided for @passwordRepeat.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'New password again'**
|
||
String get passwordRepeat;
|
||
|
||
/// No description provided for @passwordsDiffer.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'The two passwords differ.'**
|
||
String get passwordsDiffer;
|
||
|
||
/// No description provided for @passwordShow.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Show password'**
|
||
String get passwordShow;
|
||
|
||
/// No description provided for @passwordHide.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Hide password'**
|
||
String get passwordHide;
|
||
|
||
/// No description provided for @passwordContinue.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Continue'**
|
||
String get passwordContinue;
|
||
|
||
/// No description provided for @passwordBack.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Back'**
|
||
String get passwordBack;
|
||
|
||
/// No description provided for @passwordDone.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Done'**
|
||
String get passwordDone;
|
||
|
||
/// No description provided for @passwordSave.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Save as a file'**
|
||
String get passwordSave;
|
||
|
||
/// No description provided for @passwordQrCode.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'QR code for your authenticator app'**
|
||
String get passwordQrCode;
|
||
|
||
/// No description provided for @passwordMailCode.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Code from the email'**
|
||
String get passwordMailCode;
|
||
|
||
/// No description provided for @passwordMailCodeSent.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'We emailed a code to {address}. It\'s valid for 15 minutes.'**
|
||
String passwordMailCodeSent(String address);
|
||
|
||
/// No description provided for @passwordHandleIntro.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'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.'**
|
||
String passwordHandleIntro(String address);
|
||
|
||
/// No description provided for @passwordResendCode.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Send a new code'**
|
||
String get passwordResendCode;
|
||
|
||
/// No description provided for @passwordTotpCode.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Code from your authenticator app'**
|
||
String get passwordTotpCode;
|
||
|
||
/// No description provided for @passwordRecoveryCode.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Recovery code'**
|
||
String get passwordRecoveryCode;
|
||
|
||
/// No description provided for @passwordUseRecoveryCode.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Use a recovery code instead'**
|
||
String get passwordUseRecoveryCode;
|
||
|
||
/// No description provided for @passwordUseTotpCode.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Use your authenticator app instead'**
|
||
String get passwordUseTotpCode;
|
||
|
||
/// No description provided for @passwordUnlocking.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Unlocking your password on this device…'**
|
||
String get passwordUnlocking;
|
||
|
||
/// No description provided for @passwordMakingKeys.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Making your keys on this device…'**
|
||
String get passwordMakingKeys;
|
||
|
||
/// No description provided for @passwordSignInTitle.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Sign in'**
|
||
String get passwordSignInTitle;
|
||
|
||
/// No description provided for @passwordSignInAction.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Sign in'**
|
||
String get passwordSignInAction;
|
||
|
||
/// No description provided for @passwordSignInIntro.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'With the email address and password of your account on {instance}.'**
|
||
String passwordSignInIntro(String instance);
|
||
|
||
/// No description provided for @passwordSecondFactorIntro.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Enter the code your authenticator app shows for {instance}.'**
|
||
String passwordSecondFactorIntro(String instance);
|
||
|
||
/// No description provided for @passwordRecoveryCodeIntro.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Enter one of the recovery codes you kept. Each signs in once.'**
|
||
String get passwordRecoveryCodeIntro;
|
||
|
||
/// No description provided for @passwordForgot.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Forgot your password?'**
|
||
String get passwordForgot;
|
||
|
||
/// No description provided for @passwordOtherPassword.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Change the address or password'**
|
||
String get passwordOtherPassword;
|
||
|
||
/// No description provided for @passwordLostAuthenticator.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Lost your authenticator?'**
|
||
String get passwordLostAuthenticator;
|
||
|
||
/// No description provided for @passwordLostAuthenticatorTitle.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Lost authenticator'**
|
||
String get passwordLostAuthenticatorTitle;
|
||
|
||
/// No description provided for @passwordLostAuthenticatorIntro.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'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.'**
|
||
String get passwordLostAuthenticatorIntro;
|
||
|
||
/// No description provided for @passwordResetWithMail.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Reset with a code by email'**
|
||
String get passwordResetWithMail;
|
||
|
||
/// No description provided for @passwordResetWithMailHint.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'We email a code to {address}.'**
|
||
String passwordResetWithMailHint(String address);
|
||
|
||
/// No description provided for @passwordResetWithPhrase.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Reset with your recovery phrase'**
|
||
String get passwordResetWithPhrase;
|
||
|
||
/// No description provided for @passwordResetWithPhraseHint.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'The 24 words you wrote down.'**
|
||
String get passwordResetWithPhraseHint;
|
||
|
||
/// No description provided for @passwordSignInWithoutCode.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Sign in without a code'**
|
||
String get passwordSignInWithoutCode;
|
||
|
||
/// No description provided for @passwordSignInWithoutCodeHint.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Once a reset you asked for has taken effect.'**
|
||
String get passwordSignInWithoutCodeHint;
|
||
|
||
/// No description provided for @passwordResetAction.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Reset'**
|
||
String get passwordResetAction;
|
||
|
||
/// No description provided for @passwordAuthenticatorResetAt.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'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.'**
|
||
String passwordAuthenticatorResetAt(String date);
|
||
|
||
/// No description provided for @passwordUnfinishedIntro.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Your account was never finished. We emailed a code to {address}: with it, you sign in and set up an authenticator.'**
|
||
String passwordUnfinishedIntro(String address);
|
||
|
||
/// No description provided for @passwordPhraseField.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Recovery phrase'**
|
||
String get passwordPhraseField;
|
||
|
||
/// No description provided for @passwordPhraseFieldHint.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'The 24 words, with spaces between them'**
|
||
String get passwordPhraseFieldHint;
|
||
|
||
/// No description provided for @passwordPhraseFieldIntro.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Enter your recovery phrase: it proves the account is yours.'**
|
||
String get passwordPhraseFieldIntro;
|
||
|
||
/// No description provided for @passwordAuthenticatorTitle.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Set up an authenticator'**
|
||
String get passwordAuthenticatorTitle;
|
||
|
||
/// No description provided for @passwordAuthenticatorIntro.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'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.'**
|
||
String get passwordAuthenticatorIntro;
|
||
|
||
/// No description provided for @passwordAuthenticatorKey.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Key'**
|
||
String get passwordAuthenticatorKey;
|
||
|
||
/// No description provided for @passwordAuthenticatorOpen.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Open in your authenticator app'**
|
||
String get passwordAuthenticatorOpen;
|
||
|
||
/// No description provided for @passwordAuthenticatorNoApp.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'No app on this device opens it. Scan the code or type in the key.'**
|
||
String get passwordAuthenticatorNoApp;
|
||
|
||
/// No description provided for @passwordAuthenticatorCodeIntro.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Then enter the code it shows.'**
|
||
String get passwordAuthenticatorCodeIntro;
|
||
|
||
/// No description provided for @passwordAuthenticatorOwnerIntro.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'To add it, confirm it is you: your password and a code from an authenticator you added before.'**
|
||
String get passwordAuthenticatorOwnerIntro;
|
||
|
||
/// No description provided for @passwordExistingCode.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Code from an authenticator you added before'**
|
||
String get passwordExistingCode;
|
||
|
||
/// No description provided for @passwordRecoveryCodesTitle.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Recovery codes'**
|
||
String get passwordRecoveryCodesTitle;
|
||
|
||
/// No description provided for @passwordRecoveryCodesIntro.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'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.'**
|
||
String get passwordRecoveryCodesIntro;
|
||
|
||
/// No description provided for @passwordCodesKept.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'I\'ve kept them'**
|
||
String get passwordCodesKept;
|
||
|
||
/// No description provided for @passwordPhraseTitle.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Your recovery phrase'**
|
||
String get passwordPhraseTitle;
|
||
|
||
/// No description provided for @passwordPhraseIntro.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'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.'**
|
||
String get passwordPhraseIntro;
|
||
|
||
/// No description provided for @passwordPhraseWrittenDown.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'I\'ve written it down'**
|
||
String get passwordPhraseWrittenDown;
|
||
|
||
/// No description provided for @passwordPhraseCheckTitle.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Check your recovery phrase'**
|
||
String get passwordPhraseCheckTitle;
|
||
|
||
/// No description provided for @passwordPhraseCheckIntro.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Type the words asked for, from what you wrote down.'**
|
||
String get passwordPhraseCheckIntro;
|
||
|
||
/// No description provided for @passwordPhraseWord.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Word {number}'**
|
||
String passwordPhraseWord(int number);
|
||
|
||
/// No description provided for @passwordPhraseWrong.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'These aren\'t the words. Look again at what you wrote down.'**
|
||
String get passwordPhraseWrong;
|
||
|
||
/// No description provided for @passwordPhraseNotAWord.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Not a word a recovery phrase is made of'**
|
||
String get passwordPhraseNotAWord;
|
||
|
||
/// No description provided for @passwordPhraseShowAgain.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Show the phrase again'**
|
||
String get passwordPhraseShowAgain;
|
||
|
||
/// No description provided for @passwordCreateTitle.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Create an account'**
|
||
String get passwordCreateTitle;
|
||
|
||
/// No description provided for @passwordCreateIntro.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'On {instance}, with your email address, a password, and an authenticator app for the code every sign-in takes.'**
|
||
String passwordCreateIntro(String instance);
|
||
|
||
/// No description provided for @passwordSetUpTitle.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Set up a password'**
|
||
String get passwordSetUpTitle;
|
||
|
||
/// No description provided for @passwordSetUpIntro.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Sign in with your email address, a password and an authenticator app, on this device and others. Everything you have stays.'**
|
||
String get passwordSetUpIntro;
|
||
|
||
/// No description provided for @passwordChooseIntro.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'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.'**
|
||
String get passwordChooseIntro;
|
||
|
||
/// No description provided for @passwordFinishResetTitle.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Finish the reset'**
|
||
String get passwordFinishResetTitle;
|
||
|
||
/// No description provided for @passwordFinishResetIntro.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'72 hours after you asked to reset your account, finish it here with a new code by email.'**
|
||
String get passwordFinishResetIntro;
|
||
|
||
/// No description provided for @passwordFinishResetHavePhrase.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'I have my recovery phrase'**
|
||
String get passwordFinishResetHavePhrase;
|
||
|
||
/// No description provided for @passwordFinishResetKeepsKeys.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Your account keeps its keys: nothing encrypted is lost.'**
|
||
String get passwordFinishResetKeepsKeys;
|
||
|
||
/// No description provided for @passwordFinishResetNewKeys.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Without your recovery phrase, your account gets new keys: what was encrypted with the old ones is lost.'**
|
||
String get passwordFinishResetNewKeys;
|
||
|
||
/// No description provided for @passwordRecoveryTitle.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Get back into your account'**
|
||
String get passwordRecoveryTitle;
|
||
|
||
/// No description provided for @passwordRecoveryWithPhrase.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'I have my recovery phrase'**
|
||
String get passwordRecoveryWithPhrase;
|
||
|
||
/// No description provided for @passwordRecoveryWithPhraseHint.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Set a new password at once. Everything stays.'**
|
||
String get passwordRecoveryWithPhraseHint;
|
||
|
||
/// No description provided for @passwordRecoveryWithPhraseIntro.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'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.'**
|
||
String get passwordRecoveryWithPhraseIntro;
|
||
|
||
/// No description provided for @passwordRecoveryNoCodeHint.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Lost your authenticator as well? Reset your account 72 hours later with your recovery phrase: it keeps everything.'**
|
||
String get passwordRecoveryNoCodeHint;
|
||
|
||
/// No description provided for @passwordRecoveryWithoutPhrase.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Reset my account'**
|
||
String get passwordRecoveryWithoutPhrase;
|
||
|
||
/// No description provided for @passwordRecoveryWithoutPhraseHint.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Takes effect 72 hours later. Without your recovery phrase, what\'s encrypted is lost.'**
|
||
String get passwordRecoveryWithoutPhraseHint;
|
||
|
||
/// No description provided for @passwordRecoveryStartIntro.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'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.'**
|
||
String get passwordRecoveryStartIntro;
|
||
|
||
/// No description provided for @passwordRecoveryFinish.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Finish a reset'**
|
||
String get passwordRecoveryFinish;
|
||
|
||
/// No description provided for @passwordRecoveryFinishHint.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'72 hours after you asked for it.'**
|
||
String get passwordRecoveryFinishHint;
|
||
|
||
/// No description provided for @passwordResetStarted.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'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.'**
|
||
String passwordResetStarted(String date);
|
||
|
||
/// No description provided for @passwordSectionTitle.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Password and authenticator'**
|
||
String get passwordSectionTitle;
|
||
|
||
/// No description provided for @passwordSectionFailed.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Couldn\'t read how your account signs in.'**
|
||
String get passwordSectionFailed;
|
||
|
||
/// No description provided for @passwordSectionSetUp.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Set up a password'**
|
||
String get passwordSectionSetUp;
|
||
|
||
/// No description provided for @passwordSectionSetUpHint.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Sign in with your email address, a password and an authenticator app.'**
|
||
String get passwordSectionSetUpHint;
|
||
|
||
/// No description provided for @passwordSectionUnfinished.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Finish setting up: add an authenticator'**
|
||
String get passwordSectionUnfinished;
|
||
|
||
/// No description provided for @passwordSectionUnfinishedHint.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Your password signs in once an authenticator is set up.'**
|
||
String get passwordSectionUnfinishedHint;
|
||
|
||
/// No description provided for @passwordSectionChange.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Change password'**
|
||
String get passwordSectionChange;
|
||
|
||
/// No description provided for @passwordSectionKeysMissing.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Sign in on this device with your password to change it.'**
|
||
String get passwordSectionKeysMissing;
|
||
|
||
/// No description provided for @passwordSectionNotConfirmed.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Not set up yet'**
|
||
String get passwordSectionNotConfirmed;
|
||
|
||
/// No description provided for @passwordSectionRemove.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Remove {name}?'**
|
||
String passwordSectionRemove(String name);
|
||
|
||
/// No description provided for @passwordSectionRemoveIntro.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Enter your password and a code from one of your authenticators to confirm.'**
|
||
String get passwordSectionRemoveIntro;
|
||
|
||
/// No description provided for @passwordSectionRemoveAction.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Remove'**
|
||
String get passwordSectionRemoveAction;
|
||
|
||
/// No description provided for @passwordSectionAddAuthenticator.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Add an authenticator'**
|
||
String get passwordSectionAddAuthenticator;
|
||
|
||
/// No description provided for @passwordSectionRecoveryCodes.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'New recovery codes'**
|
||
String get passwordSectionRecoveryCodes;
|
||
|
||
/// No description provided for @passwordSectionRecoveryCodesHint.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'The old ones stop working.'**
|
||
String get passwordSectionRecoveryCodesHint;
|
||
|
||
/// No description provided for @passwordSectionNewPhrase.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'New recovery phrase'**
|
||
String get passwordSectionNewPhrase;
|
||
|
||
/// No description provided for @passwordSectionPhraseHint.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Your old phrase stops working.'**
|
||
String get passwordSectionPhraseHint;
|
||
|
||
/// No description provided for @passwordChangeTitle.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Change password'**
|
||
String get passwordChangeTitle;
|
||
|
||
/// No description provided for @passwordChangeIntro.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Your other devices are signed out. Your keys stay: nothing is lost.'**
|
||
String get passwordChangeIntro;
|
||
|
||
/// No description provided for @passwordChangeAction.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Change password'**
|
||
String get passwordChangeAction;
|
||
|
||
/// No description provided for @passwordChanged.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Password changed. Your other devices are signed out.'**
|
||
String get passwordChanged;
|
||
|
||
/// No description provided for @passwordNewCodesIntro.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Enter your password and a code from your authenticator app. Your old recovery codes stop working.'**
|
||
String get passwordNewCodesIntro;
|
||
|
||
/// No description provided for @passwordNewPhraseIntro.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Your new recovery phrase. Write the 24 words down in order: once you confirm it, your old phrase opens nothing any more.'**
|
||
String get passwordNewPhraseIntro;
|
||
|
||
/// No description provided for @passwordPhraseKept.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'New recovery phrase set. The old one no longer works.'**
|
||
String get passwordPhraseKept;
|
||
|
||
/// No description provided for @passwordWrongCredentials.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'The address, the password or the code isn\'t right.'**
|
||
String get passwordWrongCredentials;
|
||
|
||
/// No description provided for @passwordTooManyAttempts.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Too many attempts. Try again in an hour.'**
|
||
String get passwordTooManyAttempts;
|
||
|
||
/// No description provided for @passwordSetupIncomplete.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Your account was never finished: set up an authenticator.'**
|
||
String get passwordSetupIncomplete;
|
||
|
||
/// No description provided for @passwordNotDue.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'This takes effect on {date}.'**
|
||
String passwordNotDue(String date);
|
||
|
||
/// No description provided for @passwordNotDueYet.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'This hasn\'t taken effect yet.'**
|
||
String get passwordNotDueYet;
|
||
|
||
/// No description provided for @passwordNoReset.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'No reset waits for this address.'**
|
||
String get passwordNoReset;
|
||
|
||
/// No description provided for @passwordExists.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'This address\'s account has a password already. Sign in with it, or get back in if you\'ve forgotten it.'**
|
||
String get passwordExists;
|
||
|
||
/// No description provided for @passwordAddressTaken.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'This address belongs to another account.'**
|
||
String get passwordAddressTaken;
|
||
|
||
/// No description provided for @passwordNoPassword.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'This account has no password.'**
|
||
String get passwordNoPassword;
|
||
|
||
/// No description provided for @passwordWrongCode.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'This code isn\'t right. Enter the one your app shows now.'**
|
||
String get passwordWrongCode;
|
||
|
||
/// No description provided for @passwordLastAuthenticator.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Your last authenticator can\'t go: every sign-in needs one.'**
|
||
String get passwordLastAuthenticator;
|
||
|
||
/// No description provided for @passwordTooManyAuthenticators.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Your account has as many authenticators as it may. Remove one first.'**
|
||
String get passwordTooManyAuthenticators;
|
||
|
||
/// No description provided for @passwordUnknownAuthenticator.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'This authenticator is gone.'**
|
||
String get passwordUnknownAuthenticator;
|
||
|
||
/// No description provided for @passwordInvalidSetup.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'The instance didn\'t accept what this device made. Update the app, or try again.'**
|
||
String get passwordInvalidSetup;
|
||
|
||
/// No description provided for @passwordChallengeExpired.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'That took too long. Try again.'**
|
||
String get passwordChallengeExpired;
|
||
|
||
/// No description provided for @passwordUnavailable.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'This instance offers no password sign-in.'**
|
||
String get passwordUnavailable;
|
||
|
||
/// No description provided for @passwordNotAnAddress.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'This isn\'t an email address.'**
|
||
String get passwordNotAnAddress;
|
||
|
||
/// No description provided for @passwordTooManyCodes.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Too many codes asked for. Try again in an hour.'**
|
||
String get passwordTooManyCodes;
|
||
|
||
/// No description provided for @passwordWrongMailCode.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'This code isn\'t right.'**
|
||
String get passwordWrongMailCode;
|
||
|
||
/// No description provided for @passwordTooManyMailTries.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Too many wrong codes. Ask for a new one.'**
|
||
String get passwordTooManyMailTries;
|
||
|
||
/// No description provided for @passwordMailCodeExpired.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'This code is no longer valid. Ask for a new one.'**
|
||
String get passwordMailCodeExpired;
|
||
|
||
/// No description provided for @passwordMailFailed.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'The instance couldn\'t send the email. Try again later.'**
|
||
String get passwordMailFailed;
|
||
|
||
/// No description provided for @passwordOtherAddressLinked.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Your account has another email address.'**
|
||
String get passwordOtherAddressLinked;
|
||
|
||
/// No description provided for @passwordNotAPhrase.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'This isn\'t a recovery phrase: check every word and their number.'**
|
||
String get passwordNotAPhrase;
|
||
|
||
/// No description provided for @passwordPhraseDoesNotFit.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'The address or the recovery phrase isn\'t right.'**
|
||
String get passwordPhraseDoesNotFit;
|
||
|
||
/// No description provided for @passwordUnusable.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'This password can\'t be used: it\'s empty, or holds characters that aren\'t text.'**
|
||
String get passwordUnusable;
|
||
|
||
/// No description provided for @passwordInstanceUnproven.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'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.'**
|
||
String get passwordInstanceUnproven;
|
||
|
||
/// No description provided for @passwordKeysMissing.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Your account\'s keys aren\'t on this device. Sign out and in again with your password here.'**
|
||
String get passwordKeysMissing;
|
||
|
||
/// A sign-up refused: the operator takes no new accounts (D19).
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'This instance takes no new accounts.'**
|
||
String get signUpsClosed;
|
||
|
||
/// A sign-up refused: ten new accounts wait for the operator's approval already (D19).
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Too many new accounts already wait for approval. Try again later.'**
|
||
String get signUpsTooManyWaiting;
|
||
|
||
/// No description provided for @passwordUnsafeCosts.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'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.'**
|
||
String get passwordUnsafeCosts;
|
||
|
||
/// No description provided for @passwordFailed.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Couldn\'t reach the instance. Check the connection and try again.'**
|
||
String get passwordFailed;
|
||
|
||
/// No description provided for @passwordMinLength.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'At least {count} characters'**
|
||
String passwordMinLength(int count);
|
||
|
||
/// No description provided for @passwordTooShort.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'A new password needs at least {count} characters: should the instance\'s database ever leak, a short one is guessed first.'**
|
||
String passwordTooShort(int count);
|
||
|
||
/// No description provided for @passwordCodesWait.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'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.'**
|
||
String passwordCodesWait(String date);
|
||
|
||
/// No description provided for @passwordDeleteIntro.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'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.'**
|
||
String get passwordDeleteIntro;
|
||
|
||
/// No description provided for @passwordSessionEnded.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Too many wrong codes in a row from this device: it was signed out. Sign in again with your password and a code.'**
|
||
String get passwordSessionEnded;
|
||
|
||
/// No description provided for @passwordAddressUnknown.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Enter your account\'s email address: the code goes there.'**
|
||
String get passwordAddressUnknown;
|
||
|
||
/// No description provided for @passwordDeleteIntroByMail.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'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.'**
|
||
String get passwordDeleteIntroByMail;
|
||
|
||
/// No description provided for @passwordDeleteSendCode.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Email me a code'**
|
||
String get passwordDeleteSendCode;
|
||
|
||
/// No description provided for @passwordAuthenticatorPasswordIntro.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'To add it, confirm it is you with your password.'**
|
||
String get passwordAuthenticatorPasswordIntro;
|
||
|
||
/// No description provided for @passwordWarningTitle.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Someone tried your password'**
|
||
String get passwordWarningTitle;
|
||
|
||
/// No description provided for @passwordWarningBody.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'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.'**
|
||
String passwordWarningBody(String date);
|
||
|
||
/// No description provided for @passwordWarningDismiss.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Dismiss'**
|
||
String get passwordWarningDismiss;
|
||
|
||
/// No description provided for @passwordWarningLater.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Remind me later'**
|
||
String get passwordWarningLater;
|
||
|
||
/// No description provided for @passwordResetsTitle.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'A reset is waiting'**
|
||
String get passwordResetsTitle;
|
||
|
||
/// No description provided for @passwordResetsAuthenticator.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Your authenticators will be removed on {date}: someone asked with your password. If that wasn\'t you, call it off and change your password.'**
|
||
String passwordResetsAuthenticator(String date);
|
||
|
||
/// No description provided for @passwordResetsAccount.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'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.'**
|
||
String passwordResetsAccount(String date);
|
||
|
||
/// No description provided for @passwordResetsCallOff.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Call it off'**
|
||
String get passwordResetsCallOff;
|
||
|
||
/// No description provided for @passwordCallOffTitle.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Call off the reset'**
|
||
String get passwordCallOffTitle;
|
||
|
||
/// No description provided for @passwordCallOffIntro.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Your password and a code call off every reset waiting.'**
|
||
String get passwordCallOffIntro;
|
||
|
||
/// No description provided for @passwordSignedInBefore.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Only a device signed in since then can dismiss this warning: sign in again on this one, or change your password.'**
|
||
String get passwordSignedInBefore;
|
||
|
||
/// No description provided for @simpleLoginContinue.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Continue with SimpleLogin'**
|
||
String get simpleLoginContinue;
|
||
|
||
/// No description provided for @simpleLoginNote.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'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.'**
|
||
String simpleLoginNote(String instance);
|
||
|
||
/// No description provided for @simpleLoginTitle.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Sign in with SimpleLogin'**
|
||
String get simpleLoginTitle;
|
||
|
||
/// No description provided for @simpleLoginAddTitle.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Add SimpleLogin'**
|
||
String get simpleLoginAddTitle;
|
||
|
||
/// No description provided for @simpleLoginInBrowser.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Continue in your browser.'**
|
||
String get simpleLoginInBrowser;
|
||
|
||
/// No description provided for @simpleLoginNewcomerTitle.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'New here?'**
|
||
String get simpleLoginNewcomerTitle;
|
||
|
||
/// No description provided for @simpleLoginNewcomerIntro.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Your SimpleLogin account has no account on {instance} yet.'**
|
||
String simpleLoginNewcomerIntro(String instance);
|
||
|
||
/// No description provided for @simpleLoginCreateHint.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Choose a handle and a password; you get a recovery phrase.'**
|
||
String get simpleLoginCreateHint;
|
||
|
||
/// No description provided for @simpleLoginHaveOne.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'I already have one'**
|
||
String get simpleLoginHaveOne;
|
||
|
||
/// No description provided for @simpleLoginHaveOneHint.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Link it again with your handle and your recovery phrase.'**
|
||
String get simpleLoginHaveOneHint;
|
||
|
||
/// No description provided for @handleIntro.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'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.'**
|
||
String get handleIntro;
|
||
|
||
/// No description provided for @handleLabel.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Handle'**
|
||
String get handleLabel;
|
||
|
||
/// No description provided for @handleFree.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'@{handle} is free'**
|
||
String handleFree(String handle);
|
||
|
||
/// No description provided for @handleChecking.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Checking…'**
|
||
String get handleChecking;
|
||
|
||
/// No description provided for @simpleLoginPasswordIntro.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'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.'**
|
||
String get simpleLoginPasswordIntro;
|
||
|
||
/// No description provided for @simpleLoginCreate.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Create the account'**
|
||
String get simpleLoginCreate;
|
||
|
||
/// No description provided for @simpleLoginUnlockTitle.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Your password'**
|
||
String get simpleLoginUnlockTitle;
|
||
|
||
/// No description provided for @simpleLoginUnlockIntroAs.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Signed in with SimpleLogin as @{handle}. Your password opens your keys on this device.'**
|
||
String simpleLoginUnlockIntroAs(String handle);
|
||
|
||
/// No description provided for @simpleLoginUnlockIntro.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Signed in with SimpleLogin. Your password opens your keys on this device.'**
|
||
String get simpleLoginUnlockIntro;
|
||
|
||
/// No description provided for @simpleLoginOpen.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Open'**
|
||
String get simpleLoginOpen;
|
||
|
||
/// No description provided for @simpleLoginMendTitle.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Link your account'**
|
||
String get simpleLoginMendTitle;
|
||
|
||
/// No description provided for @simpleLoginMendIntro.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'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.'**
|
||
String get simpleLoginMendIntro;
|
||
|
||
/// No description provided for @simpleLoginMend.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Link'**
|
||
String get simpleLoginMend;
|
||
|
||
/// No description provided for @simpleLoginWrongPassword.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'The password isn\'t right.'**
|
||
String get simpleLoginWrongPassword;
|
||
|
||
/// No description provided for @simpleLoginMendDoesNotFit.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'The handle or the recovery phrase isn\'t right.'**
|
||
String get simpleLoginMendDoesNotFit;
|
||
|
||
/// No description provided for @simpleLoginForgotTitle.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'A new password'**
|
||
String get simpleLoginForgotTitle;
|
||
|
||
/// No description provided for @simpleLoginForgotIntro.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Your recovery phrase opens your keys, which your new password then protects. Everything stays; your other devices are signed out.'**
|
||
String get simpleLoginForgotIntro;
|
||
|
||
/// No description provided for @simpleLoginForgotDoesNotFit.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'The recovery phrase isn\'t right.'**
|
||
String get simpleLoginForgotDoesNotFit;
|
||
|
||
/// No description provided for @simpleLoginResetWaiting.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'New keys were asked for: from {date}, a SimpleLogin sign-in can set them up. Your password opening your keys calls it off.'**
|
||
String simpleLoginResetWaiting(String date);
|
||
|
||
/// No description provided for @simpleLoginPhraseLost.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Lost your recovery phrase too?'**
|
||
String get simpleLoginPhraseLost;
|
||
|
||
/// No description provided for @simpleLoginResetTitle.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'New keys'**
|
||
String get simpleLoginResetTitle;
|
||
|
||
/// No description provided for @simpleLoginResetIntro.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'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.'**
|
||
String simpleLoginResetIntro(String instance);
|
||
|
||
/// No description provided for @simpleLoginResetIntroDevices.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Meanwhile your signed-in devices show the reset, and your password calls it off there, should someone else have asked for it.'**
|
||
String get simpleLoginResetIntroDevices;
|
||
|
||
/// No description provided for @simpleLoginResetAsk.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Ask for new keys'**
|
||
String get simpleLoginResetAsk;
|
||
|
||
/// No description provided for @simpleLoginResetAskedTitle.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'New keys asked for'**
|
||
String get simpleLoginResetAskedTitle;
|
||
|
||
/// No description provided for @simpleLoginResetAskedIntro.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'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.'**
|
||
String simpleLoginResetAskedIntro(String date);
|
||
|
||
/// No description provided for @simpleLoginResetDueTitle.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Your new keys'**
|
||
String get simpleLoginResetDueTitle;
|
||
|
||
/// No description provided for @simpleLoginResetDueIntro.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'The new keys you asked for can be set up now. Or open your old keys with your password, which calls the reset off.'**
|
||
String get simpleLoginResetDueIntro;
|
||
|
||
/// No description provided for @simpleLoginResetNewKeys.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Set up new keys'**
|
||
String get simpleLoginResetNewKeys;
|
||
|
||
/// No description provided for @simpleLoginResetNewKeysHint.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'A new password and recovery phrase. What was encrypted under your old keys is lost, unless you finish on a device still signed in.'**
|
||
String get simpleLoginResetNewKeysHint;
|
||
|
||
/// No description provided for @simpleLoginResetHavePassword.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'I have my password'**
|
||
String get simpleLoginResetHavePassword;
|
||
|
||
/// No description provided for @simpleLoginResetHavePasswordHint.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Your keys open, and stay.'**
|
||
String get simpleLoginResetHavePasswordHint;
|
||
|
||
/// No description provided for @simpleLoginResetKeepIntro.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Choose a new password: your keys stay, under it and a new recovery phrase, so nothing is lost. Your other devices are signed out.'**
|
||
String get simpleLoginResetKeepIntro;
|
||
|
||
/// No description provided for @simpleLoginResetFinish.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Set up the keys'**
|
||
String get simpleLoginResetFinish;
|
||
|
||
/// No description provided for @simpleLoginProofKeyTitle.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Your password and a code'**
|
||
String get simpleLoginProofKeyTitle;
|
||
|
||
/// No description provided for @simpleLoginProofKeyIntroAs.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'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.'**
|
||
String simpleLoginProofKeyIntroAs(String handle);
|
||
|
||
/// No description provided for @simpleLoginProofKeyIntro.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'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.'**
|
||
String get simpleLoginProofKeyIntro;
|
||
|
||
/// No description provided for @simpleLoginResetBanner.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'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.'**
|
||
String simpleLoginResetBanner(String date);
|
||
|
||
/// No description provided for @simpleLoginResetBannerDue.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'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.'**
|
||
String get simpleLoginResetBannerDue;
|
||
|
||
/// No description provided for @simpleLoginResetBannerDueHere.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'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.'**
|
||
String get simpleLoginResetBannerDueHere;
|
||
|
||
/// No description provided for @simpleLoginResetFinishHere.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Finish here'**
|
||
String get simpleLoginResetFinishHere;
|
||
|
||
/// No description provided for @simpleLoginCallOffIntro.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Your password calls off the reset of your keys.'**
|
||
String get simpleLoginCallOffIntro;
|
||
|
||
/// No description provided for @simpleLoginResetCalledOff.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Reset called off.'**
|
||
String get simpleLoginResetCalledOff;
|
||
|
||
/// No description provided for @simpleLoginResetFinished.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'New password and recovery phrase set.'**
|
||
String get simpleLoginResetFinished;
|
||
|
||
/// No description provided for @simpleLoginUnavailable.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'This instance doesn\'t offer sign-in with SimpleLogin.'**
|
||
String get simpleLoginUnavailable;
|
||
|
||
/// No description provided for @simpleLoginDenied.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'SimpleLogin\'s sign-in was declined, so nothing was shared.'**
|
||
String get simpleLoginDenied;
|
||
|
||
/// No description provided for @simpleLoginNoBrowser.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'There\'s no browser to open SimpleLogin\'s page in.'**
|
||
String get simpleLoginNoBrowser;
|
||
|
||
/// No description provided for @simpleLoginStartAgain.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'The sign-in took too long, or another one took its place. Begin it again.'**
|
||
String get simpleLoginStartAgain;
|
||
|
||
/// No description provided for @simpleLoginRejected.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'SimpleLogin didn\'t confirm the sign-in. Begin it again.'**
|
||
String get simpleLoginRejected;
|
||
|
||
/// No description provided for @simpleLoginProviderUnavailable.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'The instance can\'t reach SimpleLogin right now. Try again later.'**
|
||
String get simpleLoginProviderUnavailable;
|
||
|
||
/// No description provided for @simpleLoginTakenByAnotherPerson.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'This SimpleLogin account belongs to another account here.'**
|
||
String get simpleLoginTakenByAnotherPerson;
|
||
|
||
/// No description provided for @simpleLoginOtherIdentityLinked.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Your account has another SimpleLogin account already.'**
|
||
String get simpleLoginOtherIdentityLinked;
|
||
|
||
/// No description provided for @simpleLoginTooManyAttempts.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Too many sign-ins began from this network. Try again in an hour.'**
|
||
String get simpleLoginTooManyAttempts;
|
||
|
||
/// No description provided for @handleInvalid.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'A handle is 1 to 30 letters (a to z), digits or underscores.'**
|
||
String get handleInvalid;
|
||
|
||
/// No description provided for @handleReserved.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'This handle is kept for the instance.'**
|
||
String get handleReserved;
|
||
|
||
/// No description provided for @handleTaken.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Someone else has this handle.'**
|
||
String get handleTaken;
|
||
|
||
/// No description provided for @handleTooManyChecks.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Too many handles were tried. Try again in an hour.'**
|
||
String get handleTooManyChecks;
|
||
|
||
/// No description provided for @simpleLoginSectionTitle.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'SimpleLogin'**
|
||
String get simpleLoginSectionTitle;
|
||
|
||
/// No description provided for @simpleLoginSignsYouIn.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Signs you in'**
|
||
String get simpleLoginSignsYouIn;
|
||
|
||
/// No description provided for @simpleLoginAddHint.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Sign in with SimpleLogin, or with your Proton account.'**
|
||
String get simpleLoginAddHint;
|
||
|
||
/// No description provided for @simpleLoginAdded.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'SimpleLogin added.'**
|
||
String get simpleLoginAdded;
|
||
|
||
/// The card and screen for whoever operates the instance (ADR 0021, D34).
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'This instance'**
|
||
String get operatorTitle;
|
||
|
||
/// The tile leading to the operator's screen.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Accounts and operators'**
|
||
String get operatorAccounts;
|
||
|
||
/// How many accounts wait for the operator; also the badge's label.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'{count, plural, =0{Nobody waits for approval} =1{1 account waits for approval} other{{count} accounts wait for approval}}'**
|
||
String operatorWaitingCount(int count);
|
||
|
||
/// The card of accounts that wait for approval, new or suspended.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Waiting'**
|
||
String get operatorWaitingTitle;
|
||
|
||
/// How many operate the instance, in the overview's row.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'{count, plural, =1{1 operator} other{{count} operators}}'**
|
||
String operatorOperatorsCount(int count);
|
||
|
||
/// The overview's row leading to every account, and that screen's title.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Accounts'**
|
||
String get operatorAccountsTitle;
|
||
|
||
/// How many accounts the instance has.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'{count, plural, =1{1 account} other{{count} accounts}}'**
|
||
String operatorAccountsCount(int count);
|
||
|
||
/// The waiting card, empty.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Nobody waits.'**
|
||
String get operatorNobodyWaits;
|
||
|
||
/// An account without a handle, where its handle would be.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'No handle yet'**
|
||
String get operatorNoHandle;
|
||
|
||
/// A new account that waits, and since when.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'New, waiting since {date}'**
|
||
String operatorNewSince(String date);
|
||
|
||
/// A suspended account, and since when.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Suspended since {date}'**
|
||
String operatorSuspendedSince(String date);
|
||
|
||
/// Before approving: the words prove it is their account that waits (D33).
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Read them these four words, and approve only once they confirm these are on their screen.'**
|
||
String get operatorApproveNote;
|
||
|
||
/// Approves a waiting account.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Approve'**
|
||
String get operatorApprove;
|
||
|
||
/// Refuses a new account: deleted.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Refuse'**
|
||
String get operatorRefuse;
|
||
|
||
/// The question before refusing.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Refuse this account?'**
|
||
String get operatorRefuseTitle;
|
||
|
||
/// What refusing does.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'It is deleted with everything it has. They can sign up again.'**
|
||
String get operatorRefuseMessage;
|
||
|
||
/// The card of who operates the instance.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Operators'**
|
||
String get operatorOperatorsTitle;
|
||
|
||
/// Takes back the operator's role.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Take back'**
|
||
String get operatorTakeBack;
|
||
|
||
/// The question before taking the role back.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Take back the role?'**
|
||
String get operatorTakeBackTitle;
|
||
|
||
/// What taking the role back does.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'They keep their account, but no longer approve, refuse or suspend accounts here.'**
|
||
String get operatorTakeBackMessage;
|
||
|
||
/// Names an account an operator, by its handle.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Name an operator'**
|
||
String get operatorAppoint;
|
||
|
||
/// What an operator may do.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'They approve, refuse and suspend accounts here, and name operators, as you do.'**
|
||
String get operatorAppointMessage;
|
||
|
||
/// Confirms naming an operator.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Name'**
|
||
String get operatorAppointConfirm;
|
||
|
||
/// The field for an account's handle.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Handle'**
|
||
String get operatorHandle;
|
||
|
||
/// Below a field suggesting handles as they are typed.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Only handles there are here are suggested.'**
|
||
String get operatorHandleSuggested;
|
||
|
||
/// A search that found nothing.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'No account\'s handle starts like this.'**
|
||
String get operatorFoundNone;
|
||
|
||
/// When an account was made.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Since {date}'**
|
||
String operatorMadeOn(String date);
|
||
|
||
/// A tag: the account operates the instance.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Operator'**
|
||
String get operatorIsOperator;
|
||
|
||
/// A tag: the account waits for approval.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Waiting'**
|
||
String get operatorIsWaiting;
|
||
|
||
/// A tag: the account is suspended.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Suspended'**
|
||
String get operatorIsSuspended;
|
||
|
||
/// Suspends an account.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Suspend'**
|
||
String get operatorSuspend;
|
||
|
||
/// The question before suspending.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Suspend this account?'**
|
||
String get operatorSuspendTitle;
|
||
|
||
/// What suspending does.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'They are signed out everywhere and can\'t sign in until you approve them again. Nothing they have is deleted.'**
|
||
String get operatorSuspendMessage;
|
||
|
||
/// Names a found account an operator.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Name as operator'**
|
||
String get operatorMakeOperator;
|
||
|
||
/// Refused: no such account, or it doesn't wait.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'That account isn\'t there any more, or doesn\'t wait.'**
|
||
String get operatorNotFound;
|
||
|
||
/// Refused: suspending an operator.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'An operator can\'t be suspended. Take back their role first.'**
|
||
String get operatorIsOperatorProblem;
|
||
|
||
/// Refused: taking back the last operator's role.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'The instance needs at least one operator.'**
|
||
String get operatorLastOperator;
|
||
|
||
/// Refused: the person doesn't operate the instance.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Only the instance\'s operators can do this.'**
|
||
String get operatorNotAllowed;
|
||
|
||
/// Any other failure.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'That didn\'t work. Try again.'**
|
||
String get operatorFailed;
|
||
|
||
/// The assistant asked for is no longer in deploy/assistants.env.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'That assistant isn\'t set up here any more.'**
|
||
String get operatorAssistantNotSet;
|
||
|
||
/// A limit below 0 was refused.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'A limit can\'t be below zero.'**
|
||
String get operatorInvalidLimit;
|
||
|
||
/// The operator's card of the assistants granted (Halkyon Learn's ADR 0021).
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Assistants'**
|
||
String get assistantGrantsTitle;
|
||
|
||
/// No assistant is granted to anyone.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Nobody has an assistant yet.'**
|
||
String get assistantGrantsNone;
|
||
|
||
/// How many assistants are set up, in the overview's row.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'{count, plural, =0{None set up} =1{1 assistant} other{{count} assistants}}'**
|
||
String assistantSetCount(int count);
|
||
|
||
/// How many people have an assistant, after how many are set up.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'{count, plural, =0{nobody granted} =1{1 person} other{{count} people}}'**
|
||
String assistantPeopleCount(int count);
|
||
|
||
/// The card of the assistants set up in deploy/assistants.env.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Set up here'**
|
||
String get assistantSetUpTitle;
|
||
|
||
/// The card, and the sheet section, of the people granted assistants.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'People'**
|
||
String get assistantPeopleTitle;
|
||
|
||
/// No person granted one matches the start of a handle typed.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Nobody with an assistant has a handle starting like this.'**
|
||
String get assistantGranteesFoundNone;
|
||
|
||
/// An assistant set up without prices, which a budget counts in tokens alone.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'No prices: counts its tokens only'**
|
||
String get assistantUnpriced;
|
||
|
||
/// How much a model thinks before it answers, as a word in a sentence.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'{effort, select, low{low} medium{medium} high{high} xhigh{extra high} max{max} other{{effort}}}'**
|
||
String assistantEffort(String effort);
|
||
|
||
/// How much a model thinks before it answers, as a name standing alone, as in a menu.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'{effort, select, low{Low} medium{Medium} high{High} xhigh{Extra high} max{Max} other{{effort}}}'**
|
||
String assistantEffortName(String effort);
|
||
|
||
/// An assistant's effort unless asked otherwise, and the highest a question may ask.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Effort {effort}, up to {max}'**
|
||
String assistantEffortSetUp(String effort, String max);
|
||
|
||
/// An assistant's effort, the only one it takes.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Effort {effort}'**
|
||
String assistantEffortFixed(String effort);
|
||
|
||
/// An assistant granted that is no longer set up.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'{name} (no longer set up)'**
|
||
String assistantNameUnset(String name);
|
||
|
||
/// How many of a person's assistants they haven't agreed to yet.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'{count, plural, =1{1 not agreed to yet} other{{count} not agreed to yet}}'**
|
||
String assistantNotAgreedCount(int count);
|
||
|
||
/// Opens the sheet granting an assistant to an account.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Grant assistants'**
|
||
String get assistantGrant;
|
||
|
||
/// The grant sheet's button.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Grant'**
|
||
String get assistantGrantSave;
|
||
|
||
/// The sheet changing a person's assistants and budget, and a person's menu item.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Change assistants'**
|
||
String get assistantGrantChange;
|
||
|
||
/// Under the limit fields: the instance counts by UTC days and months (D42).
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Empty for none. Days and months are UTC\'s.'**
|
||
String get assistantGrantLimitHelper;
|
||
|
||
/// The sheet's section of a person's budget.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Budget, for all of them together'**
|
||
String get assistantGrantBudget;
|
||
|
||
/// A budget field.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Money a day'**
|
||
String get assistantGrantMoneyDaily;
|
||
|
||
/// A budget field.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Money a month'**
|
||
String get assistantGrantMoneyMonthly;
|
||
|
||
/// A budget field.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Tokens a day'**
|
||
String get assistantGrantTokensDaily;
|
||
|
||
/// A budget field.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Tokens a month'**
|
||
String get assistantGrantTokensMonthly;
|
||
|
||
/// Below the budget fields.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Money counts the assistants with prices, tokens count every one. Whichever runs out first stops them.'**
|
||
String get assistantGrantMoneyNote;
|
||
|
||
/// Before the people whose budget a grant replaces, each with theirs.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'{count, plural, =1{Granting replaces the budget this person has:} other{Granting replaces the budgets these people have:}}'**
|
||
String assistantGrantReplaces(int count);
|
||
|
||
/// Changing a person's assistants drops those no longer set up.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Saving takes back what is no longer set up: {names}.'**
|
||
String assistantGrantUnsetDropped(String names);
|
||
|
||
/// A limit typed that is no amount or number of tokens.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Not a number this takes'**
|
||
String get assistantGrantLimitInvalid;
|
||
|
||
/// After a limit in tokens, for an assistant without prices.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'tokens'**
|
||
String get assistantGrantTokens;
|
||
|
||
/// In the grant sheet: consent (D40) and what the operator sees (D3).
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'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.'**
|
||
String get assistantGrantNote;
|
||
|
||
/// A daily limit.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'{amount} a day'**
|
||
String assistantPerDay(String amount);
|
||
|
||
/// A monthly limit.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'{amount} a month'**
|
||
String assistantPerMonth(String amount);
|
||
|
||
/// A grant without limits.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'No limits'**
|
||
String get assistantNoLimits;
|
||
|
||
/// A grant's menu item.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Take back'**
|
||
String get assistantRevoke;
|
||
|
||
/// Asks before taking every assistant back from a person.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Take back every assistant?'**
|
||
String get assistantRevokeAllTitle;
|
||
|
||
/// Under the question taking a grant back.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'They can no longer ask any of them, and their budget goes. What they used stays counted.'**
|
||
String get assistantRevokeMessage;
|
||
|
||
/// Opens everyone's figures (D3).
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Use by month'**
|
||
String get assistantUseByMonth;
|
||
|
||
/// The title of the figures' screen and sheet.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Use of assistants'**
|
||
String get assistantUseTitle;
|
||
|
||
/// A month without use.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Nothing used in this month.'**
|
||
String get assistantUseNone;
|
||
|
||
/// Under the figures: what is counted and for how long (D41, D42).
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Counted per UTC day, kept for this month and the two before. Never what was asked.'**
|
||
String get assistantUseKept;
|
||
|
||
/// How many requests were counted.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'{count, plural, =1{1 request} other{{count} requests}}'**
|
||
String assistantRequests(int count);
|
||
|
||
/// How many tokens were counted, the number formatted.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'{amount} tokens'**
|
||
String assistantTokens(String amount);
|
||
|
||
/// Settings' card of the assistants a person may ask (Halkyon Learn's ADR 0021, point 9).
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Assistants'**
|
||
String get assistantsTitle;
|
||
|
||
/// Which model answers, and the host that receives what is asked.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'{model} at {host}'**
|
||
String assistantModelAt(String model, String host);
|
||
|
||
/// What is left of a day's limit.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'{left} of {limit} left today'**
|
||
String assistantLeftToday(String left, String limit);
|
||
|
||
/// What is left of a month's limit.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'{left} of {limit} left this month'**
|
||
String assistantLeftThisMonth(String left, String limit);
|
||
|
||
/// The person's budget for all their assistants.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Your budget, for all of them'**
|
||
String get assistantYourBudget;
|
||
|
||
/// Opens the consent sheet of an assistant not agreed to yet.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Read and agree'**
|
||
String get assistantAgree;
|
||
|
||
/// Opens the person's own figures.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Your use'**
|
||
String get assistantYourUse;
|
||
|
||
/// Opens the instance's privacy page (D39).
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'What goes where on {instance}'**
|
||
String assistantPrivacyPage(String instance);
|
||
|
||
/// Above a person's own assistants (point 10).
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'With your own key'**
|
||
String get assistantOwnTitle;
|
||
|
||
/// Opens the sheet adding an assistant with a personal key.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Add an assistant with your own key'**
|
||
String get assistantOwnAdd;
|
||
|
||
/// What a personal key means (D5, D6).
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'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.'**
|
||
String get assistantOwnNote;
|
||
|
||
/// The personal key sheet's title.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Your own key'**
|
||
String get assistantOwnEdit;
|
||
|
||
/// The name the person gives their assistant.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Name'**
|
||
String get assistantOwnName;
|
||
|
||
/// Above the choice of protocol.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'API'**
|
||
String get assistantOwnProtocol;
|
||
|
||
/// The provider's address field.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Address'**
|
||
String get assistantOwnBaseUrl;
|
||
|
||
/// Under the address field: which services take which address.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Empty for the provider\'s own. Mistral, OpenRouter or a model of your own: its address with /v1.'**
|
||
String get assistantOwnBaseUrlHelper;
|
||
|
||
/// An address the app refuses: keys and questions would travel in the clear.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Only https, or http on your own network'**
|
||
String get assistantOwnBaseUrlInvalid;
|
||
|
||
/// The model's name at the provider.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Model'**
|
||
String get assistantOwnModel;
|
||
|
||
/// The API key field.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Key'**
|
||
String get assistantOwnKey;
|
||
|
||
/// Under the key field.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Empty for a model of your own that takes none.'**
|
||
String get assistantOwnKeyHelper;
|
||
|
||
/// Whether the model reads images (D12).
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Reads images'**
|
||
String get assistantOwnImages;
|
||
|
||
/// The personal key sheet's button.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Save'**
|
||
String get assistantOwnSave;
|
||
|
||
/// Removes an assistant with a personal key.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Remove'**
|
||
String get assistantOwnRemove;
|
||
|
||
/// Asks before removing an assistant with a personal key.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Remove {name}?'**
|
||
String assistantOwnRemoveTitle(String name);
|
||
|
||
/// Under the question removing a personal key.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Its key goes from your settings on every device.'**
|
||
String get assistantOwnRemoveMessage;
|
||
|
||
/// A personal key refused, as the settings wouldn't be sealed.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'The key wasn\'t kept: this device can\'t encrypt your settings yet. Open your account\'s keys here first.'**
|
||
String get assistantOwnRefused;
|
||
|
||
/// Below the person's own assistants, where the operator doesn't allow them (ADR 0021, D6).
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Whoever runs {instance} doesn\'t allow own keys here, so the app doesn\'t ask these.'**
|
||
String assistantOwnNotAllowed(String instance);
|
||
|
||
/// The consent sheet's title (D40).
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Before you ask {name}'**
|
||
String assistantConsentTitle(String name);
|
||
|
||
/// Who answers (D27).
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'It answers with the model {model} at {host}.'**
|
||
String assistantConsentModel(String model, String host);
|
||
|
||
/// What goes to the provider (D27).
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'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.'**
|
||
String get assistantConsentWhatGoes;
|
||
|
||
/// For an assistant that reads images (D12).
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'It reads the images you add.'**
|
||
String get assistantConsentImages;
|
||
|
||
/// The instance sees it in passing and keeps nothing (D27).
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'It passes through {instance} on its way, which keeps none of it.'**
|
||
String assistantConsentInstance(String instance);
|
||
|
||
/// The operator's figures (D3).
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Whoever runs {instance} sees how much you use it (requests, tokens, cost), never what you ask.'**
|
||
String assistantConsentOperator(String instance);
|
||
|
||
/// Conversations are sealed on the devices (D13).
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Your conversations are kept encrypted: only your devices can read them.'**
|
||
String get assistantConsentConversations;
|
||
|
||
/// The consent sheet's button.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Agree'**
|
||
String get assistantConsentAgree;
|
||
|
||
/// An assistant agreed to, and when.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'You agreed on {date}.'**
|
||
String assistantConsentAgreedOn(String date);
|
||
|
||
/// notGranted.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'This assistant isn\'t granted to you any more.'**
|
||
String get assistantProblemNotGranted;
|
||
|
||
/// notAgreed.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Agree to what goes where first.'**
|
||
String get assistantProblemNotAgreed;
|
||
|
||
/// A question asked an effort its assistant does not take.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'It doesn\'t think at this effort.'**
|
||
String get assistantProblemInvalidEffort;
|
||
|
||
/// limitReached, with when it resets.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Its limit is reached until {time}.'**
|
||
String assistantProblemLimitReached(String time);
|
||
|
||
/// Refused: a limit is reached, the instance not saying until when.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Its limit is reached for now.'**
|
||
String get assistantProblemLimitReachedNow;
|
||
|
||
/// imagesNotRead.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'It reads no images.'**
|
||
String get assistantProblemImagesNotRead;
|
||
|
||
/// malformed.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'This question can\'t be sent.'**
|
||
String get assistantProblemMalformed;
|
||
|
||
/// tooLarge.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'This question is too long, or holds too many or too large images.'**
|
||
String get assistantProblemTooLarge;
|
||
|
||
/// tooManyAtOnce.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Wait for the answers on their way first.'**
|
||
String get assistantProblemTooManyAtOnce;
|
||
|
||
/// providerKey.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'The provider refused the key.'**
|
||
String get assistantProblemProviderKey;
|
||
|
||
/// providerBusy.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'The provider is busy. Try again in a moment.'**
|
||
String get assistantProblemProviderBusy;
|
||
|
||
/// providerRefused.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'The provider refused this question.'**
|
||
String get assistantProblemProviderRefused;
|
||
|
||
/// providerFailed.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'The provider failed. Try again.'**
|
||
String get assistantProblemProviderFailed;
|
||
|
||
/// notAllowed.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Only people it is granted to can do this.'**
|
||
String get assistantProblemNotAllowed;
|
||
|
||
/// failed.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'That didn\'t work. Try again.'**
|
||
String get assistantProblemFailed;
|
||
|
||
/// The sheet listing what changed in the app after an update, and its entry in Settings.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'What\'s new'**
|
||
String get whatsNewTitle;
|
||
|
||
/// Above a release's changes in What's new.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Version {version}'**
|
||
String whatsNewVersion(String version);
|
||
}
|
||
|
||
class _HalkyonAppLocalizationsDelegate
|
||
extends LocalizationsDelegate<HalkyonAppLocalizations> {
|
||
const _HalkyonAppLocalizationsDelegate();
|
||
|
||
@override
|
||
Future<HalkyonAppLocalizations> load(Locale locale) {
|
||
return SynchronousFuture<HalkyonAppLocalizations>(
|
||
lookupHalkyonAppLocalizations(locale),
|
||
);
|
||
}
|
||
|
||
@override
|
||
bool isSupported(Locale locale) =>
|
||
<String>['de', 'en'].contains(locale.languageCode);
|
||
|
||
@override
|
||
bool shouldReload(_HalkyonAppLocalizationsDelegate old) => false;
|
||
}
|
||
|
||
HalkyonAppLocalizations lookupHalkyonAppLocalizations(Locale locale) {
|
||
// Lookup logic when language+country codes are specified.
|
||
switch (locale.languageCode) {
|
||
case 'en':
|
||
{
|
||
switch (locale.countryCode) {
|
||
case 'GB':
|
||
return HalkyonAppLocalizationsEnGb();
|
||
case 'US':
|
||
return HalkyonAppLocalizationsEnUs();
|
||
}
|
||
break;
|
||
}
|
||
}
|
||
|
||
// Lookup logic when only language code is specified.
|
||
switch (locale.languageCode) {
|
||
case 'de':
|
||
return HalkyonAppLocalizationsDe();
|
||
case 'en':
|
||
return HalkyonAppLocalizationsEn();
|
||
}
|
||
|
||
throw FlutterError(
|
||
'HalkyonAppLocalizations.delegate failed to load unsupported locale "$locale". This is likely '
|
||
'an issue with the localizations generation tool. Please file an issue '
|
||
'on GitHub with a reproducible sample app and the gen-l10n configuration '
|
||
'that was used.',
|
||
);
|
||
}
|