/** Portuguese (pt) UI pack — keys must stay in sync with en.ts. */
exportconstpt: MessageDict={
"app.name":"Descrybe",
"app.home":"Início Descrybe",
"common.cancel":"Cancelar",
"common.save":"Guardar alterações",
"common.saveShort":"Guardar",
"common.continue":"Continuar",
"common.open":"Abrir",
"common.markDone":"Marcar como concluído",
"common.viewAll":"Ver tudo",
"common.close":"Fechar",
"common.askAdmin":"Peça a um administrador da empresa",
"common.you":"Você",
"common.active":"Ativo",
"common.pending":"Pendente",
"common.email":"E-mail",
"common.password":"Palavra-passe",
"common.name":"O seu nome",
"common.viewPricing":"Ver preços",
"common.backToSignIn":"Voltar ao início de sessão",
"common.signingOut":"A terminar sessão…",
"common.signOutAndContinue":"Terminar sessão e continuar",
"common.staySignedIn":"Manter sessão iniciada",
"a11y.skipToContent":"Saltar para o conteúdo",
"theme.switchToDark":"Mudar para tema escuro",
"theme.switchToLight":"Mudar para tema claro",
"header.signOut":"Terminar sessão",
"header.signingOut":"A terminar sessão…",
"status.emDash":"—",
"status.pending":"Pendente",
"status.processing":"A processar",
"status.completed":"Concluído",
"status.failed":"Falhou",
"status.cancelled":"Cancelado",
"nav.section.overview":"Visão geral",
"nav.section.catalog":"Catálogo",
"nav.section.feeds":"Feeds",
"nav.section.stores":"Lojas",
"nav.section.processing":"A processar",
"nav.section.marketing":"Marketing",
"nav.section.integrations":"Integrações",
"nav.section.account":"Conta",
"nav.section.platform":"Plataforma",
"nav.dashboard":"Painel",
"nav.products":"Produtos",
"nav.categories":"Categorias",
"nav.attributes":"Atributos",
"nav.fields":"Campos",
"nav.feeds":"Feeds",
"nav.exports":"Exportações",
"nav.stores":"Lojas",
"nav.jobs":"Tarefas",
"nav.campaigns":"Campanhas",
"nav.calendar":"Calendário",
"nav.seo":"SEO",
"nav.brand":"Marca",
"nav.reviews":"Avaliações",
"nav.ai":"IA",
"nav.email":"E-mail",
"nav.billing":"Faturação",
"nav.settings":"Definições",
"nav.support":"Suporte",
"nav.admin":"Admin",
"nav.main":"Navegação principal",
"nav.sidebar":"Barra lateral da app",
"nav.close":"Fechar navegação",
"nav.closeMenu":"Fechar menu",
"nav.open":"Abrir navegação",
"nav.commandPalette":"Pesquisar páginas",
"nav.commandPaletteLabel":"Pesquisar",
"auth.login.title":"Iniciar sessão",
"auth.login.description":"Utilize o seu e-mail e palavra-passe Descrybe.",
"auth.login.submit":"Iniciar sessão",
"auth.login.submitting":"A iniciar sessão…",
"auth.login.failed":"Falha no início de sessão",
"auth.login.passwordNotSet":"Esta conta ainda precisa de uma palavra-passe. Abra o link do convite ou peça a um administrador para emitir um novo.",
"auth.login.setPasswordFirstTitle":"Defina primeiro a palavra-passe:",
"auth.login.setPasswordFirstBody":"utilize o link do convite do seu e-mail. Se o link foi para um endereço antigo (desvio de e-mail), peça a um administrador da empresa para emitir um novo convite de definição de palavra-passe para {email}.",
"auth.login.yourEmail":"o seu e-mail",
"auth.login.platformAdminsReissue":"Os administradores da plataforma podem reemitir a partir de",
"auth.login.haveToken":"Tem um token? Abrir aceitar convite",
"auth.login.noAccount":"Sem conta?",
"auth.login.createCompany":"Criar empresa",
"auth.login.haveInvite":"Tem um convite ou um link para definir a palavra-passe?",
"auth.login.acceptInvite":"Aceitar convite",
"auth.login.forgotPassword":"Esqueceu a palavra-passe?",
"auth.login.forgotPasswordHelp":"Introduza o seu e-mail na página de redefinição. Se nunca definiu uma palavra-passe, use o link de convite / definir palavra-passe.",
"auth.forgot.title":"Esqueceu a palavra-passe",
"auth.forgot.description":"Introduza o e-mail da conta. Se corresponder a uma conta ativa, enviaremos um link de redefinição.",
"auth.forgot.submit":"Enviar link de redefinição",
"auth.forgot.submitting":"A enviar…",
"auth.forgot.failed":"Não foi possível pedir a redefinição",
"auth.forgot.sentTitle":"Verifique o seu e-mail",
"auth.forgot.sentBody":"Se existir uma conta para esse endereço, o link de redefinição está a caminho. O link expira em uma hora.",
"auth.forgot.backToSignIn":"Voltar ao início de sessão",
"auth.reset.title":"Redefinir palavra-passe",
"auth.reset.description":"Escolha uma nova palavra-passe para a sua conta Descrybe (pelo menos 8 caracteres).",
"auth.reset.submit":"Guardar nova palavra-passe",
"auth.reset.submitting":"A guardar…",
"auth.reset.failed":"Não foi possível redefinir a palavra-passe",
"auth.invite.description":"Defina a sua palavra-passe para aderir à empresa. O seu administrador atribuiu Membro (trabalho diário) ou Admin (equipa e faturação).",
"auth.invite.setPasswordDescription":"Escolha uma palavra-passe para a sua conta Descrybe migrada (pelo menos 8 caracteres).",
"auth.invite.checking":"A verificar convite…",
"auth.invite.forEmail":"Convite para {email}.",
"auth.invite.linkRecognized":"Link de convite reconhecido. Introduza uma palavra-passe abaixo para continuar — o segredo não é mostrado nesta página.",
"auth.invite.resetLinkRecognized":"Link de redefinição reconhecido. Introduza uma palavra-passe abaixo para continuar — o segredo não é mostrado nesta página.",
"auth.invite.tokenLabel":"Token de convite",
"auth.invite.resetTokenLabel":"Token de redefinição",
"auth.invite.tokenHelp":"Cole o token do e-mail de convite. É mascarado neste campo.",
"auth.invite.passwordHint":"Pelo menos 8 caracteres. Sem outras regras de complexidade.",
"auth.invite.verifyFailed":"Não foi possível verificar o convite",
"auth.invite.verifySetPasswordFailed":"Não foi possível verificar o link de definição de palavra-passe",
"auth.invite.acceptFailed":"Não foi possível aceitar o convite",
"auth.invite.setPasswordFailed":"Não foi possível definir a palavra-passe",
"auth.invite.expired":"Este convite é inválido ou expirou. Peça ao administrador da empresa para enviar um novo convite e abra o novo link (ou cole o novo token abaixo).",
"auth.invite.setPasswordExpired":"Este link de definição de palavra-passe é inválido ou expirou. Peça a um administrador da empresa ou da plataforma para o reemitir e abra o novo link (ou cole o novo token abaixo).",
"auth.invite.emailMismatchDefault":"Tem sessão iniciada com um e-mail diferente deste convite.",
"auth.invite.expiredFooter":"Link expirado? Peça a um administrador para o reemitir — não há API de reenvio self-service. Administradores da plataforma:",
"auth.invite.doneDescription":"A sua conta está pronta. Em seguida, abra o painel para trabalhar com feeds e produtos, ou reveja as definições da empresa.",
"auth.invite.doneSetPasswordDescription":"Inicie sessão com o seu e-mail e a nova palavra-passe para abrir o seu espaço de trabalho.",
"auth.invite.openDashboard":"Abrir painel",
"auth.invite.companySettings":"Definições da empresa",
"auth.invite.goToSignIn":"Ir para início de sessão",
"auth.invite.afterSignInNote":"Após o início de sessão chega ao seu espaço de trabalho — o tour de configuração inicial é ignorado.",
"auth.invite.mismatchTitle":"Conta errada para este convite",
"auth.invite.mismatchDescription":"Este link é para um e-mail diferente daquele com que tem sessão iniciada. Termine a sessão para continuar como o utilizador convidado, ou mantenha a sessão e peça a um administrador para reemitir o convite.",
"auth.invite.mismatchDetail":"Sessão iniciada como {session}, mas este convite é para {invite}.",
"auth.invite.mismatchFallback":"O e-mail da sessão não corresponde a este convite.",
"auth.invite.switchAccountTitle":"Mudar de conta:",
"auth.invite.switchAccountBody":"termine a sessão e conclua este formulário com o e-mail convidado{emailSuffix}.",
"auth.invite.reissueTitle":"Caminho de reemissão:",
"auth.invite.reissueBody":"se o seu e-mail real de início de sessão mudou (desvio de e-mail), peça a um administrador da empresa para revogar este convite e enviar um novo para o e-mail que utiliza para iniciar sessão. Os administradores da plataforma também podem reemitir links de definição de palavra-passe em Admin → Utilizadores.",
"locale.switcher":"Idioma da interface",
"locale.menu":"Escolher idioma da interface",
"locale.label":"Idioma do painel",
"locale.help":"Altera as etiquetas da navegação e das definições. O idioma do conteúdo gerado é definido separadamente em Empresa.",
"settings.contentLanguage":"Idioma do conteúdo",
"settings.contentLanguageHelp":"Idioma usado para títulos, descrições e outros conteúdos gerados",
"settings.tab.profile":"Perfil",
"settings.tab.company":"Empresa",
"settings.tab.alerts":"Alertas",
"settings.tab.apiKeys":"Chaves API",
"settings.tab.team":"Equipa",
"settings.title":"Definições",
"settings.description":"Conta, empresa, chaves API e equipa.",
"settings.accessDenied":"Não tem permissão para abrir as definições da empresa. Peça ajuda a um administrador da empresa.",
"settings.loadFailed":"Falha ao carregar as definições",
"settings.profileHeading":"Perfil",
"settings.personalInfo":"Informação pessoal",
"settings.personalInfoHelp":"Atualize os seus dados pessoais",
"settings.firstName":"Nome próprio",
"settings.firstNamePlaceholder":"O seu nome próprio",
"settings.lastName":"Apelido",
"settings.lastNamePlaceholder":"O seu apelido",
"settings.email":"E-mail",
"settings.profileUpdated":"Perfil atualizado.",
"settings.profileUpdateFailed":"Não foi possível atualizar o perfil",
"settings.role.member":"Membro",
"settings.role.admin":"Admin",
"settings.teamHeading":"Membros da equipa",
"settings.inviteUser":"Convidar utilizador",
"settings.teamAdminOnly":"Apenas administradores da empresa podem convidar, promover, despromover ou remover colegas.",
"settings.shareAcceptLink":"Partilhar link de aceitação",
"settings.shareAcceptLinkHelp":"O e-mail de saída não está configurado. Copie este link de utilização única e envie-o ao convidado. Definirá uma palavra-passe (pelo menos 8 caracteres) e aderirá com o papel que escolheu.",
"settings.acceptLinkLabel":"Link de aceitação de convite de utilização única",
"settings.copyLink":"Copiar link",
"settings.linkCopied":"Link de aceitação copiado.",
"settings.table.email":"E-mail",
"settings.table.role":"Papel",
"settings.table.status":"Estado",
"settings.table.joined":"Adesão / expira",
"settings.table.actions":"Ações",
"settings.teamForbidden":"Não tem permissão para ver a lista da equipa. Peça ajuda a um administrador da empresa.",
"settings.noTeammates":"Ainda sem colegas",
"settings.noTeammatesHelp":"Convide colegas como Membro (produtos e feeds) ou Admin (equipa e definições da empresa). Os convites pendentes aparecem aqui até serem aceites.",
"settings.noTeammatesMemberHelp":"Ainda não há colegas listados. Peça a um administrador da empresa para enviar convites.",
"settings.memberActions":"Ações do membro",
"settings.makeAdmin":"Tornar admin",
"settings.makeMember":"Tornar membro",
"settings.removeMember":"Remover",
"settings.revokeInvite":"Revogar convite",
"settings.needOneAdmin":"As empresas precisam de pelo menos um administrador",
"settings.expires":"Expira a {date}",
"settings.invalidEmail":"Introduza um endereço de e-mail válido.",
"settings.inviteCreatedNoMail":"Convite criado para {email} como {role}. Copie o link de aceitação abaixo e partilhe-o — o e-mail de saída não está configurado.",
"settings.inviteSent":"Convite enviado para {email} como {role}. Deve abrir o e-mail e aceitar antes de expirar.",
"settings.inviteFailed":"Não foi possível enviar o convite",
"settings.revokeConfirm":"Revogar este convite?",
"settings.revoked":"Convite revogado.",
"settings.revokeFailed":"Não foi possível revogar o convite",
"settings.removeConfirm":"Remover {email} desta empresa?",
"settings.memberRemoved":"{email} removido.",
"settings.removeFailed":"Não foi possível remover o utilizador",
"settings.roleChangeConfirm":"{action} {email} para {role}?",
"settings.roleChanged":"{email} é agora {role}.",
"settings.roleChangeFailed":"Não foi possível atualizar o papel",
"settings.promote":"Promover",
"settings.demote":"Despromover",
"settings.inviteTitle":"Convidar colega",
"settings.inviteDescription":"Receberão um link para definir uma palavra-passe (pelo menos 8 caracteres) e aderir a esta empresa.",
"settings.inviteRoleHint":"Os membros gerem produtos e feeds. Os administradores também podem convidar colegas e alterar as definições da empresa.",
"settings.sendInvite":"Enviar convite",
"settings.companyHeading":"Definições da empresa",
"settings.activeCompany":"Empresa ativa",
"settings.creditsOverview":"Resumo de créditos",
"settings.plan":"Plano",
"settings.used":"Usado",
"settings.companyInfo":"Informação da empresa",
"settings.companyInfoHelp":"Atualize os detalhes da empresa",
"settings.companyName":"Nome da empresa",
"settings.companyNamePlaceholder":"O nome da sua empresa",
"settings.contentSettings":"Definições de conteúdo",
"settings.mergeProducts":"Unir produtos com o mesmo GTIN",
"settings.emailIntegration":"Integração de e-mail",
"settings.aiIntegrations":"Integrações de IA",
"settings.alertsHeading":"Alertas do operador",
"settings.inAppToasts":"Toasts na aplicação",
"settings.emailAlerts":"Alertas por e-mail",
"settings.apiKeysHeading":"Chaves API",
"settings.createApiKey":"Criar chave API",
"settings.createApiKeyShort":"Criar chave API",
"settings.createApiKeyTitle":"Criar chave API",
"settings.apiKeyLabel":"Chave API",
"settings.keyName":"Nome da chave",
"settings.storeKeySafe":"Guarde-a num local seguro — não poderá ver o segredo completo de novo.",
"settings.apiKeysIntro":"Crie uma chave API da empresa para chamar os endpoints públicos /api/v1. O segredo completo é mostrado apenas uma vez ao criar — copie-o de imediato.",
"settings.apiKeysUseWhere":"Envie-a como Authorization: Bearer <key> (preferido) ou X-API-Key.",
"settings.apiKeysDocsLink":"Documentação de autenticação da API",
"settings.apiKeyOnceWarning":"Esta é a única vez que o segredo completo é mostrado. Copie-o agora antes de fechar este diálogo.",
"settings.table.name":"Nome",
"settings.table.key":"Chave",
"settings.table.lastUsed":"Última utilização",
"dashboard.demoSandbox":"Sandbox de demonstração",
"dashboard.demoEmptyTitle":"A sandbox de demonstração está vazia",
"dashboard.demoEmptyHint":"A sandbox de demonstração está vazia — mude para A1 ou ligue um feed para ver estatísticas reais do catálogo.",
"dashboard.overviewTitle":"Visão geral",
"dashboard.quickLinks":"Ligações rápidas",
"dashboard.whatsNew":"Novidades",
"dashboard.startTutorial":"Iniciar tutorial",
"dashboard.resumeTutorial":"Retomar tutorial",
"dashboard.restartTutorial":"Reiniciar tutorial",
"dashboard.tourTopics":"Tópicos do tour",
"dashboard.browseTutorialSections":"Explorar secções do tutorial",
"dashboard.connectFeed":"Ligar um feed",
"dashboard.processProducts":"Processar produtos",
"dashboard.openProducts":"Abrir produtos",
"dashboard.welcomeTo":"Bem-vindo a {name}",
"dashboard.trialBadge":"Teste",
"dashboard.actions":"Ações do painel",
"dashboard.emptyPaygHint":"A Descrybe importa um catálogo, enriquece e processa, e depois exporta ou envia para as lojas. Use Primeiros passos abaixo.",
"dashboard.emptyCreditsHint":"A Descrybe importa um catálogo, enriquece e processa, e depois exporta ou envia para as lojas. Tem {credits} — comece com Primeiros passos abaixo.",
"dashboard.workflowTitle":"Fluxo do catálogo",
"dashboard.recentActivity":"Atividade recente",
"dashboard.loadFailed":"Falha ao carregar o painel",
"dashboard.workspaceFallback":"Este espaço de trabalho",
"dashboard.jobFallback":"Trabalho {id}",
"dashboard.workflow.feeds.connect":"Ligar uma origem",
"dashboard.workflow.processRun":"Executar tarefas de IA",
"dashboard.workflow.export":"Exportar",
"dashboard.workflow.exportReady":"Modelos e transferência",
"dashboard.workflow.exportMap":"Mapear e exportar",
"dashboard.workflowHint":"Catálogo a entrar → enriquecer / processar → exportar ou enviar para lojas. Salte para o passo seguinte para {name}.",
"dashboard.overviewHint":"Totais em direto para {name}",
"dashboard.demoEmptyMessage":"Mude para A1 (ou outra empresa com dados) no cabeçalho, ou ligue um feed aqui para preencher esta sandbox.",
"dashboard.emptyTitle":"Importe um catálogo",
"dashboard.emptyMessage":"Catálogo a entrar → enriquecer / processar → exportar ou enviar para lojas. Comece com Primeiros passos abaixo (ou ligue um feed / carregue um CSV).",
"dashboard.connectFeedAnyway":"Ligar feed mesmo assim",
"dashboard.connectFeedShort":"Ligar feed",
"dashboard.uploadCsv":"Carregar CSV",
"dashboard.goToBilling":"Ir para Faturação",
"dashboard.freePlanTitle":"Está no plano Free",
"dashboard.freePlanMessageWithLimit":"{used} de {max} produtos usados. O mapeamento de feeds, a limpeza básica e as etiquetas energéticas da UE (EPREL) estão incluídos; atualize para títulos e descrições com IA e mais capacidade.",
"dashboard.freePlanMessage":"O mapeamento de feeds, a limpeza básica e as etiquetas energéticas da UE (EPREL) estão incluídos; atualize para títulos e descrições com IA e mais capacidade.",
"dashboard.outOfCreditsTitle":"Ficou sem créditos de IA",
"dashboard.outOfCreditsMessage":"Compre mais créditos ou atualize o plano para continuar a processar.",
"dashboard.productLimitTitle":"Limite de produtos atingido",
"dashboard.productLimitMessage":"O seu plano {plan} permite {max} produtos ({count} no catálogo). Atualize para processar mais.",
"dashboard.productLimitMessageFull":"O limite de produtos do plano {plan} foi atingido. Atualize para processar mais.",
"dashboard.comparePlans":"Comparar planos",
"dashboard.viewPlans":"Ver planos",
"dashboard.trialTitle":"Teste · {plan}",
"dashboard.trialMessageDated":"O teste termina a {date}. {credits} créditos restantes.",
"dashboard.trialMessage":"{credits} créditos restantes no seu teste.",
"dashboard.lowCreditsTitle":"Créditos a esgotar-se",
"dashboard.lowCreditsMessage":"Restam {remaining} de {total} créditos. Recarregue ou atualize antes de as tarefas pararem.",
"dashboard.latestJobs":"Últimas tarefas de processamento",
"dashboard.noJobsEmpty":"Ainda sem tarefas — importe produtos primeiro.",
"dashboard.noJobsReady":"Sem tarefas recentes. Inicie uma em Produtos quando estiver pronto.",
"dashboard.startJob":"Iniciar um trabalho a partir de Produtos",
"dashboard.quickLinksHint":"Feeds, produtos, tarefas e exportação.",
"dashboard.feedsImportMap":"Importar e mapear",
"dashboard.productsBrowse":"Explorar e processar",
"dashboard.jobsMonitor":"Monitorizar tarefas",
"dashboard.exportsTemplates":"Modelos e transferência",
"activation.title":"Primeiros passos",
"activation.description":"A Descrybe importa um catálogo, enriquece e processa, e depois exporta ou envia para as lojas. Conclua o passo atual e continue — o tour demo explica os ecrãs sem alterar o progresso da lista.",
"activation.descriptionShort":"Comece pelo passo destacado abaixo — uma ação de cada vez. Ligar a loja é opcional.",
"activation.nextCta":"Fazer este passo",
"activation.valueProp":"A Descrybe importa um catálogo, enriquece e processa, e depois exporta ou envia para as suas lojas.",
"activation.alreadyDone":"Já feito",
"activation.skipForNow":"Ignorar por agora",
"activation.showAllSteps":"Mostrar os {total} passos",
"activation.showFewerSteps":"Mostrar menos passos",
"activation.corePathLabel":"Em resumo",
"activation.corePath":"Catálogo a entrar → Enriquecer / processar → Exportar ou enviar para lojas",
"activation.storeWizardHint":"Não é necessário para feeds ou exportações — ignore a menos que queira enviar produtos para uma loja ativa.",
"activation.focus.map":"Seguinte: abra Map num feed, associe colunas e guarde. Adicione primeiro um feed se a lista estiver vazia.",
"activation.focus.sync":"Seguinte: sincronize uma amostra depois de guardar o mapeamento. Use Sync num feed mapeado — evite origens sem mapa.",
"activation.focus.dismiss":"Fechar dica",
"activation.dismiss":"Dispensar lista",
"hypercare.report.title":"Hypercare de cutover",
"hypercare.report.message":"Dados em falta ou incorretos após a migração? Reporte para podermos corrigir o seu espaço de trabalho.",
"hypercare.report.cta":"Reportar dados em falta ou incorretos",
"hypercare.report.dismiss":"Dispensar",
"hypercare.report.adminTriage":"Abrir fila de hypercare",
"etl.gaps.title":"What did not migrate",
"etl.gaps.message":"These areas were intentionally left empty or partial after the Descrybe platform cutover. Nothing is “broken” — recreate or reconnect as needed.",
"etl.gaps.dismiss":"Dismiss",
"etl.gaps.apiKeys.title":"API keys",
"etl.gaps.apiKeys.body":"Legacy API key secrets were not migrated. Create a new key to restore API access — the secret is shown only once.",
"etl.gaps.apiKeys.cta":"Open API keys",
"etl.gaps.blobs.title":"File contents (blobs)",
"etl.gaps.blobs.body":"Upload records may exist as metadata only. File bytes were not copied — re-upload CSVs or resync object storage if you need the originals.",
"etl.gaps.blobs.countHint":"{count} file records are metadata-only (bytes were not migrated).",
"etl.gaps.blobs.cta":"Open Files",
"etl.gaps.jobs.title":"Processing history",
"etl.gaps.jobs.body":"Legacy job and task history was not backfilled for cutover. New jobs you start here will appear normally.",
"etl.gaps.jobs.emptyHint":"Optional jobs domain was not run — empty history is expected.",
"etl.gaps.jobs.migratedHint":"{count} jobs were tagged migrated from an optional backfill.",
"etl.gaps.jobs.cta":"Open Processing",
"etl.gaps.woo.title":"Store credentials",
"etl.gaps.woo.body":"WooCommerce and Shopify secrets may need to be re-entered after cutover — that is a reconnect step, not a broken sync.",
"etl.gaps.woo.cta":"Open Stores",
"etl.gaps.settings.title":"Company settings",
"etl.gaps.settings.body":"Only language and merge-products settings were imported. Re-check other company preferences in Settings.",
"etl.gaps.settings.cta":"Open company settings",
"activation.progress":"{done} de {total} concluídos",
"activation.stepsLabel":"Passos de ativação",
"activation.pausedTitle":"Começar em pausa",
"activation.pausedBody":"Retome quando quiser — dos campos de produto até à exportação. Ligar a loja continua opcional.",
"activation.resume":"Retomar lista",
"activation.step.enable-fields.title":"Ativar campos de produto",
"activation.step.enable-fields.body":"Escolha quais colunas de produto padrão o Descrybe deve mapear e limpar.",
"activation.step.connect-source.title":"Adicionar um feed de produtos",
"activation.step.connect-source.body":"Adicione um feed de catálogo CSV ou XML para os produtos entrarem no Descrybe. Ligar uma loja ativa é um passo opcional posterior.",
"activation.step.map.title":"Mapear colunas do feed",
"activation.step.map.body":"Em Feeds, abra Map no seu feed, faça corresponder as colunas do fornecedor e guarde.",
"activation.step.sync-sample.title":"Sincronizar uma amostra",
"activation.step.sync-sample.body":"Em Feeds, sincronize uma pequena amostra de um feed mapeado para verificar o mapeamento antes da execução completa.",
"activation.step.process.body":"Abra produtos não processados e execute o processamento para gerar conteúdo de catálogo limpo.",
"activation.step.store-connect.title":"Ligar uma loja",
"activation.step.store-connect.body":"Opcional. Ligue WooCommerce ou Shopify para enviar produtos para a sua loja. Ignore se usar apenas feeds e exportações.",
"activation.step.export.title":"Criar uma exportação",
"activation.step.export.body":"Crie um feed de exportação para descarregar ou publicar produtos limpos como XML ou CSV.",
"docs.tryIt.memberCannotCreate":"Só os admins da empresa podem criar chaves API. As legado não foram migradas — cole uma chave abaixo ou peça a um admin para criar uma nova.",
"docs.tryIt.noKeysLegacyAdmin":"As chaves API legado não foram migradas. Crie uma nova via Use my API key ou Definições → Chaves API — o segredo só é mostrado uma vez.",
"docs.tryIt.noKeysLegacyMember":"Sem chaves API listadas. As legado não foram migradas — peça a um admin para criar uma, ou cole uma chave dk_.",
"errors.couldNotUpdateLanguage":"Não foi possível atualizar o idioma",
"toast.support.replyTitle":"Resposta de suporte",
"toast.support.replyBody":"A equipa respondeu ao seu ticket de suporte.",
"toast.support.replyRe":"Re: {subject}",
"toast.support.statusTitle":"Estado do ticket atualizado",
"toast.support.statusBody":"O estado do seu ticket de suporte alterou-se.",
"toast.support.updateTitle":"Atualização de suporte",
"assistant.label":"Assistente",
"assistant.open":"Abrir o assistente do sistema",
"assistant.close":"Fechar o assistente do sistema",
"tutorial.demoTour":"Tour demo",
"tutorial.jumpToTopic":"Ir para um tópico",
"tutorial.whereNeedHelp":"Em que precisa de ajuda?",
"tutorial.skipTour":"Saltar tour",
"tutorial.skipAria":"Saltar tutorial",
"tutorial.pickerBody":"Escolha uma secção para reabrir essa parte da demo. Explorar o tour não altera os dados da sua conta.",
"tutorial.sectionsAria":"Secções do tutorial",
"tutorial.open":"Abrir",
"tutorial.close":"Fechar",
"tutorial.resumeLastStep":"Retomar último passo",
"tutorial.startFromBeginning":"Começar do início",
"tutorial.stepOf":"Passo {current} de {total}",
"tutorial.jumpTo":"Ir para…",
"tutorial.jumpToSectionAria":"Ir para a secção",
"tutorial.back":"Voltar",
"tutorial.pause":"Pausar",
"tutorial.continue":"Continuar",
"tutorial.finishTour":"Concluir tour",
"tutorial.missingTargetHint":"Esse controlo ainda não está neste ecrã. Pode Continuar na mesma — o tour nunca exige guardar ou sincronizar.",
"tutorial.section.welcome":"Welcome",
"tutorial.section.catalog":"Catalog setup",
"tutorial.section.sources":"Feeds",
"tutorial.section.mapping":"Map & sync",
"tutorial.section.products":"Process",
"tutorial.section.export":"Export & stores",
"tutorial.section.grow":"Grow",
"tutorial.section.done":"Done",
"tutorial.step.welcome.title":"Bem-vindo ao Descrybe",
"tutorial.step.welcome.body":"O ciclo principal do Descrybe é Feeds → Process → Export / Stores. Esta demo guiada destaca esses ecrãs no seu dashboard real — sem exigir guardar, sincronizar, ativar campos ou criar feeds. Pause quando quiser; retome no cabeçalho. Salte para uma secção se só precisar de ajuda num tópico.",
"tutorial.step.welcome.tip":"Demo tour — your data stays unchanged until you choose to act outside the tour.",
"tutorial.step.welcome.nextLabel":"Start tour",
"tutorial.step.welcome.missingHint":"You’re on the dashboard — continue when ready.",
"tutorial.step.dashboard-overview.title":"O seu centro de comando",
"tutorial.step.dashboard-overview.body":"A faixa de workflow do catálogo mostra o caminho diário: Feeds → Map → Sync → Process. Getting started acompanha o progresso real do workspace (à parte desta demo). Quando estiver pronto, use Manage feeds ou Start processing — depois exporte ou ligue uma loja.",
"tutorial.step.dashboard-overview.tip":"Completing this tour does not mark checklist steps done — only real workspace progress does.",
"tutorial.step.dashboard-overview.missingHint":"The workflow strip and checklist appear after the dashboard loads.",
"tutorial.step.enable-fields.body":"Standard Fields são as colunas de produto que o Descrybe mapeia, processa e exporta — título, descrição, GTIN, imagens e mais. Enable recommended ativa um conjunto predefinido sensato para a maioria dos catálogos. Pode afinar a lista depois sem partir mapeamentos existentes.",
"tutorial.step.enable-fields.tip":"In the demo you don’t need to click Enable recommended — Continue when you understand the idea.",
"tutorial.step.enable-fields.warning":"Enabling or disabling fields affects mapping and processing for this company. Prefer Enable recommended once, then tweak carefully.",
"tutorial.step.enable-fields.missingHint":"Wait for the Fields page to load, or open Fields from the Catalog section in the sidebar.",
"tutorial.step.catalog-depth.title":"Categorias e atributos",
"tutorial.step.catalog-depth.body":"Na secção Catalog da barra lateral também encontra Categories e Attributes. Categories organizam o catálogo; os atributos alimentam filtros e descrições estruturadas. Não precisa de os configurar para terminar este tour.",
"tutorial.step.catalog-depth.tip":"Return to this section anytime from Jump to… if you revisit taxonomy later.",
"tutorial.step.catalog-depth.missingHint":"Expand Catalog in the sidebar to open Categories or Attributes after the tour.",
"tutorial.step.connect-source.title":"Adicionar uma origem de produtos",
"tutorial.step.connect-source.body":"Os feeds são como os catálogos de fornecedores entram no Descrybe — ficheiros CSV, XML ou URL. Add Feed cria uma nova origem; cada linha mostra o estado (pronto para mapear, mapeado, ativo). Map abre o ecrã de correspondência de campos desse feed.",
"tutorial.step.connect-source.tip":"You don’t need to add a feed for the demo. When ready for real setup, add one sample file first.",
"tutorial.step.connect-source.warning":"Avoid deleting live feeds unless you intend to remove that source and its sync history.",
"tutorial.step.connect-source.missingHint":"Open Feeds from the sidebar if this screen hasn’t loaded.",
"tutorial.step.map.title":"Mapear campos de origem",
"tutorial.step.map.body":"No ecrã Map de um feed associa colunas do fornecedor aos standard fields do Descrybe. Auto-map sugere correspondências pelos nomes das colunas; confirme as aproximadas e corrija o resto. Save Mappings guarda o mapa para que sync e processamento saibam ler cada linha.",
"tutorial.step.map.tip":"Demo tip: open Map on a feed when you have one — you are not required to save.",
"tutorial.step.map.warning":"Don’t Save Mappings until Auto-map looks right — a bad map makes bad products.",
"tutorial.step.map.missingHint":"Add a feed and click Map to see the mapping UI; or Continue to keep learning.",
"tutorial.step.sync-sample.title":"Sincronizar uma amostra (quando estiver pronto)",
"tutorial.step.sync-sample.body":"Depois de guardar os mapeamentos, Sync + Process sample obtém um lote pequeno e corre o processamento para verificar títulos, imagens e atributos antes de uma execução completa. Full Sync now na lista de feeds serve para importações maiores quando a amostra estiver boa.",
"tutorial.step.sync-sample.tip":"Skip Sync during the demo — use it only after Save Mappings on a real feed.",
"tutorial.step.sync-sample.warning":"Syncing writes products into this company. Prefer a sample first; avoid Sync now on unmapped feeds.",
"tutorial.step.sync-sample.missingHint":"Sync controls appear on feed rows and on the mapping screen footer.",
"tutorial.step.process.title":"Rever produtos",
"tutorial.step.process.body":"Products lista itens sincronizados e processados. Filtre por estado, abra uma linha para detalhes e use badges EPREL quando existirem dados de etiqueta energética. É aqui que deteta erros de mapeamento antes da exportação ou sync de loja.",
"tutorial.step.process.tip":"Browsing products is read-only for exploration — editing a row changes live catalog data.",
"tutorial.step.process.missingHint":"Wait for the products table, or Continue if the catalog is still empty.",
"tutorial.step.processing-hub.title":"Processamento em segundo plano",
"tutorial.step.processing-hub.body":"Os jobs em Processing mostram progresso de AI e pipeline: execuções concluídas e falhas. Inicie jobs a partir do dashboard ou produtos quando quiser gastar créditos num lote de propósito.",
"tutorial.step.processing-hub.tip":"Jobs consume credits — watch Billing before large runs.",
"tutorial.step.processing-hub.missingHint":"Open Jobs from the Processing section in the sidebar if the page is empty.",
"tutorial.step.stores-hub.title":"Lojas e plataformas",
"tutorial.step.stores-hub.body":"Depois de processar, Stores liga WooCommerce ou Shopify para enviar o catálogo limpo para a loja. Use isto quando um marketplace ou CMS for o destino — ou salte para Export feeds se os parceiros só precisarem de ficheiro/URL.",
"tutorial.step.stores-hub.tip":"Reconnect banners appear if a token expires — fix those before relying on sync.",
"tutorial.step.stores-hub.missingHint":"Open Stores from the sidebar to see connection cards.",
"tutorial.step.export.body":"Os export feeds publicam produtos limpos como XML ou CSV para canais, parceiros ou a sua loja. Crie uma exportação, escolha formato e filtros, depois partilhe o URL do feed ou descarregue. As exportações leem dados de catálogo processados — mapeie e processe primeiro para melhores resultados.",
"tutorial.step.export.tip":"You don’t need to create an export during the demo.",
"tutorial.step.export.warning":"Creating or deleting export feeds affects what partners can download — avoid deleting production feeds casually.",
"tutorial.step.export.missingHint":"Wait for Export feeds to load, or open Exports from the Feeds section in the sidebar.",
"tutorial.step.billing-hub.title":"Créditos e faturação",
"tutorial.step.billing-hub.body":"Billing mostra o seu plano, carteira e créditos restantes. O processamento e algumas funcionalidades de AI usam este saldo. Vigie o uso antes de grandes execuções de catálogo.",
"tutorial.step.billing-hub.tip":"Demo accounts may show unlimited or large balances — treat production credits carefully.",
"tutorial.step.billing-hub.missingHint":"Open Billing from the Account section in the sidebar.",
"tutorial.step.grow-hub.title":"Campanhas, SEO e reviews",
"tutorial.step.grow-hub.body":"Em Marketing: Campaigns gera conteúdo, Content calendar planeia publicações, SEO verifica listagens e Reviews liga-se ao WooCommerce. Assentam num catálogo bem mapeado — termine Feeds → Process → Export / Stores antes de depender deles.",
"tutorial.step.grow-hub.tip":"Jump back here when you’re ready to market, not during first mapping.",
"tutorial.step.grow-hub.missingHint":"Open Campaigns from Marketing in the sidebar, or Continue.",
"tutorial.step.tour-done.title":"Pronto para explorar",
"tutorial.step.tour-done.body":"Esse é o mapa do produto: Feeds → Map → Sync → Process → Export / Stores. Use Getting started no dashboard para a configuração real. Retome ou reinicie este tour no cabeçalho a qualquer momento, ou Jump to… uma secção. Skip tour termina a demo sem alterar a checklist.",
"tutorial.step.tour-done.tip":"Demo complete — no cleanup needed. Your account was not modified by Continue alone.",
"admin.users.title":"Utilizadores e organizações",
"admin.users.description":"Diretório de utilizadores da plataforma, funções de equipa e atribuições de planos de empresa.",
"admin.users.staffRoleUnavailable":"As atualizações de função de equipa ainda não estão disponíveis neste deployment. Contacte o administrador da plataforma se precisar.",
"admin.users.cloneCatalog":"Copiar para a minha empresa",
"admin.users.cloneCatalogAria":"Copiar o catálogo de {name} para a sua empresa sandbox",
"admin.users.cloneCatalogTitle":"Copiar catálogo da empresa",
"admin.users.cloneCatalogDesc":"Permanece na sua conta de admin. Os dados de origem não são alterados.",
"admin.users.cloneCatalogFrom":"Origem: {name}",
"admin.users.cloneCatalogInto":"Destino: {name}",
"admin.users.cloneCatalogWarning":"Substitui categorias, feeds, produtos, atributos, mappings e marca no destino. Plano, faturação, membros, chaves API e conectores de loja não são copiados.",
"admin.users.noUsers":"Nenhum utilizador corresponde a este filtro.",
"admin.users.noCompanies":"Nenhuma empresa corresponde a este filtro.",
"admin.users.assignRoleTitle":"Atribuir função de equipa",
"admin.users.assignRoleDesc":"As funções da plataforma controlam o painel admin (Admin e Developer) e a secretária de suporte (equipa de suporte).",
"admin.users.staffRole":"Função da equipa",
"admin.users.saveRole":"Guardar função",
"admin.users.assignPlanTitle":"Atribuir plano",
"admin.users.assignPlanDesc":"Associar um plano público, legacy ou personalizado a esta empresa.",
"admin.users.selectPlan":"Selecionar plano",
"admin.users.assign":"Atribuir",
"admin.settings.title":"Definições da plataforma",
"admin.settings.description":"Credenciais da plataforma, funções de IA, e-mail e integrações para este deployment",
"admin.settings.intro":"Configure aqui funções de IA da plataforma, SMTP, OAuth, EPREL, Pinecone e Stripe. Deixe os segredos em branco para manter o valor guardado. As chaves por empresa ficam em Integrações do inquilino.",
"admin.settings.aiRolesUnavailable":"As funções de IA completas ainda não estão disponíveis neste deployment. O processamento continua a guardar via definições OpenAI da plataforma; outras funções serão persistidas quando suportadas.",
"admin.settings.tab.integrations":"Visão geral",
"admin.settings.tab.ai":"Funções de IA",
"admin.settings.tab.mail":"Mail",
"admin.settings.tab.other":"Outro",
"admin.settings.tab.admins":"Utilizadores admin",
"admin.settings.mailCardDesc":"Convites de definição de palavra-passe e e-mail de saída da plataforma",
"admin.settings.creditPackPricesHint":"Create one-time Prices in Stripe (mode=payment products). Paste Price IDs here — same sync path as plan subscriptions.",
"admin.settings.syncCreditPacksModeHint":"Stripe mode for this sync: {mode}. Switch the secret key (sk_test_ vs sk_live_) to sync the other environment.",
"admin.settings.syncCreditPacksFailed":"Could not sync credit packs to Stripe.",
"admin.diagnostics.description":"Consola ops para saúde da app, profundidade da fila, trabalhos recentes e flags de config. Segredos e DSN nunca são mostrados; erros de trabalhos são sanitizados.",
"admin.diagnostics.filterAria":"Filtro de estado do trabalho",
"admin.diagnostics.queue":"Fila",
"admin.diagnostics.noJobsInQueue":"Não há trabalhos na fila.",
"admin.orphan.confirmDesc":"This permanently deletes {total} processed_products row(s) whose raw is missing or unprocessed. Job product links use ON DELETE SET NULL.",
"admin.orphan.confirmDelete":"Delete orphans",
"admin.billing.title":"Admin de faturação",
"admin.billing.description":"Gira planos, créditos, permissões de funcionalidades por pacote e interruptores de funcionalidades em toda a plataforma.",
"admin.billing.noCompanies":"Nenhuma empresa encontrada.",
"admin.billing.noCompaniesFilter":"Nenhuma empresa corresponde a este filtro.",
"admin.billing.assignPlanTitle":"Atribuir plano",
"admin.billing.assignPlanDesc":"Associe um plano de faturação a uma empresa. Os créditos de teste opcionais repõem o saldo da empresa para o período de teste.",
"admin.knowledge.noArticles":"Sem artigos de conhecimento",
"admin.knowledge.emptyCategoryMsg":"A categoria “{category}” está pronta — adicione um artigo base para um agente de conteúdo preencher.",
"admin.knowledge.emptyArticlesMsg":"Adicione bases estilo FAQ com categorias e palavras-chave. Deixe marcadores no corpo para agentes de conteúdo.",
"admin.knowledge.col.title":"Título",
"admin.knowledge.col.name":"Nome",
"admin.knowledge.edit":"Editar",
"admin.knowledge.newTemplate":"Novo modelo",
"admin.knowledge.editTemplate":"Editar modelo",
"admin.knowledge.allCategories":"Tudo",
"admin.settings.enablePlatformSmtp":"Ativar SMTP da plataforma",
"admin.plans.title":"Planos de subscrição",
"admin.plans.description":"Público ladder, A1 / Legacy, Plataforma Demo, and custom deals. Ephemeral test and obsolete ladder rows stay under Oculto.",
"admin.plans.searchPlaceholder":"Pesquisar nome ou descrição…",
"admin.plans.searchAria":"Pesquisar planos",
"admin.plans.filterAria":"Filtrar planos por visibilidade",
"admin.permissions.noteBody":"These toggles set what this package may include. Plataforma-wide on/desligado masters are on the {global} tab — a plan can enable a feature that still stays desligado when the platform switch is desativado.",
"admin.permissions.profilesHint":"One-click matrices for public ladder packages and migrated legacy navigation. Guardars overrides for the selecionado package only.",
"admin.profile.legacy.description":"Migrated legacy navigation: catalog, feeds, faturação, and definições; no Voltarground Tasks, lojas, or marketing.",
"admin.profile.free.label":"Grátis",
"admin.profile.free.description":"Público Free ladder — AI, chave APIs, live email, and own-key AI desligado.",
"admin.profile.starter.label":"Starter",
"admin.profile.starter.description":"Público Starter — AI on; own-key AI desligado.",
"admin.profile.growth.label":"Growth",
"admin.profile.growth.description":"Todas as funcionalidades do catálogo ativas.",
"admin.profile.business.label":"Business",
"admin.profile.business.description":"Todas as funcionalidades do catálogo ativas.",
"admin.gates.noteBody":"Estes interruptores aplicam-se a todos os pacotes. O acesso efetivo é {combo}. Os direitos por pacote ficam no separador {permissions}.",
"admin.gates.combo":"permissão do plano E secção global E funcionalidade global",
"admin.gates.permissionsTab":"Permissões do plano",
"admin.gates.title":"Mestres de funcionalidades globais",
"admin.gates.description":"Disable a feature here to turn it desligado for every package, even when a plan enables it.",
"admin.gates.section":"Secção",
"admin.gates.allSections":"Todas as secções",
"admin.gates.search":"Pesquisar",
"admin.gates.searchPlaceholder":"Filtrar por chave ou etiqueta",
"admin.gates.sectionOff":"Secção desligado",
"admin.gates.noMatch":"Nenhuma funcionalidade corresponde aos filtros atuais.",
"admin.gates.featureAria":"{label} global",
"admin.gates.sectionsTitle":"Interruptores de secção global",
"admin.gates.sectionsDesc":"Turn an entire produto area on or desligado for all packages. “Secção + features” also updates every feature master in that section.",
"admin.gates.sectionAria":"Secção global {label}",
"admin.knowledge.field.weight":"Peso de prioridade",
"admin.knowledge.publishedEligible":"Publicado (elegível para correspondência)",
"admin.knowledge.field.name":"Nome",
"admin.knowledge.field.templateBody":"Corpo",
"admin.knowledge.active":"Ativo",
"admin.settings.card.aiRolesTitle":"Plataforma AI roles",
"admin.settings.card.aiRolesDesc":"Processamento, vectorization, docs/API, and suporte — separate keys/models",
"admin.settings.roleOff":" (desligado)",
"admin.settings.roleNotSet":"· not set",
"admin.settings.someRolesUnavailable":"Some AI roles are not disponível on this deployment yet. Processamento still uses the platform AbrirAI definições until all roles are suporteed.",
"admin.support.disableAuto":"Desativar auto neste ticket",
"admin.support.aiDraftTitle":"Rascunho IA (aprovar ou editar)",
"admin.support.aiDraftDesc":"O modo só-rascunho deixou uma nota interna. Edite se necessário e envie ao cliente — ou descarte e continue manualmente.",
"admin.support.confidence":"Confiança {value}",
"admin.support.statusAfterSend":"Estado após o envio",
"admin.support.replyDesc":"As respostas públicas notificam o cliente. As notas internas ficam só para a equipa. O estado predefinido após uma resposta pública é pendente.",
"admin.support.internalNote":"Nota interna (não visível ao cliente)",
"admin.support.setStatus":"Definir estado",
"admin.support.statusDefault":"Predefinição",
"admin.support.saveNote":"Guardar nota",
"admin.support.sendReply":"Enviar resposta",
"admin.support.replyAndResolve":"Responder e resolver",
"admin.support.closedBanner":"Este ticket está fechado. Reabra-o para continuar a conversa.",
"admin.settings.tenantDesc":"As chaves de IA e o e-mail de marketing da empresa ficam em Integrações. Os segredos de sessão e encriptação ficam no ambiente do servidor e não se editam aqui.",
"admin.settings.perCompanyAiEmail":"IA/e-mail por empresa —",
"admin.settings.plansCredits":"Planos e créditos —",
"admin.settings.clearApiKey":"Limpar chave API guardada",
"admin.settings.apiKeyKeepPlaceholder":"•••• deixe em branco para manter",
"admin.settings.apiKeyNewPlaceholder":"sk-… ou local",
"admin.settings.smtpCardTitle":"Plataforma SMTP",
"admin.settings.smtpCardDesc":"Usado para convites de palavra-passe e e-mail de saída da plataforma. Resend/SMTP de marketing continua por empresa em Integrações → Email.",
"admin.settings.smtpBadgeOn":"SMTP ativado",
"admin.settings.smtpBadgeOff":"SMTP desativado",
"admin.settings.enableSmtp":"Ativar SMTP da plataforma",
"admin.settings.clearClientSecret":"Limpar segredo de cliente guardado",
"admin.settings.eprelDesc":"Dados públicos gratuitos de rótulos energéticos da UE durante o processamento. Ativo por predefinição em todos os planos — sem ativação nem upgrade pago. Use os controlos só para desativar ou afinar o cliente.",
"admin.settings.optionalKeySaved":"Chave API opcional guardada",
"admin.settings.noApiKeyNeeded":"Não é necessária chave API",
"admin.settings.optionalApiKey":"Chave API opcional",
"admin.settings.optionalApiKeySavedHint":"(guardado — leave blank to keep)",
"admin.settings.optionalApiKeyPublicHint":"(a API pública funciona sem ela)",
"admin.settings.clearEprelKey":"Limpar chave API EPREL guardada",
"admin.settings.pineconeDesc":"Sugestões opcionais de categoria vetorial durante o processamento. Valores do ambiente do host são usados quando estes campos ficam vazios.",
"admin.settings.apiKeyConfigured":"Chave API configurada",
"admin.settings.noApiKey":"Sem chave API",
"admin.settings.apiKeyLabel":"Chave API",
"admin.settings.clearPineconeKey":"Limpar chave API Pinecone guardada",
"admin.settings.stripeDesc":"Substituições opcionais da configuração Stripe do servidor. Prefira campos de palavra-passe; os valores não voltam a ser mostrados após guardar.",
"admin.settings.stripeMock":"Forçar modo mock Stripe (apenas não produção — desativa cobranças reais)",
"admin.settings.webhookSecret":"Segredo do webhook",
"admin.settings.aiRole.docs_api.desc":"Slot futuro de assistente docs/API — /docs Ask continua baseado em regras e nunca deve chamar este papel.",
"admin.settings.aiRole.support.label":"Suporte",
"admin.settings.aiRole.support.desc":"IA de fallback para auto-resposta de tickets — configure fornecedor/chave/modelo aqui; ative o envio em Conhecimento de suporte → Auto-resposta.",
"admin.support.description":"Caixa de entrada da equipa — reivindique da fila, filtre por âmbito, abra tópicos e resolva",
"admin.support.unavailable":"A fila de suporte não está disponível. Contacte o administrador da plataforma se persistir.",
"admin.support.noTickets":"Não há tickets nesta fila.",
"admin.support.ticketNotFound":"Ticket não encontrado.",
"admin.support.notAvailable":"O suporte não está disponível neste deployment.",
"admin.support.loadFailed":"Não foi possível carregar este ticket.",
"admin.support.noMessages":"Ainda sem mensagens.",
"admin.support.queueScopeAria":"Âmbito da fila",
"admin.support.statusFilterAria":"Filtro de estado",
"admin.support.autoAssistFilterAria":"Filtro de autoajuda",
"admin.support.searchPlaceholder":"Pesquisar assunto, e-mail ou empresa",
"admin.support.searchAria":"Pesquisar tickets",
"admin.support.assignStaffAria":"Atribuir à equipa",
"admin.support.aiDraftAria":"Rascunho IA",
"admin.support.replyPlaceholder":"Escrever uma resposta…",
"admin.support.replyAria":"Corpo da resposta",
"admin.knowledge.eyebrow":"Admin da plataforma",
"admin.knowledge.title":"Conhecimento de suporte",
"admin.knowledge.description":"Estruture artigos de ajuda para correspondência automática de FAQ. Agentes de conteúdo preenchem corpos — mantenha os factos precisos.",
"admin.knowledge.notReady":"O conhecimento de suporte não está pronto",
"admin.knowledge.noTemplates":"Sem modelos de resposta",
"admin.knowledge.articleDesc":"O corpo Markdown admite imagens via carregamento seguro. Não invente factos de produto — deixe marcadores para agentes de conteúdo.",
"admin.bootstrap.description":"Confirme se a sua conta já tem acesso de admin da plataforma. Novos admins devem ser concedidos por um administrador existente.",
"admin.bootstrap.statusTitle":"Estado de admin da plataforma",
"admin.bootstrap.statusDesc":"O acesso de admin da plataforma é concedido por um administrador existente. Não há bootstrap self-serve para esta função.",
"admin.bootstrap.alreadyAdmin":"Já tem acesso de admin da plataforma.",
"admin.bootstrap.signedInAs":"Sessão iniciada como {email}. Abra o painel admin para continuar.",
"admin.bootstrap.signedInAsShort":"Sessão iniciada como {email}",
"admin.bootstrap.notAdminTitle":"Não é admin da plataforma",
"admin.bootstrap.notAdminMsg":"A sua conta está com sessão iniciada mas não está marcada como admin da plataforma. Peça a um admin existente que conceda acesso, depois termine a sessão e inicie novamente.",
"admin.bootstrap.goToPanel":"Ir para o painel admin",
"admin.bootstrap.loadFailed":"Falha ao carregar o perfil",
"admin.migrate.title":"Migração de organização",
"admin.migrate.description":"Esta ferramenta de migração está retirada e não altera quaisquer dados.",
"admin.migrate.notAvailable":"Não disponível",
"admin.migrate.body":"A migração de organização do fornecedor de identidade anterior já não é necessária. Empresas e auth local são geridas em Utilizadores e organizações.",
"admin.migrate.hint":"Se abriu isto a partir de um marcador antigo, continue com Utilizadores e organizações, Faturação da plataforma ou Produtos bloqueados.",
"admin.migrate.adminHome":"Início admin",
"admin.migrate.users":"Utilizadores",
"admin.redirect.diagnostics":"A redirecionar para Diagnósticos…",
"admin.redirect.stuck":"A redirecionar para Produtos bloqueados…",
"common.refresh":"Atualizar",
"common.delete":"Eliminar",
"common.clearSearch":"Limpar pesquisa",
"common.loading":"A carregar…",
"common.never":"Nunca",
"common.back":"Voltar",
"common.startOver":"Começar de novo",
"common.create":"Criar",
"common.required":"Obrigatório",
"common.actions":"Ações",
"common.status":"Estado",
"common.nameCol":"Nome",
"common.products":"Produtos",
"common.more":"+{count} mais",
"feeds.title":"Os seus feeds",
"feeds.loadingDesc":"A carregar os seus feeds de fornecedor…",
"feeds.desc":"{page} nesta página · {total} feeds no total — URL CSV/XML de fornecedor e carregamentos. Ligue a partir de Lojas para opções guiadas.",
"feeds.storesHub":"Centro de lojas",
"feeds.addFeed":"Adicionar Feed",
"feeds.searchPlaceholder":"Pesquisar feeds...",
"feeds.emptyTitle":"Ainda sem feeds de produtos",
"feeds.emptyMessage":"Ligue um URL CSV/XML de fornecedor ou carregue um ficheiro para sincronizar produtos no seu catálogo.",
"feeds.connectFeed":"Ligar feed",
"feeds.uploadCsvCta":"Carregar CSV",
"feeds.noMatchTitle":"Sem feeds correspondentes",
"feeds.noMatchMessage":"Experimente outro termo de pesquisa, ou limpe a pesquisa para ver todos os feeds.",
"feeds.col.source":"Origem",
"feeds.col.mapping":"Mapeamento",
"feeds.col.lastData":"Última sync",
"feeds.copyUrl":"Copiar URL",
"feeds.fieldsMapped":"{count} campos",
"feeds.fieldsMappedTitle":"{count} campo mapeado",
"feeds.mappingsSaved":"Mapeamentos de campos guardados",
"feeds.mapped":"Mapeado",
"feeds.notMapped":"Não mapeado",
"feeds.notMappedTitle":"Ainda sem mapeamentos de campos — abra Mapear para configurar",
"feeds.productsFromFeed":"{count} produtos deste feed",
"feeds.noProductsYet":"Ainda sem produtos importados deste feed",
"feeds.syncing":"A sincronizar…",
"feeds.syncingShort":"A sincronizar",
"feeds.syncingHint":"Pode demorar alguns minutos em feeds grandes",
"feeds.liveSync":"Sync do feed",
"feeds.productData":"Dados do catálogo",
"feeds.mapFields":"Mapear campos",
"feeds.map":"Mapear",
"feeds.sync":"Sincronizar",
"feeds.syncNow":"Sincronizar agora",
"feeds.syncManualTitle":"Executar uma sincronização pontual agora. A sync automática usa o intervalo definido ao editar o feed.",
"feeds.syncInProgress":"Sync em curso",
"feeds.addTitle":"Adicionar Feed",
"feeds.addDesc":"Ligue um URL de feed de produtos ou carregue um CSV. Use as amostras abaixo para corresponder à estrutura esperada.",
"feeds.field.name":"Nome",
"feeds.field.namePlaceholder":"O meu feed de produtos",
"feeds.tab.url":"URL do feed",
"feeds.tab.file":"Ficheiro CSV",
"feeds.field.url":"URL do feed",
"feeds.field.urlPlaceholder":"https://…",
"feeds.field.type":"Tipo",
"feeds.field.file":"Ficheiro CSV",
"feeds.fileHint":"Máx. 5 MiB. Após criar, mapeie colunas e depois sincronize — mesmo fluxo dos feeds por URL.",
"feeds.field.interval":"Intervalo de sync automática (minutos)",
"feeds.field.intervalHint":"Com que frequência o Descrybe deve puxar este feed automaticamente enquanto estiver ativo. Use Sync na lista para um puxão pontual — isso não altera este agendamento.",
"feeds.createFeed":"Criar feed",
"feeds.editTitle":"Editar Feed",
"feeds.editDesc":"Atualize nome, tipo, agendamento de sync automática ou URL de origem. Sync na lista de feeds executa um puxão pontual.",
"feeds.csvSource":"Origem CSV",
"feeds.uploadedCsv":"CSV carregado",
"feeds.replaceFileHint":"Para substituir o ficheiro, crie um novo feed. A sync volta a ler o carregamento guardado.",
"feeds.csvTypeLocked":"Os feeds CSV carregados mantêm o tipo CSV.",
"feeds.saveChanges":"Guardar alterações",
"feeds.historyTitle":"Histórico de sync",
"feeds.historyDesc":"Trabalhos de sync recentes de “{name}”.",
"feeds.historyNeverSynced":"Ainda sem sync bem-sucedida.",
"feeds.historyLoading":"A carregar histórico de sync…",
"feeds.historyEmpty":"Ainda sem trabalhos de sync.",
"feeds.history.started":"Iniciado",
"feeds.history.completed":"Concluído",
"feeds.loadFailed":"Falha ao carregar feeds",
"feeds.copyFailed":"Não foi possível copiar o URL",
"feeds.created":"Feed criado",
"feeds.updated":"Feed atualizado.",
"feeds.mapBeforeSync":"Mapeie os campos antes de sincronizar este feed.",
"feeds.activateBeforeSync":"Ative o feed antes de sincronizar.",
"feeds.syncFinished":"Sincronização concluída",
"feeds.viewProducts":"Ver produtos",
"feeds.processing":"Processamento",
"feeds.syncFailed":"Falha na sincronização",
"feeds.statusUpdateFailed":"Não foi possível atualizar o estado",
"feeds.deleteConfirm":"Eliminar o feed “{name}”? Isto não pode ser anulado.",
"feeds.deleted":"Feed eliminado.",
"feeds.deleteFailed":"Não foi possível eliminar o feed",
"feeds.historyLoadFailed":"Não foi possível carregar o histórico de sync",
"feeds.ftpUnsupported":"A sync não está disponível para esta ligação de fornecedor. Carregue um ficheiro ou use um URL HTTPS do fornecedor.",
"feeds.ftpUnsupportedShort":"Sync FTP não suportada",
"feeds.ftpBadge":"FTP",
"feeds.ftpMigrateBanner":"Alguns feeds ainda usam FTP/FTPS. O Descrybe não consegue obter esses links. Mude para um URL HTTPS público, adicione um feed CSV ou carregue em Uploads.",
"feeds.preview.empty":"Extraia o esquema para pré-visualizar a origem do feed.",
"feeds.schema.search":"Pesquisar campos…",
"feeds.schema.fieldName":"Nome do campo",
"feeds.schema.sourcePath":"Caminho de origem",
"feeds.schema.confirm":"Confirmar",
"feeds.schema.apply":"Aplicar",
"feeds.preflight.missingItemPath":"Selecione um caminho de elemento de produto antes de sincronizar.",
"feeds.preflight.emptyMappings":"Mapeie pelo menos um campo de origem antes de sincronizar.",
"feeds.preflight.missingRequired":"Mapeie os campos obrigatórios antes de sincronizar: {fields}.",
"feeds.preflight.unknownSource":"Algumas origens mapeadas não foram encontradas no esquema extraído: {fields}{more}. Volte a extrair ou corrija caminhos antes de confiar nos valores de amostra.",
"feeds.preflight.emptySample":"Os campos obrigatórios têm valores de amostra vazios: {fields}. Verifique as colunas de origem antes de uma sync completa.",
"feeds.preflight.fix":"Corrija os mapeamentos de campos antes de sincronizar.",
"mapping.title":"Mapeamento de Feed",
"mapping.titleNamed":"Mapear: {name}",
"mapping.description":"Selecione o elemento de produto repetido, extraia os campos de origem e mapeie-os para os campos de produto Descrybe.",
"mapping.autoMap":"Mapear automaticamente",
"mapping.fuzzy":"{count} aproximado(s)",
"mapping.extractSchema":"Extrair esquema",
"mapping.backToFeeds":"Voltar aos Feeds",
"mapping.ftpStillEdit":"{message} Ainda pode editar os mapeamentos aqui.",
"mapping.ftpUploadCta":"Ir para Uploads",
"mapping.ftpHttpsCta":"Adicionar feed HTTPS",
"mapping.ftpCsvCta":"Carregar feed CSV",
"mapping.loading":"A carregar detalhes do feed…",
"mapping.step1":"Selecionar elemento de produto",
"mapping.step2":"Mapear campos",
"mapping.step1Heading":"Passo 1: Selecionar elemento de produto",
"mapping.csvHint":"Os feeds CSV usam cabeçalhos de coluna como campos de origem. Extraia o esquema para carregar as colunas e depois continue para as mapear.",
"mapping.howToSelect":"Como selecionar o elemento de produto:",
"mapping.howToHint":"Guia opcional",
"mapping.howTo.1":"Extraia o esquema ou clique numa etiqueta repetida na pré-visualização",
"mapping.howTo.2":"Cada elemento deve conter os detalhes de um único produto",
"mapping.howTo.3":"Confirme o caminho (por exemplo",
"mapping.howTo.4":"Continue para mapear os campos de origem para os campos de produto",
"mapping.productElementPath":"Caminho do elemento de produto",
"mapping.pathPlaceholder":"ex. rss/channel/item ou products/product",
"mapping.continue":"Continuar →",
"mapping.continueFields":"Continuar para o mapeamento de campos →",
"mapping.discovered":"Detetados {fields} campos de origem a partir de {rows} linha(s) de amostra.",
"mapping.suggestionsCount":"· {count} sugestão(ões) de mapeamento automático",
"mapping.unmappedRequired":"{count} obrigatório(s) por mapear",
"mapping.sourceFieldsBadge":"{count} campos de origem",
"mapping.suggestedBadge":"{count} sugerido(s)",
"mapping.step2Help":"Mapeie colunas de origem ou nós XPath para os seus campos de produto. Os campos obrigatórios estão marcados com *. Passe o rato sobre o ícone de ajuda para uma dica rápida do glossário.",
"mapping.appliedNew":"Aplicado(s) {count} novo(s) mapeamento(s) {kind} ({total} no total).",
"mapping.kindHighConfidence":"de alta confiança",
"mapping.kindFuzzy":"aproximado",
"mapping.fuzzyConfirmFlash":"{count} correspondência aproximada precisa de confirmação — use Confirmar aproximados abaixo ou chips por linha.",
"mapping.fuzzyConfirmFlashPlural":"{count} correspondências aproximadas precisam de confirmação — use Confirmar aproximados abaixo ou chips por linha.",
"mapping.formatHelp.title":"Como estruturar o seu feed",
"mapping.formatHelp.https":"Use URLs HTTPS públicas para feeds remotos (não FTP nem localhost). O carregamento de CSV funciona para ficheiros locais.",
"mapping.formatHelp.specs":"Especificações como pares Etiqueta: valor (ex. {ram}). Dimensões: {height}, {width}, {depth}, {mass}",
"mapping.formatHelp.also":"Também suportado: preços, stock, imagens, categoria, garantia, ID EPREL, descrições HTML, imagens extra, URL de vídeo e mais — descarregue a amostra completa.",
"mapping.sourcePreview.loading":"A carregar amostra do feed…",
"mapping.sourcePreview.errorHint":"Ainda pode introduzir manualmente o caminho do elemento de produto. Extraia o esquema quando o URL do feed estiver acessível.",
"mapping.sourcePreview.retry":"Tentar novamente",
"mapping.sourcePreview.empty":"Ainda sem pré-visualização",
"mapping.sourcePreview.emptyHintXml":"Clique em “Extrair esquema” para descarregar uma amostra e descobrir campos, ou introduza um caminho de item manualmente.",
"mapping.sourcePreview.emptyHintCsv":"Clique em “Extrair esquema” para descarregar uma amostra e descobrir campos.",
"mapping.preview.title":"Pré-visualização do mapeamento",
"mapping.preview.subtitle":"Forma de produto de amostra a partir dos seus mapeamentos de campos atuais",
"mapping.preview.usingSamples":"· a usar amostras extraídas",
"mapping.preview.formatCsv":"formato: csv",
"mapping.preview.item":"item: {path}",
"mapping.preview.sourceFields":"· {count} campos de origem",
"mapping.preview.empty":"Ainda sem campos mapeados",
"mapping.preview.emptyHint":"Mapeie colunas de origem ou nós XPath para campos de produto. Uma pré-visualização de produto de amostra aparecerá aqui.",
"mapping.preview.rawSample":"Fragmento de amostra em bruto",
"imports.title":"Carregamentos",
"imports.description":"Importações CSV guardadas neste espaço de trabalho — produtos, categorias e atributos.",
"imports.importProducts":"Importar produtos",
"imports.emptyTitle":"Ainda sem carregamentos",
"imports.emptyMessage":"As importações CSV de produtos, categorias e atributos aparecem aqui após o carregamento.",
"imports.goProducts":"Ir para produtos",
"imports.categories":"Categorias",
"imports.recent":"Carregamentos recentes",
"imports.fileCount":"{count} ficheiro",
"imports.fileCountPlural":"{count} ficheiros",
"imports.col.fileName":"Nome do ficheiro",
"imports.col.kind":"Tipo",
"imports.col.uploaded":"Carregado",
"imports.col.size":"Tamanho",
"imports.actions":"Ações de carregamento",
"imports.loadFailed":"Falha ao carregar carregamentos",
"imports.metadataOnlyNotice":"{count} upload records are metadata-only — file bytes were not migrated. Re-upload or resync storage if you need the originals.",
"imports.metadataOnlyBadge":"Metadata only (blob not migrated)",
"imports.deleteConfirm":"Eliminar “{name}”? Isto remove o registo de carregamento (e o blob local, se existir).",
"imports.deleted":"Carregamento eliminado.",
"imports.deleteFailed":"Não foi possível eliminar o carregamento",
"reviews.syncTitle":"Importação de avaliações (loja → Descrybe)",
"reviews.syncDesc":"Importação de entrada — trazer avaliações de produtos WooCommerce para o Descrybe para campanhas e reputação",
"reviews.syncQueued":"Sync de avaliações em fila",
"reviews.statusBadge":"Avaliações: {status}",
"reviews.syncedCount":"{count} sincronizados",
"reviews.lastSync":"Última sync: {date}",
"reviews.noSyncYet":"Ainda não foi concluída nenhuma sync de avaliações.",
"reviews.needsReconnect":"A importação de avaliações não pode correr até as credenciais serem reconectadas após a migração. No separador Ligação: Guardar, depois Testar ligação.",
"reviews.queueImport":"Colocar importação de avaliações na fila (loja → Descrybe)",
"reviews.queueing":"A colocar na fila...",
"reviews.saveTestFirst":"Guarde as credenciais e teste a ligação antes de sincronizar",
"reviews.refreshList":"Atualizar lista",
"reviews.loading":"A carregar avaliações…",
"reviews.emptyTitle":"Ainda sem avaliações",
"reviews.emptyMessage":"Coloque na fila uma sincronização de avaliações após ligar a loja. Este separador continua utilizável com lista vazia.",
"reviews.col.product":"Produto",
"reviews.col.reviewer":"Avaliador",
"reviews.col.rating":"Classificação",
"reviews.col.review":"Rever",
"reviews.queuedSuccess":"Sincronização de avaliações em fila. Será executada em breve.",
"reviews.queueFailed":"Não foi possível colocar a sincronização de avaliações na fila",
"campaigns.title":"Campanhas",
"campaigns.description":"Crie campanhas de e-mail sazonais a partir do seu catálogo — escolha uma estação, selecione produtos, defina o público e gere.",
"campaigns.new":"Nova campanha",
"campaigns.loading":"A carregar campanhas…",
"campaigns.loadFailed":"Falha ao carregar campanhas",
"campaigns.deleteConfirm":"Eliminar a campanha “{name}”? Isto não pode ser anulado.",
"campaigns.deleted":"Campanha eliminada",
"campaigns.deleteFailed":"Falha ao eliminar a campanha",
"campaigns.partialUnavailable":"As campanhas não estão totalmente acessíveis neste momento. Gerar e enviar podem falhar até o serviço voltar.",
"campaigns.unavailableMessage":"O serviço de campanhas não está acessível. Pode abrir o assistente, mas gerar e enviar aguardam o regresso do serviço.",
"campaigns.openWizard":"Abrir assistente de criação",
"campaigns.backDashboard":"Voltar ao painel",
"campaigns.browseProducts":"Explorar produtos",
"campaigns.emptyTitle":"Ainda sem campanhas",
"campaigns.noMatches":"Sem correspondências",
"campaigns.emptyMessage":"Crie uma campanha de Black Friday, Natal ou personalizada em poucos passos — predefinições sazonais estão prontas para começar.",
"campaigns.noMatchesMessage":"Tente outro nome, época ou estado.",
"campaigns.create":"Criar campanha",
"campaigns.col.season":"Época",
"campaigns.col.updated":"Atualizado",
"campaigns.scheduled":"Agendado {date}",
"campaigns.newTitle":"Nova campanha",
"campaigns.newDesc":"Escolha uma estação, selecione produtos e público, escreva o prompt e depois gere, teste e agende.",
"campaigns.editTitle":"Editar campanha",
"campaigns.editDesc":"Atualize a estação, os produtos e o público — depois regenere, envie um teste ou agende.",
"campaignWizard.loading":"A carregar assistente de campanha…",
"campaignWizard.apiMissing":"A API de campanhas está temporariamente indisponível. Pode explorar o assistente; guardar / gerar / enviar precisam de /api/campaigns acessível.",
"campaignWizard.upgradeTitle":"As campanhas de IA são uma funcionalidade paga",
"campaignWizard.upgradeMessage":"Os planos Free podem preparar estações e públicos, mas Gerar IA requer Starter ou superior. Atualize para desbloquear rascunhos de e-mail IA.",
"campaignWizard.comparePlans":"Comparar planos",
"campaignWizard.step.season":"Época",
"campaignWizard.step.catalog":"Produtos",
"campaignWizard.step.audience":"Público",
"campaignWizard.step.prompt":"Prompt",
"campaignWizard.step.preview":"Pré-visualização",
"campaignWizard.step.send":"Enviar",
"campaignWizard.pickSeason":"Escolha uma estação",
"campaignWizard.pickSeasonHelp":"Comece a partir de um modelo — pode editar tudo depois.",
"campaignWizard.advancedHelp":"A geração IA usa o kit de marca (se definido) e os produtos selecionados. A pré-visualização só de modelo ignora a IA e serve de esboço de layout.",
"campaignWizard.planFree":"Grátis",
"campaignWizard.planPaid":"Pago",
"campaignWizard.planLine":"Plano:",
"campaignWizard.aiLocked":"— Gerar IA está bloqueado.",
"campaignWizard.generateAi":"Gerar IA",
"campaignWizard.templatePreview":"Pré-visualização do modelo",
"campaignWizard.saveDraft":"Guardar rascunho",
"campaignWizard.previewTitle":"Pré-visualização",
"campaignWizard.status":"Estado:",
"campaignWizard.generateToSee":"Gere um rascunho para ver o corpo do e-mail.",
"campaignWizard.noPreview":"Ainda sem pré-visualização. Volte a Prompt e execute Gerar IA ou Pré-visualização do modelo.",
"campaignWizard.backToPrompt":"Voltar ao prompt",
"campaignWizard.subject":"Assunto",
"campaignWizard.emailPreview":"Pré-visualização do e-mail",
"campaignWizard.regenerateAi":"Regenerar com IA",
"campaignWizard.regenerate":"Regenerar",
"campaignWizard.continueSend":"Continuar para enviar",
"campaignWizard.testSend":"Envio de teste",
"campaignWizard.testSendHelp":"Envie uma cópia a si próprio antes de agendar.",
"marketing.footer":"As campanhas de e-mail ficam em {link} — esta página só prepara feeds de exportação do catálogo.",
"common.done":"Concluído",
"common.copied":"Copiado para a área de transferência.",
"common.copyFailed":"Não foi possível copiar. Selecione o texto e copie manualmente.",
"common.submitting":"A submeter…",
"common.sending":"A enviar…",
"settings.companyAdminOnlyView":"Só os admins da empresa podem alterar as definições. Pode ver os detalhes do espaço de trabalho atual.",
"settings.activeCompanyHelp":"Espaço de trabalho para catálogo, feeds, faturação e chaves API. Mude a qualquer momento daqui ou no cabeçalho.",
"settings.noCompanySelected":"Nenhuma empresa selecionada",
"settings.creditsOverviewHelp":"Saldo de créditos de IA da empresa ativa. A utilização detalhada está em Faturação.",
"settings.billingLabel":"Faturação",
"settings.remainingLabel":"Restantes",
"settings.creditsUnavailable":"O saldo de créditos ainda não está disponível para este espaço de trabalho.",
"settings.openBilling":"Abrir utilização e faturação",
"settings.companyNameHelp":"Este nome aparece em convites e definições da organização",
"settings.contentSettingsHelp":"Configure o idioma e a correspondência de produtos para o conteúdo gerado",
"settings.mergeProductsHelp":"Quando ativado, as importações CSV combinam linhas com o mesmo GTIN num produto. Desative para manter cada linha independente.",
"settings.emailIntegrationHelp":"Configure o Resend ou SMTP para convites, campanhas e e-mail transacional.",
"settings.configureEmail":"Configurar e-mail",
"settings.aiIntegrationsHelp":"Créditos da plataforma ou a sua própria chave, mais prompts editáveis para títulos, descrições, SEO e campanhas. Chaves encriptadas em repouso.",
"settings.openAiIntegrations":"Abrir integrações de IA",
"settings.companyNameRequired":"Introduza um nome de empresa.",
"settings.companySaved":"Definições da empresa guardadas.",
"settings.companyUpdateFailed":"Não foi possível atualizar a empresa",
"settings.mergeOn":"Os produtos com o mesmo GTIN serão unidos entre feeds.",
"settings.mergeOff":"Os produtos com o mesmo GTIN mantêm-se separados.",
"settings.mergeUpdateFailed":"Não foi possível atualizar a definição de união",
"settings.inAppToastsHelp":"Apenas neste browser. As falhas estão ativas por predefinição; as conclusões são silenciadas para reduzir ruído. Feedback de formulários e Anular nunca são silenciados.",
"settings.emailAlertsHelp":"As preferências de alerta por e-mail chegam em breve. Alertas de falha estarão ativas por predefinição (como na app); e-mails de conclusão ficam off salvo opt-in.",
"settings.emailAlertsBody":"Por agora, configure o correio transacional em Empresa → Integração de e-mail. Os alertas in-app acima continuam a aplicar-se.",
"settings.apiKeysLegacyNotice":"As chaves API legado não foram migradas. Crie uma nova para restaurar o acesso — o segredo é mostrado apenas uma vez.",
"settings.apiKeysAdminOnly":"Só os administradores podem criar ou revogar chaves API. Pode ver os prefixos existentes.",
"settings.apiKeysCopyUnavailableNotice":"Cópia indisponível para chaves existentes — só o prefixo é guardado. Crie uma nova para copiar o segredo uma vez e revogue a antiga se necessário.",
"settings.apiKeysForbidden":"Não tem permissão para ver chaves API. Peça ajuda a um administrador da empresa.",
"settings.noApiKeys":"Ainda sem chaves API",
"settings.noApiKeysHelpAdmin":"As chaves API legado não foram migradas. Crie uma nova para autenticar pedidos Descrybe (X-API-Key). O segredo completo é mostrado apenas uma vez.",
"settings.noApiKeysHelpMember":"Ainda sem chaves API para esta empresa. As legado não foram migradas — peça a um administrador para criar uma.",
"settings.unnamedKey":"Chave sem nome",
"settings.neverUsed":"Nunca usado",
"settings.apiKeyActions":"Ações de chave API",
"settings.copyUnavailable":"Cópia indisponível",
"settings.copyUnavailableTitle":"O segredo completo é mostrado apenas uma vez quando a chave é criada",
"settings.revoke":"Revogar",
"settings.apiKeyNameRequired":"Introduza um nome para esta chave API.",
"settings.apiKeyCreatedOnce":"Chave API criada. Copie-a agora — não será mostrada novamente.",
"settings.apiKeyCreated":"Chave API criada.",
"settings.apiKeyCreateFailed":"Não foi possível criar a chave API",
"settings.apiKeyRevokeConfirm":"Revogar esta chave API? Os pedidos que a usam deixarão de funcionar.",
"settings.apiKeyRevoked":"Chave API revogada.",
"settings.apiKeyRevokeFailed":"Não foi possível revogar a chave API",
"settings.apiKeyCopied":"Chave API copiada.",
"settings.createApiKeyOnceHelp":"Copie esta chave agora — não será mostrada novamente. Use-a como Authorization: Bearer ou X-API-Key em /api/v1.",
"settings.createApiKeyNameHelp":"Dê um nome à chave para a distinguir depois. Após criar, envie-a como Authorization: Bearer (preferido) ou X-API-Key.",
"settings.keyNamePlaceholder":"p.ex. Production",
"settings.newApiKeyAria":"Nova chave API mostrada uma vez",
"settings.copyApiKeyAria":"Copiar chave API",
"settings.alert.sync_fail.title":"Falhas de sync",
"settings.alert.sync_fail.description":"Quando uma sincronização de feed expira ou a API devolve um erro.",
"settings.alert.ai_done.description":"Quando um trabalho em segundo plano termina com sucesso. Os toasts de início ficam sempre ativos para Anular permanecer disponível.",
"settings.alert.export_fail.title":"Falhas de exportação",
"settings.alert.export_fail.description":"Quando falha a exportação de um produto ou feed de exportação.",
"flash.admin.featuresAllOn":"Todas as funcionalidades ativadas para este plano.",
"flash.admin.featuresAllOff":"Todas as funcionalidades desativadas para este plano.",
"flash.admin.profileApplied":"Perfil {label} aplicado a {name}.",
"flash.admin.overridesCleared":"Substituições limpas — a usar predefinições do nome do plano.",
"empty.plans.none":"Nenhum plano encontrado.",
"empty.plans.noMatch":"Nenhum plano corresponde a este filtro.",
"empty.plans.selectPackage":"Selecione um pacote para editar funcionalidades.",
"empty.products.processingTitle":"Nenhum produto em processamento",
"empty.products.processingMessageCan":"O progresso em direto está em Processamento. Abra um trabalho em curso para ver o estado dos passos; este separador listará produtos em curso quando o filtro por itens estiver disponível.",
"empty.products.processingMessageCannot":"Os produtos num trabalho aparecem aqui assim que o processamento começar a partir do catálogo.",
"empty.products.reviewTitle":"Nenhum produto a precisar de revisão",
"empty.products.reviewMessage":"Após um trabalho, os produtos enriquecidos aparecem aqui. Abra uma linha para comparar original vs enriquecido e Aceitar, editar ou Rejeitar.",
"empty.products.errorTitle":"Nenhum produto com erros",
"empty.products.errorMessage":"Quando um trabalho falha para um produto, ele aparece aqui para poder tentar novamente.",
"empty.products.filterTitleUnprocessed":"Sem correspondências não processadas",
"empty.feeds.noMatchMessage":"Experimente outro termo de pesquisa, ou limpe a pesquisa para ver todos os feeds.",
"empty.export.loadFailedTitle":"Não foi possível carregar os feeds de exportação",
"empty.export.loadFailedMessage":"Algo correu mal ao carregar as suas exportações. Tente novamente ou veja o erro acima para detalhes.",
"empty.export.noneTitle":"Ainda sem feeds de exportação",
"empty.export.noneMessage":"Crie um feed Google Shopping, Meta ou CSV/XML personalizado para escolher que produtos e campos saem. Gere um URL público para Merchant Center ou qualquer parceiro — ou exporte um subconjunto em Produtos.",
"empty.export.noMatchMessage":"Tente outro termo de pesquisa.",
"empty.files.noneTitle":"Ainda sem carregamentos",
"empty.files.noneMessage":"Importações CSV de produtos, categorias e atributos aparecem aqui após o carregamento. Após uma migração de plataforma, os conteúdos dos ficheiros (blobs) não foram copiados — volte a carregar se precisar deles.",
"empty.files.uploadCta":"Carregar CSV",
"empty.export.fromProductsCta":"Exportar a partir de Produtos",
"empty.dashboard.noJobsMessage":"Os trabalhos aparecem aqui depois de iniciar o processamento em Produtos. Enriqueça títulos e descrições antes de exportar.",
"empty.stores.noneTitle":"Ainda sem loja ligada",
"empty.stores.noneMessage":"Ligue o WooCommerce ou Shopify para sincronizar catálogo e encomendas. Prefere um ficheiro de fornecedor? Use URL de feed ou carregamento CSV.",
"empty.stores.noneTitleMember":"Ainda sem loja ligada",
"empty.stores.noneMessageMember":"Só os admins da empresa podem ligar WooCommerce ou Shopify. Peça ajuda a um admin, ou use Feed URL/CSV se o seu papel permitir.",
"empty.woo.openConnection":"Abrir definições de ligação",
"empty.shopify.openConnection":"Abrir definições de ligação",
"empty.processing.noneTitle":"Ainda sem trabalhos",
"empty.processing.noneMessage":"Inicie um trabalho a partir de Produtos quando estiver pronto. O progresso e o histórico aparecem aqui.",
"empty.campaigns.unavailableMessage":"O serviço de campanhas não está acessível. Pode abrir o assistente, mas gerar e enviar aguardam o regresso do serviço.",
"empty.structured.unavailableMessage":"Esta API ainda não está neste backend. Não pode gerir campos Export ID até /api/structured-descriptions estar ligada.",
"empty.structured.noneTitle":"Ainda sem campos de descrição estruturada",
"empty.structured.noneMessage":"Adicione um campo aqui ou crie Export IDs numa fórmula de descrição de categoria — aparecerão para feeds de exportação.",
"empty.support.unavailableMessage":"A API de suporte não está acessível. Tente em breve ou abra um novo ticket quando o serviço estiver ativo.",
"empty.support.filterMessage":"Nenhum ticket corresponde a este estado. Tente outro filtro ou crie um novo ticket.",
"empty.support.noneMessage":"Descreva o problema e a equipa responderá neste tópico. Também receberá uma notificação na app quando a equipa responder.",
"empty.support.createTicket":"Criar ticket",
"empty.support.clearFilter":"Limpar filtro",
"empty.support.ticketNotFoundTitle":"Ticket não encontrado",
"empty.support.ticketNotFoundMessage":"Este ticket pode ter sido removido ou não tem acesso.",
"empty.support.noMessagesTitle":"Sem mensagens",
"empty.support.noMessagesMessage":"Este tópico ainda não tem mensagens.",
"empty.settings.noApiKeysTitle":"Ainda sem chaves API",
"empty.shopify.noOrdersTitle":"Ainda sem encomendas",
"empty.shopify.noOrdersMessage":"As encomendas aparecem após ligar o Shopify e executar uma importação. Listas vazias são normais até ao primeiro sync.",
"empty.woo.noOrdersTitle":"Ainda sem encomendas",
"empty.woo.noOrdersMessage":"As encomendas aparecem após ligar o WooCommerce e executar uma sincronização. Listas vazias são normais até ao primeiro sync.",
"empty.woo.noReviewsTitle":"Ainda sem avaliações",
"empty.woo.noReviewsMessage":"As avaliações aparecem após colocar na fila uma importação de uma loja ligada. Este separador continua utilizável com a lista vazia.",
"empty.admin.noProviderTitle":"Sem linhas de fornecedor",
"empty.admin.noProviderMessage":"Os tokens aparecem aqui depois de os produtos registarem um tipo de fornecedor.",
"empty.admin.noCompaniesTitle":"Sem empresas",
"empty.admin.noCompaniesMessage":"A lista de empresas está vazia.",
"empty.admin.noCyclesTitle":"Ainda sem ciclos de faturação",
"empty.admin.noCyclesMessage":"Os ciclos aparecem depois de as execuções de faturação criarem linhas históricas.",
"empty.admin.noCompaniesFound":"Nenhuma empresa encontrada.",
"empty.admin.noCompaniesMatch":"Nenhuma empresa corresponde a este filtro.",
"empty.admin.notPlatformTitle":"Não é admin da plataforma",
"empty.admin.notPlatformMessage":"A sua conta está com sessão iniciada mas não está marcada como admin da plataforma. Peça a um admin existente que conceda acesso, depois termine a sessão e inicie novamente.",
"empty.admin.noJobsFilter":"Não há trabalhos para este filtro.",
"support.new.description":"Diga-nos com o que precisa de ajuda. Inclua passos, mensagens de erro ou dados de fatura quando relevante.",
"support.new.back":"Voltar to tickets",
"support.new.details":"Detalhes do ticket",
"support.new.detailsHelp":"Estado starts as open. You may get an automated answer first; a human teammate can take over anytime from the same thread.",
"support.new.subject":"Assunto",
"support.new.subjectPlaceholder":"Resumo curto",
"support.new.category":"Categoria",
"support.new.priority":"Prioridade",
"support.new.optional":"Opcional details",
"support.new.optionalHint":"(SKU, etiquetas — ajuda o encaminhamento)",
"products.description":"Explore, reveja e processe o seu catálogo.",
"products.loadFailed":"Falha ao carregar produtos",
"products.unnamed":"Produto sem nome",
"products.tabs.navLabel":"Vistas de produtos",
"products.tab.processed":"Processados",
"products.tab.processedHint":"Produtos concluídos prontos para exportar ou sincronizar",
"products.tab.needsReview":"Precisa de revisão",
"products.tab.needsReviewHint":"Produtos enriquecidos a aceitar, editar ou rejeitar",
"products.tab.needsReviewShort":"Rever",
"products.tab.error":"Erros",
"products.tab.errorHint":"Produtos que falharam durante um trabalho",
"products.tab.processing":"Em curso",
"products.tab.processingHint":"Produtos num trabalho em execução",
"products.tab.busy":"Em curso",
"products.tab.unprocessed":"Não processados",
"products.tab.unprocessedHint":"Produtos do catálogo ainda não processados",
"products.tab.raw":"Não processados",
"products.status.processed":"Processados",
"products.status.needsReview":"Precisa de revisão",
"products.status.processing":"Processamento",
"products.status.error":"Erro",
"products.status.failed":"Falhado",
"products.status.unprocessed":"Não processados",
"products.status.pending":"Pendente",
"products.status.unknown":"Desconhecido",
"products.pagination.showing":"A mostrar {start}–{end} de {total}",
"products.empty.processing.title":"Ainda sem trabalhos",
"products.empty.processing.messageJobs":"Nada está a correr agora. Inicie um trabalho a partir de Não processados, ou abra Processamento para ver o progresso.",
"products.empty.processing.messageBasic":"Os produtos aparecem aqui enquanto um trabalho está a decorrer.",
"products.empty.needsReview.title":"Nenhum produto a precisar de revisão",
"products.empty.needsReview.message":"Após um trabalho, os produtos enriquecidos aparecem aqui. Abra uma linha para comparar original vs enriquecido e Aceitar, editar ou Rejeitar.",
"products.empty.error.title":"Nenhum produto com erros",
"products.empty.error.message":"Quando um trabalho falha para um produto, ele aparece aqui para poder tentar novamente.",
"products.empty.noUnprocessedMatches":"Sem correspondências não processadas",
"products.processing.freePlanTitle":"Plano Free — processamento sem IA",
"products.processing.freePlanBody":"Normalizar, especificações, preencher e EPREL não consomem créditos. Títulos/descrições AI requerem um plano pago ou créditos.",
"products.enrichment.acceptTitle":"Aceitar o enriquecimento?",
"products.enrichment.acceptConfirm":"Confirmar aceitação do enriquecimento",
"products.enrichment.acceptSelected":"Aceitar o enriquecimento de {count} produto(s) selecionado(s)? Passarão para Processados.",
"products.enrichment.rejectConfirm":"Confirmar rejeição do enriquecimento",
"products.enrichment.rejectBody":"Rejeitar o enriquecimento e devolver este produto a não processado? Pode voltar a processar mais tarde.",
"products.enrichment.rejectSelectedConfirm":"Confirmar rejeição dos selecionados",
"products.enrichment.resetConfirm":"Confirmar reposição para não processado",
"products.enrichment.resetSelected":"Repor {count} produto(s) selecionado(s) para não processado? Voltarão a aparecer como itens não processados.",
"products.enrichment.accepted":"Enriquecimento aceite — movido para Processados.",
"products.enrichment.rejected":"Enriquecimento rejeitado — produto devolvido a não processado.",
"products.enrichment.acceptFailed":"Não foi possível aceitar o enriquecimento",
"products.enrichment.rejectFailed":"Não foi possível rejeitar o enriquecimento",
"categories.searchPlaceholder":"Pesquisar por nome ou ID...",
"categories.created":"{name} foi criado.",
"categories.updated":"A categoria foi atualizada com sucesso.",
"categories.deleted":"A categoria foi eliminada com sucesso.",
"categories.notFound":"Categoria não encontrada.",
"categories.loadCategoryFailed":"Falha ao carregar a categoria",
"categories.noCategoriesYet":"Ainda sem categorias",
"categories.noMatch":"Nenhuma categoria corresponde a “{query}”. Limpe a pesquisa ou tente outro termo.",
"categories.emptyHint":"Adicione uma categoria ou importe um CSV para construir a árvore.",
"categories.promptCountOne":"{count} categoria tem um prompt de geração IA. Abra o menu ⋮ → Editar prompt IA, ou edite uma categoria e escolha Editar prompt IA.",
"categories.promptCountMany":"{count} categorias têm um prompt de geração IA. Abra o menu ⋮ → Editar prompt IA, ou edite uma categoria e escolha Editar prompt IA.",
"categories.actions":"Ações de categoria",
"categories.chooseCsv":"Escolher CSV",
"categories.createSingleOrImport":"Crie uma única categoria ou importe várias a partir de CSV.",
"categories.createSingle":"Criar uma única categoria.",
"categories.missingNameColumn":"Falta a coluna obrigatória 'name'",
"categories.missingUniqueIdColumn":"Falta a coluna obrigatória 'unique_id'",
"categories.nameAndIdRequired":"O nome e o ID único são obrigatórios.",
"categories.csvNeedRows":"O ficheiro deve ter uma linha de cabeçalho e pelo menos uma linha de dados",
"categories.titleFormula":"Fórmula de título",
"categories.descriptionFormula":"Fórmula de descrição",
"categories.setTitleFormula":"Definir fórmula de título",
"categories.editTitleFormula":"Editar fórmula de título",
"categories.setDescriptionFormula":"Definir fórmula de descrição",
"categories.editDescriptionFormula":"Editar fórmula de descrição",
"attributes.type.multiselect.hint":"Escolha uma ou mais opções de uma lista",
"standardFields.title":"Campos padrão",
"standardFields.description":"Defina campos de produto padrão e organize-os em grupos",
"standardFields.apiUnavailable":"A API de campos standard não está disponível. As alterações não podem ser guardadas.",
"standardFields.apiUnreachable":"A API de campos padrão não está acessível agora. Criar/editar permanece desativado até /api/standard-fields e /api/field-groups responderem.",
"standardFields.group.nameHint":"Nome a mostrar deste grupo",
"standardFields.group.description":"Descrição",
"standardFields.group.descriptionPlaceholder":"Introduza uma descrição para este grupo",
"standardFields.group.descriptionHint":"Descrição opcional que explica o propósito deste grupo",
"standardFields.group.order":"Ordem de apresentação",
"standardFields.group.orderHint":"Números mais baixos aparecem primeiro",
"standardFields.updateGroup":"Atualizar grupo",
"standardFields.createGroup":"Criar grupo",
"standardFields.deleteFieldDesc":"Esta ação não pode ser anulada. Eliminará permanentemente o campo e removê-lo-á de quaisquer modelos que o usem.",
"standardFields.deleteGroupDesc":"Esta ação não pode ser anulada. Eliminará permanentemente o grupo. Os campos deste grupo terão de ser reatribuídos.",
"export.dialog.description":"Exportar {count} produto(s) selecionado(s). Escolha o feed de exportação que define formato e campos — como escolher o que sincronizar, mas para download ou parceiro.",
"export.dialog.loadFailed":"Falha ao carregar as opções de feed de exportação. Tente novamente.",
"export.dialog.selectPlaceholder":"Selecione um feed de exportação…",
"export.dialog.help":"A sua seleção escolhe os produtos; o feed escolhe o formato do canal e os campos mapeados.",
"export.dialog.emptyTitle":"Ainda sem feeds de exportação",
"export.dialog.emptyMessage":"Crie um feed de exportação para escolher formato e campos e volte para exportar esta seleção.",
"export.dialog.createFeedCta":"Criar feed de exportação",
"billing.loadFailed":"Falha ao carregar a faturação",
"billing.usageLoadFailed":"Falha ao carregar a utilização",
"billing.checkoutComplete":"Checkout concluído. O seu plano e créditos serão atualizados em breve.",
"billing.checkoutCompletePlan":"Plano atualizado. Os seus créditos {plan} estão prontos.",
"billing.checkoutCanceled":"O Checkout foi cancelado. Não foram feitas alterações.",
"billing.portalReturned":"Regressou do portal de faturação. Faça a gestão do plano aqui ou em Plans.",
"billing.comparePlans":"Comparar planos",
"billing.managePayment":"Gerir pagamento",
"billing.addCredits":"Adicionar créditos",
"billing.addingCredits":"A adicionar…",
"billing.addCreditsTitle":"Adicionar créditos",
"billing.addCreditsDescription":"Apenas administrador da plataforma. Os créditos ficam disponíveis de imediato para títulos de IA, descrições e outros passos pagos.",
"billing.creditAmount":"Montante de crédito",
"billing.invalidCreditAmount":"Introduza um montante de créditos válido.",
"billing.companyNotFound":"Empresa não encontrada.",
"billing.adminStats":"{tokens} tokens · {jobs} trabalhos · {input} feeds de entrada / {export} de exportação",
"billing.whatUsesCredits":"O que consome créditos",
"billing.burnsCredits":"Consome créditos",
"billing.noCreditCost":"Sem custo de créditos",
"billing.publicPricing":"Preços públicos",
"billing.managePlanOnPlans":"Gerir plano em Planos",
"billing.recovery.pastDueTitle":"Pagamento em atraso",
"billing.recovery.pastDueAdmin":"O pagamento da sua subscrição falhou. Atualize o pagamento no Customer Portal — o acesso permanece aberto durante este período de carência.",
"billing.recovery.pastDueMember":"A faturação precisa de atenção. Peça a um administrador da empresa para atualizar o pagamento no Customer Portal. O acesso permanece aberto durante este período de carência.",
"billing.recovery.contactAdmin":"Contactar um administrador",
"billing.recovery.goToBilling":"Ir para Faturação",
"billing.recovery.missingPlanTitle":"Sem plano atribuído",
"billing.recovery.missingPlanMessage":"Esta empresa não tem um plano ativo (muitas vezes após uma migração ignorada). Atribua um plano via Checkout ou peça apoio — não assuma capacidade Unlimited.",
"billing.recovery.choosePlan":"Escolha um plano",
"billing.upgrade":"Atualizar",
"billing.askCompanyAdmin":"Peça a um administrador da empresa",
"billing.memberHint":"Só os administradores da empresa podem alterar planos ou abrir Checkout.",
"billing.creditUsage.eprel.detail":"Dados EPREL da UE públicos e gratuitos em todos os planos (sem créditos).",
"billing.creditUsage.campaign.label":"IA de campanha e aplicação de marca",
"billing.creditUsage.campaign.detail":"Os passos de IA pagos que usam o modelo gerido consomem créditos da empresa.",
"exports.title":"Feeds de exportação",
"exports.description":"Escolha o que publicar por canal — que produtos e campos — e partilhe um URL de feed público (sem login).",
"exports.descriptionFiltered":"Ligações públicas Google Shopping, Meta e feeds personalizados. A mostrar {filtered} de {total} feeds.",
"exports.loadFailed":"Falha ao carregar os feeds de exportação",
"exports.loadFeedFailed":"Falha ao carregar o feed de exportação",
"exports.refresh":"Atualizar",
"exports.refreshing":"A atualizar…",
"exports.create":"Criar feed de exportação",
"exports.edit":"Editar feed de exportação",
"exports.editDescription":"Atualize o nome, o estado, que produtos estão incluídos e que campos estão mapeados.",
"exports.howToTitle":"Como escolher o que exportar",
"exports.howTo.choose":"O que entra no feed",
"exports.howTo.chooseBody":"— defina o feed de origem e os estados do produto ao criar/editar para que o URL público só inclua esses produtos.",
"exports.howTo.subset":"Subconjunto pontual",
"exports.howTo.subsetBody":"— em",
"exports.howTo.productsLink":"Produtos",
"exports.howTo.subsetTail":", selecione linhas e Exporte para descarregar só esses produtos com o formato e campos do feed.",
"exports.howTo.google":"Google Shopping",
"exports.howTo.googleBody":"— crie uma predefinição CSV ou XML, Generate, copie o URL público para Merchant Center → Products → Feeds → scheduled fetch.",
"exports.howTo.meta":"Catálogo Meta",
"exports.howTo.metaBody":"— predefinição CSV para fontes de dados do Commerce Manager.",
"exports.howTo.custom":"CSV/XML personalizado",
"exports.howTo.customBody":"— qualquer parceiro; o mesmo URL público funciona para pollers cron / webhook.",
"exports.loadErrorTitle":"Não foi possível carregar os feeds de exportação",
"exports.loadErrorBody":"Algo correu mal ao carregar as suas exportações. Tente novamente ou veja o erro acima para detalhes.",
"exports.tryAgain":"Tentar novamente",
"exports.emptyTitle":"Ainda sem feeds de exportação",
"exports.emptyBody":"Crie um feed Google Shopping, Meta ou CSV/XML personalizado para escolher que produtos e campos saem. Gere um URL público para Merchant Center ou qualquer parceiro — ou exporte um subconjunto em Produtos.",
"exports.noMatchBody":"Tente outro termo de pesquisa.",
"exports.col.name":"Nome",
"exports.col.format":"Formato",
"exports.col.feedUrl":"URL do feed",
"exports.col.lastGenerated":"Última geração",
"exports.col.status":"Estado",
"exports.col.actions":"Ações",
"exports.working":"Em curso.",
"exports.generatingShort":"A gerar…",
"exports.copyUrl":"Copiar URL",
"exports.openMenu":"Abrir menu",
"exports.preview":"Pré-visualização",
"exports.download":"Descarregar",
"exports.refreshFeed":"Atualizar feed",
"exports.editAction":"Editar",
"exports.delete":"Eliminar",
"exports.rotateToken":"Rodar token do URL",
"exports.rotateFailed":"Falha ao rodar o token do URL do feed",
"exports.deleting":"A eliminar…",
"exports.channelPreset":"Predefinição de canal",
"exports.name":"Nome",
"exports.format":"Formato",
"exports.sourceFeed":"Feed de origem (opcional)",
"exports.sourceFeedHelp":"Limite este feed a produtos de um feed de entrada, ou deixe Todos os produtos — é assim que escolhe o que o URL público inclui.",
"exports.allProducts":"Todos os produtos",
"exports.rootElement":"Elemento raiz",
"exports.itemElement":"Elemento de item",
"exports.productStatuses":"Estados de produto (separados por vírgulas)",
"exports.productStatusesHelp":"Inclua apenas produtos com estes estados (por exemplo active). Deixe em branco para todos os estados.",
"exports.fieldHelp":"As exportações leem produtos processados (com mapped_data em bruto como fallback). Use eprel_* / energy_* para campos EPREL, spec.* para uma especificação, ou specifications.* para expandir todas as specs como nós XML.",
"exports.saving":"A guardar…",
"exports.saveChanges":"Guardar alterações",
"exports.createFeed":"Criar feed",
"exports.updated":"Feed de exportação atualizado.",
"exports.created":"Feed de exportação criado.",
"exports.saveFailed":"Falha ao guardar",
"exports.urlCopied":"URL público do feed {format} copiado. Cole-o em qualquer sistema que obtenha feeds de produto.",
"exports.copyFailed":"Falha ao copiar o URL para a área de transferência",
"exports.preset.google_shopping_csv.description":"Feed de produtos do Merchant Center com as colunas Google standard (id, title, price, gtin, …).",
"exports.preset.google_shopping_csv.hint":"Depois de atualizar o feed, copie o URL CSV público para Google Merchant Center → Products → Feeds → Add feed → Scheduled fetch.",
"exports.preset.google_shopping_xml.description":"As mesmas colunas Google que os elementos XML (g:id, g:title, …) para feeds XML do Merchant Center.",
"exports.preset.google_shopping_xml.hint":"Cole o URL XML público no Merchant Center como scheduled fetch. Se necessário, mapeie os campos da loja em falta (link, price) em Field mappings.",
"exports.preset.custom_xml.description":"Crie uma forma XML personalizada com os seus próprios nomes root/item e mapeamentos de campos.",
"exports.preset.custom_xml.hint":"Defina os nomes dos elementos root e item e mapeie cada chave de saída para uma fonte de produto.",
"exports.preset.custom_xml.defaultName":"Exportação XML personalizada",
"processing.title":"Processamento",
"processing.description":"Progresso em direto do pipeline para trabalhos de processamento de produtos. Atualiza automaticamente enquanto este separador está visível. Os trabalhos concluídos ligam a Needs Review para aceitar / editar / rejeitar.",
"processing.refresh":"Atualizar",
"processing.loadFailed":"Falha ao carregar os trabalhos de processamento",
"processing.tooManyRequests":"Demasiados pedidos — aguarde um momento e tente novamente.",
"processing.serverError":"{fallback} (erro do servidor {status}). Tente novamente em breve.",
"processing.actions.processAriaCount":"Processar {count} produto{plural} selecionado(s) nesta página",
"processing.actions.whatToProcess":"O que processar",
"processing.actions.freeNoAiTitle":"Plano Free — sem créditos de IA",
"processing.actions.freeNoAiBody":"Normalize, specs, fill e EPREL continuam a correr. Títulos/descrições de IA precisam de um plano pago ou créditos.",
"processing.actions.confirmBody":"Processar {count} produto(s) nesta página por {credits} créditos. Os créditos são consumidos quando o trabalho começa e não podem ser anulados a partir desta ação.",
"processing.receipt.cancelledMany":"Trabalhos de processamento cancelados",
"processing.receipt.cancelledDesc":"O trabalho recém-iniciado foi cancelado.",
"processing.receipt.cancelFailed":"Não foi possível cancelar o trabalho de processamento",
"unsubscribe.title":"Cancelar subscrição",
"unsubscribe.me":"Cancelar a minha subscrição",
"unsubscribe.invalidLink":"Ligação inválida",
"unsubscribe.failedShort":"Falha ao cancelar a subscrição",
"unsubscribe.already":"Já cancelou a subscrição.",
"unsubscribe.confirmPrompt":"Confirme abaixo para cancelar a subscrição dos e-mails de marketing.",
"unsubscribe.done":"A sua subscrição foi cancelada.",
"stores.title":"Lojas e fontes",
"stores.description":"Ligue qualquer loja ou fornecedor num só sítio — Woo, Shopify, URL de feed ou CSV. Lojas live: produtos Descrybe → loja; encomendas/avaliações loja → Descrybe. Exporte quando o catálogo estiver pronto.",
"stores.allInputFeeds":"Todos os feeds de entrada",
"stores.exportFeeds":"Feeds de exportação",
"stores.migrationNote":"Após uma migração da plataforma Descrybe, as credenciais de WooCommerce e Shopify podem precisar ser reintroduzidas — é um passo de religação, não uma sync avariada.",
"stores.docsPrefix":"Docs:",
"stores.docsApiOverview":"Visão geral da API",
"stores.docsSuffix":"para acesso público a produtos; use WooCommerce ou Shopify abaixo para a sync em direto da loja.",
"stores.connectorsHeading":"Conectores de loja e catálogo",
"stores.statusAria":"Estado: {label}",
"stores.ctaAria":"{cta}: {title}",
"stores.startTitle":"Por onde começar?",
"stores.startBody":"Loja Woo → WooCommerce. Shopify ou outra plataforma → URL de feed ou carregamento CSV. Pronto para Merchant Center ou parceiros → Feeds de exportação (predefinição Google Shopping ou campos personalizados). Após uma migração, volte a ligar Woo/Shopify antes de esperar que a sync funcione.",
"stores.startBodyMember":"Peça a um admin da empresa para ligar WooCommerce ou Shopify. Ainda pode abrir lojas ligadas para sincronizar e navegar, e usar Feed URL, CSV ou feeds de exportação conforme o plano.",
"stores.wizard.title":"Configuração guiada da loja",
"stores.wizard.description":"Ligue uma loja, teste a ligação, coloque a primeira sync de produtos na fila e está feito.",
"stores.wizard.guidedSetupAria":"Iniciar configuração guiada da loja",
"stores.wizard.adminOnly":"Só os admins da empresa podem executar a configuração guiada (guardar credenciais e primeira sincronização). Ainda pode abrir lojas ligadas.",
"stores.wizard.pickChannel":"Escolha um conector de loja",
"stores.wizard.pickChannelBody":"Escolha WooCommerce ou Shopify. Conclua ligar → testar → primeira sync na página do conector e volte aqui.",
"stores.shopify.description":"Envie produtos Descrybe → Shopify. Importe encomendas Shopify → Descrybe. Avaliações não estão disponíveis na Admin API da Shopify.",
"stores.shopify.ctaReconnect":"Voltar a ligar Shopify",
"stores.shopify.ctaOpen":"Abrir Shopify",
"stores.shopify.ctaConnect":"Ligar Shopify",
"stores.shopify.ctaView":"Ver Shopify",
"stores.feedUrl.title":"URL do feed",
"stores.feedUrl.description":"Pull any supplier or loja catalog from a public CSV or XML URL on a schedule. Map fields, then sync.",
"stores.feedUrl.cta":"Adicionar URL do feed",
"stores.csv.title":"Carregamento CSV",
"stores.csv.description":"Carregue um CSV de produtos como feed de entrada. Ideal para ficheiros de fornecedor pontuais ou exportações do admin Shopify.",
"stores.csv.cta":"Carregar CSV",
"stores.export.title":"Exportar / REST",
"stores.export.description":"Publique Google Shopping ou CSV/XML personalizado com URL pública. Ou obtenha produtos via chave API (/api/v1).",
"stores.export.cta":"Abrir exportações",
"stores.apiKeys.title":"Chaves API",
"stores.apiKeys.description":"As chaves API antigas não foram migradas. Crie uma nova chave em Definições para restaurar o acesso a /api/v1 — o segredo só é mostrado uma vez.",
"stores.apiKeys.descriptionMember":"Chaves API da empresa para /api/v1. As legado não foram migradas — só admins podem criar ou revogar; pode ver prefixos em Definições.",
"stores.apiKeys.cta":"Gerir chaves API",
"stores.apiKeys.ctaView":"Ver chaves API",
"stores.status.needsReconnect":"Precisa de religação",
"flash.store.saveFailed":"Não foi possível guardar as definições",
"flash.store.queueSyncFailed":"Não foi possível colocar a sincronização na fila",
"flash.store.queueOrdersFailed":"Não foi possível colocar a sincronização de encomendas na fila",
"flash.store.connectedTo":"Ligado a {name}.",
"flash.shopify.loadFailed":"Falha ao carregar a configuração Shopify",
"flash.shopify.productSyncQueued":"Sincronização de produtos em fila. O worker irá executá-la em breve.",
"flash.shopify.ordersSyncQueued":"Sincronização de encomendas em fila. O worker irá executá-la em breve.",
"flash.woo.loadFailed":"Falha ao carregar a configuração WooCommerce",
"flash.woo.productSyncQueued":"Sincronização de produtos em fila. Será executada em breve.",
"flash.woo.ordersSyncQueued":"Sincronização de encomendas em fila. Será executada em breve.",
"flash.woo.reviewsSyncQueued":"Sincronização de avaliações em fila. Será executada em breve.",
"flash.woo.queueReviewsFailed":"Não foi possível colocar a sincronização de avaliações na fila",
"flash.woo.remoteMapsFailed":"Falha ao carregar os mapas remotos",
"flash.woo.syncSettingsFailed":"Não foi possível guardar as definições de sincronização",
"flash.woo.categoryAutoMapFailed":"Falha no mapeamento automático de categorias",
"flash.woo.attributeAutoMapFailed":"Falha no mapeamento automático de atributos",
"shopify.title":"Integração Shopify",
"shopify.description":"Connect a Shopify store with Dev Dashboard client credentials (recommended) or a legacy Admin API token. Products: Descrybe → Shopify. Orders: Shopify → Descrybe.",
"shopify.adminOnly":"Only empresa admins can change Shopify connection definições. Sincronizar and browse stay disponível.",
"shopify.noCredentialsMember":"Ainda não há credenciais Shopify. Peça a um administrador da empresa para ligar a loja. Sync e consulta de encomendas ficam disponíveis após guardar e testar a ligação.",
"shopify.enterToken":"Introduzir credenciais",
"shopify.noCredentials":"Sem credenciais Shopify. Introduza o domínio *.myshopify.com e o Client ID + secret do Dev Dashboard (ou um token Admin API legado), depois Guardar e Testar ligação. Após uma migração de plataforma, os segredos antigos não são transferidos — reconecte com um token novo.",
"shopify.allConnectors":"Todos os conectores de loja",
"shopify.setupDesc":"New Shopify apps are created in the Dev Dashboard (not Develop apps in Admin). Paste Client ID + secret below — Descrybe exchanges them for Admin API tokens and refreshes before they expire.",
"shopify.setup.oauthNote":"Still manual: create/install the app in Shopify and paste Client ID + secret here. Descrybe does not host a one-click App Store install. Legacy permanent shpat_ tokens from older Admin custom apps still work.",
"shopify.setup.scopesTitle":"Scopes Admin API necessários",
"shopify.setup.scopesIntro":"Add these scopes on the app version in the Dev Dashboard before you release and install:",
"shopify.setup.openDevelopAppsNeedDomain":"Enter your shop domain below to unlock a direct Admin link for this store.",
"shopify.setup.openDevelopAppsHint":"Opens Shopify Admin → Develop apps for this shop (legacy apps / install approvals). New apps start in the Dev Dashboard.",
"shopify.field.shopDomainHelp":"Admin API host only — use the *.myshopify.com name, not a custom storefront domain.",
"shopify.field.clientId":"Client ID",
"shopify.field.clientSecret":"Client secret",
"shopify.field.clientSecretHelp":"From Dev Dashboard → your app → Settings. Descrybe exchanges these for a short-lived Admin API token and refreshes it automatically.",
"shopify.field.accessTokenHelp":"Only for custom apps created in Shopify Admin before January 2026. New apps should use Client ID + secret instead.",
"shopify.placeholder.clientId":"Client ID from Dev Dashboard",
"shopify.placeholder.clientIdKeep":"Client ID on file — enter a new one to replace",
"shopify.setup.scope.read_productsWhy":"Encontrar produtos existentes por SKU antes de atualizar",
"shopify.setup.scope.read_orders":"read_orders",
"shopify.setup.scope.read_ordersWhy":"Importar encomendas para o Descrybe (entrada)",
"shopify.setup.step1":"Se ligou o Shopify antes de uma migração de plataforma: crie uma nova app no Dev Dashboard (ou reconecte com um token legado novo) — os segredos guardados não são transferidos.",
"shopify.setup.step2.before":"Open the",
"shopify.setup.step2.path":"Shopify Dev Dashboard",
"shopify.setup.step2.after":"→ Apps → Create app → Start from Dev Dashboard (or use the deep link below).",
"shopify.setup.step3.before":"Create a version: set App URL (default home is fine for API-only), add scopes",
"shopify.setup.step3.after":".",
"shopify.setup.step4.before":"From the app Home tab,",
"shopify.setup.step4.after":"on your store (merchant must approve scopes).",
"shopify.testSectionTitle":"Verificar ligação",
"shopify.testHint":"Guarde primeiro o domínio da loja e o token e depois execute Testar ligação. Um teste bem-sucedido confirma o token e os scopes antes de enfileirar a sync.",
"shopify.overwriteBodyCount":"Isto coloca na fila um envio de produtos de saída. {count} produto(s) Shopify previamente ligados podem ser atualizados com o conteúdo Descrybe.",
"shopify.overwriteBody":"Isto coloca na fila um envio de produtos de saída. Os produtos Shopify correspondentes podem ser atualizados com o conteúdo Descrybe.",
"shopify.credentialsTitle":"Credenciais da loja",
"shopify.credentialsDesc.before":"O domínio da loja deve ser o seu",
"shopify.credentialsDesc.code":"*.myshopify.com",
"shopify.credentialsDesc.after":"domain. Prefer Dev Dashboard Client ID + secret; legacy Admin API tokens still work.",
"shopify.field.shopDomain":"Domínio da loja",
"shopify.field.accessToken":"Token de acesso Admin API",
"shopify.field.apiVersion":"Versão da API",
"shopify.placeholder.tokenKeep":"******** (deixar em branco para manter)",
"shopify.enableSync":"Ativar envio de produtos (Descrybe → Shopify)",
"shopify.dryRunLabel":"Simulação (sem chamadas Shopify ao vivo)",
"shopify.ordersTitle":"Importação de encomendas (Shopify → Descrybe)",
"shopify.ordersDesc":"Shopify → Descrybe — importa encomendas e linhas para o Descrybe (não escreve de volta na Shopify).",
"shopify.ordersNeedsReconnect":"A importação de encomendas não pode correr até as credenciais serem reconectadas após a migração. No separador Ligação: Guardar, depois Testar ligação.",
"shopify.notesTitle":"Notas",
"shopify.notesDesc":"Capacidades do conector Shopify",
"shopify.notes.productsBody":"— os produtos Descrybe processados são criados ou atualizados no Shopify (correspondência por SKU via GraphQL quando não há id de produto Shopify em cache). Uma re-sync pode sobrescrever campos remotos correspondentes.",
"shopify.notes.ordersBody":"— obtidos para relatórios e futuros fluxos de audiência.",
"shopify.notes.reviewsLabel":"Avaliações",
"shopify.notes.reviewsBody":"-- not suporteed. Shopify has no first-party produto reviews Admin API (third-party review apps are out of scope here).",
"shopify.notes.encryption.before":"Os tokens são encriptados em repouso com",
"woo.title":"Integração WooCommerce",
"woo.description":"Create a WordPress REST API key, connect your store, then push products (Descrybe → WooCommerce) and pull orders/reviews (WooCommerce → Descrybe).",
"woo.allStores":"Todas as lojas",
"woo.adminOnly":"Apenas administradores da empresa podem alterar a ligação e o mapeamento WooCommerce. A sincronização e a navegação continuam disponíveis.",
"woo.enterCredentials":"Introduzir credenciais",
"woo.noCredentials":"Sem credenciais WooCommerce. Introduza o URL da loja, crie uma chave REST API Read/Write no WordPress, cole Consumer Key e Secret, depois Guardar e Testar ligação. Após uma migração de plataforma, os segredos antigos não são transferidos — reconecte com uma chave nova.",
"woo.noCredentialsMember":"Ainda não há credenciais WooCommerce. Peça a um administrador da empresa para ligar a loja. Sync, encomendas e avaliações ficam disponíveis após guardar e testar a ligação.",
"woo.setupDesc":"Follow these steps to create a WooCommerce REST API key in WordPress and connect it here. Descrybe never creates keys on your store for you.",
"woo.setup.step1":"Se ligou o WooCommerce antes de uma migração de plataforma: crie uma nova chave REST API — as credenciais guardadas antigas não são utilizáveis.",
"woo.setup.step2.before":"Enter your store",
"woo.setup.step2.path":"HTTPS URL",
"woo.setup.step2.after":"in the form below (example: https://yourstore.com).",
"woo.overwriteBodyCount":"Isto coloca na fila um envio de produtos de saída. {count} produto(s) WooCommerce previamente ligados podem ser atualizados com o conteúdo Descrybe.",
"woo.overwriteBody":"Isto coloca na fila um envio de produtos de saída. Os produtos WooCommerce correspondentes podem ser atualizados com o conteúdo Descrybe.",
"woo.connectionTitle":"Store connection",
"woo.connectionDesc":"Paste your store URL and a Read/Write REST API key pair. Save, then Test Connection before queuing syncs.",
"woo.enableSync":"Ativar envio de produtos (Descrybe → WooCommerce)",
"woo.field.storeUrl":"URL da loja",
"woo.field.storeUrlHelp":"URL público do site com https. Usado na REST API do WooCommerce e em ligações profundas ao admin WordPress.",
"woo.field.consumerKey":"Consumer Key",
"woo.field.consumerSecret":"Consumer Secret",
"woo.field.credentialsHelp":"Consumer Key e Secret com leitura/escrita. Deixe em branco para manter as credenciais existentes.",
"woo.placeholder.keep":"******** (sem alteração)",
"woo.keepCredentialsHint":"Deixe chave/segredo em branco ao guardar para manter as credenciais existentes.",
"woo.saveConfiguration":"Guardar configuração",
"woo.categoryMappingTitle":"Mapeamento de categorias",
"woo.categoryMappingDesc":"Mapeie as suas categorias internas para as categorias WooCommerce",
"woo.attributesEmptyHint":"Teste a ligação e depois atualize para carregar atributos WooCommerce.",
"woo.ordersTitle":"Importação de encomendas (WooCommerce → Descrybe)",
"woo.ordersDesc":"WooCommerce → Descrybe — importa encomendas e linhas para o Descrybe (não escreve de volta na loja).",
"woo.ordersNeedsReconnect":"A importação de encomendas não pode correr até as credenciais serem reconectadas após a migração. No separador Ligação: Guardar, depois Testar ligação.",
"woo.syncSettingsTitle":"Definições de sync",
"woo.syncSettingsDesc":"Configure como os produtos são enviados Descrybe → WooCommerce",
"woo.matchStrategy":"Produto Matching Strategy",
"woo.matchStrategyHelp":"O envio de produtos (Descrybe → WooCommerce) corresponde produtos remotos por SKU ou EAN/GTIN. Coloque na fila no separador Ligação (manual).",
"woo.lastSyncLabel":"Última sync",
"woo.saveSyncSettings":"Guardar definições de sync",
"products.edit.eprelPresentTitle":"O id European Product Registry for Energy Labelling (EPREL) está presente neste produto.",
"products.edit.noEprelBadge":"Sem EPREL",
"products.edit.specsBadge":"Especs",
"products.edit.reviewBannerTitle":"Reveja os campos enriquecidos antes de aceitar",
"products.edit.reviewBannerHelp":"Use o separador Revisão para comparar originais vs IA. Atalhos: A aceitar · R rejeitar · Alt+1/2 campo · ⌘/Ctrl+Enter aceitar tudo.",
"products.edit.noAttrsYet":"No atributo or specification data on this produto yet.",
"products.edit.fromFeed":"Do feed",
"products.edit.feedAttrsHelp":"Valores analisados do feed (especificações HTML, garantia, dimensões, EPREL). As chaves são ligadas a attribute_key quando possível.",
"products.edit.editableAttributesHelp":"As alterações guardam-se no mapa de atributos do produto. As linhas de feed e IA abaixo ficam como referência quando diferem.",
"products.table.coverageTitle":"Cobertura: N=Nome, D=Descrição, A=Atributos, C=Categoria. Cinzento=em falta, laranja=do feed, verde=processado. EPREL mostra o id do registo de etiqueta energética.",
"products.table.productNameAria":"Nome do produto para {name}",
"products.table.selectPage":"Selecionar {count} on this page",
"products.table.deselectPage":"Desselecionar {count} nesta página",
"categories.assign":"Atribuir",
"categories.titleFormulaSubtitle":"Configure como os títulos de produto devem ser gerados para {name}",
"categories.addText":"Adicionar texto",
"categories.aboutTitleFormulas":"Sobre as fórmulas de título",
"categories.aboutTitleFormulasHelp":"Os títulos são montados da esquerda para a direita a partir dos elementos abaixo.",
"categories.variablesReplacedHelp":"As variáveis são substituídas por dados do produto quando disponíveis. Valores em falta são ignorados.",
"categories.variableTypeHelp":"Campo dinâmico dos dados do produto (exemplo: marca).",
"categories.textTypeHelp":"Texto estático que aparece sempre como escrito.",
"categories.assignTitleCopyHelp":"Use Atribuir para copiar esta fórmula para outras categorias que devam partilhar o mesmo padrão de título.",
"categories.titleFormulaInvalid":"Esta página de fórmula de título precisa de uma categoria válida. Volte a categorias e abra novamente Editar fórmula de título.",
"categories.preview.title":"Pré-visualização do título",
"categories.preview.description":"Assim serão estruturados os títulos dos seus produtos",
"categories.preview.exampleTab":"Pré-visualização de exemplo",
"categories.preview.structureTab":"Estrutura da fórmula",
"categories.preview.noElements":"Ainda sem elementos",
"categories.brandTips.title":"Dicas com base na marca",
"categories.brandTips.freePlan":"O kit de marca é editável no plano Free; a aplicação com IA desbloqueia-se nos planos pagos.",
"categories.brandTips.editBrandKit":"Editar kit de marca",
"categories.brandTips.emptyBefore":"Adicione voz ou termos preferidos em ",
"categories.brandTips.emptyAfter":" para ver dicas aqui.",
"categories.brandTips.brandKit":"Kit de marca",
"categories.brandTips.descGuidanceBefore":"Orientação do seu ",
"categories.brandTips.descGuidanceAfter":" para as secções de descrição.",
"categories.formulaElementsTitle":"Elementos da fórmula",
"categories.formulaElementsHelp":"Arraste e largue elementos para os reordenar",
"categories.sectionTypeHeadingsHelp":"Títulos e subtítulos",
"categories.sectionTypeParagraphs":"Parágrafos:",
"categories.sectionTypeParagraphsHelp":"Blocos de conteúdo principais",
"categories.sectionTypeLists":"Listas com marcadores:",
"categories.sectionTypeListsHelp":"Funcionalidades e especificações",
"categories.aiInstructionsHeading":"Instruções de IA",
"categories.aiInstructionsBody":"Escreva um objetivo claro por secção (o que cobrir, tom, extensão). Pedidos vagos produzem textos vagos.",
"categories.exportIdsHeading":"IDs de exportação",
"categories.exportIdsBody":"IDs opcionais associam uma secção a feeds de exportação (por exemplo short_description).",
"categories.assignDescCopyHelp":"Use Atribuir para copiar este modelo para outras categorias que devam partilhar a mesma estrutura.",
"categories.descriptionFormulaInvalid":"Esta página de fórmula de descrição precisa de uma categoria válida. Volte a categorias e abra novamente Editar fórmula de descrição.",
"categories.sectionType.h1":"Cabeçalho 1",
"categories.sectionType.h2":"Cabeçalho 2",
"categories.sectionType.h3":"Cabeçalho 3",
"categories.sectionType.h4":"Cabeçalho 4",
"categories.sectionType.p":"Parágrafo",
"categories.sectionType.ul":"Lista com marcadores",
"categories.aiGenerationPrompt":"Prompt de geração com IA",
"categories.aiPromptOverrides":"Substitui o prompt de utilizador de melhoria de produto da empresa para {name}",
"categories.promptTemplate":"Modelo de prompt",
"categories.promptTemplateHelp":"Use marcadores como {{name}} e {{description}}. Deixe vazio para usar o predefinido da empresa em Integrações → IA.",
"categories.activeOverride":"· substituição ativa para esta categoria",
"categories.usingCompanyDefault":"· a usar o predefinido da empresa / incorporado",
"categories.usingCompanyDefaultForLang":"· vazio para este idioma — aplica-se o predefinido da empresa / integrado",
"categories.aiPromptSavedLang":"Prompt IA guardado para {lang}.",
"categories.aiPromptClearedLang":"Prompt IA limpo para {lang} (aplica-se o predefinido da empresa).",
"contentLang.switcherLabel":"Idioma de conteúdo",
"contentLang.primary":"principal",
"contentLang.hasOverride":"personalizado",
"contentLang.addLanguage":"Adicionar idioma…",
"contentLang.add":"Adicionar",
"contentLang.removeLanguage":"Remover {lang}",
"contentLang.resultsHint":"Mude de idioma para rever títulos e descrições de IA de cada idioma de conteúdo.",
"contentLang.settingsTitle":"Idiomas de conteúdo",
"contentLang.settingsHelp":"O idioma principal é usado por predefinição. Idiomas extra têm os seus próprios prompts e resultados de IA (cada passagem consome créditos).",
"ai.prompts.languageHelp":"Edite os prompts da empresa por idioma de conteúdo. Um idioma vazio usa o valor predefinido integrado para esse idioma.",
"header.accountSettingsAria":"Definições da conta de {email}",
"switcher.switchUserAria":"Mudar de utilizador: {label}",
"switcher.unavailable":"A mudança de utilizador não está disponível neste ambiente.",
"switcher.loadFailed":"Não foi possível carregar os utilizadores.",
"support.notifications.aria":"Notificações de suporte",
"support.notifications.ariaUnread":"Notificações de suporte, {count} por ler",
"time.never":"Nunca",
"time.invalid":"Data inválida",
"time.unknown":"Data desconhecida",
"time.justNow":"agora mesmo",
"time.neverUsed":"Nunca usado",
"billing.plan.enterprise":"Empresarial",
"news.heading":"Atualizações da plataforma",
"news.subtitle":"Funcionalidades e melhorias mais recentes",
"news.keyFeatures":"Funcionalidades principais:",
"news.badge.new":"Novo",
"news.footer":"É tudo por agora — volte após a próxima versão.",
"news.category.enhancement":"Melhoria",
"news.category.feature":"Funcionalidade",
"news.category.integration":"Integração",
"news.category.newFeature":"Nova funcionalidade",
"news.category.billing":"Faturação",
"news.uxImprovements.description":"Usabilidade melhorada com controlos do tour, melhorias de API e melhor navegação.",
"news.uxImprovements.f1":"Ignorar/ocultar o tour",
"news.uxImprovements.f2":"Melhorias de fiabilidade da API",
"news.uxImprovements.f3":"Navegação de interface melhorada",
"news.uxImprovements.f4":"Maior eficiência do fluxo de trabalho",
"news.multiselect.title":"Suporte a atributos de seleção múltipla",
"news.multiselect.description":"Os produtos podem ter vários valores em atributos do tipo lista.",
"news.multiselect.f1":"Tipo de atributo de seleção múltipla",
"news.multiselect.f2":"Seleção múltipla na edição de produtos",
"news.multiselect.f3":"Vários valores num único atributo",
"news.multiselect.f4":"Extração melhorada para campos de seleção múltipla",
"news.multiselect.f5":"Melhor compatibilidade com feeds de exportação",
"news.csvEan.title":"Carregamento CSV de EAN",
"news.csvEan.description":"Carregue CSV com códigos EAN para processar centenas de produtos de uma vez.",
"news.csvEan.f1":"Carregamento CSV com arrastar e largar",
"news.csvEan.f2":"Validação de formato EAN (EAN-8, EAN-13, UPC-12, GTIN-14)",
"news.csvEan.f3":"Deteção automática de duplicados",
"news.csvEan.f4":"Processamento em massa de produtos",
"news.csvEan.f5":"Estatísticas detalhadas de processamento",
"news.brick.title":"Suporte a atributos com código BRICK",
"news.brick.description":"Sistema de atributos com códigos BRICK para classificação e exportação padronizadas.",
"news.brick.f1":"Gestão de atributos com código BRICK",
"news.brick.f2":"Formatação automática de códigos nas exportações",
"news.brick.f3":"Integração de códigos BRICK em feeds XML",
"news.brick.f4":"Melhorias de compatibilidade dos feeds de exportação",
"news.apiV1.title":"Lançamento da API v1",
"news.apiV1.description":"Novos endpoints API v1 para categorias, atributos, feeds, produtos e exportações.",
"news.apiV1.f1":"Endpoints RESTful da API v1",
"news.apiV1.f2":"Gestão de categorias e atributos",
"news.apiV1.f3":"Criação e gestão de feeds",
"news.apiV1.f4":"Processamento de produtos via API",
"news.apiV1.f5":"Acesso programático a feeds de exportação",
"news.apiV1.f6":"Autenticação e autorização",
"news.feedFiltering.title":"Filtragem de feeds na página de produtos",
"news.feedFiltering.description":"Página de produtos com filtragem de feeds otimizada, estados de carregamento e melhor desempenho.",
"news.feedFiltering.f1":"Filtragem de feeds melhorada",
"news.feedFiltering.f2":"Estados de carregamento melhorados",
"news.feedFiltering.f3":"Desempenho de consultas otimizado",
"news.feedFiltering.f4":"Melhor gestão da paginação",
"news.feedFiltering.f5":"Melhorias da funcionalidade de exportação",
"news.exportFeeds.title":"Sistema de feeds de exportação",
"news.exportFeeds.description":"Sistema completo de feeds de exportação XML/CSV com configurações personalizadas.",
"news.exportFeeds.f1":"Formatos de exportação XML e CSV",
"news.exportFeeds.f2":"Mapeamento personalizado de campos",
"news.exportFeeds.f3":"Pré-visualização da exportação",
"news.exportFeeds.f4":"Exportação de produtos baseada em trabalhos",
"news.exportFeeds.f5":"Integração de dados EPREL",
"news.exportFeeds.f6":"URL públicas de feeds de exportação",
"products.enrichment.resetTitle":"Repor para não processado?",
"products.selectedOnPage":"{count} selecionados nesta página",
"products.selectionPageOnly":"A mostrar {shown} de {total} — a seleção é só esta página",
"products.edit.coverageHint":"Quantos de Nome, Descrição, Atributos e Categoria estão presentes (feed ou processados).",
"products.edit.noEprelShort":"Sem EPREL",
"products.edit.specs":"Especs",
"products.edit.reviewBannerBody":"Use o separador Revisão para comparar originais vs IA. Atalhos: A aceitar · R rejeitar · Alt+1/2 campo · ⌘/Ctrl+Enter aceitar tudo.",
"products.edit.whatsFilled":"O que está preenchido",
"products.edit.legend":"Cinzento = em falta · Laranja = do feed · Verde = processado",
"products.edit.noMappedFields":"No mapped feed fields on this produto.",
"products.edit.emptyBadge":"Vazio",
"products.edit.coreBadge":"Núcleo",
"products.edit.feedAttrsHint":"Valores analisados do feed (especificações HTML, garantia, dimensões, EPREL). As chaves são ligadas a attribute_key quando possível.",
"products.edit.aiAttrs":"Atributos IA / enriquecidos",
"mapping.confidence.exact":"Exato",
"mapping.confidence.alias":"Alias",
"mapping.confidence.fuzzy":"Aproximado",
"field.group.basic":"Informação básica",
"field.group.pricing":"Preços",
"field.group.media":"Multimédia",
"field.group.taxonomy":"Taxonomia",
"field.group.inventory":"Inventário",
"field.group.attributes":"Atributos",
"field.group.shipping":"Envio",
"field.group.compliance":"Conformidade",
"field.group.other":"Outro",
"common.yes":"Sim",
"common.no":"Não",
"status.running":"Em execução",
"flash.admin.analyticsLoadFailed":"Falha ao carregar as análises",
"flash.admin.diagnosticsLoadFailed":"Falha ao carregar os diagnósticos",
"flash.admin.diagnosticsUnavailable":"Os diagnósticos não estão disponíveis neste deployment. Contacte o administrador da plataforma.",
"flash.admin.diagnosticsUnreachable":"Não foi possível alcançar a API de diagnósticos. Verifique se a API está a correr e se PUBLIC_API_URL / o proxy Vite apontam para ela.",
"admin.charts.statusEmpty":"Ainda sem linhas nesta divisão.",
"admin.charts.seriesEmpty":"Ainda sem dados neste período.",
"admin.charts.primaryDefault":"Principal",
"admin.charts.statusAria":"Distribuição por estado",
"admin.diagnostics.etlInventoryTitle":"ETL gap inventory",
"admin.diagnostics.etlInventoryHint":"Read-only COUNTs — no fake import. Blob bytes and default job history stay unmigrated unless ops ran optional domain jobs.",
"categories.aiPromptSavedForCategory":"Um prompt de geração com IA está guardado para esta categoria.",
"categories.titleAndDescriptionFormulasSaved":"As fórmulas de título e descrição estão guardadas para esta categoria.",
"categories.titleFormulaSavedForCategory":"Uma fórmula de título está guardada para esta categoria.",
"categories.descriptionFormulaSavedForCategory":"Uma fórmula de descrição está guardada para esta categoria.",
"site.account":"Conta",
"site.goToApp":"Ir para a app",
"site.logIn":"Iniciar sessão",
"site.getStarted":"Começar",
"site.nav.primary":"Principal",
"site.nav.mobile":"Telemóvel",
"site.nav.home":"Início",
"site.nav.pricing":"Preços",
"site.nav.apiDocs":"Docs da API",
"seo.home.title":"Descrybe — Converta feeds de fornecedores em fichas de produto prontas",
"seo.home.description":"Ligue feeds CSV ou XML de fornecedores, associe-os às suas categorias e atributos, gere títulos e descrições segundo as suas regras e exporte ou sincronize com o WooCommerce.",
"seo.pricing.title":"Preços — Free, Starter, Growth, Business | Descrybe",
"seo.pricing.description":"Comece gratuitamente com 100 produtos e mapeamento de feeds. Os planos pagos acrescentam títulos e descrições com IA, mais SKU, feeds de exportação e sync WooCommerce — a partir de 49 $/mês. Enterprise para catálogos ilimitados.",
"seo.privacy.title":"Política de privacidade | Descrybe",
"seo.privacy.description":"Como a Descrybe recolhe, utiliza e protege os dados de conta, catálogos de produtos e feeds de fornecedores quando utiliza a nossa plataforma de dados de produto.",
"seo.terms.title":"Termos de serviço | Descrybe",
"seo.terms.description":"Termos de utilização da Descrybe: importação de feeds, enriquecimento de catálogo, conteúdo assistido por IA, exportações e sincronização com WooCommerce para o seu negócio.",
"seo.features.title":"Funcionalidades — Feeds, enriquecimento e exportação | Descrybe",
"seo.features.description":"Descubra como a Descrybe importa feeds de fornecedores, mapeia campos para a sua taxonomia, enriquece dados de produto e envia catálogos através de feeds de exportação, WooCommerce ou API.",
"pricing.page.eyebrow":"Preços",
"pricing.page.title":"Planos simples para catálogos em crescimento",
"pricing.page.lead":"Comece grátis com mapeamento de feeds e limpeza básica. Faça upgrade quando precisar de títulos e descrições com IA, mais produtos, feeds de exportação ou sync WooCommerce — de Starter a Enterprise.",
"pricing.page.subscribedBefore":"Já é subscritor? Gerir utilização em",
"legal.privacy.intro.p1":"Na Descrybe (\"nós\", \"nosso\" ou \"nos\"), respeitamos a sua privacidade e comprometemo-nos a proteger as suas informações pessoais. Esta Política de privacidade explica como recolhemos, utilizamos, divulgamos e protegemos as suas informações quando utiliza a plataforma de dados de produto da Descrybe e os serviços relacionados (em conjunto, os \"Serviços\").",
"legal.privacy.intro.p2":"Ao aceder ou utilizar os nossos Serviços, aceita as práticas descritas nesta Política de privacidade. Se não concordar com as políticas e práticas aqui descritas, não utilize os nossos Serviços.",
"legal.privacy.collect.h":"Informações que recolhemos",
"legal.privacy.collect.lead":"Recolhemos vários tipos de informação de e sobre os utilizadores dos nossos Serviços, incluindo:",
"legal.privacy.collect.personal.p":"Quando se regista para obter uma conta, recolhemos informações que poderão ser utilizadas para o identificar, como o seu nome, endereço de correio eletrónico, número de telefone, nome da empresa e informações de faturação. Recolhemos estas informações diretamente junto de si quando as faculta.",
"legal.privacy.collect.userData.h":"Dados de utilizador",
"legal.privacy.collect.userData.p":"Para prestar os nossos Serviços, recolhemos e tratamos dados de produto, feeds de fornecedores, descrições de produto e outro conteúdo que carrega, introduz ou envia de outro modo para a nossa plataforma. Isto pode incluir atributos de produto, estruturas de taxonomia, modelos e outros dados necessários ao funcionamento dos nossos Serviços.",
"legal.privacy.collect.usage.h":"Informações de utilização",
"legal.privacy.collect.usage.p":"Recolhemos automaticamente certas informações sobre o seu dispositivo e sobre a forma como interage com os nossos Serviços, incluindo o endereço IP, o tipo de dispositivo, o tipo de navegador, o sistema operativo, as horas de acesso, as páginas visualizadas, as funcionalidades utilizadas e outra atividade do sistema. Utilizamos estas informações para melhorar os nossos Serviços e a experiência do utilizador.",
"legal.privacy.collect.cookies.h":"Cookies e tecnologias de rastreio",
"legal.privacy.collect.cookies.p":"Utilizamos cookies, web beacons e tecnologias de rastreio semelhantes para recolher informações sobre as suas atividades de navegação no nosso sítio web. Pode controlar os cookies através das definições do seu navegador e de outras ferramentas. No entanto, se bloquear determinados cookies, poderá não conseguir utilizar todas as funcionalidades dos nossos Serviços.",
"legal.privacy.use.h":"Como utilizamos as suas informações",
"legal.privacy.use.lead":"Utilizamos as informações que recolhemos para diversos fins, incluindo:",
"legal.privacy.use.li1":"Prestar, manter e melhorar os nossos Serviços",
"legal.privacy.use.li2":"Processar transações e enviar informações relacionadas, incluindo confirmações, faturas e notificações do serviço",
"legal.privacy.use.li3":"Desenvolver novos produtos, serviços, funcionalidades e características",
"legal.privacy.use.li4":"Personalizar a sua experiência e oferecer conteúdo e funcionalidades relevantes para os seus interesses",
"legal.privacy.use.li5":"Responder aos seus pedidos, comentários e perguntas",
"legal.privacy.use.li6":"Enviar-lhe avisos técnicos, atualizações, alertas de segurança e mensagens de suporte e administração",
"legal.privacy.use.li7":"Monitorizar e analisar tendências, utilização e atividades relacionadas com os nossos Serviços",
"legal.privacy.use.li8":"Detetar, investigar e prevenir transações fraudulentas e outras atividades ilegais",
"legal.privacy.use.li9":"Proteger os nossos direitos, propriedade e segurança, bem como os direitos, a propriedade e a segurança dos nossos utilizadores ou de outras pessoas",
"legal.privacy.use.li10":"Cumprir obrigações legais e fazer cumprir os nossos termos de serviço",
"legal.privacy.ai.h":"IA e aprendizagem automática",
"legal.privacy.ai.p1":"Os nossos Serviços utilizam tecnologias de inteligência artificial e aprendizagem automática para processar dados de produto, gerar conteúdo e oferecer outras funcionalidades automatizadas. Os dados que fornece aos nossos Serviços podem ser utilizados para treinar e melhorar os nossos modelos de IA. No entanto, aplicamos salvaguardas adequadas para proteger os seus dados e manter a sua confidencialidade.",
"legal.privacy.ai.p2":"Não utilizamos informações de identificação pessoal para treinar os nossos modelos gerais de IA sem o seu consentimento explícito. Os dados de produto utilizados para o treino de IA são anonimizados e agregados sempre que possível.",
"legal.privacy.share.h":"Como partilhamos as suas informações",
"legal.privacy.share.lead":"Podemos partilhar as suas informações nas seguintes circunstâncias:",
"legal.privacy.share.providers.h":"Prestadores de serviços",
"legal.privacy.share.providers.p":"Podemos partilhar as suas informações com fornecedores externos, prestadores de serviços, contratantes ou agentes que realizam serviços em nosso nome, como o processamento de pagamentos, a análise de dados, o envio de correio eletrónico, o alojamento, o apoio ao cliente e a assistência de marketing.",
"legal.privacy.share.transfers.p":"Se participarmos numa fusão, aquisição, financiamento, reorganização, insolvência ou venda de ativos da empresa, as suas informações podem ser transferidas como parte dessa operação. Informá-lo-emos de qualquer alteração deste tipo na titularidade ou no controlo das suas informações pessoais.",
"legal.privacy.share.legal.p":"Podemos divulgar as suas informações se a lei o exigir ou em resposta a pedidos válidos de autoridades públicas (p. ex., um tribunal ou um organismo governamental). Também podemos divulgar as suas informações para fazer cumprir os nossos termos de serviço, proteger os nossos direitos, privacidade, segurança ou propriedade, e/ou os das nossas afiliadas, utilizadores ou outras pessoas.",
"legal.privacy.share.consent.h":"Com o seu consentimento",
"legal.privacy.share.consent.p":"Podemos partilhar as suas informações com terceiros quando nos tiver dado o seu consentimento para tal.",
"legal.privacy.security.h":"Segurança dos dados",
"legal.privacy.security.p1":"Implementámos medidas técnicas e organizativas adequadas concebidas para proteger as suas informações pessoais contra a perda acidental e contra o acesso, utilização, alteração e divulgação não autorizados. Toda a informação que nos faculta é armazenada em servidores seguros atrás de firewalls.",
"legal.privacy.security.p2":"A segurança das suas informações também depende de si. Quando lhe tivermos facultado (ou quando tiver escolhido) uma palavra-passe para aceder a determinadas partes dos nossos Serviços, é responsável por manter essa palavra-passe em confidencialidade. Pedimos-lhe que não partilhe a sua palavra-passe com ninguém.",
"legal.privacy.security.p3":"Infelizmente, a transmissão de informações através da Internet não é completamente segura. Embora façamos tudo o que está ao nosso alcance para proteger as suas informações pessoais, não podemos garantir a segurança das informações pessoais transmitidas aos nossos Serviços. Qualquer transmissão de informações pessoais é efetuada por sua conta e risco.",
"legal.privacy.rights.h":"Os seus direitos e opções",
"legal.privacy.rights.lead":"Esforçamo-nos por lhe oferecer opções relativamente às informações pessoais que nos faculta. Consoante a sua localização, pode ter determinados direitos sobre as suas informações pessoais, incluindo:",
"legal.privacy.rights.li1":"Aceder e atualizar as suas informações pessoais",
"legal.privacy.rights.li2":"Solicitar a eliminação das suas informações pessoais",
"legal.privacy.rights.li3":"Opor-se ou restringir o tratamento das suas informações pessoais",
"legal.privacy.rights.li4":"Portabilidade dos dados",
"legal.privacy.rights.li5":"Retirar o consentimento (quando aplicável)",
"legal.privacy.rights.footer":"Para exercer os seus direitos, contacte-nos utilizando as informações de contacto que figuram no final desta Política de privacidade. Tenha em atenção que alguns destes direitos podem estar limitados ou não ser aplicáveis consoante a sua localização e as circunstâncias concretas.",
"legal.privacy.retention.h":"Conservação de dados",
"legal.privacy.retention.p1":"Conservaremos as suas informações pessoais durante o tempo necessário para cumprir os fins descritos nesta Política de privacidade, salvo se a lei exigir ou permitir um prazo de conservação mais longo. Ao determinar durante quanto tempo conservar as suas informações, consideramos a quantidade, a natureza e a sensibilidade das informações, o risco potencial de dano por utilização ou divulgação não autorizadas, os fins do tratamento e os requisitos legais aplicáveis.",
"legal.privacy.retention.p2":"Podemos conservar certas informações após o encerramento da sua conta, entre outros fins para cumprir as nossas obrigações legais, resolver litígios e fazer cumprir os nossos acordos.",
"legal.privacy.intl.h":"Transferências internacionais de dados",
"legal.privacy.intl.p1":"As suas informações pessoais podem ser transferidas e tratadas em países diferentes do país em que reside. Esses países podem ter leis de proteção de dados diferentes das do seu país.",
"legal.privacy.intl.p2":"Se transferirmos as suas informações pessoais para países fora do Espaço Económico Europeu ou de outras regiões com leis abrangentes de proteção de dados, asseguraremos que existem salvaguardas adequadas para proteger as suas informações pessoais e que a transferência cumpre a regulamentação aplicável em matéria de proteção de dados.",
"legal.privacy.children.h":"Privacidade dos menores",
"legal.privacy.children.p":"Os nossos Serviços não se destinam a menores de 16 anos, e não recolhemos conscientemente informações pessoais de menores de 16 anos. Se descobrirmos que recolhemos ou recebemos informações pessoais de um menor de 16 anos sem verificação do consentimento parental, eliminaremos essas informações. Se acredita que poderemos ter informações de ou sobre um menor de 16 anos, contacte-nos.",
"legal.privacy.changes.h":"Alterações à nossa Política de privacidade",
"legal.privacy.changes.p1":"Podemos atualizar a nossa Política de privacidade periodicamente. Se efetuarmos alterações substanciais na forma como tratamos as informações pessoais dos utilizadores, notificá-lo-emos por correio eletrónico para o endereço indicado na sua conta e/ou através de um aviso no nosso sítio web.",
"legal.privacy.changes.p2":"A data da última revisão da Política de privacidade é indicada na parte superior da página. É responsável por assegurar que dispomos de um endereço de correio eletrónico atualizado, ativo e suscetível de entrega, e por visitar periodicamente o nosso sítio web e esta Política de privacidade para verificar se existem alterações.",
"legal.privacy.contact.h":"Contacto",
"legal.privacy.contact.lead":"Se tiver perguntas ou preocupações sobre a nossa Política de privacidade ou as nossas práticas de dados, contacte-nos em:",
"legal.terms.title":"Termos de serviço",
"legal.terms.s1.h":"1. Aceitação dos termos",
"legal.terms.s1.p":"Ao aceder ou utilizar a plataforma de dados de produto da Descrybe e os serviços relacionados (em conjunto, os \"Serviços\"), aceita ficar vinculado a estes Termos de serviço e a todas as leis e regulamentações aplicáveis. Se não concordar com algum destes termos, está proibido de utilizar ou aceder aos Serviços.",
"legal.terms.s2.h":"2. Licença de utilização",
"legal.terms.s2.p1":"Sob reserva do cumprimento destes Termos de serviço, a Descrybe concede-lhe uma licença limitada, não exclusiva, intransmissível e revogável para aceder e utilizar os Serviços para fins empresariais.",
"legal.terms.s2.lead":"Esta licença não inclui:",
"legal.terms.s2.li1":"Modificar ou copiar os Serviços nem qualquer conteúdo dos mesmos",
"legal.terms.s2.li2":"Utilizar os Serviços para qualquer fim comercial distinto da utilização empresarial autorizada",
"legal.terms.s2.li3":"Tentar descompilar ou realizar engenharia inversa de qualquer software contido nos Serviços",
"legal.terms.s2.li4":"Eliminar qualquer aviso de direitos de autor ou de propriedade dos materiais",
"legal.terms.s2.li5":"Transferir os materiais para outra pessoa ou \"espelhar\" os materiais em qualquer outro servidor",
"legal.terms.s2.p2":"Esta licença extinguir-se-á automaticamente se incumprir qualquer uma destas restrições e poderá ser terminada pela Descrybe a qualquer momento.",
"legal.terms.s3.h":"3. Subscrição e pagamento",
"legal.terms.s3.p1":"O acesso aos Serviços pode exigir uma subscrição paga. Os termos de pagamento serão especificados durante o processo de subscrição. Todos os pagamentos são não reembolsáveis salvo se a Descrybe o especificar por escrito.",
"legal.terms.s3.p2":"A Descrybe reserva-se o direito de modificar as tarifas de subscrição com um pré-aviso razoável. A utilização continuada dos Serviços após uma alteração de tarifa constitui a aceitação das novas tarifas.",
"legal.terms.s4.h":"4. Conteúdo do utilizador",
"legal.terms.s4.p1":"Conserva todos os direitos sobre qualquer conteúdo que envie, publique ou apresente em ou através dos Serviços (\"Conteúdo do utilizador\"). Ao fornecer Conteúdo do utilizador à Descrybe, concede à Descrybe uma licença mundial, não exclusiva e isenta de royalties para utilizar, reproduzir, modificar, adaptar, publicar, traduzir e distribuir esse conteúdo em relação à prestação dos Serviços.",
"legal.terms.s4.lead":"Declara e garante que:",
"legal.terms.s4.li1":"Possui ou controla todos os direitos sobre o Conteúdo do utilizador que fornece",
"legal.terms.s4.li2":"O Conteúdo do utilizador não viola estes Termos de serviço",
"legal.terms.s4.li3":"O Conteúdo do utilizador não causará dano a nenhuma pessoa ou entidade",
"legal.terms.s5.h":"5. Inteligência artificial",
"legal.terms.s5.p1":"Os Serviços utilizam tecnologias de inteligência artificial e aprendizagem automática. Reconhece que o conteúdo gerado por IA pode não ser perfeito e aceita rever todo o conteúdo gerado por IA antes de o utilizar nas suas operações empresariais.",
"legal.terms.s5.p2":"A Descrybe pode utilizar Conteúdo do utilizador anonimizado e agregado para treinar e melhorar os nossos modelos de IA, sob reserva da nossa Política de privacidade. Pode optar por não permitir que os seus dados sejam utilizados para o treino de IA contactando-nos.",
"legal.terms.s6.h":"6. Propriedade intelectual",
"legal.terms.s6.p":"Os Serviços e o seu conteúdo, funcionalidades e funcionalidade originais são propriedade da Descrybe e estão protegidos pelas leis internacionais de direitos de autor, marcas, patentes, segredos comerciais e outros direitos de propriedade intelectual ou de propriedade.",
"legal.terms.s7.h":"7. Exclusão de garantias",
"legal.terms.s7.p1":"Os Serviços são fornecidos \"tal como estão\" e \"conforme disponíveis\". A Descrybe não formula garantias, expressas ou implícitas, e renuncia desde já a todas as garantias, incluindo, sem limitação, as garantias implícitas de comercialização, adequação a um fim determinado, não infração ou curso de execução.",
"legal.terms.s7.p2":"A Descrybe não garante que os Serviços funcionem de forma ininterrupta, segura ou disponível num momento ou local concretos, nem que sejam corrigidos erros ou defeitos.",
"legal.terms.s8.h":"8. Limitação de responsabilidade",
"legal.terms.s8.lead":"Em caso algum a Descrybe será responsável por danos indiretos, incidentais, especiais, consequentes ou punitivos, incluindo, sem limitação, a perda de lucros, dados, utilização, fundo de comércio ou outras perdas intangíveis, decorrentes de:",
"legal.terms.s8.li1":"O seu acesso ou utilização, ou a impossibilidade de aceder ou utilizar, os Serviços",
"legal.terms.s8.li2":"Qualquer conduta ou conteúdo de terceiros nos Serviços",
"legal.terms.s8.li3":"Qualquer conteúdo obtido dos Serviços",
"legal.terms.s8.li4":"O acesso, utilização ou alteração não autorizados das suas transmissões ou conteúdo",
"legal.terms.s9.h":"9. Rescisão",
"legal.terms.s9.p1":"A Descrybe pode terminar ou suspender o seu acesso aos Serviços imediatamente, sem prévio aviso nem responsabilidade, por qualquer motivo, incluindo, sem limitação, se incumprir estes Termos de serviço.",
"legal.terms.s9.p2":"Após a rescisão, o seu direito de utilizar os Serviços cessará imediatamente. Se desejar terminar a sua conta, pode simplesmente deixar de utilizar os Serviços ou contactar-nos para solicitar a eliminação da conta.",
"legal.terms.s10.h":"10. Lei aplicável",
"legal.terms.s10.p":"Estes Termos reger-se-ão e serão interpretados de acordo com as leis da Eslovénia, sem ter em conta os seus princípios sobre conflito de leis.",
"legal.terms.s11.h":"11. Alterações aos termos",
"legal.terms.s11.p":"A Descrybe reserva-se o direito de modificar ou substituir estes Termos de serviço a qualquer momento. É da sua responsabilidade rever periodicamente estes Termos para verificar se existem alterações. A utilização continuada dos Serviços após a publicação de qualquer alteração constitui a aceitação dessas alterações.",
"legal.terms.s12.h":"12. Contacto",
"legal.terms.s12.lead":"Se tiver perguntas sobre estes Termos de serviço, contacte-nos em:",
"plans.loadFailed":"Não foi possível carregar os planos",
"plans.loading":"A carregar planos…",
"plans.apiUnavailable":"A API de planos ainda não está disponível neste backend. A mostrar a comparação pública de preços.",
"plans.title":"Escolha o seu plano",
"plans.sub.onPrefix":"Está no",
"plans.sub.enterpriseSuffix":"— produtos e IA ilimitados. Não é necessário um upgrade de autosserviço.",
"plans.sub.paygSuffix":"— pagamento por utilização. Compare os planos públicos abaixo ou fale com as vendas para Enterprise.",
"plans.sub.creditsMid":"com {remaining} créditos de IA restantes.",
"plans.sub.creditsSuffix":"Melhore Starter → Growth → Business com Checkout, ou fale com as vendas para Enterprise.",
"plans.sub.none":"Ainda não há um plano atribuído (por exemplo após uma migração omitida). Escolha um plano abaixo — a capacidade não é Ilimitada até que o Checkout ou um administrador atribua um.",
"plans.stripeHint":"Os upgrades de autosserviço utilizam o Stripe Checkout.",
"plans.planApplied":"Plano {plan} aplicado. Os seus créditos estão prontos.",
"plans.faq.title":"Perguntas frequentes",
"plans.faq.limit.q":"O que acontece se atingir um limite?",
"plans.faq.limit.a":"Primeiro verá avisos suaves. Quando ficar sem créditos de IA ou atingir o limite de SKU, os trabalhos que necessitem dessa capacidade são bloqueados até libertar espaço, aguardar o próximo ciclo ou melhorar o plano.",
"plans.faq.selfServe.q":"Posso melhorar o plano eu próprio?",
"plans.faq.selfServe.a":"Os administradores da empresa podem contratar Starter, Growth e Business por autosserviço através do Checkout no cartão do plano. Os membros devem pedir a um administrador — o Checkout requer o papel de administrador. Enterprise passa sempre pelas vendas. Os administradores da plataforma ainda podem atribuir planos no Billing Admin.",
"plans.faq.enterprise.q":"Enterprise e milhões de SKU",
"plans.faq.enterprise.a":"A capacidade personalizada, a chave de IA própria (BYOK), o SLA e a gestão de conta passam pelas vendas. Reserve tempo no Calendly — Enterprise não é autosserviço à escala de milhões de SKU. A app mostra Ilimitado para capacidade de SKU e IA.",
"plans.faq.pricing.q":"Onde está o preço público?",
"plans.faq.pricing.aBefore":"Consulte a comparação de marketing na",
"plans.faq.pricing.pricingPage":"página de Preços",
"plans.faq.pricing.aMid":"— os CTA são Começar (registo) ou Contactar vendas. Faça a gestão da utilização a qualquer momento em",
"plans.faq.pricing.aAfter":".",
"plans.custom.title":"Precisa de um plano personalizado?",
"plans.custom.body":"A capacidade Enterprise, a chave de IA própria e os SLA são geridos com a nossa equipa.",
"plans.custom.looking":"Procura detalhes dos planos públicos?",
"ai.title":"Integrações de IA",
"ai.description":"Escolha créditos da plataforma ou a sua própria chave e personalize prompts com variáveis.",
"ai.crumb":"Integrações de IA",
"ai.adminOnly":"Apenas administradores da empresa podem alterar as definições de IA. Pode ver a configuração atual.",
"ai.badge.ownKey":"A sua própria chave",
"ai.badge.platform":"Créditos / chave da plataforma",
"ai.badge.active":"Ativo: {label}",
"ai.badge.platformKeyAvailable":"Chave da plataforma disponível",
"ai.badge.lastTest":"Último teste: {status}",
"ai.providerMode.title":"Modo do fornecedor",
"ai.providerMode.desc":"A plataforma usa créditos Descrybe e a nossa chave. Popular ou Personalizado usa a sua chave compatível com OpenAI (a chamada ao fornecedor em si não gasta créditos da plataforma; as regras de créditos das funcionalidades continuam a aplicar-se).",
"email.flash.verifyFailed":"Falha na verificação",
"email.flash.testFailed":"Falha no envio de teste",
"email.flash.blastDryRun":"Verificação de entrega registada em modo dry-run — nenhum email foi enviado.",
"email.flash.blastDone":"Verificação de entrega concluída: {sent} enviados, {failed} falhados.",
"email.flash.blastFailed":"Falha no envio em massa",
"email.blast.subject":"Verificação de entrega de email Descrybe",
"email.blast.body":"Esta é uma verificação de entrega a um único endereço da Descrybe para confirmar que a sua integração de email pode enviar. Destinatário: {recipient}",
"email.action.changeSettings":"alterar as definições do fornecedor de email",
"email.action.verifyDomain":"verificar o domínio de email",
"email.action.sendTest":"enviar email de teste",
"email.action.sendBlasts":"enviar envios em massa de email",
"seo.title":"Recomendações SEO",
"seo.description":"Pontuações de checklist para meta do catálogo, títulos, imagens e palavras-chave. O preenchimento por modelo é gratuito; a reescrita com IA é paga.",
"seo.upgradeTitle":"A reescrita com IA é uma funcionalidade paga",
"seo.upgradeMessage":"Planos Free ainda podem corrigir meta em falta com modelos baseados em regras. Faça upgrade ou adicione créditos para usar reescritas com IA.",
"seo.comparePlans":"Comparar planos",
"seo.openProducts":"Abrir produtos",
"seo.overallScore":"Pontuação SEO global",
"seo.overallScoreHint":"Média dos itens da checklist",
"seo.productsScanned":"Produtos analisados",
"seo.productsScannedHint":"Produtos processados na empresa",
"seo.categoriesScanned":"Categorias analisadas",
"seo.categoriesScannedHint":"Inclui verificações de fórmulas meta",
"seo.aiRewrite":"Reescrita com IA",
"seo.available":"Disponível",
"seo.gated":"Restrito",
"seo.templateFree":"O preenchimento por modelo continua gratuito em todos os planos",
"seo.noFindings":"Sem resultados para este filtro — bom trabalho.",
"seo.col.issue":"Problema",
"seo.col.entity":"Entidade",
"seo.col.severity":"Gravidade",
"seo.col.actions":"Ações",
"seo.filling":"A preencher…",
"seo.templateFill":"Preenchimento por modelo",
"seo.aiTitleAllowed":"Reescrever com IA (usa créditos)",
"seo.aiTitleGated":"Requer plano pago ou créditos",
"seo.rewriting":"A reescrever…",
"seo.aiRewriteBtn":"Reescrita com IA",
"seo.viewProduct":"Ver produto",
"seo.flash.loadFailed":"Falha ao carregar recomendações SEO",
"seo.flash.aiPaid":"A reescrita com IA requer um plano pago ou créditos.",
"seo.flash.applyFailed":"Falha ao aplicar a correção",
"brand.title":"Kit de marca",
"brand.description":"Defina voz, diretrizes e cores para que títulos e descrições de produto se mantenham alinhados com a marca.",
"brand.loading":"A carregar kit de marca…",
"brand.adminOnly":"Apenas administradores da empresa podem editar o kit de marca. Pode ver a voz, as cores e o logótipo atuais.",
"brand.aiApplyFreeAdmin":"Pode editar o seu kit de marca no Free. A aplicação com IA (injetar a voz da marca nos prompts de enhance) desbloqueia a partir do Starter.",
"brand.aiApplyGated":"A aplicação com IA (injetar a voz da marca nos prompts de enhance) desbloqueia a partir do Starter.",
"brand.aiEnhanceUses":"O enhance com IA usará esta voz de marca ao processar produtos.",
"brand.comparePlans":"Comparar planos",
"brand.voice.title":"Voz e diretrizes",
"brand.voice.desc":"Tom, regras do/don’t e redação preferida",
"brand.field.voiceTone":"Voz / tom",
"brand.placeholder.voiceTone":"ex. Confiante, conciso, técnico mas acessível",
"brand.field.dos":"Fazer (um por linha)",
"brand.placeholder.dos":"Comece pelo benefício principal\nMantenha títulos com menos de 80 caracteres",
"brand.field.donts":"Não fazer (um por linha)",
"brand.placeholder.donts":"Sem MAIÚSCULAS\nEvite superlativos sem prova",
"brand.field.preferredTerms":"Termos preferidos (um por linha ou separados por vírgulas)",
"brand.placeholder.preferredTerms":"sem fios, premium, classe energética",
"brand.visual.title":"Identidade visual",
"brand.visual.desc":"Cores e logótipo usados em dicas e campanhas conscientes da marca",
"brand.field.primaryColor":"Cor primária",
"brand.field.secondaryColor":"Cor secundária",
"brand.field.logoImage":"Imagem do logótipo",
"brand.logoHint":"PNG, JPEG ou WebP até 2 MiB. Guardado nos uploads da sua empresa.",
"brand.uploading":"A carregar…",
"brand.uploadLogo":"Carregar logótipo",
"brand.clear":"Limpar",
"brand.field.logoUrl":"URL do logótipo",
"brand.placeholder.logoUrl":"https://… ou carregado /api/brand/logo/files/…",
"brand.logoAlt":"Pré-visualização do logótipo da marca",
"brand.tipsTitle":"Dicas de fórmula / pré-visualização",
"brand.saving":"A guardar…",
"brand.save":"Guardar kit de marca",
"brand.flash.loadFailed":"Falha ao carregar o kit de marca",
"structured.title":"Campos de descrição estruturada",
"structured.loading":"A carregar campos de descrição estruturada…",
"structured.backDashboard":"Voltar ao painel",
"structured.categoryFormulas":"Fórmulas de categoria",
"structured.exportFeeds":"Feeds de exportação",
"structured.intro":"Estes campos são criados automaticamente quando adiciona Export IDs às secções da fórmula de descrição. Podem ser usados nos seus feeds de exportação para incluir partes específicas das descrições de produto.",
"structured.addField":"Adicionar campo",
"structured.openCategories":"Abrir categorias",
"structured.tableCaption":"Estes campos estruturam partes das descrições de produto para exportação.",
"structured.col.fieldKey":"Chave do campo",
"structured.col.type":"Tipo",
"structured.col.created":"Criado",
"structured.col.actions":"Ações",
"structured.dialogTitle":"Adicionar campo de descrição estruturada",
"structured.fieldKeyLabel":"Chave do campo (obrigatória)",
"structured.flash.loadFailed":"Falha ao carregar campos de descrição estruturada",
"assistant.ariaLabel":"Assistente do sistema",
"assistant.title":"Assistente do sistema",
"assistant.subtitle":"Navegue, oriente e execute ações suportadas",
"assistant.resetAria":"Reiniciar conversa",
"assistant.resetTitle":"Reiniciar",
"assistant.closeAria":"Fechar assistente",
"assistant.messageLabel":"Mensagem",
"assistant.placeholder":"ex. adicionar URL de feed, chaves API, atributos, processamento…",
"assistant.sendAria":"Enviar",
"site.bookDemo":"Agendar uma demo",
"site.demoShort":"Demo",
"site.allRightsReserved":"Todos os direitos reservados.",
"site.cookiePolicy":"Política de cookies",
"site.cookieSettings":"Definições de cookies",
"consent.title":"Cookies e análise",
"consent.description":"Usamos cookies necessários para o Descrybe funcionar. Cookies opcionais de análise e marketing ajudam-nos a compreender a utilização e medir campanhas. Pode alterar a escolha a qualquer momento.",
"consent.acceptAll":"Aceitar todos",
"consent.rejectNonEssential":"Rejeitar não essenciais",
"consent.customize":"Personalizar",
"consent.save":"Guardar preferências",
"consent.necessary":"Necessários",
"consent.necessaryDesc":"Obrigatórios para início de sessão, segurança (CSRF), tema, idioma e lembrar esta escolha.",
"consent.alwaysOn":"Sempre ativos",
"consent.analytics":"Análise",
"consent.analyticsDesc":"Ajuda-nos a compreender como o produto é usado (Google Analytics via GTM).",
"consent.marketing":"Marketing",
"consent.marketingDesc":"Para medição publicitária e personalização quando há tags de anúncios no GTM.",
"consent.policyLink":"Ler a Política de cookies",
"seo.cookies.title":"Política de cookies | Descrybe",
"seo.cookies.description":"Como o Descrybe usa cookies necessários, de análise e marketing, incluindo GTM e GA4, e como alterar o consentimento.",
"legal.cookies.title":"Política de cookies",
"legal.cookies.intro.h":"Visão geral",
"legal.cookies.intro.p1":"Esta Política de cookies explica como o Descrybe usa cookies e tecnologias semelhantes no site e na aplicação. Leia em conjunto com a Política de privacidade.",
"legal.cookies.intro.p2":"Quando exigido, pedimos consentimento antes de ativar cookies de análise ou marketing. Cookies necessários prestam o serviço de forma segura e não requerem consentimento.",
"legal.cookies.types.h":"Categorias de cookies",
"legal.cookies.necessary.h":"Necessários",
"legal.cookies.necessary.p":"Mantêm a sessão, protegem formulários com CSRF, guardam tema e idioma e lembram a escolha de cookies. Sem eles o produto não funciona corretamente.",
"legal.cookies.analytics.h":"Análise",
"legal.cookies.analytics.p":"Se permitir análise, carregamos tags GTM que podem definir cookies GA4 para medir páginas e eventos. Os eventos ficam bloqueados até conceder analytics_storage.",
"legal.cookies.marketing.h":"Marketing",
"legal.cookies.marketing.p":"Se permitir marketing, tags publicitárias no GTM podem usar armazenamento de anúncios e sinais relacionados para medição e personalização.",
"legal.cookies.gtm.h":"Google Tag Manager e GA4",
"legal.cookies.gtm.p":"Quando configurado, o Descrybe carrega um contentor GTM. O GA4 é configurado nesse contentor. O Consent Mode v2 nega por predefinição o armazenamento de análise e anúncios até aceitar as categorias.",
"legal.cookies.third.h":"Terceiros",
"legal.cookies.third.p":"A Google (Tag Manager / Analytics) pode processar dados técnicos (URL, dispositivo/browser, nomes de eventos) com consentimento. Não enviamos intencionalmente palavras-passe, chaves API ou contactos em eventos de análise.",
"legal.cookies.manage.h":"Como alterar o consentimento",
"legal.cookies.manage.p":"Use Definições de cookies no rodapé (ou o botão abaixo) para reabrir o banner. Também pode limpar os dados do site no browser.",
"site.privacyPolicy":"Política de privacidade",
"site.termsOfService":"Termos de serviço",
"site.legalNav":"Legal",
"site.footer.aria":"Site",
"site.footer.description":"A Descrybe transforma feeds de fornecedores em catálogos de produto limpos e prontos para canais — mapeie campos, enriqueça atributos e textos, depois exporte ou sincronize com o WooCommerce.",
"home.hero.tagline":"Dados de produto para equipas de ecommerce",
"home.hero.title":"De feeds de fornecedores a páginas de produto",
"home.hero.lead":"Ligue feeds de fornecedores, mapeie-os para as suas categorias, preencha atributos obrigatórios e escreva títulos e descrições segundo as suas regras — depois exporte ou sincronize com a sua loja.",
"home.hero.learnMore":"Saber mais",
"home.hero.apply":"Pedir acesso",
"home.hero.supportedBy":"Com o apoio de",
"home.hero.msAlt":"Microsoft for Startups",
"home.image.previewAlt":"Pré-visualização da plataforma Descrybe: do feed à ficha de produto",
"home.how.title":"Veja como a Descrybe poupa tempo a colocar produtos no mercado",
"home.how.lead":"Importe dados desorganizados de fornecedores uma só vez. A Descrybe ajuda a categorizá-los, preencher atributos, redigir fichas e enviar produtos prontos para os seus canais.",
"home.how.apply":"Pedir acesso",
"home.how.step1.title":"Importe a sua taxonomia",
"home.how.step1.desc":"Configure as categorias e atributos que a sua loja já usa",
"home.how.step1.f1":"Defina atributos obrigatórios por categoria",
"home.how.step1.f2":"Defina fórmulas de título por categoria",
"home.how.step1.f3":"Defina modelos de descrição e snippet de pesquisa",
"home.how.step2.title":"Importe dados de fornecedores",
"home.how.step2.desc":"Ligue um URL de feed ou carregue um ficheiro de produtos",
"home.how.step2.f1":"Importe a partir de fontes CSV, XML ou API",
"home.how.step2.f2":"Agende importações automáticas dos seus fornecedores",
"home.how.step2.f3":"Mapeie campos de origem com uma interface simples de arrastar e largar",
"home.how.step3.title":"Transforme e enriqueça",
"home.how.step3.desc":"Escolha os produtos a processar e deixe a Descrybe:",
"home.how.step3.f1":"Atribuir as categorias certas",
"home.how.step3.f2":"Preencher os atributos de produto obrigatórios",
"home.how.step3.f3":"Criar títulos e descrições claros e adequados à pesquisa",
"home.how.step4.title":"Exporte para canais",
"home.how.step4.desc":"Envie dados de produto prontos para onde vende",
"home.how.step4.f1":"Gere feeds de produto específicos por canal",
"home.how.step4.f2":"Mantenha o controlo total dos campos que exporta",
"home.how.step4.f3":"Mantenha-se atualizado quando os dados do fornecedor mudarem",
"home.benefits.title":"Tudo o que precisa para dados de produto mais limpos",
"home.benefits.lead":"Da importação do feed às fichas prontas para o canal — sem reconstruir cada ficheiro à mão.",
"home.benefits.shield.title":"Detete fichas incompletas a tempo",
"home.benefits.shield.desc":"Verifique os dados face às regras de categoria para corrigir atributos em falta e textos fracos antes de publicar.",
"home.benefits.chart.title":"Fichas mais claras, conversão mais forte",
"home.benefits.chart.desc":"Títulos e descrições que destacam o que importa aos compradores — benefícios, especificações e termos de pesquisa do seu catálogo.",
"home.benefits.database.title":"Uma estrutura de produto coerente",
"home.benefits.database.desc":"Mantenha a mesma árvore de categorias e forma de atributos em exportações e canais para que os clientes encontrem produtos da mesma forma em todo o lado.",
"home.benefits.search.title":"Conteúdo de produto pensado para a pesquisa",
"home.benefits.search.desc":"Escreva títulos, descrições e meta snippets mais fáceis de compreender para compradores e motores de pesquisa.",
"home.benefits.cost.title":"Menos introdução manual de dados",
"home.benefits.cost.desc":"Automatize o mapeamento, o preenchimento de atributos e os textos das fichas para a equipa se focar no merchandising — não em limpar folhas de cálculo.",
"home.benefits.scale.title":"Pronto para cada canal de venda",
"home.benefits.scale.desc":"Adapte feeds de exportação e a sync WooCommerce aos formatos que cada canal espera, sem reconstruir o catálogo à mão.",
"home.cta.titleLead":"Coloque produtos no mercado ",
"home.cta.titleHighlight":"mais depressa",
"home.cta.description":"Deixe de reconstruir dados de produto em cada ficheiro de fornecedor. Mapeie uma vez, enriqueça com as suas regras e publique fichas prontas a vender.",
"home.cta.f1":"Demo personalizada",
"home.cta.f2":"Consulta com especialistas",
"home.cta.f3":"Próximos passos claros",
"home.cta.apply":"Pedir acesso",
"home.cta.imageAlt":"Páginas de produto Descrybe",
"home.product.eyebrow":"O que a Descrybe faz",
"home.product.title":"Feeds de fornecedor à entrada. Fichas prontas à saída — export, WooCommerce ou API.",
"home.product.description":"A Descrybe ajuda equipas de ecommerce a transformar feeds CSV e XML de fornecedores em catálogos limpos. Mapeie campos para as suas categorias, enriqueça atributos e textos e envie dados por feeds de exportação, sync WooCommerce ou a API pública.",
"home.product.pipelineAria":"Pipeline de produto",
"home.product.p1.label":"Feeds de entrada",
"home.product.p1.detail":"CSV / XML a partir de URLs de fornecedor",
"home.product.p2.label":"Mapear",
"home.product.p2.detail":"Associe colunas aos seus campos",
"pricing.section.badge":"Capacidade de SKU + créditos de IA",
"pricing.section.title":"Comece grátis. Escala quando o catálogo crescer.",
"pricing.section.lead":"O Free inclui mapeamento de feeds, limpeza básica de produto e rótulos energéticos da UE (EPREL) até 100 SKUs (sem créditos de IA). Os planos pagos adicionam títulos e descrições com IA, mais capacidade e opções de exportação — Starter, Growth, Business, ou fale com as vendas para Enterprise.",
"pricing.section.billingPeriod":"Período de faturação",
"pricing.section.monthly":"Mensal",
"pricing.section.yearly":"Anual",
"pricing.section.savePercent":"Poupe 20%",
"pricing.section.publicBefore":"Planos públicos: Free, Starter, Growth, Business e Enterprise. Crie uma conta Free e depois faça upgrade em",
"pricing.section.publicOr":"ou",
"pricing.section.publicAfter":"via Stripe Checkout. O Enterprise continua a ser gerido pelas vendas.",
"pricing.section.plansLink":"Planos",
"pricing.section.billingLink":"Faturação",
"pricing.section.capabilitiesTitle":"Para que está pensado cada plano",
"pricing.section.capabilitiesLead":"Importe feeds, enriqueça o catálogo e depois exporte ou sincronize com o WooCommerce",
"pricing.cap.export.f4":"Formatos específicos por canal",
"pricing.cap.export.f5":"Atualizações em massa",
"pricing.cap.limits":"Limites e controlo",
"pricing.cap.limits.f1":"Limites de SKU (produtos)",
"pricing.cap.limits.f2":"Pacotes mensais de créditos de IA",
"pricing.cap.limits.f3":"Funções e convites de equipa",
"pricing.cap.limits.f4":"Opções de SLA Enterprise",
"pricing.faq.credits.q":"O que são créditos de IA?",
"pricing.faq.credits.a":"Os créditos de IA pagam passos como gerar títulos e descrições. O Free inclui 0 créditos de IA — ainda pode mapear feeds e limpar dados. Pacotes mensais pagos: Starter 150, Plus 500, Growth 1.200, Business 4.000, Scale 8.000. O Enterprise inclui um grande pacote gerido (e a sua própria chave). A partir do Growth, pode opcionalmente usar a sua chave em vez dos créditos geridos.",
"pricing.faq.packs.q":"Can I buy extra AI credits?",
"pricing.faq.packs.a":"Yes. One-time packs: Starter $19 / 500 credits, Growth $59 / 2,000, Catalog $199 / 10,000, Scale $599 / 40,000. Buy from Billing after you have a paid plan (or Free with leftover trial credits). Packs do not change your SKU or feed limits.",
"pricing.faq.limits.q":"O que acontece se atingir o limite de produtos ou créditos?",
"pricing.faq.limits.a":"Avisamos quando se aproximar. Quando atingir o teto de produtos ou ficar sem créditos de IA, os trabalhos que precisam dessa capacidade pausam até libertar espaço, esperar o ciclo seguinte ou fazer upgrade.",
"pricing.faq.change.q":"Posso fazer upgrade ou downgrade?",
"pricing.faq.change.a":"Sim. Comece no Free e depois passe para Starter, Plus, Growth, Business ou Scale em Planos ou Faturação (Stripe Checkout). O Enterprise é sempre gerido pelas vendas.",
"pricing.faq.free.q":"O que inclui o Free?",
"pricing.faq.free.a":"Free para sempre: 50 produtos, um feed, limpeza de dados e preenchimento de atributos, rótulos energéticos UE (EPREL — dados públicos, sem créditos), mais uma exportação manual — com 0 créditos de IA. Sem cartão. Faça upgrade quando precisar de títulos e descrições com IA ou de mais capacidade.",
"pricing.faq.why.q":"Porque não pagar por produto como as ferramentas só de conteúdo?",
"pricing.faq.why.a":"A Descrybe cobre o caminho completo do feed de fornecedor ao catálogo até ao WooCommerce ou exportação — não só textos com IA. Paga pela capacidade da plataforma (produtos e feeds); a IA é uma camada de utilização por cima.",
"pricing.faq.annual.q":"Como funciona a faturação anual?",
"pricing.faq.annual.a":"A faturação anual é cerca de 20% menos do que o preço mensal. Comece grátis e escolha anual no Checkout ao fazer upgrade (ou contacte as vendas).",
"pricing.calc.badge":"Plan calculator",
"pricing.calc.title":"Find the right plan",
"pricing.calc.lead":"Enter feeds, catalog size, and how many products you want to enhance with AI (count each language pass).",
"pricing.calc.feeds":"Feed sources",
"pricing.calc.feedsHint":"Supplier / import feeds you need to connect",
"pricing.calc.skus":"Catalog products (SKUs)",
"pricing.calc.skusHint":"Total products you will store and process",
"pricing.calc.aiVolume":"AI process volume",
"pricing.calc.aiHint":"Roughly products × languages you want to enhance per month",
"pricing.calc.recommendedLabel":"Recommended",
"pricing.calc.budgetLabel":"Budget option",
"pricing.calc.coversCredits":"Needs about {count} AI credits / month",
"pricing.calc.aiIncluded":"Included monthly credits cover this AI volume",
"pricing.calc.aiNeedsPacks":"Add {count}× {pack} (~{usd}) for the AI shortfall",
"pricing.calc.orYearly":"or ~{amount}/mo yearly",
"pricing.calc.budgetNote":"Lower list price with yearly discount and/or credit packs when that still fits.",
"pricing.calc.noBudget":"The recommended plan is already the leanest fit for these inputs.",
"pricing.calc.enterpriseTitle":"Sounds like Enterprise",
"pricing.calc.enterpriseBody":"Your feeds or catalog size exceed self-serve caps. Talk to sales for unlimited capacity and a managed AI grant or BYOK.",
"pricing.calc.ctaPlan":"Choose {name}",
"pricing.calc.disclaimer":"Estimates use list prices and ~2 credits per AI product enhance. Checkout prices come from Stripe. A1 and other client deals stay admin-only.",
"plan.upgrade.title":"Esta funcionalidade não está no seu plano",
"plan.upgrade.message":"Faça upgrade para desbloquear esta parte do Descrybe.",
"plan.upgrade.defaultMessage":"O seu plano atual não inclui esta parte do Descrybe. Faça upgrade para a desbloquear, ou peça a um administrador da empresa se não puder alterar a faturação.",
"plan.upgrade.sectionOff.title":"Esta funcionalidade está temporariamente indisponível",
"plan.upgrade.sectionOff.message":"Esta parte do Descrybe está desativada na plataforma neste momento. Não é um problema de upgrade — tente mais tarde ou contacte o suporte.",
"plan.upgrade.sectionOff.cta":"Voltar ao painel",
"plan.upgrade.stores.message":"Os conectores WooCommerce e Shopify precisam de um plano que inclua Lojas. Faça upgrade para ligar essas lojas — ou continue com feeds e a API no plano atual.",
"plan.upgrade.stillWorks.title":"O que ainda funciona no seu plano",
"plan.upgrade.stillWorks.feeds.label":"Feeds de entrada",
"plan.upgrade.stillWorks.feeds.description":"Adicione URLs CSV ou XML e carregamentos de ficheiros para sincronizar catálogos sem conectores de loja.",
"plan.upgrade.stillWorks.export.label":"Feeds de exportação",
"plan.upgrade.stillWorks.export.description":"Gere feeds de saída para canais de compras e parceiros.",
"plan.upgrade.stillWorks.processing.label":"Tarefas em segundo plano",
"plan.upgrade.stillWorks.processing.description":"Monitorize trabalhos de IA e catálogo em Processamento — disponíveis no seu plano mesmo sem conectores de loja.",
"plan.upgrade.stillWorks.api.label":"Chaves API",
"plan.upgrade.stillWorks.api.description":"Crie uma chave em Definições para usar /api/v1 — o segredo só é mostrado uma vez.",
"plan.upgrade.stillWorks.docs.label":"Docs da API",
"plan.upgrade.stillWorks.docs.description":"Leia a visão geral da API e integre sem WooCommerce nem Shopify.",
"plan.upgrade.feature.settings.api_keys":"As chaves API precisam de um plano pago",
"plan.upgrade.feature.catalog.products.process_ai_titles":"Títulos com IA são uma funcionalidade paga",
"plan.upgrade.feature.catalog.products.process_ai_descriptions":"Descrições com IA são uma funcionalidade paga",
"plan.upgrade.feature.marketing.campaigns.generate_ai":"A IA de campanhas precisa de um plano pago",
"plan.upgrade.feature.marketing.campaigns.send":"O envio real de campanhas precisa de um plano pago",
"plan.upgrade.feature.marketing.brand_ai_apply":"A voz da marca na IA precisa de um plano pago",
"plan.upgrade.feature.marketing.seo.ai_rewrite":"A reescrita SEO com IA precisa de um plano pago",
"plan.upgrade.feature.integrations.ai.byok":"Trazer a sua própria chave de IA começa no Growth",
"plan.upgrade.feature.capability.byok":"Trazer a sua própria chave de IA começa no Growth",
"plan.upgrade.feature.marketing.campaigns":"As campanhas não estão no seu plano",
"plan.upgrade.feature.marketing.content_calendar":"O calendário de conteúdos não está no seu plano",
"plan.upgrade.feature.marketing.seo":"As ferramentas SEO não estão no seu plano",
"plan.upgrade.feature.marketing.brand_kit":"O kit de marca não está no seu plano",
"plan.upgrade.feature.marketing.reviews":"As avaliações não estão no seu plano",
"plan.upgrade.feature.integrations.ai":"As integrações de IA não estão no seu plano",
"plan.upgrade.feature.integrations.email":"O envio de email não está no seu plano",
"plan.upgrade.feature.processing.monitor":"O processamento não está no seu plano",
"plan.upgrade.feature.stores.hub":"Os conectores de loja não estão no seu plano",
"plan.upgrade.feature.stores.woocommerce":"O WooCommerce não está no seu plano",
"plan.upgrade.feature.stores.shopify":"O Shopify não está no seu plano",
"plan.upgrade.feature.support.center":"O Centro de suporte não está no seu plano",
"plan.upgrade.feature.support.ticket_create":"Criar tickets de suporte não está no seu plano",
"plan.upgrade.feature.support.ticket_thread":"Os tópicos de tickets de suporte não estão no seu plano",
"plan.upgrade.feature.catalog.structured_descriptions":"As descrições estruturadas não estão no seu plano",
"plan.upgrade.feature.catalog.vector_categories":"As categorias vetoriais não estão no seu plano",
"plan.checkingAccess":"A verificar o acesso ao plano…",
"vector.description":"Pesquise o índice de categorias vetoriais quando o Pinecone estiver configurado. Criar índice e inicializar ainda não estão disponíveis na v2.",
"vector.probing":"A verificar a API de categorias vetoriais…",
"vector.unavailable":"As categorias vetoriais ainda não estão neste backend. Não há nada a executar aqui até /api/vector-categories/* estar ligado.",
"vector.browseCategories":"Explorar categorias",
"vector.initHeading":"Inicializar base de dados vetorial",
"vector.initComingSoon":"Criar índice e Inicializar BD vetorial ainda não estão disponíveis na v2 (em breve). A pesquisa continua a funcionar quando o Pinecone está configurado.",
"vector.createIndex":"Criar índice",
"vector.initDb":"Inicializar BD vetorial",
"vector.searchHeading":"Pesquisar categorias",
"vector.searchPlaceholder":"Introduza a descrição do produto…",
"storeReconnect.titlePlural":"Reconectar lojas após a migração",
"storeReconnect.titleChannel":"Reconectar {channel} após a migração",
"storeReconnect.titleSingular":"Reconectar loja após a migração",
"storeReconnect.messageWithItems":"As credenciais da API da loja não foram transferidas (ou não podem ser usadas) após a migração da plataforma. Isto não é uma sincronização avariada — reconecte cada loja e depois Teste a ligação antes de enfileirar uma sincronização.",
"storeReconnect.messageSingle":"As credenciais da API de {channel} não foram transferidas (ou não podem ser usadas) após a migração da plataforma. Isto não é uma sincronização avariada — cole credenciais novas, Guarde e depois Teste a ligação antes de enfileirar uma sincronização.",
"storeReconnect.channelFallback":"Loja",
"storeReconnect.askAdmin":"Peça a um administrador da empresa para reconectar — só os administradores podem guardar credenciais da loja.",
"admin.storeReconnect.cutoverHint":"Read-only inventory. Merchants reconnect via /stores/wizard or the channel Connection tab — this page does not mutate credentials.",
"admin.storeReconnect.loadFailed":"Could not load store reconnect inventory.",
"admin.storeReconnect.refresh":"Refresh",
"admin.storeReconnect.description":"Companies with a connected store identity but missing or unusable API credentials (cutover credential gaps).",
"storeReconnect.wizardHint":"Prefer a step-by-step flow? Open Guided setup (/stores/wizard), or reconnect the channel below and Test Connection before syncing.",
"storeReconnect.wizardLabel":"Guided setup",
"storeReconnect.reviewsHint":"A importação de avaliações não pode correr até as credenciais serem reconectadas após a migração. No separador Ligação: Guardar, depois Testar ligação.",
"storeReconnect.ordersHint":"A importação de encomendas não pode correr até as credenciais serem reconectadas após a migração. No separador Ligação: Guardar, depois Testar ligação.",
"productSync.outboundBody":"— envia produtos Descrybe processados para a loja (criar ou atualizar produtos remotos correspondentes). Não importa o catálogo da loja para o Descrybe.",
"productSync.firstSync":"Primeira sincronização",
"productSync.firstSyncBody":"— produtos sem correspondência são criados em {channel}. Sincronizações posteriores atualizam produtos já ligados por id ou estratégia de correspondência.",
"productSync.reSync":"Re-sincronizar",
"productSync.reSyncBody":"— produtos remotos correspondentes podem ser sobrescritos com conteúdo Descrybe ({count} ligados até agora).",
"productSync.queued":"Sincronização de produtos em fila",
"productSync.live.queued":"Em fila — à espera do worker",
"productSync.live.running":"Sincronização em curso",
"productSync.live.watching":"A acompanhar o estado… as contagens aparecem quando terminar.",
"productSync.needsReconnect":"A sincronização de produtos não pode correr até as credenciais serem reconectadas após a migração. No separador Ligação: Guardar, depois Testar ligação.",
"productSync.scheduleHelp":"Como os intervalos dos feeds: defina com que frequência o Descrybe envia produtos para a loja, ou pause o agendamento. A fila manual continua a funcionar com pausa. Webhooks da loja não são usados — só polling/fila.",
"productSync.scheduleInterval":"Intervalo de sync (horas)",
"productSync.scheduleIntervalHint":"1–168 horas. O padrão é 6 horas se não estiver definido no servidor.",
"productSync.delivery.title":"Atualizações por polling, não por webhooks da loja",
"productSync.delivery.body":"A Descrybe não recebe webhooks da Shopify ou WooCommerce. Os envios de produtos correm quando os coloca em fila ou no horário automático. Esta página acompanha o progresso ao consultar o estado da ligação — não via eventos push em direto da loja.",
"productSync.delivery.inboundNote":"Encomendas e avaliações também usam pulls em fila (agendados ou manuais), não webhooks em direto.",
"productSync.delivery.hubNote":"Os conectores de loja sincronizam por horário ou quando coloca um job em fila — não via webhooks em direto da loja.",