Every account signs in with SimpleLogin or a password now, so GitHub goes from the module, the shared app package, Learn and Todo, ahead of ADR 0017's GITHUB_SIGN_IN_ENDS. - halkyon_base: no `gitHubSignIn` endpoint, GitHub identity provider or GitHub refusals; no `githubClientId`/`githubClientSecret`, no `GITHUB_SIGN_IN_ENDS` and no `forgetGitHubAccounts`; the register loses `account-with-github`. `SignInWays.gitHub`, the basics' `gitHubClientId` and `gitHubSignInEnds`, and `PasswordRefusal`'s `signInAgain` and `noAddress` go. A first password takes a code mailed to the person's own address; an account without one sets none (`wrongCredentials`). - Learn's server: `instance.info()` without `gitHubClientId`, the pruning without GitHub, and `minimumAppBuild` 24, as builds up to 23 (v0.20.0) require `SignInWays.gitHub`: the server deploys with the release of build 24. - halkyon_app: no GitHub button or problems on the start screen, no password offered after a GitHub sign-in, and `ServerpodAuthGateway` without the browser half only GitHub used (`(client, base:)`). The account section offers a first password only to an account with an address. `LoopbackWebAuth` and the apps' schemes stay, SimpleLogin's ways back. - Learn's Profile lists no GitHub; the texts go (English, German). - Serverpod's `serverpod_auth_idp_github_account` stays, as its migrations make it; a row goes with its account, and ADR 0020's D36 gives operators the SQL to delete those left. - deploy/: compose.yaml and .env.example without GitHub. The READMEs, AGENTS.md files and ADR 0017 amended. BREAKING CHANGE: builds up to 23 can't read the instance's answers about an account's ways in; minimumAppBuild is 24. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
1913 lines
65 KiB
Dart
1913 lines
65 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);
|
||
|
||
/// 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;
|
||
|
||
/// 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 @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;
|
||
|
||
/// 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;
|
||
}
|
||
|
||
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.',
|
||
);
|
||
}
|