Files
Cibello-app/apps/mobile/src/locales/pt/common.json
T
Claude 316ba3cb62 feat(i18n): server-genererad prosa -> nyckel+params (min dag, ombokning, scan-diff)
- Min-dag-noten: noteKey (estimateNote/computedNote) bredvid svensk note; klient t(noteKey).
- Ombokningsskäl (planning.ts): rescheduleReasonKey + params bredvid rescheduleReasonSv;
  klient t(key, {title}). Workerns två andra ombokningstexter lämnade på svensk fallback.
- Scan-diff: reasonCode-enum (6 koder) bredvid reasonSv; klient t(scanDiff.reason.<code>).
- 8 nya nycklar i alla 12 språk. Ingen beslutslogik rörd; alla Sv-fält kvar som fallback.
- Kvar som egna spår: recept-säkerhetsmeddelanden + substitutions-data (översättningstabell).
- typecheck grönt (20/20), vakt grön, inventory-engine 53/53 tester.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-08-21 20:36:11 +00:00

614 lines
35 KiB
JSON
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
{
"auth.backToLogin": "Voltar ao início de sessão",
"auth.displayName": "Como o devemos tratar?",
"auth.email": "E-mail",
"auth.forgotBody": "Introduza o seu e-mail e enviaremos um link se a conta existir.",
"auth.forgotLink": "Esqueceu-se da palavra-passe?",
"auth.forgotSentBody": "Se o endereço tiver uma conta, enviámos um link válido por 30 minutos. Abra-o neste dispositivo.",
"auth.forgotSentTitle": "Verifique a sua caixa de entrada",
"auth.forgotSubmit": "Enviar link",
"auth.forgotTitle": "Repor palavra-passe",
"auth.hasAccount": "Já tem conta? Inicie sessão",
"auth.login": "Iniciar sessão",
"auth.newPassword": "Nova palavra-passe (mín. 10 caracteres)",
"auth.noAccount": "Novo por aqui? Crie uma conta",
"auth.password": "Palavra-passe",
"auth.register": "Criar conta",
"auth.resetBody": "O link é válido por 30 minutos e de uso único. Todos os dispositivos serão desligados.",
"auth.resetDoneBody": "A palavra-passe foi alterada. Inicie sessão com a nova.",
"auth.resetDoneTitle": "Concluído!",
"auth.resetSubmit": "Alterar palavra-passe",
"auth.resetTitle": "Escolha uma nova palavra-passe",
"auth.resetTokenPlaceholder": "Cole o código do e-mail",
"auth.trialNote": "14 dias de acesso completo sem cartão.",
"auth.verifyDoneBody": "Obrigado! A sua conta está verificada.",
"auth.verifyDoneTitle": "E-mail confirmado",
"auth.verifyFailedBody": "O link é inválido ou expirou. Peça um novo no perfil.",
"auth.verifyFailedTitle": "O link não funcionou",
"barcode.addPrompt": "Adicionar à despensa?",
"barcode.aim": "Aponte a câmara para o código de barras",
"barcode.allowCamera": "Permitir câmara",
"barcode.cameraBody": "O {brand} precisa da câmara para ler códigos de barras.",
"barcode.cameraTitle": "É precisa a câmara",
"barcode.contributing.title": "A ler a embalagem…",
"barcode.contributing.body": "Estamos a extrair informação nutricional, alergénios e ingredientes e a guardar o produto no catálogo partilhado, para que a próxima pessoa não precise de o fotografar.",
"barcode.contributing.failed": "Não foi possível ler a embalagem. Tente novamente com uma foto nítida e boa iluminação.",
"barcode.contributing.saved": "✓ Guardado no catálogo partilhado obrigado por contribuir!",
"barcode.contributing.frontDone": "Foto da frente tirada",
"barcode.contributing.backPrompt": "Agora fotografe a parte de trás com a declaração nutricional e os ingredientes assim o produto fica completo.",
"barcode.contributing.skipBack": "Pronto, analisar",
"barcode.contributing.shootBack": "Fotografar a parte de trás",
"barcode.complete": "Fotografar a parte de trás (nutrição e ingredientes)",
"barcode.done": "Concluído",
"barcode.looksRight": "Está correto concluído",
"barcode.kcalPer100": "{kcal} kcal/100 g",
"barcode.needHousehold": "Primeiro precisa de um agregado.",
"barcode.noLocation": "Nenhum local de armazenamento encontrado.",
"barcode.noNutrition": "Sem dados nutricionais",
"barcode.photoPackage": "Fotografar a embalagem",
"barcode.unknownBody": "Este produto ainda não está na base de dados. Fotografe a frente e a declaração nutricional vamos ler o conteúdo e guardar o produto no catálogo partilhado, para que a próxima pessoa não precise. (Não será adicionado aos seus artigos.)",
"barcode.unknownTitle": "Produto desconhecido",
"common.add": "Adicionar",
"common.back": "Voltar",
"common.cancel": "Cancelar",
"mealbox.ready": "Comida pronta à espera o jantar mais rápido cá de casa.",
"common.all": "Todos",
"auth.tagline": "Menos desperdício, menos stress, mais dinheiro na carteira",
"auth.passwordMin8": "A palavra-passe tem de ter pelo menos 8 caracteres.",
"auth.passwordMismatch": "As palavras-passe não coincidem.",
"auth.repeatPassword": "Repetir palavra-passe",
"plan.swapDish": "Trocar prato",
"scan.maxTitle": "Concluído",
"scan.maxBody": "Máximo de {max} fotos nesta digitalização a analisar.",
"scan.photoTaken": "Foto {count} tirada",
"scan.multiAngleHint": "Podes tirar mais ângulos do mesmo sítio a app lista cada artigo uma vez. Cada foto conta como uma digitalização.",
"scan.takeAnother": "Tirar mais uma",
"scan.analyzeCount": "Analisar ({count})",
"scan.tips.merge": "Frigorífico/congelador/despensa: tira várias fotos na mesma digitalização a app junta os duplicados.",
"kitchen.deleteConfirm": "Remover os artigos selecionados de {label}?",
"kitchen.scopeSearch": "a pesquisa",
"kitchen.scopeAll": "todo o inventário",
"kitchen.scopeSelection": "a seleção",
"kitchen.searchPlaceholder": "Pesquisar artigo…",
"kitchen.clearList": "Esvaziar lista",
"kitchen.empty": "Não há artigos para mostrar. Digitaliza ou adiciona artigos.",
"kitchen.pastBefore": "validade",
"memory.trainingNote": "A memória pessoal nunca é usada como dados de treino sem consentimento em separado.",
"recipe.source": "Fonte: {name}",
"recipes.sub.bread": "Pão",
"recipes.sub.bun": "Pãezinhos",
"recipes.sub.pie": "Tarte",
"recipes.sub.cake": "Bolos e tortas",
"recipes.sub.cookie": "Bolachas",
"recipes.searchPlaceholder": "Pesquisar receitas…",
"recipes.emptyCategory": "Ainda não há receitas nesta categoria aparecem à medida que o catálogo cresce.",
"savedRecipes.searchPlaceholder": "Pesquisar nas tuas receitas guardadas",
"savedRecipes.empty": "Ainda não tens receitas guardadas. Toca em ☆ Guardar numa receita e aparece aqui.",
"savedRecipes.emptySearch": "Nenhuma receita guardada corresponde à tua pesquisa.",
"shopping.removeConfirm": "Remover o artigo da lista?",
"swap.addTitle": "Adicionar refeição",
"swap.swapTitle": "Trocar refeição",
"swap.chooseFor": "Escolhe um prato para {meal} ou pesquisa qualquer prato.",
"swap.chooseOther": "Escolhe outro prato para {meal} ou pesquisa qualquer prato.",
"swap.mealLunch": "o almoço",
"swap.mealBreakfast": "o pequeno-almoço",
"swap.mealDinner": "o jantar",
"swap.searchPlaceholder": "Pesquisar em todas as receitas …",
"swap.showingResults": "A mostrar resultados para ”{query}”.",
"swap.clearHint": "Limpa a caixa de pesquisa e pesquisa sem texto para voltares a ver as sugestões.",
"errors.uploadTimeout": "O carregamento demorou demasiado tempo verifica a ligação e tenta novamente.",
"common.done": "Concluído",
"common.error": "Algo correu mal. Tente novamente.",
"common.estimate": "Estimativa",
"common.loading": "A carregar …",
"common.next": "Seguinte",
"common.off": "Desativado",
"common.offline": "Offline a mostrar os últimos dados",
"common.on": "Ativado",
"common.oops": "Ops",
"common.remove": "Remover",
"common.retry": "Tentar novamente",
"common.save": "Guardar",
"common.skip": "Ignorar",
"common.undo": "Desfazer",
"cooked.deductPantry": "Descontar ingredientes da despensa",
"cooked.deductPantryNote": "Os ingredientes são descontados da despensa: primeiro os que expiram antes.",
"cooked.mealBoxes": "Doses para marmitas",
"cooked.portionsCooked": "Doses cozinhadas",
"cooked.rate": "Avaliar",
"cooked.title": "Como correu?",
"cooked.actualPortionsEaten": "Quantas porções comeram?",
"cooked.actualPortionsEatenHint": "O resto fica como sobras ou marmitas.",
"cooked.leftoverEstimatePortions": "Quantas porções de sobras?",
"cooked.leftoverEstimateHint": "Guardado como marmita se quiseres.",
"cooked.whoAte": "Quem comeu?",
"cooking.finish": "Concluído registar a refeição",
"cooking.keepAwake": "O ecrã fica ligado enquanto cozinha",
"cooking.scale": "Doses",
"cooking.step": "Passo {current} de {total}",
"cooking.approxTime": "Cerca de {time}",
"home.budget": "Orçamento alimentar",
"home.emptyInventory": "A despensa está vazia. Digitalize o frigorífico ou adicione manualmente.",
"home.expired": "Expirado",
"home.expiresIn_one": "Falta 1 dia",
"home.expiresIn_other": "Faltam {days} dias",
"home.expiresToday": "Expira hoje",
"home.household": "Agregado",
"home.inventory": "Despensa",
"home.mealBoxes": "Marmitas",
"home.moreItems_one": "+ mais 1 …",
"home.moreItems_other": "+ mais {count} …",
"home.pastBestBefore": "Validade ultrapassada cheire e prove primeiro",
"home.shopping": "Lista de compras",
"home.savedRecipes": "As tuas receitas guardadas",
"home.submitRecipe": "Envia a tua própria receita",
"home.inventorySubtitle": "Tudo o que tens em casa abre um local ou pesquisa em todo o stock.",
"home.openAll": "Tudo",
"home.open": "Abrir",
"home.location.fridge": "Frigorífico",
"home.location.freezer": "Congelador",
"home.location.pantry": "Despensa",
"home.location.garage_freezer": "Congelador da garagem",
"home.location.wine_fridge": "Garrafeira",
"nav.browseRecipes": "Explorar receitas",
"nav.savedRecipes": "Receitas guardadas",
"nav.kitchen": "Stock",
"nav.barcode": "Código de barras",
"nav.swap": "Trocar",
"home.thisWeek": "Esta semana",
"home.title": "Em casa",
"home.useSoon": "Usar em breve",
"home.useSoonHint": "„A consumir de preferência antes de” é sobre qualidade: cheire, observe e prove antes de deitar fora. Já a data-limite de consumo deve ser respeitada.",
"home.waste": "Desperdício",
"home.wasteWeek": "Desperdício esta semana",
"household.empty": "Ainda não tem um agregado. Crie um na configuração inicial ou junte-se com um código.",
"household.invite": "Convide com o código: {code}",
"household.locations": "Locais de armazenamento",
"household.members": "Membros",
"household.portionFactor": "×{factor} dose",
"household.private": "Privado por pessoa: objetivos, alergias, dados de saúde e histórico de refeições.",
"household.role.adult": "Adulto",
"household.role.child": "Criança",
"household.role.member": "Membro",
"household.role.owner": "Proprietário",
"household.shareCode": "Partilhe o código com a família para partilhar despensa, lista e plano.",
"household.shared": "Partilhado no agregado: despensa, lista de compras, plano semanal, marmitas e orçamento.",
"logmeal.manualTitle": "Manual",
"logmeal.mealTypeTitle": "Tipo de refeição",
"logmeal.photoTip": "Dica: fotografe o prato em Digitalizar e a app estima por si você confirma sempre.",
"logmeal.proteinPlaceholder": "proteína (g)",
"logmeal.quickSubtitle": "Regista os mesmos valores nutricionais da última vez.",
"logmeal.quickTitle": "Registo rápido",
"logmeal.validationBody": "Nome e calorias são necessários para o registo manual.",
"logmeal.validationTitle": "Preencha",
"logmeal.whatPlaceholder": "O que comeu?",
"mealbox.eat": "Comer agora",
"mealbox.eatBy": "Comer até {date}",
"mealbox.empty": "Sem marmitas de momento. Ao cozinhar, pode guardar doses aqui.",
"mealbox.enjoyBody": "A dose foi registada em O meu dia.",
"mealbox.enjoyTitle": "Bom apetite!",
"mealbox.guidanceNote": "O prazo recomendado é indicativo: confie no cheiro e no sabor.",
"mealbox.portionsLeft_one": "Falta 1 dose",
"mealbox.portionsLeft_other": "Faltam {count} doses",
"mealbox.title": "Marmitas",
"memory.delete": "Apagar",
"memory.deleteAll": "Apagar toda a memória",
"memory.deleteAllTitle": "Apagar toda a memória?",
"memory.empty": "O {brand} ainda não aprendeu nada sobre si.",
"memory.irreversible": "Isto não pode ser anulado.",
"memory.origin.ai_inferred": "Suposição da IA",
"memory.origin.observed": "Padrão observado",
"memory.origin.user_stated": "Disse-nos você",
"memory.pause": "Pausar",
"memory.paused": "Em pausa",
"memory.resume": "Retomar",
"memory.subtitle": "Transparência total. Corrija, pause ou apague a memória é sua.",
"memory.title": "O que o {brand} sabe sobre mim",
"memory.verified": "Verificado",
"memory.verify": "Correto",
"myday.calories": "Calorias",
"myday.carbs": "Hidratos",
"myday.estimateNote": "Valores com ~ são estimativas que pode ajustar.",
"myday.estimateRange": "{min}{max} kcal, provavelmente {kcal}",
"myday.fat": "Gorduras",
"myday.fiber": "Fibras",
"myday.kcalProtein": "{kcal} kcal · {protein} g de proteína",
"myday.logMeal": "Registar refeição",
"myday.mealType.breakfast": "Pequeno-almoço",
"myday.mealType.dessert": "Sobremesa",
"myday.mealType.dinner": "Jantar",
"myday.mealType.lunch": "Almoço",
"myday.mealType.snack": "Lanche",
"myday.noMeals": "Sem refeições registadas hoje.",
"myday.over": "{kcal} kcal acima do objetivo",
"myday.overRecommended": "Acima do recomendado",
"myday.protein": "Proteínas",
"myday.remaining": "Faltam {kcal} kcal",
"myday.salt": "Sal",
"myday.targetsNote": "Os objetivos são orientações, não aconselhamento médico.",
"myday.title": "O meu dia",
"myday.todaysMeals": "Refeições de hoje",
"onboarding.allergen.crustaceans": "Crustáceos",
"onboarding.allergen.eggs": "Ovos",
"onboarding.allergen.fish": "Peixe",
"onboarding.allergen.gluten": "Glúten",
"onboarding.allergen.milk": "Leite/lactose",
"onboarding.allergen.peanuts": "Amendoins",
"onboarding.allergen.sesame": "Sésamo",
"onboarding.allergen.soy": "Soja",
"onboarding.allergen.tree_nuts": "Frutos de casca rija",
"onboarding.allergies": "Alergias e intolerâncias",
"onboarding.allergyNote": "O filtro de alergias é sempre rigoroso pratos com os seus alergénios nunca são mostrados.",
"onboarding.birthYearPlaceholder": "Ano de nascimento",
"onboarding.bodyTitle": "Para objetivos calóricos pessoais (opcional)",
"onboarding.diet": "Como come?",
"onboarding.diet.flexitarian": "Flexitariano",
"onboarding.diet.omnivore": "Omnívoro",
"onboarding.diet.pescatarian": "Pescetariano",
"onboarding.diet.vegan": "Vegano",
"onboarding.diet.vegetarian": "Vegetariano",
"onboarding.diet.carnivore": "Carnivore",
"onboarding.diet.low_carb": "LCHF",
"onboarding.diet.nordic": "Nordic",
"onboarding.diet.paleo": "Paleo",
"onboarding.goal": "Qual é o seu objetivo principal?",
"onboarding.goal.build_muscle": "Ganhar músculo",
"onboarding.goal.cook_more": "Cozinhar mais em casa",
"onboarding.goal.less_waste": "Reduzir o desperdício",
"onboarding.goal.lose_weight": "Perder peso",
"onboarding.goal.lower_cost": "Gastar menos em comida",
"onboarding.goal.maintain_weight": "Manter o peso",
"onboarding.goal.more_protein": "Comer mais proteína",
"onboarding.heightPlaceholder": "Altura (cm)",
"onboarding.household": "O seu agregado",
"onboarding.householdCreate": "Criar agregado",
"onboarding.householdDefaultName": "Casa",
"onboarding.householdJoin": "Aderir com código",
"onboarding.householdName": "Nome do agregado",
"onboarding.inviteCode": "Código de convite",
"onboarding.mode": "Que nível de precisão quer?",
"onboarding.modeExact": "Modo exato",
"onboarding.modeExactDesc": "Pese a comida, introduza gramas, controlo total dos números.",
"onboarding.modeSimple": "Modo simples",
"onboarding.modeSimpleDesc": "Fotografe a comida, aceite estimativas, zero complicações.",
"onboarding.modesCombine": "Os modos podem combinar-se: simples no dia a dia, exato quando quiser.",
"onboarding.memoryTransparency": "Isto é guardado em \"O que {brand} sabe sobre mim\" e podes alterá-lo a qualquer momento.",
"onboarding.notMedical": "{brand} dá orientações não aconselhamento médico.",
"onboarding.stepBSubtitle": "Personaliza o teu perfil para melhores sugestões.",
"onboarding.stepBTitle": "Continuar configuração",
"onboarding.stepCSubtitle": "Opcional usado para objetivos calóricos pessoais.",
"onboarding.stepCTitle": "O teu perfil de saúde",
"onboarding.subtitle": "Tudo é opcional e pode ser alterado a qualquer momento. Quanto mais preencher, melhores as sugestões.",
"onboarding.title": "Fale-nos um pouco de si",
"onboarding.weightPlaceholder": "Peso (kg)",
"paywall.choose": "Escolher",
"paywall.fairUse": "Quota de utilização justa de análises de IA incluída.",
"paywall.family": "Family · até 6 pessoas",
"paywall.freeNote": "Grátis: 5 análises de IA/mês, despensa manual, receitas guardadas e registo simples.",
"paywall.household": "Household · até 3 pessoas",
"paywall.large": "Large Household · até 12 pessoas",
"paywall.perMonth": "{price}/mês",
"paywall.popular": "Mais popular",
"paywall.restore": "Restaurar compras",
"paywall.soonBody": "As compras ativam-se via App Store/Google Play quando a integração com as lojas for ligada (fase 7). O fluxo de backend já está pronto.",
"paywall.soonTitle": "Em breve!",
"paywall.subtitle": "O sistema operativo alimentar de todo o agregado: despensa ilimitada, plano semanal e partilha.",
"paywall.title": "{brand} Premium",
"paywall.trialActive_one": "Falta 1 dia de período experimental",
"paywall.trialActive_other": "Faltam {days} dias de período experimental",
"profile.aiScansUsed": "Digitalizações de IA: {used} / {total} este mês",
"profile.consent.anonymized_improvement": "Melhoria anonimizada da IA",
"profile.consent.health_integration": "Dados de saúde (Apple Health / Health Connect)",
"profile.consent.image_training": "As minhas fotos podem ser usadas para treino",
"profile.consent.location_weather": "Localização para sugestões conforme o tempo",
"profile.consent.personalization": "Funções pessoais (memória e perfil de gosto)",
"profile.consent.product_analytics": "Análise de produto",
"profile.consent.push_notifications": "Notificações push",
"profile.consents": "Consentimentos e dados",
"profile.consentsNote": "Os consentimentos são separados: as funções pessoais nunca exigem consentimento de treino.",
"profile.deleteAccount": "Eliminar conta",
"profile.deleteBody": "Todos os seus dados são apagados permanentemente conforme o RGPD.",
"profile.deleteTitle": "Apagar a conta?",
"profile.emailUnverified": "Endereço de e-mail não confirmado",
"profile.export": "Exportar os meus dados",
"profile.goals": "Objetivos e alimentação",
"profile.language": "Idioma",
"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": "Terminar sessão",
"profile.memory": "O que o {brand} sabe sobre mim",
"profile.memorySubtitle": "Veja, corrija, pause ou apague o que a plataforma aprendeu.",
"profile.modeLabel": "Modo:",
"profile.resendVerification": "Reenviar e-mail de confirmação",
"profile.subscription": "Subscrição",
"profile.title": "Perfil",
"profile.verificationSent": "Enviado! Verifique a caixa de entrada.",
"recipe.avgRating": "Média {avg} em {count} avaliações",
"recipe.cook": "Cozinhar agora",
"recipe.cost": "aprox. {amount}/dose",
"recipe.coverage.have": "Tens {percent}% em casa",
"recipe.coverage.missingCount": "Faltam {count}",
"recipe.coverage.haveAll": "Tens tudo o que precisas.",
"recipe.coverage.youAreMissing": "Falta-te: {names}",
"recipe.coverage.addToList": "Adicionar {count} à lista de compras",
"recipe.coverage.added": "Adicionado à lista de compras",
"recipe.coverage.addedBody": "Adicionados: {count}",
"recipe.iCookedThis": "Cozinhei isto",
"recipe.ingredients": "Ingredientes",
"recipe.optional": "(opcional)",
"recipe.notSafe": "Não se adequa às suas definições alimentares",
"recipe.perPortion": "por dose",
"recipe.portions_one": "1 dose",
"recipe.portions_other": "{count} doses",
"recipe.save": "Guardar",
"recipe.saved": "Guardada",
"recipe.steps": "Preparação",
"recipe.substitutions": "Substituir",
"recipe.time": "{min} min",
"scan.analyzing": "A analisar …",
"scan.barcode": "Código de barras",
"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": "Entendi",
"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": "Primeira verificação",
"scan.expiry": "Data de validade",
"scan.failed": "A análise falhou. Tente novamente ou adicione manualmente.",
"scan.freezer": "Congelador",
"scan.fridge": "Frigorífico",
"scan.ingredients": "Ingredientes",
"scan.nutrition": "Rótulo nutricional",
"scan.pantry": "Despensa",
"scan.plate": "Prato",
"scan.quotaLeft_one": "1 análise de IA restante este mês",
"scan.quotaLeft_other": "{count} análises de IA restantes este mês",
"scan.receipt": "Talão",
"scan.review.addItem": "+ Adicionar produto",
"scan.review.approveAll": "Guardar na despensa",
"scan.review.bestBeforeNote": "Data de qualidade: o alimento pode estar bom depois dela. Cheire e prove antes de deitar fora.",
"scan.review.dateKindBestBefore": "Preferencialmente antes de",
"scan.review.dateKindUseBy": "Data-limite de consumo",
"scan.review.datePlaceholder": "AAAA-MM-DD (opcional)",
"scan.review.itemPlaceholder": "Produto",
"scan.review.quantityPlaceholder": "Quantidade",
"scan.review.rejected": "Removido",
"scan.review.subtitle": "A IA às vezes hesita você decide. Edite, remova ou acrescente antes de guardar.",
"scan.review.title": "Reveja o resultado",
"scan.review.uncertain": "Incerto verifique",
"scan.review.unitPlaceholder": "Unidade (g, l, un. …)",
"scan.review.unknownItem": "Produto desconhecido",
"scan.review.useByNote": "Data de segurança: não coma depois desta data.",
"scan.subtitle": "Abasteça a despensa ou registe uma refeição com a câmara.",
"scan.costNote": "Cada foto conta como uma leitura da tua quota. O código de barras é sempre grátis.",
"scan.takePhoto": "Tirar foto",
"scan.tips.light": "Evite escuridão e sombras",
"scan.tips.move": "Afaste produtos que se tapam",
"scan.tips.overview": "Comece com uma foto geral",
"scan.tips.shelf": "Fotografe prateleira a prateleira",
"scan.tips.title": "Como obter a melhor análise",
"scan.title": "Digitalizar",
"shopping.addPlaceholder": "Adicionar artigo …",
"shopping.complete": "Terminar as compras",
"shopping.completeNote": "Os artigos marcados vão para a despensa.",
"shopping.completedBody_one": "1 produto foi adicionado à despensa.",
"shopping.completedBody_other": "{count} produtos foram adicionados à despensa.",
"shopping.completedTitle": "Feito!",
"shopping.empty": "A lista está vazia.",
"shopping.estimated": "aprox. {amount}",
"shopping.estimatedTotal": "Total estimado: aprox. {amount}",
"shopping.section.brod": "Pão",
"shopping.section.chark": "Charcutaria",
"shopping.section.dryck": "Bebidas",
"shopping.section.fisk": "Peixe",
"shopping.section.frukt_gront": "Fruta e legumes",
"shopping.section.frys": "Congelados",
"shopping.section.hygien_ovrigt": "Outros",
"shopping.section.konserver": "Conservas",
"shopping.section.kott_fagel": "Carne e aves",
"shopping.section.kryddor_bak": "Especiarias e pastelaria",
"shopping.section.mejeri": "Laticínios",
"shopping.section.skafferi": "Despensa",
"shopping.section.snacks": "Snacks",
"shopping.title": "Lista de compras",
"tabs.home": "Em casa",
"tabs.myDay": "O meu dia",
"tabs.scan": "Digitalizar",
"tabs.whatToEat": "O que vamos comer?",
"tabs.plan": "Plano",
"plan.today": "Hoje",
"plan.emptyDay": "Nada planeado",
"plan.portions": "{count} porções",
"plan.generate": "Gerar plano semanal",
"plan.generating": "A gerar plano…",
"plan.cooked": "Cozinhado",
"plan.skipped": "Ignorado",
"plan.activate": "Ativar plano",
"plan.createShopping": "Criar lista de compras",
"wte.coverage": "{pct}% em casa",
"wte.searchPlaceholder": "Pesquisar receitas, ex. panquecas…",
"wte.recommended": "Recomendado",
"wte.topPick": "Melhor escolha",
"wte.didYouMean": "Quis dizer {suggestion}?",
"wte.emptySearch": "Nenhuma receita corresponde à tua pesquisa.",
"wte.emptyHoliday": "Ainda não há receitas para esta ocasião.",
"cat.baking": "Pastelaria",
"wte.cravingPlaceholder": "Apetece-me … (ex.: cremoso, asiático, menos de 500 kcal)",
"wte.empty": "Ainda sem sugestões adicione comida à despensa ou alivie os filtros.",
"wte.mealBoxFirst": "Comida pronta em casa",
"wte.missing": "Falta: {items}",
"wte.refresh": "Novas sugestões",
"wte.subtitle": "Com base no que têm em casa, no que deve ser usado em breve e no que gostam.",
"wte.title": "O que vamos comer?",
"wte.whyTitle": "Porquê esta sugestão?",
"onboarding.primaryGoal": "Principal",
"home.trustStatus.up_to_date": "Atualizado",
"home.trustStatus.needs_check": "Alguns itens precisam de verificação",
"home.trustStatus.uncertain": "Inventário incerto faça uma verificação rápida",
"reconciliation.title": "Verificação rápida de stock",
"reconciliation.subtitle": "Confirme o que tem sobrando para obter melhores sugestões.",
"reconciliation.exists": "Ainda tenho",
"reconciliation.depleted": "Acabou",
"reconciliation.uncertain": "Incerto",
"reconciliation.adjustQuantity": "Ajustar quantidade",
"reconciliation.reason.planned_recipe": "Necessário em breve para uma receita",
"reconciliation.reason.expiring_soon": "Expira em breve",
"reconciliation.reason.high_value": "Alto valor",
"reconciliation.reason.low_confidence": "Quantidade estimada",
"reconciliation.reason.stale_trust": "Não verificado há algum tempo",
"reconciliation.reason.likely_depleted": "Provavelmente acaba em breve",
"reconciliation.done": "Concluído",
"reconciliation.next": "Próximo",
"reconciliation.empty": "Nada precisa de verificação agora. Muito bem!",
"reconciliation.tasteHint": "Passou do prazo de validade? Cheire e prove primeiro nunca desperdice comida desnecessariamente.",
"scan.diff.title": "Rever diferenças",
"scan.diff.subtitle": "Confirmar alterações do último scan.",
"scan.diff.newItem": "Novo item",
"scan.diff.quantityChanged": "Quantidade alterada",
"scan.diff.moved": "Movido",
"scan.diff.vanished": "Ausente na foto",
"scan.diff.unchanged": "Inalterado",
"scan.diff.accept": "Confirmar",
"scan.diff.reject": "Ignorar",
"scan.diff.acceptAll": "Confirmar tudo",
"scan.diff.noChanges": "Nenhuma diferença encontrada.",
"scan.diff.undo": "Desfazer",
"scan.diff.undoHint": "Cada alteração pode ser desfeita a partir da vista de detalhes do item.",
"cooked.portionsSumExceedsPlanned": "As porções comidas e as sobras não podem ultrapassar o número total de porções.",
"cooked.undoWindowExpired": "Esta sessão de cozinha já não pode ser desfeita. A janela de 24 horas expirou.",
"cooked.leftoverLessThanBox": "As sobras têm de ser pelo menos tantas quanto o número de porções da marmita.",
"mealbox.undoConfirmTitle": "Desfazer cozinha?",
"mealbox.undoConfirmBody": "Isto reverte a dedução do inventário e a marmita para esta sessão de cozinha.",
"mealbox.undoSuccess": "Sessão de cozinha desfeita.",
"consent.title": "Antes de começar",
"consent.body": "Para usar a Cibello precisas de aceitar os nossos termos. As fotos que tiras na app (frigorífico, embalagens, pratos) são usadas para treinar e melhorar a IA da Cibello faz parte dos termos.",
"consent.termsLink": "Ler os Termos de Utilização",
"consent.privacyLink": "Ler a Política de Privacidade",
"consent.checkbox": "Li e aceito os Termos de Utilização e a Política de Privacidade.",
"consent.submit": "Aceitar e continuar",
"scan.meal.title": "Registar refeição a partir da foto",
"scan.meal.estimateNote": "Estimado a partir da tua foto ajusta antes de guardar.",
"scan.meal.calories": "Calorias estimadas",
"scan.meal.namePlaceholder": "O que comeste? (opcional)",
"scan.meal.components": "Reconhecido no prato",
"scan.meal.noEstimate": "Não foi possível estimar as calorias a partir da foto.",
"swap.title": "Byt ut måltiden",
"swap.subtitle": "Välj en annan rätt:",
"plan.swapMeal": "Byt rätt",
"plan.chooseMeals": "Planera veckan välj måltider per dag:",
"scan.progress.analyzing": "Analyserar bilden…",
"scan.progress.finding": "Hittar ingredienser…",
"scan.progress.matching": "Matchar mot ditt kök…",
"scan.progress.almost": "Snart klar…",
"home.completeProfile.title": "Gör appen smartare",
"home.completeProfile.body": "Berätta om kost och allergier så blir förslagen mer personliga (ca 30 sek).",
"onboarding.religious": "Religiös kosthållning",
"onboarding.religious.none": "Ingen",
"onboarding.religious.halal": "Halal (inget fläsk)",
"onboarding.religious.kosher": "Kosher",
"onboarding.religious.hindu_no_beef": "Inget nötkött",
"onboarding.religious.buddhist_vegetarian": "Buddhistisk vegetarisk",
"onboarding.consent.personalization.title": "Gör Cibello till din",
"onboarding.consent.personalization.body": "Ju mer Cibello lär känna dig, desto bättre blir det förslag som passar din smak, dina allergier och din vardag. Allt appen lär sig ser du i \"Vad Cibello vet om dig\" och kan ändra eller radera när du vill. Vi rekommenderar att ha den på.",
"onboarding.consent.personalization.yes": "Ja, gör appen personlig",
"onboarding.consent.skip": "Inte nu",
"onboarding.consent.image_training.title": "Var med och göra Cibello smartare",
"onboarding.consent.image_training.body": "Låt dina foton hjälpa till att träna vår AI så att den känner igen svenska varor och kvitton allt bättre för dig och alla andra. Din skanning fungerar lika bra oavsett, men varje ja gör appen vassare.",
"onboarding.consent.image_training.yes": "Ja, jag hjälper till",
"onboarding.consent.image_training.no": "Nej tack",
"onboarding.consent.dataPrivacy.title": "Data & integritet",
"onboarding.consent.dataPrivacy.body": "Två saker är på för att göra appen bättre för alla. Du kan stänga av dem när du vill.",
"onboarding.consent.anonymized_improvement.body": "Anonym förbättring: helt avidentifierad, aggregerad statistik aldrig dina bilder eller något som pekar ut dig hjälper oss göra förslagen bättre.",
"onboarding.consent.product_analytics.body": "Produktanalys: genom att se hur appen används kan vi fixa buggar och förbättra det som krånglar. Pseudonymt, och vi säljer aldrig din data.",
"onboarding.consent.dataPrivacy.continue": "Fortsätt",
"onboarding.consent.health_integration.body": "Koppla Apple Health / Health Connect så kan Cibello sätta kalori- och näringsmål utifrån just dig. Hälsodata är extra känslig och är av tills du själv slår på den.",
"onboarding.consent.location_weather.body": "Med din plats föreslår vi mat som passar vädret värmande när det är kallt, grillat när solen är framme.",
"onboarding.consent.push_notifications.body": "Få en påminnelse innan maten går ut och tips när det är dags att handla eller laga.",
"barcode.info.title": "Valores por 100 g",
"barcode.info.kcal": "Energia",
"barcode.info.protein": "Proteínas",
"barcode.info.carbs": "Hidratos de carbono",
"barcode.info.sugar": " dos quais açúcares",
"barcode.info.fat": "Gordura",
"barcode.info.satfat": " das quais saturadas",
"barcode.info.monofat": " das quais monoinsaturadas",
"barcode.info.polyfat": " das quais poli-insaturadas",
"barcode.info.fiber": "Fibra",
"barcode.info.salt": "Sal",
"barcode.info.allergens": "Alergénios",
"barcode.info.mayContain": "Pode conter vestígios de",
"barcode.info.ingredients": "Ingredientes",
"barcode.info.noNutrition": "Ainda sem informação nutricional para este produto.",
"barcode.info.scanAgain": "Voltar a ler",
"barcode.info.sourceOwn": "Fonte: base de produtos própria",
"barcode.info.sourceOff": "Fonte: Open Food Facts",
"submit.title": "Envie a sua própria receita",
"submit.subtitle": "Preencha o modelo e a nossa IA aperfeiçoa e publica a receita — creditada com o seu nome.",
"submit.titleLabel": "Nome da receita",
"submit.titlePlaceholder": "ex. Almôndegas da avó",
"submit.ingredientsLabel": "Ingredientes (um por linha, com quantidade)",
"submit.ingredientsPlaceholder": "2 dl de farinha\n500 g de carne picada\n1 cebola\n1 dl de leite\n1 c. de chá de sal",
"submit.stepsLabel": "Preparação",
"submit.stepsPlaceholder": "1. Pique e refogue a cebola.\n2. Misture carne, ovo, leite e especiarias.\n3. Faça as bolinhas e aloure-as.",
"submit.button": "Enviar a receita",
"submit.sending": "A enviar …",
"submit.reviewNote": "Comparamos com as receitas existentes, aperfeiçoamos o texto ao mesmo nível e publicamos automaticamente. Duplicados não são publicados.",
"submit.successTitle": "Obrigado a sua receita foi enviada!",
"submit.successBody": "A nossa IA revê e aperfeiçoa. Será publicada em breve, creditada com o seu nome, e aparecerá entre as receitas.",
"submit.premiumTitle": "As receitas próprias fazem parte do Premium",
"submit.premiumBody": "Enviar e publicar as suas próprias receitas faz parte do Premium — um plano pago (não a versão de teste). Faça upgrade para continuar.",
"submit.seePlans": "Ver planos",
"submit.backHome": "Voltar",
"cookedLog.title": "Cozinhou este prato?",
"cookedLog.subtitle": "Registe que o fez e descontamos os ingredientes do seu stock. O que faltar em casa é simplesmente ignorado.",
"cookedLog.button": "Sim, cozinhei",
"cookedLog.confirm": "Descontar ingredientes para {count} porções do seu stock?",
"cookedLog.doneTitle": "Registado!",
"cookedLog.doneBody": "Os ingredientes foram descontados do seu stock e a refeição fica registada.",
"plan.addMeal": "Adicionar uma refeição",
"plan.regenerate": "Replanear a semana",
"season.midsommar": "Solstício de verão",
"season.jul": "Natal",
"season.påsk": "Páscoa",
"season.nyår": "Véspera de Ano Novo",
"season.kraftskiva": "Festa dos lagostins",
"season.surstromming": "Estreia do arenque fermentado",
"season.lucia": "Santa Luzia",
"season.valborg": "Noite de Valpúrgia",
"season.grillsasong": "Época dos grelhados",
"season.skolstart": "Regresso às aulas",
"season.alla-hjartans-dag": "Dia dos Namorados",
"season.halloween": "Halloween",
"season.oktoberfest": "Oktoberfest",
"season.eid": "Eid al-Fitr",
"kitchen.itemCount": "{count} itens",
"kitchen.selectedCount": "{count} selecionados",
"kitchen.removeSelected": "Remover selecionados ({count})",
"scan.review.possibleDuplicate": "Parece já existir: {name}",
"auth.passwordHint": "pelo menos 8 caracteres",
"recipe.proteinTag": "{g} g de proteína",
"onboarding.allergen.celery": "Aipo",
"onboarding.allergen.mustard": "Mostarda",
"onboarding.allergen.sulphites": "Sulfitos",
"onboarding.allergen.lupin": "Tremoço",
"onboarding.allergen.molluscs": "Moluscos",
"myday.computedNote": "Os valores são calculados a partir de receitas e dados alimentares e mostrados como estimativas.",
"plan.rescheduleReason": "{title} foi movido para aqui porque os ingredientes devem ser usados primeiro.",
"scanDiff.reason.moved_and_qty": "Movido e quantidade alterada",
"scanDiff.reason.moved": "Movido para outro local",
"scanDiff.reason.qty_changed": "Quantidade alterada",
"scanDiff.reason.unchanged": "Inalterado",
"scanDiff.reason.new_item": "Novo item na foto",
"scanDiff.reason.vanished": "Ausente na nova foto — confirme que acabou"
}