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, you’ll need to edit this /// file. /// /// First, open your project’s ios/Runner.xcworkspace Xcode workspace file. /// Then, in the Project Navigator, open the Info.plist file under the Runner /// project’s Runner folder. /// /// Next, select the Information Property List item, select Add Item from the /// Editor menu, then select Localizations from the pop-up menu. /// /// Select and expand the newly-created Localizations item then, for each /// locale your application supports, add a new item and select the locale /// you wish to add from the pop-up menu in the Value field. This list should /// be consistent with the languages listed in the 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(context, AppLocalizations); } static const LocalizationsDelegate 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> localizationsDelegates = >[ delegate, GlobalMaterialLocalizations.delegate, GlobalCupertinoLocalizations.delegate, GlobalWidgetsLocalizations.delegate, ]; /// A list of this localizations delegate's supported locales. static const List supportedLocales = [ 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 { const _AppLocalizationsDelegate(); @override Future load(Locale locale) { return SynchronousFuture(lookupAppLocalizations(locale)); } @override bool isSupported(Locale locale) => ['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.'); }