Add Swedish localization for various app actions and inventory management strings
This commit is contained in:
+449
-1
@@ -73,5 +73,453 @@
|
||||
"forbiddenError": "You do not have permission to use this feature.",
|
||||
"serverError": "A server error occurred. Try again in a moment.",
|
||||
"networkError": "Network error. Check your connection and try again.",
|
||||
"unexpectedError": "An unexpected error occurred."
|
||||
"unexpectedError": "An unexpected error occurred.",
|
||||
|
||||
"cancelAction": "Cancel",
|
||||
"saveAction": "Save",
|
||||
"deleteAction": "Delete",
|
||||
"addAction": "Add",
|
||||
"editTooltip": "Edit",
|
||||
"deleteTooltip": "Delete",
|
||||
"loadingLabel": "Loading...",
|
||||
"cannotBeUndone": "This action cannot be undone.",
|
||||
"yesLabel": "Yes",
|
||||
"noLabel": "No",
|
||||
"commentLabel": "Comment",
|
||||
"commentOptionalLabel": "Comment (optional)",
|
||||
"openedLabel": "Opened",
|
||||
"quantityLabel": "Quantity *",
|
||||
"quantityHint": "Enter quantity",
|
||||
"invalidNumber": "Invalid number",
|
||||
"unitLabel": "Unit *",
|
||||
"selectDateLabel": "Select date",
|
||||
"locationOptionalLabel": "Location (optional)",
|
||||
"locationLabel": "Location",
|
||||
"brandOptionalLabel": "Brand (optional)",
|
||||
"brandLabel": "Brand",
|
||||
"enterPositiveNumber": "Enter a positive number",
|
||||
|
||||
"inventoryTitle": "Inventory",
|
||||
"inventoryFilterAndSort": "Filter and sorting",
|
||||
"inventorySortLatest": "Latest added",
|
||||
"inventorySortNameAsc": "Name A-Z",
|
||||
"inventorySortBestBeforeAsc": "Best before ascending",
|
||||
"inventorySortBestBeforeDesc": "Best before descending",
|
||||
"inventorySortLabel": "Sort",
|
||||
"inventoryAllFilter": "All",
|
||||
"inventoryEmpty": "Inventory is empty.",
|
||||
"inventoryLoading": "Loading inventory...",
|
||||
"inventoryCreateTitle": "Add inventory item",
|
||||
"inventoryEditTitle": "Edit inventory item",
|
||||
"inventorySelectProduct": "Select a product from the list.",
|
||||
"inventoryDeleteTitle": "Delete inventory item?",
|
||||
"inventoryProductLabel": "Product",
|
||||
"inventoryQuantityDisplayLabel": "Quantity",
|
||||
"inventoryLocationDisplayLabel": "Location",
|
||||
"inventoryBrandDisplayLabel": "Brand",
|
||||
"inventoryPurchaseDateLabel": "Purchase date",
|
||||
"inventoryBestBeforeLabel": "Best before",
|
||||
"inventoryPurchaseDatePrefix": "Purchase: ",
|
||||
"inventoryBestBeforeDatePrefix": "Best before: ",
|
||||
"inventoryConsumeAction": "Consume",
|
||||
"inventoryHistoryAction": "Consumption history",
|
||||
"inventoryConsumeAmountLabel": "Amount to consume *",
|
||||
"inventoryHistoryLoading": "Loading history...",
|
||||
"inventoryHistoryEmpty": "No consumption history exists.",
|
||||
"inventoryRecipesAction": "Recipes",
|
||||
"inventoryHistoryTitle": "History: {name}",
|
||||
"@inventoryHistoryTitle": {
|
||||
"placeholders": {
|
||||
"name": { "type": "String" }
|
||||
}
|
||||
},
|
||||
"inventoryConsumeNameTitle": "Consume: {name}",
|
||||
"@inventoryConsumeNameTitle": {
|
||||
"placeholders": {
|
||||
"name": { "type": "String" }
|
||||
}
|
||||
},
|
||||
"inventoryAvailableLabel": "Available: {quantity} {unit}",
|
||||
"@inventoryAvailableLabel": {
|
||||
"placeholders": {
|
||||
"quantity": { "type": "String" },
|
||||
"unit": { "type": "String" }
|
||||
}
|
||||
},
|
||||
|
||||
"pantryDescription": "Products you always expect to have at home.",
|
||||
"pantryLoading": "Loading pantry...",
|
||||
"pantryNoLocation": "No location selected",
|
||||
"pantryInvalidQuantity": "Enter a valid quantity greater than 0.",
|
||||
"pantryRemoveTitle": "Remove from pantry?",
|
||||
"pantryOtherCategory": "Other",
|
||||
"pantryGoToRecipesTooltip": "Go to recipes",
|
||||
"pantryAddToInventoryTitle": "Add \"{name}\" to inventory",
|
||||
"@pantryAddToInventoryTitle": {
|
||||
"placeholders": {
|
||||
"name": { "type": "String" }
|
||||
}
|
||||
},
|
||||
"pantryItemAdded": "{name} added to inventory.",
|
||||
"@pantryItemAdded": {
|
||||
"placeholders": {
|
||||
"name": { "type": "String" }
|
||||
}
|
||||
},
|
||||
"pantryRemoveContent": "Do you want to remove \"{name}\"?",
|
||||
"@pantryRemoveContent": {
|
||||
"placeholders": {
|
||||
"name": { "type": "String" }
|
||||
}
|
||||
},
|
||||
|
||||
"recipesLoading": "Loading recipes...",
|
||||
"recipesEmpty": "No recipes found",
|
||||
"recipesEmptyDescription": "Add a recipe to get started.",
|
||||
"recipesNewTooltip": "New recipe",
|
||||
"recipeDetailLoading": "Loading recipe...",
|
||||
"recipeDetailMakePrivate": "Make private",
|
||||
"recipeDetailMakePublic": "Make public",
|
||||
"recipeDetailShareWithUser": "Share with user",
|
||||
"recipeDetailGoToInventory": "Go to inventory",
|
||||
"recipeDetailShareTitle": "Share recipe",
|
||||
"recipeDetailUsernameLabel": "Username",
|
||||
"recipeDetailUsernameHint": "e.g. anna",
|
||||
"recipeDetailRemoveShare": "Remove sharing",
|
||||
"recipeDetailShareAction": "Share",
|
||||
"recipeDetailDeleteTitle": "Delete recipe?",
|
||||
"recipeDetailNowPublic": "The recipe is now public.",
|
||||
"recipeDetailNowPrivate": "The recipe is now private.",
|
||||
"recipeDetailServings": "servings",
|
||||
"recipeDetailIngredients": "Ingredients",
|
||||
"recipeDetailInstructions": "Instructions",
|
||||
"recipeDetailBackToList": "Back to recipe list",
|
||||
"recipeDetailSharingRemoved": "Sharing removed for {user}",
|
||||
"@recipeDetailSharingRemoved": {
|
||||
"placeholders": {
|
||||
"user": { "type": "String" }
|
||||
}
|
||||
},
|
||||
"recipeDetailSharedWith": "Recipe shared with {user}",
|
||||
"@recipeDetailSharedWith": {
|
||||
"placeholders": {
|
||||
"user": { "type": "String" }
|
||||
}
|
||||
},
|
||||
"recipeDetailDeleteContent": "Do you want to delete \"{title}\"? This action cannot be undone.",
|
||||
"@recipeDetailDeleteContent": {
|
||||
"placeholders": {
|
||||
"title": { "type": "String" }
|
||||
}
|
||||
},
|
||||
|
||||
"recipeCreateTitle": "New recipe",
|
||||
"recipeCreateReviewIngredients": "Review ingredients",
|
||||
"recipeCreateMarkdownPlaceholder": "# Recipe name\n\n## Ingredients\n- 500 g ground beef\n- 1 onion\n\n## Instructions\nFry the onion...",
|
||||
"recipeCreateMarkdownHint": "Paste or write a recipe in Markdown format.",
|
||||
"recipeCreateNameRequired": "Recipe name cannot be empty.",
|
||||
"recipeCreateSaveAction": "Save recipe",
|
||||
"recipeCreateServingsLabel": "Number of servings (optional)",
|
||||
"recipeCreateIngredientsLabel": "Ingredients",
|
||||
"recipeCreateIngredientsHint": "Check ingredients to include and select the right product.",
|
||||
"recipeCreateNoProductFound": "No product found — ingredient will be skipped.",
|
||||
|
||||
"recipeEditTitle": "Edit recipe",
|
||||
"recipeEditNameLabel": "Recipe name",
|
||||
"recipeEditNameRequired": "Enter a recipe name.",
|
||||
"recipeEditDescriptionLabel": "Description (optional)",
|
||||
"recipeEditServingsLabel": "Number of servings (optional)",
|
||||
"recipeEditServingsInvalid": "Enter a whole number.",
|
||||
"recipeEditInstructionsLabel": "Instructions (optional)",
|
||||
"recipeEditIngredientsLabel": "Ingredients",
|
||||
"recipeEditIngredientsHint": "Select product, quantity and unit for each ingredient.",
|
||||
"recipeEditNoIngredients": "No ingredients added yet.",
|
||||
"recipeEditIngredientPrefix": "Ingredient ",
|
||||
"recipeEditRemoveIngredient": "Remove ingredient",
|
||||
"recipeEditMinIngredients": "At least one ingredient is required.",
|
||||
"recipeEditSelectProduct": "Select product for all ingredients.",
|
||||
"recipeEditValidQuantity": "Enter valid quantity for all ingredients.",
|
||||
"recipeEditSelectUnit": "Select unit for all ingredients.",
|
||||
"recipeEditSaveChanges": "Save changes",
|
||||
|
||||
"importTabDescription": "Upload a PDF or image, or enter a recipe link — the recipe will be imported and opened directly in edit mode.",
|
||||
"importFileTabLabel": "File / PDF",
|
||||
"importLinkTabLabel": "Link",
|
||||
"importChooseFileAction": "Choose file (PDF, PNG, JPG, WEBP, BMP)",
|
||||
"importFileAction": "Import file",
|
||||
"importFileProcessing": "Parsing recipe — this can take up to a minute...",
|
||||
"importLinkAction": "Import from link",
|
||||
"importLinkLabel": "Recipe link",
|
||||
"importLinkHint": "https://example.com/recipe/...",
|
||||
"importWriteInstead": "Write recipe instead",
|
||||
|
||||
"errorDialogTitle": "Error",
|
||||
"errorDialogClose": "Close",
|
||||
"errorDialogCopy": "Copy",
|
||||
"errorDialogCopied": "Error message copied!",
|
||||
|
||||
"profileMyProfileTab": "My profile",
|
||||
"profileDatabaseTab": "Database",
|
||||
"profileUsersTab": "Users",
|
||||
"profilePendingTab": "Suggestions",
|
||||
"profileAiTab": "AI",
|
||||
"profileUsernameLabel": "Username",
|
||||
"profileEmailLabel": "E-mail",
|
||||
"profileEmailHint": "Enter an e-mail address",
|
||||
"profileEmailInvalid": "Invalid e-mail address",
|
||||
"profileFirstNameLabel": "First name",
|
||||
"profileLastNameLabel": "Last name",
|
||||
"profileSaveAction": "Save changes",
|
||||
"profileSaved": "Profile saved!",
|
||||
"profileInventoryTab": "Inventory",
|
||||
"profilePantryTab": "Pantry",
|
||||
"profileProductsTab": "Products",
|
||||
"profileAddInventoryItem": "Add inventory item",
|
||||
"profileOpenInventory": "Open inventory",
|
||||
"profileInventoryDescription": "Update and consume items in your inventory.",
|
||||
"profileOpenPantry": "Open pantry",
|
||||
"profilePantryDescription": "Manage items you always expect to have at home.",
|
||||
|
||||
"adminChangeRole": "Change role",
|
||||
"adminGivePremium": "Give Premium",
|
||||
"adminRemovePremium": "Remove Premium",
|
||||
"adminAllowSharing": "Allow recipe sharing",
|
||||
"adminBlockSharing": "Block recipe sharing",
|
||||
"adminResetPassword": "Reset password",
|
||||
"adminTempPasswordTitle": "Temporary password",
|
||||
"adminCopyAction": "Copy",
|
||||
"adminCloseAction": "Close",
|
||||
"adminEmailLabel": "E-mail",
|
||||
"adminEmailInvalid": "Invalid e-mail address.",
|
||||
"adminEmailUpdated": "E-mail updated.",
|
||||
"adminDeleteUser": "Delete user",
|
||||
"adminDeleteUserConfirm": "Delete permanently? This cannot be undone.",
|
||||
"adminConfirmAction": "Confirm",
|
||||
"adminNewUser": "New user",
|
||||
"adminNoUsers": "No users found.",
|
||||
"adminAdminRole": "Admin",
|
||||
"adminUserRole": "User",
|
||||
"adminPremiumLabel": "Premium",
|
||||
"adminFreeLabel": "Free",
|
||||
"adminSharingOn": "Sharing: On",
|
||||
"adminSharingOff": "Sharing: Off",
|
||||
"adminUsersDescription": "Manage users directly from the profile page.",
|
||||
"adminDowngradeToUser": "Downgrade to user",
|
||||
"adminUpgradeToAdmin": "Upgrade to admin",
|
||||
"adminSortNewest": "Sort: Newest",
|
||||
"adminSortOldest": "Sort: Oldest",
|
||||
"adminSortNameAsc": "Sort: Name A-Z",
|
||||
"adminSortNameDesc": "Sort: Name Z-A",
|
||||
"adminSortCategoryAsc": "Sort: Category A-Z",
|
||||
"adminSortCategoryDesc": "Sort: Category Z-A",
|
||||
"adminSearchProduct": "Search product",
|
||||
"adminShowDeleted": "Show deleted",
|
||||
"adminOnlyUncategorized": "Only uncategorized",
|
||||
"adminBulkSetCategory": "Bulk: set category",
|
||||
"adminProductsUpdated": "Products updated.",
|
||||
"adminNoAiSuggestions": "No AI suggestions to show.",
|
||||
"adminMergeProducts": "Merge products",
|
||||
"adminMergeSelectSource": "Select which product should be moved into the other:",
|
||||
"adminMergeSource": "Source: ",
|
||||
"adminMergeTarget": "Target: ",
|
||||
"adminMergeAction": "Merge",
|
||||
"adminDeleteProduct": "Delete product",
|
||||
"adminProductDeleted": "Product deleted.",
|
||||
"adminProductsRestored": "Selected products restored.",
|
||||
"adminProductRestored": "Product restored.",
|
||||
"adminNoPendingProducts": "No pending product suggestions.",
|
||||
"adminCategoryPrefix": "Category: ",
|
||||
"adminSuggestedByPrefix": "Suggested by: ",
|
||||
"adminDatePrefix": "Date: ",
|
||||
"adminApproveAction": "Approve",
|
||||
"adminRejectAction": "Reject",
|
||||
"adminPendingDescription": "Approve or reject pending product suggestions directly from the profile page.",
|
||||
"adminAiDescription": "Overview of AI functions exposed by the backend.",
|
||||
"adminPagePrefix": "Page: ",
|
||||
"adminNewProductLabel": "New product",
|
||||
"adminPasswordMustChange": "The user must change their password at next login.",
|
||||
"adminChangeRoleConfirm": "Change {username} to {role}?",
|
||||
"@adminChangeRoleConfirm": {
|
||||
"placeholders": {
|
||||
"username": { "type": "String" },
|
||||
"role": { "type": "String" }
|
||||
}
|
||||
},
|
||||
"adminGivePremiumConfirm": "Give Premium for {username}",
|
||||
"@adminGivePremiumConfirm": {
|
||||
"placeholders": {
|
||||
"username": { "type": "String" }
|
||||
}
|
||||
},
|
||||
"adminRemovePremiumConfirm": "Remove Premium for {username}",
|
||||
"@adminRemovePremiumConfirm": {
|
||||
"placeholders": {
|
||||
"username": { "type": "String" }
|
||||
}
|
||||
},
|
||||
"adminAllowSharingConfirm": "Allow recipe sharing for {username}",
|
||||
"@adminAllowSharingConfirm": {
|
||||
"placeholders": {
|
||||
"username": { "type": "String" }
|
||||
}
|
||||
},
|
||||
"adminBlockSharingConfirm": "Block recipe sharing for {username}",
|
||||
"@adminBlockSharingConfirm": {
|
||||
"placeholders": {
|
||||
"username": { "type": "String" }
|
||||
}
|
||||
},
|
||||
"adminResetPasswordContent": "Generate a temporary password for {username}",
|
||||
"@adminResetPasswordContent": {
|
||||
"placeholders": {
|
||||
"username": { "type": "String" }
|
||||
}
|
||||
},
|
||||
"adminPasswordTitle": "Password for {username}",
|
||||
"@adminPasswordTitle": {
|
||||
"placeholders": {
|
||||
"username": { "type": "String" }
|
||||
}
|
||||
},
|
||||
"adminChangeEmailTitle": "Change e-mail for {username}",
|
||||
"@adminChangeEmailTitle": {
|
||||
"placeholders": {
|
||||
"username": { "type": "String" }
|
||||
}
|
||||
},
|
||||
"adminDeleteProductContent": "Delete {name}? The product can be restored later.",
|
||||
"@adminDeleteProductContent": {
|
||||
"placeholders": {
|
||||
"name": { "type": "String" }
|
||||
}
|
||||
},
|
||||
"adminAiAppliedCount": "AI suggestions applied to {count} products.",
|
||||
"@adminAiAppliedCount": {
|
||||
"placeholders": {
|
||||
"count": { "type": "int" }
|
||||
}
|
||||
},
|
||||
"adminCategoryUpdated": "Category updated for {name}",
|
||||
"@adminCategoryUpdated": {
|
||||
"placeholders": {
|
||||
"name": { "type": "String" }
|
||||
}
|
||||
},
|
||||
"adminProductUpdated": "Product updated for {name}",
|
||||
"@adminProductUpdated": {
|
||||
"placeholders": {
|
||||
"name": { "type": "String" }
|
||||
}
|
||||
},
|
||||
"adminPremiumConfirm": "{action} Premium for {username}?",
|
||||
"@adminPremiumConfirm": {
|
||||
"placeholders": {
|
||||
"action": { "type": "String" },
|
||||
"username": { "type": "String" }
|
||||
}
|
||||
},
|
||||
"adminSharingConfirm": "{action} recipe sharing for {username}?",
|
||||
"@adminSharingConfirm": {
|
||||
"placeholders": {
|
||||
"action": { "type": "String" },
|
||||
"username": { "type": "String" }
|
||||
}
|
||||
},
|
||||
"adminResetPasswordConfirm": "Generate a temporary password for {username}?",
|
||||
"@adminResetPasswordConfirm": {
|
||||
"placeholders": {
|
||||
"username": { "type": "String" }
|
||||
}
|
||||
},
|
||||
"adminTempPasswordForUser": "Password for {username}:",
|
||||
"@adminTempPasswordForUser": {
|
||||
"placeholders": {
|
||||
"username": { "type": "String" }
|
||||
}
|
||||
},
|
||||
"adminEmailEditTitle": "Change e-mail for {username}",
|
||||
"@adminEmailEditTitle": {
|
||||
"placeholders": {
|
||||
"username": { "type": "String" }
|
||||
}
|
||||
},
|
||||
"adminEmailAction": "Change e-mail",
|
||||
"adminUserCreated": "User {username} created.",
|
||||
"@adminUserCreated": {
|
||||
"placeholders": {
|
||||
"username": { "type": "String" }
|
||||
}
|
||||
},
|
||||
"adminCreateUserTitle": "Create user",
|
||||
"adminMinChars2": "At least 2 characters",
|
||||
"adminMinChars8": "At least 8 characters",
|
||||
"adminPasswordLabel": "Password",
|
||||
"adminRoleLabel": "Role",
|
||||
"adminCreateAction": "Create",
|
||||
"adminUsersDescription": "Manage users directly from the profile page.",
|
||||
"adminDowngradeToUser": "Downgrade to user",
|
||||
"adminUpgradeToAdmin": "Upgrade to admin",
|
||||
"adminSharingOn": "Sharing: On",
|
||||
"adminSharingOff": "Sharing: Off",
|
||||
"adminMergeProductsTitle": "Merge products",
|
||||
"adminMergeProductsHint": "Select which product should be moved into the other:",
|
||||
"adminMergeAction": "Merge",
|
||||
"adminMerge2Selected": "Merge 2 selected",
|
||||
"adminProductsMerged": "Products merged.",
|
||||
"adminDeleteProductTitle": "Delete product",
|
||||
"adminDeleteProductConfirm": "Delete {name}? The product can be restored later.",
|
||||
"@adminDeleteProductConfirm": {
|
||||
"placeholders": {
|
||||
"name": { "type": "String" }
|
||||
}
|
||||
},
|
||||
"adminProductDeleted": "Product deleted.",
|
||||
"adminProductsUpdated": "Products updated.",
|
||||
"adminNoAiSuggestions": "No AI suggestions to show.",
|
||||
"adminAiSuggestionsTitle": "AI suggestions",
|
||||
"adminAiApplied": "AI suggestions applied to {count} products.",
|
||||
"@adminAiApplied": {
|
||||
"placeholders": {
|
||||
"count": { "type": "int" }
|
||||
}
|
||||
},
|
||||
"adminApplySelected": "Apply ({count})",
|
||||
"@adminApplySelected": {
|
||||
"placeholders": {
|
||||
"count": { "type": "int" }
|
||||
}
|
||||
},
|
||||
"adminUpdateSelected": "Update selected ({count})",
|
||||
"@adminUpdateSelected": {
|
||||
"placeholders": {
|
||||
"count": { "type": "int" }
|
||||
}
|
||||
},
|
||||
"adminAiCategorizeAll": "AI-categorize uncategorized",
|
||||
"adminAiCategorizeSelected": "AI-categorize selected ({count})",
|
||||
"@adminAiCategorizeSelected": {
|
||||
"placeholders": {
|
||||
"count": { "type": "int" }
|
||||
}
|
||||
},
|
||||
"adminRestoreSelected": "Restore selected ({count})",
|
||||
"@adminRestoreSelected": {
|
||||
"placeholders": {
|
||||
"count": { "type": "int" }
|
||||
}
|
||||
},
|
||||
"adminSearchProduct": "Search product",
|
||||
"adminShowDeleted": "Show deleted",
|
||||
"adminShowUncategorized": "Uncategorized only",
|
||||
"adminBulkSetCategory": "Bulk: set category",
|
||||
"adminRemoveCategory": "Remove category",
|
||||
"adminNoProductsFound": "No products match the filter.",
|
||||
"adminInlineCategory": "Category (inline)",
|
||||
"adminNoCategory": "No category",
|
||||
"adminRestoreAction": "Restore",
|
||||
"required": "Required",
|
||||
"logoutAction": "Log out",
|
||||
"adminAiDescription": "Overview of AI features exposed by the backend.",
|
||||
"adminPagePrefix": "Page: ",
|
||||
"profileDatabaseDescription": "The database tab covers the same main areas as in recipe-frontend."
|
||||
}
|
||||
+449
-1
@@ -73,5 +73,453 @@
|
||||
"forbiddenError": "Du saknar behörighet för denna funktion.",
|
||||
"serverError": "Serverfel uppstod. Försök igen om en stund.",
|
||||
"networkError": "Nätverksfel. Kontrollera anslutningen och försök igen.",
|
||||
"unexpectedError": "Ett oväntat fel uppstod."
|
||||
"unexpectedError": "Ett oväntat fel uppstod.",
|
||||
|
||||
"cancelAction": "Avbryt",
|
||||
"saveAction": "Spara",
|
||||
"deleteAction": "Ta bort",
|
||||
"addAction": "Lägg till",
|
||||
"editTooltip": "Redigera",
|
||||
"deleteTooltip": "Ta bort",
|
||||
"loadingLabel": "Laddar...",
|
||||
"cannotBeUndone": "Åtgärden kan inte ångras.",
|
||||
"yesLabel": "Ja",
|
||||
"noLabel": "Nej",
|
||||
"commentLabel": "Kommentar",
|
||||
"commentOptionalLabel": "Kommentar (valfri)",
|
||||
"openedLabel": "Öppnad",
|
||||
"quantityLabel": "Mängd *",
|
||||
"quantityHint": "Ange mängd",
|
||||
"invalidNumber": "Ogiltigt tal",
|
||||
"unitLabel": "Enhet *",
|
||||
"selectDateLabel": "Välj datum",
|
||||
"locationOptionalLabel": "Plats (valfri)",
|
||||
"locationLabel": "Plats",
|
||||
"brandOptionalLabel": "Märke (valfritt)",
|
||||
"brandLabel": "Märke",
|
||||
"enterPositiveNumber": "Ange ett positivt tal",
|
||||
|
||||
"inventoryTitle": "Inventarie",
|
||||
"inventoryFilterAndSort": "Filter och sortering",
|
||||
"inventorySortLatest": "Senast tillagda",
|
||||
"inventorySortNameAsc": "Namn A-Ö",
|
||||
"inventorySortBestBeforeAsc": "Bäst före stigande",
|
||||
"inventorySortBestBeforeDesc": "Bäst före fallande",
|
||||
"inventorySortLabel": "Sortering",
|
||||
"inventoryAllFilter": "Alla",
|
||||
"inventoryEmpty": "Inventariet är tomt.",
|
||||
"inventoryLoading": "Laddar inventarie...",
|
||||
"inventoryCreateTitle": "Lägg till inventariepost",
|
||||
"inventoryEditTitle": "Redigera inventariepost",
|
||||
"inventorySelectProduct": "Välj en produkt ur listan.",
|
||||
"inventoryDeleteTitle": "Ta bort inventariepost?",
|
||||
"inventoryProductLabel": "Produkt",
|
||||
"inventoryQuantityDisplayLabel": "Mängd",
|
||||
"inventoryLocationDisplayLabel": "Plats",
|
||||
"inventoryBrandDisplayLabel": "Märke",
|
||||
"inventoryPurchaseDateLabel": "Inköpsdatum",
|
||||
"inventoryBestBeforeLabel": "Bäst före",
|
||||
"inventoryPurchaseDatePrefix": "Inköp: ",
|
||||
"inventoryBestBeforeDatePrefix": "Bäst före: ",
|
||||
"inventoryConsumeAction": "Konsumera",
|
||||
"inventoryHistoryAction": "Konsumtionshistorik",
|
||||
"inventoryConsumeAmountLabel": "Mängd att konsumera *",
|
||||
"inventoryHistoryLoading": "Laddar historik...",
|
||||
"inventoryHistoryEmpty": "Ingen konsumtionshistorik finns.",
|
||||
"inventoryRecipesAction": "Recept",
|
||||
"inventoryHistoryTitle": "Historik: {name}",
|
||||
"@inventoryHistoryTitle": {
|
||||
"placeholders": {
|
||||
"name": { "type": "String" }
|
||||
}
|
||||
},
|
||||
"inventoryConsumeNameTitle": "Konsumera: {name}",
|
||||
"@inventoryConsumeNameTitle": {
|
||||
"placeholders": {
|
||||
"name": { "type": "String" }
|
||||
}
|
||||
},
|
||||
"inventoryAvailableLabel": "Tillgängligt: {quantity} {unit}",
|
||||
"@inventoryAvailableLabel": {
|
||||
"placeholders": {
|
||||
"quantity": { "type": "String" },
|
||||
"unit": { "type": "String" }
|
||||
}
|
||||
},
|
||||
|
||||
"pantryDescription": "Produkter du alltid räknar med att ha hemma.",
|
||||
"pantryLoading": "Laddar baslager...",
|
||||
"pantryNoLocation": "Ingen plats vald",
|
||||
"pantryInvalidQuantity": "Ange en giltig mängd över 0.",
|
||||
"pantryRemoveTitle": "Ta bort från baslager?",
|
||||
"pantryOtherCategory": "Övrigt",
|
||||
"pantryGoToRecipesTooltip": "Gå till recept",
|
||||
"pantryAddToInventoryTitle": "Lägg \"{name}\" i inventarie",
|
||||
"@pantryAddToInventoryTitle": {
|
||||
"placeholders": {
|
||||
"name": { "type": "String" }
|
||||
}
|
||||
},
|
||||
"pantryItemAdded": "{name} tillagd i inventarie.",
|
||||
"@pantryItemAdded": {
|
||||
"placeholders": {
|
||||
"name": { "type": "String" }
|
||||
}
|
||||
},
|
||||
"pantryRemoveContent": "Vill du ta bort \"{name}\"?",
|
||||
"@pantryRemoveContent": {
|
||||
"placeholders": {
|
||||
"name": { "type": "String" }
|
||||
}
|
||||
},
|
||||
|
||||
"recipesLoading": "Laddar recept...",
|
||||
"recipesEmpty": "Inga recept hittades",
|
||||
"recipesEmptyDescription": "Lägg till ett recept för att komma igång.",
|
||||
"recipesNewTooltip": "Nytt recept",
|
||||
"recipeDetailLoading": "Laddar recept...",
|
||||
"recipeDetailMakePrivate": "Gör privat",
|
||||
"recipeDetailMakePublic": "Gör publik",
|
||||
"recipeDetailShareWithUser": "Dela med användare",
|
||||
"recipeDetailGoToInventory": "Gå till inventarie",
|
||||
"recipeDetailShareTitle": "Dela recept",
|
||||
"recipeDetailUsernameLabel": "Användarnamn",
|
||||
"recipeDetailUsernameHint": "t.ex. anna",
|
||||
"recipeDetailRemoveShare": "Ta bort delning",
|
||||
"recipeDetailShareAction": "Dela",
|
||||
"recipeDetailDeleteTitle": "Ta bort recept?",
|
||||
"recipeDetailNowPublic": "Receptet är nu publikt.",
|
||||
"recipeDetailNowPrivate": "Receptet är nu privat.",
|
||||
"recipeDetailServings": "portioner",
|
||||
"recipeDetailIngredients": "Ingredienser",
|
||||
"recipeDetailInstructions": "Tillvägagångssätt",
|
||||
"recipeDetailBackToList": "Tillbaka till receptlistan",
|
||||
"recipeDetailSharingRemoved": "Delning borttagen för {user}",
|
||||
"@recipeDetailSharingRemoved": {
|
||||
"placeholders": {
|
||||
"user": { "type": "String" }
|
||||
}
|
||||
},
|
||||
"recipeDetailSharedWith": "Receptet delades med {user}",
|
||||
"@recipeDetailSharedWith": {
|
||||
"placeholders": {
|
||||
"user": { "type": "String" }
|
||||
}
|
||||
},
|
||||
"recipeDetailDeleteContent": "Vill du ta bort \"{title}\"? Åtgärden kan inte ångras.",
|
||||
"@recipeDetailDeleteContent": {
|
||||
"placeholders": {
|
||||
"title": { "type": "String" }
|
||||
}
|
||||
},
|
||||
|
||||
"recipeCreateTitle": "Nytt recept",
|
||||
"recipeCreateReviewIngredients": "Granska ingredienser",
|
||||
"recipeCreateMarkdownPlaceholder": "# Receptnamn\n\n## Ingredienser\n- 500 g köttfärs\n- 1 st lök\n\n## Tillvägagångssätt\nStek löken...",
|
||||
"recipeCreateMarkdownHint": "Klistra in eller skriv ett recept i Markdown-format.",
|
||||
"recipeCreateNameRequired": "Receptnamnet får inte vara tomt.",
|
||||
"recipeCreateSaveAction": "Spara recept",
|
||||
"recipeCreateServingsLabel": "Antal portioner (valfritt)",
|
||||
"recipeCreateIngredientsLabel": "Ingredienser",
|
||||
"recipeCreateIngredientsHint": "Bocka av ingredienser att inkludera och välj rätt produkt.",
|
||||
"recipeCreateNoProductFound": "Ingen produkt hittades — ingrediensen hoppas över.",
|
||||
|
||||
"recipeEditTitle": "Redigera recept",
|
||||
"recipeEditNameLabel": "Receptnamn",
|
||||
"recipeEditNameRequired": "Ange ett receptnamn.",
|
||||
"recipeEditDescriptionLabel": "Beskrivning (valfritt)",
|
||||
"recipeEditServingsLabel": "Antal portioner (valfritt)",
|
||||
"recipeEditServingsInvalid": "Ange ett heltal.",
|
||||
"recipeEditInstructionsLabel": "Tillvägagångssätt (valfritt)",
|
||||
"recipeEditIngredientsLabel": "Ingredienser",
|
||||
"recipeEditIngredientsHint": "Välj produkt, mängd och enhet för varje ingrediens.",
|
||||
"recipeEditNoIngredients": "Inga ingredienser tillagda än.",
|
||||
"recipeEditIngredientPrefix": "Ingrediens ",
|
||||
"recipeEditRemoveIngredient": "Ta bort ingrediens",
|
||||
"recipeEditMinIngredients": "Minst en ingrediens krävs.",
|
||||
"recipeEditSelectProduct": "Välj produkt för alla ingredienser.",
|
||||
"recipeEditValidQuantity": "Ange giltig mängd för alla ingredienser.",
|
||||
"recipeEditSelectUnit": "Välj enhet för alla ingredienser.",
|
||||
"recipeEditSaveChanges": "Spara ändringar",
|
||||
|
||||
"importTabDescription": "Ladda upp en PDF eller bild, eller ange en receptlänk — receptet importeras och öppnas direkt i redigeringsläget.",
|
||||
"importFileTabLabel": "Fil / PDF",
|
||||
"importLinkTabLabel": "Länk",
|
||||
"importChooseFileAction": "Välj fil (PDF, PNG, JPG, WEBP, BMP)",
|
||||
"importFileAction": "Importera fil",
|
||||
"importFileProcessing": "Tolkar receptet — detta kan ta upp till en minut...",
|
||||
"importLinkAction": "Importera från länk",
|
||||
"importLinkLabel": "Receptlänk",
|
||||
"importLinkHint": "https://exempel.se/recept/...",
|
||||
"importWriteInstead": "Skriv in recept istället",
|
||||
|
||||
"errorDialogTitle": "Fel",
|
||||
"errorDialogClose": "Stäng",
|
||||
"errorDialogCopy": "Kopiera",
|
||||
"errorDialogCopied": "Felmeddelande kopierat!",
|
||||
|
||||
"profileMyProfileTab": "Min profil",
|
||||
"profileDatabaseTab": "Databas",
|
||||
"profileUsersTab": "Användare",
|
||||
"profilePendingTab": "Förslag",
|
||||
"profileAiTab": "AI",
|
||||
"profileUsernameLabel": "Användarnamn",
|
||||
"profileEmailLabel": "E-post",
|
||||
"profileEmailHint": "Ange en e-postadress",
|
||||
"profileEmailInvalid": "Ogiltig e-postadress",
|
||||
"profileFirstNameLabel": "Förnamn",
|
||||
"profileLastNameLabel": "Efternamn",
|
||||
"profileSaveAction": "Spara ändringar",
|
||||
"profileSaved": "Profil sparad!",
|
||||
"profileInventoryTab": "Inventarie",
|
||||
"profilePantryTab": "Baslager",
|
||||
"profileProductsTab": "Produkter",
|
||||
"profileAddInventoryItem": "Lägg till inventariepost",
|
||||
"profileOpenInventory": "Öppna inventarie",
|
||||
"profileInventoryDescription": "Uppdatera och konsumera varor i ditt inventarie.",
|
||||
"profileOpenPantry": "Öppna baslager",
|
||||
"profilePantryDescription": "Hantera varor du alltid räknar med att ha hemma.",
|
||||
|
||||
"adminChangeRole": "Ändra roll",
|
||||
"adminGivePremium": "Ge Premium",
|
||||
"adminRemovePremium": "Ta bort Premium",
|
||||
"adminAllowSharing": "Tillåt receptdelning",
|
||||
"adminBlockSharing": "Blockera receptdelning",
|
||||
"adminResetPassword": "Återställ lösenord",
|
||||
"adminTempPasswordTitle": "Tillfälligt lösenord",
|
||||
"adminCopyAction": "Kopiera",
|
||||
"adminCloseAction": "Stäng",
|
||||
"adminEmailLabel": "E-post",
|
||||
"adminEmailInvalid": "Ogiltig e-postadress.",
|
||||
"adminEmailUpdated": "E-post uppdaterad.",
|
||||
"adminDeleteUser": "Ta bort användare",
|
||||
"adminDeleteUserConfirm": "Ta bort permanent? Detta går inte att ångra.",
|
||||
"adminConfirmAction": "Bekräfta",
|
||||
"adminNewUser": "Ny användare",
|
||||
"adminNoUsers": "Inga användare hittades.",
|
||||
"adminAdminRole": "Admin",
|
||||
"adminUserRole": "User",
|
||||
"adminPremiumLabel": "Premium",
|
||||
"adminFreeLabel": "Free",
|
||||
"adminSharingOn": "Delning: På",
|
||||
"adminSharingOff": "Delning: Av",
|
||||
"adminUsersDescription": "Hantera användare direkt från profilsidan.",
|
||||
"adminDowngradeToUser": "Nedgradera till user",
|
||||
"adminUpgradeToAdmin": "Uppgradera till admin",
|
||||
"adminSortNewest": "Sortera: Nyast",
|
||||
"adminSortOldest": "Sortera: Äldst",
|
||||
"adminSortNameAsc": "Sortera: Namn A-Ö",
|
||||
"adminSortNameDesc": "Sortera: Namn Ö-A",
|
||||
"adminSortCategoryAsc": "Sortera: Kategori A-Ö",
|
||||
"adminSortCategoryDesc": "Sortera: Kategori Ö-A",
|
||||
"adminSearchProduct": "Sök produkt",
|
||||
"adminShowDeleted": "Visa raderade",
|
||||
"adminOnlyUncategorized": "Endast okategoriserade",
|
||||
"adminBulkSetCategory": "Bulk: sätt kategori",
|
||||
"adminProductsUpdated": "Produkter uppdaterade.",
|
||||
"adminNoAiSuggestions": "Inga AI-förslag att visa.",
|
||||
"adminMergeProducts": "Slå ihop produkter",
|
||||
"adminMergeSelectSource": "Välj vilken produkt som ska flyttas in i den andra:",
|
||||
"adminMergeSource": "Källa: ",
|
||||
"adminMergeTarget": "Mål: ",
|
||||
"adminMergeAction": "Slå ihop",
|
||||
"adminDeleteProduct": "Ta bort produkt",
|
||||
"adminProductDeleted": "Produkt borttagen.",
|
||||
"adminProductsRestored": "Valda produkter återställda.",
|
||||
"adminProductRestored": "Produkt återställd.",
|
||||
"adminNoPendingProducts": "Inga väntande produktförslag.",
|
||||
"adminCategoryPrefix": "Kategori: ",
|
||||
"adminSuggestedByPrefix": "Föreslagen av: ",
|
||||
"adminDatePrefix": "Datum: ",
|
||||
"adminApproveAction": "Godkänn",
|
||||
"adminRejectAction": "Avvisa",
|
||||
"adminPendingDescription": "Godkänn eller avvisa väntande produktförslag direkt från profilsidan.",
|
||||
"adminAiDescription": "Översikt över AI-funktioner som backend exponerar.",
|
||||
"adminPagePrefix": "Sida: ",
|
||||
"adminNewProductLabel": "Ny produkt",
|
||||
"adminPasswordMustChange": "Användaren måste byta lösenord vid nästa inloggning.",
|
||||
"adminChangeRoleConfirm": "Ändra {username} till {role}?",
|
||||
"@adminChangeRoleConfirm": {
|
||||
"placeholders": {
|
||||
"username": { "type": "String" },
|
||||
"role": { "type": "String" }
|
||||
}
|
||||
},
|
||||
"adminGivePremiumConfirm": "Ge Premium för {username}",
|
||||
"@adminGivePremiumConfirm": {
|
||||
"placeholders": {
|
||||
"username": { "type": "String" }
|
||||
}
|
||||
},
|
||||
"adminRemovePremiumConfirm": "Ta bort Premium för {username}",
|
||||
"@adminRemovePremiumConfirm": {
|
||||
"placeholders": {
|
||||
"username": { "type": "String" }
|
||||
}
|
||||
},
|
||||
"adminAllowSharingConfirm": "Tillåt receptdelning för {username}",
|
||||
"@adminAllowSharingConfirm": {
|
||||
"placeholders": {
|
||||
"username": { "type": "String" }
|
||||
}
|
||||
},
|
||||
"adminBlockSharingConfirm": "Blockera receptdelning för {username}",
|
||||
"@adminBlockSharingConfirm": {
|
||||
"placeholders": {
|
||||
"username": { "type": "String" }
|
||||
}
|
||||
},
|
||||
"adminResetPasswordContent": "Generera ett tillfälligt lösenord för {username}",
|
||||
"@adminResetPasswordContent": {
|
||||
"placeholders": {
|
||||
"username": { "type": "String" }
|
||||
}
|
||||
},
|
||||
"adminPasswordTitle": "Lösenord för {username}",
|
||||
"@adminPasswordTitle": {
|
||||
"placeholders": {
|
||||
"username": { "type": "String" }
|
||||
}
|
||||
},
|
||||
"adminChangeEmailTitle": "Ändra e-post för {username}",
|
||||
"@adminChangeEmailTitle": {
|
||||
"placeholders": {
|
||||
"username": { "type": "String" }
|
||||
}
|
||||
},
|
||||
"adminDeleteProductContent": "Ta bort {name}? Produkten kan återställas senare.",
|
||||
"@adminDeleteProductContent": {
|
||||
"placeholders": {
|
||||
"name": { "type": "String" }
|
||||
}
|
||||
},
|
||||
"adminAiAppliedCount": "AI-förslag tillämpade på {count} produkter.",
|
||||
"@adminAiAppliedCount": {
|
||||
"placeholders": {
|
||||
"count": { "type": "int" }
|
||||
}
|
||||
},
|
||||
"adminCategoryUpdated": "Kategori uppdaterad för {name}",
|
||||
"@adminCategoryUpdated": {
|
||||
"placeholders": {
|
||||
"name": { "type": "String" }
|
||||
}
|
||||
},
|
||||
"adminProductUpdated": "Produkt uppdaterad för {name}",
|
||||
"@adminProductUpdated": {
|
||||
"placeholders": {
|
||||
"name": { "type": "String" }
|
||||
}
|
||||
},
|
||||
"adminPremiumConfirm": "{action} Premium för {username}?",
|
||||
"@adminPremiumConfirm": {
|
||||
"placeholders": {
|
||||
"action": { "type": "String" },
|
||||
"username": { "type": "String" }
|
||||
}
|
||||
},
|
||||
"adminSharingConfirm": "{action} receptdelning för {username}?",
|
||||
"@adminSharingConfirm": {
|
||||
"placeholders": {
|
||||
"action": { "type": "String" },
|
||||
"username": { "type": "String" }
|
||||
}
|
||||
},
|
||||
"adminResetPasswordConfirm": "Generera ett tillfälligt lösenord för {username}?",
|
||||
"@adminResetPasswordConfirm": {
|
||||
"placeholders": {
|
||||
"username": { "type": "String" }
|
||||
}
|
||||
},
|
||||
"adminTempPasswordForUser": "Lösenord för {username}:",
|
||||
"@adminTempPasswordForUser": {
|
||||
"placeholders": {
|
||||
"username": { "type": "String" }
|
||||
}
|
||||
},
|
||||
"adminEmailEditTitle": "Ändra e-post för {username}",
|
||||
"@adminEmailEditTitle": {
|
||||
"placeholders": {
|
||||
"username": { "type": "String" }
|
||||
}
|
||||
},
|
||||
"adminEmailAction": "Ändra e-post",
|
||||
"adminUserCreated": "Användare {username} skapad.",
|
||||
"@adminUserCreated": {
|
||||
"placeholders": {
|
||||
"username": { "type": "String" }
|
||||
}
|
||||
},
|
||||
"adminCreateUserTitle": "Skapa användare",
|
||||
"adminMinChars2": "Minst 2 tecken",
|
||||
"adminMinChars8": "Minst 8 tecken",
|
||||
"adminPasswordLabel": "Lösenord",
|
||||
"adminRoleLabel": "Roll",
|
||||
"adminCreateAction": "Skapa",
|
||||
"adminUsersDescription": "Hantera användare direkt från profilsidan.",
|
||||
"adminDowngradeToUser": "Nedgradera till user",
|
||||
"adminUpgradeToAdmin": "Uppgradera till admin",
|
||||
"adminSharingOn": "Delning: På",
|
||||
"adminSharingOff": "Delning: Av",
|
||||
"adminMergeProductsTitle": "Slå ihop produkter",
|
||||
"adminMergeProductsHint": "Välj vilken produkt som ska flyttas in i den andra:",
|
||||
"adminMergeAction": "Slå ihop",
|
||||
"adminMerge2Selected": "Slå ihop 2 valda",
|
||||
"adminProductsMerged": "Produkter sammanslagna.",
|
||||
"adminDeleteProductTitle": "Ta bort produkt",
|
||||
"adminDeleteProductConfirm": "Ta bort {name}? Produkten kan återställas senare.",
|
||||
"@adminDeleteProductConfirm": {
|
||||
"placeholders": {
|
||||
"name": { "type": "String" }
|
||||
}
|
||||
},
|
||||
"adminProductDeleted": "Produkt borttagen.",
|
||||
"adminProductsUpdated": "Produkter uppdaterade.",
|
||||
"adminNoAiSuggestions": "Inga AI-förslag att visa.",
|
||||
"adminAiSuggestionsTitle": "AI-förslag",
|
||||
"adminAiApplied": "AI-förslag tillämpade på {count} produkter.",
|
||||
"@adminAiApplied": {
|
||||
"placeholders": {
|
||||
"count": { "type": "int" }
|
||||
}
|
||||
},
|
||||
"adminApplySelected": "Tillämpa ({count})",
|
||||
"@adminApplySelected": {
|
||||
"placeholders": {
|
||||
"count": { "type": "int" }
|
||||
}
|
||||
},
|
||||
"adminUpdateSelected": "Uppdatera valda ({count})",
|
||||
"@adminUpdateSelected": {
|
||||
"placeholders": {
|
||||
"count": { "type": "int" }
|
||||
}
|
||||
},
|
||||
"adminAiCategorizeAll": "AI-kategorisera okategoriserade",
|
||||
"adminAiCategorizeSelected": "AI-kategorisera valda ({count})",
|
||||
"@adminAiCategorizeSelected": {
|
||||
"placeholders": {
|
||||
"count": { "type": "int" }
|
||||
}
|
||||
},
|
||||
"adminRestoreSelected": "Återställ valda ({count})",
|
||||
"@adminRestoreSelected": {
|
||||
"placeholders": {
|
||||
"count": { "type": "int" }
|
||||
}
|
||||
},
|
||||
"adminSearchProduct": "Sök produkt",
|
||||
"adminShowDeleted": "Visa raderade",
|
||||
"adminShowUncategorized": "Endast okategoriserade",
|
||||
"adminBulkSetCategory": "Bulk: sätt kategori",
|
||||
"adminRemoveCategory": "Ta bort kategori",
|
||||
"adminNoProductsFound": "Inga produkter matchar filtret.",
|
||||
"adminInlineCategory": "Kategori (inline)",
|
||||
"adminNoCategory": "Ingen kategori",
|
||||
"adminRestoreAction": "Återställ",
|
||||
"required": "Obligatoriskt",
|
||||
"logoutAction": "Logga ut",
|
||||
"adminAiDescription": "Översikt över AI-funktioner som backend exponerar.",
|
||||
"adminPagePrefix": "Sida: ",
|
||||
"profileDatabaseDescription": "Databasfliken samlar samma huvudområden som i recipe-frontend."
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
@@ -168,4 +168,853 @@ class AppLocalizationsEn extends AppLocalizations {
|
||||
|
||||
@override
|
||||
String get unexpectedError => 'An unexpected error occurred.';
|
||||
|
||||
@override
|
||||
String get cancelAction => 'Cancel';
|
||||
|
||||
@override
|
||||
String get saveAction => 'Save';
|
||||
|
||||
@override
|
||||
String get deleteAction => 'Delete';
|
||||
|
||||
@override
|
||||
String get addAction => 'Add';
|
||||
|
||||
@override
|
||||
String get editTooltip => 'Edit';
|
||||
|
||||
@override
|
||||
String get deleteTooltip => 'Delete';
|
||||
|
||||
@override
|
||||
String get loadingLabel => 'Loading...';
|
||||
|
||||
@override
|
||||
String get cannotBeUndone => 'This action cannot be undone.';
|
||||
|
||||
@override
|
||||
String get yesLabel => 'Yes';
|
||||
|
||||
@override
|
||||
String get noLabel => 'No';
|
||||
|
||||
@override
|
||||
String get commentLabel => 'Comment';
|
||||
|
||||
@override
|
||||
String get commentOptionalLabel => 'Comment (optional)';
|
||||
|
||||
@override
|
||||
String get openedLabel => 'Opened';
|
||||
|
||||
@override
|
||||
String get quantityLabel => 'Quantity *';
|
||||
|
||||
@override
|
||||
String get quantityHint => 'Enter quantity';
|
||||
|
||||
@override
|
||||
String get invalidNumber => 'Invalid number';
|
||||
|
||||
@override
|
||||
String get unitLabel => 'Unit *';
|
||||
|
||||
@override
|
||||
String get selectDateLabel => 'Select date';
|
||||
|
||||
@override
|
||||
String get locationOptionalLabel => 'Location (optional)';
|
||||
|
||||
@override
|
||||
String get locationLabel => 'Location';
|
||||
|
||||
@override
|
||||
String get brandOptionalLabel => 'Brand (optional)';
|
||||
|
||||
@override
|
||||
String get brandLabel => 'Brand';
|
||||
|
||||
@override
|
||||
String get enterPositiveNumber => 'Enter a positive number';
|
||||
|
||||
@override
|
||||
String get inventoryTitle => 'Inventory';
|
||||
|
||||
@override
|
||||
String get inventoryFilterAndSort => 'Filter and sorting';
|
||||
|
||||
@override
|
||||
String get inventorySortLatest => 'Latest added';
|
||||
|
||||
@override
|
||||
String get inventorySortNameAsc => 'Name A-Z';
|
||||
|
||||
@override
|
||||
String get inventorySortBestBeforeAsc => 'Best before ascending';
|
||||
|
||||
@override
|
||||
String get inventorySortBestBeforeDesc => 'Best before descending';
|
||||
|
||||
@override
|
||||
String get inventorySortLabel => 'Sort';
|
||||
|
||||
@override
|
||||
String get inventoryAllFilter => 'All';
|
||||
|
||||
@override
|
||||
String get inventoryEmpty => 'Inventory is empty.';
|
||||
|
||||
@override
|
||||
String get inventoryLoading => 'Loading inventory...';
|
||||
|
||||
@override
|
||||
String get inventoryCreateTitle => 'Add inventory item';
|
||||
|
||||
@override
|
||||
String get inventoryEditTitle => 'Edit inventory item';
|
||||
|
||||
@override
|
||||
String get inventorySelectProduct => 'Select a product from the list.';
|
||||
|
||||
@override
|
||||
String get inventoryDeleteTitle => 'Delete inventory item?';
|
||||
|
||||
@override
|
||||
String get inventoryProductLabel => 'Product';
|
||||
|
||||
@override
|
||||
String get inventoryQuantityDisplayLabel => 'Quantity';
|
||||
|
||||
@override
|
||||
String get inventoryLocationDisplayLabel => 'Location';
|
||||
|
||||
@override
|
||||
String get inventoryBrandDisplayLabel => 'Brand';
|
||||
|
||||
@override
|
||||
String get inventoryPurchaseDateLabel => 'Purchase date';
|
||||
|
||||
@override
|
||||
String get inventoryBestBeforeLabel => 'Best before';
|
||||
|
||||
@override
|
||||
String get inventoryPurchaseDatePrefix => 'Purchase: ';
|
||||
|
||||
@override
|
||||
String get inventoryBestBeforeDatePrefix => 'Best before: ';
|
||||
|
||||
@override
|
||||
String get inventoryConsumeAction => 'Consume';
|
||||
|
||||
@override
|
||||
String get inventoryHistoryAction => 'Consumption history';
|
||||
|
||||
@override
|
||||
String get inventoryConsumeAmountLabel => 'Amount to consume *';
|
||||
|
||||
@override
|
||||
String get inventoryHistoryLoading => 'Loading history...';
|
||||
|
||||
@override
|
||||
String get inventoryHistoryEmpty => 'No consumption history exists.';
|
||||
|
||||
@override
|
||||
String get inventoryRecipesAction => 'Recipes';
|
||||
|
||||
@override
|
||||
String inventoryHistoryTitle(String name) {
|
||||
return 'History: $name';
|
||||
}
|
||||
|
||||
@override
|
||||
String inventoryConsumeNameTitle(String name) {
|
||||
return 'Consume: $name';
|
||||
}
|
||||
|
||||
@override
|
||||
String inventoryAvailableLabel(String quantity, String unit) {
|
||||
return 'Available: $quantity $unit';
|
||||
}
|
||||
|
||||
@override
|
||||
String get pantryDescription => 'Products you always expect to have at home.';
|
||||
|
||||
@override
|
||||
String get pantryLoading => 'Loading pantry...';
|
||||
|
||||
@override
|
||||
String get pantryNoLocation => 'No location selected';
|
||||
|
||||
@override
|
||||
String get pantryInvalidQuantity => 'Enter a valid quantity greater than 0.';
|
||||
|
||||
@override
|
||||
String get pantryRemoveTitle => 'Remove from pantry?';
|
||||
|
||||
@override
|
||||
String get pantryOtherCategory => 'Other';
|
||||
|
||||
@override
|
||||
String get pantryGoToRecipesTooltip => 'Go to recipes';
|
||||
|
||||
@override
|
||||
String pantryAddToInventoryTitle(String name) {
|
||||
return 'Add \"$name\" to inventory';
|
||||
}
|
||||
|
||||
@override
|
||||
String pantryItemAdded(String name) {
|
||||
return '$name added to inventory.';
|
||||
}
|
||||
|
||||
@override
|
||||
String pantryRemoveContent(String name) {
|
||||
return 'Do you want to remove \"$name\"?';
|
||||
}
|
||||
|
||||
@override
|
||||
String get recipesLoading => 'Loading recipes...';
|
||||
|
||||
@override
|
||||
String get recipesEmpty => 'No recipes found';
|
||||
|
||||
@override
|
||||
String get recipesEmptyDescription => 'Add a recipe to get started.';
|
||||
|
||||
@override
|
||||
String get recipesNewTooltip => 'New recipe';
|
||||
|
||||
@override
|
||||
String get recipeDetailLoading => 'Loading recipe...';
|
||||
|
||||
@override
|
||||
String get recipeDetailMakePrivate => 'Make private';
|
||||
|
||||
@override
|
||||
String get recipeDetailMakePublic => 'Make public';
|
||||
|
||||
@override
|
||||
String get recipeDetailShareWithUser => 'Share with user';
|
||||
|
||||
@override
|
||||
String get recipeDetailGoToInventory => 'Go to inventory';
|
||||
|
||||
@override
|
||||
String get recipeDetailShareTitle => 'Share recipe';
|
||||
|
||||
@override
|
||||
String get recipeDetailUsernameLabel => 'Username';
|
||||
|
||||
@override
|
||||
String get recipeDetailUsernameHint => 'e.g. anna';
|
||||
|
||||
@override
|
||||
String get recipeDetailRemoveShare => 'Remove sharing';
|
||||
|
||||
@override
|
||||
String get recipeDetailShareAction => 'Share';
|
||||
|
||||
@override
|
||||
String get recipeDetailDeleteTitle => 'Delete recipe?';
|
||||
|
||||
@override
|
||||
String get recipeDetailNowPublic => 'The recipe is now public.';
|
||||
|
||||
@override
|
||||
String get recipeDetailNowPrivate => 'The recipe is now private.';
|
||||
|
||||
@override
|
||||
String get recipeDetailServings => 'servings';
|
||||
|
||||
@override
|
||||
String get recipeDetailIngredients => 'Ingredients';
|
||||
|
||||
@override
|
||||
String get recipeDetailInstructions => 'Instructions';
|
||||
|
||||
@override
|
||||
String get recipeDetailBackToList => 'Back to recipe list';
|
||||
|
||||
@override
|
||||
String recipeDetailSharingRemoved(String user) {
|
||||
return 'Sharing removed for $user';
|
||||
}
|
||||
|
||||
@override
|
||||
String recipeDetailSharedWith(String user) {
|
||||
return 'Recipe shared with $user';
|
||||
}
|
||||
|
||||
@override
|
||||
String recipeDetailDeleteContent(String title) {
|
||||
return 'Do you want to delete \"$title\"? This action cannot be undone.';
|
||||
}
|
||||
|
||||
@override
|
||||
String get recipeCreateTitle => 'New recipe';
|
||||
|
||||
@override
|
||||
String get recipeCreateReviewIngredients => 'Review ingredients';
|
||||
|
||||
@override
|
||||
String get recipeCreateMarkdownPlaceholder =>
|
||||
'# Recipe name\n\n## Ingredients\n- 500 g ground beef\n- 1 onion\n\n## Instructions\nFry the onion...';
|
||||
|
||||
@override
|
||||
String get recipeCreateMarkdownHint =>
|
||||
'Paste or write a recipe in Markdown format.';
|
||||
|
||||
@override
|
||||
String get recipeCreateNameRequired => 'Recipe name cannot be empty.';
|
||||
|
||||
@override
|
||||
String get recipeCreateSaveAction => 'Save recipe';
|
||||
|
||||
@override
|
||||
String get recipeCreateServingsLabel => 'Number of servings (optional)';
|
||||
|
||||
@override
|
||||
String get recipeCreateIngredientsLabel => 'Ingredients';
|
||||
|
||||
@override
|
||||
String get recipeCreateIngredientsHint =>
|
||||
'Check ingredients to include and select the right product.';
|
||||
|
||||
@override
|
||||
String get recipeCreateNoProductFound =>
|
||||
'No product found — ingredient will be skipped.';
|
||||
|
||||
@override
|
||||
String get recipeEditTitle => 'Edit recipe';
|
||||
|
||||
@override
|
||||
String get recipeEditNameLabel => 'Recipe name';
|
||||
|
||||
@override
|
||||
String get recipeEditNameRequired => 'Enter a recipe name.';
|
||||
|
||||
@override
|
||||
String get recipeEditDescriptionLabel => 'Description (optional)';
|
||||
|
||||
@override
|
||||
String get recipeEditServingsLabel => 'Number of servings (optional)';
|
||||
|
||||
@override
|
||||
String get recipeEditServingsInvalid => 'Enter a whole number.';
|
||||
|
||||
@override
|
||||
String get recipeEditInstructionsLabel => 'Instructions (optional)';
|
||||
|
||||
@override
|
||||
String get recipeEditIngredientsLabel => 'Ingredients';
|
||||
|
||||
@override
|
||||
String get recipeEditIngredientsHint =>
|
||||
'Select product, quantity and unit for each ingredient.';
|
||||
|
||||
@override
|
||||
String get recipeEditNoIngredients => 'No ingredients added yet.';
|
||||
|
||||
@override
|
||||
String get recipeEditIngredientPrefix => 'Ingredient ';
|
||||
|
||||
@override
|
||||
String get recipeEditRemoveIngredient => 'Remove ingredient';
|
||||
|
||||
@override
|
||||
String get recipeEditMinIngredients => 'At least one ingredient is required.';
|
||||
|
||||
@override
|
||||
String get recipeEditSelectProduct => 'Select product for all ingredients.';
|
||||
|
||||
@override
|
||||
String get recipeEditValidQuantity =>
|
||||
'Enter valid quantity for all ingredients.';
|
||||
|
||||
@override
|
||||
String get recipeEditSelectUnit => 'Select unit for all ingredients.';
|
||||
|
||||
@override
|
||||
String get recipeEditSaveChanges => 'Save changes';
|
||||
|
||||
@override
|
||||
String get importTabDescription =>
|
||||
'Upload a PDF or image, or enter a recipe link — the recipe will be imported and opened directly in edit mode.';
|
||||
|
||||
@override
|
||||
String get importFileTabLabel => 'File / PDF';
|
||||
|
||||
@override
|
||||
String get importLinkTabLabel => 'Link';
|
||||
|
||||
@override
|
||||
String get importChooseFileAction => 'Choose file (PDF, PNG, JPG, WEBP, BMP)';
|
||||
|
||||
@override
|
||||
String get importFileAction => 'Import file';
|
||||
|
||||
@override
|
||||
String get importFileProcessing =>
|
||||
'Parsing recipe — this can take up to a minute...';
|
||||
|
||||
@override
|
||||
String get importLinkAction => 'Import from link';
|
||||
|
||||
@override
|
||||
String get importLinkLabel => 'Recipe link';
|
||||
|
||||
@override
|
||||
String get importLinkHint => 'https://example.com/recipe/...';
|
||||
|
||||
@override
|
||||
String get importWriteInstead => 'Write recipe instead';
|
||||
|
||||
@override
|
||||
String get errorDialogTitle => 'Error';
|
||||
|
||||
@override
|
||||
String get errorDialogClose => 'Close';
|
||||
|
||||
@override
|
||||
String get errorDialogCopy => 'Copy';
|
||||
|
||||
@override
|
||||
String get errorDialogCopied => 'Error message copied!';
|
||||
|
||||
@override
|
||||
String get profileMyProfileTab => 'My profile';
|
||||
|
||||
@override
|
||||
String get profileDatabaseTab => 'Database';
|
||||
|
||||
@override
|
||||
String get profileUsersTab => 'Users';
|
||||
|
||||
@override
|
||||
String get profilePendingTab => 'Suggestions';
|
||||
|
||||
@override
|
||||
String get profileAiTab => 'AI';
|
||||
|
||||
@override
|
||||
String get profileUsernameLabel => 'Username';
|
||||
|
||||
@override
|
||||
String get profileEmailLabel => 'E-mail';
|
||||
|
||||
@override
|
||||
String get profileEmailHint => 'Enter an e-mail address';
|
||||
|
||||
@override
|
||||
String get profileEmailInvalid => 'Invalid e-mail address';
|
||||
|
||||
@override
|
||||
String get profileFirstNameLabel => 'First name';
|
||||
|
||||
@override
|
||||
String get profileLastNameLabel => 'Last name';
|
||||
|
||||
@override
|
||||
String get profileSaveAction => 'Save changes';
|
||||
|
||||
@override
|
||||
String get profileSaved => 'Profile saved!';
|
||||
|
||||
@override
|
||||
String get profileInventoryTab => 'Inventory';
|
||||
|
||||
@override
|
||||
String get profilePantryTab => 'Pantry';
|
||||
|
||||
@override
|
||||
String get profileProductsTab => 'Products';
|
||||
|
||||
@override
|
||||
String get profileAddInventoryItem => 'Add inventory item';
|
||||
|
||||
@override
|
||||
String get profileOpenInventory => 'Open inventory';
|
||||
|
||||
@override
|
||||
String get profileInventoryDescription =>
|
||||
'Update and consume items in your inventory.';
|
||||
|
||||
@override
|
||||
String get profileOpenPantry => 'Open pantry';
|
||||
|
||||
@override
|
||||
String get profilePantryDescription =>
|
||||
'Manage items you always expect to have at home.';
|
||||
|
||||
@override
|
||||
String get adminChangeRole => 'Change role';
|
||||
|
||||
@override
|
||||
String get adminGivePremium => 'Give Premium';
|
||||
|
||||
@override
|
||||
String get adminRemovePremium => 'Remove Premium';
|
||||
|
||||
@override
|
||||
String get adminAllowSharing => 'Allow recipe sharing';
|
||||
|
||||
@override
|
||||
String get adminBlockSharing => 'Block recipe sharing';
|
||||
|
||||
@override
|
||||
String get adminResetPassword => 'Reset password';
|
||||
|
||||
@override
|
||||
String get adminTempPasswordTitle => 'Temporary password';
|
||||
|
||||
@override
|
||||
String get adminCopyAction => 'Copy';
|
||||
|
||||
@override
|
||||
String get adminCloseAction => 'Close';
|
||||
|
||||
@override
|
||||
String get adminEmailLabel => 'E-mail';
|
||||
|
||||
@override
|
||||
String get adminEmailInvalid => 'Invalid e-mail address.';
|
||||
|
||||
@override
|
||||
String get adminEmailUpdated => 'E-mail updated.';
|
||||
|
||||
@override
|
||||
String get adminDeleteUser => 'Delete user';
|
||||
|
||||
@override
|
||||
String get adminDeleteUserConfirm =>
|
||||
'Delete permanently? This cannot be undone.';
|
||||
|
||||
@override
|
||||
String get adminConfirmAction => 'Confirm';
|
||||
|
||||
@override
|
||||
String get adminNewUser => 'New user';
|
||||
|
||||
@override
|
||||
String get adminNoUsers => 'No users found.';
|
||||
|
||||
@override
|
||||
String get adminAdminRole => 'Admin';
|
||||
|
||||
@override
|
||||
String get adminUserRole => 'User';
|
||||
|
||||
@override
|
||||
String get adminPremiumLabel => 'Premium';
|
||||
|
||||
@override
|
||||
String get adminFreeLabel => 'Free';
|
||||
|
||||
@override
|
||||
String get adminSharingOn => 'Sharing: On';
|
||||
|
||||
@override
|
||||
String get adminSharingOff => 'Sharing: Off';
|
||||
|
||||
@override
|
||||
String get adminUsersDescription =>
|
||||
'Manage users directly from the profile page.';
|
||||
|
||||
@override
|
||||
String get adminDowngradeToUser => 'Downgrade to user';
|
||||
|
||||
@override
|
||||
String get adminUpgradeToAdmin => 'Upgrade to admin';
|
||||
|
||||
@override
|
||||
String get adminSortNewest => 'Sort: Newest';
|
||||
|
||||
@override
|
||||
String get adminSortOldest => 'Sort: Oldest';
|
||||
|
||||
@override
|
||||
String get adminSortNameAsc => 'Sort: Name A-Z';
|
||||
|
||||
@override
|
||||
String get adminSortNameDesc => 'Sort: Name Z-A';
|
||||
|
||||
@override
|
||||
String get adminSortCategoryAsc => 'Sort: Category A-Z';
|
||||
|
||||
@override
|
||||
String get adminSortCategoryDesc => 'Sort: Category Z-A';
|
||||
|
||||
@override
|
||||
String get adminSearchProduct => 'Search product';
|
||||
|
||||
@override
|
||||
String get adminShowDeleted => 'Show deleted';
|
||||
|
||||
@override
|
||||
String get adminOnlyUncategorized => 'Only uncategorized';
|
||||
|
||||
@override
|
||||
String get adminBulkSetCategory => 'Bulk: set category';
|
||||
|
||||
@override
|
||||
String get adminProductsUpdated => 'Products updated.';
|
||||
|
||||
@override
|
||||
String get adminNoAiSuggestions => 'No AI suggestions to show.';
|
||||
|
||||
@override
|
||||
String get adminMergeProducts => 'Merge products';
|
||||
|
||||
@override
|
||||
String get adminMergeSelectSource =>
|
||||
'Select which product should be moved into the other:';
|
||||
|
||||
@override
|
||||
String get adminMergeSource => 'Source: ';
|
||||
|
||||
@override
|
||||
String get adminMergeTarget => 'Target: ';
|
||||
|
||||
@override
|
||||
String get adminMergeAction => 'Merge';
|
||||
|
||||
@override
|
||||
String get adminDeleteProduct => 'Delete product';
|
||||
|
||||
@override
|
||||
String get adminProductDeleted => 'Product deleted.';
|
||||
|
||||
@override
|
||||
String get adminProductsRestored => 'Selected products restored.';
|
||||
|
||||
@override
|
||||
String get adminProductRestored => 'Product restored.';
|
||||
|
||||
@override
|
||||
String get adminNoPendingProducts => 'No pending product suggestions.';
|
||||
|
||||
@override
|
||||
String get adminCategoryPrefix => 'Category: ';
|
||||
|
||||
@override
|
||||
String get adminSuggestedByPrefix => 'Suggested by: ';
|
||||
|
||||
@override
|
||||
String get adminDatePrefix => 'Date: ';
|
||||
|
||||
@override
|
||||
String get adminApproveAction => 'Approve';
|
||||
|
||||
@override
|
||||
String get adminRejectAction => 'Reject';
|
||||
|
||||
@override
|
||||
String get adminPendingDescription =>
|
||||
'Approve or reject pending product suggestions directly from the profile page.';
|
||||
|
||||
@override
|
||||
String get adminAiDescription =>
|
||||
'Overview of AI features exposed by the backend.';
|
||||
|
||||
@override
|
||||
String get adminPagePrefix => 'Page: ';
|
||||
|
||||
@override
|
||||
String get adminNewProductLabel => 'New product';
|
||||
|
||||
@override
|
||||
String get adminPasswordMustChange =>
|
||||
'The user must change their password at next login.';
|
||||
|
||||
@override
|
||||
String adminChangeRoleConfirm(String username, String role) {
|
||||
return 'Change $username to $role?';
|
||||
}
|
||||
|
||||
@override
|
||||
String adminGivePremiumConfirm(String username) {
|
||||
return 'Give Premium for $username';
|
||||
}
|
||||
|
||||
@override
|
||||
String adminRemovePremiumConfirm(String username) {
|
||||
return 'Remove Premium for $username';
|
||||
}
|
||||
|
||||
@override
|
||||
String adminAllowSharingConfirm(String username) {
|
||||
return 'Allow recipe sharing for $username';
|
||||
}
|
||||
|
||||
@override
|
||||
String adminBlockSharingConfirm(String username) {
|
||||
return 'Block recipe sharing for $username';
|
||||
}
|
||||
|
||||
@override
|
||||
String adminResetPasswordContent(String username) {
|
||||
return 'Generate a temporary password for $username';
|
||||
}
|
||||
|
||||
@override
|
||||
String adminPasswordTitle(String username) {
|
||||
return 'Password for $username';
|
||||
}
|
||||
|
||||
@override
|
||||
String adminChangeEmailTitle(String username) {
|
||||
return 'Change e-mail for $username';
|
||||
}
|
||||
|
||||
@override
|
||||
String adminDeleteProductContent(String name) {
|
||||
return 'Delete $name? The product can be restored later.';
|
||||
}
|
||||
|
||||
@override
|
||||
String adminAiAppliedCount(int count) {
|
||||
return 'AI suggestions applied to $count products.';
|
||||
}
|
||||
|
||||
@override
|
||||
String adminCategoryUpdated(String name) {
|
||||
return 'Category updated for $name';
|
||||
}
|
||||
|
||||
@override
|
||||
String adminProductUpdated(String name) {
|
||||
return 'Product updated for $name';
|
||||
}
|
||||
|
||||
@override
|
||||
String adminPremiumConfirm(String action, String username) {
|
||||
return '$action Premium for $username?';
|
||||
}
|
||||
|
||||
@override
|
||||
String adminSharingConfirm(String action, String username) {
|
||||
return '$action recipe sharing for $username?';
|
||||
}
|
||||
|
||||
@override
|
||||
String adminResetPasswordConfirm(String username) {
|
||||
return 'Generate a temporary password for $username?';
|
||||
}
|
||||
|
||||
@override
|
||||
String adminTempPasswordForUser(String username) {
|
||||
return 'Password for $username:';
|
||||
}
|
||||
|
||||
@override
|
||||
String adminEmailEditTitle(String username) {
|
||||
return 'Change e-mail for $username';
|
||||
}
|
||||
|
||||
@override
|
||||
String get adminEmailAction => 'Change e-mail';
|
||||
|
||||
@override
|
||||
String adminUserCreated(String username) {
|
||||
return 'User $username created.';
|
||||
}
|
||||
|
||||
@override
|
||||
String get adminCreateUserTitle => 'Create user';
|
||||
|
||||
@override
|
||||
String get adminMinChars2 => 'At least 2 characters';
|
||||
|
||||
@override
|
||||
String get adminMinChars8 => 'At least 8 characters';
|
||||
|
||||
@override
|
||||
String get adminPasswordLabel => 'Password';
|
||||
|
||||
@override
|
||||
String get adminRoleLabel => 'Role';
|
||||
|
||||
@override
|
||||
String get adminCreateAction => 'Create';
|
||||
|
||||
@override
|
||||
String get adminMergeProductsTitle => 'Merge products';
|
||||
|
||||
@override
|
||||
String get adminMergeProductsHint =>
|
||||
'Select which product should be moved into the other:';
|
||||
|
||||
@override
|
||||
String get adminMerge2Selected => 'Merge 2 selected';
|
||||
|
||||
@override
|
||||
String get adminProductsMerged => 'Products merged.';
|
||||
|
||||
@override
|
||||
String get adminDeleteProductTitle => 'Delete product';
|
||||
|
||||
@override
|
||||
String adminDeleteProductConfirm(String name) {
|
||||
return 'Delete $name? The product can be restored later.';
|
||||
}
|
||||
|
||||
@override
|
||||
String get adminAiSuggestionsTitle => 'AI suggestions';
|
||||
|
||||
@override
|
||||
String adminAiApplied(int count) {
|
||||
return 'AI suggestions applied to $count products.';
|
||||
}
|
||||
|
||||
@override
|
||||
String adminApplySelected(int count) {
|
||||
return 'Apply ($count)';
|
||||
}
|
||||
|
||||
@override
|
||||
String adminUpdateSelected(int count) {
|
||||
return 'Update selected ($count)';
|
||||
}
|
||||
|
||||
@override
|
||||
String get adminAiCategorizeAll => 'AI-categorize uncategorized';
|
||||
|
||||
@override
|
||||
String adminAiCategorizeSelected(int count) {
|
||||
return 'AI-categorize selected ($count)';
|
||||
}
|
||||
|
||||
@override
|
||||
String adminRestoreSelected(int count) {
|
||||
return 'Restore selected ($count)';
|
||||
}
|
||||
|
||||
@override
|
||||
String get adminShowUncategorized => 'Uncategorized only';
|
||||
|
||||
@override
|
||||
String get adminRemoveCategory => 'Remove category';
|
||||
|
||||
@override
|
||||
String get adminNoProductsFound => 'No products match the filter.';
|
||||
|
||||
@override
|
||||
String get adminInlineCategory => 'Category (inline)';
|
||||
|
||||
@override
|
||||
String get adminNoCategory => 'No category';
|
||||
|
||||
@override
|
||||
String get adminRestoreAction => 'Restore';
|
||||
|
||||
@override
|
||||
String get required => 'Required';
|
||||
|
||||
@override
|
||||
String get logoutAction => 'Log out';
|
||||
|
||||
@override
|
||||
String get profileDatabaseDescription =>
|
||||
'The database tab covers the same main areas as in recipe-frontend.';
|
||||
}
|
||||
|
||||
@@ -169,4 +169,855 @@ class AppLocalizationsSv extends AppLocalizations {
|
||||
|
||||
@override
|
||||
String get unexpectedError => 'Ett oväntat fel uppstod.';
|
||||
|
||||
@override
|
||||
String get cancelAction => 'Avbryt';
|
||||
|
||||
@override
|
||||
String get saveAction => 'Spara';
|
||||
|
||||
@override
|
||||
String get deleteAction => 'Ta bort';
|
||||
|
||||
@override
|
||||
String get addAction => 'Lägg till';
|
||||
|
||||
@override
|
||||
String get editTooltip => 'Redigera';
|
||||
|
||||
@override
|
||||
String get deleteTooltip => 'Ta bort';
|
||||
|
||||
@override
|
||||
String get loadingLabel => 'Laddar...';
|
||||
|
||||
@override
|
||||
String get cannotBeUndone => 'Åtgärden kan inte ångras.';
|
||||
|
||||
@override
|
||||
String get yesLabel => 'Ja';
|
||||
|
||||
@override
|
||||
String get noLabel => 'Nej';
|
||||
|
||||
@override
|
||||
String get commentLabel => 'Kommentar';
|
||||
|
||||
@override
|
||||
String get commentOptionalLabel => 'Kommentar (valfri)';
|
||||
|
||||
@override
|
||||
String get openedLabel => 'Öppnad';
|
||||
|
||||
@override
|
||||
String get quantityLabel => 'Mängd *';
|
||||
|
||||
@override
|
||||
String get quantityHint => 'Ange mängd';
|
||||
|
||||
@override
|
||||
String get invalidNumber => 'Ogiltigt tal';
|
||||
|
||||
@override
|
||||
String get unitLabel => 'Enhet *';
|
||||
|
||||
@override
|
||||
String get selectDateLabel => 'Välj datum';
|
||||
|
||||
@override
|
||||
String get locationOptionalLabel => 'Plats (valfri)';
|
||||
|
||||
@override
|
||||
String get locationLabel => 'Plats';
|
||||
|
||||
@override
|
||||
String get brandOptionalLabel => 'Märke (valfritt)';
|
||||
|
||||
@override
|
||||
String get brandLabel => 'Märke';
|
||||
|
||||
@override
|
||||
String get enterPositiveNumber => 'Ange ett positivt tal';
|
||||
|
||||
@override
|
||||
String get inventoryTitle => 'Inventarie';
|
||||
|
||||
@override
|
||||
String get inventoryFilterAndSort => 'Filter och sortering';
|
||||
|
||||
@override
|
||||
String get inventorySortLatest => 'Senast tillagda';
|
||||
|
||||
@override
|
||||
String get inventorySortNameAsc => 'Namn A-Ö';
|
||||
|
||||
@override
|
||||
String get inventorySortBestBeforeAsc => 'Bäst före stigande';
|
||||
|
||||
@override
|
||||
String get inventorySortBestBeforeDesc => 'Bäst före fallande';
|
||||
|
||||
@override
|
||||
String get inventorySortLabel => 'Sortering';
|
||||
|
||||
@override
|
||||
String get inventoryAllFilter => 'Alla';
|
||||
|
||||
@override
|
||||
String get inventoryEmpty => 'Inventariet är tomt.';
|
||||
|
||||
@override
|
||||
String get inventoryLoading => 'Laddar inventarie...';
|
||||
|
||||
@override
|
||||
String get inventoryCreateTitle => 'Lägg till inventariepost';
|
||||
|
||||
@override
|
||||
String get inventoryEditTitle => 'Redigera inventariepost';
|
||||
|
||||
@override
|
||||
String get inventorySelectProduct => 'Välj en produkt ur listan.';
|
||||
|
||||
@override
|
||||
String get inventoryDeleteTitle => 'Ta bort inventariepost?';
|
||||
|
||||
@override
|
||||
String get inventoryProductLabel => 'Produkt';
|
||||
|
||||
@override
|
||||
String get inventoryQuantityDisplayLabel => 'Mängd';
|
||||
|
||||
@override
|
||||
String get inventoryLocationDisplayLabel => 'Plats';
|
||||
|
||||
@override
|
||||
String get inventoryBrandDisplayLabel => 'Märke';
|
||||
|
||||
@override
|
||||
String get inventoryPurchaseDateLabel => 'Inköpsdatum';
|
||||
|
||||
@override
|
||||
String get inventoryBestBeforeLabel => 'Bäst före';
|
||||
|
||||
@override
|
||||
String get inventoryPurchaseDatePrefix => 'Inköp: ';
|
||||
|
||||
@override
|
||||
String get inventoryBestBeforeDatePrefix => 'Bäst före: ';
|
||||
|
||||
@override
|
||||
String get inventoryConsumeAction => 'Konsumera';
|
||||
|
||||
@override
|
||||
String get inventoryHistoryAction => 'Konsumtionshistorik';
|
||||
|
||||
@override
|
||||
String get inventoryConsumeAmountLabel => 'Mängd att konsumera *';
|
||||
|
||||
@override
|
||||
String get inventoryHistoryLoading => 'Laddar historik...';
|
||||
|
||||
@override
|
||||
String get inventoryHistoryEmpty => 'Ingen konsumtionshistorik finns.';
|
||||
|
||||
@override
|
||||
String get inventoryRecipesAction => 'Recept';
|
||||
|
||||
@override
|
||||
String inventoryHistoryTitle(String name) {
|
||||
return 'Historik: $name';
|
||||
}
|
||||
|
||||
@override
|
||||
String inventoryConsumeNameTitle(String name) {
|
||||
return 'Konsumera: $name';
|
||||
}
|
||||
|
||||
@override
|
||||
String inventoryAvailableLabel(String quantity, String unit) {
|
||||
return 'Tillgängligt: $quantity $unit';
|
||||
}
|
||||
|
||||
@override
|
||||
String get pantryDescription =>
|
||||
'Produkter du alltid räknar med att ha hemma.';
|
||||
|
||||
@override
|
||||
String get pantryLoading => 'Laddar baslager...';
|
||||
|
||||
@override
|
||||
String get pantryNoLocation => 'Ingen plats vald';
|
||||
|
||||
@override
|
||||
String get pantryInvalidQuantity => 'Ange en giltig mängd över 0.';
|
||||
|
||||
@override
|
||||
String get pantryRemoveTitle => 'Ta bort från baslager?';
|
||||
|
||||
@override
|
||||
String get pantryOtherCategory => 'Övrigt';
|
||||
|
||||
@override
|
||||
String get pantryGoToRecipesTooltip => 'Gå till recept';
|
||||
|
||||
@override
|
||||
String pantryAddToInventoryTitle(String name) {
|
||||
return 'Lägg \"$name\" i inventarie';
|
||||
}
|
||||
|
||||
@override
|
||||
String pantryItemAdded(String name) {
|
||||
return '$name tillagd i inventarie.';
|
||||
}
|
||||
|
||||
@override
|
||||
String pantryRemoveContent(String name) {
|
||||
return 'Vill du ta bort \"$name\"?';
|
||||
}
|
||||
|
||||
@override
|
||||
String get recipesLoading => 'Laddar recept...';
|
||||
|
||||
@override
|
||||
String get recipesEmpty => 'Inga recept hittades';
|
||||
|
||||
@override
|
||||
String get recipesEmptyDescription =>
|
||||
'Lägg till ett recept för att komma igång.';
|
||||
|
||||
@override
|
||||
String get recipesNewTooltip => 'Nytt recept';
|
||||
|
||||
@override
|
||||
String get recipeDetailLoading => 'Laddar recept...';
|
||||
|
||||
@override
|
||||
String get recipeDetailMakePrivate => 'Gör privat';
|
||||
|
||||
@override
|
||||
String get recipeDetailMakePublic => 'Gör publik';
|
||||
|
||||
@override
|
||||
String get recipeDetailShareWithUser => 'Dela med användare';
|
||||
|
||||
@override
|
||||
String get recipeDetailGoToInventory => 'Gå till inventarie';
|
||||
|
||||
@override
|
||||
String get recipeDetailShareTitle => 'Dela recept';
|
||||
|
||||
@override
|
||||
String get recipeDetailUsernameLabel => 'Användarnamn';
|
||||
|
||||
@override
|
||||
String get recipeDetailUsernameHint => 't.ex. anna';
|
||||
|
||||
@override
|
||||
String get recipeDetailRemoveShare => 'Ta bort delning';
|
||||
|
||||
@override
|
||||
String get recipeDetailShareAction => 'Dela';
|
||||
|
||||
@override
|
||||
String get recipeDetailDeleteTitle => 'Ta bort recept?';
|
||||
|
||||
@override
|
||||
String get recipeDetailNowPublic => 'Receptet är nu publikt.';
|
||||
|
||||
@override
|
||||
String get recipeDetailNowPrivate => 'Receptet är nu privat.';
|
||||
|
||||
@override
|
||||
String get recipeDetailServings => 'portioner';
|
||||
|
||||
@override
|
||||
String get recipeDetailIngredients => 'Ingredienser';
|
||||
|
||||
@override
|
||||
String get recipeDetailInstructions => 'Tillvägagångssätt';
|
||||
|
||||
@override
|
||||
String get recipeDetailBackToList => 'Tillbaka till receptlistan';
|
||||
|
||||
@override
|
||||
String recipeDetailSharingRemoved(String user) {
|
||||
return 'Delning borttagen för $user';
|
||||
}
|
||||
|
||||
@override
|
||||
String recipeDetailSharedWith(String user) {
|
||||
return 'Receptet delades med $user';
|
||||
}
|
||||
|
||||
@override
|
||||
String recipeDetailDeleteContent(String title) {
|
||||
return 'Vill du ta bort \"$title\"? Åtgärden kan inte ångras.';
|
||||
}
|
||||
|
||||
@override
|
||||
String get recipeCreateTitle => 'Nytt recept';
|
||||
|
||||
@override
|
||||
String get recipeCreateReviewIngredients => 'Granska ingredienser';
|
||||
|
||||
@override
|
||||
String get recipeCreateMarkdownPlaceholder =>
|
||||
'# Receptnamn\n\n## Ingredienser\n- 500 g köttfärs\n- 1 st lök\n\n## Tillvägagångssätt\nStek löken...';
|
||||
|
||||
@override
|
||||
String get recipeCreateMarkdownHint =>
|
||||
'Klistra in eller skriv ett recept i Markdown-format.';
|
||||
|
||||
@override
|
||||
String get recipeCreateNameRequired => 'Receptnamnet får inte vara tomt.';
|
||||
|
||||
@override
|
||||
String get recipeCreateSaveAction => 'Spara recept';
|
||||
|
||||
@override
|
||||
String get recipeCreateServingsLabel => 'Antal portioner (valfritt)';
|
||||
|
||||
@override
|
||||
String get recipeCreateIngredientsLabel => 'Ingredienser';
|
||||
|
||||
@override
|
||||
String get recipeCreateIngredientsHint =>
|
||||
'Bocka av ingredienser att inkludera och välj rätt produkt.';
|
||||
|
||||
@override
|
||||
String get recipeCreateNoProductFound =>
|
||||
'Ingen produkt hittades — ingrediensen hoppas över.';
|
||||
|
||||
@override
|
||||
String get recipeEditTitle => 'Redigera recept';
|
||||
|
||||
@override
|
||||
String get recipeEditNameLabel => 'Receptnamn';
|
||||
|
||||
@override
|
||||
String get recipeEditNameRequired => 'Ange ett receptnamn.';
|
||||
|
||||
@override
|
||||
String get recipeEditDescriptionLabel => 'Beskrivning (valfritt)';
|
||||
|
||||
@override
|
||||
String get recipeEditServingsLabel => 'Antal portioner (valfritt)';
|
||||
|
||||
@override
|
||||
String get recipeEditServingsInvalid => 'Ange ett heltal.';
|
||||
|
||||
@override
|
||||
String get recipeEditInstructionsLabel => 'Tillvägagångssätt (valfritt)';
|
||||
|
||||
@override
|
||||
String get recipeEditIngredientsLabel => 'Ingredienser';
|
||||
|
||||
@override
|
||||
String get recipeEditIngredientsHint =>
|
||||
'Välj produkt, mängd och enhet för varje ingrediens.';
|
||||
|
||||
@override
|
||||
String get recipeEditNoIngredients => 'Inga ingredienser tillagda än.';
|
||||
|
||||
@override
|
||||
String get recipeEditIngredientPrefix => 'Ingrediens ';
|
||||
|
||||
@override
|
||||
String get recipeEditRemoveIngredient => 'Ta bort ingrediens';
|
||||
|
||||
@override
|
||||
String get recipeEditMinIngredients => 'Minst en ingrediens krävs.';
|
||||
|
||||
@override
|
||||
String get recipeEditSelectProduct => 'Välj produkt för alla ingredienser.';
|
||||
|
||||
@override
|
||||
String get recipeEditValidQuantity =>
|
||||
'Ange giltig mängd för alla ingredienser.';
|
||||
|
||||
@override
|
||||
String get recipeEditSelectUnit => 'Välj enhet för alla ingredienser.';
|
||||
|
||||
@override
|
||||
String get recipeEditSaveChanges => 'Spara ändringar';
|
||||
|
||||
@override
|
||||
String get importTabDescription =>
|
||||
'Ladda upp en PDF eller bild, eller ange en receptlänk — receptet importeras och öppnas direkt i redigeringsläget.';
|
||||
|
||||
@override
|
||||
String get importFileTabLabel => 'Fil / PDF';
|
||||
|
||||
@override
|
||||
String get importLinkTabLabel => 'Länk';
|
||||
|
||||
@override
|
||||
String get importChooseFileAction => 'Välj fil (PDF, PNG, JPG, WEBP, BMP)';
|
||||
|
||||
@override
|
||||
String get importFileAction => 'Importera fil';
|
||||
|
||||
@override
|
||||
String get importFileProcessing =>
|
||||
'Tolkar receptet — detta kan ta upp till en minut...';
|
||||
|
||||
@override
|
||||
String get importLinkAction => 'Importera från länk';
|
||||
|
||||
@override
|
||||
String get importLinkLabel => 'Receptlänk';
|
||||
|
||||
@override
|
||||
String get importLinkHint => 'https://exempel.se/recept/...';
|
||||
|
||||
@override
|
||||
String get importWriteInstead => 'Skriv in recept istället';
|
||||
|
||||
@override
|
||||
String get errorDialogTitle => 'Fel';
|
||||
|
||||
@override
|
||||
String get errorDialogClose => 'Stäng';
|
||||
|
||||
@override
|
||||
String get errorDialogCopy => 'Kopiera';
|
||||
|
||||
@override
|
||||
String get errorDialogCopied => 'Felmeddelande kopierat!';
|
||||
|
||||
@override
|
||||
String get profileMyProfileTab => 'Min profil';
|
||||
|
||||
@override
|
||||
String get profileDatabaseTab => 'Databas';
|
||||
|
||||
@override
|
||||
String get profileUsersTab => 'Användare';
|
||||
|
||||
@override
|
||||
String get profilePendingTab => 'Förslag';
|
||||
|
||||
@override
|
||||
String get profileAiTab => 'AI';
|
||||
|
||||
@override
|
||||
String get profileUsernameLabel => 'Användarnamn';
|
||||
|
||||
@override
|
||||
String get profileEmailLabel => 'E-post';
|
||||
|
||||
@override
|
||||
String get profileEmailHint => 'Ange en e-postadress';
|
||||
|
||||
@override
|
||||
String get profileEmailInvalid => 'Ogiltig e-postadress';
|
||||
|
||||
@override
|
||||
String get profileFirstNameLabel => 'Förnamn';
|
||||
|
||||
@override
|
||||
String get profileLastNameLabel => 'Efternamn';
|
||||
|
||||
@override
|
||||
String get profileSaveAction => 'Spara ändringar';
|
||||
|
||||
@override
|
||||
String get profileSaved => 'Profil sparad!';
|
||||
|
||||
@override
|
||||
String get profileInventoryTab => 'Inventarie';
|
||||
|
||||
@override
|
||||
String get profilePantryTab => 'Baslager';
|
||||
|
||||
@override
|
||||
String get profileProductsTab => 'Produkter';
|
||||
|
||||
@override
|
||||
String get profileAddInventoryItem => 'Lägg till inventariepost';
|
||||
|
||||
@override
|
||||
String get profileOpenInventory => 'Öppna inventarie';
|
||||
|
||||
@override
|
||||
String get profileInventoryDescription =>
|
||||
'Uppdatera och konsumera varor i ditt inventarie.';
|
||||
|
||||
@override
|
||||
String get profileOpenPantry => 'Öppna baslager';
|
||||
|
||||
@override
|
||||
String get profilePantryDescription =>
|
||||
'Hantera varor du alltid räknar med att ha hemma.';
|
||||
|
||||
@override
|
||||
String get adminChangeRole => 'Ändra roll';
|
||||
|
||||
@override
|
||||
String get adminGivePremium => 'Ge Premium';
|
||||
|
||||
@override
|
||||
String get adminRemovePremium => 'Ta bort Premium';
|
||||
|
||||
@override
|
||||
String get adminAllowSharing => 'Tillåt receptdelning';
|
||||
|
||||
@override
|
||||
String get adminBlockSharing => 'Blockera receptdelning';
|
||||
|
||||
@override
|
||||
String get adminResetPassword => 'Återställ lösenord';
|
||||
|
||||
@override
|
||||
String get adminTempPasswordTitle => 'Tillfälligt lösenord';
|
||||
|
||||
@override
|
||||
String get adminCopyAction => 'Kopiera';
|
||||
|
||||
@override
|
||||
String get adminCloseAction => 'Stäng';
|
||||
|
||||
@override
|
||||
String get adminEmailLabel => 'E-post';
|
||||
|
||||
@override
|
||||
String get adminEmailInvalid => 'Ogiltig e-postadress.';
|
||||
|
||||
@override
|
||||
String get adminEmailUpdated => 'E-post uppdaterad.';
|
||||
|
||||
@override
|
||||
String get adminDeleteUser => 'Ta bort användare';
|
||||
|
||||
@override
|
||||
String get adminDeleteUserConfirm =>
|
||||
'Ta bort permanent? Detta går inte att ångra.';
|
||||
|
||||
@override
|
||||
String get adminConfirmAction => 'Bekräfta';
|
||||
|
||||
@override
|
||||
String get adminNewUser => 'Ny användare';
|
||||
|
||||
@override
|
||||
String get adminNoUsers => 'Inga användare hittades.';
|
||||
|
||||
@override
|
||||
String get adminAdminRole => 'Admin';
|
||||
|
||||
@override
|
||||
String get adminUserRole => 'User';
|
||||
|
||||
@override
|
||||
String get adminPremiumLabel => 'Premium';
|
||||
|
||||
@override
|
||||
String get adminFreeLabel => 'Free';
|
||||
|
||||
@override
|
||||
String get adminSharingOn => 'Delning: På';
|
||||
|
||||
@override
|
||||
String get adminSharingOff => 'Delning: Av';
|
||||
|
||||
@override
|
||||
String get adminUsersDescription =>
|
||||
'Hantera användare direkt från profilsidan.';
|
||||
|
||||
@override
|
||||
String get adminDowngradeToUser => 'Nedgradera till user';
|
||||
|
||||
@override
|
||||
String get adminUpgradeToAdmin => 'Uppgradera till admin';
|
||||
|
||||
@override
|
||||
String get adminSortNewest => 'Sortera: Nyast';
|
||||
|
||||
@override
|
||||
String get adminSortOldest => 'Sortera: Äldst';
|
||||
|
||||
@override
|
||||
String get adminSortNameAsc => 'Sortera: Namn A-Ö';
|
||||
|
||||
@override
|
||||
String get adminSortNameDesc => 'Sortera: Namn Ö-A';
|
||||
|
||||
@override
|
||||
String get adminSortCategoryAsc => 'Sortera: Kategori A-Ö';
|
||||
|
||||
@override
|
||||
String get adminSortCategoryDesc => 'Sortera: Kategori Ö-A';
|
||||
|
||||
@override
|
||||
String get adminSearchProduct => 'Sök produkt';
|
||||
|
||||
@override
|
||||
String get adminShowDeleted => 'Visa raderade';
|
||||
|
||||
@override
|
||||
String get adminOnlyUncategorized => 'Endast okategoriserade';
|
||||
|
||||
@override
|
||||
String get adminBulkSetCategory => 'Bulk: sätt kategori';
|
||||
|
||||
@override
|
||||
String get adminProductsUpdated => 'Produkter uppdaterade.';
|
||||
|
||||
@override
|
||||
String get adminNoAiSuggestions => 'Inga AI-förslag att visa.';
|
||||
|
||||
@override
|
||||
String get adminMergeProducts => 'Slå ihop produkter';
|
||||
|
||||
@override
|
||||
String get adminMergeSelectSource =>
|
||||
'Välj vilken produkt som ska flyttas in i den andra:';
|
||||
|
||||
@override
|
||||
String get adminMergeSource => 'Källa: ';
|
||||
|
||||
@override
|
||||
String get adminMergeTarget => 'Mål: ';
|
||||
|
||||
@override
|
||||
String get adminMergeAction => 'Slå ihop';
|
||||
|
||||
@override
|
||||
String get adminDeleteProduct => 'Ta bort produkt';
|
||||
|
||||
@override
|
||||
String get adminProductDeleted => 'Produkt borttagen.';
|
||||
|
||||
@override
|
||||
String get adminProductsRestored => 'Valda produkter återställda.';
|
||||
|
||||
@override
|
||||
String get adminProductRestored => 'Produkt återställd.';
|
||||
|
||||
@override
|
||||
String get adminNoPendingProducts => 'Inga väntande produktförslag.';
|
||||
|
||||
@override
|
||||
String get adminCategoryPrefix => 'Kategori: ';
|
||||
|
||||
@override
|
||||
String get adminSuggestedByPrefix => 'Föreslagen av: ';
|
||||
|
||||
@override
|
||||
String get adminDatePrefix => 'Datum: ';
|
||||
|
||||
@override
|
||||
String get adminApproveAction => 'Godkänn';
|
||||
|
||||
@override
|
||||
String get adminRejectAction => 'Avvisa';
|
||||
|
||||
@override
|
||||
String get adminPendingDescription =>
|
||||
'Godkänn eller avvisa väntande produktförslag direkt från profilsidan.';
|
||||
|
||||
@override
|
||||
String get adminAiDescription =>
|
||||
'Översikt över AI-funktioner som backend exponerar.';
|
||||
|
||||
@override
|
||||
String get adminPagePrefix => 'Sida: ';
|
||||
|
||||
@override
|
||||
String get adminNewProductLabel => 'Ny produkt';
|
||||
|
||||
@override
|
||||
String get adminPasswordMustChange =>
|
||||
'Användaren måste byta lösenord vid nästa inloggning.';
|
||||
|
||||
@override
|
||||
String adminChangeRoleConfirm(String username, String role) {
|
||||
return 'Ändra $username till $role?';
|
||||
}
|
||||
|
||||
@override
|
||||
String adminGivePremiumConfirm(String username) {
|
||||
return 'Ge Premium för $username';
|
||||
}
|
||||
|
||||
@override
|
||||
String adminRemovePremiumConfirm(String username) {
|
||||
return 'Ta bort Premium för $username';
|
||||
}
|
||||
|
||||
@override
|
||||
String adminAllowSharingConfirm(String username) {
|
||||
return 'Tillåt receptdelning för $username';
|
||||
}
|
||||
|
||||
@override
|
||||
String adminBlockSharingConfirm(String username) {
|
||||
return 'Blockera receptdelning för $username';
|
||||
}
|
||||
|
||||
@override
|
||||
String adminResetPasswordContent(String username) {
|
||||
return 'Generera ett tillfälligt lösenord för $username';
|
||||
}
|
||||
|
||||
@override
|
||||
String adminPasswordTitle(String username) {
|
||||
return 'Lösenord för $username';
|
||||
}
|
||||
|
||||
@override
|
||||
String adminChangeEmailTitle(String username) {
|
||||
return 'Ändra e-post för $username';
|
||||
}
|
||||
|
||||
@override
|
||||
String adminDeleteProductContent(String name) {
|
||||
return 'Ta bort $name? Produkten kan återställas senare.';
|
||||
}
|
||||
|
||||
@override
|
||||
String adminAiAppliedCount(int count) {
|
||||
return 'AI-förslag tillämpade på $count produkter.';
|
||||
}
|
||||
|
||||
@override
|
||||
String adminCategoryUpdated(String name) {
|
||||
return 'Kategori uppdaterad för $name';
|
||||
}
|
||||
|
||||
@override
|
||||
String adminProductUpdated(String name) {
|
||||
return 'Produkt uppdaterad för $name';
|
||||
}
|
||||
|
||||
@override
|
||||
String adminPremiumConfirm(String action, String username) {
|
||||
return '$action Premium för $username?';
|
||||
}
|
||||
|
||||
@override
|
||||
String adminSharingConfirm(String action, String username) {
|
||||
return '$action receptdelning för $username?';
|
||||
}
|
||||
|
||||
@override
|
||||
String adminResetPasswordConfirm(String username) {
|
||||
return 'Generera ett tillfälligt lösenord för $username?';
|
||||
}
|
||||
|
||||
@override
|
||||
String adminTempPasswordForUser(String username) {
|
||||
return 'Lösenord för $username:';
|
||||
}
|
||||
|
||||
@override
|
||||
String adminEmailEditTitle(String username) {
|
||||
return 'Ändra e-post för $username';
|
||||
}
|
||||
|
||||
@override
|
||||
String get adminEmailAction => 'Ändra e-post';
|
||||
|
||||
@override
|
||||
String adminUserCreated(String username) {
|
||||
return 'Användare $username skapad.';
|
||||
}
|
||||
|
||||
@override
|
||||
String get adminCreateUserTitle => 'Skapa användare';
|
||||
|
||||
@override
|
||||
String get adminMinChars2 => 'Minst 2 tecken';
|
||||
|
||||
@override
|
||||
String get adminMinChars8 => 'Minst 8 tecken';
|
||||
|
||||
@override
|
||||
String get adminPasswordLabel => 'Lösenord';
|
||||
|
||||
@override
|
||||
String get adminRoleLabel => 'Roll';
|
||||
|
||||
@override
|
||||
String get adminCreateAction => 'Skapa';
|
||||
|
||||
@override
|
||||
String get adminMergeProductsTitle => 'Slå ihop produkter';
|
||||
|
||||
@override
|
||||
String get adminMergeProductsHint =>
|
||||
'Välj vilken produkt som ska flyttas in i den andra:';
|
||||
|
||||
@override
|
||||
String get adminMerge2Selected => 'Slå ihop 2 valda';
|
||||
|
||||
@override
|
||||
String get adminProductsMerged => 'Produkter sammanslagna.';
|
||||
|
||||
@override
|
||||
String get adminDeleteProductTitle => 'Ta bort produkt';
|
||||
|
||||
@override
|
||||
String adminDeleteProductConfirm(String name) {
|
||||
return 'Ta bort $name? Produkten kan återställas senare.';
|
||||
}
|
||||
|
||||
@override
|
||||
String get adminAiSuggestionsTitle => 'AI-förslag';
|
||||
|
||||
@override
|
||||
String adminAiApplied(int count) {
|
||||
return 'AI-förslag tillämpade på $count produkter.';
|
||||
}
|
||||
|
||||
@override
|
||||
String adminApplySelected(int count) {
|
||||
return 'Tillämpa ($count)';
|
||||
}
|
||||
|
||||
@override
|
||||
String adminUpdateSelected(int count) {
|
||||
return 'Uppdatera valda ($count)';
|
||||
}
|
||||
|
||||
@override
|
||||
String get adminAiCategorizeAll => 'AI-kategorisera okategoriserade';
|
||||
|
||||
@override
|
||||
String adminAiCategorizeSelected(int count) {
|
||||
return 'AI-kategorisera valda ($count)';
|
||||
}
|
||||
|
||||
@override
|
||||
String adminRestoreSelected(int count) {
|
||||
return 'Återställ valda ($count)';
|
||||
}
|
||||
|
||||
@override
|
||||
String get adminShowUncategorized => 'Endast okategoriserade';
|
||||
|
||||
@override
|
||||
String get adminRemoveCategory => 'Ta bort kategori';
|
||||
|
||||
@override
|
||||
String get adminNoProductsFound => 'Inga produkter matchar filtret.';
|
||||
|
||||
@override
|
||||
String get adminInlineCategory => 'Kategori (inline)';
|
||||
|
||||
@override
|
||||
String get adminNoCategory => 'Ingen kategori';
|
||||
|
||||
@override
|
||||
String get adminRestoreAction => 'Återställ';
|
||||
|
||||
@override
|
||||
String get required => 'Obligatoriskt';
|
||||
|
||||
@override
|
||||
String get logoutAction => 'Logga ut';
|
||||
|
||||
@override
|
||||
String get profileDatabaseDescription =>
|
||||
'Databasfliken samlar samma huvudområden som i recipe-frontend.';
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user