import type { TranslationKeys } from './en';

const pt: TranslationKeys = {
  // ── Common ──
  'common.rename': 'Renomear',
  'common.duplicate': 'Duplicar',
  'common.delete': 'Excluir',
  'common.cancel': 'Cancelar',
  'common.save': 'Salvar',
  'common.close': 'Fechar',
  'common.connect': 'Conectar',
  'common.disconnect': 'Desconectar',
  'common.yes': 'Sim',
  'common.no': 'Não',
  'common.import': 'Importar',
  'common.export': 'Exportar',
  'common.name': 'Nome',
  'common.untitled': 'Sem título',
  'common.best': 'Melhor',
  'common.selected': '{{count}} selecionado(s)',

  // ── Toolbar ──
  'toolbar.select': 'Selecionar',
  'toolbar.text': 'Texto',
  'toolbar.frame': 'Moldura',
  'toolbar.hand': 'Mão',
  'toolbar.undo': 'Desfazer',
  'toolbar.redo': 'Refazer',
  'toolbar.variables': 'Variáveis',
  'toolbar.uikitBrowser': 'Navegador UIKit',

  // ── Shapes ──
  'shapes.rectangle': 'Retângulo',
  'shapes.ellipse': 'Elipse',
  'shapes.polygon': 'Polígono',
  'shapes.line': 'Linha',
  'shapes.icon': 'Ícone',
  'shapes.importImageSvg': 'Importar imagem ou SVG\u2026',
  'shapes.pen': 'Caneta',
  'shapes.shapeTools': 'Ferramentas de forma',
  'shapes.moreShapeTools': 'Mais ferramentas de forma',

  // ── Top Bar ──
  'topbar.hideLayers': 'Ocultar camadas',
  'topbar.showLayers': 'Mostrar camadas',
  'topbar.new': 'Novo',
  'topbar.open': 'Abrir',
  'topbar.save': 'Salvar',
  'topbar.importFigma': 'Importar Figma',
  'topbar.codePanel': 'Código',
  'topbar.lightMode': 'Modo claro',
  'topbar.darkMode': 'Modo escuro',
  'topbar.fullscreen': 'Tela cheia',
  'topbar.exitFullscreen': 'Sair da tela cheia',
  'topbar.edited': '— Editado',
  'topbar.closeConfirmMessage': 'Deseja salvar as alterações antes de fechar?',
  'topbar.closeConfirmDetail': 'Suas alterações serão perdidas se não forem salvas.',
  'topbar.dontSave': 'Não salvar',
  'topbar.agentsAndMcp': 'Agentes & MCP',
  'topbar.setupAgentsMcp': 'Configurar Agentes & MCP',
  'topbar.connected': 'conectado',
  'topbar.agentStatus': '{{agents}} agente{{agentSuffix}} · {{mcp}} MCP',

  // ── Painel Git ──
  'git.openPanel': 'Abrir painel Git',
  'git.closePanel': 'Fechar painel Git',
  'git.title': 'Git · {{fileName}}',
  'git.titleNoFile': 'Git · (Nenhum arquivo)',
  'git.close': 'Fechar',
  'git.initializing': 'Inicializando repositório…',
  'git.conflict.title': 'Conflito de mesclagem',
  'git.conflict.description':
    'Resolva cada conflito usando os cartões abaixo, depois aplique a mesclagem.',
  'git.conflict.abort': 'Abortar mesclagem',
  'git.conflict.nonOp.title': 'Mesclagem pausada em arquivos não .op',
  'git.conflict.nonOp.description':
    'A mesclagem dos arquivos .op foi concluída, mas outros arquivos do repositório ainda não foram resolvidos. Resolva-os fora do OpenPencil e continue.',
  'git.conflict.nonOp.unresolvedHeading_one': '1 arquivo precisa de atenção',
  'git.conflict.nonOp.unresolvedHeading_other': '{{count}} arquivos precisam de atenção',
  'git.conflict.nonOp.continue': 'Continuar mesclagem',
  'git.conflict.nonOp.abort': 'Cancelar mesclagem',
  // ── Conflito Git — banner (Phase 7b) ──
  'git.conflict.banner.progress': '{{resolved}} / {{total}} resolvidos',
  'git.conflict.banner.apply': 'Aplicar mesclagem',
  'git.conflict.banner.continue': 'Continuar',
  'git.conflict.banner.finalizeError': 'Não foi possível aplicar: {{message}}',
  'git.conflict.banner.pollError': 'Sondagem de status pausada devido a um erro: {{message}}',
  // placeholder — future localization
  'git.conflict.banner.reopenMessage':
    'Painel reaberto durante a mesclagem — por favor, cancele e faça pull novamente.',

  // ── Conflito Git — lista (Phase 7c) ──
  'git.conflict.list.heading': 'Todos os conflitos',
  'git.conflict.list.progress': '{{resolved}} / {{total}} resolvidos',
  'git.conflict.list.allResolved': 'Tudo resolvido',
  'git.conflict.list.allOurs': 'Tudo o meu',
  'git.conflict.list.allTheirs': 'Tudo o deles',

  // ── Conflito Git — item (Phase 7c) ──
  'git.conflict.item.nodeConflict': 'Conflito de nó',
  'git.conflict.item.fieldConflict': 'Conflito de campo',
  'git.conflict.item.resolved': 'Resolvido',

  // ── Conflito Git — cartão (Phase 7c) ──
  'git.conflict.card.ours': 'O meu',
  'git.conflict.card.theirs': 'O deles',
  'git.conflict.card.base': 'Base',
  'git.conflict.card.keepMine': 'Manter o meu',
  'git.conflict.card.keepTheirs': 'Manter o deles',
  'git.conflict.card.oursThumbnailAlt': 'Minha versão',
  'git.conflict.card.theirsThumbnailAlt': 'Versão deles',

  // ── Conflito Git — editor JSON (Phase 7c) ──
  'git.conflict.editor.editManually': 'Editar manualmente',
  'git.conflict.editor.cancel': 'Cancelar',
  'git.conflict.editor.apply': 'Aplicar',
  'git.conflict.editor.invalidJson': 'JSON inválido',
  'git.conflict.editor.textareaLabel': 'Editar valor JSON',

  'git.error.dismiss': 'Descartar',
  'git.error.retry': 'Tentar novamente',
  'git.error.title': 'Algo deu errado',

  // ── Estado vazio do Git ──
  'git.empty.heading': 'Ainda sem histórico de versões',
  'git.empty.optional': 'Git é opcional — pular está OK',
  'git.empty.requireSavedFile': 'Salve o arquivo .op primeiro para habilitar o histórico',
  'git.empty.newCard': 'Novo',
  'git.empty.newCardDescription': 'Criar histórico local',
  'git.empty.openCard': 'Abrir',
  'git.empty.openCardDescription': 'Repositório existente',
  'git.empty.cloneCard': 'Clonar',
  'git.empty.cloneCardDescription': 'De um remoto',

  // ── Formulário de autor do Git ──
  'git.author.heading': 'Autor do commit',
  'git.author.subheading': 'Salvar o primeiro commit requer nome e e-mail',
  'git.author.nameLabel': 'Nome',
  'git.author.namePlaceholder': 'Seu nome',
  'git.author.emailLabel': 'E-mail',
  'git.author.emailPlaceholder': 'voce@exemplo.com',
  'git.author.submit': 'Salvar',
  'git.author.cancel': 'Cancelar',
  'git.author.validationName': 'Nome é obrigatório',
  'git.author.validationEmail': 'Um e-mail válido é necessário',

  // ── Seletor Git (Phase 4b) ──
  'git.picker.heading': '{{count}} arquivos .op neste repositório:',
  'git.picker.milestoneCount': '{{count}} marcos',
  'git.picker.noHistory': 'Sem histórico',
  'git.picker.lastCommit': '{{message}} · {{time}}',
  'git.picker.bindButton': 'Rastrear este arquivo',
  'git.picker.bindAndOpenButton': 'Rastrear e abrir',
  'git.picker.back': 'Voltar',
  'git.picker.backClose': 'Cancelar',
  'git.picker.empty.heading': 'Nenhum arquivo .op neste repositório',
  'git.picker.empty.body': 'O painel Git precisa de pelo menos um arquivo .op para funcionar.',
  'git.picker.empty.close': 'Fechar painel',

  // ── Banner de auto-vinculação (Phase 4b) ──
  'git.autoBind.confirmHeading': '{{fileName}} encontrado — abrir?',
  'git.autoBind.openButton': 'Abrir',
  'git.autoBind.dismissButton': 'Pular',

  // ── Tempo relativo (Phase 4b) ──
  'git.relativeTime.justNow': 'agora',
  'git.relativeTime.minutesAgo': 'há {{count}}m',
  'git.relativeTime.hoursAgo': 'há {{count}}h',
  'git.relativeTime.daysAgo': 'há {{count}}d',

  // ── Git Commit Input (Phase 4c) ──
  'git.commit.placeholder': 'Descreva esta alteração…',
  'git.commit.submitButton': 'Salvar marco',
  'git.commit.saveRequiredTitle': 'Salve o documento primeiro',
  'git.commit.saveRequiredBody':
    'Você tem alterações não salvas. Salve o documento para continuar: {{label}}',
  'git.commit.saveRequiredSave': 'Salvar',
  'git.commit.saveRequiredCancel': 'Cancelar',

  // ── Git Header (Phase 4c → 6c) ──
  'git.header.autosaveError': 'Erro de auto-salvamento',
  'git.header.autosaveErrorTitle': 'Último auto-salvamento falhou',
  'git.header.authorMissingWarning': 'Defina o autor do commit para registrar a atribuição',
  'git.header.overflowSwitchTracked': 'Trocar arquivo rastreado…',
  'git.header.overflowClearAuthor': 'Limpar autor do commit',
  'git.header.overflowCloseRepo': 'Fechar repositório',
  'git.header.overflowRemoteSettings': 'Configurações do remoto…',
  'git.header.overflowSshKeys': 'Chaves SSH…',
  'git.header.overflowMoreActions': 'Mais ações',

  // ── Git History List (Phase 4c) ──
  'git.history.empty': 'Sem histórico',
  'git.history.autosaveGroup_one': '1 auto-salvamento',
  'git.history.autosaveGroup_other': '{{count}} auto-salvamentos',
  'git.history.autosaveLabel': 'auto {{time}}',
  'git.history.milestoneDetailTitle': 'Detalhes do marco',
  'git.history.restoreButton': 'Restaurar',
  'git.history.copyHashButton': 'Copiar hash',
  'git.history.copiedToast': 'Copiado',
  // ── Git Diff de histórico (Phase 7b) ──
  'git.history.diff.loading': 'Carregando diff…',
  'git.history.diff.initialCommit': 'Commit inicial — sem pai para comparar',
  'git.history.diff.noChanges': 'Nenhuma alteração detectada',
  'git.history.diff.error': 'Diff indisponível: {{message}}',
  'git.history.diff.framesChanged_one': '1 quadro alterado',
  'git.history.diff.framesChanged_other': '{{count}} quadros alterados',
  'git.history.diff.nodesAdded_one': '1 nó adicionado',
  'git.history.diff.nodesAdded_other': '{{count}} nós adicionados',
  'git.history.diff.nodesRemoved_one': '1 nó removido',
  'git.history.diff.nodesRemoved_other': '{{count}} nós removidos',
  'git.history.diff.nodesModified_one': '1 nó modificado',
  'git.history.diff.nodesModified_other': '{{count}} nós modificados',
  'git.history.promoteButton': 'Promover a marco',
  'git.history.promoteSuccessToast': 'Promovido a marco',
  'git.history.loadMore': 'Carregar mais',
  'git.autosave.messagePrefix': 'auto',
  'git.autosave.messageDiffSuffix': '',

  // ── Git Seletor de ramos (Phase 5) ──
  'git.branch.listHeading': 'Ramos',
  'git.branch.createAction': 'Novo ramo',
  'git.branch.createPlaceholder': 'feature/login-redesign',
  'git.branch.createSubmit': 'Criar ramo',
  'git.branch.createEmpty': 'Digite um nome de ramo',
  'git.branch.createExists': 'O ramo {{name}} já existe',
  'git.branch.mergeAction': 'Mesclar ramo…',
  'git.branch.mergeHeading': 'Mesclar em {{name}}',
  'git.branch.deletePrompt': 'Excluir o ramo {{name}}?',
  'git.branch.deleteLabel': 'Excluir o ramo {{name}}',
  'git.branch.deleteWarning': 'O ramo {{name}} tem commits não mesclados',
  'git.branch.deleteConfirm': 'Excluir',
  'git.branch.deleteForce': 'Forçar exclusão',
  'git.branch.cancel': 'Cancelar',
  'git.branch.conflictDisabled': 'Conclua a mesclagem antes de trocar de ramo',
  'git.branch.noCommits': 'Ainda sem commits',

  // ── Git Clone Wizard (Phase 6a) ──
  'git.wizard.clone.heading': 'Clonar um repositório remoto',
  'git.wizard.clone.subheading': 'Escolha uma URL remota e uma pasta de destino.',
  'git.wizard.clone.urlLabel': 'URL remota',
  'git.wizard.clone.urlPlaceholder': 'https://github.com/owner/repo.git',
  'git.wizard.clone.destLabel': 'Pasta de destino',
  'git.wizard.clone.destPlaceholder': '/caminho/do/clone',
  'git.wizard.clone.destPickButton': 'Procurar…',
  'git.wizard.clone.usernameLabel': 'Usuário (opcional)',
  'git.wizard.clone.tokenLabel': 'Token de acesso (opcional)',
  'git.wizard.clone.tokenPlaceholder': 'ghp_… deixe em branco para repos públicos',
  'git.wizard.clone.anonymousHint':
    'Deixe em branco para clonar anonimamente (apenas repos públicos).',
  'git.wizard.clone.sshHint': 'Esta URL exige autenticação por chave SSH.',
  'git.wizard.clone.hostDetected': 'Detectado: {{host}} · {{mode}}',
  'git.wizard.clone.authMode.token-or-anon': 'token ou anônimo',
  'git.wizard.clone.authMode.ssh': 'chave SSH',
  'git.wizard.clone.cancel': 'Cancelar',
  'git.wizard.clone.submit': 'Clonar',
  'git.wizard.clone.validationUrl': 'A URL remota é obrigatória',
  'git.wizard.clone.validationDest': 'A pasta de destino é obrigatória',
  'git.wizard.clone.validationTokenUsername': 'O usuário é obrigatório quando um token é fornecido',
  'git.wizard.clone.error.clone-network':
    'Erro de rede ao clonar. Verifique sua conexão e tente novamente.',
  'git.wizard.clone.error.network': 'Erro de rede. Verifique sua conexão e tente novamente.',
  'git.wizard.clone.error.timeout':
    'Tempo limite ao clonar. Tente novamente ou use um repositório menor.',
  'git.wizard.clone.error.auth-required': 'Este repositório exige autenticação.',
  'git.wizard.clone.error.auth-failed': 'Falha na autenticação. Verifique seu usuário e token.',
  'git.wizard.clone.error.auth-token-invalid':
    'O token de acesso foi rejeitado. Gere um novo e tente novamente.',
  'git.wizard.clone.error.clone-failed':
    'Falha ao clonar. Verifique se a URL aponta para um repositório real.',
  'git.wizard.clone.error.clone-target-exists': 'A pasta de destino já existe ou não está vazia.',

  // ── Git Pull / Push (Phase 6b) ──
  'git.pull.label': 'Pull',
  'git.pull.tooltip': 'Pull do origin',
  'git.pull.noRemote': 'Nenhum remoto configurado — adicione um nas configurações do Git',
  'git.pull.retry': 'Tentar pull novamente',
  'git.push.label': 'Push',
  'git.push.tooltip_one': 'Enviar 1 commit para origin',
  'git.push.tooltip_other': 'Enviar {{count}} commits para origin',
  'git.push.noRemote': 'Nenhum remoto configurado — adicione um nas configurações do Git',
  'git.push.upToDate': 'Nada para enviar — você está em dia',
  'git.push.retry': 'Tentar push novamente',
  'git.push.rejectedBody':
    'O remoto tem commits que você ainda não possui. Faça pull primeiro e depois push novamente.',
  'git.push.rejectedDismiss': 'Fechar',
  'git.push.rejectedPull': 'Fazer pull agora',
  'git.remote.dismissError': 'Fechar',

  // ── Git Configurações do remoto (Phase 6c) ──
  'git.remote.settingsLabel': 'Configurações do remoto',
  'git.remote.settingsHeading': 'Remoto',
  'git.remote.back': 'Voltar',
  'git.remote.cancel': 'Cancelar',
  'git.remote.emptyNoOrigin': 'Ainda não há remoto configurado. Adicione um:',
  'git.remote.urlLabel': 'URL do origin',
  'git.remote.urlPlaceholder': 'https://github.com/owner/repo.git',
  'git.remote.saveButton': 'Salvar',
  'git.remote.clearButton': 'Limpar',
  'git.remote.clearConfirmHeading': 'Limpar origin?',
  'git.remote.clearConfirmBody': 'Isso removerá o remoto origin deste repositório.',
  'git.remote.clearConfirmAction': 'Confirmar',
  'git.remote.aheadBehind': '{{ahead}} à frente · {{behind}} atrás',
  'git.remote.fetchButton': 'Buscar',
  'git.remote.sshIsoUnsupported':
    'Transporte SSH não é suportado pelo motor integrado. Instale o git do sistema ou use uma URL remota HTTPS.',
  'git.remote.storedAuthLabel': 'Credenciais salvas',
  'git.remote.storedAuth.token': 'Token',
  'git.remote.storedAuth.ssh': 'Chave SSH',
  'git.remote.storedAuth.none': 'Nenhuma',
  'git.remote.storedAuth.loading': 'Carregando…',
  'git.remote.storedAuth.noHost': 'Nenhum host detectado',
  'git.remote.clearAuthButton': 'Limpar credenciais salvas',

  // ── Git Chaves SSH (Phase 6c) ──
  'git.ssh.label': 'Chaves SSH',
  'git.ssh.heading': 'Chaves SSH',
  'git.ssh.back': 'Voltar',
  'git.ssh.cancel': 'Cancelar',
  'git.ssh.isoUnsupported':
    'O remoto atual usa SSH, mas o motor integrado não pode executar transporte SSH. Instale o git do sistema ou mude a URL remota para HTTPS.',
  'git.ssh.emptyList': 'Ainda não há chaves SSH.',
  'git.ssh.generateAction': 'Gerar nova',
  'git.ssh.importAction': 'Importar existente',
  'git.ssh.copyPublicKey': 'Copiar chave pública',
  'git.ssh.copiedHint': 'Copiada',
  'git.ssh.copyUnsupported': 'Área de transferência indisponível — copie esta chave manualmente.',
  'git.ssh.deleteKey': 'Excluir {{name}}',
  'git.ssh.deletePrompt': 'Excluir a chave SSH {{name}}?',
  'git.ssh.deleteConfirm': 'Excluir',
  'git.ssh.currentHostBadge': 'host atual',
  'git.ssh.hostLabel': 'Host',
  'git.ssh.hostPlaceholder': 'github.com',
  'git.ssh.commentLabel': 'Comentário',
  'git.ssh.commentPlaceholder': 'laptop@home',
  'git.ssh.generateSubmit': 'Gerar',
  'git.ssh.importPathLabel': 'Caminho da chave privada',
  'git.ssh.importPathPlaceholder': '/path/to/id_ed25519',
  'git.ssh.importBrowse': 'Procurar…',
  'git.ssh.importSubmit': 'Importar',
  'git.ssh.validationHost': 'O host é obrigatório',
  'git.ssh.validationComment': 'O comentário é obrigatório',
  'git.ssh.validationImportPath': 'Escolha um arquivo de chave privada para importar',
  'git.ssh.providerLink': 'Abrir configurações de chaves SSH de {{host}}',
  'git.ssh.genericGuidance':
    'Copie a chave pública e adicione-a às configurações de chaves SSH do seu provedor Git.',

  // ── Git Formulário de autenticação (Phase 6b) ──
  'git.auth.formLabel': 'Credenciais do Git',
  'git.auth.heading': 'Autenticar em {{host}}',
  'git.auth.headingUnknown': 'Autenticar neste remoto',
  'git.auth.modeToggleLabel': 'Tipo de credencial',
  'git.auth.modeToken': 'Token',
  'git.auth.modeSsh': 'SSH',
  'git.auth.usernameLabel': 'Usuário (opcional)',
  'git.auth.tokenLabel': 'Token de acesso',
  'git.auth.tokenPlaceholder': 'ghp_… ou PAT',
  'git.auth.sshKeyLabel': 'Chave SSH',
  'git.auth.sshNoKeys':
    'Nenhuma chave SSH disponível. Importe ou gere uma primeiro nas configurações do Git.',
  'git.auth.rememberLabel': 'Lembrar esta credencial para este host',
  'git.auth.rememberHint': 'Lembrar esta credencial para este host',
  'git.auth.cancel': 'Cancelar',
  'git.auth.validationToken': 'O token de acesso é obrigatório',
  'git.auth.validationSshKey': 'Selecione uma chave SSH',
  'git.auth.error.auth-required': 'Este remoto requer autenticação.',
  'git.auth.error.auth-failed':
    'Falha na autenticação. Verifique suas credenciais e tente novamente.',
  'git.auth.error.auth-token-invalid':
    'O token de acesso foi rejeitado. Gere um novo e tente novamente.',
  // ── Right Panel ──
  'rightPanel.design': 'Design',
  'rightPanel.code': 'Código',
  'rightPanel.noSelection': 'Selecione um elemento',

  // ── Pages ──
  'pages.title': 'Páginas',
  'pages.addPage': 'Adicionar página',
  'pages.moveUp': 'Mover para cima',
  'pages.moveDown': 'Mover para baixo',

  // ── Status Bar ──
  'statusbar.zoomOut': 'Diminuir zoom',
  'statusbar.zoomIn': 'Aumentar zoom',
  'statusbar.resetZoom': 'Redefinir zoom',
  'statusbar.focusContent': 'Ajustar todo o conteúdo',
  'statusbar.focusSelection': 'Focar seleção',

  // ── Updater ──
  'updater.softwareUpdate': 'Atualização de Software',
  'updater.dismiss': 'Dispensar',
  'updater.current': 'Atual',
  'updater.latest': 'Mais recente',
  'updater.unknown': 'Desconhecido',
  'updater.checking': 'Verificando...',
  'updater.downloadProgress': 'Progresso do download',
  'updater.checkAgain': 'Verificar novamente',
  'updater.restartInstall': 'Reiniciar e instalar',
  'updater.installing': 'Instalando...',
  'updater.releaseDate': 'Data de lançamento: {{date}}',
  'updater.restartHint':
    'Reinicie para aplicar a atualização. A reinicialização geralmente leva de 10 a 15 segundos.',
  'updater.unknownError': 'Erro desconhecido do atualizador.',
  'updater.title.checking': 'Verificando atualizações',
  'updater.title.available': 'Atualização encontrada',
  'updater.title.downloading': 'Baixando atualização',
  'updater.title.downloaded': 'Pronto para instalar',
  'updater.title.error': 'Atualização falhou',
  'updater.subtitle.checking': 'Procurando a versão mais recente...',
  'updater.subtitle.available': 'A versão {{version}} está disponível.',
  'updater.subtitle.availableGeneric': 'Uma nova versão está disponível.',
  'updater.subtitle.downloading': 'A versão {{version}} está sendo baixada em segundo plano.',
  'updater.subtitle.downloadingGeneric': 'Baixando pacote de atualização em segundo plano.',
  'updater.subtitle.downloaded': 'A versão {{version}} foi baixada.',
  'updater.subtitle.downloadedGeneric': 'A atualização foi baixada.',
  'updater.subtitle.error': 'Não foi possível verificar ou baixar a atualização.',

  // ── Layers ──
  'layers.title': 'Camadas',
  'layers.empty': 'Nenhuma camada ainda. Use a barra de ferramentas para desenhar formas.',

  // ── Layer Context Menu ──
  'layerMenu.groupSelection': 'Agrupar seleção',
  'layerMenu.createComponent': 'Criar componente',
  'layerMenu.detachComponent': 'Desanexar componente',
  'layerMenu.detachInstance': 'Desanexar instância',
  'layerMenu.booleanUnion': 'União',
  'layerMenu.booleanSubtract': 'Subtrair',
  'layerMenu.booleanIntersect': 'Interseção',
  'layerMenu.toggleLock': 'Alternar bloqueio',
  'layerMenu.toggleVisibility': 'Alternar visibilidade',

  // ── Property Panel ──
  'property.createComponent': 'Criar componente',
  'property.detachComponent': 'Desanexar componente',
  'property.goToComponent': 'Ir para componente',
  'property.detachInstance': 'Desanexar instância',

  // ── Fill ──
  'fill.title': 'Preenchimento',
  'fill.solid': 'Sólido',
  'fill.linear': 'Linear',
  'fill.radial': 'Radial',
  'fill.image': 'Imagem',
  'fill.stops': 'Paradas',
  'fill.angle': 'Ângulo',

  // ── Image ──
  'image.title': 'Imagem',
  'image.fit': 'Modo de ajuste',
  'image.fill': 'Preencher',
  'image.fitMode': 'Ajustar',
  'image.crop': 'Recortar',
  'image.tile': 'Ladrilho',
  'image.clickToUpload': 'Clique para enviar',
  'image.changeImage': 'Alterar imagem',
  'image.adjustments': 'Ajustes',
  'image.exposure': 'Exposição',
  'image.contrast': 'Contraste',
  'image.saturation': 'Saturação',
  'image.temperature': 'Temperatura',
  'image.tint': 'Matiz',
  'image.highlights': 'Realces',
  'image.shadows': 'Sombras',
  'image.reset': 'Redefinir',

  // ── Stroke ──
  'stroke.title': 'Contorno',

  // ── Appearance ──
  'appearance.layer': 'Camada',
  'appearance.opacity': 'Opacidade',

  // ── Layout ──
  'layout.flexLayout': 'Layout Flex',
  'layout.freedom': 'Livre (sem layout)',
  'layout.vertical': 'Layout vertical',
  'layout.horizontal': 'Layout horizontal',
  'layout.alignment': 'Alinhamento',
  'layout.gap': 'Espaçamento',
  'layout.spaceBetween': 'Espaço entre',
  'layout.spaceAround': 'Espaço ao redor',
  'layout.dimensions': 'Dimensões',
  'layout.fillWidth': 'Preencher largura',
  'layout.fillHeight': 'Preencher altura',
  'layout.hugWidth': 'Ajustar largura',
  'layout.hugHeight': 'Ajustar altura',
  'layout.clipContent': 'Recortar conteúdo',

  // ── Padding ──
  'padding.title': 'Espaçamento interno',
  'padding.paddingMode': 'Modo de espaçamento',
  'padding.paddingValues': 'Valores de espaçamento',
  'padding.oneValue': 'Um valor para todos os lados',
  'padding.horizontalVertical': 'Horizontal/Vertical',
  'padding.topRightBottomLeft': 'Cima/Direita/Baixo/Esquerda',

  // ── Typography ──
  'text.typography': 'Tipografia',
  'text.lineHeight': 'Altura da linha',
  'text.letterSpacing': 'Espaçamento entre letras',
  'text.horizontal': 'Horizontal',
  'text.vertical': 'Vertical',
  'text.alignLeft': 'Alinhar à esquerda',
  'text.alignCenter': 'Centralizar',
  'text.alignRight': 'Alinhar à direita',
  'text.justify': 'Justificar',
  'text.top': 'Topo',
  'text.middle': 'Meio',
  'text.bottom': 'Base',
  'text.weight.thin': 'Fino',
  'text.weight.light': 'Leve',
  'text.weight.regular': 'Regular',
  'text.weight.medium': 'Médio',
  'text.weight.semibold': 'Seminegrito',
  'text.weight.bold': 'Negrito',
  'text.weight.black': 'Preto',
  'text.font.search': 'Pesquisar fontes\u2026',
  'text.font.bundled': 'Incluídas',
  'text.font.system': 'Sistema',
  'text.font.loading': 'Carregando fontes\u2026',
  'text.font.noResults': 'Nenhuma fonte encontrada',

  // ── Text Layout ──
  'textLayout.title': 'Layout',
  'textLayout.dimensions': 'Dimensões',
  'textLayout.resizing': 'Redimensionamento',
  'textLayout.autoWidth': 'Auto L',
  'textLayout.autoWidthDesc': 'Largura automática — texto expande horizontalmente',
  'textLayout.autoHeight': 'Auto A',
  'textLayout.autoHeightDesc': 'Altura automática — largura fixa, altura se ajusta',
  'textLayout.fixed': 'Fixo',
  'textLayout.fixedDesc': 'Tamanho fixo — largura e altura são fixas',
  'textLayout.fillWidth': 'Preencher largura',
  'textLayout.fillHeight': 'Preencher altura',

  // ── Effects ──
  'effects.title': 'Efeitos',
  'effects.dropShadow': 'Sombra projetada',
  'effects.blur': 'Desfoque',
  'effects.spread': 'Dispersão',
  'effects.color': 'Cor',

  // ── Export ──
  'export.title': 'Exportar',
  'export.format': 'Formato',
  'export.scale': 'Escala',
  'export.selectedOnly': 'Exportar somente selecionados',
  'export.exportFormat': 'Exportar {{format}}',
  'export.exportLayer': 'Exportar camada',
  'export.pdfMultiPage': 'O PDF incluirá todas as {{count}} páginas.',

  // ── Polygon ──
  'polygon.sides': 'Lados',

  // ── Ellipse ──
  'ellipse.start': 'Início',
  'ellipse.sweep': 'Varredura',
  'ellipse.innerRadius': 'Interior',

  // ── Corner Radius ──
  'cornerRadius.title': 'Raio dos cantos',

  // ── Size / Position ──
  'size.position': 'Posição',

  // ── Icon ──
  'icon.title': 'Ícone',
  'icon.searchIcons': 'Buscar ícones...',
  'icon.noIconsFound': 'Nenhum ícone encontrado',
  'icon.typeToSearch': 'Digite para buscar ícones Iconify',
  'icon.iconsCount': '{{count}} ícones',

  // ── Variables Panel ──
  'variables.addTheme': 'Adicionar tema',
  'variables.addVariant': 'Adicionar variante',
  'variables.addVariable': 'Adicionar variável',
  'variables.searchVariables': 'Buscar variáveis...',
  'variables.noMatch': 'Nenhuma variável corresponde à sua busca',
  'variables.noDefined': 'Nenhuma variável definida',
  'variables.closeShortcut': 'Fechar (\u2318\u21e7V)',
  'variables.presets': 'Predefinições',
  'variables.savePreset': 'Salvar atual como predefinição…',
  'variables.loadPreset': 'Carregar predefinição',
  'variables.importPreset': 'Importar de arquivo…',
  'variables.exportPreset': 'Exportar para arquivo…',
  'variables.presetName': 'Nome da predefinição',
  'variables.noPresets': 'Nenhuma predefinição salva',

  // ── Design System (design.md) ──
  'designMd.title': 'Sistema de design',
  'designMd.import': 'Importar design.md',
  'designMd.export': 'Exportar design.md',
  'designMd.autoGenerate': 'Gerar automaticamente a partir do design',
  'designMd.empty': 'Nenhum sistema de design carregado',
  'designMd.importCta': 'Importar design.md',
  'designMd.autoGenerateCta': 'Gerar automaticamente',
  'designMd.visualTheme': 'Tema visual',
  'designMd.colors': 'Cores',
  'designMd.typography': 'Tipografia',
  'designMd.font': 'Fonte',
  'designMd.headings': 'Títulos',
  'designMd.body': 'Corpo',
  'designMd.componentStyles': 'Estilos de componentes',
  'designMd.layoutPrinciples': 'Princípios de layout',
  'designMd.generationNotes': 'Notas de geração',
  'designMd.syncAllToVariables': 'Sincronizar tudo com variáveis',
  'designMd.addAsVariable': '+Var',
  'designMd.copyHex': 'Copiar hex',
  'designMd.remove': 'Remover sistema de design',
  'toolbar.designSystem': 'Sistema de design',

  // ── AI Chat ──
  'ai.newChat': 'Novo chat',
  'ai.collapse': 'Recolher',
  'ai.tryExample': 'Experimente um exemplo para criar...',
  'ai.tipSelectElements':
    'Dica: Selecione elementos no canvas antes de conversar para dar contexto.',
  'ai.generating': 'Gerando...',
  'ai.designWithAgent': 'Criar com Agente...',
  'ai.attachImage': 'Anexar imagem',
  'ai.stopGenerating': 'Parar geração',
  'ai.sendMessage': 'Enviar mensagem',
  'ai.loadingModels': 'Carregando modelos...',
  'ai.noModelsConnected': 'Nenhum modelo conectado',
  'ai.searchModels': 'Pesquisar modelos...',
  'ai.noModelsFound': 'Nenhum modelo encontrado',
  'ai.quickAction.loginScreen': 'Criar uma tela de login mobile',
  'ai.quickAction.loginScreenPrompt':
    'Design a modern mobile login screen with email input, password input, login button, and social login options',
  'ai.quickAction.foodApp': 'Página inicial de app de comida',
  'ai.quickAction.foodAppPrompt': 'Generate a well-designed food mobile app homepage',
  'ai.quickAction.bottomNav': 'Criar uma barra de navegação inferior',
  'ai.quickAction.bottomNavPrompt':
    'Design a mobile app bottom navigation bar with 5 tabs: Home, Search, Add, Messages, Profile',
  'ai.quickAction.colorPalette': 'Sugerir uma paleta de cores para meu app',
  'ai.quickAction.colorPalettePrompt': 'Suggest a modern color palette for a pet care app',
  'ai.startDesigning': 'Start designing with AI',
  'ai.maximize': 'Maximize',
  'ai.restore': 'Restore',
  'ai.quickAction.loginScreenDesc': 'Mobile login with social auth',
  'ai.quickAction.foodAppDesc': 'App homepage design',
  'ai.quickAction.bottomNavDesc': '5-tab navigation bar',
  'ai.quickAction.colorPaletteDesc': 'Color palette recommendation',

  // ── File Menu ──
  'fileMenu.newFile': 'New file',
  'fileMenu.openFile': 'Open file...',
  'fileMenu.save': 'Save',
  'fileMenu.saveAs': 'Save as...',
  'fileMenu.exportImage': 'Exportar imagem...',
  'fileMenu.recentFiles': 'Recent files',
  'fileMenu.clearHistory': 'Clear history',
  'fileMenu.noRecentFiles': 'No recent files',
  'fileMenu.saved': 'Saved',
  'fileMenu.justNow': 'just now',
  'fileMenu.minutesAgo': '{{count}}m ago',
  'fileMenu.hoursAgo': '{{count}}h ago',
  'fileMenu.yesterday': 'yesterday',
  'fileMenu.daysAgo': '{{count}}d ago',

  // ── Unsaved Changes ──
  'unsaved.title': 'Unsaved changes',
  'unsaved.message': 'Save changes to "{{name}}"?',
  'unsaved.dontSave': "Don't Save",

  // ── Code Panel ──
  'code.reactTailwind': 'React + Tailwind',
  'code.htmlCss': 'HTML + CSS',
  'code.cssVariables': 'CSS Variables',
  'code.copyClipboard': 'Copiar para a área de transferência',
  'code.copied': 'Copiado!',
  'code.download': 'Baixar arquivo de código',
  'code.closeCodePanel': 'Fechar painel de código',
  'code.genCssVars': 'Gerando variáveis CSS para o documento inteiro',
  'code.genSelected': 'Gerando código para {{count}} elemento(s) selecionado(s)',
  'code.genDocument': 'Gerando código para o documento inteiro',
  'code.aiEnhance': 'Melhorar com IA',
  'code.cancelEnhance': 'Cancelar melhoria',
  'code.resetEnhance': 'Restaurar original',
  'code.enhancing': 'A IA está melhorando o código...',
  'code.enhanced': 'Melhorado por IA',

  // ── Save Dialog ──
  'save.saveAs': 'Salvar como',
  'save.fileName': 'Nome do arquivo',

  // ── Agent Settings ──
  'agents.title': 'Configurar Agentes & MCP',
  'agents.agentsOnCanvas': 'Agentes no Canvas',
  'agents.mcpIntegrations': 'Integrações MCP no Terminal',
  'agents.transport': 'Transporte',
  'agents.port': 'Porta',
  'agents.mcpRestart': 'As integrações MCP entrarão em vigor após reiniciar o terminal.',
  'agents.mcpReinstallHint':
    'Após atualizar o OpenPencil, reinstale as integrações MCP para garantir a compatibilidade.',
  'agents.modelCount': '{{count}} modelo(s)',
  'agents.connectionFailed': 'Falha na conexão',
  'agents.serverError': 'Erro do servidor {{status}}',
  'agents.failedTo': 'Falha ao {{action}}',
  'agents.failedToMcp': 'Falha ao {{action}} servidor MCP',
  'agents.failedTransport': 'Falha ao atualizar transporte',
  'agents.failedMcpTransport': 'Falha ao atualizar transporte MCP',
  'agents.claudeCode': 'Claude Code',
  'agents.claudeModels': 'Modelos Claude',
  'agents.codexCli': 'Codex CLI',
  'agents.openaiModels': 'Modelos OpenAI',
  'agents.opencode': 'OpenCode',
  'agents.opencodeDesc': '75+ provedores de LLM',
  'agents.copilot': 'GitHub Copilot',
  'agents.copilotDesc': 'Modelos GitHub Copilot',
  'agents.geminiCli': 'Gemini CLI',
  'agents.geminiDesc': 'Modelos Google Gemini',
  'agents.mcpServer': 'Servidor MCP',
  'agents.mcpServerStart': 'Iniciar',
  'agents.mcpServerStop': 'Parar',
  'agents.mcpServerRunning': 'Em execução',
  'agents.mcpServerStopped': 'Parado',
  'agents.mcpLanAccess': 'Acesso LAN',
  'agents.mcpClientConfig': 'Config. do cliente',
  'agents.stdio': 'stdio',
  'agents.http': 'http',
  'agents.stdioHttp': 'stdio + http',
  'agents.autoUpdate': 'Verificar atualizações automaticamente',
  'agents.notInstalled': 'Não instalado',
  'agents.install': 'Instalar',
  'agents.installing': 'Instalando...',
  'agents.installFailed': 'Falha na instalação',
  'agents.viewDocs': 'Docs',
  'settings.title': 'Configurações',
  'settings.agents': 'Agents',
  'settings.mcp': 'MCP',
  'settings.images': 'Images',
  'settings.system': 'Sistema',
  'settings.autoUpdateDesc': 'Verificar automaticamente novas versões ao iniciar',
  'settings.systemDesktopOnly':
    'As configurações do sistema estão disponíveis no aplicativo de desktop.',
  'settings.envHint': 'Você pode definir variáveis de ambiente adicionais em {{path}}.',

  // ── Builtin Providers ──
  'builtin.title': 'Provedores integrados',
  'builtin.description':
    'Configure as chaves de API diretamente — sem ferramentas CLI necessárias.',
  'builtin.addProvider': 'Adicionar provedor',
  'builtin.empty': 'Nenhum provedor integrado configurado ainda.',
  'builtin.displayName': 'Nome de exibição',
  'builtin.displayNamePlaceholder': 'ex. Minha chave Anthropic',
  'builtin.provider': 'Provedor',
  'builtin.region': 'Região',
  'builtin.regionChina': 'China',
  'builtin.regionGlobal': 'Global',
  'builtin.apiKey': 'API Key',
  'builtin.model': 'Modelo',
  'builtin.searchModels': 'Pesquisar modelos disponíveis',
  'builtin.filterModels': 'Filtrar modelos...',
  'builtin.noModels': 'Nenhum modelo encontrado',
  'builtin.baseUrl': 'Base URL',
  'builtin.baseUrlRequired': 'Base URL (obrigatório)',
  'builtin.apiFormat': 'Formato de API',
  'builtin.openaiCompat': 'OpenAI Compatible',
  'builtin.ready': 'Pronto',
  'builtin.add': 'Adicionar',
  'builtin.searchError': 'Base URL é necessária para pesquisar modelos',
  'builtin.custom': 'Personalizado',
  'builtin.apiKeyBadge': 'API Key',
  'builtin.viaApiKey': 'via API Key de {{name}}',
  'builtin.errorProviderNotFound':
    'Provedor integrado não encontrado. Por favor, verifique suas configurações.',
  'builtin.errorApiKeyEmpty':
    'A API key está vazia. Por favor, adicione sua API key nas configurações.',
  'builtin.parallelAgents': 'Sub-agentes paralelos: {{count}}x (clique para alternar)',
  'builtin.baseUrlPlaceholder': 'https://api.example.com/v1',
  'builtin.teamDescription':
    'Selecione um modelo para geração de design. Quando definido, tarefas de design são automaticamente delegadas a um agente especializado usando este modelo.',
  'builtin.teamDesignModel': 'Modelo de design',
  'builtin.teamSelectModel': 'Nenhum (agente único)',

  // ── ACP Agents ──
  'acp.title': 'ACP Agent',
  'acp.description': 'Conectar Agent compatíveis com ACP.',
  'acp.addAgent': 'Adicionar Agent',
  'acp.empty': 'Nenhum ACP Agent configurado.',
  'acp.displayName': 'Nome de exibição',
  'acp.displayNamePlaceholder': 'ex. Meu Agent de design',
  'acp.connectionType': 'Tipo de conexão',
  'acp.local': 'Local',
  'acp.remote': 'Remoto',
  'acp.command': 'Comando',
  'acp.commandPlaceholder': '/usr/bin/myagent',
  'acp.args': 'Argumentos',
  'acp.argsPlaceholder': '--stdio',
  'acp.env': 'Variáveis de ambiente',
  'acp.envPlaceholder': 'KEY=VALUE (uma por linha)',
  'acp.url': 'URL',
  'acp.urlPlaceholder': 'ws://localhost:8100',
  'acp.connected': 'Conectado',
  'acp.notConnected': 'Não conectado',
  'acp.connect': 'Conectar',
  'acp.disconnect': 'Desconectar',
  'acp.localDesktopOnly': 'Agent locais estão disponíveis apenas no aplicativo desktop.',

  // ── Figma Import ──
  'figma.title': 'Importar do Figma',
  'figma.dropFile': 'Solte um arquivo .fig aqui',
  'figma.orBrowse': 'ou clique para procurar',
  'figma.exportTip': 'Exportar do Figma: Arquivo \u2192 Salvar cópia local (.fig)',
  'figma.selectFigFile': 'Por favor, selecione um arquivo .fig',
  'figma.noPages': 'Nenhuma página encontrada no arquivo .fig',
  'figma.parseFailed': 'Falha ao analisar o arquivo .fig',
  'figma.convertFailed': 'Falha ao converter o arquivo Figma',
  'figma.parsing': 'Analisando arquivo .fig...',
  'figma.converting': 'Convertendo nós...',
  'figma.selectPage': 'Este arquivo tem {{count}} páginas. Selecione quais importar:',
  'figma.layers': '{{count}} camadas',
  'figma.importAll': 'Importar todas as páginas',
  'figma.importComplete': 'Importação concluída!',
  'figma.moreWarnings': '...e mais {{count}} avisos',
  'figma.tryAgain': 'Tentar novamente',
  'figma.layoutMode': 'Modo de layout:',
  'figma.preserveLayout': 'Preservar layout do Figma',
  'figma.autoLayout': 'Auto layout do OpenPencil',
  'figma.comingSoon': 'Em breve',

  // ── Landing Page ──
  'landing.open': 'Open',
  'landing.pencil': 'Pencil',
  'landing.tagline': 'Ferramenta de design vetorial de código aberto. Design as Code.',
  'landing.newDesign': 'Novo Design',
  'landing.shortcutHint': 'Pressione {{key1}} + {{key2}} para criar um novo design',

  // ── 404 ──
  'notFound.message': 'Página não encontrada',

  // ── Component Browser ──
  'componentBrowser.title': 'Navegador UIKit',
  'componentBrowser.exportKit': 'Exportar kit',
  'componentBrowser.importKit': 'Importar kit',
  'componentBrowser.kit': 'Kit:',
  'componentBrowser.all': 'Todos',
  'componentBrowser.imported': '(importado)',
  'componentBrowser.components': 'componentes',
  'componentBrowser.searchComponents': 'Buscar componentes...',
  'componentBrowser.deleteKit': 'Excluir {{name}}',
  'componentBrowser.category.all': 'Todos',
  'componentBrowser.category.buttons': 'Botões',
  'componentBrowser.category.inputs': 'Campos',
  'componentBrowser.category.cards': 'Cards',
  'componentBrowser.category.nav': 'Navegação',
  'componentBrowser.category.layout': 'Layout',
  'componentBrowser.category.feedback': 'Feedback',
  'componentBrowser.category.data': 'Dados',
  'componentBrowser.category.other': 'Outros',

  // ── Variable Picker ──
  'variablePicker.boundTo': 'Vinculado a --{{name}}',
  'variablePicker.bindToVariable': 'Vincular a variável',
  'variablePicker.unbind': 'Desvincular variável',
  'variablePicker.noVariables': 'Nenhuma variável de {{type}} definida',
} as const;

export default pt;
