Files
habo/lib/generated/app_localizations.dart
dazhuang aa69f2a91e feat: initial commit - Habo habit tracking app
- Complete MVP with Repository Pattern, SQLite storage
- Provider + ChangeNotifier state management
- Navigation 2.0 with deep link support
- Habit CRUD with twoDayRule, notifications, categories
- Backup/Restore via JSON
- Statistics with streak tracking
- Material You theme support
- Biometric lock support
- Desktop widget support
- 27 languages i18n structure
- Comprehensive test suite (87/89 passing)
2026-04-13 15:02:30 +00:00

1461 lines
41 KiB
Dart
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
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 'app_localizations_en.dart';
// ignore_for_file: type=lint
/// Callers can lookup localized strings with an instance of AppLocalizations
/// returned by `AppLocalizations.of(context)`.
///
/// Applications need to include `AppLocalizations.delegate()` in their app's
/// `localizationDelegates` list, and the locales they support in the app's
/// `supportedLocales` list. For example:
///
/// ```dart
/// import 'generated/app_localizations.dart';
///
/// return MaterialApp(
/// localizationsDelegates: AppLocalizations.localizationsDelegates,
/// supportedLocales: AppLocalizations.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, youll need to edit this
/// file.
///
/// First, open your projects ios/Runner.xcworkspace Xcode workspace file.
/// Then, in the Project Navigator, open the Info.plist file under the Runner
/// projects 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 AppLocalizations.supportedLocales
/// property.
abstract class AppLocalizations {
AppLocalizations(String locale)
: localeName = intl.Intl.canonicalizedLocale(locale.toString());
final String localeName;
static AppLocalizations of(BuildContext context) {
return Localizations.of<AppLocalizations>(context, AppLocalizations)!;
}
static const LocalizationsDelegate<AppLocalizations> delegate =
_AppLocalizationsDelegate();
/// 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('en')];
/// No description provided for @habits.
///
/// In en, this message translates to:
/// **'Habits:'**
String get habits;
/// No description provided for @statistics.
///
/// In en, this message translates to:
/// **'Statistics'**
String get statistics;
/// No description provided for @emptyList.
///
/// In en, this message translates to:
/// **'Empty list'**
String get emptyList;
/// No description provided for @noDataAboutHabits.
///
/// In en, this message translates to:
/// **'There is no data about habits.'**
String get noDataAboutHabits;
/// No description provided for @topStreak.
///
/// In en, this message translates to:
/// **'Top streak'**
String get topStreak;
/// No description provided for @currentStreak.
///
/// In en, this message translates to:
/// **'Current streak'**
String get currentStreak;
/// No description provided for @total.
///
/// In en, this message translates to:
/// **'Total'**
String get total;
/// No description provided for @unknown.
///
/// In en, this message translates to:
/// **'Unknown'**
String get unknown;
/// No description provided for @warning.
///
/// In en, this message translates to:
/// **'Warning'**
String get warning;
/// No description provided for @allHabitsWillBeReplaced.
///
/// In en, this message translates to:
/// **'All habits will be replaced with habits from backup.'**
String get allHabitsWillBeReplaced;
/// No description provided for @restore.
///
/// In en, this message translates to:
/// **'Restore'**
String get restore;
/// No description provided for @cancel.
///
/// In en, this message translates to:
/// **'Cancel'**
String get cancel;
/// No description provided for @settings.
///
/// In en, this message translates to:
/// **'Settings'**
String get settings;
/// No description provided for @theme.
///
/// In en, this message translates to:
/// **'Theme'**
String get theme;
/// No description provided for @firstDayOfWeek.
///
/// In en, this message translates to:
/// **'First day of the week'**
String get firstDayOfWeek;
/// No description provided for @notifications.
///
/// In en, this message translates to:
/// **'Notifications'**
String get notifications;
/// No description provided for @notificationTime.
///
/// In en, this message translates to:
/// **'Notification time'**
String get notificationTime;
/// No description provided for @soundEffects.
///
/// In en, this message translates to:
/// **'Sound effects'**
String get soundEffects;
/// No description provided for @showMonthName.
///
/// In en, this message translates to:
/// **'Show month name'**
String get showMonthName;
/// No description provided for @setColors.
///
/// In en, this message translates to:
/// **'Set colors'**
String get setColors;
/// No description provided for @backup.
///
/// In en, this message translates to:
/// **'Backup'**
String get backup;
/// No description provided for @create.
///
/// In en, this message translates to:
/// **'Create'**
String get create;
/// No description provided for @onboarding.
///
/// In en, this message translates to:
/// **'Onboarding'**
String get onboarding;
/// No description provided for @about.
///
/// In en, this message translates to:
/// **'About'**
String get about;
/// No description provided for @habo.
///
/// In en, this message translates to:
/// **'Habo'**
String get habo;
/// No description provided for @copyright.
///
/// In en, this message translates to:
/// **'©2023 Habo'**
String get copyright;
/// No description provided for @termsAndConditions.
///
/// In en, this message translates to:
/// **'Terms and Conditions'**
String get termsAndConditions;
/// No description provided for @privacyPolicy.
///
/// In en, this message translates to:
/// **'Privacy Policy'**
String get privacyPolicy;
/// No description provided for @disclaimer.
///
/// In en, this message translates to:
/// **'Disclaimer'**
String get disclaimer;
/// No description provided for @sourceCode.
///
/// In en, this message translates to:
/// **'Source code (GitHub)'**
String get sourceCode;
/// No description provided for @ifYouWantToSupport.
///
/// In en, this message translates to:
/// **'If you want to support Habo you can:'**
String get ifYouWantToSupport;
/// No description provided for @buyMeACoffee.
///
/// In en, this message translates to:
/// **'Buy me a coffee'**
String get buyMeACoffee;
/// No description provided for @reset.
///
/// In en, this message translates to:
/// **'Reset'**
String get reset;
/// No description provided for @done.
///
/// In en, this message translates to:
/// **'Done'**
String get done;
/// No description provided for @congratulationsReward.
///
/// In en, this message translates to:
/// **'Congratulations! Your reward:'**
String get congratulationsReward;
/// No description provided for @ohNoSanction.
///
/// In en, this message translates to:
/// **'Oh no! Your sanction:'**
String get ohNoSanction;
/// No description provided for @month.
///
/// In en, this message translates to:
/// **'Month'**
String get month;
/// No description provided for @week.
///
/// In en, this message translates to:
/// **'Week'**
String get week;
/// No description provided for @habitLoop.
///
/// In en, this message translates to:
/// **'Habit loop'**
String get habitLoop;
/// No description provided for @habitLoopDescription.
///
/// In en, this message translates to:
/// **'Habit Loop is a psychological model describing the process of habit formation. It consists of three components: Cue, Routine, and Reward. The Cue triggers the Routine (habitual action), which is then reinforced by the Reward, creating a loop that makes the habit more ingrained and likely to be repeated.'**
String get habitLoopDescription;
/// No description provided for @cue.
///
/// In en, this message translates to:
/// **'Cue'**
String get cue;
/// No description provided for @cueDescription.
///
/// In en, this message translates to:
/// **'is the trigger that initiates your habit. It could be a specific time, location, feeling, or an event.'**
String get cueDescription;
/// No description provided for @routine.
///
/// In en, this message translates to:
/// **'Routine'**
String get routine;
/// No description provided for @routineDescription.
///
/// In en, this message translates to:
/// **'is the action you take in response to the cue. This is the habit itself.'**
String get routineDescription;
/// No description provided for @reward.
///
/// In en, this message translates to:
/// **'Reward'**
String get reward;
/// No description provided for @rewardDescription.
///
/// In en, this message translates to:
/// **'is the benefit or positive feeling you experience after performing the routine. It reinforces the habit.'**
String get rewardDescription;
/// No description provided for @editHabit.
///
/// In en, this message translates to:
/// **'Edit Habit'**
String get editHabit;
/// No description provided for @createHabit.
///
/// In en, this message translates to:
/// **'Create Habit'**
String get createHabit;
/// No description provided for @delete.
///
/// In en, this message translates to:
/// **'Delete'**
String get delete;
/// No description provided for @habitTitleEmptyError.
///
/// In en, this message translates to:
/// **'The habit title can not be empty.'**
String get habitTitleEmptyError;
/// No description provided for @save.
///
/// In en, this message translates to:
/// **'Save'**
String get save;
/// No description provided for @exercise.
///
/// In en, this message translates to:
/// **'Exercise'**
String get exercise;
/// No description provided for @habit.
///
/// In en, this message translates to:
/// **'Habit'**
String get habit;
/// No description provided for @useTwoDayRule.
///
/// In en, this message translates to:
/// **'Use Two day rule'**
String get useTwoDayRule;
/// No description provided for @twoDayRule.
///
/// In en, this message translates to:
/// **'Two day rule'**
String get twoDayRule;
/// No description provided for @twoDayRuleDescription.
///
/// In en, this message translates to:
/// **'With two day rule, you can miss one day and do not lose a streak if the next day is successful.'**
String get twoDayRuleDescription;
/// No description provided for @advancedHabitBuilding.
///
/// In en, this message translates to:
/// **'Advanced habit building'**
String get advancedHabitBuilding;
/// No description provided for @advancedHabitBuildingDescription.
///
/// In en, this message translates to:
/// **'This section helps you better define your habits utilizing the Habit loop. You should define cues, routines, and rewards for every habit.'**
String get advancedHabitBuildingDescription;
/// No description provided for @at7AM.
///
/// In en, this message translates to:
/// **'At 7:00AM'**
String get at7AM;
/// No description provided for @do50PushUps.
///
/// In en, this message translates to:
/// **'Do 50 push ups'**
String get do50PushUps;
/// No description provided for @fifteenMinOfVideoGames.
///
/// In en, this message translates to:
/// **'15 min. of video games'**
String get fifteenMinOfVideoGames;
/// No description provided for @showReward.
///
/// In en, this message translates to:
/// **'Show reward'**
String get showReward;
/// No description provided for @remainderOfReward.
///
/// In en, this message translates to:
/// **'The reminder of the reward after a successful routine.'**
String get remainderOfReward;
/// No description provided for @habitContract.
///
/// In en, this message translates to:
/// **'Habit contract'**
String get habitContract;
/// No description provided for @habitContractDescription.
///
/// In en, this message translates to:
/// **'While positive reinforcement is recommended, some people may opt for a habit contract. A habit contract allows you to specify a sanction that will be imposed if you miss your habit, and may involve an accountability partner who helps supervise your goals.'**
String get habitContractDescription;
/// No description provided for @donateToCharity.
///
/// In en, this message translates to:
/// **'Donate 10\$ to charity'**
String get donateToCharity;
/// No description provided for @sanction.
///
/// In en, this message translates to:
/// **'Sanction'**
String get sanction;
/// No description provided for @showSanction.
///
/// In en, this message translates to:
/// **'Show sanction'**
String get showSanction;
/// No description provided for @remainderOfSanction.
///
/// In en, this message translates to:
/// **'The reminder of the sanction after a unsuccessful routine.'**
String get remainderOfSanction;
/// No description provided for @dan.
///
/// In en, this message translates to:
/// **'Dan'**
String get dan;
/// No description provided for @accountabilityPartner.
///
/// In en, this message translates to:
/// **'Accountability partner'**
String get accountabilityPartner;
/// No description provided for @add.
///
/// In en, this message translates to:
/// **'Add'**
String get add;
/// No description provided for @haboNeedsPermission.
///
/// In en, this message translates to:
/// **'Habo needs permission to send notifications to work properly.'**
String get haboNeedsPermission;
/// No description provided for @allow.
///
/// In en, this message translates to:
/// **'Allow'**
String get allow;
/// No description provided for @date.
///
/// In en, this message translates to:
/// **'Date'**
String get date;
/// No description provided for @check.
///
/// In en, this message translates to:
/// **'Check'**
String get check;
/// No description provided for @fail.
///
/// In en, this message translates to:
/// **'Fail'**
String get fail;
/// No description provided for @skip.
///
/// In en, this message translates to:
/// **'Skip'**
String get skip;
/// No description provided for @note.
///
/// In en, this message translates to:
/// **'Note'**
String get note;
/// No description provided for @yourCommentHere.
///
/// In en, this message translates to:
/// **'Your note here'**
String get yourCommentHere;
/// No description provided for @close.
///
/// In en, this message translates to:
/// **'Close'**
String get close;
/// No description provided for @createYourFirstHabit.
///
/// In en, this message translates to:
/// **'Create your first habit.'**
String get createYourFirstHabit;
/// No description provided for @modify.
///
/// In en, this message translates to:
/// **'Modify'**
String get modify;
/// No description provided for @backupFailedError.
///
/// In en, this message translates to:
/// **'ERROR: Creating backup failed.'**
String get backupFailedError;
/// No description provided for @restoreFailedError.
///
/// In en, this message translates to:
/// **'ERROR: Restoring backup failed.'**
String get restoreFailedError;
/// No description provided for @habitDeleted.
///
/// In en, this message translates to:
/// **'Habit deleted.'**
String get habitDeleted;
/// No description provided for @undo.
///
/// In en, this message translates to:
/// **'Undo'**
String get undo;
/// No description provided for @appNotifications.
///
/// In en, this message translates to:
/// **'App notifications'**
String get appNotifications;
/// No description provided for @appNotificationsChannel.
///
/// In en, this message translates to:
/// **'Notification channel for application notifications'**
String get appNotificationsChannel;
/// No description provided for @habitNotifications.
///
/// In en, this message translates to:
/// **'Habit notifications'**
String get habitNotifications;
/// No description provided for @habitNotificationsChannel.
///
/// In en, this message translates to:
/// **'Notification channel for habit notifications'**
String get habitNotificationsChannel;
/// No description provided for @doNotForgetToCheckYourHabits.
///
/// In en, this message translates to:
/// **'Do not forget to check your habits.'**
String get doNotForgetToCheckYourHabits;
/// No description provided for @themeSelect.
///
/// In en, this message translates to:
/// **'{theme, select, device {Device} light {Light} dark {Dark} oled {OLED black} materialYou {Material You} other{Device}}'**
String themeSelect(String theme);
/// No description provided for @defineYourHabits.
///
/// In en, this message translates to:
/// **'Define your habits'**
String get defineYourHabits;
/// No description provided for @defineYourHabitsDescription.
///
/// In en, this message translates to:
/// **'To better stick to your habits, you can define:'**
String get defineYourHabitsDescription;
/// No description provided for @cueNumbered.
///
/// In en, this message translates to:
/// **'1. Cue'**
String get cueNumbered;
/// No description provided for @routineNumbered.
///
/// In en, this message translates to:
/// **'2. Routine'**
String get routineNumbered;
/// No description provided for @rewardNumbered.
///
/// In en, this message translates to:
/// **'3. Reward'**
String get rewardNumbered;
/// No description provided for @logYourDays.
///
/// In en, this message translates to:
/// **'Log your days'**
String get logYourDays;
/// No description provided for @successful.
///
/// In en, this message translates to:
/// **'Successful'**
String get successful;
/// No description provided for @notSoSuccessful.
///
/// In en, this message translates to:
/// **'Not so successful'**
String get notSoSuccessful;
/// No description provided for @skipDoesNotAffectStreaks.
///
/// In en, this message translates to:
/// **'Skip (does not affect streaks)'**
String get skipDoesNotAffectStreaks;
/// No description provided for @observeYourProgress.
///
/// In en, this message translates to:
/// **'Observe your progress'**
String get observeYourProgress;
/// No description provided for @trackYourProgress.
///
/// In en, this message translates to:
/// **'You can track your progress through the calendar view in every habit or on the statistics page.'**
String get trackYourProgress;
/// No description provided for @backupCreatedSuccessfully.
///
/// In en, this message translates to:
/// **'Backup created successfully!'**
String get backupCreatedSuccessfully;
/// No description provided for @backupFailed.
///
/// In en, this message translates to:
/// **'Backup failed!'**
String get backupFailed;
/// No description provided for @restoreCompletedSuccessfully.
///
/// In en, this message translates to:
/// **'Restore completed successfully!'**
String get restoreCompletedSuccessfully;
/// No description provided for @restoreFailed.
///
/// In en, this message translates to:
/// **'Restore failed!'**
String get restoreFailed;
/// No description provided for @fileNotFound.
///
/// In en, this message translates to:
/// **'File not found'**
String get fileNotFound;
/// No description provided for @fileTooLarge.
///
/// In en, this message translates to:
/// **'File too large (max 10MB)'**
String get fileTooLarge;
/// No description provided for @invalidBackupFile.
///
/// In en, this message translates to:
/// **'Invalid backup file'**
String get invalidBackupFile;
/// No description provided for @progress.
///
/// In en, this message translates to:
/// **'Progress'**
String get progress;
/// No description provided for @enterAmount.
///
/// In en, this message translates to:
/// **'Enter amount'**
String get enterAmount;
/// No description provided for @complete.
///
/// In en, this message translates to:
/// **'Complete'**
String get complete;
/// No description provided for @saveProgress.
///
/// In en, this message translates to:
/// **'Save Progress'**
String get saveProgress;
/// No description provided for @currentProgress.
///
/// In en, this message translates to:
/// **'Current: {current} {unit}'**
String currentProgress(String current, String unit);
/// No description provided for @targetProgress.
///
/// In en, this message translates to:
/// **'Target: {target} {unit}'**
String targetProgress(String target, String unit);
/// No description provided for @progressOf.
///
/// In en, this message translates to:
/// **'{current} / {target} {unit}'**
String progressOf(String current, String target, String unit);
/// No description provided for @numericHabit.
///
/// In en, this message translates to:
/// **'Progressive'**
String get numericHabit;
/// No description provided for @targetValue.
///
/// In en, this message translates to:
/// **'Target value'**
String get targetValue;
/// No description provided for @partialValue.
///
/// In en, this message translates to:
/// **'Partial value'**
String get partialValue;
/// No description provided for @unit.
///
/// In en, this message translates to:
/// **'Unit'**
String get unit;
/// No description provided for @habitType.
///
/// In en, this message translates to:
/// **'Habit type'**
String get habitType;
/// No description provided for @booleanHabit.
///
/// In en, this message translates to:
/// **'Checkable (Yes/No)'**
String get booleanHabit;
/// No description provided for @slider.
///
/// In en, this message translates to:
/// **'Slider'**
String get slider;
/// No description provided for @input.
///
/// In en, this message translates to:
/// **'Input'**
String get input;
/// No description provided for @numericHabitDescription.
///
/// In en, this message translates to:
/// **'Numeric habits let you track progress in increments throughout the day.'**
String get numericHabitDescription;
/// No description provided for @partialValueDescription.
///
/// In en, this message translates to:
/// **'To track progress in smaller increments'**
String get partialValueDescription;
/// No description provided for @categories.
///
/// In en, this message translates to:
/// **'Categories'**
String get categories;
/// No description provided for @addCategory.
///
/// In en, this message translates to:
/// **'Add Category'**
String get addCategory;
/// No description provided for @editCategory.
///
/// In en, this message translates to:
/// **'Edit Category'**
String get editCategory;
/// No description provided for @category.
///
/// In en, this message translates to:
/// **'Category'**
String get category;
/// No description provided for @noCategoriesYet.
///
/// In en, this message translates to:
/// **'No categories yet'**
String get noCategoriesYet;
/// No description provided for @createFirstCategory.
///
/// In en, this message translates to:
/// **'Create your first category to organize your habits'**
String get createFirstCategory;
/// No description provided for @pleaseEnterCategoryTitle.
///
/// In en, this message translates to:
/// **'Please enter a category title'**
String get pleaseEnterCategoryTitle;
/// No description provided for @categoryAlreadyExists.
///
/// In en, this message translates to:
/// **'Category \"{title}\" already exists'**
String categoryAlreadyExists(String title);
/// No description provided for @categoryCreatedSuccessfully.
///
/// In en, this message translates to:
/// **'Category \"{title}\" created successfully'**
String categoryCreatedSuccessfully(String title);
/// No description provided for @categoryUpdatedSuccessfully.
///
/// In en, this message translates to:
/// **'Category \"{title}\" updated successfully'**
String categoryUpdatedSuccessfully(String title);
/// No description provided for @categoryDeletedSuccessfully.
///
/// In en, this message translates to:
/// **'Category \"{title}\" deleted successfully'**
String categoryDeletedSuccessfully(String title);
/// No description provided for @failedToSaveCategory.
///
/// In en, this message translates to:
/// **'Failed to save category: {error}'**
String failedToSaveCategory(String error);
/// No description provided for @failedToDeleteCategory.
///
/// In en, this message translates to:
/// **'Failed to delete category: {error}'**
String failedToDeleteCategory(String error);
/// No description provided for @selectCategories.
///
/// In en, this message translates to:
/// **'Select Categories'**
String get selectCategories;
/// No description provided for @selectedCategories.
///
/// In en, this message translates to:
/// **'Selected Categories ({count})'**
String selectedCategories(int count);
/// No description provided for @allCategories.
///
/// In en, this message translates to:
/// **'All Categories'**
String get allCategories;
/// No description provided for @deleteCategory.
///
/// In en, this message translates to:
/// **'Delete Category'**
String get deleteCategory;
/// No description provided for @deleteCategoryConfirmation.
///
/// In en, this message translates to:
/// **'Are you sure you want to delete \"{title}\"?\n\nThis will remove the category from all habits that use it.'**
String deleteCategoryConfirmation(String title);
/// No description provided for @noHabitsInCategory.
///
/// In en, this message translates to:
/// **'No habits in \"{title}\"'**
String noHabitsInCategory(String title);
/// No description provided for @createHabitForCategory.
///
/// In en, this message translates to:
/// **'Create a habit and assign it to this category'**
String get createHabitForCategory;
/// No description provided for @showCategories.
///
/// In en, this message translates to:
/// **'Show Categories'**
String get showCategories;
/// No description provided for @archive.
///
/// In en, this message translates to:
/// **'Archive'**
String get archive;
/// No description provided for @unarchive.
///
/// In en, this message translates to:
/// **'Unarchive'**
String get unarchive;
/// No description provided for @archiveHabit.
///
/// In en, this message translates to:
/// **'Archive habit'**
String get archiveHabit;
/// No description provided for @unarchiveHabit.
///
/// In en, this message translates to:
/// **'Unarchive habit'**
String get unarchiveHabit;
/// No description provided for @archivedHabits.
///
/// In en, this message translates to:
/// **'Archived Habits'**
String get archivedHabits;
/// No description provided for @noArchivedHabits.
///
/// In en, this message translates to:
/// **'No archived habits'**
String get noArchivedHabits;
/// No description provided for @viewArchivedHabits.
///
/// In en, this message translates to:
/// **'View archived habits'**
String get viewArchivedHabits;
/// No description provided for @habitArchived.
///
/// In en, this message translates to:
/// **'Habit archived'**
String get habitArchived;
/// No description provided for @habitUnarchived.
///
/// In en, this message translates to:
/// **'Habit unarchived'**
String get habitUnarchived;
/// No description provided for @biometric.
///
/// In en, this message translates to:
/// **'Biometric'**
String get biometric;
/// No description provided for @biometricLockEnabled.
///
/// In en, this message translates to:
/// **'Biometric lock enabled'**
String get biometricLockEnabled;
/// No description provided for @biometricLockDisabled.
///
/// In en, this message translates to:
/// **'Biometric lock disabled'**
String get biometricLockDisabled;
/// No description provided for @authenticationError.
///
/// In en, this message translates to:
/// **'Authentication error'**
String get authenticationError;
/// No description provided for @biometricAuthenticationRequired.
///
/// In en, this message translates to:
/// **'Biometric authentication required'**
String get biometricAuthenticationRequired;
/// No description provided for @setupFingerprintFaceUnlock.
///
/// In en, this message translates to:
/// **'Please set up your fingerprint or face unlock in device settings'**
String get setupFingerprintFaceUnlock;
/// No description provided for @touchSensor.
///
/// In en, this message translates to:
/// **'Touch sensor'**
String get touchSensor;
/// No description provided for @biometricNotRecognized.
///
/// In en, this message translates to:
/// **'Biometric not recognized, try again'**
String get biometricNotRecognized;
/// No description provided for @biometricRequired.
///
/// In en, this message translates to:
/// **'Biometric required'**
String get biometricRequired;
/// No description provided for @biometricAuthenticationSucceeded.
///
/// In en, this message translates to:
/// **'Biometric authentication succeeded'**
String get biometricAuthenticationSucceeded;
/// No description provided for @deviceCredentialsRequired.
///
/// In en, this message translates to:
/// **'Device credentials required'**
String get deviceCredentialsRequired;
/// No description provided for @setupDeviceCredentials.
///
/// In en, this message translates to:
/// **'Please set up device credentials in settings'**
String get setupDeviceCredentials;
/// No description provided for @setupTouchIdFaceId.
///
/// In en, this message translates to:
/// **'Please set up your Touch ID or Face ID in device settings'**
String get setupTouchIdFaceId;
/// No description provided for @reenableTouchIdFaceId.
///
/// In en, this message translates to:
/// **'Please reenable your Touch ID or Face ID'**
String get reenableTouchIdFaceId;
/// No description provided for @biometricLock.
///
/// In en, this message translates to:
/// **'Biometric Lock'**
String get biometricLock;
/// No description provided for @biometricLockDescription.
///
/// In en, this message translates to:
/// **'Secure app with {authMethod}'**
String biometricLockDescription(String authMethod);
/// No description provided for @authenticateToEnable.
///
/// In en, this message translates to:
/// **'Authenticate to enable biometric lock'**
String get authenticateToEnable;
/// No description provided for @authenticateToAccess.
///
/// In en, this message translates to:
/// **'Please authenticate to access Habo'**
String get authenticateToAccess;
/// No description provided for @authenticationRequired.
///
/// In en, this message translates to:
/// **'Authentication Required'**
String get authenticationRequired;
/// No description provided for @authenticationFailedMessage.
///
/// In en, this message translates to:
/// **'Please authenticate to access Habo using {authMethod}'**
String authenticationFailedMessage(String authMethod);
/// No description provided for @tryAgain.
///
/// In en, this message translates to:
/// **'Try Again'**
String get tryAgain;
/// No description provided for @authenticating.
///
/// In en, this message translates to:
/// **'Authenticating…'**
String get authenticating;
/// No description provided for @authenticate.
///
/// In en, this message translates to:
/// **'Authenticate'**
String get authenticate;
/// No description provided for @buildingBetterHabits.
///
/// In en, this message translates to:
/// **'Building Better Habits'**
String get buildingBetterHabits;
/// No description provided for @authenticationPrompt.
///
/// In en, this message translates to:
/// **'Please authenticate using {authMethod} to access your habits'**
String authenticationPrompt(String authMethod);
/// No description provided for @devicePinPatternPassword.
///
/// In en, this message translates to:
/// **'Device PIN, Pattern, or Password'**
String get devicePinPatternPassword;
/// No description provided for @fingerprint.
///
/// In en, this message translates to:
/// **'Fingerprint'**
String get fingerprint;
/// No description provided for @iris.
///
/// In en, this message translates to:
/// **'Iris'**
String get iris;
/// No description provided for @whatsNewTitle.
///
/// In en, this message translates to:
/// **'What\'s New'**
String get whatsNewTitle;
/// No description provided for @whatsNewVersion.
///
/// In en, this message translates to:
/// **'Version {version}'**
String whatsNewVersion(String version);
/// No description provided for @featureNumericTitle.
///
/// In en, this message translates to:
/// **'Numeric values in habits'**
String get featureNumericTitle;
/// No description provided for @featureNumericDesc.
///
/// In en, this message translates to:
/// **'Track counts like glasses of water or pages read'**
String get featureNumericDesc;
/// No description provided for @featureDeepLinksTitle.
///
/// In en, this message translates to:
/// **'URL scheme (deep links)'**
String get featureDeepLinksTitle;
/// No description provided for @featureDeepLinksDesc.
///
/// In en, this message translates to:
/// **'Open Habo directly to screens like settings or create'**
String get featureDeepLinksDesc;
/// No description provided for @featureCategoriesTitle.
///
/// In en, this message translates to:
/// **'Categories'**
String get featureCategoriesTitle;
/// No description provided for @featureCategoriesDesc.
///
/// In en, this message translates to:
/// **'Organize habits with category filters'**
String get featureCategoriesDesc;
/// No description provided for @featureArchiveTitle.
///
/// In en, this message translates to:
/// **'Archive'**
String get featureArchiveTitle;
/// No description provided for @featureArchiveDesc.
///
/// In en, this message translates to:
/// **'Hide habits you no longer track without deleting'**
String get featureArchiveDesc;
/// No description provided for @featureMaterialYouTitle.
///
/// In en, this message translates to:
/// **'Material You theme (Android)'**
String get featureMaterialYouTitle;
/// No description provided for @featureMaterialYouDesc.
///
/// In en, this message translates to:
/// **'Dynamic colors that match your wallpaper'**
String get featureMaterialYouDesc;
/// No description provided for @featureSoundTitle.
///
/// In en, this message translates to:
/// **'New sound engine'**
String get featureSoundTitle;
/// No description provided for @featureSoundDesc.
///
/// In en, this message translates to:
/// **'Adjustable volume'**
String get featureSoundDesc;
/// No description provided for @featureLockTitle.
///
/// In en, this message translates to:
/// **'Lock feature'**
String get featureLockTitle;
/// No description provided for @featureLockDesc.
///
/// In en, this message translates to:
/// **'Secure the app with Face ID / Touch ID / biometrics'**
String get featureLockDesc;
/// No description provided for @featureIosSoundMixingTitle.
///
/// In en, this message translates to:
/// **'Fixed sound mixing'**
String get featureIosSoundMixingTitle;
/// No description provided for @featureIosSoundMixingDesc.
///
/// In en, this message translates to:
/// **'Habo sounds no longer interrupt your music or podcasts'**
String get featureIosSoundMixingDesc;
/// No description provided for @featureHomescreenWidgetTitle.
///
/// In en, this message translates to:
/// **'Homescreen widget'**
String get featureHomescreenWidgetTitle;
/// No description provided for @featureHomescreenWidgetDesc.
///
/// In en, this message translates to:
/// **'View your habit progress at a glance from your home screen (experimental)'**
String get featureHomescreenWidgetDesc;
/// No description provided for @featureLongpressCheckTitle.
///
/// In en, this message translates to:
/// **'Longpress check'**
String get featureLongpressCheckTitle;
/// No description provided for @featureLongpressCheckDesc.
///
/// In en, this message translates to:
/// **'Longpress on habit buttons to quickly change status'**
String get featureLongpressCheckDesc;
/// No description provided for @haboSyncComingSoon.
///
/// In en, this message translates to:
/// **'Coming Soon'**
String get haboSyncComingSoon;
/// No description provided for @haboSyncDescription.
///
/// In en, this message translates to:
/// **'Sync your habits across all your devices with Habo\'s end-to-end encrypted cloud service.'**
String get haboSyncDescription;
/// No description provided for @haboSyncLearnMore.
///
/// In en, this message translates to:
/// **'Learn more at habo.space/sync'**
String get haboSyncLearnMore;
/// No description provided for @habitsToday.
///
/// In en, this message translates to:
/// **'Habits today'**
String get habitsToday;
/// No description provided for @or.
///
/// In en, this message translates to:
/// **'or'**
String get or;
/// No description provided for @oneTapCheck.
///
/// In en, this message translates to:
/// **'Single tap to check'**
String get oneTapCheck;
/// No description provided for @tapCheckLongPressMenu.
///
/// In en, this message translates to:
/// **'Tap to check, long press for menu'**
String get tapCheckLongPressMenu;
/// No description provided for @categoryName.
///
/// In en, this message translates to:
/// **'Category name'**
String get categoryName;
/// No description provided for @createCategory.
///
/// In en, this message translates to:
/// **'Create category'**
String get createCategory;
/// No description provided for @all.
///
/// In en, this message translates to:
/// **'All'**
String get all;
/// No description provided for @selectIcon.
///
/// In en, this message translates to:
/// **'Pick an icon'**
String get selectIcon;
/// No description provided for @searchIcons.
///
/// In en, this message translates to:
/// **'Search'**
String get searchIcons;
/// No description provided for @habitArchivedSuccess.
///
/// In en, this message translates to:
/// **'Habit archived'**
String get habitArchivedSuccess;
/// No description provided for @habitUnarchivedSuccess.
///
/// In en, this message translates to:
/// **'Habit unarchived'**
String get habitUnarchivedSuccess;
}
class _AppLocalizationsDelegate
extends LocalizationsDelegate<AppLocalizations> {
const _AppLocalizationsDelegate();
@override
Future<AppLocalizations> load(Locale locale) {
return SynchronousFuture<AppLocalizations>(lookupAppLocalizations(locale));
}
@override
bool isSupported(Locale locale) =>
<String>['en'].contains(locale.languageCode);
@override
bool shouldReload(_AppLocalizationsDelegate old) => false;
}
AppLocalizations lookupAppLocalizations(Locale locale) {
// Lookup logic when only language code is specified.
switch (locale.languageCode) {
case 'en':
return AppLocalizationsEn();
}
throw FlutterError(
'AppLocalizations.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.',
);
}