From fda0fc902e70b7eebafe80f39b57c2f7da6b4da7 Mon Sep 17 00:00:00 2001 From: Felipe Almeman <4226997+zhiru@users.noreply.github.com> Date: Sat, 6 Jun 2026 13:41:15 -0300 Subject: [PATCH] chore(i18n): add message keys for proxy UI + vscode/ollama endpoint (#3307) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Integrated into release/v3.8.13 — i18n message keys for proxy UI + vscode/ollama --- src/i18n/messages/en.json | 58 ++++++++++++++++++++++++++++++++-- src/i18n/messages/pt-BR.json | 60 +++++++++++++++++++++++++++++++++--- 2 files changed, 111 insertions(+), 7 deletions(-) diff --git a/src/i18n/messages/en.json b/src/i18n/messages/en.json index 8864863613..717960ac33 100644 --- a/src/i18n/messages/en.json +++ b/src/i18n/messages/en.json @@ -3052,6 +3052,15 @@ "apiEndpointsSearchPlaceholder": "Search endpoints...", "apiEndpointsRequiresAuth": "Requires auth", "apiEndpointsNoMatch": "No endpoints match your filter", + "vscodeAliasTitle": "VS Code Token Alias", + "vscodeAliasDescriptionReady": "Ready-to-paste compatibility URLs using the /api/v1/vscode/TOKEN/... endpoint.", + "vscodeAliasDescriptionError": "Showing placeholder URLs because CLI keys could not be loaded in this session.", + "vscodeAliasDescriptionLoading": "Loading CLI keys. Placeholder URLs are shown until a key is available.", + "vscodeAliasDescriptionPlaceholder": "Showing placeholder URLs. Create or activate an API key in CLI Tools to replace TOKEN.", + "vscodeAliasManage": "CLI Tools", + "vscodeAliasBaseLabel": "VS Code base", + "vscodeAliasModelsLabel": "VS Code models", + "vscodeAliasChatLabel": "VS Code chat", "localServer": "Local Server", "cloudOmniroute": "Cloud OmniRoute", "copyUrl": "Copy URL", @@ -4919,8 +4928,53 @@ "evictions": "Evictions", "loadingCacheStats": "Loading cache stats…", "globalProxy": "Global Proxy", - "globalProxyDesc": "Configure a global outbound proxy for all API calls. Individual providers, combos, and keys can override this.", - "noGlobalProxy": "No global proxy configured", + "proxyPool": "Proxy Pool", + "freePool": "Free Pool", + "proxyDocumentation": "Proxy Documentation", + "proxyGlobalConfigTab": "Global", + "proxyPoolTab": "Proxy Pool", + "freePoolTab": "Free Pool", + "proxyDocumentationTab": "Documentation", + "proxyDocumentationScopeTitle": "Proxy scope resolution", + "proxyDocumentationScopeDescBefore": "OmniRoute resolves the outbound proxy in priority order: ", + "proxyDocumentationScopeOrder": "combo → account → provider → global", + "proxyDocumentationScopeDescAfter": ". The most specific scope wins.", + "proxyDocumentationAddTitle": "Adding a custom proxy", + "proxyDocumentationAddDescBefore": "Go to the ", + "proxyDocumentationAddDescMiddle": " tab → click ", + "proxyDocumentationAddCta": "+ Add proxy", + "proxyDocumentationAddDescAfter": ". Fill in type (http/https/socks5), host, and port. Optionally assign it to a scope.", + "proxyDocumentationBulkTitle": "Bulk import format", + "proxyDocumentationBulkDesc": "Pipe-delimited fields:", + "proxyDocumentationSocks5DescBefore": "SOCKS5 proxies are disabled by default. Set", + "proxyDocumentationFreePoolDesc": "The Free Pool tab aggregates proxies from 1proxy, Proxifly, and IPLocate. Use ⊕ to test and promote a proxy to your registry. Only proxies that pass the connectivity test are added.", + "proxyDocumentationVercelRelayDescBefore": "The Vercel Relay is an outbound edge relay — not an inbound tunnel. Deploying one sends LLM API calls through Vercel's dynamic IPs, bypassing datacenter geo-blocks and rate limits. The relay is protected by a generated secret header", + "proxyDocumentationVercelRelayDescAfter": "Your Vercel token is used only during deploy and is never stored.", + "vercelRelayTokenRequired": "Token is required", + "vercelRelayDeployFailed": "Deploy failed", + "vercelRelayTokenHint": "Token is used only during deploy — never stored.", + "proxyFreePoolFilterProtocol": "Filter by protocol", + "proxyFreePoolProtocol": "Protocol", + "proxyFreePoolCountryPlaceholder": "Country (e.g. US)", + "proxyFreePoolFilterCountry": "Filter by country", + "proxyFreePoolMinQualityPlaceholder": "Min quality", + "proxyFreePoolMinQualityLabel": "Minimum quality score", + "proxyFreePoolSyncAll": "Sync All", + "proxyFreePoolTotal": "Total", + "proxyFreePoolInPool": "In pool", + "proxyFreePoolAvgQuality": "Avg quality", + "proxyFreePoolSelected": "{count} selected", + "proxyFreePoolAddSelected": "Add selected to pool", + "proxyFreePoolAddVisible": "Add all visible to pool", + "proxyFreePoolSource": "Source", + "proxyFreePoolHostPort": "Host:Port", + "proxyFreePoolType": "Type", + "proxyFreePoolCountry": "Country", + "proxyFreePoolQuality": "Quality", + "proxyFreePoolLatency": "Latency", + "proxyFreePoolEmpty": "No proxies found. Click Sync All to fetch from sources.", + "close": "Close", + "cancel": "Cancel", "globalLabel": "Global", "configure": "Configure", "globalSystemPrompt": "Global System Prompt", diff --git a/src/i18n/messages/pt-BR.json b/src/i18n/messages/pt-BR.json index c22aa6c8e6..b7783e797a 100644 --- a/src/i18n/messages/pt-BR.json +++ b/src/i18n/messages/pt-BR.json @@ -3159,7 +3159,16 @@ "tierAlwaysProtected": "Sempre Protegido", "tierPublic": "Público", "hideInternal": "Ocultar Internos", - "showInternal": "Mostrar Internos" + "showInternal": "Mostrar Internos", + "vscodeAliasTitle": "Alias de Token do VS Code", + "vscodeAliasDescriptionReady": "URLs de compatibilidade prontas para colar usando o endpoint /api/v1/vscode/TOKEN/... .", + "vscodeAliasDescriptionError": "Mostrando URLs com placeholder porque as chaves de CLI não puderam ser carregadas nesta sessão.", + "vscodeAliasDescriptionLoading": "Carregando chaves de CLI. As URLs com placeholder serão mostradas até que uma chave esteja disponível.", + "vscodeAliasDescriptionPlaceholder": "Mostrando URLs com placeholder. Crie ou ative uma chave de API em CLI Tools para substituir TOKEN.", + "vscodeAliasManage": "CLI Tools", + "vscodeAliasBaseLabel": "Base do VS Code", + "vscodeAliasModelsLabel": "Modelos do VS Code", + "vscodeAliasChatLabel": "Chat do VS Code" }, "endpointOptions": { "speech": "Speech", @@ -4635,7 +4644,6 @@ "proxySourceGlobal": "Global", "proxySourceProvider": "Provedor", "proxySourceKey": "Chave", - "proxyConfiguredBySource": "Proxy ({source}): {host}", "autoPriority": "Auto: {priority}", "proxy": "Proxy", "retestAuthentication": "Retestar autenticação", @@ -5330,7 +5338,7 @@ "title": "Compartilhamento de Cota", "description": "Compartilhe cotas de provedores entre API keys com limites %", "newPool": "Novo pool", - "betaTitle": "Beta — UI preview.", + "betaTitle": "Beta", "betaDescription": "A configuração é salva em localStorage (ainda não persistida no servidor). A aplicação dos caps por request ainda não está conectada ao pipeline da proxy. Esta tela permite desenhar e visualizar a divisão de cota; a aplicação real virá em uma próxima iteração com persistência no banco e interceptação na chamada upstream.", "kpiActivePools": "Pools ativos", "kpiKeysAllocated": "Keys alocadas", @@ -5452,7 +5460,6 @@ "endpointsAnthropicNote": "nativo Anthropic", "endpointsResponsesNote": "OpenAI Responses — codex/github", "endpointsWsNote": "WebSocket — somente codex", - "betaTitle": "Beta", "betaText": "O Quota Share está funcional, mas bugs são esperados. Encontrou um? Reporte, por favor.", "betaReportLink": "Abrir uma issue", "deleteGroup": "Excluir grupo", @@ -6775,7 +6782,50 @@ "proxyGlobalConfigTab": "Configuração Global", "proxyPoolTab": "Pool de Proxy", "freePoolTab": "Pool Gratuito", - "proxyDocumentationTab": "Documentação" + "proxyDocumentationTab": "Documentação", + "proxyPool": "Pool de Proxies", + "freePool": "Pool Gratuito", + "proxyDocumentation": "Documentação de Proxy", + "proxyDocumentationScopeTitle": "Resolução de escopo de proxy", + "proxyDocumentationScopeDescBefore": "O OmniRoute resolve o proxy de saída na seguinte ordem de prioridade: ", + "proxyDocumentationScopeOrder": "combo → conta → provedor → global", + "proxyDocumentationScopeDescAfter": ". O escopo mais específico vence.", + "proxyDocumentationAddTitle": "Adicionando um proxy personalizado", + "proxyDocumentationAddDescBefore": "Vá para a aba ", + "proxyDocumentationAddDescMiddle": " → clique em ", + "proxyDocumentationAddCta": "+ Adicionar proxy", + "proxyDocumentationAddDescAfter": ". Preencha tipo (http/https/socks5), host e porta. Opcionalmente, atribua-o a um escopo.", + "proxyDocumentationBulkTitle": "Formato de importação em massa", + "proxyDocumentationBulkDesc": "Campos delimitados por pipe:", + "proxyDocumentationSocks5DescBefore": "Proxies SOCKS5 vêm desativados por padrão. Defina", + "proxyDocumentationFreePoolDesc": "A aba Pool Gratuito agrega proxies do 1proxy, Proxifly e IPLocate. Use ⊕ para testar e promover um proxy ao seu registro. Somente proxies que passarem no teste de conectividade serão adicionados.", + "proxyDocumentationVercelRelayDescBefore": "O Vercel Relay é um relay de borda de saída, não um túnel de entrada. Fazer deploy dele envia chamadas de API de LLM pelos IPs dinâmicos da Vercel, contornando bloqueios geográficos de datacenter e limites de taxa. O relay é protegido por um header secreto gerado", + "proxyDocumentationVercelRelayDescAfter": "Seu token da Vercel é usado apenas durante o deploy e nunca é armazenado.", + "vercelRelayTokenRequired": "Token obrigatório", + "vercelRelayDeployFailed": "Falha no deploy", + "vercelRelayTokenHint": "O token é usado apenas durante o deploy e nunca é armazenado.", + "proxyFreePoolFilterProtocol": "Filtrar por protocolo", + "proxyFreePoolProtocol": "Protocolo", + "proxyFreePoolCountryPlaceholder": "País (ex.: US)", + "proxyFreePoolFilterCountry": "Filtrar por país", + "proxyFreePoolMinQualityPlaceholder": "Qualidade mín.", + "proxyFreePoolMinQualityLabel": "Pontuação mínima de qualidade", + "proxyFreePoolSyncAll": "Sincronizar tudo", + "proxyFreePoolTotal": "Total", + "proxyFreePoolInPool": "No pool", + "proxyFreePoolAvgQuality": "Qualidade média", + "proxyFreePoolSelected": "{count} selecionados", + "proxyFreePoolAddSelected": "Adicionar selecionados ao pool", + "proxyFreePoolAddVisible": "Adicionar todos os visíveis ao pool", + "proxyFreePoolSource": "Origem", + "proxyFreePoolHostPort": "Host:Porta", + "proxyFreePoolType": "Tipo", + "proxyFreePoolCountry": "País", + "proxyFreePoolQuality": "Qualidade", + "proxyFreePoolLatency": "Latência", + "proxyFreePoolEmpty": "Nenhum proxy encontrado. Clique em Sincronizar tudo para buscar nas fontes.", + "close": "Fechar", + "cancel": "Cancelar" }, "sidebar": { "home": "Início",