{
  "navigation": {
    "chat": "Chat",
    "model_group": "Modelos",
    "models": "Modelos",
    "credentials": "Credenciais",
    "agent_group": "Agente",
    "hub": "Hub",
    "skills": "Skills",
    "tools": "Ferramentas",
    "services": "Serviços",
    "channels_group": "Canais",
    "show_more_channels": "Mais",
    "show_less_channels": "Menos",
    "config": "Configuração",
    "logs": "Logs"
  },
  "launcherLogin": {
    "title": "Entrar",
    "description": "Digite a senha do dashboard para continuar.",
    "passwordLabel": "Senha",
    "passwordPlaceholder": "Digite a senha",
    "submit": "Entrar",
    "errorInvalid": "Senha incorreta. Tente novamente.",
    "errorNetwork": "Erro de rede. Tente novamente."
  },
  "launcherSetup": {
    "title": "Definir senha do dashboard",
    "description": "Escolha uma senha para proteger o acesso a este dashboard. Você a usará toda vez que entrar.",
    "passwordLabel": "Senha",
    "passwordPlaceholder": "Pelo menos 8 caracteres",
    "confirmLabel": "Confirmar senha",
    "confirmPlaceholder": "Repita a senha",
    "submit": "Definir senha",
    "errorMismatch": "As senhas não coincidem.",
    "errorNetwork": "Erro de rede. Tente novamente."
  },
  "chat": {
    "welcome": "Como posso te ajudar hoje?",
    "welcomeDesc": "Pergunte sobre clima, configurações ou qualquer outra tarefa. Estou aqui para ajudar.",
    "placeholder": "Inicie uma nova mensagem...",
    "disabledPlaceholder": {
      "gatewayUnknown": "Não é possível conversar: o status do Gateway ainda está sendo verificado. Aguarde e atualize a página ou reinicie o Launcher se necessário.",
      "gatewayStarting": "Não é possível conversar: o Gateway está iniciando. Aguarde a inicialização concluir e tente novamente.",
      "gatewayRestarting": "Não é possível conversar: o Gateway está reiniciando. Aguarde o reinício terminar.",
      "gatewayStopping": "Não é possível conversar: o Gateway está parando. Aguarde até que pare e inicie o Gateway novamente.",
      "gatewayStopped": "Não é possível conversar: o Gateway não está iniciado. Clique em Iniciar Gateway na barra superior e tente novamente.",
      "gatewayError": "Não é possível conversar: o Gateway está em estado de erro. Verifique os logs e reinicie o Gateway ou o Launcher.",
      "websocketConnecting": "Conectando ao serviço de chat... Aguarde.",
      "websocketDisconnected": "Não é possível conversar: a conexão WebSocket está desconectada. Verifique a rede e o status do gateway, atualize a página ou reinicie o Launcher.",
      "websocketError": "Não é possível conversar: a conexão WebSocket falhou. Verifique a rede e o status do gateway e tente novamente.",
      "noDefaultModel": "Não é possível conversar: nenhum modelo padrão está selecionado. Defina um modelo padrão na página de Modelos."
    },
    "newChat": "Novo Chat",
    "notConnected": "O Gateway não está rodando. Inicie-o para conversar.",
    "thinking": {
      "step1": "Pensando...",
      "step2": "Analisando sua solicitação...",
      "step3": "Preparando resposta...",
      "step4": "Quase lá..."
    },
    "reasoningLabel": "Raciocínio",
    "toolCallsLabel": "Chamadas de ferramentas",
    "toolCallExplanationLabel": "Nota da chamada",
    "toolCallFunctionLabel": "Resumo da chamada",
    "showAssistantDetails": "Mostrar raciocínio e chamadas de ferramentas",
    "toolLabel": "Ferramenta",
    "history": "Histórico",
    "noHistory": "Nenhum histórico de chat ainda",
    "historyLoadFailed": "Falha ao carregar histórico de chat",
    "historyOpenFailed": "Falha ao abrir este histórico de chat",
    "loadingMore": "Carregando mais...",
    "deleteSession": "Excluir sessão",
    "messagesCount": "{{count}} mensagens",
    "noModel": "Selecionar modelo",
    "inputDisabled": {
      "notConnected": "O Gateway não está rodando. Inicie-o para conversar.",
      "noModel": "Nenhum modelo padrão configurado. Vá para a página de Modelos para definir um."
    },
    "sendMessage": "Enviar mensagem",
    "sendHint": "Pressione Enter para enviar\nShift + Enter para nova linha",
    "contextTitle": "Contexto",
    "contextDetail": "Ver Detalhes",
    "attachImage": "Adicionar imagens",
    "removeImage": "Remover imagem",
    "uploadedImage": "Imagem enviada",
    "invalidImage": "\"{{name}}\" não é um arquivo de imagem suportado.",
    "imageTooLarge": "\"{{name}}\" excede o limite de {{size}}.",
    "imageReadFailed": "Falha ao ler \"{{name}}\".",
    "empty": {
      "noConfiguredModel": "Nenhum Modelo Configurado",
      "noConfiguredModelDescription": "Você precisa configurar pelo menos um modelo de IA com uma API Key antes de iniciar o chat.",
      "goToModels": "Ir para Modelos",
      "noSelectedModel": "Nenhum Modelo Selecionado",
      "noSelectedModelDescription": "Você tem modelos configurados, mas nenhum está definido como padrão. Selecione um modelo antes de iniciar o chat.",
      "notRunning": "Gateway Não Está Rodando",
      "notRunningDescription": "Inicie o serviço de gateway para começar a conversar. Use o botão Iniciar Gateway na barra superior."
    },
    "modelGroup": {
      "apikey": "API Key",
      "oauth": "OAuth",
      "local": "Local"
    }
  },
  "header": {
    "logout": {
      "tooltip": "Sair",
      "confirm": "Sair",
      "description": "Tem certeza de que deseja sair do dashboard?"
    },
    "gateway": {
      "stopDialog": {
        "title": "Parar o Serviço de Gateway?",
        "description": "Tem certeza de que deseja parar o gateway? Isso desconectará suas sessões de chat ativas e interromperá a inferência.",
        "confirm": "Parar Gateway"
      },
      "action": {
        "start": "Iniciar Gateway",
        "stop": "Parar Gateway",
        "restart": "Reiniciar Gateway"
      },
      "status": {
        "starting": "Iniciando Gateway...",
        "restarting": "Reiniciando Gateway...",
        "stopping": "Parando Gateway..."
      },
      "restartRequired": "Alterações de configuração requerem reiniciar o gateway para ter efeito."
    }
  },
  "common": {
    "cancel": "Cancelar",
    "save": "Salvar",
    "saving": "Salvando...",
    "reset": "Redefinir",
    "confirm": "Confirmar",
    "saveChangesTitle": "Você tem alterações de configuração não salvas",
    "restartRequiredTitle": "Reinício do gateway necessário",
    "restartRequiredDesc": "A configuração mais recente de {{name}} foi salva. Reinicie o gateway para que tenha efeito."
  },
  "labels": {
    "loading": "Carregando..."
  },
  "footer": {
    "version": "Versão",
    "commit": "Commit",
    "build": "Build",
    "version_unknown": "Desconhecido"
  },
  "credentials": {
    "description": "Gerencie credenciais OAuth e baseadas em token para os provedores suportados.",
    "loading": "Carregando credenciais...",
    "providers": {
      "openai": {
        "description": "Suporta OAuth via navegador, device code e login por token."
      },
      "anthropic": {
        "description": "Usa login por token para acesso ao Claude."
      },
      "antigravity": {
        "description": "Usa OAuth via navegador para o Google Cloud Code Assist."
      }
    },
    "status": {
      "connected": "Conectado",
      "needsRefresh": "Precisa atualizar",
      "expired": "Expirado",
      "notLoggedIn": "Não autenticado"
    },
    "actions": {
      "browser": "OAuth via Navegador",
      "deviceCode": "Device Code",
      "stopLoading": "Parar Carregamento",
      "saveToken": "Salvar",
      "logout": "Sair"
    },
    "logoutDialog": {
      "title": "Sair do provedor?",
      "description": "Isso removerá sua credencial salva para {{provider}}."
    },
    "fields": {
      "openaiToken": "Token OpenAI",
      "anthropicToken": "Token Anthropic"
    },
    "labels": {
      "account": "Conta",
      "email": "Email",
      "project": "Projeto"
    },
    "errors": {
      "loadFailed": "Falha ao carregar credenciais",
      "flowFailed": "Falha ao verificar fluxo de autenticação",
      "loginFailed": "Falha no login",
      "logoutFailed": "Falha ao sair",
      "invalidBrowserResponse": "Resposta de login do navegador inválida",
      "invalidDeviceResponse": "Resposta de device code inválida",
      "popupBlocked": "Não foi possível abrir uma nova aba. Permita popups e tente novamente."
    },
    "flow": {
      "current": "Status atual de autenticação",
      "pending": "Aguardando autorização...",
      "success": "Autenticação bem-sucedida",
      "error": "Falha na autenticação",
      "expired": "Sessão de autenticação expirada"
    },
    "device": {
      "title": "Login por Device do OpenAI",
      "description": "Abra a página de verificação e digite o código abaixo. Esta página será atualizada automaticamente.",
      "code": "Código do Usuário",
      "url": "URL de Verificação",
      "polling": "Verificando status do login...",
      "open": "Abrir Página de Verificação"
    }
  },
  "models": {
    "description": "Configure API Keys para provedores de IA. Apenas modelos configurados ficam disponíveis para o chat.",
    "defaultChangeSuccess": "Modelo padrão atualizado.",
    "unsavedPrompt": "Esta alteração ainda não foi salva. Salve para gravá-la na configuração do modelo.",
    "restartHint": "Alterações na configuração de modelos só têm efeito após o gateway reiniciar.",
    "loadError": "Falha ao carregar modelos",
    "noDefaultHintPrefix": "Nenhum modelo padrão definido ainda. Clique em",
    "noDefaultHintSuffix": "para definir um.",
    "status": {
      "available": "Disponível",
      "unconfigured": "Não configurado",
      "unreachable": "Serviço inacessível"
    },
    "badge": {
      "default": "Padrão",
      "virtual": "Virtual"
    },
    "action": {
      "edit": "Editar API Key",
      "setDefault": "Definir como padrão",
      "delete": "Excluir modelo",
      "setDefaultDisabled": {
        "setting": "Definindo como padrão...",
        "unavailable": "Não é possível definir um modelo indisponível como padrão",
        "isDefault": "Já é o modelo padrão",
        "isVirtual": "Não é possível definir um modelo virtual como padrão"
      },
      "deleteDisabled": {
        "isDefault": "Não é possível excluir o modelo padrão"
      }
    },
    "defaultOnSave": {
      "label": "Modelo Padrão",
      "description": "Definir automaticamente este modelo como padrão após salvar."
    },
    "add": {
      "button": "Adicionar Modelo",
      "title": "Adicionar Modelo Customizado",
      "description": "Adicione um endpoint de modelo nativo ou compatível com OpenAI.",
      "modelName": "Apelido do Modelo",
      "modelNamePlaceholder": "ex: meu-gpt4",
      "modelNameHint": "Um nome curto usado para identificar este modelo nas conversas.",
      "modelId": "Identificador do Modelo",
      "modelIdPlaceholder": "ex: gpt-4o ou openai/gpt-4o",
      "modelIdHint": "Se Provider não estiver especificado, valores como openai/gpt-4o são interpretados no formato provider/modelo. Se Provider estiver especificado, este campo é tratado como o ID canônico do modelo e não é parseado em busca de prefixo de provider.",
      "errorRequired": "Este campo é obrigatório.",
      "errorDuplicateModelName": "Apelido de modelo já existe. Use um nome diferente.",
      "saveError": "Falha ao adicionar modelo",
      "saveSuccess": "Modelo adicionado.",
      "confirm": "Adicionar Modelo"
    },
    "delete": {
      "title": "Excluir Modelo?",
      "description": "\"{{name}}\" será removido permanentemente da sua lista de modelos. Esta ação não pode ser desfeita.",
      "confirm": "Excluir"
    },
    "advanced": {
      "toggle": "Opções avançadas"
    },
    "field": {
      "provider": "Provider",
      "providerPlaceholder": "ex: openai",
      "providerHint": "Opcional. Se especificado, este valor é usado como o provider efetivo, e Identificador do Modelo é interpretado como o ID canônico do modelo.",
      "apiBase": "URL Base da API",
      "apiKey": "API Key",
      "apiKeyPlaceholder": "Digite sua API Key",
      "apiKeyPlaceholderSet": "Deixe em branco para manter a chave existente",
      "proxy": "Proxy HTTP",
      "proxyHint": "Opcional. ex: http://127.0.0.1:7890",
      "authMethod": "Método de Autenticação",
      "authMethodHint": "Método de autenticação: oauth, token. Deixe em branco para autenticação por API Key.",
      "connectMode": "Modo de Conexão",
      "connectModeHint": "Modo de conexão para providers baseados em CLI: stdio ou grpc.",
      "workspace": "Caminho do Workspace",
      "workspaceHint": "Diretório de trabalho para providers baseados em CLI (ex: GitHub Copilot).",
      "requestTimeout": "Timeout da Requisição (s)",
      "requestTimeoutHint": "Tempo máximo em segundos para aguardar uma resposta. 0 = usar padrão.",
      "rpm": "Limite de Taxa (RPM)",
      "rpmHint": "Máximo de requisições por minuto. 0 = sem limite.",
      "thinkingLevel": "Nível de Pensamento",
      "thinkingLevelHint": "Orçamento de pensamento estendido: off, low, medium, high, xhigh, adaptive.",
      "maxTokensField": "Campo de Max Tokens",
      "maxTokensFieldHint": "Sobrescreve o nome do campo de max tokens na requisição, ex: max_completion_tokens.",
      "extraBody": "Body Extra",
      "extraBodyHint": "Campos JSON adicionais para injetar no body da requisição, ex: {\"reasoning_split\": true}.",
      "customHeaders": "Headers Customizados",
      "customHeadersHint": "Headers HTTP adicionais para injetar em cada requisição, ex: {\"X-Source\": \"coding-plan\"}."
    },
    "edit": {
      "title": "Configurar {{name}}",
      "apiKeyHint": "Já existe uma chave definida. Deixe em branco para mantê-la inalterada.",
      "oauthNote": "Este provider usa OAuth — não é necessária API Key.",
      "saveError": "Falha ao salvar",
      "saveSuccess": "Configuração do modelo salva."
    }
  },
  "channels": {
    "loadError": "Falha ao carregar canais",
    "name": {
      "telegram": "Telegram",
      "discord": "Discord",
      "slack": "Slack",
      "feishu": "Feishu",
      "dingtalk": "DingTalk",
      "line": "LINE",
      "qq": "QQ",
      "onebot": "OneBot",
      "wecom": "WeCom",
      "whatsapp": "WhatsApp",
      "whatsapp_native": "WhatsApp Nativo",
      "pico": "Web",
      "maixcam": "MaixCam",
      "matrix": "Matrix",
      "irc": "IRC",
      "weixin": "WeChat"
    },
    "weixin": {
      "bindTitle": "Vincular Conta do WeChat",
      "bindDesc": "Escaneie o QR code com o WeChat para vincular sua conta pessoal.",
      "bind": "Vincular WeChat",
      "rebind": "Re-vincular",
      "bound": "WeChat Vinculado",
      "notBound": "Conta do WeChat ainda não vinculada.",
      "generating": "Gerando QR code...",
      "scanHint": "Abra o WeChat e escaneie o QR code",
      "scanned": "Escaneado — confirme no WeChat",
      "expired": "QR code expirado",
      "retry": "Tentar Novamente",
      "refresh": "Atualizar QR",
      "errorGeneric": "Ocorreu um erro. Tente novamente."
    },
    "wecom": {
      "bindTitle": "Vincular WeCom",
      "bindDesc": "Escaneie o QR code com o WeCom para vincular seu AI Bot.",
      "bind": "Vincular WeCom",
      "rebind": "Re-vincular",
      "bound": "WeCom Vinculado",
      "notBound": "AI Bot do WeCom ainda não vinculado.",
      "generating": "Gerando QR code...",
      "scanHint": "Abra o WeCom e escaneie o QR code",
      "scanned": "Escaneado, confirme no WeCom",
      "expired": "QR code expirado",
      "retry": "Tentar Novamente",
      "refresh": "Atualizar QR",
      "errorGeneric": "Ocorreu um erro. Tente novamente."
    },
    "field": {
      "token": "Token do Bot",
      "tokenPlaceholder": "Digite o token do bot",
      "botToken": "Token do Bot",
      "appToken": "App Token",
      "appId": "App ID",
      "appSecret": "App Secret",
      "verificationToken": "Token de Verificação",
      "encryptKey": "Chave de Criptografia",
      "baseUrl": "URL Base da API",
      "proxy": "Proxy HTTP",
      "mentionOnly": "Apenas com Menção",
      "typingEnabled": "Indicador de Digitação",
      "placeholderEnabled": "Mensagem de Placeholder",
      "placeholderText": "Texto do Placeholder",
      "groupTriggerMentionOnly": "Apenas Menção em Grupo",
      "groupTriggerPrefixes": "Prefixos de Trigger em Grupo",
      "groupTriggerPrefixesPlaceholder": "ex: /, !, ?",
      "randomReactionEmoji": "Emoji de Reação Aleatório",
      "randomReactionEmojiPlaceholder": "ex: THUMBSUP, HEART, SMILE",
      "isLark": "Lark (Internacional)",
      "allowFrom": "Permitir De",
      "allowFromPlaceholder": "ex: 123456, 789012",
      "allowOrigins": "Origens Permitidas",
      "allowOriginsPlaceholder": "ex: https://exemplo.com, http://localhost:5173",
      "removeListItem": "Remover {{value}}",
      "secretPlaceholder": "Digite o segredo",
      "secretHintSet": "Já existe um valor definido. Deixe em branco para mantê-lo inalterado."
    },
    "page": {
      "notFound": "Canal \"{{name}}\" não é suportado.",
      "saveSuccess": "Configuração do canal salva.",
      "saveError": "Falha ao salvar configuração do canal",
      "savePrompt": "Esta alteração ainda não foi salva. Salve para gravá-la na configuração do canal.",
      "docLink": "Documentação",
      "enableLabel": "Habilitar canal",
      "restartRequiredTitle": "Reinício do gateway necessário",
      "restartRequiredDesc": "A configuração mais recente de {{name}} foi salva. Reinicie o gateway para que tenha efeito."
    },
    "form": {
      "desc": {
        "token": "Token de acesso do bot usado para conectar à API da plataforma.",
        "botToken": "Token do bot usado para enviar e receber mensagens.",
        "appToken": "App token usado para conexões em modo Socket.",
        "appId": "ID único da aplicação usado para autenticação.",
        "appSecret": "Segredo da aplicação usado para assinatura e autenticação.",
        "verificationToken": "Token de verificação para callbacks de eventos.",
        "encryptKey": "Chave de criptografia usada para descriptografar payloads de callback.",
        "baseUrl": "URL base da API da plataforma. O endpoint oficial é usado por padrão.",
        "proxy": "Endereço de proxy HTTP para acesso de rede de saída.",
        "mentionOnly": "Responder apenas quando o bot for explicitamente mencionado em chats em grupo.",
        "typingEnabled": "Exibir status de digitação enquanto o assistente está gerando uma resposta.",
        "placeholderEnabled": "Habilitar mensagens de placeholder temporárias antes da resposta final ser enviada.",
        "groupTriggerMentionOnly": "Em chats em grupo, responder apenas quando o bot for mencionado.",
        "groupTriggerPrefixes": "Prefixos customizados de trigger para chats em grupo. Adicione itens um a um ou cole vários valores de uma vez.",
        "randomReactionEmoji": "PicoClaw adiciona reações de emoji às mensagens dos usuários para confirmar recebimento. Exemplo: \"THUMBSUP\", \"HEART\", \"SMILE\". Deixe vazio para usar o emoji \"Pin\" padrão.",
        "isLark": "Usar o domínio internacional do Lark (open.larksuite.com) em vez do domínio do Feishu (open.feishu.cn).",
        "allowFrom": "IDs de usuário ou grupo permitidos. Adicione itens um a um ou cole vários valores de uma vez.",
        "allowOrigins": "Domínios de origem permitidos. Adicione itens um a um ou cole vários valores de uma vez.",
        "wsUrl": "URL do serviço WebSocket.",
        "reconnectInterval": "Intervalo de reconexão após desconexão (segundos).",
        "bridgeUrl": "URL do serviço de bridge.",
        "sessionStorePath": "Caminho local para armazenamento de sessões.",
        "useNative": "Se deve usar modo de cliente nativo.",
        "host": "Endereço do host do serviço.",
        "port": "Porta do serviço.",
        "homeserver": "URL do homeserver Matrix.",
        "userId": "ID de usuário da conta.",
        "deviceId": "ID do dispositivo.",
        "joinOnInvite": "Entrar automaticamente em salas quando convidado.",
        "clientId": "Client ID usado para autenticação na plataforma.",
        "corpId": "Corp ID corporativo.",
        "agentId": "Agent ID da aplicação corporativa.",
        "webhookUrl": "URL completa do webhook.",
        "webhookHost": "Host de escuta do webhook.",
        "webhookPort": "Porta de escuta do webhook.",
        "webhookPath": "Caminho de rota do webhook.",
        "replyTimeout": "Timeout de resposta em segundos.",
        "maxSteps": "Número máximo de passos de processamento.",
        "welcomeMessage": "Conteúdo da mensagem de boas-vindas para novas sessões.",
        "allowTokenQuery": "Permitir token nos parâmetros de query da URL.",
        "pingInterval": "Intervalo de heartbeat da conexão em segundos.",
        "readTimeout": "Timeout de leitura em segundos.",
        "writeTimeout": "Timeout de escrita em segundos.",
        "maxConnections": "Número máximo de conexões concorrentes.",
        "server": "Endereço do servidor IRC.",
        "tls": "Se deve habilitar TLS.",
        "nick": "Apelido do bot.",
        "user": "Nome de usuário do IRC.",
        "realName": "Nome real exibido.",
        "channels": "Canais IRC para entrar.",
        "requestCaps": "Lista de capabilities IRC requisitada na conexão.",
        "maxBase64FileSizeMiB": "Tamanho máximo em MiB para converter arquivos locais em base64 antes do upload. 0 significa ilimitado. Aplica-se apenas a arquivos locais, não a uploads via URL.",
        "genericField": "Usado para configurar {{field}}."
      }
    },
    "validation": {
      "requiredField": "Este campo é obrigatório."
    }
  },
  "pages": {
    "agent": {
      "load_error": "Falha ao carregar informações de suporte do agente.",
      "skills": {
        "empty": "Nenhuma skill disponível no momento.",
        "install_success": "{{name}} instalada.",
        "install_error": "Falha ao instalar skill.",
        "search_placeholder": "Pesquisar por nome, descrição ou registry",
        "source_label": "Tipo",
        "sort_label": "Ordenar",
        "import": "Importar Skill",
        "import_success": "Skill importada.",
        "import_error": "Falha ao importar skill.",
        "import_invalid_type": "Apenas arquivos de skill em Markdown ou ZIP são suportados.",
        "import_invalid_size": "O arquivo de skill deve ter 1 MB ou menos.",
        "import_constraints": "Importe um arquivo de skill em Markdown ou ZIP de até 1 MB",
        "view": "Visualizar",
        "delete": "Excluir",
        "delete_title": "Excluir Skill?",
        "delete_description": "\"{{name}}\" será removida das skills do workspace.",
        "delete_confirm": "Excluir",
        "delete_success": "Skill excluída.",
        "delete_error": "Falha ao excluir skill.",
        "viewer_title": "Conteúdo da Skill",
        "viewer_description": "Leia aqui o conteúdo efetivo atual de SKILL.md.",
        "load_detail_error": "Falha ao carregar conteúdo da skill.",
        "no_description": "Nenhuma descrição fornecida.",
        "no_results": "Nenhuma skill corresponde aos filtros atuais.",
        "dropzone_title": "Importar para o Workspace",
        "dropzone_description": "Arraste um arquivo de skill aqui ou escolha um do disco.",
        "dropzone_label": "Solte um arquivo de skill aqui",
        "dropzone_active": "Solte para importar esta skill",
        "dropzone_release": "A skill será normalizada e salva no diretório de skills do workspace.",
        "marketplace_title": "Descobrir Skills",
        "marketplace_description": "Pesquise nos registries de skills e instale skills úteis neste workspace",
        "marketplace_search_placeholder": "Pesquise capacidades como github, docker, database...",
        "marketplace_search_action": "Pesquisar",
        "marketplace_search_status": "Status da Pesquisa",
        "marketplace_install_status": "Status da Instalação",
        "marketplace_notice_title": "Aviso de Segurança",
        "marketplace_notice_body": "Skills do registry são conteúdo de terceiros. Revise o autor, URL da página, instruções e qualquer código ou credencial requerida antes de instalar.",
        "marketplace_status_disabled": "Desabilitado. Habilite a ferramenta correspondente na página de Ferramentas primeiro.",
        "marketplace_status_enable_hint": "Habilite a ferramenta relacionada na página de Ferramentas primeiro.",
        "marketplace_search_error": "Falha ao pesquisar registries.",
        "marketplace_loading_results": "Pesquisando skills...",
        "marketplace_loading_more": "Carregando mais skills...",
        "marketplace_results_title": "{{count}} resultados para “{{query}}”",
        "marketplace_results_hint": "Resultados do registry instalam no workspace atual.",
        "marketplace_install_action": "Instalar",
        "marketplace_installed": "Instalada",
        "marketplace_view_installed": "Ver Local",
        "marketplace_installed_hint": "Já disponível neste workspace como “{{name}}”.",
        "marketplace_empty_results": "Nenhuma skill instalável encontrada para “{{query}}”.",
        "marketplace_idle": "Pesquise por uma capacidade para descobrir skills instaláveis nos registries configurados.",
        "marketplace_unavailable": "Pesquisa de registries indisponível no momento. Verifique a configuração das ferramentas de Skills.",
        "sort": {
          "name_asc": "Nome (A-Z)",
          "name_desc": "Nome (Z-A)",
          "source": "Tipo"
        },
        "origin": {
          "all": "Todos os Tipos",
          "builtin": "Embutida",
          "third_party": "Terceiros",
          "manual": "Manual"
        },
        "summary": {
          "total": "Total de Skills"
        },
        "detail_tabs": {
          "preview": "Visualização",
          "raw": "Bruto",
          "meta": "Metadados"
        },
        "metadata": {
          "name": "Nome",
          "description": "Descrição",
          "registry": "Registry",
          "url": "URL",
          "version": "Versão Instalada",
          "lines": "Quantidade de Linhas",
          "characters": "Quantidade de Caracteres"
        },
        "marketplace_installDisabled": {
          "installing": "Instalando...",
          "installed": "Já instalada",
          "cannotInstall": "Não é possível instalar: ferramenta relacionada não está habilitada"
        }
      },
      "tools": {
        "search_placeholder": "Pesquisar ferramentas...",
        "no_results": "Nenhuma ferramenta corresponde aos seus critérios.",
        "filter": {
          "all": "Todos os Status",
          "enabled": "Habilitada",
          "disabled": "Desabilitada",
          "blocked": "Bloqueada"
        },
        "empty": "Nenhuma ferramenta disponível.",
        "enable_success": "Ferramenta habilitada.",
        "disable_success": "Ferramenta desabilitada.",
        "toggle_error": "Falha ao atualizar estado da ferramenta.",
        "library_title": "Biblioteca de Ferramentas",
        "library_description": "Navegue e gerencie o conjunto de ferramentas disponíveis para seus agentes de IA.",
        "web_search": {
          "title": "Pesquisa Web",
          "description": "Fornece capacidade de pesquisa web aos agentes para encontrar informações atualizadas do mundo real. Roteia automaticamente para o provedor ativo ideal.",
          "unsaved_prompt": "Esta alteração ainda não foi salva. Salve para gravá-la na configuração de Pesquisa Web.",
          "global_settings": "Geral",
          "providers_config": "Integrações",
          "load_error": "Falha ao carregar configuração de pesquisa web.",
          "save": "Salvar Alterações",
          "open_settings": "Abrir Configurações",
          "save_success": "Configurações salvas com sucesso.",
          "save_error": "Falha ao salvar configurações.",
          "provider": "Provedor Principal",
          "provider_description": "Selecione o provedor padrão a ser usado quando a ferramenta de pesquisa web atender a uma requisição.",
          "proxy": "Proxy HTTPS",
          "proxy_description": "Proxy HTTP/S global opcional para requisições web subjacentes.",
          "prefer_native": "Preferir Pesquisa Nativa",
          "prefer_native_hint": "Quando habilitado, o modelo pode usar sua capacidade de pesquisa nativa em vez da lista de provedores configurados.",
          "provider_hint": "Habilite este provedor e preencha as configurações de conexão necessárias.",
          "max_results": "Máx. de Resultados",
          "base_url": "URL Base",
          "base_url_placeholder": "Sobrescrita opcional do endpoint",
          "api_key": "API Key / Token",
          "api_key_placeholder": "Digite a API Key, deixe em branco para manter a chave original",
          "none": "Indisponível"
        },
        "status": {
          "enabled": "Habilitada",
          "disabled": "Desabilitada",
          "blocked": "Bloqueada"
        },
        "categories": {
          "automation": "Automação",
          "filesystem": "Sistema de Arquivos",
          "web": "Web",
          "communication": "Comunicação",
          "skills": "Skills",
          "agents": "Agentes",
          "hardware": "Hardware",
          "discovery": "Descoberta"
        },
        "reasons": {
          "requires_linux": "Esta ferramenta só funciona em hosts Linux com os arquivos de dispositivo necessários expostos.",
          "requires_serial_platform": "Esta ferramenta atualmente suporta hosts Linux, macOS e Windows com portas seriais acessíveis.",
          "requires_skills": "Habilite `tools.skills` antes que esta ferramenta de skill-registry possa ser usada.",
          "requires_subagent": "Habilite `tools.subagent` antes que a ferramenta de spawn possa delegar trabalho.",
          "requires_mcp_discovery": "Habilite `tools.mcp.discovery` antes que as ferramentas de descoberta MCP fiquem disponíveis.",
          "requires_web_search_provider": "Configure ao menos um provedor externo de pesquisa web pronto para uso."
        }
      }
    },
    "config": {
      "load_error": "Falha ao carregar configuração. Atualize a página e tente novamente.",
      "workspace": "Diretório do Workspace",
      "workspace_hint": "Diretório base para operações de arquivo do agente.",
      "restrict_workspace": "Restringir ao Workspace",
      "restrict_workspace_hint": "Permitir operações de arquivo apenas dentro do workspace.",
      "split_on_marker": "Modo Tagarela",
      "split_on_marker_hint": "Dividir mensagens longas em várias curtas, como em uma conversa real.",
      "tool_feedback_enabled": "Feedback de Ferramentas",
      "tool_feedback_enabled_hint": "Enviar uma breve nota de execução no chat atual antes de cada ferramenta rodar.",
      "tool_feedback_separate_messages": "Mensagens de Feedback Separadas",
      "tool_feedback_separate_messages_hint": "Manter cada atualização de feedback de ferramenta como uma mensagem própria no chat em vez de reusar uma única mensagem de placeholder/progresso.",
      "tool_feedback_max_args_length": "Tamanho do Preview de Args da Ferramenta",
      "tool_feedback_max_args_length_hint": "Número máximo de caracteres exibidos em cada preview de argumento da ferramenta. Defina 0 para usar o padrão.",
      "exec_enabled": "Permitir Comandos",
      "exec_enabled_hint": "Habilita ou desabilita execução de comandos para o app. Quando desabilitado, nenhuma requisição de comando rodará.",
      "allow_remote": "Permitir Comandos Remotos",
      "allow_remote_hint": "Quando habilitado, sessões remotas ou contextos não locais também podem executar comandos. Quando desabilitado, a execução de comandos fica limitada a contextos locais seguros.",
      "enable_deny_patterns": "Habilitar Lista Negra",
      "enable_deny_patterns_hint": "Quando habilitado, o app bloqueia comandos que correspondam aos seus padrões perigosos embutidos e à lista negra customizada abaixo.",
      "exec_timeout_seconds": "Timeout de Comando (segundos)",
      "exec_timeout_seconds_hint": "Tempo máximo de execução para requisições de comando. Defina 0 para usar o timeout padrão.",
      "custom_deny_patterns": "Lista Negra de Comandos",
      "custom_deny_patterns_hint": "Adicione regras extras de bloqueio de comando, uma expressão regular por linha. Um comando que casar com qualquer regra aqui será bloqueado.",
      "custom_allow_patterns": "Lista Branca de Comandos",
      "custom_allow_patterns_hint": "Adicione regras extras de permissão de comando, uma expressão regular por linha. Um comando que casar com qualquer regra aqui pula a verificação da lista negra, mas outros limites de segurança ainda se aplicam.",
      "custom_patterns_placeholder": "^rm\\s+-rf\\b\n^git\\s+push\\b",
      "pattern_detector_title": "Ferramenta de Detecção de Padrões",
      "pattern_detector_hint": "Digite um comando para testar se ele casa com algum padrão da lista negra ou branca.",
      "pattern_detector_input_placeholder": "Digite um comando para testar, ex: rm -rf /tmp",
      "pattern_detector_test_button": "Testar",
      "pattern_detector_result_allowed": "Permitido (corresponde à lista branca)",
      "pattern_detector_result_blocked": "Bloqueado (corresponde à lista negra)",
      "pattern_detector_result_no_match": "Sem correspondência (usará as regras padrão)",
      "allow_shell_execution": "Permitir Comandos Agendados",
      "allow_shell_execution_hint": "Permitir que tarefas agendadas executem comandos por padrão. Quando desabilitado, usuários precisam passar command_confirm=true para agendar uma tarefa de comando.",
      "cron_exec_timeout": "Timeout de Comando Agendado (minutos)",
      "cron_exec_timeout_hint": "Tempo máximo de execução para comandos agendados. Defina 0 para desabilitar o timeout.",
      "max_tokens": "Max Tokens",
      "max_tokens_hint": "Limite superior de tokens por resposta do modelo.",
      "context_window": "Janela de Contexto",
      "context_window_hint": "Capacidade do contexto de entrada do modelo em tokens. Deixe vazio para usar o padrão (4x max tokens).",
      "max_tool_iterations": "Máx. de Iterações de Ferramenta",
      "max_tool_iterations_hint": "Loops máximos de chamadas de ferramenta em uma única tarefa.",
      "summarize_threshold": "Limite para Resumir Mensagens",
      "summarize_threshold_hint": "Iniciar resumo após este número de mensagens.",
      "summarize_token_percent": "Percentual de Token para Resumir",
      "summarize_token_percent_hint": "Usado quando o resumo da conversa é acionado.",
      "session_scope": "Escopo da Sessão",
      "session_scope_hint": "Como o contexto do chat é isolado entre peers/canais.",
      "session_scope_per_channel_peer": "Por Canal + Peer",
      "session_scope_per_channel_peer_desc": "Contexto separado para cada usuário em cada canal.",
      "session_scope_per_channel": "Por Canal",
      "session_scope_per_channel_desc": "Um contexto compartilhado por canal.",
      "session_scope_per_peer": "Por Peer",
      "session_scope_per_peer_desc": "Um contexto por usuário entre canais.",
      "session_scope_global": "Global",
      "session_scope_global_desc": "Todas as mensagens compartilham um contexto global.",
      "heartbeat_enabled": "Heartbeat",
      "heartbeat_enabled_hint": "Enviar mensagens de heartbeat periódicas.",
      "heartbeat_interval": "Intervalo do Heartbeat (minutos)",
      "heartbeat_interval_hint": "Intervalo em minutos entre sinais de heartbeat.",
      "devices_enabled": "Habilitar Dispositivos",
      "devices_enabled_hint": "Habilitar integrações com dispositivos de hardware.",
      "monitor_usb": "Monitorar USB",
      "monitor_usb_hint": "Observar eventos de plug/unplug USB quando dispositivos estiverem habilitados.",
      "autostart_label": "Iniciar no Login",
      "autostart_hint": "Iniciar o PicoClaw Web automaticamente quando você fizer login.",
      "autostart_unsupported": "Iniciar no login não é suportado nesta plataforma.",
      "autostart_load_error": "Falha ao carregar status de iniciar no login.",
      "server_port": "Porta do Serviço",
      "server_port_hint": "Porta HTTP usada pelo PicoClaw Web.",
      "launcher_section_hint": "Alterações nesta seção entram em vigor após o launcher reiniciar.",
      "gateway_restart_hint": "Alterações nesta seção entram em vigor após o gateway reiniciar.",
      "dashboard_password": "Senha de Login",
      "dashboard_password_hint": "Defina uma nova senha de login.",
      "dashboard_password_placeholder": "Pelo menos 8 caracteres",
      "dashboard_password_confirm": "Confirmar Nova Senha",
      "dashboard_password_confirm_hint": "Digite a nova senha de login novamente.",
      "dashboard_password_confirm_placeholder": "Repita a senha",
      "dashboard_password_required": "Digite e confirme a nova senha de login.",
      "dashboard_password_mismatch": "As senhas de login não coincidem.",
      "dashboard_password_min_length": "A senha de login deve ter pelo menos 8 caracteres.",
      "lan_access": "Habilitar Acesso pela LAN",
      "lan_access_hint": "Permitir acesso de outros dispositivos na sua rede local.",
      "allowed_cidrs": "CIDRs de Rede Permitidos",
      "allowed_cidrs_hint": "Apenas clientes destes intervalos CIDR podem acessar o serviço. Um por linha ou separados por vírgula. Deixe vazio para permitir todos.",
      "allowed_cidrs_placeholder": "192.168.1.0/24\n10.0.0.0/8",
      "sections": {
        "agent": "Agente",
        "runtime": "Runtime",
        "exec": "Execução de Comandos",
        "cron": "Tarefas Agendadas",
        "launcher": "Launcher",
        "devices": "Dispositivos"
      },
      "open_raw": "Configuração Bruta",
      "back_to_visual": "Configuração Visual",
      "raw_json_title": "Configuração JSON Bruta",
      "json_placeholder": "Digite uma configuração JSON válida...",
      "save_success": "Configuração salva com sucesso.",
      "save_error": "Falha ao salvar configuração.",
      "reset_confirm_title": "Redefinir Alterações",
      "reset_confirm_desc": "Tem certeza de que deseja redefinir suas alterações não salvas para o último estado salvo?",
      "reset_success": "Alterações foram redefinidas para o último estado salvo.",
      "invalid_json": "Formato JSON inválido.",
      "format_success": "JSON formatado com sucesso.",
      "format_error": "Formato JSON inválido.",
      "format": "Formatar",
      "unsaved_changes": "Você tem alterações não salvas."
    },
    "logs": {
      "log_level_error": "Falha ao atualizar nível de log.",
      "clear": "Limpar logs",
      "empty": "Aguardando logs..."
    }
  },
  "tour": {
    "skip": "Pular tour",
    "prev": "Anterior",
    "next": "Próximo",
    "finish": "Concluir",
    "welcome": {
      "title": "Bem-vindo ao PicoClaw",
      "description": "PicoClaw é uma plataforma poderosa de assistente de IA. Vamos levar alguns segundos para te ajudar a concluir a configuração básica."
    },
    "models": {
      "title": "Configurar Modelos",
      "description": "Clique no menu \"Modelos\" à esquerda para configurar API Keys dos provedores de IA. Apenas modelos configurados podem ser usados no chat."
    },
    "gateway": {
      "title": "Iniciar Gateway",
      "description": "Após configurar modelos, clique no botão \"Iniciar Gateway\" no topo para começar a conversar com a IA."
    },
    "docs": {
      "title": "Ver Documentação",
      "description": "Precisa de mais ajuda? Clique no botão de documentação no canto superior direito para ver guias detalhados e documentação de configuração."
    }
  }
}
