chore(i18n): extend quotaShare + add quotaPlans namespace (pt-BR + en) (B/F9)

This commit is contained in:
diegosouzapw
2026-05-28 08:25:00 -03:00
parent 4cb50a733e
commit c21bfd5a36
2 changed files with 100 additions and 2 deletions

View File

@@ -836,6 +836,7 @@
"analyticsCompression": "Compression",
"costsBudget": "Budget",
"costsQuotaShare": "Quota Sharing",
"costsQuotaPlans": "Plans & Quotas",
"costsPricing": "Pricing",
"logsProxy": "Proxy Logs",
"logsConsole": "Console",
@@ -903,6 +904,7 @@
"costsPricingSubtitle": "Per-model pricing rules",
"costsBudgetSubtitle": "Budget limits",
"costsQuotaShareSubtitle": "Share provider quotas across keys",
"costsQuotaPlansSubtitle": "Configure plans by provider",
"auditLogSubtitle": "Authorization audit",
"auditMcpSubtitle": "MCP server audit",
"auditA2aSubtitle": "A2A protocol audit",
@@ -7299,7 +7301,54 @@
"betaConfigSavedSuffix": "(not yet persisted on the server). Per-request cap enforcement is not yet wired into the proxy pipeline. This screen lets you design and visualize the quota split; real enforcement will land in a future iteration with DB persistence and upstream call interception.",
"policyLabel": "Policy:",
"resetIn": "reset in",
"quotaTotal": "total"
"quotaTotal": "total",
"conceptTitle": "How Quota Share works",
"conceptIntro": "Quota Share divides a provider's quota among multiple API keys using work-conserving fair-share: each key receives a proportional slice but can borrow from the free balance without exceeding the global cap.",
"conceptFairShare": "Fair-share: each key receives quota proportional to its configured weight",
"conceptBorrowing": "Borrowing: keys can consume free balance from others without breaching the cap",
"conceptGlobalCap": "Hard global cap: the provider's absolute limit is never exceeded",
"conceptWindows": "Windows: 5h, hourly, daily, weekly, monthly — each tracked independently",
"burnRateTitle": "Burn rate",
"burnRateExhaustsIn": "Exhausts in",
"dimensionResetIn": "Resets in",
"realConsumedColumn": "Consumed",
"deficitColumn": "Deficit",
"borrowingIndicator": "borrowing",
"migratedFromLocalStorageNotice": "Pools successfully migrated from localStorage.",
"policyCapAbsoluteLabel": "Absolute cap",
"policyCapAbsolutePlaceholder": "Numeric limit (optional)",
"multiDimensionLabel": "Multi-dimension"
},
"quotaPlans": {
"title": "Plans & Quotas",
"description": "Configure quota plans per provider — dimensions (%, requests, tokens, $) and time windows",
"providerLabel": "Provider / Connection",
"detectedPlanLabel": "Detected plan",
"manualPlanLabel": "Manual override",
"unconfiguredLabel": "Not configured — manual required",
"dimensionLabel": "Dimensions",
"addDimension": "Add dimension",
"removeDimension": "Remove",
"limitLabel": "Limit",
"unitOptions": {
"percent": "%",
"requests": "requests",
"tokens": "tokens",
"usd": "USD ($)"
},
"windowOptions": {
"5h": "5 hours",
"hourly": "Hourly",
"daily": "Daily",
"weekly": "Weekly",
"monthly": "Monthly"
},
"useCatalogButton": "Use catalog",
"saveOverrideButton": "Save override",
"revertToCatalogButton": "Revert to catalog",
"unknownProviderNotice": "Select a provider on the left to configure its quota plan.",
"catalogTitle": "Known catalog",
"catalogDescription": "Automatically detected plans for the following providers:"
},
"activity": {
"title": "Activity",

View File

@@ -836,6 +836,7 @@
"analyticsCompression": "Compression",
"costsBudget": "Budget",
"costsQuotaShare": "Compartilhamento de Cota",
"costsQuotaPlans": "Planos & Cotas",
"costsPricing": "Pricing",
"logsProxy": "Proxy Logs",
"logsConsole": "Console",
@@ -903,6 +904,7 @@
"costsPricingSubtitle": "Regras de preço por modelo",
"costsBudgetSubtitle": "Limites de orçamento",
"costsQuotaShareSubtitle": "Compartilhe cotas de provedor entre chaves",
"costsQuotaPlansSubtitle": "Configurar planos por provider",
"auditLogSubtitle": "Auditoria de autorização",
"auditMcpSubtitle": "Auditoria do servidor MCP",
"auditA2aSubtitle": "Auditoria do protocolo A2A",
@@ -7289,7 +7291,54 @@
"betaConfigSavedSuffix": "(ainda não persistido no servidor). A aplicação do limite por solicitação ainda não está conectada ao pipeline do proxy. Esta tela permite desenhar e visualizar a divisão de cotas; a aplicação real chegará em uma iteração futura com persistência de banco de dados e interceptação de chamadas upstream.",
"policyLabel": "Política:",
"resetIn": "redefinir em",
"quotaTotal": "total"
"quotaTotal": "total",
"conceptTitle": "Como funciona o Quota Share",
"conceptIntro": "O Quota Share divide a cota de um provider entre múltiplas API keys usando fair-share work-conserving: cada key recebe uma fatia proporcional, mas pode tomar emprestado do saldo livre sem estourar o teto global.",
"conceptFairShare": "Fair-share: cada key recebe proporcionalmente ao peso configurado",
"conceptBorrowing": "Empréstimo: keys podem usar saldo livre de outras sem ultrapassar o teto",
"conceptGlobalCap": "Teto intransponível: o cap absoluto do provider nunca é excedido",
"conceptWindows": "Janelas: 5h, horária, diária, semanal, mensal — cada uma rastreada independentemente",
"burnRateTitle": "Taxa de consumo",
"burnRateExhaustsIn": "Esgota em",
"dimensionResetIn": "Reset em",
"realConsumedColumn": "Consumido",
"deficitColumn": "Déficit",
"borrowingIndicator": "empréstimo",
"migratedFromLocalStorageNotice": "Pools migrados do localStorage com sucesso.",
"policyCapAbsoluteLabel": "Cap absoluto",
"policyCapAbsolutePlaceholder": "Limite numérico (opcional)",
"multiDimensionLabel": "Multi-dimensão"
},
"quotaPlans": {
"title": "Planos & Cotas",
"description": "Configure os planos de cota por provider — dimensões (%, requests, tokens, $) e janelas de tempo",
"providerLabel": "Provider / Conexão",
"detectedPlanLabel": "Plano detectado",
"manualPlanLabel": "Override manual",
"unconfiguredLabel": "Não configurado — manual obrigatório",
"dimensionLabel": "Dimensões",
"addDimension": "Adicionar dimensão",
"removeDimension": "Remover",
"limitLabel": "Limite",
"unitOptions": {
"percent": "%",
"requests": "requests",
"tokens": "tokens",
"usd": "USD ($)"
},
"windowOptions": {
"5h": "5 horas",
"hourly": "Por hora",
"daily": "Diária",
"weekly": "Semanal",
"monthly": "Mensal"
},
"useCatalogButton": "Usar catálogo",
"saveOverrideButton": "Salvar override",
"revertToCatalogButton": "Reverter para catálogo",
"unknownProviderNotice": "Selecione um provider à esquerda para configurar o plano de cota.",
"catalogTitle": "Catálogo conhecido",
"catalogDescription": "Planos automaticamente detectados para os seguintes providers:"
},
"activity": {
"title": "Atividade",