{
  "nav": {
    "models": "Modelos",
    "playground": "Playground",
    "keys": "Chaves",
    "analytics": "Análises",
    "premium": "Premium",
    "signOut": "Sair",
    "openMenu": "Abrir o menu de navegação",
    "theme": "Tema",
    "switchLight": "Mudar para o tema claro",
    "switchDark": "Mudar para o tema escuro",
    "language": "Alterar idioma",
    "switchToChinese": "Mudar para chinês",
    "switchToEnglish": "Mudar para inglês",
    "modelsMenu": "Explorar tipos de modelo"
  },
  "auth": {
    "createYourAccount": "Crie sua conta",
    "signIn": "Entrar",
    "email": "E-mail",
    "password": "Senha",
    "emailPlaceholder": "voce@exemplo.com",
    "passwordPlaceholderSetup": "no mínimo 8 caracteres",
    "passwordPlaceholderLogin": "sua senha",
    "setupDescription": "Defina o e-mail e a senha que protegerão este painel.",
    "loginDescription": "Entre para gerenciar suas chaves, o roteamento e as análises.",
    "createAccount": "Criar conta",
    "creating": "Criando…",
    "signingIn": "Entrando…",
    "loading": "Carregando…",
    "newPasswordAutoComplete": "new-password",
    "currentPasswordAutoComplete": "current-password",
    "serverUnreachableBefore": "Não foi possível acessar o servidor. Verifique se o backend está em execução (",
    "serverUnreachableAfter": ")."
  },
  "common": {
    "save": "Salvar",
    "saving": "Salvando…",
    "cancel": "Cancelar",
    "discard": "Descartar",
    "delete": "Excluir",
    "confirm": "Confirmar",
    "copy": "Copiar",
    "copied": "Copiado",
    "show": "Mostrar",
    "hide": "Ocultar",
    "apply": "Aplicar",
    "applied": "Aplicado",
    "applying": "Aplicando…",
    "active": "Ativo",
    "inactive": "Inativo",
    "never": "nunca",
    "loading": "Carregando…",
    "error": "Erro",
    "noData": "Ainda não há dados",
    "unsavedChanges": "Alterações não salvas",
    "saveChanges": "Salvar alterações",
    "remove": "Remover",
    "unknownError": "Erro desconhecido",
    "model": "Modelo",
    "provider": "Provedor",
    "success": "Sucessos",
    "failures": "Falhas",
    "dismiss": "Dispensar",
    "status": "Status"
  },
  "models": {
    "title": "Modelos",
    "chatModelsTab": "Modelos de chat",
    "fusionTab": "Fusão",
    "embeddingsTab": "Embeddings",
    "imageTab": "Imagem",
    "audioTab": "Áudio",
    "imageTitle": "Modelos de imagem",
    "audioTitle": "Modelos de áudio",
    "imageDesc": "Modelos de geração de texto para imagem.",
    "audioDesc": "Modelos de geração de texto para fala.",
    "mediaHint": "Gerar via",
    "mediaEmpty": "Ainda sem modelos. Eles sincronizam do catálogo.",
    "newBadge": "Novo",
    "monthlyTokenBudget": "Orçamento mensal de tokens",
    "remaining": "restante",
    "used": "usados",
    "of": "de",
    "showAllModels": "Mostrar os {count} modelos",
    "showLess": "Mostrar menos",
    "vision": "Visão",
    "visionTitle": "Aceita imagens como entrada",
    "tools": "Ferramentas",
    "toolsTitle": "Emite chamadas de ferramentas estruturadas, por isso é elegível para solicitações com ferramentas",
    "penalty": "penalidade de −{value}",
    "obs": "{count} obs",
    "tokPerMonth": "{count} tok/mês",
    "rpmLimit": "{count} rpm",
    "rpdLimit": "{count} rpd",
    "noKey": "sem chave",
    "dragToReorder": "Arraste para reordenar",
    "columnModel": "Modelo",
    "columnOn": "Ativo",
    "noModelsBefore": "Nenhum modelo disponível. Adicione chaves de API na ",
    "keysPageLink": "página Chaves",
    "noModelsAfter": " primeiro.",
    "hiddenNoKeys": "Ocultos (sem chave): {platforms}",
    "searchPlaceholder": "Buscar modelos ou provedores…",
    "clearSearch": "Limpar busca",
    "ctxAny": "Qualquer contexto",
    "ctxBadge": "{size} ctx",
    "ctxTitle": "Janela de contexto",
    "copyModelId": "Copiar id do modelo",
    "showingCount": "{shown} de {total} modelos",
    "clearFilters": "Limpar filtros",
    "noMatches": "Nenhum modelo corresponde aos seus filtros.",
    "noModelsTitle": "Nenhum modelo configurado",
    "dragToReorderGroup": "Arraste para reordenar o modelo",
    "providerCount": "{count} provedores",
    "servedBy": "Servido por {providers}",
    "viewProviders": "Ver provedores",
    "backToModels": "Voltar para modelos",
    "providersHeading": "Provedores que servem este modelo",
    "codeSnippetHeading": "Use este modelo",
    "modelNotFound": "Este modelo não está disponível, ou não tem provedores configurados.",
    "providerIdsHeading": "IDs de modelo do provedor",
    "providerIdsHint": "Envie o id de modelo unificado para failover entre todos os provedores, ou um id específico do provedor para fixar um provedor.",
    "copyModelName": "Copiar nome do modelo",
    "settingsHeading": "Configurações do provedor",
    "settingsHint": "Edições locais em modelos do catálogo são mantidas entre sincronizações do catálogo. Modelos do catálogo excluídos permanecem excluídos até que você os adicione novamente pela configuração.",
    "catalogModel": "catálogo",
    "customModel": "personalizado",
    "localOverride": "substituição local",
    "displayName": "Nome de exibição",
    "contextWindow": "Contexto",
    "inFallback": "Na cadeia",
    "saveModelSettings": "Salvar configurações do modelo",
    "aggregateBudget": "{count}/mês",
    "aggregateBudgetTitle": "Total de tokens gratuitos por mês entre os provedores deste modelo",
    "rateRpm": "{count} RPM",
    "rateRpd": "{count} RPD",
    "rateTitle": "Limitado por taxa: sem orçamento fixo de tokens mensal",
    "unifyToggle": "Unificar modelos duplicados",
    "unifyToggleHint": "Mostra um modelo servido por vários provedores como um único item, e faz failover entre seus provedores quando selecionado."
  },
  "strategies": {
    "title": "Estratégia de roteamento",
    "description": "Escolha uma estratégia de roteamento. No modo manual, arraste para definir a ordem; as demais estratégias roteiam por pontuação ao vivo de confiabilidade, velocidade e inteligência.",
    "manual": "Manual",
    "manualBlurb": "Roteia na ordem exata que você definir abaixo. Arraste as alças para reordenar. Sem pontuação; a cadeia é seguida de cima para baixo.",
    "balanced": "Equilibrado",
    "balancedBlurb": "A confiabilidade vem primeiro (50%), com velocidade e inteligência ponderadas igualmente (25% cada). Um padrão sensato e versátil.",
    "smartest": "Mais inteligente",
    "smartestBlurb": "Prefere o modelo mais capaz que ainda funcione. Inteligência 55%, confiabilidade 35%, velocidade 10%.",
    "fastest": "Mais rápido",
    "fastestBlurb": "Prefere o modelo mais rápido que ainda funcione. Velocidade 55%, confiabilidade 35%, inteligência 10%.",
    "reliable": "Mais confiável",
    "reliableBlurb": "Maximizar a taxa de sucesso acima de tudo. Confiabilidade 70%, velocidade e inteligência 15% cada.",
    "custom": "Personalizado",
    "customBlurb": "Defina seu próprio equilíbrio entre confiabilidade, velocidade e inteligência com controles deslizantes. O mesmo motor das predefinições, mas com seus pesos.",
    "adjust": "Ajustar",
    "customWeights": "Pesos personalizados",
    "customWeightsHelp": "Os controles são independentes; as proporções se equilibram automaticamente em 100%.",
    "weightReliability": "Confiabilidade",
    "weightSpeed": "Velocidade",
    "weightIntelligence": "Inteligência",
    "weightRequired": "Pelo menos um peso deve ser maior que zero.",
    "scoreColumn": "Pontuação",
    "weightsSummary": "confiabilidade {reliability}% · velocidade {speed}% · inteligência {intelligence}%",
    "guardrails": "Proteções",
    "guardrailsTooltip": "Proteções sempre ativas: margem de cota gratuita × penalidade de limite de taxa ao vivo. Abaixo de 1,0 o modelo está sendo contido.",
    "scoreTooltip": "Pontuação final de roteamento = média ponderada dos três eixos, multiplicada pelas proteções. A maior é roteada primeiro.",
    "modeManualHint": "Modo manual: as solicitações seguem a ordem abaixo, de cima para baixo. Arraste para reordenar.",
    "modeScoreHint": "As pontuações são atualizadas com o tráfego real. A ordem abaixo é como as solicitações são roteadas agora."
  },
  "keys": {
    "pageTitle": "Chaves",
    "pageDescription": "As credenciais dos provedores e a chave de API unificada à qual seus aplicativos se conectam.",
    "tabProviders": "Provedores",
    "tabQuotaSignals": "Sinais de cota",
    "tabApiKey": "Chave de API unificada",
    "tabAnthropic": "Anthropic",
    "unifiedKey": "Sua chave de API unificada",
    "regenerate": "Regenerar",
    "showKey": "Mostrar",
    "hideKey": "Ocultar",
    "copyKey": "Copiar",
    "copiedKey": "Copiado",
    "baseUrl": "URL base",
    "endpointChat": "Chat",
    "endpointResponses": "Responses",
    "endpointEmbeddings": "Embeddings",
    "endpointEmbeddingsHint": "model: \"auto\" ou uma família da aba Embeddings",
    "endpointMessages": "Messages",
    "endpointMessagesHint": "Compatível com Anthropic (Claude)",
    "anthropicTitle": "Modelos Claude (Anthropic)",
    "anthropicDesc": "Aponte um cliente SDK do Claude ou da Anthropic para este servidor. Os clientes da Anthropic enviam nomes de modelos Claude — mapeie cada um para Auto (o roteador escolhe um modelo gratuito) ou fixe um específico.",
    "anthropicBaseUrl": "URL base",
    "anthropicAuth": "Cabeçalho de autenticação",
    "anthropicAuto": "Auto — o roteador escolhe o melhor modelo",
    "anthropicSave": "Salvar mapeamento",
    "anthropicSaved": "Salvo",
    "anthropicNote": "Os clientes da Anthropic mantêm seus nomes de modelos Claude integrados; o mapeamento acima decide como cada um é roteado para o seu pool.",
    "familyDefault": "Padrão",
    "familyOpus": "Opus",
    "familySonnet": "Sonnet",
    "familyHaiku": "Haiku",
    "selectPlatform": "Selecione um provedor",
    "addKey": "Adicionar chave",
    "keyAdded": "Chave adicionada",
    "adding": "Adicionando…",
    "selectProvider": "Selecione um provedor…",
    "accountId": "ID da conta",
    "label": "Rótulo",
    "noKeyNeeded": "(nenhuma chave necessária)",
    "outboundProxy": "Proxy de saída",
    "outboundProxyDescription": "Roteia as solicitações LLM de saída por um proxy. Compatível com SOCKS5, HTTP e HTTPS.",
    "proxyUrl": "URL do proxy",
    "saveProxy": "Salvar",
    "savingProxy": "Salvando…",
    "proxyLoadFailed": "Não foi possível carregar as configurações do proxy.",
    "addCustom": "Adicionar um modelo personalizado compatível com OpenAI",
    "addCustomDescription": "Aponte para qualquer endpoint compatível com OpenAI: llama.cpp, LM Studio, vLLM, um Ollama local ou um gateway remoto. Liste um modelo por linha (ou separados por vírgula) para adicionar vários de uma vez; todos compartilham o mesmo endpoint. A chave de API é opcional (a maioria dos servidores locais não precisa).",
    "customBaseUrl": "URL base",
    "customModels": "Modelos",
    "customDisplayName": "Nome de exibição",
    "customDisplayNamePerModel": "por modelo",
    "customDisplayNameOptional": "opcional",
    "customApiKey": "Chave de API",
    "customCapabilities": "Recursos",
    "addModel": "Adicionar modelo",
    "modelAdded": "Modelo adicionado",
    "addModels": "Adicionar {count} modelos",
    "addingCustom": "Adicionando…",
    "getApiKey": "Obter chave de API",
    "deleteKeyConfirm": "Excluir esta chave? Esta ação não pode ser desfeita.",
    "checkAll": "Verificar tudo",
    "checking": "Verificando…",
    "editLabel": "Editar rótulo",
    "saveLabel": "Salvar rótulo",
    "unifiedKeyDescBefore": "Use-a como sua ",
    "unifiedKeyDescAfter": " da OpenAI; ela autentica as solicitações a este proxy.",
    "serverUnreachableBefore": "Não foi possível acessar o servidor em ",
    "serverUnreachableAfter": ". Verifique se o backend está em execução. npm run dev inicia os dois, e os logs do servidor são impressos sob o prefixo server.",
    "paneProviderKey": "Chave de provedor",
    "paneImportFile": "Importar arquivo",
    "paneCustomEndpoint": "Endpoint personalizado",
    "platform": "Plataforma",
    "apiToken": "Token de API",
    "noKeyNeededPlaceholder": "Nenhuma chave de API necessária",
    "bearerTokenPlaceholder": "Token Bearer",
    "pasteKeyPlaceholder": "cole a chave aqui",
    "keylessHint": "Nenhuma chave de API necessária: o nível gratuito deste provedor é anônimo (com limite por IP).",
    "enable": "Habilitar",
    "noProviderKeys": "Ainda não há chaves de provedor. Adicione uma acima para começar o roteamento.",
    "filterPlaceholder": "Filtrar provedores ou chaves",
    "filterAll": "Todos",
    "filterHealthy": "Saudáveis",
    "filterIssues": "Com problemas",
    "filterDisabled": "Desabilitados",
    "noFilterMatch": "Nenhum provedor corresponde aos seus filtros.",
    "providerCountSummary": "{providers} provedores · {keys} chaves",
    "summaryHealthy": "{count} saudáveis",
    "summaryIssueOne": "{count} problema",
    "summaryIssueOther": "{count} problemas",
    "providerActions": "Ações do provedor",
    "routeViaProxy": "Rotear pelo proxy",
    "checkNow": "Verificar agora",
    "proxyEnvHintBefore": "Também configurável pela variável de ambiente ",
    "proxyEnvHintAfter": " (tem precedência). Deixe em branco para desativar. Exemplos:",
    "confirmRemove": "Confirmar?",
    "quotaSignalsTitle": "Sinais de cota",
    "quotaSignalsEmptyTitle": "Ainda sem observações de cota",
    "quotaSignalsEmptyDesc": "Isto é preenchido quando os provedores retornam cabeçalhos de limite, erros de cota ou sinais de validação.",
    "quotaKeyRef": "chave nº {id}",
    "quotaPoolRef": "pool {pool}",
    "quotaLimit": "Limite",
    "quotaRemaining": "Restante",
    "quotaReset": "Redefinição",
    "quotaObserved": "Observado",
    "customType": "Tipo",
    "customTypeChat": "Chat",
    "customTypeEmbedding": "Embedding",
    "customTypeImage": "Imagem",
    "customTypeAudio": "Áudio",
    "customModel": "Modelo",
    "customFamily": "Família",
    "customFamilyPlaceholder": "padrão: id do modelo",
    "addEmbeddingModel": "Adicionar embedding",
    "addImageModel": "Adicionar modelo de imagem",
    "addAudioModel": "Adicionar modelo de áudio",
    "importKeys": "Importar chaves de provedor",
    "importKeysDescription": "Envie arquivos .env, JSON, JSONC, CSV, Markdown ou texto.",
    "importFiles": "Arquivos",
    "importFileCount": "{count} selecionados",
    "previewFiles": "Pré-visualizar",
    "previewing": "Pré-visualizando…",
    "selected": "Selecionado",
    "provider": "Provedor",
    "keyName": "Nome da chave",
    "keyValue": "Valor da chave",
    "chooseProvider": "Escolher provedor",
    "noPreviewKeys": "Nenhuma chave encontrada nesses arquivos.",
    "skippedItems": "Ignorados:",
    "moreItems": "+{count} mais",
    "importSelected": "Importar {count}",
    "importing": "Importando…",
    "noImportSelection": "Selecione pelo menos uma linha com um provedor.",
    "duplicate": "Duplicado",
    "duplicatesFound": "{count} duplicado(s) detectado(s) — já existem e serão ignorados.",
    "importResult": "Importados {imported}; falharam {failed}.",
    "export": {
      "json": "JSON",
      "env": ".env",
      "csv": "CSV"
    },
    "exportAll": "All keys",
    "exportHealthy": "Healthy only",
    "exportKeys": "Export API keys",
    "exportFormat": "Format",
    "exportHealthyOnly": "Healthy keys only",
    "exportHealthyOnlyDesc": "Exclude keys that are currently failing health checks",
    "exportWillExport": "Will export",
    "exportKey": "key",
    "exportKeys plural": "keys",
    "exporting": "Exporting…",
    "exportDownload": "Download",
    "exportSuccess": "Exported {count} keys"
  },
  "status": {
    "healthy": "saudável",
    "rateLimited": "limitado",
    "invalid": "inválido",
    "error": "erro",
    "unchecked": "não verificado"
  },
  "analytics": {
    "title": "Análises",
    "description": "Volume de solicitações, latência, consumo de tokens e falhas.",
    "range24h": "24 h",
    "range7d": "7 d",
    "range30d": "30 d",
    "range90d": "90 d",
    "requests": "Solicitações",
    "successRate": "Taxa de sucesso",
    "inputTokens": "Tokens de entrada",
    "outputTokens": "Tokens de saída",
    "avgLatency": "Latência média",
    "p95Latency": "Latência P95",
    "avgTtft": "TTFT médio",
    "estSavings": "Economia est.",
    "requestsByProvider": "Solicitações por provedor",
    "avgLatencyByProvider": "Latência média por provedor",
    "ttftByProvider": "Tempo até o primeiro token por provedor",
    "ttftEmpty": "Nenhum tempo até o primeiro token registrado ainda.",
    "requestsOverTime": "Solicitações ao longo do tempo",
    "tokensOverTime": "Tokens ao longo do tempo",
    "byModel": "Por modelo",
    "byPlatform": "Por plataforma",
    "errors": "Erros",
    "errorDistribution": "Distribuição de erros",
    "pinnedRequests": "Solicitações fixadas",
    "pinnedHonored": "Respeitadas",
    "fallbackAttempts": "Tentativas de fallback",
    "savingsHint": "Você economizou de fato {actual} $ nos últimos {range}. É quanto os mesmos tokens teriam custado em APIs pagas, com preço por modelo. O número exibido projeta seu ritmo dos {span} de dados mais recentes para 30 dias completos.",
    "savingsHintExact": "Você economizou de fato {actual} $ nos últimos {range}. É quanto os mesmos tokens teriam custado em APIs pagas, com preço por modelo. O número exibido é o seu total real de 30 dias.",
    "requestsHintPinned": "{pinned} destas solicitações fixaram um modelo específico pelo nome. {honored} foram atendidas pelo modelo fixado; {failed} fizeram fallback para outro. As demais foram roteadas automaticamente.",
    "requestsHintAuto": "Todas as solicitações deste período foram roteadas automaticamente; nenhum cliente fixou um modelo específico pelo nome.",
    "requestsHintTypes": "{chat} solicitações de chat e {embedding} de embeddings.",
    "rangeLabel24h": "24 horas",
    "rangeLabel7d": "7 dias",
    "rangeLabel30d": "30 dias",
    "rangeLabel90d": "90 dias",
    "spanDays": "{count} dias",
    "spanHours": "{count} horas",
    "latencyMs": "Latência (ms)",
    "latency": "Latência",
    "pinned": "Fixado",
    "inTokens": "Tokens de entrada",
    "outTokens": "Tokens de saída",
    "saved": "Economizado",
    "message": "Mensagem",
    "time": "Hora",
    "perModelBreakdown": "Detalhamento por modelo",
    "usageByKey": "Uso por chave",
    "keyColumn": "Chave",
    "keyLabelFallback": "Chave nº {id}",
    "errorsByProvider": "Erros por provedor",
    "recentErrors": "Erros recentes",
    "noErrors": "Sem erros",
    "recentCalls": "Chamadas recentes",
    "clientIp": "IP do cliente",
    "clientAgent": "Aplicativo cliente",
    "requestedModelHint": "Solicitado {model}, servido por fallback"
  },
  "playground": {
    "title": "Playground",
    "description": "Envie uma conclusão de chat pelo roteador e veja qual provedor a atende.",
    "autoModel": "Auto (cadeia de fallback)",
    "fusionModel": "Fusão (síntese multimodelo)",
    "send": "Enviar",
    "sending": "Enviando…",
    "clear": "Limpar",
    "inputPlaceholder": "Digite uma mensagem… (⏎ para enviar, ⇧⏎ para nova linha)",
    "emptyTitle": "Envie uma mensagem para começar.",
    "emptyDescription": "Usando {model}. Troque de modelo no seletor acima.",
    "noModels": "Ainda não há modelos. Adicione uma chave de API na página Chaves para preencher esta lista.",
    "copyReply": "Copiar resposta",
    "fallback": "fallback",
    "fallbacks": "fallbacks",
    "fusionPanel": "Painel",
    "fusionJudge": "Juiz",
    "fusionTrace": "{count} respostas de modelos",
    "fusionFailed": "sem resposta",
    "fusionJudgeSynth": "sintetizou a resposta final",
    "errorPrefix": "Erro:",
    "errorTitle": "A solicitação falhou",
    "selectModel": "Selecionar modelo",
    "searchModels": "Buscar modelos…",
    "noModelsFound": "Nenhum modelo encontrado",
    "systemPromptLabel": "Prompt do sistema",
    "systemPromptPlaceholder": "Opcional. Enviado como uma mensagem de sistema antes do seu chat."
  },
  "embeddings": {
    "title": "Modelos",
    "description": "Os embeddings fazem failover apenas dentro de uma mesma família: o mesmo modelo servido por outro provedor. Vetores de modelos diferentes são incompatíveis, então o roteador nunca troca de modelo sem você saber.",
    "defaultBadge": "Padrão · auto",
    "makeDefault": "Definir como padrão",
    "moveUp": "Mover para cima",
    "moveDown": "Mover para baixo",
    "usageToday": "{count} sol. hoje",
    "usageMonth": "{count} tok este mês",
    "autoDescription": "model: \"auto\" em POST /v1/embeddings roteia para a família padrão. Nomear uma família (ou um id de modelo de provedor) fixa essa família; os provedores dentro dela são tentados em ordem.",
    "unsavedChanges": "Alterações não salvas",
    "saveChanges": "Salvar alterações",
    "savingChanges": "Salvando…",
    "tokMax": "{tokens} tok máx.",
    "emptyTitle": "Ainda sem modelos de embeddings",
    "emptyDesc": "As famílias de embeddings aparecem aqui quando você adiciona uma chave de provedor com suporte a embeddings.",
    "dragToReorder": "Arraste para reordenar o provedor"
  },
  "fusion": {
    "title": "Fusão",
    "description": "Um painel de modelos responde em paralelo e, em seguida, um juiz sintetiza uma resposta mais forte. Use-a chamando a API com o modelo \"fusion\".",
    "panelSource": "Origem do painel",
    "panelSourceHelp": "De onde vêm os modelos do painel quando uma requisição não especifica os seus.",
    "mode": {
      "auto": "Auto (cadeia de fallback)",
      "autoHelp": "Escolhe um conjunto diverso de modelos da sua cadeia de fallback, ordenados pela sua estratégia de roteamento ativa.",
      "explicit": "Painel explícito",
      "explicitHelp": "Sempre usar os modelos específicos que você escolher abaixo."
    },
    "panelModels": "Modelos do painel",
    "selectedCount": "{count} de {max} selecionados",
    "noModels": "Nenhum modelo conectado ainda. Adicione uma chave de API e depois ative modelos na cadeia de fallback.",
    "panelSize": "Tamanho do painel",
    "panelSizeHelp": "Quantos modelos diversos selecionar automaticamente (1–{max}).",
    "judge": "Modelo juiz",
    "judgeHelp": "O modelo que sintetiza as respostas do painel em uma só. \"Auto\" usa o seu melhor modelo disponível.",
    "judgeAuto": "Auto (melhor disponível)",
    "strategy": "Estratégia",
    "strategySynthesize": "Síntese: combina o painel em uma única resposta",
    "strategyBestOf": "Melhor resposta: retorna a resposta mais forte (sem chamar o juiz)",
    "strategySynthesizeShort": "Síntese",
    "strategyBestOfShort": "Melhor resposta",
    "exposePanel": "Expor detalhes do painel",
    "exposePanelHelp": "Anexa a resposta de cada modelo e os metadados do juiz em um campo x_fusion na resposta.",
    "howToUse": "Como usar",
    "howToUseHelp": "Envie uma requisição de chat normal com o modelo \"fusion\". Estas configurações são o padrão; qualquer requisição pode sobrescrevê-las com um campo \"fusion\".",
    "unsavedChanges": "Alterações não salvas",
    "save": "Salvar"
  },
  "premium": {
    "title": "Premium",
    "description": "O catálogo de modelos ao vivo, em todos os seus dispositivos.",
    "loading": "Carregando…",
    "checkForUpdates": "Verificar atualizações",
    "syncing": "Sincronizando…",
    "catalogFeed": "Feed do catálogo",
    "liveFeed": "Feed ao vivo",
    "monthlySnapshot": "Instantâneo mensal",
    "lastChecked": "Última verificação: {when}",
    "liveDescription": "Novos modelos gratuitos, mudanças de cota e correções chegam aqui poucas horas após serem lançados. O aplicativo verifica automaticamente duas vezes por dia; nada a fazer.",
    "snapshotDescription": "Nível gratuito: o catálogo é atualizado a partir de um instantâneo mensal, verificado automaticamente duas vezes por dia. O Premium muda isso para o feed ao vivo, atualizado a cada 2 a 3 dias.",
    "lastSyncProblem": "Problema na última sincronização: {error}",
    "license": "Licença",
    "planAnnual": "Premium Anual",
    "planLifetime": "Premium Vitalício",
    "expired": "Expirada",
    "inactive": "Inativa",
    "lifetimeNote": "Licença vitalícia: nunca expira.",
    "renewsOn": "Renova em {date}.",
    "willNotRenew": "Não será renovada. Premium até {date}; depois, esta instalação volta para o catálogo mensal gratuito.",
    "keyInactive": "Esta chave não está mais ativa. O aplicativo continua funcionando com o catálogo mensal gratuito.",
    "manageSubscription": "Gerenciar assinatura",
    "openingPortal": "Abrindo…",
    "removeKey": "Remover a chave deste dispositivo",
    "manageHint": "\"Gerenciar assinatura\" abre o portal de faturamento da Stripe: cancelar, atualizar seu cartão ou baixar faturas. Remover a chave apenas desativa este dispositivo; sua compra permanece intacta.",
    "licenseKey": "Chave de licença",
    "licenseKeyPlaceholder": "fla_XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
    "activate": "Ativar",
    "activating": "Ativando…",
    "keyHint": "Sua chave está no e-mail de compra e na página pós-pagamento. Perdeu?",
    "recoverKey": "Recupere-a no site",
    "upsellTitle": "Vá para o ao vivo por US$ 19 por ano",
    "upsellDescription": "Novos modelos gratuitos no momento em que existem, em vez de 30 dias depois. Uma chave, todos os dispositivos. Cancele quando quiser; o roteador continua gratuito para sempre.",
    "goPremium": "Assinar o Premium",
    "bundled": "incluído",
    "planGeneric": "Premium"
  },
  "languages": {
    "en": "English",
    "zh-CN": "中文 (简体)",
    "fr": "Français",
    "es": "Español",
    "pt-BR": "Português (Brasil)",
    "it": "Italiano"
  },
  "errors": {
    "boundaryTitle": "Algo deu errado",
    "boundaryDescription": "O painel encontrou um erro inesperado. Seus dados estão seguros. Tente novamente ou volte para a página de modelos.",
    "tryAgain": "Tentar novamente",
    "goHome": "Voltar aos modelos"
  },
  "notFound": {
    "title": "Página não encontrada",
    "description": "Esta página não existe ou pode ter sido movida."
  },
  "setup": {
    "title": "Primeiros passos",
    "subtitle": "Três passos para rotear sua primeira solicitação.",
    "progress": "{done} de {total}",
    "step1Title": "Adicione uma chave de provedor",
    "step1Desc": "Conecte pelo menos uma conta de provedor. Chaves gratuitas funcionam.",
    "step1Cta": "Adicionar chaves",
    "step2Title": "Envie uma solicitação de teste",
    "step2Desc": "Escolha qualquer modelo no Playground e diga olá.",
    "step2Cta": "Abrir Playground",
    "step3Title": "Conecte seu aplicativo",
    "step3Desc": "Use sua chave de API unificada com qualquer cliente compatível com OpenAI.",
    "copyKey": "Copiar chave de API",
    "copyUrl": "Copiar URL base",
    "copiedKey": "Chave de API copiada para a área de transferência",
    "copiedUrl": "URL base copiada para a área de transferência"
  },
  "palette": {
    "title": "Paleta de comandos",
    "placeholder": "Buscar páginas, modelos, ações…",
    "empty": "Sem resultados",
    "groupPages": "Páginas",
    "groupActions": "Ações",
    "groupModels": "Modelos",
    "toggleTheme": "Alternar modo escuro"
  },
  "penaltyInspector": {
    "title": "Pressão do roteador",
    "subtitle": "Penalidades, cooldowns e falhas dos últimos {minutes} min",
    "rowCount": "{count} ativos",
    "offChain": "fora da cadeia",
    "penaltyValue": "Penalidade {value}",
    "factor": "pontuação x{factor}",
    "noCooldown": "Sem cooldown",
    "cooldownChip": "{key} - {time}",
    "errorsHeading": "{count} erros recentes",
    "noRecentErrors": "Nenhum erro recente",
    "noKey": "sem chave",
    "reasons": {
      "penalty": "penalizado",
      "cooldown": "cooldown",
      "recent_errors": "falhando"
    }
  },
  "validation": {
    "required": "Obrigatório",
    "url": "Insira uma URL válida começando com http:// ou https://",
    "email": "Insira um endereço de e-mail válido",
    "passwordMin": "Pelo menos {min} caracteres"
  }
}
