435 lines
16 KiB
JSON
435 lines
16 KiB
JSON
{
|
||
"app": {
|
||
"name": "DailyMeals"
|
||
},
|
||
"language": {
|
||
"label": "Language",
|
||
"en": "English",
|
||
"pl": "Polish"
|
||
},
|
||
"layout": {
|
||
"label": "Layout",
|
||
"sidebar": "Sidebar",
|
||
"topnav": "Top navigation",
|
||
"compact": "Compact sidebar",
|
||
"wide": "Wide sidebar",
|
||
"wideTagline": "Plan your meals with ease"
|
||
},
|
||
"appearance": {
|
||
"label": "Appearance",
|
||
"forest": "Forest Classic",
|
||
"forestDesc": "Green palette, outline icons",
|
||
"ocean": "Ocean Fresh",
|
||
"oceanDesc": "Blue palette, outline icons",
|
||
"sunset": "Sunset Kitchen",
|
||
"sunsetDesc": "Warm amber palette, emoji icons",
|
||
"berry": "Berry Modern",
|
||
"berryDesc": "Violet palette, bold icons"
|
||
},
|
||
"nav": {
|
||
"dashboard": "Dashboard",
|
||
"breakfast": "Breakfast",
|
||
"secondBreakfast": "Second Breakfast",
|
||
"lunch": "Lunch",
|
||
"dinner": "Dinner",
|
||
"allMeals": "All Meals",
|
||
"manageMeals": "Manage Meals",
|
||
"mealPlanner": "Meal Planner",
|
||
"shoppingList": "Shopping List",
|
||
"dietTracker": "My Diet",
|
||
"ingredientCatalog": "Ingredients",
|
||
"dietGenerator": "Diet Generator",
|
||
"recipeGenerator": "Recipe Generator",
|
||
"logout": "Logout",
|
||
"user": "User",
|
||
"toggleNav": "Toggle navigation",
|
||
"toggleTheme": "Toggle theme",
|
||
"lightMode": "Switch to light mode",
|
||
"darkMode": "Switch to dark mode"
|
||
},
|
||
"categories": {
|
||
"breakfast": "Breakfast",
|
||
"secondBreakfast": "Second Breakfast",
|
||
"lunch": "Lunch",
|
||
"dinner": "Dinner",
|
||
"unknown": "Unknown"
|
||
},
|
||
"common": {
|
||
"loading": "Loading...",
|
||
"tryAgain": "Try again",
|
||
"back": "Back",
|
||
"add": "Add",
|
||
"category": "Category",
|
||
"all": "All",
|
||
"search": "Search",
|
||
"save": "Save",
|
||
"cancel": "Cancel",
|
||
"edit": "Edit",
|
||
"delete": "Delete",
|
||
"optional": "optional",
|
||
"recipeCount_one": "{{count}} recipe",
|
||
"recipeCount_other": "{{count}} recipes",
|
||
"selectedCount_one": "{{count}} selected",
|
||
"selectedCount_other": "{{count}} selected"
|
||
},
|
||
"auth": {
|
||
"signInSubtitle": "Sign in to plan your meals",
|
||
"email": "Email",
|
||
"password": "Password",
|
||
"emailPlaceholder": "you@example.com",
|
||
"signIn": "Sign in",
|
||
"signingIn": "Signing in...",
|
||
"noAccount": "Don't have an account?",
|
||
"createOne": "Create one",
|
||
"createAccountTitle": "Create account",
|
||
"createAccountSubtitle": "Join DailyMeals to browse and plan meals",
|
||
"displayName": "Display name",
|
||
"displayNamePlaceholder": "Piotr",
|
||
"confirmPassword": "Confirm password",
|
||
"passwordHint": "At least 8 characters with uppercase, lowercase, and a number.",
|
||
"createAccount": "Create account",
|
||
"creatingAccount": "Creating account...",
|
||
"hasAccount": "Already have an account?"
|
||
},
|
||
"validation": {
|
||
"emailRequired": "Email is required.",
|
||
"emailInvalid": "Enter a valid email address.",
|
||
"passwordRequired": "Password is required.",
|
||
"displayNameTooLong": "Display name is too long.",
|
||
"passwordMinLength": "Password must be at least 8 characters.",
|
||
"passwordUppercase": "Include at least one uppercase letter.",
|
||
"passwordLowercase": "Include at least one lowercase letter.",
|
||
"passwordDigit": "Include at least one digit.",
|
||
"confirmPasswordRequired": "Please confirm your password.",
|
||
"passwordsMismatch": "Passwords do not match.",
|
||
"recipeNameRequired": "Recipe name is required.",
|
||
"ingredientNameRequired": "Ingredient name is required.",
|
||
"stepNumberMin": "Step number must be at least 1.",
|
||
"stepDescriptionRequired": "Step description is required.",
|
||
"stepsMin": "Add at least one preparation step."
|
||
},
|
||
"errors": {
|
||
"generic": "Something went wrong.",
|
||
"signInFailed": "Unable to sign in.",
|
||
"registerFailed": "Unable to create account.",
|
||
"loadCategoriesFailed": "Failed to load categories.",
|
||
"loadRecipesFailed": "Failed to load recipes.",
|
||
"loadRecipeFailed": "Failed to load recipe.",
|
||
"loadDietFailed": "Failed to load diet data.",
|
||
"loadMealPlanFailed": "Failed to load meal plan.",
|
||
"loadShoppingListFailed": "Failed to load shopping list.",
|
||
"loadIngredientCatalogFailed": "Failed to load ingredient catalog.",
|
||
"saveIngredientFailed": "Failed to save ingredient.",
|
||
"saveRecipeFailed": "Failed to save recipe.",
|
||
"recalculateMacrosFailed": "Failed to recalculate recipe macros.",
|
||
"importFailed": "Import failed.",
|
||
"pdfLoadFailed": "Could not load recipes for export.",
|
||
"pdfGenerateFailed": "PDF generation failed.",
|
||
"pdfRenderAreaMissing": "PDF render area not found.",
|
||
"pdfNothingToExport": "Nothing to export."
|
||
},
|
||
"dashboard": {
|
||
"welcome": "Welcome back",
|
||
"welcomeNamed": "Welcome back, {{name}}",
|
||
"subtitle": "Browse recipes by meal category or explore everything at once.",
|
||
"viewRecipes": "View recipes"
|
||
},
|
||
"recipes": {
|
||
"allMealsTitle": "All Meals",
|
||
"allMealsSubtitle": "Select recipes and export them with a combined shopping list.",
|
||
"selectAllVisible": "Select all visible",
|
||
"deselectAll": "Deselect all",
|
||
"searchRecipes": "Search recipes...",
|
||
"searchByIngredient": "Search by ingredient...",
|
||
"searchByIngredientLabel": "Search by ingredient",
|
||
"searchByNameAria": "Search recipes by name",
|
||
"searchByIngredientAria": "Search recipes by ingredient",
|
||
"noMatchingTitle": "No matching recipes",
|
||
"noMatchingIngredient": "No recipes contain that ingredient. Try a different ingredient name.",
|
||
"noMatchingFilter": "Try adjusting your search or category filter.",
|
||
"emptyCategoryTitle": "No {{category}} recipes yet",
|
||
"emptyCategoryDescription": "There are currently no recipes in this category.",
|
||
"selectRecipe": "Select {{name}}",
|
||
"prepTime": "{{count}} min preparation",
|
||
"calories": "Calories",
|
||
"protein": "Protein",
|
||
"fat": "Fat",
|
||
"carbs": "Carbs",
|
||
"ingredients": "Ingredients",
|
||
"preparation": "Preparation",
|
||
"noIngredients": "No ingredients listed.",
|
||
"noSteps": "No steps listed.",
|
||
"kcal": "{{count}} kcal",
|
||
"minutes": "{{count}} min"
|
||
},
|
||
"manage": {
|
||
"title": "Manage Meals",
|
||
"subtitle": "Add recipes manually or import them from an Excel spreadsheet.",
|
||
"tabManual": "Add manually",
|
||
"tabEdit": "Edit recipes",
|
||
"tabImport": "Import Excel",
|
||
"savedSuccess": "\"{{name}}\" saved successfully.",
|
||
"basicInfo": "Basic info",
|
||
"recipeName": "Recipe name",
|
||
"recipeNamePlaceholder": "Grilled chicken salad",
|
||
"prepTimeMin": "Prep time (min)",
|
||
"caloriesKcal": "Calories (kcal)",
|
||
"proteinG": "Protein (g)",
|
||
"fatG": "Fat (g)",
|
||
"carbsG": "Carbs (g)",
|
||
"preparationSteps": "Preparation steps",
|
||
"addStep": "Add step",
|
||
"stepPlaceholder": "Describe this step...",
|
||
"ingredientName": "Name",
|
||
"ingredientGrams": "Grams",
|
||
"ingredientUnit": "Unit",
|
||
"removeIngredient": "Remove ingredient",
|
||
"removeStep": "Remove step",
|
||
"saveRecipe": "Save recipe",
|
||
"updateRecipe": "Update recipe",
|
||
"updatedSuccess": "\"{{name}}\" updated successfully.",
|
||
"selectRecipeToEdit": "Select a recipe from the list to edit.",
|
||
"catalogLink": "Link to ingredient catalog",
|
||
"estimatedFromCatalog": "Estimated from linked catalog items",
|
||
"unlinkedIngredientsWarning": "{{count}} ingredient(s) have grams but no catalog link — macros may be incomplete.",
|
||
"recalculateMacros": "Recalculate all macros",
|
||
"recalculating": "Recalculating…",
|
||
"recalculateSuccess": "Updated {{updated}} of {{processed}} recipes. {{unlinked}} ingredient row(s) still unlinked.",
|
||
"macroHint": "Estimated: {{calories}} kcal · P {{protein}}g · F {{fat}}g · C {{carbs}}g",
|
||
"saving": "Saving...",
|
||
"importTitle": "Import from Excel",
|
||
"importDescription": "Use the template with three sheets: Recipes, Ingredients, and Steps. Recipe names must match across sheets.",
|
||
"downloadTemplate": "Download template",
|
||
"uploadLabel": "Upload filled .xlsx file",
|
||
"importComplete": "Import complete",
|
||
"createdCount": "Created: {{count}}",
|
||
"skippedCount": "Skipped: {{count}}",
|
||
"importRecipes": "Import recipes",
|
||
"importing": "Importing...",
|
||
"excelFormatTitle": "Excel format",
|
||
"excelRecipesSheet": "Recipes: Name, MealCategory (Breakfast / Lunch / 0–3), Calories, Protein, Fat, Carbs, PrepTimeMinutes",
|
||
"excelIngredientsSheet": "Ingredients: RecipeName, Name, AmountGrams, Unit, SortOrder",
|
||
"excelStepsSheet": "Steps: RecipeName, StepNumber, Description",
|
||
"duplicateSkipped": "Duplicate recipe names are skipped."
|
||
},
|
||
"generators": {
|
||
"diet": {
|
||
"title": "Diet Generator",
|
||
"subtitle": "Calculate targets from your profile, build a weekly plan from your recipe catalog, and save it to the meal planner.",
|
||
"profileTitle": "Your profile",
|
||
"heightCm": "Height (cm)",
|
||
"weightKg": "Weight (kg)",
|
||
"age": "Age",
|
||
"sex": "Sex",
|
||
"male": "Male",
|
||
"female": "Female",
|
||
"activity": "Activity level",
|
||
"sedentary": "Sedentary",
|
||
"light": "Light",
|
||
"moderate": "Moderate",
|
||
"active": "Active",
|
||
"veryActive": "Very active",
|
||
"goal": "Goal",
|
||
"loseWeight": "Lose weight",
|
||
"maintain": "Maintain",
|
||
"gainMuscle": "Gain muscle",
|
||
"recomp": "Recomposition",
|
||
"allergies": "Allergies / notes",
|
||
"continue": "Calculate targets",
|
||
"macrosTitle": "Daily targets",
|
||
"acceptAndGenerate": "Accept & generate 7-day plan",
|
||
"planHint": "Each day should be within ±10 kcal of your target. Lock meals you like, regenerate others.",
|
||
"lock": "Lock",
|
||
"unlock": "Unlock",
|
||
"viewRecipe": "Details",
|
||
"noAlternativeMeals": "No other recipes are available for this meal — all suitable options are already in your plan.",
|
||
"commit": "Save plan to calendar",
|
||
"done": "Plan saved to your meal planner and daily goals.",
|
||
"newPlan": "Create another plan",
|
||
"error": "Diet generator failed."
|
||
},
|
||
"recipe": {
|
||
"title": "Recipe Generator",
|
||
"subtitle": "Create several recipe drafts with AI, review them, and save the ones you like.",
|
||
"constraintsTitle": "What should we cook?",
|
||
"prompt": "Describe the meal",
|
||
"promptPlaceholder": "Light breakfast with oatmeal and fruit…",
|
||
"targetCalories": "Target calories (kcal)",
|
||
"targetCaloriesOptional": "e.g. 500",
|
||
"targetCaloriesHint": "Ingredient amounts will be scaled to match (±10 kcal).",
|
||
"caloriesWithTarget": "{{actual}} kcal (target: {{target}})",
|
||
"maxPrep": "Max prep time (min)",
|
||
"exclusions": "Exclude ingredients",
|
||
"generate": "Generate recipe",
|
||
"recipeCount": "How many recipes to generate",
|
||
"reviewHint": "Review {{count}} generated recipes. Uncheck or remove ones you don't want, then save the rest.",
|
||
"selectAll": "Select all",
|
||
"remove": "Remove",
|
||
"saveSelected": "Save selected ({{count}})",
|
||
"doneMultiple": "{{count}} recipes saved to your library.",
|
||
"generateMore": "Generate more recipes",
|
||
"regenIngredients": "Regenerate ingredients",
|
||
"regenSteps": "Regenerate steps",
|
||
"regenFull": "Regenerate all",
|
||
"save": "Save to library",
|
||
"done": "Recipe saved.",
|
||
"viewRecipe": "View recipe",
|
||
"error": "Recipe generator failed."
|
||
}
|
||
},
|
||
"pdf": {
|
||
"generate": "Generate PDF",
|
||
"preparing": "Preparing...",
|
||
"generating": "Generating...",
|
||
"prepTime": "Prep time: {{count}} min",
|
||
"shoppingList": "Shopping List",
|
||
"generatedOn_one": "Generated {{date}} · {{count}} recipe",
|
||
"generatedOn_other": "Generated {{date}} · {{count}} recipes",
|
||
"recipesInExport": "Recipes in this export",
|
||
"toTaste": "to taste",
|
||
"dayPlanTitle": "Daily meal plan — {{date}}",
|
||
"emptySlot": "Not planned",
|
||
"emptyShoppingList": "No shopping items for this day.",
|
||
"plannedMealMeta": "{{slot}} · {{portions}}× portions",
|
||
"dayShoppingSubtitle": "List for {{date}} · {{count}} meals"
|
||
},
|
||
"diet": {
|
||
"title": "My Diet",
|
||
"subtitle": "Track what you eat and drink, set daily targets, and stay on top of reminders.",
|
||
"tabToday": "Today",
|
||
"tabHistory": "History",
|
||
"tabGoals": "Goals",
|
||
"tabReminders": "Reminders",
|
||
"goToday": "Today",
|
||
"notToday": "not today",
|
||
"quickLog": "Quick log",
|
||
"copyYesterday": "Copy yesterday's meals",
|
||
"recentMeals": "Recent",
|
||
"favorites": "Favorites",
|
||
"days": "days",
|
||
"historyCalories": "Calories over time",
|
||
"historyMax": "Peak: {{max}} kcal",
|
||
"noHistory": "No history for this period.",
|
||
"mealsOnDate": "Meals on {{date}}",
|
||
"drinksOnDate": "Drinks on {{date}}",
|
||
"editReminder": "Edit reminder",
|
||
"calories": "Calories",
|
||
"water": "Water",
|
||
"snack": "Snack",
|
||
"logDrink": "Log a drink",
|
||
"logMeal": "Mark a meal as eaten",
|
||
"searchRecipe": "From a recipe",
|
||
"orCustomMeal": "Or enter a custom meal name",
|
||
"markEaten": "Mark as eaten",
|
||
"mealsToday": "Meals today",
|
||
"drinksToday": "Drinks today",
|
||
"nothingLogged": "Nothing logged yet.",
|
||
"noMacros": "No nutrition info",
|
||
"removeEntry": "Remove entry",
|
||
"dailyGoals": "Daily goals",
|
||
"goalsHint": "Set targets like Lifesum or MyFitnessPal — the Today tab shows what is left.",
|
||
"calorieGoal": "Calorie goal (kcal)",
|
||
"waterGoal": "Water goal (ml)",
|
||
"saveGoals": "Save goals",
|
||
"addReminder": "Add reminder",
|
||
"reminderType": "Type",
|
||
"reminderWater": "Drink water",
|
||
"reminderMeal": "Meal time",
|
||
"reminderCustom": "Custom",
|
||
"reminderTitle": "Title",
|
||
"reminderTitlePlaceholder": "Drink a glass of water",
|
||
"reminderTime": "Time",
|
||
"saveReminder": "Save reminder",
|
||
"yourReminders": "Your reminders",
|
||
"noReminders": "No reminders yet.",
|
||
"remaining": "Left",
|
||
"portions": "Portions",
|
||
"fromCatalog": "From ingredient catalog",
|
||
"noCatalogItem": "None",
|
||
"grams": "Amount (g)",
|
||
"mealPreview": "This meal adds",
|
||
"remainingAfter": "After logging you will still have",
|
||
"suggestionsTitle": "What to eat next",
|
||
"suggestionsHint": "Based on what you still need today.",
|
||
"logSuggestion": "Log",
|
||
"suggestionReasons": {
|
||
"highProtein": "High protein",
|
||
"needCarbs": "Good carbs",
|
||
"needFat": "Healthy fats",
|
||
"needCalories": "Energy boost",
|
||
"balanced": "Balanced choice"
|
||
}
|
||
},
|
||
"mealPlanner": {
|
||
"title": "Meal Planner",
|
||
"subtitle": "Plan recipes for each day of the week.",
|
||
"today": "This week",
|
||
"addRecipe": "Add recipe",
|
||
"dailyTarget": "Daily calorie target",
|
||
"daySummary": "{{logged}} / {{target}} kcal planned",
|
||
"remaining": "{{count}} kcal left",
|
||
"slotHint": "Suggested ~{{count}} kcal for this meal",
|
||
"suggestionsTitle": "Suggestions for this slot",
|
||
"noSuggestions": "Set a daily calorie target to see suggestions.",
|
||
"estimatedMeal": "This meal: ~{{count}} kcal",
|
||
"selectedRecipe": "Selected: {{name}}",
|
||
"clearSelection": "Clear selection",
|
||
"exportDay": "Export day plan (PDF)",
|
||
"includingSelection": "incl. current pick: {{count}} kcal"
|
||
},
|
||
"shoppingList": {
|
||
"title": "Shopping List",
|
||
"subtitle": "Aggregated ingredients from your meal plan.",
|
||
"from": "From",
|
||
"to": "To",
|
||
"load": "Load list",
|
||
"clearChecks": "Clear checked items",
|
||
"empty": "No items for this date range.",
|
||
"checklistHint": "Checked items are saved locally in your browser."
|
||
},
|
||
"ingredientCatalog": {
|
||
"title": "Ingredient catalog",
|
||
"subtitle": "Nutrition values per 100 g, grouped by food category.",
|
||
"allCategories": "All",
|
||
"searchPlaceholder": "Search ingredients…",
|
||
"noResultsTitle": "No ingredients found",
|
||
"noResultsDescription": "Try another category or search term.",
|
||
"per100gNote": "All values are per 100 g.",
|
||
"addIngredient": "Add ingredient",
|
||
"editIngredient": "Edit ingredient",
|
||
"selectCategory": "Select category",
|
||
"nameEn": "Name (English)",
|
||
"namePlLabel": "Name (Polish)",
|
||
"formInvalid": "Please fill in category and name.",
|
||
"deleteConfirm": "Remove this ingredient from the catalog?",
|
||
"columns": {
|
||
"name": "Ingredient",
|
||
"category": "Category",
|
||
"calories": "kcal",
|
||
"protein": "Protein (g)",
|
||
"fat": "Fat (g)",
|
||
"carbs": "Carbs (g)",
|
||
"fiber": "Fiber (g)"
|
||
},
|
||
"categories": {
|
||
"meat": "Meat",
|
||
"poultry": "Poultry",
|
||
"fish": "Fish",
|
||
"seafood": "Seafood",
|
||
"vegetables": "Vegetables",
|
||
"fruits": "Fruits",
|
||
"dairy": "Dairy",
|
||
"eggs": "Eggs",
|
||
"grains": "Grains",
|
||
"legumes": "Legumes",
|
||
"nuts": "Nuts & seeds",
|
||
"oils": "Oils & fats"
|
||
}
|
||
},
|
||
"notFound": {
|
||
"title": "Page not found",
|
||
"description": "The page you're looking for doesn't exist.",
|
||
"backToDashboard": "Back to dashboard"
|
||
}
|
||
}
|