316ba3cb62
- 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>
614 lines
35 KiB
JSON
614 lines
35 KiB
JSON
{
|
||
"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"
|
||
}
|