Files
recipe-app/flutter/lib/l10n/generated/app_localizations.dart
T
Nils-Johan Gynther ffe50e5151
Test Suite / test (24.15.0) (push) Has been cancelled
feat: add TypeScript definitions for next-auth session with accessToken and user details
2026-05-04 20:09:21 +02:00

1898 lines
56 KiB
Dart
Raw 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';
import 'app_localizations_sv.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'),
Locale('sv')
];
/// No description provided for @appTitle.
///
/// In en, this message translates to:
/// **'Recipe App'**
String get appTitle;
/// No description provided for @retryAction.
///
/// In en, this message translates to:
/// **'Retry'**
String get retryAction;
/// No description provided for @mealPlanTitle.
///
/// In en, this message translates to:
/// **'Meal plan'**
String get mealPlanTitle;
/// No description provided for @mealPlanLoading.
///
/// In en, this message translates to:
/// **'Loading meal plan...'**
String get mealPlanLoading;
/// No description provided for @mealPlanWeekPrevious.
///
/// In en, this message translates to:
/// **'Previous week'**
String get mealPlanWeekPrevious;
/// No description provided for @mealPlanWeekNext.
///
/// In en, this message translates to:
/// **'Next week'**
String get mealPlanWeekNext;
/// No description provided for @mealPlanWeekCurrent.
///
/// In en, this message translates to:
/// **'Current week'**
String get mealPlanWeekCurrent;
/// No description provided for @mealPlanDayNoRecipe.
///
/// In en, this message translates to:
/// **'Nothing planned'**
String get mealPlanDayNoRecipe;
/// No description provided for @mealPlanSelectRecipe.
///
/// In en, this message translates to:
/// **'Choose recipe'**
String get mealPlanSelectRecipe;
/// No description provided for @mealPlanViewRecipe.
///
/// In en, this message translates to:
/// **'View recipe'**
String get mealPlanViewRecipe;
/// No description provided for @mealPlanServingsLabel.
///
/// In en, this message translates to:
/// **'Servings'**
String get mealPlanServingsLabel;
/// No description provided for @mealPlanResetServings.
///
/// In en, this message translates to:
/// **'Reset'**
String get mealPlanResetServings;
/// No description provided for @mealPlanSaving.
///
/// In en, this message translates to:
/// **'Saving...'**
String get mealPlanSaving;
/// No description provided for @mealPlanPlannedRecipes.
///
/// In en, this message translates to:
/// **'{count, plural, one {# recipe planned} other {# recipes planned}}'**
String mealPlanPlannedRecipes(int count);
/// No description provided for @mealPlanShoppingTitle.
///
/// In en, this message translates to:
/// **'Shopping list'**
String get mealPlanShoppingTitle;
/// No description provided for @mealPlanPickRecipeHint.
///
/// In en, this message translates to:
/// **'Choose recipes above to see the combined ingredient list.'**
String get mealPlanPickRecipeHint;
/// No description provided for @mealPlanNoShoppingItems.
///
/// In en, this message translates to:
/// **'No ingredients to show for this week.'**
String get mealPlanNoShoppingItems;
/// No description provided for @mealPlanNoRecipesTitle.
///
/// In en, this message translates to:
/// **'There are no recipes to plan yet.'**
String get mealPlanNoRecipesTitle;
/// No description provided for @mealPlanNoRecipesDescription.
///
/// In en, this message translates to:
/// **'Create at least one recipe first, then add it to the meal plan.'**
String get mealPlanNoRecipesDescription;
/// No description provided for @mealPlanMissingCount.
///
/// In en, this message translates to:
/// **'{count, plural, one {# missing} other {# missing}}'**
String mealPlanMissingCount(int count);
/// No description provided for @mealPlanPartialCount.
///
/// In en, this message translates to:
/// **'{count, plural, one {# partially at home} other {# partially at home}}'**
String mealPlanPartialCount(int count);
/// No description provided for @mealPlanEnoughCount.
///
/// In en, this message translates to:
/// **'{count, plural, one {# at home} other {# at home}}'**
String mealPlanEnoughCount(int count);
/// No description provided for @mealPlanPantryCount.
///
/// In en, this message translates to:
/// **'{count, plural, one {# pantry staple} other {# pantry staples}}'**
String mealPlanPantryCount(int count);
/// No description provided for @mealPlanAllAtHome.
///
/// In en, this message translates to:
/// **'You already have everything at home.'**
String get mealPlanAllAtHome;
/// No description provided for @mealPlanStatusMissing.
///
/// In en, this message translates to:
/// **'Missing'**
String get mealPlanStatusMissing;
/// No description provided for @mealPlanStatusPartial.
///
/// In en, this message translates to:
/// **'Partially at home'**
String get mealPlanStatusPartial;
/// No description provided for @mealPlanStatusEnough.
///
/// In en, this message translates to:
/// **'At home'**
String get mealPlanStatusEnough;
/// No description provided for @mealPlanStatusPantry.
///
/// In en, this message translates to:
/// **'Pantry staple'**
String get mealPlanStatusPantry;
/// No description provided for @loginTitle.
///
/// In en, this message translates to:
/// **'Sign in'**
String get loginTitle;
/// No description provided for @usernameLabel.
///
/// In en, this message translates to:
/// **'Username'**
String get usernameLabel;
/// No description provided for @usernameRequired.
///
/// In en, this message translates to:
/// **'Enter your username.'**
String get usernameRequired;
/// No description provided for @passwordLabel.
///
/// In en, this message translates to:
/// **'Password'**
String get passwordLabel;
/// No description provided for @passwordRequired.
///
/// In en, this message translates to:
/// **'Enter your password.'**
String get passwordRequired;
/// No description provided for @loginAction.
///
/// In en, this message translates to:
/// **'Sign in'**
String get loginAction;
/// No description provided for @sessionExpiredError.
///
/// In en, this message translates to:
/// **'Your session has expired. Sign in again.'**
String get sessionExpiredError;
/// No description provided for @forbiddenError.
///
/// In en, this message translates to:
/// **'You do not have permission to use this feature.'**
String get forbiddenError;
/// No description provided for @serverError.
///
/// In en, this message translates to:
/// **'A server error occurred. Try again in a moment.'**
String get serverError;
/// No description provided for @networkError.
///
/// In en, this message translates to:
/// **'Network error. Check your connection and try again.'**
String get networkError;
/// No description provided for @unexpectedError.
///
/// In en, this message translates to:
/// **'An unexpected error occurred.'**
String get unexpectedError;
/// No description provided for @cancelAction.
///
/// In en, this message translates to:
/// **'Cancel'**
String get cancelAction;
/// No description provided for @saveAction.
///
/// In en, this message translates to:
/// **'Save'**
String get saveAction;
/// No description provided for @deleteAction.
///
/// In en, this message translates to:
/// **'Delete'**
String get deleteAction;
/// No description provided for @addAction.
///
/// In en, this message translates to:
/// **'Add'**
String get addAction;
/// No description provided for @editTooltip.
///
/// In en, this message translates to:
/// **'Edit'**
String get editTooltip;
/// No description provided for @deleteTooltip.
///
/// In en, this message translates to:
/// **'Delete'**
String get deleteTooltip;
/// No description provided for @loadingLabel.
///
/// In en, this message translates to:
/// **'Loading...'**
String get loadingLabel;
/// No description provided for @cannotBeUndone.
///
/// In en, this message translates to:
/// **'This action cannot be undone.'**
String get cannotBeUndone;
/// No description provided for @yesLabel.
///
/// In en, this message translates to:
/// **'Yes'**
String get yesLabel;
/// No description provided for @noLabel.
///
/// In en, this message translates to:
/// **'No'**
String get noLabel;
/// No description provided for @commentLabel.
///
/// In en, this message translates to:
/// **'Comment'**
String get commentLabel;
/// No description provided for @commentOptionalLabel.
///
/// In en, this message translates to:
/// **'Comment (optional)'**
String get commentOptionalLabel;
/// No description provided for @openedLabel.
///
/// In en, this message translates to:
/// **'Opened'**
String get openedLabel;
/// No description provided for @quantityLabel.
///
/// In en, this message translates to:
/// **'Quantity *'**
String get quantityLabel;
/// No description provided for @quantityHint.
///
/// In en, this message translates to:
/// **'Enter quantity'**
String get quantityHint;
/// No description provided for @invalidNumber.
///
/// In en, this message translates to:
/// **'Invalid number'**
String get invalidNumber;
/// No description provided for @unitLabel.
///
/// In en, this message translates to:
/// **'Unit *'**
String get unitLabel;
/// No description provided for @selectDateLabel.
///
/// In en, this message translates to:
/// **'Select date'**
String get selectDateLabel;
/// No description provided for @locationOptionalLabel.
///
/// In en, this message translates to:
/// **'Location (optional)'**
String get locationOptionalLabel;
/// No description provided for @locationLabel.
///
/// In en, this message translates to:
/// **'Location'**
String get locationLabel;
/// No description provided for @brandOptionalLabel.
///
/// In en, this message translates to:
/// **'Brand (optional)'**
String get brandOptionalLabel;
/// No description provided for @brandLabel.
///
/// In en, this message translates to:
/// **'Brand'**
String get brandLabel;
/// No description provided for @enterPositiveNumber.
///
/// In en, this message translates to:
/// **'Enter a positive number'**
String get enterPositiveNumber;
/// No description provided for @inventoryTitle.
///
/// In en, this message translates to:
/// **'Inventory'**
String get inventoryTitle;
/// No description provided for @inventoryFilterAndSort.
///
/// In en, this message translates to:
/// **'Filter and sorting'**
String get inventoryFilterAndSort;
/// No description provided for @inventorySortLatest.
///
/// In en, this message translates to:
/// **'Latest added'**
String get inventorySortLatest;
/// No description provided for @inventorySortNameAsc.
///
/// In en, this message translates to:
/// **'Name A-Z'**
String get inventorySortNameAsc;
/// No description provided for @inventorySortBestBeforeAsc.
///
/// In en, this message translates to:
/// **'Best before ascending'**
String get inventorySortBestBeforeAsc;
/// No description provided for @inventorySortBestBeforeDesc.
///
/// In en, this message translates to:
/// **'Best before descending'**
String get inventorySortBestBeforeDesc;
/// No description provided for @inventorySortLabel.
///
/// In en, this message translates to:
/// **'Sort'**
String get inventorySortLabel;
/// No description provided for @inventoryAllFilter.
///
/// In en, this message translates to:
/// **'All'**
String get inventoryAllFilter;
/// No description provided for @inventoryEmpty.
///
/// In en, this message translates to:
/// **'Inventory is empty.'**
String get inventoryEmpty;
/// No description provided for @inventoryLoading.
///
/// In en, this message translates to:
/// **'Loading inventory...'**
String get inventoryLoading;
/// No description provided for @inventoryCreateTitle.
///
/// In en, this message translates to:
/// **'Add inventory item'**
String get inventoryCreateTitle;
/// No description provided for @inventoryEditTitle.
///
/// In en, this message translates to:
/// **'Edit inventory item'**
String get inventoryEditTitle;
/// No description provided for @inventorySelectProduct.
///
/// In en, this message translates to:
/// **'Select a product from the list.'**
String get inventorySelectProduct;
/// No description provided for @inventoryDeleteTitle.
///
/// In en, this message translates to:
/// **'Delete inventory item?'**
String get inventoryDeleteTitle;
/// No description provided for @inventoryProductLabel.
///
/// In en, this message translates to:
/// **'Product'**
String get inventoryProductLabel;
/// No description provided for @inventoryQuantityDisplayLabel.
///
/// In en, this message translates to:
/// **'Quantity'**
String get inventoryQuantityDisplayLabel;
/// No description provided for @inventoryLocationDisplayLabel.
///
/// In en, this message translates to:
/// **'Location'**
String get inventoryLocationDisplayLabel;
/// No description provided for @inventoryBrandDisplayLabel.
///
/// In en, this message translates to:
/// **'Brand'**
String get inventoryBrandDisplayLabel;
/// No description provided for @inventoryPurchaseDateLabel.
///
/// In en, this message translates to:
/// **'Purchase date'**
String get inventoryPurchaseDateLabel;
/// No description provided for @inventoryBestBeforeLabel.
///
/// In en, this message translates to:
/// **'Best before'**
String get inventoryBestBeforeLabel;
/// No description provided for @inventoryPurchaseDatePrefix.
///
/// In en, this message translates to:
/// **'Purchase: '**
String get inventoryPurchaseDatePrefix;
/// No description provided for @inventoryBestBeforeDatePrefix.
///
/// In en, this message translates to:
/// **'Best before: '**
String get inventoryBestBeforeDatePrefix;
/// No description provided for @inventoryConsumeAction.
///
/// In en, this message translates to:
/// **'Consume'**
String get inventoryConsumeAction;
/// No description provided for @inventoryHistoryAction.
///
/// In en, this message translates to:
/// **'Consumption history'**
String get inventoryHistoryAction;
/// No description provided for @inventoryConsumeAmountLabel.
///
/// In en, this message translates to:
/// **'Amount to consume *'**
String get inventoryConsumeAmountLabel;
/// No description provided for @inventoryHistoryLoading.
///
/// In en, this message translates to:
/// **'Loading history...'**
String get inventoryHistoryLoading;
/// No description provided for @inventoryHistoryEmpty.
///
/// In en, this message translates to:
/// **'No consumption history exists.'**
String get inventoryHistoryEmpty;
/// No description provided for @inventoryRecipesAction.
///
/// In en, this message translates to:
/// **'Recipes'**
String get inventoryRecipesAction;
/// No description provided for @inventoryHistoryTitle.
///
/// In en, this message translates to:
/// **'History: {name}'**
String inventoryHistoryTitle(String name);
/// No description provided for @inventoryConsumeNameTitle.
///
/// In en, this message translates to:
/// **'Consume: {name}'**
String inventoryConsumeNameTitle(String name);
/// No description provided for @inventoryAvailableLabel.
///
/// In en, this message translates to:
/// **'Available: {quantity} {unit}'**
String inventoryAvailableLabel(String quantity, String unit);
/// No description provided for @pantryDescription.
///
/// In en, this message translates to:
/// **'Products you always expect to have at home.'**
String get pantryDescription;
/// No description provided for @pantryLoading.
///
/// In en, this message translates to:
/// **'Loading pantry...'**
String get pantryLoading;
/// No description provided for @pantryNoLocation.
///
/// In en, this message translates to:
/// **'No location selected'**
String get pantryNoLocation;
/// No description provided for @pantryInvalidQuantity.
///
/// In en, this message translates to:
/// **'Enter a valid quantity greater than 0.'**
String get pantryInvalidQuantity;
/// No description provided for @pantryRemoveTitle.
///
/// In en, this message translates to:
/// **'Remove from pantry?'**
String get pantryRemoveTitle;
/// No description provided for @pantryOtherCategory.
///
/// In en, this message translates to:
/// **'Other'**
String get pantryOtherCategory;
/// No description provided for @pantryGoToRecipesTooltip.
///
/// In en, this message translates to:
/// **'Go to recipes'**
String get pantryGoToRecipesTooltip;
/// No description provided for @pantryAddToInventoryTitle.
///
/// In en, this message translates to:
/// **'Add \"{name}\" to inventory'**
String pantryAddToInventoryTitle(String name);
/// No description provided for @pantryItemAdded.
///
/// In en, this message translates to:
/// **'{name} added to inventory.'**
String pantryItemAdded(String name);
/// No description provided for @pantryRemoveContent.
///
/// In en, this message translates to:
/// **'Do you want to remove \"{name}\"?'**
String pantryRemoveContent(String name);
/// No description provided for @recipesLoading.
///
/// In en, this message translates to:
/// **'Loading recipes...'**
String get recipesLoading;
/// No description provided for @recipesEmpty.
///
/// In en, this message translates to:
/// **'No recipes found'**
String get recipesEmpty;
/// No description provided for @recipesEmptyDescription.
///
/// In en, this message translates to:
/// **'Add a recipe to get started.'**
String get recipesEmptyDescription;
/// No description provided for @recipesNewTooltip.
///
/// In en, this message translates to:
/// **'New recipe'**
String get recipesNewTooltip;
/// No description provided for @recipeDetailLoading.
///
/// In en, this message translates to:
/// **'Loading recipe...'**
String get recipeDetailLoading;
/// No description provided for @recipeDetailMakePrivate.
///
/// In en, this message translates to:
/// **'Make private'**
String get recipeDetailMakePrivate;
/// No description provided for @recipeDetailMakePublic.
///
/// In en, this message translates to:
/// **'Make public'**
String get recipeDetailMakePublic;
/// No description provided for @recipeDetailShareWithUser.
///
/// In en, this message translates to:
/// **'Share with user'**
String get recipeDetailShareWithUser;
/// No description provided for @recipeDetailGoToInventory.
///
/// In en, this message translates to:
/// **'Go to inventory'**
String get recipeDetailGoToInventory;
/// No description provided for @recipeDetailShareTitle.
///
/// In en, this message translates to:
/// **'Share recipe'**
String get recipeDetailShareTitle;
/// No description provided for @recipeDetailUsernameLabel.
///
/// In en, this message translates to:
/// **'Username'**
String get recipeDetailUsernameLabel;
/// No description provided for @recipeDetailUsernameHint.
///
/// In en, this message translates to:
/// **'e.g. anna'**
String get recipeDetailUsernameHint;
/// No description provided for @recipeDetailRemoveShare.
///
/// In en, this message translates to:
/// **'Remove sharing'**
String get recipeDetailRemoveShare;
/// No description provided for @recipeDetailShareAction.
///
/// In en, this message translates to:
/// **'Share'**
String get recipeDetailShareAction;
/// No description provided for @recipeDetailDeleteTitle.
///
/// In en, this message translates to:
/// **'Delete recipe?'**
String get recipeDetailDeleteTitle;
/// No description provided for @recipeDetailNowPublic.
///
/// In en, this message translates to:
/// **'The recipe is now public.'**
String get recipeDetailNowPublic;
/// No description provided for @recipeDetailNowPrivate.
///
/// In en, this message translates to:
/// **'The recipe is now private.'**
String get recipeDetailNowPrivate;
/// No description provided for @recipeDetailServings.
///
/// In en, this message translates to:
/// **'servings'**
String get recipeDetailServings;
/// No description provided for @recipeDetailIngredients.
///
/// In en, this message translates to:
/// **'Ingredients'**
String get recipeDetailIngredients;
/// No description provided for @recipeDetailInstructions.
///
/// In en, this message translates to:
/// **'Instructions'**
String get recipeDetailInstructions;
/// No description provided for @recipeDetailBackToList.
///
/// In en, this message translates to:
/// **'Back to recipe list'**
String get recipeDetailBackToList;
/// No description provided for @recipeDetailSharingRemoved.
///
/// In en, this message translates to:
/// **'Sharing removed for {user}'**
String recipeDetailSharingRemoved(String user);
/// No description provided for @recipeDetailSharedWith.
///
/// In en, this message translates to:
/// **'Recipe shared with {user}'**
String recipeDetailSharedWith(String user);
/// No description provided for @recipeDetailDeleteContent.
///
/// In en, this message translates to:
/// **'Do you want to delete \"{title}\"? This action cannot be undone.'**
String recipeDetailDeleteContent(String title);
/// No description provided for @recipeCreateTitle.
///
/// In en, this message translates to:
/// **'New recipe'**
String get recipeCreateTitle;
/// No description provided for @recipeCreateReviewIngredients.
///
/// In en, this message translates to:
/// **'Review ingredients'**
String get recipeCreateReviewIngredients;
/// No description provided for @recipeCreateMarkdownPlaceholder.
///
/// In en, this message translates to:
/// **'# Recipe name\n\n## Ingredients\n- 500 g ground beef\n- 1 onion\n\n## Instructions\nFry the onion...'**
String get recipeCreateMarkdownPlaceholder;
/// No description provided for @recipeCreateMarkdownHint.
///
/// In en, this message translates to:
/// **'Paste or write a recipe in Markdown format.'**
String get recipeCreateMarkdownHint;
/// No description provided for @recipeCreateNameRequired.
///
/// In en, this message translates to:
/// **'Recipe name cannot be empty.'**
String get recipeCreateNameRequired;
/// No description provided for @recipeCreateSaveAction.
///
/// In en, this message translates to:
/// **'Save recipe'**
String get recipeCreateSaveAction;
/// No description provided for @recipeCreateServingsLabel.
///
/// In en, this message translates to:
/// **'Number of servings (optional)'**
String get recipeCreateServingsLabel;
/// No description provided for @recipeCreateIngredientsLabel.
///
/// In en, this message translates to:
/// **'Ingredients'**
String get recipeCreateIngredientsLabel;
/// No description provided for @recipeCreateIngredientsHint.
///
/// In en, this message translates to:
/// **'Check ingredients to include and select the right product.'**
String get recipeCreateIngredientsHint;
/// No description provided for @recipeCreateNoProductFound.
///
/// In en, this message translates to:
/// **'No product found — ingredient will be skipped.'**
String get recipeCreateNoProductFound;
/// No description provided for @recipeEditTitle.
///
/// In en, this message translates to:
/// **'Edit recipe'**
String get recipeEditTitle;
/// No description provided for @recipeEditNameLabel.
///
/// In en, this message translates to:
/// **'Recipe name'**
String get recipeEditNameLabel;
/// No description provided for @recipeEditNameRequired.
///
/// In en, this message translates to:
/// **'Enter a recipe name.'**
String get recipeEditNameRequired;
/// No description provided for @recipeEditDescriptionLabel.
///
/// In en, this message translates to:
/// **'Description (optional)'**
String get recipeEditDescriptionLabel;
/// No description provided for @recipeEditServingsLabel.
///
/// In en, this message translates to:
/// **'Number of servings (optional)'**
String get recipeEditServingsLabel;
/// No description provided for @recipeEditServingsInvalid.
///
/// In en, this message translates to:
/// **'Enter a whole number.'**
String get recipeEditServingsInvalid;
/// No description provided for @recipeEditInstructionsLabel.
///
/// In en, this message translates to:
/// **'Instructions (optional)'**
String get recipeEditInstructionsLabel;
/// No description provided for @recipeEditIngredientsLabel.
///
/// In en, this message translates to:
/// **'Ingredients'**
String get recipeEditIngredientsLabel;
/// No description provided for @recipeEditIngredientsHint.
///
/// In en, this message translates to:
/// **'Select product, quantity and unit for each ingredient.'**
String get recipeEditIngredientsHint;
/// No description provided for @recipeEditNoIngredients.
///
/// In en, this message translates to:
/// **'No ingredients added yet.'**
String get recipeEditNoIngredients;
/// No description provided for @recipeEditIngredientPrefix.
///
/// In en, this message translates to:
/// **'Ingredient '**
String get recipeEditIngredientPrefix;
/// No description provided for @recipeEditRemoveIngredient.
///
/// In en, this message translates to:
/// **'Remove ingredient'**
String get recipeEditRemoveIngredient;
/// No description provided for @recipeEditMinIngredients.
///
/// In en, this message translates to:
/// **'At least one ingredient is required.'**
String get recipeEditMinIngredients;
/// No description provided for @recipeEditSelectProduct.
///
/// In en, this message translates to:
/// **'Select product for all ingredients.'**
String get recipeEditSelectProduct;
/// No description provided for @recipeEditValidQuantity.
///
/// In en, this message translates to:
/// **'Enter valid quantity for all ingredients.'**
String get recipeEditValidQuantity;
/// No description provided for @recipeEditSelectUnit.
///
/// In en, this message translates to:
/// **'Select unit for all ingredients.'**
String get recipeEditSelectUnit;
/// No description provided for @recipeEditSaveChanges.
///
/// In en, this message translates to:
/// **'Save changes'**
String get recipeEditSaveChanges;
/// No description provided for @importTabDescription.
///
/// In en, this message translates to:
/// **'Upload a PDF or image, or enter a recipe link — the recipe will be imported and opened directly in edit mode.'**
String get importTabDescription;
/// No description provided for @importFileTabLabel.
///
/// In en, this message translates to:
/// **'File / PDF'**
String get importFileTabLabel;
/// No description provided for @importLinkTabLabel.
///
/// In en, this message translates to:
/// **'Link'**
String get importLinkTabLabel;
/// No description provided for @importChooseFileAction.
///
/// In en, this message translates to:
/// **'Choose file (PDF, PNG, JPG, WEBP, BMP)'**
String get importChooseFileAction;
/// No description provided for @importFileAction.
///
/// In en, this message translates to:
/// **'Import file'**
String get importFileAction;
/// No description provided for @importFileProcessing.
///
/// In en, this message translates to:
/// **'Parsing recipe — this can take up to a minute...'**
String get importFileProcessing;
/// No description provided for @importLinkAction.
///
/// In en, this message translates to:
/// **'Import from link'**
String get importLinkAction;
/// No description provided for @importLinkLabel.
///
/// In en, this message translates to:
/// **'Recipe link'**
String get importLinkLabel;
/// No description provided for @importLinkHint.
///
/// In en, this message translates to:
/// **'https://example.com/recipe/...'**
String get importLinkHint;
/// No description provided for @importWriteInstead.
///
/// In en, this message translates to:
/// **'Write recipe instead'**
String get importWriteInstead;
/// No description provided for @errorDialogTitle.
///
/// In en, this message translates to:
/// **'Error'**
String get errorDialogTitle;
/// No description provided for @errorDialogClose.
///
/// In en, this message translates to:
/// **'Close'**
String get errorDialogClose;
/// No description provided for @errorDialogCopy.
///
/// In en, this message translates to:
/// **'Copy'**
String get errorDialogCopy;
/// No description provided for @errorDialogCopied.
///
/// In en, this message translates to:
/// **'Error message copied!'**
String get errorDialogCopied;
/// No description provided for @profileMyProfileTab.
///
/// In en, this message translates to:
/// **'My profile'**
String get profileMyProfileTab;
/// No description provided for @profileDatabaseTab.
///
/// In en, this message translates to:
/// **'Database'**
String get profileDatabaseTab;
/// No description provided for @profileUsersTab.
///
/// In en, this message translates to:
/// **'Users'**
String get profileUsersTab;
/// No description provided for @profilePendingTab.
///
/// In en, this message translates to:
/// **'Suggestions'**
String get profilePendingTab;
/// No description provided for @profileAiTab.
///
/// In en, this message translates to:
/// **'AI'**
String get profileAiTab;
/// No description provided for @profileUsernameLabel.
///
/// In en, this message translates to:
/// **'Username'**
String get profileUsernameLabel;
/// No description provided for @profileEmailLabel.
///
/// In en, this message translates to:
/// **'E-mail'**
String get profileEmailLabel;
/// No description provided for @profileEmailHint.
///
/// In en, this message translates to:
/// **'Enter an e-mail address'**
String get profileEmailHint;
/// No description provided for @profileEmailInvalid.
///
/// In en, this message translates to:
/// **'Invalid e-mail address'**
String get profileEmailInvalid;
/// No description provided for @profileFirstNameLabel.
///
/// In en, this message translates to:
/// **'First name'**
String get profileFirstNameLabel;
/// No description provided for @profileLastNameLabel.
///
/// In en, this message translates to:
/// **'Last name'**
String get profileLastNameLabel;
/// No description provided for @profileSaveAction.
///
/// In en, this message translates to:
/// **'Save changes'**
String get profileSaveAction;
/// No description provided for @profileSaved.
///
/// In en, this message translates to:
/// **'Profile saved!'**
String get profileSaved;
/// No description provided for @profileInventoryTab.
///
/// In en, this message translates to:
/// **'Inventory'**
String get profileInventoryTab;
/// No description provided for @profilePantryTab.
///
/// In en, this message translates to:
/// **'Pantry'**
String get profilePantryTab;
/// No description provided for @profileProductsTab.
///
/// In en, this message translates to:
/// **'Products'**
String get profileProductsTab;
/// No description provided for @profileAddInventoryItem.
///
/// In en, this message translates to:
/// **'Add inventory item'**
String get profileAddInventoryItem;
/// No description provided for @profileOpenInventory.
///
/// In en, this message translates to:
/// **'Open inventory'**
String get profileOpenInventory;
/// No description provided for @profileInventoryDescription.
///
/// In en, this message translates to:
/// **'Update and consume items in your inventory.'**
String get profileInventoryDescription;
/// No description provided for @profileOpenPantry.
///
/// In en, this message translates to:
/// **'Open pantry'**
String get profileOpenPantry;
/// No description provided for @profilePantryDescription.
///
/// In en, this message translates to:
/// **'Manage items you always expect to have at home.'**
String get profilePantryDescription;
/// No description provided for @adminChangeRole.
///
/// In en, this message translates to:
/// **'Change role'**
String get adminChangeRole;
/// No description provided for @adminGivePremium.
///
/// In en, this message translates to:
/// **'Give Premium'**
String get adminGivePremium;
/// No description provided for @adminRemovePremium.
///
/// In en, this message translates to:
/// **'Remove Premium'**
String get adminRemovePremium;
/// No description provided for @adminAllowSharing.
///
/// In en, this message translates to:
/// **'Allow recipe sharing'**
String get adminAllowSharing;
/// No description provided for @adminBlockSharing.
///
/// In en, this message translates to:
/// **'Block recipe sharing'**
String get adminBlockSharing;
/// No description provided for @adminResetPassword.
///
/// In en, this message translates to:
/// **'Reset password'**
String get adminResetPassword;
/// No description provided for @adminTempPasswordTitle.
///
/// In en, this message translates to:
/// **'Temporary password'**
String get adminTempPasswordTitle;
/// No description provided for @adminCopyAction.
///
/// In en, this message translates to:
/// **'Copy'**
String get adminCopyAction;
/// No description provided for @adminCloseAction.
///
/// In en, this message translates to:
/// **'Close'**
String get adminCloseAction;
/// No description provided for @adminEmailLabel.
///
/// In en, this message translates to:
/// **'E-mail'**
String get adminEmailLabel;
/// No description provided for @adminEmailInvalid.
///
/// In en, this message translates to:
/// **'Invalid e-mail address.'**
String get adminEmailInvalid;
/// No description provided for @adminEmailUpdated.
///
/// In en, this message translates to:
/// **'E-mail updated.'**
String get adminEmailUpdated;
/// No description provided for @adminDeleteUser.
///
/// In en, this message translates to:
/// **'Delete user'**
String get adminDeleteUser;
/// No description provided for @adminDeleteUserConfirm.
///
/// In en, this message translates to:
/// **'Delete permanently? This cannot be undone.'**
String get adminDeleteUserConfirm;
/// No description provided for @adminConfirmAction.
///
/// In en, this message translates to:
/// **'Confirm'**
String get adminConfirmAction;
/// No description provided for @adminNewUser.
///
/// In en, this message translates to:
/// **'New user'**
String get adminNewUser;
/// No description provided for @adminNoUsers.
///
/// In en, this message translates to:
/// **'No users found.'**
String get adminNoUsers;
/// No description provided for @adminAdminRole.
///
/// In en, this message translates to:
/// **'Admin'**
String get adminAdminRole;
/// No description provided for @adminUserRole.
///
/// In en, this message translates to:
/// **'User'**
String get adminUserRole;
/// No description provided for @adminPremiumLabel.
///
/// In en, this message translates to:
/// **'Premium'**
String get adminPremiumLabel;
/// No description provided for @adminFreeLabel.
///
/// In en, this message translates to:
/// **'Free'**
String get adminFreeLabel;
/// No description provided for @adminSharingOn.
///
/// In en, this message translates to:
/// **'Sharing: On'**
String get adminSharingOn;
/// No description provided for @adminSharingOff.
///
/// In en, this message translates to:
/// **'Sharing: Off'**
String get adminSharingOff;
/// No description provided for @adminUsersDescription.
///
/// In en, this message translates to:
/// **'Manage users directly from the profile page.'**
String get adminUsersDescription;
/// No description provided for @adminDowngradeToUser.
///
/// In en, this message translates to:
/// **'Downgrade to user'**
String get adminDowngradeToUser;
/// No description provided for @adminUpgradeToAdmin.
///
/// In en, this message translates to:
/// **'Upgrade to admin'**
String get adminUpgradeToAdmin;
/// No description provided for @adminSortNewest.
///
/// In en, this message translates to:
/// **'Sort: Newest'**
String get adminSortNewest;
/// No description provided for @adminSortOldest.
///
/// In en, this message translates to:
/// **'Sort: Oldest'**
String get adminSortOldest;
/// No description provided for @adminSortNameAsc.
///
/// In en, this message translates to:
/// **'Sort: Name A-Z'**
String get adminSortNameAsc;
/// No description provided for @adminSortNameDesc.
///
/// In en, this message translates to:
/// **'Sort: Name Z-A'**
String get adminSortNameDesc;
/// No description provided for @adminSortCategoryAsc.
///
/// In en, this message translates to:
/// **'Sort: Category A-Z'**
String get adminSortCategoryAsc;
/// No description provided for @adminSortCategoryDesc.
///
/// In en, this message translates to:
/// **'Sort: Category Z-A'**
String get adminSortCategoryDesc;
/// No description provided for @adminSearchProduct.
///
/// In en, this message translates to:
/// **'Search product'**
String get adminSearchProduct;
/// No description provided for @adminShowDeleted.
///
/// In en, this message translates to:
/// **'Show deleted'**
String get adminShowDeleted;
/// No description provided for @adminOnlyUncategorized.
///
/// In en, this message translates to:
/// **'Only uncategorized'**
String get adminOnlyUncategorized;
/// No description provided for @adminBulkSetCategory.
///
/// In en, this message translates to:
/// **'Bulk: set category'**
String get adminBulkSetCategory;
/// No description provided for @adminProductsUpdated.
///
/// In en, this message translates to:
/// **'Products updated.'**
String get adminProductsUpdated;
/// No description provided for @adminNoAiSuggestions.
///
/// In en, this message translates to:
/// **'No AI suggestions to show.'**
String get adminNoAiSuggestions;
/// No description provided for @adminMergeProducts.
///
/// In en, this message translates to:
/// **'Merge products'**
String get adminMergeProducts;
/// No description provided for @adminMergeSelectSource.
///
/// In en, this message translates to:
/// **'Select which product should be moved into the other:'**
String get adminMergeSelectSource;
/// No description provided for @adminMergeSource.
///
/// In en, this message translates to:
/// **'Source: '**
String get adminMergeSource;
/// No description provided for @adminMergeTarget.
///
/// In en, this message translates to:
/// **'Target: '**
String get adminMergeTarget;
/// No description provided for @adminMergeAction.
///
/// In en, this message translates to:
/// **'Merge'**
String get adminMergeAction;
/// No description provided for @adminDeleteProduct.
///
/// In en, this message translates to:
/// **'Delete product'**
String get adminDeleteProduct;
/// No description provided for @adminProductDeleted.
///
/// In en, this message translates to:
/// **'Product deleted.'**
String get adminProductDeleted;
/// No description provided for @adminProductsRestored.
///
/// In en, this message translates to:
/// **'Selected products restored.'**
String get adminProductsRestored;
/// No description provided for @adminProductRestored.
///
/// In en, this message translates to:
/// **'Product restored.'**
String get adminProductRestored;
/// No description provided for @adminNoPendingProducts.
///
/// In en, this message translates to:
/// **'No pending product suggestions.'**
String get adminNoPendingProducts;
/// No description provided for @adminCategoryPrefix.
///
/// In en, this message translates to:
/// **'Category: '**
String get adminCategoryPrefix;
/// No description provided for @adminSuggestedByPrefix.
///
/// In en, this message translates to:
/// **'Suggested by: '**
String get adminSuggestedByPrefix;
/// No description provided for @adminDatePrefix.
///
/// In en, this message translates to:
/// **'Date: '**
String get adminDatePrefix;
/// No description provided for @adminApproveAction.
///
/// In en, this message translates to:
/// **'Approve'**
String get adminApproveAction;
/// No description provided for @adminRejectAction.
///
/// In en, this message translates to:
/// **'Reject'**
String get adminRejectAction;
/// No description provided for @adminPendingDescription.
///
/// In en, this message translates to:
/// **'Approve or reject pending product suggestions directly from the profile page.'**
String get adminPendingDescription;
/// No description provided for @adminAiDescription.
///
/// In en, this message translates to:
/// **'Overview of AI features exposed by the backend.'**
String get adminAiDescription;
/// No description provided for @adminPagePrefix.
///
/// In en, this message translates to:
/// **'Page: '**
String get adminPagePrefix;
/// No description provided for @adminNewProductLabel.
///
/// In en, this message translates to:
/// **'New product'**
String get adminNewProductLabel;
/// No description provided for @adminPasswordMustChange.
///
/// In en, this message translates to:
/// **'The user must change their password at next login.'**
String get adminPasswordMustChange;
/// No description provided for @adminChangeRoleConfirm.
///
/// In en, this message translates to:
/// **'Change {username} to {role}?'**
String adminChangeRoleConfirm(String username, String role);
/// No description provided for @adminGivePremiumConfirm.
///
/// In en, this message translates to:
/// **'Give Premium for {username}'**
String adminGivePremiumConfirm(String username);
/// No description provided for @adminRemovePremiumConfirm.
///
/// In en, this message translates to:
/// **'Remove Premium for {username}'**
String adminRemovePremiumConfirm(String username);
/// No description provided for @adminAllowSharingConfirm.
///
/// In en, this message translates to:
/// **'Allow recipe sharing for {username}'**
String adminAllowSharingConfirm(String username);
/// No description provided for @adminBlockSharingConfirm.
///
/// In en, this message translates to:
/// **'Block recipe sharing for {username}'**
String adminBlockSharingConfirm(String username);
/// No description provided for @adminResetPasswordContent.
///
/// In en, this message translates to:
/// **'Generate a temporary password for {username}'**
String adminResetPasswordContent(String username);
/// No description provided for @adminPasswordTitle.
///
/// In en, this message translates to:
/// **'Password for {username}'**
String adminPasswordTitle(String username);
/// No description provided for @adminChangeEmailTitle.
///
/// In en, this message translates to:
/// **'Change e-mail for {username}'**
String adminChangeEmailTitle(String username);
/// No description provided for @adminDeleteProductContent.
///
/// In en, this message translates to:
/// **'Delete {name}? The product can be restored later.'**
String adminDeleteProductContent(String name);
/// No description provided for @adminAiAppliedCount.
///
/// In en, this message translates to:
/// **'AI suggestions applied to {count} products.'**
String adminAiAppliedCount(int count);
/// No description provided for @adminCategoryUpdated.
///
/// In en, this message translates to:
/// **'Category updated for {name}'**
String adminCategoryUpdated(String name);
/// No description provided for @adminProductUpdated.
///
/// In en, this message translates to:
/// **'Product updated for {name}'**
String adminProductUpdated(String name);
/// No description provided for @adminPremiumConfirm.
///
/// In en, this message translates to:
/// **'{action} Premium for {username}?'**
String adminPremiumConfirm(String action, String username);
/// No description provided for @adminSharingConfirm.
///
/// In en, this message translates to:
/// **'{action} recipe sharing for {username}?'**
String adminSharingConfirm(String action, String username);
/// No description provided for @adminResetPasswordConfirm.
///
/// In en, this message translates to:
/// **'Generate a temporary password for {username}?'**
String adminResetPasswordConfirm(String username);
/// No description provided for @adminTempPasswordForUser.
///
/// In en, this message translates to:
/// **'Password for {username}:'**
String adminTempPasswordForUser(String username);
/// No description provided for @adminEmailEditTitle.
///
/// In en, this message translates to:
/// **'Change e-mail for {username}'**
String adminEmailEditTitle(String username);
/// No description provided for @adminEmailAction.
///
/// In en, this message translates to:
/// **'Change e-mail'**
String get adminEmailAction;
/// No description provided for @adminUserCreated.
///
/// In en, this message translates to:
/// **'User {username} created.'**
String adminUserCreated(String username);
/// No description provided for @adminCreateUserTitle.
///
/// In en, this message translates to:
/// **'Create user'**
String get adminCreateUserTitle;
/// No description provided for @adminMinChars2.
///
/// In en, this message translates to:
/// **'At least 2 characters'**
String get adminMinChars2;
/// No description provided for @adminMinChars8.
///
/// In en, this message translates to:
/// **'At least 8 characters'**
String get adminMinChars8;
/// No description provided for @adminPasswordLabel.
///
/// In en, this message translates to:
/// **'Password'**
String get adminPasswordLabel;
/// No description provided for @adminRoleLabel.
///
/// In en, this message translates to:
/// **'Role'**
String get adminRoleLabel;
/// No description provided for @adminCreateAction.
///
/// In en, this message translates to:
/// **'Create'**
String get adminCreateAction;
/// No description provided for @adminMergeProductsTitle.
///
/// In en, this message translates to:
/// **'Merge products'**
String get adminMergeProductsTitle;
/// No description provided for @adminMergeProductsHint.
///
/// In en, this message translates to:
/// **'Select which product should be moved into the other:'**
String get adminMergeProductsHint;
/// No description provided for @adminMerge2Selected.
///
/// In en, this message translates to:
/// **'Merge 2 selected'**
String get adminMerge2Selected;
/// No description provided for @adminProductsMerged.
///
/// In en, this message translates to:
/// **'Products merged.'**
String get adminProductsMerged;
/// No description provided for @adminDeleteProductTitle.
///
/// In en, this message translates to:
/// **'Delete product'**
String get adminDeleteProductTitle;
/// No description provided for @adminDeleteProductConfirm.
///
/// In en, this message translates to:
/// **'Delete {name}? The product can be restored later.'**
String adminDeleteProductConfirm(String name);
/// No description provided for @adminAiSuggestionsTitle.
///
/// In en, this message translates to:
/// **'AI suggestions'**
String get adminAiSuggestionsTitle;
/// No description provided for @adminAiApplied.
///
/// In en, this message translates to:
/// **'AI suggestions applied to {count} products.'**
String adminAiApplied(int count);
/// No description provided for @adminApplySelected.
///
/// In en, this message translates to:
/// **'Apply ({count})'**
String adminApplySelected(int count);
/// No description provided for @adminUpdateSelected.
///
/// In en, this message translates to:
/// **'Update selected ({count})'**
String adminUpdateSelected(int count);
/// No description provided for @adminAiCategorizeAll.
///
/// In en, this message translates to:
/// **'AI-categorize uncategorized'**
String get adminAiCategorizeAll;
/// No description provided for @adminAiCategorizeSelected.
///
/// In en, this message translates to:
/// **'AI-categorize selected ({count})'**
String adminAiCategorizeSelected(int count);
/// No description provided for @adminRestoreSelected.
///
/// In en, this message translates to:
/// **'Restore selected ({count})'**
String adminRestoreSelected(int count);
/// No description provided for @adminShowUncategorized.
///
/// In en, this message translates to:
/// **'Uncategorized only'**
String get adminShowUncategorized;
/// No description provided for @adminRemoveCategory.
///
/// In en, this message translates to:
/// **'Remove category'**
String get adminRemoveCategory;
/// No description provided for @adminNoProductsFound.
///
/// In en, this message translates to:
/// **'No products match the filter.'**
String get adminNoProductsFound;
/// No description provided for @adminInlineCategory.
///
/// In en, this message translates to:
/// **'Category (inline)'**
String get adminInlineCategory;
/// No description provided for @adminNoCategory.
///
/// In en, this message translates to:
/// **'No category'**
String get adminNoCategory;
/// No description provided for @adminRestoreAction.
///
/// In en, this message translates to:
/// **'Restore'**
String get adminRestoreAction;
/// No description provided for @required.
///
/// In en, this message translates to:
/// **'Required'**
String get required;
/// No description provided for @logoutAction.
///
/// In en, this message translates to:
/// **'Log out'**
String get logoutAction;
/// No description provided for @profileDatabaseDescription.
///
/// In en, this message translates to:
/// **'The database tab covers your main areas for inventory and products.'**
String get profileDatabaseDescription;
}
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', 'sv'].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();
case 'sv':
return AppLocalizationsSv();
}
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.');
}