Files
Cibello-app/apps/mobile/src/locales/pt/common.json
T
Claude 2f596060b4 feat(streckkod): okand produkt -> fota forpackning -> spara i delad katalog
Okand streckkod erbjuder nu 'Fota forpackningen' direkt i streckkodsvyn.
Fotot lases av (naring/allergener/innehall) och produkten UPSERTas i den
DELADE products-katalogen kopplat till GTIN (dataSource=user_scanned,
verificationStatus=unverified, createdByUserId=anvandaren) sa nasta person
som skannar samma kod far den direkt. Produkten laggs INTE till i lagret.

Naringsdeklaration-knappen tas bort som egen ingang - flodet vavs in i
streckkodsskanningen. product_package/nutrition_label -> READ_NUTRITION_LABEL
avslutar som 'completed' med result.product (ingen awaiting_confirmation).

- validation: barcode-falt i createScanInput.context
- worker: ny gren i processScanJob som skriver till products + returnerar tidigt
- mobil: inline contributePhoto (fota -> ladda upp -> polla -> visa info)
- scan: ta bort naringsdeklaration-knappen
- i18n: barcode.contributing.* + uppdaterad unknownBody pa 12 sprak

Verifierat: typecheck (validation/worker/api/mobil), worker 23/23, api 104/104,
och repro mot testdatabas (products-upsert, ingen inventory, idempotent aterskann).
2026-08-20 11:57:58 +00:00

496 lines
28 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.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",
"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.timer": "Iniciar temporizador",
"cooking.timerDone": "Pronto!",
"cooking.timerRunning": "Faltam {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.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.iCookedThis": "Cozinhei isto",
"recipe.ingredients": "Ingredientes",
"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.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.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.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"
}