diff --git a/frontend/src/lang/modules/en.ts b/frontend/src/lang/modules/en.ts index c9a1c64c82ef..c71363a391cc 100644 --- a/frontend/src/lang/modules/en.ts +++ b/frontend/src/lang/modules/en.ts @@ -915,8 +915,8 @@ const message = { maxBodyMb: 'Max Body Size (MB)', runtimeRefreshSeconds: 'Runtime Refresh Interval (s)', statusTitle: 'AI Proxy Status', - serviceEnabled: 'Service Enabled', - configStatus: 'Config Status', + serviceEnabled: 'Service Auto-start', + proxyEnabled: 'Proxy Enabled', statusMessage: 'Status Message', serviceOperateConfirm: 'Confirm to {0} the AI Proxy service?', deleteBackendConfirm: 'Delete model account {0}?', @@ -946,6 +946,9 @@ const message = { failedRequests: 'Failed Requests', averageTokenPerRequest: 'Avg Tokens/Request', callLogs: 'Call Logs', + attemptChain: 'Attempt Chain', + attemptIndex: 'Call Order', + noAttemptDetails: 'This request hit once; no fallback details', requestId: 'Request ID', input: 'Input', output: 'Output', @@ -974,6 +977,7 @@ const message = { 'Select or enter a local tokenizer directory, e.g. /opt/1panel/tokenizers/DeepSeek-V3', runConfig: 'Run Config', rawResult: 'Raw Result', + resultMetrics: 'Result Metrics', contextTokens: 'Context Length', contextTokensHelper: 'Input token limit plus output token limit for this benchmark.', outputThroughput: 'Output Throughput', @@ -985,12 +989,25 @@ const message = { 'Time from sending the request to receiving the first token. Lower means faster response.', inputTokens: 'Input Tokens', outputTokens: 'Output Tokens', + tokenValueHelper: 'Enter a positive integer or k value, e.g. 512, 1k, 32k', numPrompts: 'Prompts', concurrency: 'Concurrency', requestRate: 'Request Rate', requestRateUnlimited: 'Unlimited (max throughput)', requestRateCustom: 'Custom QPS', requestRateCustomPlaceholder: 'Requests per second, e.g. 2.5', + successfulRequests: 'Successful Requests', + failedRequests: 'Failed Requests', + requestThroughput: 'Request Throughput', + ttftMean: 'Mean TTFT', + ttftMedian: 'Median TTFT', + ttftP99: 'P99 TTFT', + tpotMean: 'Mean TPOT', + tpotMedian: 'Median TPOT', + tpotP99: 'P99 TPOT', + itlMean: 'Mean ITL', + itlMedian: 'Median ITL', + itlP99: 'P99 ITL', timeout: 'Timeout (seconds)', image: 'vLLM Image', ignoreEos: 'Ignore EOS', diff --git a/frontend/src/lang/modules/es-es.ts b/frontend/src/lang/modules/es-es.ts index 41c577df088c..55a4a1d0331a 100644 --- a/frontend/src/lang/modules/es-es.ts +++ b/frontend/src/lang/modules/es-es.ts @@ -926,8 +926,8 @@ const message = { maxBodyMb: 'Tamaño máximo del cuerpo (MB)', runtimeRefreshSeconds: 'Intervalo de actualización runtime (s)', statusTitle: 'Estado del proxy de IA', - serviceEnabled: 'Servicio habilitado', - configStatus: 'Estado de configuración', + serviceEnabled: 'Inicio automático del servicio', + proxyEnabled: 'Proxy habilitado', statusMessage: 'Mensaje de estado', serviceOperateConfirm: '¿Confirmar {0} el servicio de proxy de IA?', deleteBackendConfirm: '¿Eliminar la cuenta de modelo {0}?', @@ -956,6 +956,9 @@ const message = { failedRequests: 'Solicitudes fallidas', averageTokenPerRequest: 'Tokens promedio/solicitud', callLogs: 'Registros de llamadas', + attemptChain: 'Cadena de intentos', + attemptIndex: 'Orden de llamada', + noAttemptDetails: 'Esta solicitud acertó en el primer intento; no hay detalles de fallback', requestId: 'Request ID', input: 'Entrada', output: 'Salida', @@ -2473,8 +2476,7 @@ const message = { 'Si el tiempo de expiración de la contraseña es 0 días, la función de expiración estará desactivada', days: 'Días de expiración de contraseña', expiredHelper: 'La contraseña actual ha expirado. Por favor cámbiala de nuevo.', - timeoutHelper: - 'La contraseña del panel expirará en {0} días. Tras expirar, deberás restablecerla', + timeoutHelper: 'La contraseña del panel expirará en {0} días. Tras expirar, deberás restablecerla', complexity: 'Validación de complejidad', complexityHelper: 'Tras habilitarlo, la contraseña debe tener entre 8 y 30 caracteres y contener al menos dos de estos tipos: letras, números y caracteres especiales.', diff --git a/frontend/src/lang/modules/ja.ts b/frontend/src/lang/modules/ja.ts index 3cc40f5205af..102ee5f5e76f 100644 --- a/frontend/src/lang/modules/ja.ts +++ b/frontend/src/lang/modules/ja.ts @@ -916,8 +916,8 @@ const message = { maxBodyMb: '最大リクエスト本文(MB)', runtimeRefreshSeconds: 'Runtime 更新間隔(秒)', statusTitle: 'AI プロキシ状態', - serviceEnabled: 'サービス有効', - configStatus: '設定状態', + serviceEnabled: 'サービス自動起動', + proxyEnabled: 'プロキシ有効', statusMessage: '状態メッセージ', serviceOperateConfirm: 'AI プロキシサービスを {0} しますか?', deleteBackendConfirm: 'モデルアカウント {0} を削除しますか?', @@ -946,6 +946,9 @@ const message = { failedRequests: '失敗リクエスト', averageTokenPerRequest: '平均 Token/リクエスト', callLogs: '呼び出しログ', + attemptChain: '試行チェーン', + attemptIndex: '呼び出し順', + noAttemptDetails: 'このリクエストは 1 回で命中しました。fallback 明細はありません', requestId: 'Request ID', input: '入力', output: '出力', diff --git a/frontend/src/lang/modules/ko.ts b/frontend/src/lang/modules/ko.ts index 7e052f95adcc..9cb6d4282c53 100644 --- a/frontend/src/lang/modules/ko.ts +++ b/frontend/src/lang/modules/ko.ts @@ -900,8 +900,8 @@ const message = { maxBodyMb: '최대 요청 본문(MB)', runtimeRefreshSeconds: 'Runtime 새로고침 간격(초)', statusTitle: 'AI 프록시 상태', - serviceEnabled: '서비스 활성화', - configStatus: '설정 상태', + serviceEnabled: '서비스 자동 시작', + proxyEnabled: '프록시 활성화', statusMessage: '상태 메시지', serviceOperateConfirm: 'AI 프록시 서비스를 {0}하시겠습니까?', deleteBackendConfirm: '모델 계정 {0}을(를) 삭제하시겠습니까?', @@ -930,6 +930,9 @@ const message = { failedRequests: '실패한 요청', averageTokenPerRequest: '평균 Token/요청', callLogs: '호출 로그', + attemptChain: '시도 체인', + attemptIndex: '호출 순서', + noAttemptDetails: '이 요청은 한 번에 적중했으며 fallback 상세가 없습니다', requestId: 'Request ID', input: '입력', output: '출력', @@ -2361,8 +2364,7 @@ const message = { expiredHelper: '현재 비밀번호가 만료되었습니다. 비밀번호를 다시 변경하십시오.', timeoutHelper: '패널 비밀번호가 {0}일 후 만료됩니다. 만료 후 비밀번호를 재설정해야 합니다.', complexity: '복잡성 검증', - complexityHelper: - '활성화하면 비밀번호는 8-30 자이며 영문, 숫자, 특수 문자 중 최소 두 가지를 포함해야 합니다.', + complexityHelper: '활성화하면 비밀번호는 8-30 자이며 영문, 숫자, 특수 문자 중 최소 두 가지를 포함해야 합니다.', bindDomain: '도메인 바인딩', unBindDomain: '도메인 바인딩 해제', panelSSL: '패널 SSL', diff --git a/frontend/src/lang/modules/ms.ts b/frontend/src/lang/modules/ms.ts index c8b5ddeb2af2..e445d35fe06c 100644 --- a/frontend/src/lang/modules/ms.ts +++ b/frontend/src/lang/modules/ms.ts @@ -925,8 +925,8 @@ const message = { maxBodyMb: 'Saiz badan maksimum (MB)', runtimeRefreshSeconds: 'Selang segar semula runtime (s)', statusTitle: 'Status proksi AI', - serviceEnabled: 'Perkhidmatan diaktifkan', - configStatus: 'Status konfigurasi', + serviceEnabled: 'Auto mula perkhidmatan', + proxyEnabled: 'Proksi diaktifkan', statusMessage: 'Mesej status', serviceOperateConfirm: 'Sahkan untuk {0} perkhidmatan proksi AI?', deleteBackendConfirm: 'Padam akaun model {0}?', @@ -955,6 +955,9 @@ const message = { failedRequests: 'Permintaan gagal', averageTokenPerRequest: 'Purata Token/permintaan', callLogs: 'Log panggilan', + attemptChain: 'Rantaian percubaan', + attemptIndex: 'Urutan panggilan', + noAttemptDetails: 'Permintaan ini berjaya sekali percubaan; tiada butiran fallback', requestId: 'Request ID', input: 'Input', output: 'Output', diff --git a/frontend/src/lang/modules/pt-br.ts b/frontend/src/lang/modules/pt-br.ts index deebbd5ba618..4fe9b053c17f 100644 --- a/frontend/src/lang/modules/pt-br.ts +++ b/frontend/src/lang/modules/pt-br.ts @@ -921,8 +921,8 @@ const message = { maxBodyMb: 'Tamanho máximo do corpo (MB)', runtimeRefreshSeconds: 'Intervalo de atualização do runtime (s)', statusTitle: 'Status do proxy de IA', - serviceEnabled: 'Serviço habilitado', - configStatus: 'Status da configuração', + serviceEnabled: 'Inicialização automática do serviço', + proxyEnabled: 'Proxy habilitado', statusMessage: 'Mensagem de status', serviceOperateConfirm: 'Confirmar {0} o serviço de proxy de IA?', deleteBackendConfirm: 'Excluir conta de modelo {0}?', @@ -951,6 +951,9 @@ const message = { failedRequests: 'Requisições com falha', averageTokenPerRequest: 'Média de Token/requisição', callLogs: 'Logs de chamadas', + attemptChain: 'Cadeia de tentativas', + attemptIndex: 'Ordem de chamada', + noAttemptDetails: 'Esta requisição acertou na primeira tentativa; sem detalhes de fallback', requestId: 'Request ID', input: 'Entrada', output: 'Saída', @@ -2570,8 +2573,7 @@ const message = { 'Se o tempo de expiração da senha for 0 dias, a função de expiração da senha estará desativada.', days: 'Dias de expiração da senha', expiredHelper: 'A senha atual expirou. Por favor, altere a senha novamente.', - timeoutHelper: - 'A senha do painel expirará em {0} dias. Após a expiração, será necessário redefinir a senha.', + timeoutHelper: 'A senha do painel expirará em {0} dias. Após a expiração, será necessário redefinir a senha.', complexity: 'Validação de Complexidade', complexityHelper: 'Após ativar, a senha deve ter de 8 a 30 caracteres e conter pelo menos dois destes tipos: letras, números e caracteres especiais.', diff --git a/frontend/src/lang/modules/ru.ts b/frontend/src/lang/modules/ru.ts index 6b53ef5241fd..d836eb841140 100644 --- a/frontend/src/lang/modules/ru.ts +++ b/frontend/src/lang/modules/ru.ts @@ -915,8 +915,8 @@ const message = { maxBodyMb: 'Максимальный размер тела (MB)', runtimeRefreshSeconds: 'Интервал обновления runtime (с)', statusTitle: 'Статус AI-прокси', - serviceEnabled: 'Сервис включен', - configStatus: 'Статус конфигурации', + serviceEnabled: 'Автозапуск сервиса', + proxyEnabled: 'Прокси включен', statusMessage: 'Сообщение статуса', serviceOperateConfirm: 'Подтвердить {0} сервис AI-прокси?', deleteBackendConfirm: 'Удалить аккаунт модели {0}?', @@ -945,6 +945,9 @@ const message = { failedRequests: 'Неуспешные запросы', averageTokenPerRequest: 'Среднее Token/запрос', callLogs: 'Журнал вызовов', + attemptChain: 'Цепочка попыток', + attemptIndex: 'Порядок вызова', + noAttemptDetails: 'Запрос выполнен с первой попытки, деталей fallback нет', requestId: 'Request ID', input: 'Вход', output: 'Выход', diff --git a/frontend/src/lang/modules/tr.ts b/frontend/src/lang/modules/tr.ts index 6be1e40773cd..415741b41298 100644 --- a/frontend/src/lang/modules/tr.ts +++ b/frontend/src/lang/modules/tr.ts @@ -923,8 +923,8 @@ const message = { maxBodyMb: 'Maksimum gövde boyutu (MB)', runtimeRefreshSeconds: 'Runtime yenileme aralığı (sn)', statusTitle: 'AI Proxy durumu', - serviceEnabled: 'Servis etkin', - configStatus: 'Yapılandırma durumu', + serviceEnabled: 'Servis otomatik başlatma', + proxyEnabled: 'Proxy etkin', statusMessage: 'Durum mesajı', serviceOperateConfirm: 'AI Proxy servisini {0} onaylıyor musunuz?', deleteBackendConfirm: 'Model hesabı {0} silinsin mi?', @@ -953,6 +953,9 @@ const message = { failedRequests: 'Başarısız istekler', averageTokenPerRequest: 'Ortalama Token/istek', callLogs: 'Çağrı günlükleri', + attemptChain: 'Deneme zinciri', + attemptIndex: 'Çağrı sırası', + noAttemptDetails: 'Bu istek tek denemede isabet etti; fallback ayrıntısı yok', requestId: 'Request ID', input: 'Girdi', output: 'Çıktı', diff --git a/frontend/src/lang/modules/zh-Hant.ts b/frontend/src/lang/modules/zh-Hant.ts index 55f6322c12bd..0275cf842b85 100644 --- a/frontend/src/lang/modules/zh-Hant.ts +++ b/frontend/src/lang/modules/zh-Hant.ts @@ -861,8 +861,8 @@ const message = { maxBodyMb: '最大請求體(MB)', runtimeRefreshSeconds: 'Runtime 刷新間隔(秒)', statusTitle: 'AI 代理狀態', - serviceEnabled: '服務啟用', - configStatus: '配置狀態', + serviceEnabled: '服務自啟', + proxyEnabled: '代理啟用', statusMessage: '狀態資訊', serviceOperateConfirm: '確認{0} AI 代理服務?', deleteBackendConfirm: '確認刪除模型帳號 {0}?', @@ -891,6 +891,9 @@ const message = { failedRequests: '失敗請求', averageTokenPerRequest: '平均 Token/請求', callLogs: '呼叫日誌', + attemptChain: '呼叫鏈路', + attemptIndex: '調用順序', + noAttemptDetails: '本次請求一次命中,無 fallback 明細', requestId: 'Request ID', input: '輸入', output: '輸出', diff --git a/frontend/src/lang/modules/zh.ts b/frontend/src/lang/modules/zh.ts index df20e96d0a56..7a140fc2ab00 100644 --- a/frontend/src/lang/modules/zh.ts +++ b/frontend/src/lang/modules/zh.ts @@ -858,8 +858,8 @@ const message = { maxBodyMb: '最大请求体(MB)', runtimeRefreshSeconds: 'Runtime 刷新间隔(秒)', statusTitle: 'AI 代理状态', - serviceEnabled: '服务启用', - configStatus: '配置状态', + serviceEnabled: '服务自启', + proxyEnabled: '代理启用', statusMessage: '状态信息', serviceOperateConfirm: '确认{0} AI 代理服务?', deleteBackendConfirm: '确认删除模型账号 {0}?', @@ -889,6 +889,9 @@ const message = { failedRequests: '失败请求', averageTokenPerRequest: '平均 Token/请求', callLogs: '调用日志', + attemptChain: '调用链路', + attemptIndex: '调用顺序', + noAttemptDetails: '本次请求一次命中,无 fallback 明细', requestId: 'Request ID', input: '输入', output: '输出', @@ -916,6 +919,7 @@ const message = { tokenizerPlaceholder: '请选择或输入本地分词器目录,例如 /opt/1panel/tokenizers/DeepSeek-V3', runConfig: '运行配置', rawResult: '原始结果', + resultMetrics: '结果指标', contextTokens: '上下文长度', contextTokensHelper: '本次测试的输入 Token 与输出 Token 上限之和。', outputThroughput: '输出吞吐', @@ -926,12 +930,25 @@ const message = { firstTokenLatencyHelper: '从请求发出到收到第一个 Token 的时间,越低表示响应越快。', inputTokens: '输入 Token', outputTokens: '输出 Token', + tokenValueHelper: '请输入正整数或 k 单位,例如 512、1k、32k', numPrompts: '请求数量', concurrency: '并发数', requestRate: '请求速率', requestRateUnlimited: '不限速(最大吞吐)', requestRateCustom: '自定义 QPS', requestRateCustomPlaceholder: '请输入每秒请求数,如 2.5', + successfulRequests: '成功请求', + failedRequests: '失败请求', + requestThroughput: '请求吞吐', + ttftMean: 'TTFT 平均', + ttftMedian: 'TTFT 中位数', + ttftP99: 'TTFT P99', + tpotMean: 'TPOT 平均', + tpotMedian: 'TPOT 中位数', + tpotP99: 'TPOT P99', + itlMean: 'ITL 平均', + itlMedian: 'ITL 中位数', + itlP99: 'ITL P99', timeout: '超时时间(秒)', image: 'vLLM 镜像', ignoreEos: '忽略 EOS',