-
Add DeepSeek Account
+ 添加 DeepSeek 账号
diff --git a/webui/src/components/ApiTester.jsx b/webui/src/components/ApiTester.jsx
index 3dfed35..7d19bf0 100644
--- a/webui/src/components/ApiTester.jsx
+++ b/webui/src/components/ApiTester.jsx
@@ -15,8 +15,8 @@ import {
import clsx from 'clsx'
const MODELS = [
- { id: 'deepseek-chat', name: 'DeepSeek Chat', icon: MessageSquare, desc: 'General purpose chat model' },
- { id: 'deepseek-reasoner', name: 'DeepSeek Reasoner', icon: Cpu, desc: 'Optimized for reasoning tasks' },
+ { id: 'deepseek-chat', name: 'DeepSeek Chat', icon: MessageSquare, desc: '通用聊天模型' },
+ { id: 'deepseek-reasoner', name: 'DeepSeek Reasoner', icon: Cpu, desc: '推理能力增强模型' },
// Removed search models as they might be deprecated or identical to chat with search tool
]
@@ -58,7 +58,7 @@ export default function ApiTester({ config, onMessage, authFetch }) {
try {
const key = apiKey || (config.keys?.[0] || '')
if (!key) {
- onMessage('error', 'Please provide an API Key')
+ onMessage('error', '请提供 API 密钥')
setLoading(false)
setIsStreaming(false)
return
@@ -80,8 +80,8 @@ export default function ApiTester({ config, onMessage, authFetch }) {
if (!res.ok) {
const data = await res.json()
- setResponse({ success: false, error: data.error?.message || 'Request failed' })
- onMessage('error', data.error?.message || 'Request failed')
+ setResponse({ success: false, error: data.error?.message || '请求失败' })
+ onMessage('error', data.error?.message || '请求失败')
setLoading(false)
setIsStreaming(false)
return
@@ -127,7 +127,7 @@ export default function ApiTester({ config, onMessage, authFetch }) {
}
} catch (e) {
if (e.name === 'AbortError') {
- onMessage('info', 'Generation stopped')
+ onMessage('info', '已停止生成')
} else {
onMessage('error', 'Network error: ' + e.message)
setResponse({ error: e.message, success: false })
@@ -184,11 +184,11 @@ export default function ApiTester({ config, onMessage, authFetch }) {
- Configuration
+ 模型选项
-
+
{MODELS.map(m => {
const Icon = m.icon
@@ -217,13 +217,13 @@ export default function ApiTester({ config, onMessage, authFetch }) {
-
+
-
+
setApiKey(e.target.value)}
/>
@@ -256,7 +256,7 @@ export default function ApiTester({ config, onMessage, authFetch }) {
- You
+ 用户
{message}
@@ -290,7 +290,7 @@ export default function ApiTester({ config, onMessage, authFetch }) {
- Reasoning Process
+ 思维链/推理过程
{streamingThinking || response?.response?.thinking}
@@ -316,7 +316,7 @@ export default function ApiTester({ config, onMessage, authFetch }) {
- Welcome Back
+ 欢迎回来
- Enter your admin key to access the dashboard
+ 请输入管理员密钥访问控制面板
@@ -60,7 +60,7 @@ export default function Login({ onLogin, onMessage }) {
@@ -108,7 +108,7 @@ export default function Login({ onLogin, onMessage }) {
) : (
<>
-
Access Dashboard
+
进入控制面板
>
)}
@@ -118,7 +118,7 @@ export default function Login({ onLogin, onMessage }) {
- Secure Session • 24h Expiration
+ 安全会话 • 24小时有效
diff --git a/webui/src/components/VercelSync.jsx b/webui/src/components/VercelSync.jsx
index e9d63d0..cda0910 100644
--- a/webui/src/components/VercelSync.jsx
+++ b/webui/src/components/VercelSync.jsx
@@ -32,11 +32,11 @@ export default function VercelSync({ onMessage, authFetch }) {
const tokenToUse = preconfig?.has_token && !vercelToken ? '__USE_PRECONFIG__' : vercelToken
if (!tokenToUse && !preconfig?.has_token) {
- onMessage('error', 'Vercel Token is required')
+ onMessage('error', '需要 Vercel 访问令牌')
return
}
if (!projectId) {
- onMessage('error', 'Project ID is required')
+ onMessage('error', '需要项目 ID')
return
}
@@ -58,7 +58,7 @@ export default function VercelSync({ onMessage, authFetch }) {
onMessage('success', data.message)
} else {
setResult({ ...data, success: false })
- onMessage('error', data.detail || 'Sync failed')
+ onMessage('error', data.detail || '同步失败')
}
} catch (e) {
onMessage('error', 'Network error')
@@ -74,26 +74,26 @@ export default function VercelSync({ onMessage, authFetch }) {
- Vercel Deployment
+ Vercel 部署
- Sync your current key and account configuration directly to Vercel environment variables.
+ 将当前密钥和账号配置直接同步到 Vercel 环境变量中。
setVercelToken(e.target.value)}
/>
@@ -106,20 +106,20 @@ export default function VercelSync({ onMessage, authFetch }) {
-
+
setProjectId(e.target.value)}
/>
-
Found in Project Settings → General
+
可在项目设置 (Project Settings) → 常规 (General) 中找到
- Syncing...
+ 同步中...
) : (
- Sync & Redeploy
+ 同步并重新部署
)}
- This will trigger a new deployment on Vercel which takes about 30-60 seconds.
+ 这将触发 Vercel 的重新部署,大约需要 30-60 秒。
@@ -170,14 +170,14 @@ export default function VercelSync({ onMessage, authFetch }) {
)}
- {result.success ? 'Sync Successful' : 'Sync Failed'}
+ {result.success ? '同步成功' : '同步失败'}
{result.message}
{result.deployment_url && (
)}
@@ -189,24 +189,24 @@ export default function VercelSync({ onMessage, authFetch }) {
- How it works
+ 工作原理
-
1
-
Current configuration (Keys & Accounts) is exported to a JSON string.
+ 当前配置 (密钥和账号) 被导出为 JSON 字符串。
-
2
-
The JSON is encoded to Base64 to ensure format compatibility.
+ JSON 被编码为 Base64 以确保格式兼容性。
-
3
-
We update the DS2API_CONFIG_JSON env variable in your Vercel project.
+ 更新 Vercel 项目中的 DS2API_CONFIG_JSON 环境变量。
-
4
-
A redeployment is triggered to apply the new environment variables.
+ 触发重新部署以应用新的环境变量。