An account that signs in with SimpleLogin opens its keys with its password. Where that is lost, the unlock step's "Forgot your password?" opens one step: the recovery phrase, and a new password twice. There is no address and no code: the SimpleLogin sign-in of a moment ago stands for them (D20). - The device opens the keys with the phrase (`keys.beginPhrase`) and wraps them under the new password (`AccountCrypto.newKeysPassword`). It then signs the phrase's proof bound to that password (`signKeysResetProof`), which `keys.resetPassword` takes with the sign-in. The keys stay, and every other session ends. - A phrase that doesn't open the keys is refused on the device, and the instance gets no proof to count. Two passwords that differ are refused before anything is sent. - The gateway's `beginPhrase` and `resetPassword` run on the account's own session, not yet the device's. The repository's `resetPassword` ties them together, and the cubit and sheet have their `forgot` step. Three texts are new, in English and German. - halkyon_base_server exports `isKeysPassword` for the interop test, which checks against the register's checks, with real libsodium, what the device sends. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: Tizian 「ティツィアーン」 <raisondetredev@pm.me>
1853 lines
62 KiB
Dart
1853 lines
62 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 @startWithGitHub.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Sign in with GitHub'**
|
||
String get startWithGitHub;
|
||
|
||
/// No description provided for @startGitHubFailed.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Couldn\'t sign in with GitHub.'**
|
||
String get startGitHubFailed;
|
||
|
||
/// No description provided for @startNoGitHubAccount.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'No account here signs in with this GitHub account.'**
|
||
String get startNoGitHubAccount;
|
||
|
||
/// Said after a GitHub account nobody on the instance signs in with, where people sign in with a password and GitHub is added to nobody (ADR 0017).
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Create an account with your email address and a password instead.'**
|
||
String get gitHubCreateAccountInstead;
|
||
|
||
/// Said after a GitHub account nobody on the instance signs in with, where the instance offers SimpleLogin (ADR 0020): GitHub makes no account.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Continue with SimpleLogin to create one instead.'**
|
||
String get gitHubSimpleLoginInstead;
|
||
|
||
/// No description provided for @gitHubUsePassword.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'This account signs in with its email address and password now, not with GitHub.'**
|
||
String get gitHubUsePassword;
|
||
|
||
/// No description provided for @gitHubEnded.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Sign-in with GitHub has ended on this instance.'**
|
||
String get gitHubEnded;
|
||
|
||
/// 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 @startGitHubEnds.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Sign-in with GitHub ends on {date}.'**
|
||
String startGitHubEnds(String date);
|
||
|
||
/// 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 @passwordSectionGitHubEnds.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Sign-in with GitHub ends on {date}. Set up a password before then to keep your account.'**
|
||
String passwordSectionGitHubEnds(String date);
|
||
|
||
/// 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 @passwordNoAddress.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Your account has no email address yet.'**
|
||
String get passwordNoAddress;
|
||
|
||
/// 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 @passwordSignInAgain.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'To give an account that signs in with GitHub its password, sign in with GitHub again first: it has been more than a few minutes.'**
|
||
String get passwordSignInAgain;
|
||
|
||
/// No description provided for @passwordSignInWithGitHubAgain.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Sign in with GitHub again'**
|
||
String get passwordSignInWithGitHubAgain;
|
||
|
||
/// No description provided for @passwordOfferTitle.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Set up a password'**
|
||
String get passwordOfferTitle;
|
||
|
||
/// No description provided for @passwordOfferBody.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Sign-in with GitHub is ending. Set up a password and an authenticator app to keep your account.'**
|
||
String get passwordOfferBody;
|
||
|
||
/// No description provided for @passwordOfferLater.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Later'**
|
||
String get passwordOfferLater;
|
||
|
||
/// 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 @passwordSectionGitHubEndsDeletes.
|
||
///
|
||
/// In en, this message translates to:
|
||
/// **'Sign-in with GitHub ends on {date}. Set up a password before then: an account without one is deleted 30 days later, with everything in it.'**
|
||
String passwordSectionGitHubEndsDeletes(String date);
|
||
|
||
/// 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 @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.',
|
||
);
|
||
}
|