feat: add some translate (#12678)

This commit is contained in:
CityFun
2026-05-21 12:37:33 +08:00
committed by zhengkunwang223
parent 1896aed973
commit ff5c6e878e
10 changed files with 81 additions and 26 deletions
+19 -2
View File
@@ -945,8 +945,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}?',
@@ -976,6 +976,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',
@@ -1004,6 +1007,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',
@@ -1015,12 +1019,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',
+6 -4
View File
@@ -956,8 +956,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}?',
@@ -986,6 +986,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',
@@ -2523,8 +2526,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.',
+5 -2
View File
@@ -946,8 +946,8 @@ const message = {
maxBodyMb: '最大リクエスト本文MB',
runtimeRefreshSeconds: 'Runtime 更新間隔',
statusTitle: 'AI プロキシ状態',
serviceEnabled: 'サービス有効',
configStatus: '設定状態',
serviceEnabled: 'サービス自動起動',
proxyEnabled: 'プロキシ有効',
statusMessage: '状態メッセージ',
serviceOperateConfirm: 'AI プロキシサービスを {0} しますか',
deleteBackendConfirm: 'モデルアカウント {0} を削除しますか',
@@ -976,6 +976,9 @@ const message = {
failedRequests: '失敗リクエスト',
averageTokenPerRequest: '平均 Token/リクエスト',
callLogs: '呼び出しログ',
attemptChain: '試行チェーン',
attemptIndex: '呼び出し順',
noAttemptDetails: 'このリクエストは 1 回で命中しましたfallback 明細はありません',
requestId: 'Request ID',
input: '入力',
output: '出力',
+6 -4
View File
@@ -930,8 +930,8 @@ const message = {
maxBodyMb: '최대 요청 본문(MB)',
runtimeRefreshSeconds: 'Runtime 새로고침 간격()',
statusTitle: 'AI 프록시 상태',
serviceEnabled: '서비스 활성화',
configStatus: '설정 상태',
serviceEnabled: '서비스 자동 시작',
proxyEnabled: '프록시 활성화',
statusMessage: '상태 메시지',
serviceOperateConfirm: 'AI 프록시 서비스를 {0}하시겠습니까?',
deleteBackendConfirm: '모델 계정 {0}() 삭제하시겠습니까?',
@@ -960,6 +960,9 @@ const message = {
failedRequests: '실패한 요청',
averageTokenPerRequest: '평균 Token/요청',
callLogs: '호출 로그',
attemptChain: '시도 체인',
attemptIndex: '호출 순서',
noAttemptDetails: ' 요청은 번에 적중했으며 fallback 상세가 없습니다',
requestId: 'Request ID',
input: '입력',
output: '출력',
@@ -2411,8 +2414,7 @@ const message = {
expiredHelper: '현재 비밀번호가 만료되었습니다. 비밀번호를 다시 변경하십시오.',
timeoutHelper: '패널 비밀번호가 {0} 만료됩니다. 만료 비밀번호를 재설정해야 합니다.',
complexity: '복잡성 검증',
complexityHelper:
'활성화하면 비밀번호는 8-30 자이며 영문, 숫자, 특수 문자 최소 가지를 포함해야 합니다.',
complexityHelper: '활성화하면 비밀번호는 8-30 자이며 영문, 숫자, 특수 문자 최소 가지를 포함해야 합니다.',
bindDomain: '도메인 바인딩',
unBindDomain: '도메인 바인딩 해제',
panelSSL: '패널 SSL',
+5 -2
View File
@@ -955,8 +955,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}?',
@@ -985,6 +985,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',
+6 -4
View File
@@ -951,8 +951,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}?',
@@ -981,6 +981,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',
@@ -2619,8 +2622,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.',
+5 -2
View File
@@ -945,8 +945,8 @@ const message = {
maxBodyMb: 'Максимальный размер тела (MB)',
runtimeRefreshSeconds: 'Интервал обновления runtime (с)',
statusTitle: 'Статус AI-прокси',
serviceEnabled: 'Сервис включен',
configStatus: 'Статус конфигурации',
serviceEnabled: 'Автозапуск сервиса',
proxyEnabled: 'Прокси включен',
statusMessage: 'Сообщение статуса',
serviceOperateConfirm: 'Подтвердить {0} сервис AI-прокси?',
deleteBackendConfirm: 'Удалить аккаунт модели {0}?',
@@ -975,6 +975,9 @@ const message = {
failedRequests: 'Неуспешные запросы',
averageTokenPerRequest: 'Среднее Token/запрос',
callLogs: 'Журнал вызовов',
attemptChain: 'Цепочка попыток',
attemptIndex: 'Порядок вызова',
noAttemptDetails: 'Запрос выполнен с первой попытки, деталей fallback нет',
requestId: 'Request ID',
input: 'Вход',
output: 'Выход',
+5 -2
View File
@@ -953,8 +953,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?',
@@ -983,6 +983,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ı',
+5 -2
View File
@@ -890,8 +890,8 @@ const message = {
maxBodyMb: '最大請求體(MB',
runtimeRefreshSeconds: 'Runtime 刷新間隔(秒)',
statusTitle: 'AI 代理狀態',
serviceEnabled: '服務啟',
configStatus: '配置狀態',
serviceEnabled: '服務啟',
proxyEnabled: '代理啟用',
statusMessage: '狀態資訊',
serviceOperateConfirm: '確認{0} AI 代理服務?',
deleteBackendConfirm: '確認刪除模型帳號 {0}',
@@ -920,6 +920,9 @@ const message = {
failedRequests: '失敗請求',
averageTokenPerRequest: '平均 Token/請求',
callLogs: '呼叫日誌',
attemptChain: '呼叫鏈路',
attemptIndex: '調用順序',
noAttemptDetails: '本次請求一次命中,無 fallback 明細',
requestId: 'Request ID',
input: '輸入',
output: '輸出',
+19 -2
View File
@@ -887,8 +887,8 @@ const message = {
maxBodyMb: '最大请求体(MB',
runtimeRefreshSeconds: 'Runtime 刷新间隔(秒)',
statusTitle: 'AI 代理状态',
serviceEnabled: '服务启',
configStatus: '配置状态',
serviceEnabled: '服务启',
proxyEnabled: '代理启用',
statusMessage: '状态信息',
serviceOperateConfirm: '确认{0} AI 代理服务?',
deleteBackendConfirm: '确认删除模型账号 {0}',
@@ -918,6 +918,9 @@ const message = {
failedRequests: '失败请求',
averageTokenPerRequest: '平均 Token/请求',
callLogs: '调用日志',
attemptChain: '调用链路',
attemptIndex: '调用顺序',
noAttemptDetails: '本次请求一次命中,无 fallback 明细',
requestId: 'Request ID',
input: '输入',
output: '输出',
@@ -945,6 +948,7 @@ const message = {
tokenizerPlaceholder: '请选择或输入本地分词器目录,例如 /opt/1panel/tokenizers/DeepSeek-V3',
runConfig: '运行配置',
rawResult: '原始结果',
resultMetrics: '结果指标',
contextTokens: '上下文长度',
contextTokensHelper: '本次测试的输入 Token 与输出 Token 上限之和。',
outputThroughput: '输出吞吐',
@@ -955,12 +959,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',