{ "auth.backToLogin": "Back to login", "auth.displayName": "What should we call you?", "auth.email": "Email", "auth.forgotBody": "Enter your email and we'll send a reset link if the account exists.", "auth.forgotLink": "Forgot your password?", "auth.forgotSentBody": "If the address has an account, we've sent a link valid for 30 minutes. Open it on this device.", "auth.forgotSentTitle": "Check your inbox", "auth.forgotSubmit": "Send link", "auth.forgotTitle": "Reset password", "auth.hasAccount": "Already have an account? Log in", "auth.login": "Log in", "auth.newPassword": "New password (at least 10 characters)", "auth.noAccount": "New here? Create an account", "auth.password": "Password", "auth.register": "Create account", "auth.resetBody": "The link is valid for 30 minutes and can only be used once. All devices are signed out when the password changes.", "auth.resetDoneBody": "Your password has been changed. Log in with your new password.", "auth.resetDoneTitle": "Done!", "auth.resetSubmit": "Change password", "auth.resetTitle": "Choose a new password", "auth.resetTokenPlaceholder": "Paste the code from the email", "auth.trialNote": "7 days of full access – no card required.", "auth.verifyDoneBody": "Thanks! Your account is now verified.", "auth.verifyDoneTitle": "Email confirmed", "auth.verifyFailedBody": "The link is invalid or has expired. Request a new one from your profile.", "auth.verifyFailedTitle": "The link didn't work", "barcode.addPrompt": "Add to your inventory?", "barcode.aim": "Point the camera at the barcode", "barcode.allowCamera": "Allow camera", "barcode.cameraBody": "{brand} needs the camera to scan barcodes.", "barcode.cameraTitle": "Camera needed", "barcode.kcalPer100": "{kcal} kcal/100 g", "barcode.needHousehold": "You need a household first.", "barcode.noLocation": "No storage location found.", "barcode.noNutrition": "No nutrition data", "barcode.photoPackage": "Photograph the package", "barcode.unknownBody": "This product isn't in the database yet. Photograph the front and the nutrition label and we'll add it.", "barcode.unknownTitle": "Unknown product", "common.add": "Add", "common.back": "Back", "common.cancel": "Cancel", "common.done": "Done", "common.error": "Something went wrong. Please try again.", "common.estimate": "Estimate", "common.loading": "Loading …", "common.next": "Next", "common.off": "Off", "common.offline": "Offline – showing last fetched data", "common.on": "On", "common.oops": "Oops", "common.remove": "Remove", "common.retry": "Try again", "common.save": "Save", "common.skip": "Skip", "common.undo": "Undo", "cooked.deductPantry": "Deduct ingredients from inventory", "cooked.deductPantryNote": "Ingredients are deducted from your inventory, first-expiring first.", "cooked.mealBoxes": "Servings to meal boxes", "cooked.portionsCooked": "Servings cooked", "cooked.rate": "Rate it", "cooked.title": "How did it go?", "cooked.actualPortionsEaten": "How many portions did you eat?", "cooked.actualPortionsEatenHint": "The rest becomes leftovers or meal boxes.", "cooked.leftoverEstimatePortions": "How many leftover portions?", "cooked.leftoverEstimateHint": "Saved as a meal box if you want.", "cooked.whoAte": "Who ate?", "cooking.finish": "Done – log the meal", "cooking.keepAwake": "The screen stays awake while you cook", "cooking.scale": "Servings", "cooking.step": "Step {current} of {total}", "cooking.timer": "Start timer", "cooking.timerDone": "Done!", "cooking.timerRunning": "{time} left", "home.budget": "Food budget", "home.emptyInventory": "Your inventory is empty. Scan the fridge or add items manually.", "home.expired": "Expired", "home.expiresIn_one": "1 day left", "home.expiresIn_other": "{days} days left", "home.expiresToday": "Expires today", "home.household": "Household", "home.inventory": "Food inventory", "home.mealBoxes": "Meal boxes", "home.moreItems_one": "+ 1 more …", "home.moreItems_other": "+ {count} more …", "home.pastBestBefore": "Past best before – smell and taste first", "home.shopping": "Shopping list", "home.thisWeek": "This week", "home.title": "At home", "home.useSoon": "Use soon", "home.useSoonHint": "Best before is about quality – smell, look and taste before you throw anything away. Use-by dates, however, should be respected.", "home.waste": "Food waste", "home.wasteWeek": "Food waste this week", "household.empty": "You don't have a household yet. Create one in onboarding or join with a code.", "household.invite": "Invite with code: {code}", "household.locations": "Storage locations", "household.members": "Members", "household.portionFactor": "×{factor} portion", "household.private": "Private per person: goals, allergies, health data and meal history.", "household.role.adult": "Adult", "household.role.child": "Child", "household.role.member": "Member", "household.role.owner": "Owner", "household.shareCode": "Share the code with your family to share inventory, list and plan.", "household.shared": "Shared in the household: food inventory, shopping list, week plan, meal boxes and budget.", "logmeal.manualTitle": "Manual", "logmeal.mealTypeTitle": "Meal type", "logmeal.photoTip": "Tip: photograph your plate under Scan and the app estimates for you – you always confirm.", "logmeal.proteinPlaceholder": "protein (g)", "logmeal.quickSubtitle": "Logs the same nutrition values as last time.", "logmeal.quickTitle": "Quick re-log", "logmeal.validationBody": "Name and calories are required for manual logging.", "logmeal.validationTitle": "Missing info", "logmeal.whatPlaceholder": "What did you eat?", "mealbox.eat": "Eat now", "mealbox.eatBy": "Eat by {date}", "mealbox.empty": "No meal boxes right now. When you cook, you can save servings here.", "mealbox.enjoyBody": "The portion is logged in My day.", "mealbox.enjoyTitle": "Enjoy your meal!", "mealbox.guidanceNote": "The recommended use-by is guidance – trust smell and taste.", "mealbox.portionsLeft_one": "1 serving left", "mealbox.portionsLeft_other": "{count} servings left", "mealbox.title": "Meal boxes", "memory.delete": "Delete", "memory.deleteAll": "Delete all memory", "memory.deleteAllTitle": "Delete all memory?", "memory.empty": "{brand} hasn't learned anything about you yet.", "memory.irreversible": "This cannot be undone.", "memory.origin.ai_inferred": "AI assumption", "memory.origin.observed": "Observed pattern", "memory.origin.user_stated": "You told us", "memory.pause": "Pause", "memory.paused": "Paused", "memory.resume": "Resume", "memory.subtitle": "Full transparency. Correct what's wrong, pause or delete – you own your memory.", "memory.title": "What {brand} knows about me", "memory.verified": "Verified", "memory.verify": "Correct", "myday.calories": "Calories", "myday.carbs": "Carbohydrates", "myday.estimateNote": "Values marked with ~ are estimates you can adjust.", "myday.estimateRange": "{min}–{max} kcal, likely {kcal}", "myday.fat": "Fat", "myday.fiber": "Fiber", "myday.kcalProtein": "{kcal} kcal · {protein} g protein", "myday.logMeal": "Log meal", "myday.mealType.breakfast": "Breakfast", "myday.mealType.dessert": "Dessert", "myday.mealType.dinner": "Dinner", "myday.mealType.lunch": "Lunch", "myday.mealType.snack": "Snack", "myday.noMeals": "No meals logged today.", "myday.over": "{kcal} kcal over target", "myday.overRecommended": "Above recommended", "myday.protein": "Protein", "myday.remaining": "{kcal} kcal remaining", "myday.salt": "Salt", "myday.targetsNote": "Targets are guidance, not medical advice.", "myday.title": "My day", "myday.todaysMeals": "Today's meals", "onboarding.allergen.crustaceans": "Crustaceans", "onboarding.allergen.eggs": "Eggs", "onboarding.allergen.fish": "Fish", "onboarding.allergen.gluten": "Gluten", "onboarding.allergen.milk": "Milk/lactose", "onboarding.allergen.peanuts": "Peanuts", "onboarding.allergen.sesame": "Sesame", "onboarding.allergen.soy": "Soy", "onboarding.allergen.tree_nuts": "Tree nuts", "onboarding.allergies": "Allergies and intolerances", "onboarding.allergyNote": "Allergy filtering is always strict – dishes with your allergens are never shown.", "onboarding.birthYearPlaceholder": "Birth year", "onboarding.bodyTitle": "For personal calorie targets (optional)", "onboarding.diet": "How do you eat?", "onboarding.diet.flexitarian": "Flexitarian", "onboarding.diet.omnivore": "Omnivore", "onboarding.diet.pescatarian": "Pescatarian", "onboarding.diet.vegan": "Vegan", "onboarding.diet.vegetarian": "Vegetarian", "onboarding.goal": "What is your main goal?", "onboarding.goal.build_muscle": "Build muscle", "onboarding.goal.cook_more": "Cook more at home", "onboarding.goal.less_waste": "Reduce food waste", "onboarding.goal.lose_weight": "Lose weight", "onboarding.goal.lower_cost": "Spend less on food", "onboarding.goal.maintain_weight": "Maintain weight", "onboarding.goal.more_protein": "Eat more protein", "onboarding.heightPlaceholder": "Height (cm)", "onboarding.household": "Your household", "onboarding.householdCreate": "Create household", "onboarding.householdDefaultName": "Home", "onboarding.householdJoin": "Join with a code", "onboarding.householdName": "Household name", "onboarding.inviteCode": "Invite code", "onboarding.mode": "How precise do you want to be?", "onboarding.modeExact": "Exact mode", "onboarding.modeExactDesc": "Weigh food, enter grams, full control of the numbers.", "onboarding.modeSimple": "Simple mode", "onboarding.modeSimpleDesc": "Snap photos of your food, accept estimates, minimal fuss.", "onboarding.modesCombine": "You can mix modes – simple day to day, exact when you want.", "onboarding.memoryTransparency": "This is saved in \"What {brand} knows about me\" and you can change it anytime.", "onboarding.notMedical": "{brand} provides guidance – not medical advice.", "onboarding.stepBSubtitle": "Customize your profile for better suggestions.", "onboarding.stepBTitle": "Continue setup", "onboarding.stepCSubtitle": "Optional – used for personal calorie targets.", "onboarding.stepCTitle": "Your health profile", "onboarding.subtitle": "Everything is optional and can be changed at any time. The more you fill in, the better the suggestions.", "onboarding.title": "Tell us a little about yourself", "onboarding.weightPlaceholder": "Weight (kg)", "paywall.choose": "Choose", "paywall.fairUse": "Fair-use quota for AI scans included.", "paywall.family": "Family · up to 6 people", "paywall.freeNote": "Free: 10 AI scans/month, manual inventory, saved recipes and simple logging.", "paywall.household": "Household · up to 3 people", "paywall.large": "Large Household · up to 12 people", "paywall.perMonth": "{price}/month", "paywall.popular": "Most popular", "paywall.restore": "Restore purchases", "paywall.soonBody": "Purchases activate via App Store/Google Play once store integration is switched on (phase 7). The backend flow is already done.", "paywall.soonTitle": "Coming soon!", "paywall.subtitle": "The whole household's food OS: unlimited inventory, week planning and sharing.", "paywall.title": "{brand} Premium", "paywall.trialActive_one": "1 day left of your trial", "paywall.trialActive_other": "{days} days left of your trial", "profile.aiScansUsed": "AI scans: {used} / {total} this month", "profile.consent.anonymized_improvement": "Anonymised AI improvement", "profile.consent.health_integration": "Health data (Apple Health / Health Connect)", "profile.consent.image_training": "My photos may be used for training", "profile.consent.location_weather": "Location for weather-based suggestions", "profile.consent.personalization": "Personal features (memory & taste profile)", "profile.consent.product_analytics": "Product analytics", "profile.consent.push_notifications": "Push notifications", "profile.consents": "Consents & data", "profile.consentsNote": "Consents are separate – personal features never require training consent.", "profile.deleteAccount": "Delete account", "profile.deleteBody": "All your data is permanently deleted in line with GDPR.", "profile.deleteTitle": "Delete your account?", "profile.emailUnverified": "Email address not confirmed", "profile.export": "Export my data", "profile.goals": "Goals & diet", "profile.language": "Language", "profile.language.da": "Dansk", "profile.language.de": "Deutsch", "profile.language.en": "English", "profile.language.es": "Español", "profile.language.fi": "Suomi", "profile.language.fr": "Français", "profile.language.it": "Italiano", "profile.language.nb": "Norsk", "profile.language.nl": "Nederlands", "profile.language.pl": "Polski", "profile.language.pt": "Português", "profile.language.sv": "Svenska", "profile.logout": "Log out", "profile.memory": "What {brand} knows about me", "profile.memorySubtitle": "See, correct, pause or delete what the platform has learned.", "profile.modeLabel": "Mode:", "profile.resendVerification": "Resend confirmation email", "profile.subscription": "Subscription", "profile.title": "Profile", "profile.verificationSent": "Sent! Check your inbox.", "recipe.avgRating": "Average {avg} from {count} ratings", "recipe.cook": "Cook now", "recipe.cost": "approx. {amount}/serving", "recipe.iCookedThis": "I cooked this", "recipe.ingredients": "Ingredients", "recipe.notSafe": "Doesn't match your dietary settings", "recipe.perPortion": "per serving", "recipe.portions_one": "1 serving", "recipe.portions_other": "{count} servings", "recipe.save": "Save", "recipe.saved": "Saved", "recipe.steps": "Instructions", "recipe.substitutions": "Substitute", "recipe.time": "{min} min", "scan.analyzing": "Analyzing …", "scan.barcode": "Barcode", "scan.coach.body": "Take a photo of the whole shelf or fridge. Keep the phone steady and make sure the light is good.", "scan.coach.button": "Got it", "scan.coach.tip1": "Make sure all items are visible", "scan.coach.tip2": "Avoid flash and shadows", "scan.coach.tip3": "Confirm uncertain items in the next step", "scan.coach.title": "First scan", "scan.expiry": "Best-before date", "scan.failed": "The analysis failed. Try again or add items manually.", "scan.freezer": "Freezer", "scan.fridge": "Fridge", "scan.ingredients": "Ingredients", "scan.nutrition": "Nutrition label", "scan.pantry": "Pantry", "scan.plate": "Plate", "scan.quotaLeft_one": "1 AI scan left this month", "scan.quotaLeft_other": "{count} AI scans left this month", "scan.receipt": "Receipt", "scan.review.addItem": "+ Add item", "scan.review.approveAll": "Save to inventory", "scan.review.bestBeforeNote": "Quality date – the food can be fine well beyond it. Smell and taste before discarding.", "scan.review.dateKindBestBefore": "Best before", "scan.review.dateKindUseBy": "Use by", "scan.review.datePlaceholder": "YYYY-MM-DD (optional)", "scan.review.itemPlaceholder": "Item", "scan.review.quantityPlaceholder": "Amount", "scan.review.rejected": "Removed", "scan.review.subtitle": "AI is sometimes uncertain – you decide. Edit, remove or add before saving.", "scan.review.title": "Review the result", "scan.review.uncertain": "Uncertain – please check", "scan.review.unitPlaceholder": "Unit (g, l, pcs …)", "scan.review.unknownItem": "Unknown item", "scan.review.useByNote": "Safety date – do not eat after this date.", "scan.subtitle": "Stock your food inventory or log a meal with the camera.", "scan.takePhoto": "Take photo", "scan.tips.light": "Avoid darkness and shadows", "scan.tips.move": "Move items that block each other", "scan.tips.overview": "Start with an overview photo", "scan.tips.shelf": "Photograph shelf by shelf", "scan.tips.title": "How to get the best analysis", "scan.title": "Scan", "shopping.addPlaceholder": "Add item …", "shopping.complete": "Finish shopping trip", "shopping.completeNote": "Checked items are added to your food inventory.", "shopping.completedBody_one": "1 item was added to your inventory.", "shopping.completedBody_other": "{count} items were added to your inventory.", "shopping.completedTitle": "Done!", "shopping.empty": "The list is empty.", "shopping.estimated": "approx. {amount}", "shopping.estimatedTotal": "Estimated total: approx. {amount}", "shopping.section.brod": "Bread", "shopping.section.chark": "Deli & cold cuts", "shopping.section.dryck": "Drinks", "shopping.section.fisk": "Fish", "shopping.section.frukt_gront": "Fruit & veg", "shopping.section.frys": "Frozen", "shopping.section.hygien_ovrigt": "Other", "shopping.section.konserver": "Canned goods", "shopping.section.kott_fagel": "Meat & poultry", "shopping.section.kryddor_bak": "Spices & baking", "shopping.section.mejeri": "Dairy", "shopping.section.skafferi": "Pantry", "shopping.section.snacks": "Snacks", "shopping.title": "Shopping list", "tabs.home": "At home", "tabs.myDay": "My day", "tabs.scan": "Scan", "tabs.whatToEat": "What's for dinner?", "tabs.plan": "Plan", "plan.today": "Today", "plan.emptyDay": "Nothing planned", "wte.coverage": "{pct}% at home", "wte.cravingPlaceholder": "I'm craving … (e.g. creamy, Asian, under 500 kcal)", "wte.empty": "No suggestions yet – add some food to your inventory or loosen the filters.", "wte.mealBoxFirst": "Ready-made food at home", "wte.missing": "Missing: {items}", "wte.refresh": "New suggestions", "wte.subtitle": "Based on what you have at home, what should be used up, and what you like.", "wte.title": "What's for dinner?", "wte.whyTitle": "Why this suggestion?", "onboarding.primaryGoal": "Primary", "home.trustStatus.up_to_date": "Up to date", "home.trustStatus.needs_check": "Some items need checking", "home.trustStatus.uncertain": "Inventory uncertain – do a quick check", "reconciliation.title": "Quick inventory check", "reconciliation.subtitle": "Confirm what you have left to get better suggestions.", "reconciliation.exists": "Still have it", "reconciliation.depleted": "It is used up", "reconciliation.uncertain": "Not sure", "reconciliation.adjustQuantity": "Adjust amount", "reconciliation.reason.planned_recipe": "Needed soon for a recipe", "reconciliation.reason.expiring_soon": "Expires soon", "reconciliation.reason.high_value": "High value", "reconciliation.reason.low_confidence": "Estimated amount", "reconciliation.reason.stale_trust": "Has not been checked in a while", "reconciliation.reason.likely_depleted": "Likely used up soon", "reconciliation.done": "Done", "reconciliation.next": "Next", "reconciliation.empty": "Nothing needs checking right now. Well done!", "reconciliation.tasteHint": "Past best before? Smell and taste first – never waste food unnecessarily.", "scan.diff.title": "Review differences", "scan.diff.subtitle": "Confirm changes from the latest scan.", "scan.diff.newItem": "New item", "scan.diff.quantityChanged": "Quantity changed", "scan.diff.moved": "Moved", "scan.diff.vanished": "Missing in photo", "scan.diff.unchanged": "Unchanged", "scan.diff.accept": "Confirm", "scan.diff.reject": "Ignore", "scan.diff.acceptAll": "Confirm all", "scan.diff.noChanges": "No differences found.", "scan.diff.undo": "Undo", "scan.diff.undoHint": "Each change can be undone from the item detail view.", "cooked.portionsSumExceedsPlanned": "Eaten portions and leftovers cannot exceed the total number of portions.", "cooked.undoWindowExpired": "This cooking session can no longer be undone. The 24-hour window has expired.", "cooked.leftoverLessThanBox": "Leftovers must be at least as many as the number of meal-box portions.", "mealbox.undoConfirmTitle": "Undo cooking?", "mealbox.undoConfirmBody": "This reverses the inventory deduction and meal box for this cooking session.", "mealbox.undoSuccess": "Cooking session undone.", "consent.title": "Before you start", "consent.body": "To use Cibello you need to accept our terms. The photos you take in the app (fridge, packaging, dishes) are used to train and improve Cibello's AI – this is part of the terms.", "consent.termsLink": "Read the Terms of Use", "consent.privacyLink": "Read the Privacy Policy", "consent.checkbox": "I have read and accept the Terms of Use and the Privacy Policy.", "consent.submit": "Accept and continue", "scan.meal.title": "Log meal from photo", "scan.meal.estimateNote": "Estimated from your photo – adjust before saving.", "scan.meal.calories": "Estimated calories", "scan.meal.namePlaceholder": "What did you eat? (optional)", "scan.meal.components": "Recognised on the plate", "scan.meal.noEstimate": "Couldn't estimate calories from the photo." }