commons-proxy 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +757 -0
- package/bin/cli.js +146 -0
- package/package.json +97 -0
- package/public/Complaint Details.pdf +0 -0
- package/public/Cyber Crime Portal.pdf +0 -0
- package/public/app.js +229 -0
- package/public/css/src/input.css +523 -0
- package/public/css/style.css +1 -0
- package/public/favicon.png +0 -0
- package/public/index.html +549 -0
- package/public/js/components/account-manager.js +356 -0
- package/public/js/components/add-account-modal.js +414 -0
- package/public/js/components/claude-config.js +420 -0
- package/public/js/components/dashboard/charts.js +605 -0
- package/public/js/components/dashboard/filters.js +362 -0
- package/public/js/components/dashboard/stats.js +110 -0
- package/public/js/components/dashboard.js +236 -0
- package/public/js/components/logs-viewer.js +100 -0
- package/public/js/components/models.js +36 -0
- package/public/js/components/server-config.js +349 -0
- package/public/js/config/constants.js +102 -0
- package/public/js/data-store.js +375 -0
- package/public/js/settings-store.js +58 -0
- package/public/js/store.js +99 -0
- package/public/js/translations/en.js +367 -0
- package/public/js/translations/id.js +412 -0
- package/public/js/translations/pt.js +308 -0
- package/public/js/translations/tr.js +358 -0
- package/public/js/translations/zh.js +373 -0
- package/public/js/utils/account-actions.js +189 -0
- package/public/js/utils/error-handler.js +96 -0
- package/public/js/utils/model-config.js +42 -0
- package/public/js/utils/ui-logger.js +143 -0
- package/public/js/utils/validators.js +77 -0
- package/public/js/utils.js +69 -0
- package/public/proxy-server-64.png +0 -0
- package/public/views/accounts.html +361 -0
- package/public/views/dashboard.html +484 -0
- package/public/views/logs.html +97 -0
- package/public/views/models.html +331 -0
- package/public/views/settings.html +1327 -0
- package/src/account-manager/credentials.js +378 -0
- package/src/account-manager/index.js +462 -0
- package/src/account-manager/onboarding.js +112 -0
- package/src/account-manager/rate-limits.js +369 -0
- package/src/account-manager/storage.js +160 -0
- package/src/account-manager/strategies/base-strategy.js +109 -0
- package/src/account-manager/strategies/hybrid-strategy.js +339 -0
- package/src/account-manager/strategies/index.js +79 -0
- package/src/account-manager/strategies/round-robin-strategy.js +76 -0
- package/src/account-manager/strategies/sticky-strategy.js +138 -0
- package/src/account-manager/strategies/trackers/health-tracker.js +162 -0
- package/src/account-manager/strategies/trackers/index.js +9 -0
- package/src/account-manager/strategies/trackers/quota-tracker.js +120 -0
- package/src/account-manager/strategies/trackers/token-bucket-tracker.js +155 -0
- package/src/auth/database.js +169 -0
- package/src/auth/oauth.js +548 -0
- package/src/auth/token-extractor.js +117 -0
- package/src/cli/accounts.js +648 -0
- package/src/cloudcode/index.js +29 -0
- package/src/cloudcode/message-handler.js +510 -0
- package/src/cloudcode/model-api.js +248 -0
- package/src/cloudcode/rate-limit-parser.js +235 -0
- package/src/cloudcode/request-builder.js +93 -0
- package/src/cloudcode/session-manager.js +47 -0
- package/src/cloudcode/sse-parser.js +121 -0
- package/src/cloudcode/sse-streamer.js +293 -0
- package/src/cloudcode/streaming-handler.js +615 -0
- package/src/config.js +125 -0
- package/src/constants.js +407 -0
- package/src/errors.js +242 -0
- package/src/fallback-config.js +29 -0
- package/src/format/content-converter.js +193 -0
- package/src/format/index.js +20 -0
- package/src/format/request-converter.js +255 -0
- package/src/format/response-converter.js +120 -0
- package/src/format/schema-sanitizer.js +673 -0
- package/src/format/signature-cache.js +88 -0
- package/src/format/thinking-utils.js +648 -0
- package/src/index.js +148 -0
- package/src/modules/usage-stats.js +205 -0
- package/src/providers/anthropic-provider.js +258 -0
- package/src/providers/base-provider.js +157 -0
- package/src/providers/cloudcode.js +94 -0
- package/src/providers/copilot.js +399 -0
- package/src/providers/github-provider.js +287 -0
- package/src/providers/google-provider.js +192 -0
- package/src/providers/index.js +211 -0
- package/src/providers/openai-compatible.js +265 -0
- package/src/providers/openai-provider.js +271 -0
- package/src/providers/openrouter-provider.js +325 -0
- package/src/providers/setup.js +83 -0
- package/src/server.js +870 -0
- package/src/utils/claude-config.js +245 -0
- package/src/utils/helpers.js +51 -0
- package/src/utils/logger.js +142 -0
- package/src/utils/native-module-helper.js +162 -0
- package/src/webui/index.js +1134 -0
|
@@ -0,0 +1,308 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Portuguese (PT-BR) Translations
|
|
3
|
+
* Based on contribution by Pedro Farias in PR #108
|
|
4
|
+
*/
|
|
5
|
+
window.translations = window.translations || {};
|
|
6
|
+
window.translations.pt = {
|
|
7
|
+
dashboard: "Painel",
|
|
8
|
+
models: "Modelos",
|
|
9
|
+
accounts: "Contas",
|
|
10
|
+
logs: "Logs",
|
|
11
|
+
settings: "Configurações",
|
|
12
|
+
online: "ONLINE",
|
|
13
|
+
offline: "OFFLINE",
|
|
14
|
+
totalAccounts: "TOTAL DE CONTAS",
|
|
15
|
+
active: "ATIVO",
|
|
16
|
+
operational: "Operacional",
|
|
17
|
+
rateLimited: "TAXA LIMITADA",
|
|
18
|
+
quotasDepleted: "{count}/{total} Cotas Esgotadas",
|
|
19
|
+
quotasDepletedTitle: "COTAS ESGOTADAS",
|
|
20
|
+
outOfTracked: "De {total} Rastreados",
|
|
21
|
+
cooldown: "Resfriamento",
|
|
22
|
+
searchPlaceholder: "Buscar modelos...",
|
|
23
|
+
allAccounts: "Todas as Contas",
|
|
24
|
+
stat: "ESTATÍSTICA",
|
|
25
|
+
modelIdentity: "IDENTIDADE DO MODELO",
|
|
26
|
+
globalQuota: "COTA GLOBAL",
|
|
27
|
+
nextReset: "PRÓXIMO RESET",
|
|
28
|
+
distribution: "DISTRIBUIÇÃO DE CONTAS",
|
|
29
|
+
systemConfig: "Configuração do Sistema",
|
|
30
|
+
language: "Idioma",
|
|
31
|
+
pollingInterval: "Intervalo de Atualização",
|
|
32
|
+
maxDisplayLogs: "Máximo de Logs Exibidos",
|
|
33
|
+
showExhausted: "Mostrar Modelos Esgotados",
|
|
34
|
+
showExhaustedDesc: "Exibir modelos mesmo se tiverem 0% de cota restante.",
|
|
35
|
+
compactMode: "Modo Compacto",
|
|
36
|
+
compactModeDesc: "Reduzir espaçamento nas tabelas para maior densidade de informação.",
|
|
37
|
+
saveChanges: "Salvar Alterações",
|
|
38
|
+
autoScroll: "Rolagem Automática",
|
|
39
|
+
clearLogs: "Limpar Logs",
|
|
40
|
+
accountManagement: "Gerenciamento de Contas",
|
|
41
|
+
manageTokens: "Gerenciar tokens e estados de autorização de Contas Google",
|
|
42
|
+
addAccount: "Adicionar Conta",
|
|
43
|
+
status: "STATUS",
|
|
44
|
+
enabled: "HABILITADO",
|
|
45
|
+
health: "SAÚDE",
|
|
46
|
+
accountEmail: "CONTA (EMAIL)",
|
|
47
|
+
source: "FONTE",
|
|
48
|
+
projectId: "ID DO PROJETO",
|
|
49
|
+
sessionState: "ESTADO DA SESSÃO",
|
|
50
|
+
operations: "OPERAÇÕES",
|
|
51
|
+
delete: "Excluir",
|
|
52
|
+
confirmDelete: "Tem certeza de que deseja remover esta conta?",
|
|
53
|
+
cannotDeleteDatabase: "Não é possível excluir: Esta conta é do banco de dados CommonsProxy (somente leitura)",
|
|
54
|
+
connectGoogle: "Conectar Conta Google",
|
|
55
|
+
reauthenticated: "reautenticado",
|
|
56
|
+
added: "adicionado",
|
|
57
|
+
successfully: "com sucesso",
|
|
58
|
+
accountAddedSuccess: "Conta adicionada com sucesso",
|
|
59
|
+
accountReauthSuccess: "Conta reautenticada com sucesso",
|
|
60
|
+
failedToGetAuthUrl: "Falha ao obter URL de autenticação",
|
|
61
|
+
failedToStartOAuth: "Falha ao iniciar fluxo OAuth",
|
|
62
|
+
oauthInProgress: "OAuth em andamento. Por favor, conclua a autenticação na janela popup...",
|
|
63
|
+
family: "Família",
|
|
64
|
+
model: "Modelo",
|
|
65
|
+
activeSuffix: "Ativo",
|
|
66
|
+
// Tabs
|
|
67
|
+
tabInterface: "Interface",
|
|
68
|
+
tabClaude: "Claude CLI",
|
|
69
|
+
tabModels: "Modelos",
|
|
70
|
+
tabServer: "Configurações do Servidor",
|
|
71
|
+
// Dashboard
|
|
72
|
+
linkedAccounts: "Contas Vinculadas",
|
|
73
|
+
noSignal: "SEM SINAL DETECTADO",
|
|
74
|
+
establishingUplink: "ESTABELECENDO LINK...",
|
|
75
|
+
goToAccounts: "Ir para Contas",
|
|
76
|
+
// Settings - Models
|
|
77
|
+
modelsDesc: "Configurar visibilidade, fixação e roteamento de requisições de modelos.",
|
|
78
|
+
modelsPageDesc: "Cota e status em tempo real para todos os modelos disponíveis.",
|
|
79
|
+
showHidden: "Mostrar Modelos Ocultos",
|
|
80
|
+
modelId: "ID do Modelo",
|
|
81
|
+
actions: "Ações",
|
|
82
|
+
pinToTop: "Fixar no topo",
|
|
83
|
+
toggleVisibility: "Alternar Visibilidade",
|
|
84
|
+
noModels: "NENHUM MODELO DETECTADO",
|
|
85
|
+
modelMappingHint: "Roteamento de modelo no servidor. Usuários do Claude Code: veja a aba 'Claude CLI' para configuração no cliente.",
|
|
86
|
+
modelMapping: "Mapeamento (ID do Modelo Alvo)",
|
|
87
|
+
// Settings - Claude
|
|
88
|
+
proxyConnection: "Conexão Proxy",
|
|
89
|
+
modelSelection: "Seleção de Modelo",
|
|
90
|
+
defaultModelAliases: "ALIASES DE MODELO PADRÃO",
|
|
91
|
+
opusAlias: "Alias Opus",
|
|
92
|
+
sonnetAlias: "Alias Sonnet",
|
|
93
|
+
haikuAlias: "Alias Haiku",
|
|
94
|
+
claudeSettingsAlertPrefix: "As configurações abaixo modificam diretamente",
|
|
95
|
+
claudeSettingsAlertSuffix: "Reinicie o Claude CLI para aplicar.",
|
|
96
|
+
applyToClaude: "Aplicar ao Claude CLI",
|
|
97
|
+
// Settings - Server
|
|
98
|
+
port: "Porta",
|
|
99
|
+
uiVersion: "Versão da UI",
|
|
100
|
+
debugMode: "Modo de Depuração",
|
|
101
|
+
environment: "Ambiente",
|
|
102
|
+
serverReadOnly: "Configurações gerenciadas via config.json. Reinicie o servidor para aplicar alterações.",
|
|
103
|
+
advancedSettings: "Configurações Avançadas",
|
|
104
|
+
reloadConfigTitle: "Recarregar Config de Contas",
|
|
105
|
+
reloadConfigDesc: "Forçar recarregamento de accounts.json do disco",
|
|
106
|
+
reload: "Recarregar",
|
|
107
|
+
// Config Specific
|
|
108
|
+
primaryModel: "Modelo Primário",
|
|
109
|
+
subAgentModel: "Modelo Sub-agente",
|
|
110
|
+
advancedOverrides: "Substituições de Modelo Padrão",
|
|
111
|
+
opusModel: "Modelo Opus",
|
|
112
|
+
sonnetModel: "Modelo Sonnet",
|
|
113
|
+
haikuModel: "Modelo Haiku",
|
|
114
|
+
authToken: "Token de Autenticação",
|
|
115
|
+
saveConfig: "Salvar nas configurações do Claude CLI",
|
|
116
|
+
envVar: "Env",
|
|
117
|
+
// New Keys
|
|
118
|
+
systemName: "COMMONSPROXY",
|
|
119
|
+
systemDesc: "SISTEMA DE PROXY CLAUDE",
|
|
120
|
+
connectGoogleDesc: "Conecte uma conta Google Workspace para aumentar seu limite de cota da API. A conta será usada para fazer proxy das requisições Claude via CommonsProxy.",
|
|
121
|
+
useCliCommand: "Usar Comando CLI",
|
|
122
|
+
close: "Fechar",
|
|
123
|
+
requestVolume: "Volume de Requisições",
|
|
124
|
+
filter: "Filtrar",
|
|
125
|
+
all: "Todos",
|
|
126
|
+
none: "Nenhum",
|
|
127
|
+
noDataTracked: "Nenhum dado rastreado ainda",
|
|
128
|
+
selectFamilies: "Selecione famílias para exibir",
|
|
129
|
+
selectModels: "Selecione modelos para exibir",
|
|
130
|
+
noLogsMatch: "Nenhum log corresponde ao filtro",
|
|
131
|
+
connecting: "CONECTANDO",
|
|
132
|
+
main: "Principal",
|
|
133
|
+
system: "Sistema",
|
|
134
|
+
refreshData: "Atualizar Dados",
|
|
135
|
+
connectionLost: "Conexão Perdida",
|
|
136
|
+
lastUpdated: "Última Atualização",
|
|
137
|
+
grepLogs: "grep logs...",
|
|
138
|
+
noMatchingModels: "Nenhum modelo correspondente",
|
|
139
|
+
typeToSearch: "Digite para buscar ou selecione...",
|
|
140
|
+
or: "OU",
|
|
141
|
+
refreshingAccount: "Atualizando {email}...",
|
|
142
|
+
refreshedAccount: "Atualizado {email}",
|
|
143
|
+
refreshFailed: "Falha na atualização",
|
|
144
|
+
accountToggled: "Conta {email} {status}",
|
|
145
|
+
toggleFailed: "Falha ao alternar",
|
|
146
|
+
reauthenticating: "Reautenticando {email}...",
|
|
147
|
+
authUrlFailed: "Falha ao obter URL de autenticação",
|
|
148
|
+
deletedAccount: "Excluído {email}",
|
|
149
|
+
deleteFailed: "Falha ao excluir",
|
|
150
|
+
accountsReloaded: "Contas recarregadas",
|
|
151
|
+
reloadFailed: "Falha ao recarregar",
|
|
152
|
+
claudeConfigSaved: "Configuração do Claude salva",
|
|
153
|
+
claudeConfigRestored: "Claude CLI restaurado para o padrão",
|
|
154
|
+
saveConfigFailed: "Falha ao salvar configuração",
|
|
155
|
+
restoreConfigFailed: "Falha ao restaurar configuração",
|
|
156
|
+
restoreDefault: "Restaurar Padrão",
|
|
157
|
+
confirmRestoreTitle: "Confirmar Restauração",
|
|
158
|
+
confirmRestoreMessage: "Tem certeza de que deseja restaurar o Claude CLI para as configurações padrão? Isso removerá a configuração de proxy.",
|
|
159
|
+
confirmRestore: "Confirmar Restauração",
|
|
160
|
+
claudeActive: "Claude Ativo",
|
|
161
|
+
claudeEmpty: "Claude Vazio",
|
|
162
|
+
geminiActive: "Gemini Ativo",
|
|
163
|
+
geminiEmpty: "Gemini Vazio",
|
|
164
|
+
synced: "SINCRONIZADO",
|
|
165
|
+
syncing: "SINCRONIZANDO...",
|
|
166
|
+
// Time range labels
|
|
167
|
+
last1Hour: "Última 1H",
|
|
168
|
+
last6Hours: "Últimas 6H",
|
|
169
|
+
last24Hours: "Últimas 24H",
|
|
170
|
+
last7Days: "Últimos 7D",
|
|
171
|
+
allTime: "Todo o Período",
|
|
172
|
+
groupBy: "Agrupar Por",
|
|
173
|
+
// Additional
|
|
174
|
+
reloading: "Recarregando...",
|
|
175
|
+
reloaded: "Recarregado",
|
|
176
|
+
lines: "linhas",
|
|
177
|
+
enabledSeeLogs: "Habilitado (Ver Logs)",
|
|
178
|
+
production: "Produção",
|
|
179
|
+
configSaved: "Configuração Salva",
|
|
180
|
+
enterPassword: "Digite a Senha da Web UI:",
|
|
181
|
+
ready: "PRONTO",
|
|
182
|
+
depleted: "Esgotado",
|
|
183
|
+
timeH: "H",
|
|
184
|
+
timeM: "M",
|
|
185
|
+
familyClaude: "Claude",
|
|
186
|
+
familyGemini: "Gemini",
|
|
187
|
+
familyOther: "Outro",
|
|
188
|
+
enabledStatus: "habilitado",
|
|
189
|
+
disabledStatus: "desabilitado",
|
|
190
|
+
logLevelInfo: "INFO",
|
|
191
|
+
logLevelSuccess: "SUCESSO",
|
|
192
|
+
logLevelWarn: "AVISO",
|
|
193
|
+
logLevelError: "ERRO",
|
|
194
|
+
totalColon: "Total:",
|
|
195
|
+
todayColon: "Hoje:",
|
|
196
|
+
hour1Colon: "1H:",
|
|
197
|
+
frequentModels: "Frequentes",
|
|
198
|
+
smartTitle: "Auto-selecionar os 5 modelos mais usados (24h)",
|
|
199
|
+
activeCount: "{count} Ativos",
|
|
200
|
+
allCaps: "TODOS",
|
|
201
|
+
claudeCaps: "CLAUDE",
|
|
202
|
+
geminiCaps: "GEMINI",
|
|
203
|
+
systemInfo: "Informações do Sistema",
|
|
204
|
+
refresh: "Atualizar",
|
|
205
|
+
runtimeConfig: "Configuração em Tempo de Execução",
|
|
206
|
+
debugDesc: "Habilitar log detalhado (Ver aba Logs)",
|
|
207
|
+
networkRetry: "Configurações de Retentativa de Rede",
|
|
208
|
+
maxRetries: "Máximo de Retentativas",
|
|
209
|
+
retryBaseDelay: "Atraso Base de Retentativa (ms)",
|
|
210
|
+
retryMaxDelay: "Atraso Máximo de Retentativa (ms)",
|
|
211
|
+
persistentSessions: "Sessões Persistentes",
|
|
212
|
+
persistTokenDesc: "Salvar sessões OAuth no disco para reinicializações mais rápidas",
|
|
213
|
+
rateLimiting: "Limitação de Taxa de Conta & Timeouts",
|
|
214
|
+
defaultCooldown: "Tempo de Resfriamento Padrão",
|
|
215
|
+
defaultCooldownDesc: "Resfriamento de fallback quando a API não fornece tempo de reset.",
|
|
216
|
+
maxWaitThreshold: "Limiar Máximo de Espera (Sticky)",
|
|
217
|
+
maxWaitDesc: "Tempo máximo para aguardar uma conta sticky resetar antes de trocar.",
|
|
218
|
+
// Ajuste de Tratamento de Erros
|
|
219
|
+
errorHandlingTuning: "Ajuste de Tratamento de Erros",
|
|
220
|
+
rateLimitDedupWindow: "Janela de Deduplicação de Rate Limit",
|
|
221
|
+
rateLimitDedupWindowDesc: "Previne tempestades de retry quando múltiplas requisições atingem rate limits simultaneamente.",
|
|
222
|
+
maxConsecutiveFailures: "Máx. Falhas Consecutivas",
|
|
223
|
+
maxConsecutiveFailuresDesc: "Número de falhas consecutivas antes de aplicar resfriamento estendido.",
|
|
224
|
+
extendedCooldown: "Resfriamento Estendido",
|
|
225
|
+
extendedCooldownDesc: "Duração do resfriamento aplicado após atingir máx. de falhas consecutivas.",
|
|
226
|
+
maxCapacityRetries: "Máx. Retries de Capacidade",
|
|
227
|
+
maxCapacityRetriesDesc: "Máximo de retries para esgotamento de capacidade antes de trocar conta.",
|
|
228
|
+
saveConfigServer: "Salvar Configuração",
|
|
229
|
+
serverRestartAlert: "Alterações salvas em {path}. Reinicie o servidor para aplicar algumas configurações.",
|
|
230
|
+
changePassword: "Alterar Senha da WebUI",
|
|
231
|
+
changePasswordDesc: "Atualizar a senha para acessar este painel",
|
|
232
|
+
currentPassword: "Senha Atual",
|
|
233
|
+
newPassword: "Nova Senha",
|
|
234
|
+
confirmNewPassword: "Confirmar Nova Senha",
|
|
235
|
+
passwordEmptyDesc: "Deixe em branco se nenhuma senha estiver definida",
|
|
236
|
+
passwordLengthDesc: "Pelo menos 6 caracteres",
|
|
237
|
+
passwordConfirmDesc: "Redigite a nova senha",
|
|
238
|
+
cancel: "Cancelar",
|
|
239
|
+
passwordsNotMatch: "Senhas não coincidem",
|
|
240
|
+
passwordTooShort: "A senha deve ter pelo menos 6 caracteres",
|
|
241
|
+
// Dashboard drill-down
|
|
242
|
+
clickToViewAllAccounts: "Clique para ver todas as contas",
|
|
243
|
+
clickToViewModels: "Clique para ver a página de Modelos",
|
|
244
|
+
clickToViewLimitedAccounts: "Clique para ver contas limitadas",
|
|
245
|
+
clickToFilterClaude: "Clique para filtrar modelos Claude",
|
|
246
|
+
clickToFilterGemini: "Clique para filtrar modelos Gemini",
|
|
247
|
+
// Accounts page
|
|
248
|
+
searchAccounts: "Buscar contas...",
|
|
249
|
+
noAccountsYet: "Nenhuma Conta Ainda",
|
|
250
|
+
noAccountsDesc: "Comece adicionando uma conta Google via OAuth, ou use o comando CLI para importar credenciais.",
|
|
251
|
+
addFirstAccount: "Adicione Sua Primeira Conta",
|
|
252
|
+
noSearchResults: "Nenhuma conta corresponde à sua busca",
|
|
253
|
+
clearSearch: "Limpar Busca",
|
|
254
|
+
disabledAccountsNote: "<strong>Contas desabilitadas</strong> não serão usadas para roteamento de requisições, mas permanecem na configuração. As estatísticas do painel incluem apenas contas habilitadas.",
|
|
255
|
+
dangerousOperation: "⚠️ Operação Perigosa",
|
|
256
|
+
confirmDeletePrompt: "Tem certeza de que deseja excluir a conta",
|
|
257
|
+
deleteWarning: "⚠️ Esta ação não pode ser desfeita. Todas as configurações e registros históricos serão excluídos permanentemente.",
|
|
258
|
+
// OAuth progress
|
|
259
|
+
oauthWaiting: "Aguardando autorização OAuth...",
|
|
260
|
+
oauthWaitingDesc: "Por favor, complete a autenticação na janela popup. Isso pode levar até 2 minutos.",
|
|
261
|
+
oauthCancelled: "Autorização OAuth cancelada",
|
|
262
|
+
oauthTimeout: "⏱️ Autorização OAuth expirou. Por favor, tente novamente.",
|
|
263
|
+
oauthWindowClosed: "A janela OAuth foi fechada. A autorização pode estar incompleta.",
|
|
264
|
+
cancelOAuth: "Cancelar",
|
|
265
|
+
// MCP CLI & Gemini 1M
|
|
266
|
+
mcpCliExperimental: "CLI MCP Experimental",
|
|
267
|
+
mcpCliDesc: "Habilita integração MCP experimental para uso confiável de ferramentas com consumo reduzido de contexto.",
|
|
268
|
+
gemini1mMode: "Modo de Contexto Gemini 1M",
|
|
269
|
+
gemini1mDesc: "Adiciona sufixo [1m] aos modelos Gemini para suporte a janela de contexto de 1M.",
|
|
270
|
+
gemini1mWarning: "⚠ Contexto grande pode reduzir o desempenho do Gemini-3-Pro.",
|
|
271
|
+
clickToSet: "Clique para configurar...",
|
|
272
|
+
none: "Nenhum",
|
|
273
|
+
// Quota Distribution
|
|
274
|
+
quotaDistribution: "Distribuição de Quota",
|
|
275
|
+
resetsIn: "Reseta em {time}",
|
|
276
|
+
noQuotaData: "Dados de quota ainda não disponíveis para esta conta.",
|
|
277
|
+
// Manual OAuth Mode
|
|
278
|
+
manualMode: "Modo Manual",
|
|
279
|
+
manualModeDesc: "(para ambientes onde callback não consegue alcançar)",
|
|
280
|
+
authLinkLabel: "Link de Autorização:",
|
|
281
|
+
linkCopied: "Link copiado para a área de transferência",
|
|
282
|
+
pasteCallbackLabel: "Cole a URL de callback ou código:",
|
|
283
|
+
pasteCallbackPlaceholder: "http://localhost:51121/oauth-callback?code=... ou 4/0xxx...",
|
|
284
|
+
completeAuth: "Completar Autorização",
|
|
285
|
+
authFailed: "Falha na autorização",
|
|
286
|
+
// Import/Export
|
|
287
|
+
export: "Exportar",
|
|
288
|
+
import: "Importar",
|
|
289
|
+
exportAccounts: "Exportar Contas",
|
|
290
|
+
importAccounts: "Importar Contas",
|
|
291
|
+
exportSuccess: "Exportadas {count} contas",
|
|
292
|
+
exportFailed: "Falha ao exportar",
|
|
293
|
+
importSuccess: "Importação concluída:",
|
|
294
|
+
importFailed: "Falha ao importar",
|
|
295
|
+
|
|
296
|
+
// Account Selection Strategy translations
|
|
297
|
+
accountSelectionStrategy: "Estratégia de Seleção de Conta",
|
|
298
|
+
selectionStrategy: "Estratégia de Seleção",
|
|
299
|
+
strategyStickyLabel: "Fixo (Otimizado para Cache)",
|
|
300
|
+
strategyRoundRobinLabel: "Rodízio (Balanceamento de Carga)",
|
|
301
|
+
strategyHybridLabel: "Híbrido (Distribuição Inteligente)",
|
|
302
|
+
strategyStickyDesc: "Permanece na mesma conta até atingir limite. Melhor para cache de prompts.",
|
|
303
|
+
strategyRoundRobinDesc: "Alterna para próxima conta a cada requisição. Máximo throughput.",
|
|
304
|
+
strategyHybridDesc: "Seleção inteligente baseada em saúde, tokens e frescor.",
|
|
305
|
+
strategyUpdated: "Estratégia atualizada para: {strategy}",
|
|
306
|
+
failedToUpdateStrategy: "Falha ao atualizar estratégia",
|
|
307
|
+
invalidStrategy: "Estratégia inválida selecionada",
|
|
308
|
+
};
|
|
@@ -0,0 +1,358 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Turkish (Türkçe) Translations
|
|
3
|
+
*/
|
|
4
|
+
window.translations = window.translations || {};
|
|
5
|
+
window.translations.tr = {
|
|
6
|
+
dashboard: "Panel",
|
|
7
|
+
models: "Modeller",
|
|
8
|
+
accounts: "Hesaplar",
|
|
9
|
+
logs: "Günlükler",
|
|
10
|
+
settings: "Ayarlar",
|
|
11
|
+
online: "ÇEVRİMİÇİ",
|
|
12
|
+
offline: "ÇEVRİMDIŞI",
|
|
13
|
+
totalAccounts: "TOPLAM HESAP",
|
|
14
|
+
active: "AKTİF",
|
|
15
|
+
operational: "Çalışıyor",
|
|
16
|
+
rateLimited: "HIZ SINIRLANDI",
|
|
17
|
+
quotasDepleted: "{count}/{total} Kota Tükendi",
|
|
18
|
+
quotasDepletedTitle: "KOTA TÜKENDİ",
|
|
19
|
+
outOfTracked: "{total} Takip Edilen İçinden",
|
|
20
|
+
cooldown: "Soğuma",
|
|
21
|
+
searchPlaceholder: "Modelleri ara...",
|
|
22
|
+
allAccounts: "Tüm Hesaplar",
|
|
23
|
+
stat: "DURUM",
|
|
24
|
+
modelIdentity: "MODEL KİMLİĞİ",
|
|
25
|
+
globalQuota: "GENEL KOTA",
|
|
26
|
+
nextReset: "SONRAKİ SIFIRLAMA",
|
|
27
|
+
distribution: "HESAP DAĞILIMI",
|
|
28
|
+
systemConfig: "Sistem Yapılandırması",
|
|
29
|
+
language: "Dil",
|
|
30
|
+
pollingInterval: "Veri Güncelleme Aralığı",
|
|
31
|
+
maxDisplayLogs: "Maksimum Görüntülenen Günlük",
|
|
32
|
+
showExhausted: "Tükenmiş Modelleri Göster",
|
|
33
|
+
showExhaustedDesc: "%0 kotası kalan modelleri de göster.",
|
|
34
|
+
compactMode: "Kompakt Mod",
|
|
35
|
+
compactModeDesc: "Daha fazla bilgi göstermek için tablo boşluklarını azalt.",
|
|
36
|
+
saveChanges: "Değişiklikleri Kaydet",
|
|
37
|
+
autoScroll: "Otomatik Kaydır",
|
|
38
|
+
clearLogs: "Günlükleri Temizle",
|
|
39
|
+
accountManagement: "Hesap Yönetimi",
|
|
40
|
+
manageTokens: "Google Hesap jetonlarını ve yetkilendirme durumlarını yönet",
|
|
41
|
+
addAccount: "Hesap Ekle",
|
|
42
|
+
status: "DURUM",
|
|
43
|
+
enabled: "ETKİN",
|
|
44
|
+
health: "SAĞLIK",
|
|
45
|
+
accountEmail: "HESAP (E-POSTA)",
|
|
46
|
+
source: "KAYNAK",
|
|
47
|
+
projectId: "PROJE ID",
|
|
48
|
+
sessionState: "OTURUM DURUMU",
|
|
49
|
+
operations: "İŞLEMLER",
|
|
50
|
+
delete: "Sil",
|
|
51
|
+
confirmDelete: "Bu hesabı kaldırmak istediğinizden emin misiniz?",
|
|
52
|
+
cannotDeleteDatabase: "Silinemez: Bu hesap CommonsProxy veritabanından (salt okunur)",
|
|
53
|
+
connectGoogle: "Google Hesabı Bağla",
|
|
54
|
+
reauthenticated: "yeniden doğrulandı",
|
|
55
|
+
added: "eklendi",
|
|
56
|
+
successfully: "başarıyla",
|
|
57
|
+
accountAddedSuccess: "Hesap başarıyla eklendi",
|
|
58
|
+
accountReauthSuccess: "Hesap başarıyla yeniden doğrulandı",
|
|
59
|
+
failedToGetAuthUrl: "Yetkilendirme URL'si alınamadı",
|
|
60
|
+
failedToStartOAuth: "OAuth akışı başlatılamadı",
|
|
61
|
+
oauthInProgress: "OAuth devam ediyor. Lütfen açılır pencerede kimlik doğrulamayı tamamlayın...",
|
|
62
|
+
family: "Aile",
|
|
63
|
+
model: "Model",
|
|
64
|
+
activeSuffix: "Aktif",
|
|
65
|
+
manualReload: "Yapılandırmayı Yeniden Yükle",
|
|
66
|
+
// Tabs
|
|
67
|
+
tabInterface: "Arayüz",
|
|
68
|
+
tabClaude: "Claude CLI",
|
|
69
|
+
tabModels: "Modeller",
|
|
70
|
+
tabServer: "Sunucu Ayarları",
|
|
71
|
+
// Dashboard
|
|
72
|
+
linkedAccounts: "Bağlı Hesaplar",
|
|
73
|
+
noSignal: "SİNYAL YOK",
|
|
74
|
+
establishingUplink: "BAĞLANTI KURULUYOR...",
|
|
75
|
+
goToAccounts: "Hesaplara Git",
|
|
76
|
+
// Settings - Models
|
|
77
|
+
modelsDesc: "Model görünürlüğünü, sabitlemeyi ve istek yönlendirmeyi yapılandırın.",
|
|
78
|
+
modelsPageDesc: "Tüm mevcut modeller için gerçek zamanlı kota ve durum.",
|
|
79
|
+
showHidden: "Gizli Modelleri Göster",
|
|
80
|
+
hideHidden: "Gizli Modelleri Gizle",
|
|
81
|
+
hiddenOn: "Gizli: AÇIK",
|
|
82
|
+
hiddenOff: "Gizli: KAPALI",
|
|
83
|
+
modelId: "Model ID",
|
|
84
|
+
actions: "İşlemler",
|
|
85
|
+
pinToTop: "En Üste Sabitle",
|
|
86
|
+
toggleVisibility: "Görünürlüğü Değiştir",
|
|
87
|
+
noModels: "MODEL ALGILANMADI",
|
|
88
|
+
modelMappingHint: "Sunucu tarafı model yönlendirme. Claude Code kullanıcıları: istemci tarafı kurulumu için 'Claude CLI' sekmesine bakın.",
|
|
89
|
+
modelMapping: "Eşleştirme (Hedef Model ID)",
|
|
90
|
+
// Settings - Claude
|
|
91
|
+
proxyConnection: "Proxy Bağlantısı",
|
|
92
|
+
modelSelection: "Model Seçimi",
|
|
93
|
+
defaultModelAliases: "VARSAYILAN MODEL TAKMA ADLARI",
|
|
94
|
+
opusAlias: "Opus Takma Adı",
|
|
95
|
+
sonnetAlias: "Sonnet Takma Adı",
|
|
96
|
+
haikuAlias: "Haiku Takma Adı",
|
|
97
|
+
claudeSettingsAlertPrefix: "Aşağıdaki ayarlar doğrudan değiştirir",
|
|
98
|
+
claudeSettingsAlertSuffix: "Uygulamak için Claude CLI'yı yeniden başlatın.",
|
|
99
|
+
applyToClaude: "Claude CLI'ya Uygula",
|
|
100
|
+
// Settings - Server
|
|
101
|
+
port: "Port",
|
|
102
|
+
uiVersion: "Arayüz Sürümü",
|
|
103
|
+
debugMode: "Hata Ayıklama Modu",
|
|
104
|
+
environment: "Ortam",
|
|
105
|
+
serverReadOnly: "Ayarlar config.json üzerinden yönetilir. Değişiklikleri uygulamak için sunucuyu yeniden başlatın.",
|
|
106
|
+
advancedSettings: "Gelişmiş Ayarlar",
|
|
107
|
+
reloadConfigTitle: "Hesap Yapılandırmasını Yeniden Yükle",
|
|
108
|
+
reloadConfigDesc: "accounts.json dosyasını diskten yeniden yüklemeye zorla",
|
|
109
|
+
reload: "Yeniden Yükle",
|
|
110
|
+
// Config Specific
|
|
111
|
+
primaryModel: "Birincil Model",
|
|
112
|
+
subAgentModel: "Alt Ajan Modeli",
|
|
113
|
+
advancedOverrides: "Varsayılan Model Geçersiz Kılmaları",
|
|
114
|
+
opusModel: "Opus Modeli",
|
|
115
|
+
sonnetModel: "Sonnet Modeli",
|
|
116
|
+
haikuModel: "Haiku Modeli",
|
|
117
|
+
authToken: "Yetkilendirme Jetonu",
|
|
118
|
+
saveConfig: "Claude CLI ayarlarına kaydet",
|
|
119
|
+
envVar: "Ortam Değişkeni",
|
|
120
|
+
// New Keys
|
|
121
|
+
systemName: "COMMONSPROXY",
|
|
122
|
+
systemDesc: "CLAUDE PROXY SİSTEMİ",
|
|
123
|
+
connectGoogleDesc: "API kota limitinizi artırmak için bir Google Workspace hesabı bağlayın. Bu hesap, Claude isteklerini CommonsProxy üzerinden vekil sunucu olarak kullanmak için kullanılacaktır.",
|
|
124
|
+
useCliCommand: "CLI Komutunu Kullan",
|
|
125
|
+
close: "Kapat",
|
|
126
|
+
requestVolume: "İstek Hacmi",
|
|
127
|
+
filter: "Filtrele",
|
|
128
|
+
all: "Tümü",
|
|
129
|
+
none: "Hiçbiri",
|
|
130
|
+
noDataTracked: "Henüz veri izlenmedi",
|
|
131
|
+
selectFamilies: "Görüntülenecek aileleri seçin",
|
|
132
|
+
selectModels: "Görüntülenecek modelleri seçin",
|
|
133
|
+
noLogsMatch: "Filtreyle eşleşen günlük yok",
|
|
134
|
+
connecting: "BAĞLANILIYOR",
|
|
135
|
+
main: "Ana",
|
|
136
|
+
system: "Sistem",
|
|
137
|
+
refreshData: "Verileri Yenile",
|
|
138
|
+
connectionLost: "Bağlantı Kaybedildi",
|
|
139
|
+
lastUpdated: "Son Güncelleme",
|
|
140
|
+
grepLogs: "günlükleri ara...",
|
|
141
|
+
noMatchingModels: "Eşleşen model yok",
|
|
142
|
+
typeToSearch: "Aramak veya seçmek için yazın...",
|
|
143
|
+
or: "VEYA",
|
|
144
|
+
refreshingAccount: "{email} yenileniyor...",
|
|
145
|
+
refreshedAccount: "{email} yenilendi",
|
|
146
|
+
refreshFailed: "Yenileme başarısız",
|
|
147
|
+
accountToggled: "Hesap {email} {status}",
|
|
148
|
+
toggleFailed: "Değiştirme başarısız",
|
|
149
|
+
reauthenticating: "{email} yeniden doğrulanıyor...",
|
|
150
|
+
authUrlFailed: "Yetkilendirme URL'si alınamadı",
|
|
151
|
+
deletedAccount: "{email} silindi",
|
|
152
|
+
deleteFailed: "Silme başarısız",
|
|
153
|
+
accountsReloaded: "Hesaplar yeniden yüklendi",
|
|
154
|
+
reloadFailed: "Yeniden yükleme başarısız",
|
|
155
|
+
claudeConfigSaved: "Claude yapılandırması kaydedildi",
|
|
156
|
+
claudeConfigRestored: "Claude CLI varsayılanlara geri yüklendi",
|
|
157
|
+
saveConfigFailed: "Yapılandırma kaydedilemedi",
|
|
158
|
+
restoreConfigFailed: "Yapılandırma geri yüklenemedi",
|
|
159
|
+
restoreDefault: "Varsayılana Dön",
|
|
160
|
+
confirmRestoreTitle: "Geri Yüklemeyi Onayla",
|
|
161
|
+
confirmRestoreMessage: "Claude CLI'yı varsayılan ayarlara geri yüklemek istediğinizden emin misiniz? Bu işlem proxy yapılandırmasını kaldıracaktır.",
|
|
162
|
+
confirmRestore: "Geri Yüklemeyi Onayla",
|
|
163
|
+
claudeActive: "Claude Aktif",
|
|
164
|
+
claudeEmpty: "Claude Boş",
|
|
165
|
+
geminiActive: "Gemini Aktif",
|
|
166
|
+
geminiEmpty: "Gemini Boş",
|
|
167
|
+
synced: "EŞİTLENDİ",
|
|
168
|
+
syncing: "EŞİTLENİYOR...",
|
|
169
|
+
// Time range labels
|
|
170
|
+
last1Hour: "Son 1S",
|
|
171
|
+
last6Hours: "Son 6S",
|
|
172
|
+
last24Hours: "Son 24S",
|
|
173
|
+
last7Days: "Son 7G",
|
|
174
|
+
allTime: "Tüm Zamanlar",
|
|
175
|
+
groupBy: "Gruplama Ölçütü",
|
|
176
|
+
// Additional
|
|
177
|
+
reloading: "Yeniden yükleniyor...",
|
|
178
|
+
reloaded: "Yeniden yüklendi",
|
|
179
|
+
lines: "satır",
|
|
180
|
+
enabledSeeLogs: "Etkin (Günlüklere Bak)",
|
|
181
|
+
production: "Üretim",
|
|
182
|
+
configSaved: "Yapılandırma Kaydedildi",
|
|
183
|
+
enterPassword: "Web UI Parolasını Girin:",
|
|
184
|
+
ready: "HAZIR",
|
|
185
|
+
depleted: "Tükendi",
|
|
186
|
+
timeH: "S",
|
|
187
|
+
timeM: "D",
|
|
188
|
+
familyClaude: "Claude",
|
|
189
|
+
familyGemini: "Gemini",
|
|
190
|
+
familyOther: "Diğer",
|
|
191
|
+
enabledStatus: "etkin",
|
|
192
|
+
disabledStatus: "devre dışı",
|
|
193
|
+
logLevelInfo: "BİLGİ",
|
|
194
|
+
logLevelSuccess: "BAŞARILI",
|
|
195
|
+
logLevelWarn: "UYARI",
|
|
196
|
+
logLevelError: "HATA",
|
|
197
|
+
totalColon: "Toplam:",
|
|
198
|
+
todayColon: "Bugün:",
|
|
199
|
+
hour1Colon: "1S:",
|
|
200
|
+
frequentModels: "Sık Kullanılan",
|
|
201
|
+
smartTitle: "En çok kullanılan 5 modeli otomatik seç (24s)",
|
|
202
|
+
activeCount: "{count} Aktif",
|
|
203
|
+
allCaps: "TÜMÜ",
|
|
204
|
+
claudeCaps: "CLAUDE",
|
|
205
|
+
geminiCaps: "GEMINI",
|
|
206
|
+
modelMapping: "Eşleştirme (Hedef Model ID)",
|
|
207
|
+
systemInfo: "Sistem Bilgisi",
|
|
208
|
+
refresh: "Yenile",
|
|
209
|
+
runtimeConfig: "Çalışma Zamanı Yapılandırması",
|
|
210
|
+
debugDesc: "Ayrıntılı günlük kaydını etkinleştir (Günlükler sekmesine bakın)",
|
|
211
|
+
networkRetry: "Ağ Yeniden Deneme Ayarları",
|
|
212
|
+
maxRetries: "Maksimum Deneme",
|
|
213
|
+
retryBaseDelay: "Yeniden Deneme Temel Gecikmesi (ms)",
|
|
214
|
+
retryMaxDelay: "Yeniden Deneme Maksimum Gecikmesi (ms)",
|
|
215
|
+
persistentSessions: "Kalıcı Oturumlar",
|
|
216
|
+
persistTokenDesc: "Daha hızlı yeniden başlatmalar için OAuth oturumlarını diske kaydet",
|
|
217
|
+
rateLimiting: "Hesap Hız Sınırlama ve Zaman Aşımları",
|
|
218
|
+
defaultCooldown: "Varsayılan Soğuma Süresi",
|
|
219
|
+
defaultCooldownDesc: "API sıfırlama zamanı sağlamadığında yedek soğuma süresi.",
|
|
220
|
+
maxWaitThreshold: "Maksimum Bekleme Eşiği (Yapışkan)",
|
|
221
|
+
maxWaitDesc: "Yapışkan bir hesabın değiştirmeden önce sıfırlanması için beklenecek maksimum süre.",
|
|
222
|
+
// Hata İşleme Ayarları
|
|
223
|
+
errorHandlingTuning: "Hata İşleme Ayarları",
|
|
224
|
+
rateLimitDedupWindow: "Hız Sınırı Tekilleştirme Penceresi",
|
|
225
|
+
rateLimitDedupWindowDesc: "Birden fazla istek aynı anda hız sınırına ulaştığında yeniden deneme fırtınasını önler.",
|
|
226
|
+
maxConsecutiveFailures: "Maks. Ardışık Başarısızlık",
|
|
227
|
+
maxConsecutiveFailuresDesc: "Uzatılmış soğuma uygulamadan önce ardışık başarısızlık sayısı.",
|
|
228
|
+
extendedCooldown: "Uzatılmış Soğuma",
|
|
229
|
+
extendedCooldownDesc: "Maks. ardışık başarısızlık sonrası uygulanan soğuma süresi.",
|
|
230
|
+
maxCapacityRetries: "Maks. Kapasite Yeniden Denemesi",
|
|
231
|
+
maxCapacityRetriesDesc: "Hesap değiştirmeden önce kapasite tükenmesi için maksimum yeniden deneme.",
|
|
232
|
+
saveConfigServer: "Yapılandırmayı Kaydet",
|
|
233
|
+
serverRestartAlert: "Değişiklikler {path} konumuna kaydedildi. Bazı ayarları uygulamak için sunucuyu yeniden başlatın.",
|
|
234
|
+
changePassword: "WebUI Parolasını Değiştir",
|
|
235
|
+
changePasswordDesc: "Bu panoya erişim parolasını güncelle",
|
|
236
|
+
currentPassword: "Mevcut Parola",
|
|
237
|
+
newPassword: "Yeni Parola",
|
|
238
|
+
confirmNewPassword: "Yeni Parolayı Onayla",
|
|
239
|
+
passwordEmptyDesc: "Parola ayarlanmamışsa boş bırakın",
|
|
240
|
+
passwordLengthDesc: "En az 6 karakter",
|
|
241
|
+
passwordConfirmDesc: "Yeni parolayı tekrar girin",
|
|
242
|
+
cancel: "İptal",
|
|
243
|
+
passwordsNotMatch: "Parolalar eşleşmiyor",
|
|
244
|
+
passwordTooShort: "Parola en az 6 karakter olmalıdır",
|
|
245
|
+
// Dashboard drill-down
|
|
246
|
+
clickToViewAllAccounts: "Tüm hesapları görüntülemek için tıklayın",
|
|
247
|
+
clickToViewModels: "Modeller sayfasını görüntülemek için tıklayın",
|
|
248
|
+
clickToViewLimitedAccounts: "Hız sınırı olan hesapları görüntülemek için tıklayın",
|
|
249
|
+
clickToFilterClaude: "Claude modellerini filtrelemek için tıklayın",
|
|
250
|
+
clickToFilterGemini: "Gemini modellerini filtrelemek için tıklayın",
|
|
251
|
+
// Accounts page
|
|
252
|
+
searchAccounts: "Hesap ara...",
|
|
253
|
+
noAccountsYet: "Henüz Hesap Yok",
|
|
254
|
+
noAccountsDesc: "OAuth üzerinden bir Google hesabı ekleyerek veya kimlik bilgilerini içe aktarmak için CLI komutunu kullanarak başlayın.",
|
|
255
|
+
addFirstAccount: "İlk Hesabınızı Ekleyin",
|
|
256
|
+
noSearchResults: "Aramanızla eşleşen hesap yok",
|
|
257
|
+
clearSearch: "Aramayı Temizle",
|
|
258
|
+
disabledAccountsNote: "<strong>Devre dışı bırakılan hesaplar</strong> istek yönlendirmesi için kullanılmayacak ancak yapılandırmada kalacaktır. Pano istatistikleri yalnızca etkin hesapları içerir.",
|
|
259
|
+
dangerousOperation: "⚠️ Tehlikeli İşlem",
|
|
260
|
+
confirmDeletePrompt: "Hesabı silmek istediğinizden emin misiniz",
|
|
261
|
+
deleteWarning: "⚠️ Bu işlem geri alınamaz. Tüm yapılandırma ve geçmiş kayıtları kalıcı olarak silinecektir.",
|
|
262
|
+
// OAuth progress
|
|
263
|
+
oauthWaiting: "OAuth yetkilendirmesi bekleniyor...",
|
|
264
|
+
oauthWaitingDesc: "Lütfen açılır pencerede kimlik doğrulamasını tamamlayın. Bu işlem 2 dakikaya kadar sürebilir.",
|
|
265
|
+
oauthCancelled: "OAuth yetkilendirmesi iptal edildi",
|
|
266
|
+
oauthTimeout: "⏱️ OAuth yetkilendirmesi zaman aşımına uğradı. Lütfen tekrar deneyin.",
|
|
267
|
+
oauthWindowClosed: "OAuth penceresi kapatıldı. Yetkilendirme tamamlanmamış olabilir.",
|
|
268
|
+
cancelOAuth: "İptal",
|
|
269
|
+
// MCP CLI & Gemini 1M
|
|
270
|
+
mcpCliExperimental: "Deneysel MCP CLI",
|
|
271
|
+
mcpCliDesc: "Daha az bağlam tüketimi ile güvenilir araç kullanımı için deneysel MCP entegrasyonunu etkinleştirir.",
|
|
272
|
+
gemini1mMode: "Gemini 1M Bağlam Modu",
|
|
273
|
+
gemini1mDesc: "1M bağlam penceresi desteği için Gemini modellerine [1m] son eki ekler.",
|
|
274
|
+
gemini1mWarning: "⚠ Büyük bağlam, Gemini-3-Pro performansını düşürebilir.",
|
|
275
|
+
clickToSet: "Yapılandırmak için tıklayın...",
|
|
276
|
+
none: "Hiçbiri",
|
|
277
|
+
// Quota Distribution
|
|
278
|
+
quotaDistribution: "Kota Dağılımı",
|
|
279
|
+
resetsIn: "{time} içinde sıfırlanır",
|
|
280
|
+
noQuotaData: "Bu hesap için henüz kota verisi yok.",
|
|
281
|
+
// Manual OAuth Mode
|
|
282
|
+
manualMode: "Manuel Mod",
|
|
283
|
+
manualModeDesc: "(callback ulaşamadığında kullan)",
|
|
284
|
+
authLinkLabel: "Yetkilendirme Linki:",
|
|
285
|
+
linkCopied: "Link panoya kopyalandı",
|
|
286
|
+
pasteCallbackLabel: "Callback URL veya kodu yapıştır:",
|
|
287
|
+
pasteCallbackPlaceholder: "http://localhost:51121/oauth-callback?code=... veya 4/0xxx...",
|
|
288
|
+
completeAuth: "Yetkilendirmeyi Tamamla",
|
|
289
|
+
authFailed: "Yetkilendirme başarısız",
|
|
290
|
+
// Import/Export
|
|
291
|
+
export: "Dışa Aktar",
|
|
292
|
+
import: "İçe Aktar",
|
|
293
|
+
exportAccounts: "Hesapları Dışa Aktar",
|
|
294
|
+
importAccounts: "Hesapları İçe Aktar",
|
|
295
|
+
exportSuccess: "{count} hesap dışa aktarıldı",
|
|
296
|
+
exportFailed: "Dışa aktarma başarısız",
|
|
297
|
+
importSuccess: "İçe aktarma tamamlandı:",
|
|
298
|
+
importFailed: "İçe aktarma başarısız",
|
|
299
|
+
|
|
300
|
+
// TODO: Missing translations - Hardcoded strings from HTML
|
|
301
|
+
// pageTitle: "CommonsProxy Console",
|
|
302
|
+
// live: "Live",
|
|
303
|
+
// tier: "Tier",
|
|
304
|
+
// quota: "Quota",
|
|
305
|
+
// tierUltra: "Ultra",
|
|
306
|
+
// tierPro: "Pro",
|
|
307
|
+
// tierFree: "Free",
|
|
308
|
+
// menu: "Menu",
|
|
309
|
+
// github: "GitHub",
|
|
310
|
+
// noData: "No data",
|
|
311
|
+
// fix: "Fix",
|
|
312
|
+
|
|
313
|
+
// TODO: Missing translations - Hardcoded strings from JS (Error Messages)
|
|
314
|
+
// operationFailed: "Operation failed",
|
|
315
|
+
// unknownError: "Unknown error",
|
|
316
|
+
// presetNameRequired: "Preset name is required",
|
|
317
|
+
// saveFailed: "Save failed",
|
|
318
|
+
// failedToSavePreset: "Failed to save preset",
|
|
319
|
+
// noPresetSelected: "No preset selected",
|
|
320
|
+
// deletePresetConfirm: "Delete preset \"{name}\"?",
|
|
321
|
+
// deleteFailed: "Delete failed",
|
|
322
|
+
// failedToDeletePreset: "Failed to delete preset",
|
|
323
|
+
// failedToChangePassword: "Failed to change password",
|
|
324
|
+
// passwordChangedSuccess: "Password changed successfully",
|
|
325
|
+
// debugModeToggled: "Debug mode {status}",
|
|
326
|
+
// tokenCacheToggled: "Token cache {status}",
|
|
327
|
+
// failedToUpdateTokenCache: "Failed to update token cache",
|
|
328
|
+
// failedToUpdateDebugMode: "Failed to update debug mode",
|
|
329
|
+
// failedToRefreshAccount: "Failed to refresh account",
|
|
330
|
+
// failedToDeleteAccount: "Failed to delete account",
|
|
331
|
+
// failedToReloadAccounts: "Failed to reload accounts",
|
|
332
|
+
// failedToUpdateModelConfig: "Failed to update model config",
|
|
333
|
+
// fieldUpdated: "{displayName} updated to {value}",
|
|
334
|
+
// failedToUpdateField: "Failed to update {displayName}",
|
|
335
|
+
|
|
336
|
+
// TODO: Missing translations - Validation messages from validators.js
|
|
337
|
+
// mustBeValidNumber: "{fieldName} must be a valid number",
|
|
338
|
+
// mustBeAtLeast: "{fieldName} must be at least {min}",
|
|
339
|
+
// mustBeAtMost: "{fieldName} must be at most {max}",
|
|
340
|
+
// cannotBeEmpty: "{fieldName} cannot be empty",
|
|
341
|
+
// mustBeTrueOrFalse: "Value must be true or false",
|
|
342
|
+
|
|
343
|
+
// TODO: Missing translation - Server config (exists in EN but missing here)
|
|
344
|
+
// defaultCooldownDesc: "Fallback cooldown when API doesn't provide a reset time.",
|
|
345
|
+
|
|
346
|
+
// Account Selection Strategy translations
|
|
347
|
+
accountSelectionStrategy: "Hesap Seçim Stratejisi",
|
|
348
|
+
selectionStrategy: "Seçim Stratejisi",
|
|
349
|
+
strategyStickyLabel: "Sabit (Önbellek Optimizasyonu)",
|
|
350
|
+
strategyRoundRobinLabel: "Döngüsel (Yük Dengeleme)",
|
|
351
|
+
strategyHybridLabel: "Hibrit (Akıllı Dağıtım)",
|
|
352
|
+
strategyStickyDesc: "Hız sınırına ulaşılana kadar aynı hesapta kalır. Önbellek için en iyisi.",
|
|
353
|
+
strategyRoundRobinDesc: "Her istekte bir sonraki hesaba geçer. Maksimum verimlilik.",
|
|
354
|
+
strategyHybridDesc: "Sağlık, token ve tazeliğe dayalı akıllı seçim.",
|
|
355
|
+
strategyUpdated: "Strateji şu şekilde güncellendi: {strategy}",
|
|
356
|
+
failedToUpdateStrategy: "Strateji güncellenemedi",
|
|
357
|
+
invalidStrategy: "Geçersiz strateji seçildi",
|
|
358
|
+
};
|