{
  "@@locale": "en",
  "appTitle": "Recipe App",
  "retryAction": "Retry",
  "mealPlanTitle": "Meal plan",
  "mealPlanLoading": "Loading meal plan...",
  "mealPlanWeekPrevious": "Previous week",
  "mealPlanWeekNext": "Next week",
  "mealPlanWeekCurrent": "Current week",
  "mealPlanDayNoRecipe": "Nothing planned",
  "mealPlanSelectRecipe": "Choose recipe",
  "mealPlanViewRecipe": "View recipe",
  "mealPlanServingsLabel": "Servings",
  "mealPlanResetServings": "Reset",
  "mealPlanSaving": "Saving...",
  "mealPlanPlannedRecipes": "{count, plural, one {# recipe planned} other {# recipes planned}}",
  "@mealPlanPlannedRecipes": {
    "placeholders": {
      "count": {
        "type": "int"
      }
    }
  },
  "mealPlanShoppingTitle": "Shopping list",
  "mealPlanPickRecipeHint": "Choose recipes above to see the combined ingredient list.",
  "mealPlanNoShoppingItems": "No ingredients to show for this week.",
  "mealPlanNoRecipesTitle": "There are no recipes to plan yet.",
  "mealPlanNoRecipesDescription": "Create at least one recipe first, then add it to the meal plan.",
  "mealPlanMissingCount": "{count, plural, one {# missing} other {# missing}}",
  "@mealPlanMissingCount": {
    "placeholders": {
      "count": {
        "type": "int"
      }
    }
  },
  "mealPlanPartialCount": "{count, plural, one {# partially at home} other {# partially at home}}",
  "@mealPlanPartialCount": {
    "placeholders": {
      "count": {
        "type": "int"
      }
    }
  },
  "mealPlanEnoughCount": "{count, plural, one {# at home} other {# at home}}",
  "@mealPlanEnoughCount": {
    "placeholders": {
      "count": {
        "type": "int"
      }
    }
  },
  "mealPlanPantryCount": "{count, plural, one {# pantry staple} other {# pantry staples}}",
  "@mealPlanPantryCount": {
    "placeholders": {
      "count": {
        "type": "int"
      }
    }
  },
  "mealPlanAllAtHome": "You already have everything at home.",
  "mealPlanStatusMissing": "Missing",
  "mealPlanStatusPartial": "Partially at home",
  "mealPlanStatusEnough": "At home",
  "mealPlanStatusPantry": "Pantry staple",
  "loginTitle": "Sign in",
  "usernameLabel": "Username",
  "usernameRequired": "Enter your username.",
  "passwordLabel": "Password",
  "passwordRequired": "Enter your password.",
  "loginAction": "Sign in",
  "sessionExpiredError": "Your session has expired. Sign in again.",
  "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.",

  "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: ",
  "profileDeleteConfirmTitle": "Confirm deletion",
  "profileDeleteConfirmMessage": "Are you sure you want to delete your profile? All your data will be permanently deleted.",
  "profileDeleteAction": "Delete my profile",
  "profileDeletedMessage": "Your profile has been deleted.",
  "profileDatabaseDescription": "The database tab covers your main areas for inventory and products."
}
