{ "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", "toolCallArgumentsLabel": "Argumentos", "showAssistantDetails": "Raciocínio e chamadas de ferramentas", "assistantDetailVisibility": { "none": "Não mostrar nenhum", "thought": "Mostrar apenas raciocínio", "toolCalls": "Mostrar apenas chamadas de ferramentas", "all": "Mostrar ambos" }, "toolLabel": "Ferramenta", "codeLabel": "Código", "copyMessage": "Copiar mensagem", "copyCode": "Copiar código", "copiedLabel": "Copiado", "expandCode": "Expandir código", "collapseCode": "Recolher código", "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", "close": "Fechar", "save": "Salvar", "saving": "Salvando...", "reset": "Redefinir", "confirm": "Confirmar", "fix": "Corrigir", "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", "retry": "Tentar novamente", "providerCatalogUnavailable": "O catálogo de providers do backend está indisponível. A seleção de novos providers fica desabilitada até a API de Modelos carregar com sucesso.", "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.", "unsupportedProvider": "Este provedor pode ser salvo na lista de modelos, mas não pode ser usado como modelo de chat padrão." }, "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": "Selecione um provider", "providerHint": "Escolha um provider do catálogo do backend; o Identificador do Modelo será interpretado como o ID canônico desse provider.", "providerInvalid": "O provider atual é inválido. Selecione um provider suportado.", "selectProviderFirst": "Selecione um provider primeiro", "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.", "authMethodManagedHint": "O método de autenticação deste provider é gerenciado pelo sistema.", "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": "Deixe em branco para omitir thinking_level e usar o padrão do provider. Valores: off, low, medium, high, xhigh, adaptive.", "providerDefault": "padrão do provider", "maxTokensField": "Campo de Max Tokens", "maxTokensFieldHint": "Sobrescreve o nome do campo de max tokens na requisição, ex: max_completion_tokens.", "toolSchemaTransform": "Transformação de Schema de Ferramentas", "toolSchemaTransformHint": "Transformação opcional de compatibilidade para schemas JSON de ferramentas. Deixe em branco para o comportamento nativo. Valor suportado: simple.", "streamingEnabled": "Saída Streaming", "streamingEnabledHint": "Permite que esta entrada de modelo tente requisições de provider streaming. O switch de streaming do canal atual também precisa estar habilitado.", "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\"}.", "invalidJson": "Formato JSON inválido" }, "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." }, "fetch": { "title": "Buscar Modelos Disponíveis", "description": "Busque a lista de modelos do provider upstream.", "providerLabel": "Provider:", "needApiKey": "Digite primeiro uma API Key para buscar modelos.", "fetching": "Buscando modelos...", "retry": "Tentar novamente", "filterPlaceholder": "Filtrar modelos...", "found": "Encontrado {{count}} modelo", "found_plural": "Encontrados {{count}} modelos", "shown": "({{count}} exibidos)", "selectAll": "Selecionar todos", "deselectAll": "Desmarcar todos", "fill": "Preencher {{count}} Modelo Selecionado", "fill_plural": "Preencher {{count}} Modelos Selecionados", "failed": "Falha ao buscar modelos" }, "catalog": { "button": "Catálogos Salvos", "title": "Catálogos de Modelos Salvos", "description": "Listas de modelos buscadas anteriormente, armazenadas por API key. Selecione modelos para adicionar à sua configuração.", "loading": "Carregando catálogos...", "empty": "Ainda não há catálogos salvos. Busque modelos de um provider para salvar um catálogo.", "filterPlaceholder": "Filtrar modelos...", "models": "modelos", "fetchedAt": "Obtido em", "delete": "Excluir catálogo", "refresh": "Atualizar do upstream", "found": "Encontrado {{count}} modelo", "found_plural": "Encontrados {{count}} modelos", "selectAll": "Selecionar todos", "deselectAll": "Desmarcar todos", "addSelected": "Adicionar {{count}} Selecionados", "addSuccess": "{{count}} modelo(s) adicionados à configuração.", "needApiKey": "Esses modelos exigem uma API key. Será necessário configurar as credenciais após a importação." }, "test": { "title": "Testar Conectividade do Modelo", "description": "Verifique se o endpoint do modelo está acessível e configurado corretamente.", "modelLabel": "Modelo:", "identifierLabel": "Identificador:", "endpointLabel": "Endpoint:", "testConnection": "Testar Conexão", "testing": "Testando conexão...", "success": "Conexão bem-sucedida", "responseTime": "Tempo de resposta: {{ms}}ms", "failed": "Falha na conexão", "status": "Status: {{status}}", "testFailed": "Falha no teste", "testAgain": "Testar novamente" }, "validation": { "whitespace": "O identificador do modelo não pode conter espaços", "leadingSlash": "Não deve começar com /", "consecutiveSlash": "Não deve conter // consecutivos", "useProvider": "Usará \"{{provider}}\" como provider", "defaultToOpenAI": "Nenhum provider especificado, o padrão será OpenAI", "emptyModel": "O nome do modelo não pode estar vazio", "shouldUse": "\"{{provider}}\" deve usar \"{{alias}}\"", "didYouMean": "Você quis dizer \"{{closest}}\"?", "unknownProvider": "Provider desconhecido \"{{provider}}\"", "parsed": "provider={{provider}}, model={{model}}" }, "combobox": { "selectProvider": "Selecionar provider...", "searchProvider": "Buscar provider...", "noProvider": "Nenhum provider encontrado.", "noCatalog": "Catálogo de providers indisponível.", "local": "local" } }, "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", "streamingEnabled": "Saída Streaming", "streamingThrottleSeconds": "Intervalo de Atualização (s)", "streamingMinGrowthChars": "Caracteres Mínimos de Crescimento", "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.", "streamingEnabled": "Permite que este canal exiba output streaming do provider. O switch de streaming da entrada de modelo atual também precisa estar habilitado.", "streamingThrottleSeconds": "Intervalo mínimo entre atualizações intermediárias de streaming. 0 significa usar o padrão. Respostas finais não são limitadas.", "streamingMinGrowthChars": "Crescimento mínimo de texto antes de enviar outra atualização intermediária. 0 significa usar o padrão. Respostas finais não são limitadas.", "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", "evolution_section_hint": "Permite que o agente aprenda com turnos concluídos e prepare melhorias de skills.", "evolution_enabled": "Habilitar Evolução", "evolution_enabled_hint": "Registrar dados de aprendizado para turnos concluídos. Os modos Draft e Apply também podem gerar atualizações de skills.", "evolution_mode": "Modo de Evolução", "evolution_mode_hint": "Observe apenas registra dados, Draft prepara skills candidatas, Apply pode gravar drafts aceitos nas skills do workspace.", "evolution_mode_observe": "Observe", "evolution_mode_draft": "Draft", "evolution_mode_apply": "Apply", "evolution_state_dir": "Diretório de Estado", "evolution_state_dir_hint": "Diretório opcional para o estado de evolução. Deixe vazio para usar o padrão do workspace.", "evolution_min_task_count": "Contagem Mínima de Tarefas", "evolution_min_task_count_hint": "Número mínimo de tarefas relacionadas antes que um padrão possa produzir um draft.", "evolution_min_success_ratio": "Taxa Mínima de Sucesso", "evolution_min_success_ratio_hint": "Taxa de sucesso exigida para tarefas agrupadas. Use um valor maior que 0 e até 1.", "evolution_cold_path_trigger": "Acionador Cold Path", "evolution_cold_path_trigger_hint": "Escolha quando a geração de drafts roda para registros de aprendizado elegíveis.", "evolution_cold_path_after_turn": "Após cada turno", "evolution_cold_path_scheduled": "Agendado", "evolution_cold_path_manual": "Desligado", "evolution_cold_path_times": "Horários Agendados", "evolution_cold_path_times_hint": "Horários para o processamento cold-path agendado. Insira um valor HH:MM por linha.", "sections": { "agent": "Agente", "runtime": "Runtime", "evolution": "Evolução", "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.", "factory_reset": "Restaurar Padrões", "factory_reset_confirm_title": "Restaurar Configurações de Fábrica", "factory_reset_confirm_desc": "Isso redefinirá todas as configurações para os padrões de fábrica. As chaves de API e credenciais de segurança serão preservadas. Um backup da configuração atual será criado.", "factory_reset_confirm": "Redefinir para Padrões", "factory_reset_success": "A configuração foi redefinida para os padrões de fábrica.", "factory_reset_error": "Falha ao redefinir a configuração." }, "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." } } }