Files
recipe-app/flutter/lib/l10n/app_en.arb
T
Nils-Johan Gynther 30d27d6b8a
Test Suite / backend-pr-quick (push) Has been skipped
Test Suite / quick-import-pr-quick (push) Has been skipped
Test Suite / backend-full (push) Successful in 4m10s
Test Suite / flutter-quality (push) Failing after 1m19s
feat(localization): update English and Swedish translations for admin features and profile actions
2026-05-21 22:46:33 +02:00

530 lines
20 KiB
Plaintext

{
"@@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."
}