{ "language": { "label": "Language", "english": "English", "chinese": "δΈ­ζ–‡" }, "nav": { "accounts": { "label": "Account Management", "desc": "Manage the DeepSeek account pool" }, "proxies": { "label": "Proxy IPs", "desc": "Manage outbound proxy nodes for accounts" }, "test": { "label": "API Test", "desc": "Test API connectivity and responses" }, "history": { "label": "Responses", "desc": "Browse server-side upstream response records" }, "import": { "label": "Batch Import", "desc": "Bulk import account configuration" }, "vercel": { "label": "Vercel Sync", "desc": "Sync configuration to Vercel" }, "settings": { "label": "Settings", "desc": "Edit runtime and security settings online" } }, "sidebar": { "onlineAdminConsole": "Online Admin Console", "systemStatus": "System Status", "statusOnline": "Online", "accounts": "Accounts", "keys": "Keys", "signOut": "Sign out", "version": "Version", "updateAvailable": "Update available: {latest}" }, "auth": { "expired": "Authentication expired. Please sign in again.", "checking": "Checking authentication status..." }, "errors": { "fetchConfig": "Failed to fetch configuration: {error}" }, "actions": { "cancel": "Cancel", "add": "Add", "delete": "Delete", "copy": "Copy", "generate": "Generate", "test": "Refresh token", "testing": "Refreshing...", "loading": "Loading..." }, "messages": { "deleted": "Deleted successfully", "deleteFailed": "Delete failed", "failedToAdd": "Failed to add", "networkError": "Network error.", "requestFailed": "Request failed.", "generationStopped": "Generation stopped.", "invalidJson": "Invalid JSON format.", "importFailed": "Import failed.", "copyFailed": "Copy failed." }, "landing": { "adminConsole": "Admin Console", "apiStatus": "API Status", "features": { "compatibility": { "title": "Full Compatibility", "desc": "OpenAI & Claude format support" }, "loadBalancing": { "title": "Load Balancing", "desc": "Smart rotation with stable throughput" }, "reasoning": { "title": "Deep Reasoning", "desc": "Expose reasoning traces when enabled" }, "search": { "title": "Web Search", "desc": "Integrated native web search" } } }, "accountManager": { "addKeySuccess": "API key added successfully.", "updateKeySuccess": "API key updated successfully.", "addAccountSuccess": "Account added successfully.", "updateAccountSuccess": "Account metadata updated successfully.", "requiredFields": "Password and email/mobile are required.", "deleteKeyConfirm": "Are you sure you want to delete this API key?", "deleteAccountConfirm": "Are you sure you want to delete this account?", "invalidIdentifier": "Invalid account identifier. Operation aborted.", "testAllConfirm": "Refresh all account tokens and verify login?", "testAllCompleted": "Completed: {success}/{total} refreshed", "testFailed": "Test failed: {error}", "available": "Available", "inUse": "In use", "totalPool": "Total pool", "accountsUnit": "accounts", "threadsUnit": "threads", "apiKeysTitle": "API Keys", "apiKeysDesc": "Manage the API access key pool. Click the pencil icon on each row to edit name and remark.", "addKey": "Add key", "editKeyTitle": "Edit key", "editAccountTitle": "Edit account", "copied": "Copied", "copyFailed": "Copy failed", "copyKeyTitle": "Copy key", "deleteKeyTitle": "Delete key", "noApiKeys": "No API keys found.", "accountsTitle": "DeepSeek Accounts", "accountsDesc": "Manage the DeepSeek account pool and edit name/remark.", "testAll": "Refresh all tokens", "addAccount": "Add account", "testingAllAccounts": "Refreshing tokens for all accounts...", "sessionActive": "Session active", "reauthRequired": "Retest status required", "runtimeStatusUnknown": "Will be determined after sync", "testStatusFailed": "Last test failed", "noAccounts": "No accounts found.", "modalAddKeyTitle": "Add API key", "modalEditKeyTitle": "Edit API key", "modalEditAccountTitle": "Edit account details", "newKeyLabel": "New key value", "newKeyPlaceholder": "Enter a custom API key", "keyLabel": "Key value", "keyReadonlyPlaceholder": "Key value cannot be changed", "keyReadonlyHint": "The key value is read-only. Update the name and remark instead.", "generate": "Generate", "generateHint": "Click Generate to create a random key.", "addKeyLoading": "Adding...", "addKeyAction": "Add key", "editKeyLoading": "Saving...", "editKeyAction": "Save changes", "editAccountHint": "Only name and remark can be changed here. The account identifier stays the same.", "accountIdentifierLabel": "Account identifier", "editAccountLoading": "Saving...", "editAccountAction": "Save changes", "modalAddAccountTitle": "Add DeepSeek account", "nameOptional": "Name (optional)", "namePlaceholder": "e.g. Primary Account A", "remarkOptional": "Remark (optional)", "remarkPlaceholder": "e.g. Team shared / test only", "emailOptional": "Email (optional)", "mobileOptional": "Mobile (optional)", "passwordLabel": "Password", "passwordPlaceholder": "Account password", "addAccountLoading": "Adding...", "addAccountAction": "Add account", "pageInfo": "Page {current}/{total}, {count} accounts total", "searchPlaceholder": "Search accounts...", "searchNoResults": "No accounts match your search", "sessionCount": "Sessions: {count}", "deleteAllSessions": "Delete all sessions", "deleteAllSessionsConfirm": "Are you sure you want to delete all sessions for this account? This action cannot be undone.", "deleteAllSessionsSuccess": "Successfully deleted all sessions", "accountProxyLabel": "Account proxy", "proxyNone": "Direct connection", "proxyBadge": "Proxy: {name}", "proxyUpdateSuccess": "Account proxy updated.", "envModeRiskTitle": "Environment-variable config mode detected (persistence risk)", "envModeRiskDesc": "Detected DS2API_CONFIG_JSON. If DS2API_ENV_WRITEBACK is not enabled, Admin UI edits are in-memory only and may be lost after restart.", "envModeWritebackPendingTitle": "Env mode + auto-persistence enabled (pending file handoff)", "envModeWritebackActiveTitle": "Env mode + auto-persistence active", "envModeWritebackDesc": "The app will auto-create/write the config file and transition to file-backed mode. Current persistence path: {path}" }, "proxyManager": { "title": "Proxy IPs", "desc": "Manage SOCKS egress nodes for accounts and test outbound connectivity to DeepSeek.", "addProxy": "Add proxy", "editProxy": "Edit proxy", "deleteProxy": "Delete proxy", "modalAddTitle": "Add proxy node", "modalEditTitle": "Edit proxy node", "modalDesc": "Supports socks5 and socks5h. Accounts will use the bound node as their outbound route.", "nameLabel": "Proxy name", "namePlaceholder": "Example: Hong Kong Exit A", "typeLabel": "Proxy type", "hostLabel": "Proxy host", "hostPlaceholder": "127.0.0.1 or proxy hostname", "portLabel": "Port", "usernameLabel": "Username (optional)", "usernamePlaceholder": "Proxy auth username", "passwordLabel": "Password (optional)", "passwordPlaceholder": "Proxy auth password", "passwordKeepHint": "Leave blank to keep the currently stored password.", "typeHelp": "socks5 resolves the target hostname locally before dialing through the proxy; socks5h forwards the hostname to the proxy for remote DNS resolution.", "requiredFields": "Host and port are required.", "saving": "Saving...", "testing": "Testing", "testAction": "Check proxy", "untested": "Untested", "saveAdd": "Add proxy", "saveEdit": "Save changes", "addSuccess": "Proxy added successfully.", "updateSuccess": "Proxy updated successfully.", "deleteConfirm": "Delete proxy {name}? Accounts bound to it will fall back to direct connection.", "noProxies": "No proxy nodes yet.", "authEnabled": "Auth enabled", "testSuccessShort": "Reachable {time}ms", "testFailedShort": "Test failed", "totalProxies": "Total proxies", "socks5hCount": "socks5h nodes", "authProxyCount": "Authenticated nodes" }, "apiTester": { "defaultMessage": "Hello, please introduce yourself in one sentence.", "models": { "flash": "v4 Flash (thinking on by default)", "pro": "v4 Pro (thinking on by default)", "flashSearch": "v4 Flash (with search)", "proSearch": "v4 Pro (with search)", "vision": "v4 Vision (thinking on by default)", "generic": "Compatible model", "noThinking": "thinking forced off" }, "missingApiKey": "Please provide an API key.", "requestFailed": "Request failed.", "networkError": "Network error: {error}", "requestSuccess": "{account}: Request successful ({time}ms)", "testSuccess": "{account}: Token refresh successful ({time}ms)", "config": "Configuration", "modelLabel": "Model", "modelPickerHint": "Use the dropdown to pick a model. The list scrolls automatically.", "loadingModels": "Loading models...", "loadingModelsHint": "Fetching the available model list from /v1/models.", "noModels": "No models available", "noModelsHint": "The /v1/models endpoint did not return any usable models. Check the backend configuration or API status.", "noModelsMessagePlaceholder": "No models are available right now, so the tester cannot send a request.", "streamMode": "Streaming", "accountSelector": "Account", "autoRandom": "πŸ€– Auto / Random", "apiKeyOptional": "API Key (optional)", "apiKeyDefault": "Default: {preview}", "apiKeyPlaceholder": "Enter a custom key", "modeManaged": "Managed key mode (uses account pool).", "modeDirect": "Direct token mode (requires a valid DeepSeek token).", "attachmentAccountHint": "Attached files are bound to account {account}. Sending will reuse the same account.", "fileAccountConflict": "Attached files came from different accounts. Clear them and upload again under one account.", "fileAccountMismatch": "The selected account does not match the attachment account. Switch to the bound account or clear the attachments and try again.", "statusError": "Error", "reasoningTrace": "Reasoning Trace", "generating": "Generating response...", "enterMessage": "Enter a message...", "adminConsoleLabel": "DeepSeek admin console" }, "chatHistory": { "loading": "Loading conversation history...", "loadFailed": "Failed to load conversation history.", "retentionTitle": "Retention", "retentionDesc": "The server keeps only the latest N DeepSeek upstream response records across OpenAI Chat, OpenAI Responses, Claude, and Gemini direct interfaces.", "off": "OFF", "refresh": "Refresh", "clearAll": "Clear all", "clearSuccess": "Conversation history cleared.", "clearFailed": "Failed to clear conversation history.", "deleteSuccess": "Conversation deleted.", "deleteFailed": "Failed to delete conversation.", "updateLimitFailed": "Failed to update retention limit.", "disabledSuccess": "Conversation history saving disabled.", "limitUpdated": "Retention limit updated to {limit}", "listTitle": "History", "detailTitle": "Details", "viewModeList": "List mode", "viewModeMerged": "Merged mode", "emptyTitle": "No conversation history yet", "emptyDesc": "When a supported interface talks to DeepSeek upstream and receives a response, the server saves the result here automatically.", "untitled": "Untitled conversation", "noPreview": "No preview available.", "selectPrompt": "Select a record on the left to view details.", "mergedInput": "Final message sent to DeepSeek", "emptyMergedPrompt": "No merged prompt is available.", "copyHistory": "Copy HISTORY", "downloadHistory": "Download HISTORY", "copyMerged": "Copy merged prompt", "downloadMerged": "Download merged prompt", "copySuccess": "Copied successfully.", "copyFailed": "Copy failed.", "downloadSuccess": "Downloaded successfully.", "downloadFailed": "Download failed.", "expand": "Expand", "collapse": "Collapse", "reasoningTrace": "Reasoning Trace", "failedOutput": "The request failed and no assistant output is available.", "emptyAssistantOutput": "No assistant output is available.", "emptyUserInput": "No user input is available.", "confirmClearTitle": "Clear all records?", "confirmClearDesc": "This deletes every server-side conversation record and cannot be undone.", "confirmClearAction": "Clear all", "metaTitle": "Metadata", "metaAccount": "Account", "metaElapsed": "Elapsed", "metaSurface": "Surface", "metaModel": "Model", "metaStatusCode": "Status code", "metaStream": "Output mode", "metaCaller": "Caller fingerprint", "metaTime": "Completed at", "metaUnknown": "Unknown", "backToTop": "Back to top", "backToBottom": "Jump to bottom", "streamMode": "Streaming", "nonStreamMode": "Non-streaming", "status": { "streaming": "Streaming", "success": "Success", "error": "Error", "stopped": "Stopped" }, "role": { "user": "User", "assistant": "Assistant", "tool": "Tool", "system": "System" } }, "batchImport": { "templates": { "full": { "name": "Full configuration template", "desc": "Loaded from config.example.json with keys, accounts, and defaults" }, "emailOnly": { "name": "Email-only accounts", "desc": "Batch import accounts using email login" }, "mobileOnly": { "name": "Mobile-only accounts", "desc": "Batch import accounts using mobile login" }, "keysOnly": { "name": "API keys only", "desc": "Add API access keys only" } }, "enterJson": "Please provide JSON configuration content.", "importSuccess": "Import successful: {keys} keys, {accounts} accounts", "templateLoaded": "Template loaded: {name}", "currentConfigLoaded": "Current configuration loaded.", "fetchConfigFailed": "Failed to fetch configuration.", "copySuccess": "Base64 configuration copied to clipboard.", "quickTemplates": "Quick Templates", "dataExport": "Data Export", "dataExportDesc": "Copy the Base64-encoded configuration for Vercel environment variables.", "copyBase64": "Copy Base64 config", "copied": "Copied", "variableName": "Variable name", "jsonEditor": "JSON Editor", "loadCurrentConfig": "Load current config", "applyConfig": "Apply config", "importing": "Importing...", "importComplete": "Import complete", "importSummary": "Imported {keys} API keys and updated {accounts} accounts." }, "settings": { "loadFailed": "Failed to load settings.", "nonJsonResponse": "Unexpected non-JSON response from server (status: {status}).", "save": "Save settings", "saving": "Saving...", "saveSuccess": "Settings saved and hot reloaded.", "saveFailed": "Failed to save settings.", "securityTitle": "Security", "jwtExpireHours": "JWT expiry (hours)", "newPassword": "New admin password", "newPasswordPlaceholder": "Enter new password (min 4 chars)", "updatePassword": "Update password", "updating": "Updating...", "passwordTooShort": "Password must be at least 4 characters.", "passwordUpdated": "Password updated. Please sign in again.", "passwordUpdateFailed": "Failed to update password.", "runtimeTitle": "Runtime", "accountMaxInflight": "Per-account max inflight", "accountMaxQueue": "Account max queue size", "globalMaxInflight": "Global max inflight", "tokenRefreshIntervalHours": "Managed token refresh interval (hours)", "behaviorTitle": "Behavior", "responsesTTL": "Responses store TTL (seconds)", "embeddingsProvider": "Embeddings provider", "thinkingInjectionEnabled": "Thinking format injection", "thinkingInjectionDesc": "Append a structured checklist to the latest user message before prompt assembly.", "thinkingInjectionPrompt": "Thinking format prompt", "thinkingInjectionPromptHelp": "Leave empty to use the built-in default prompt shown as the input placeholder.", "currentInputFileTitle": "Independent Split", "currentInputFileEnabled": "Independent split (by size)", "currentInputFileDesc": "Enabled by default. Once the character threshold is reached, upload the full context as a DS2API_HISTORY.txt context file.", "currentInputFileMinChars": "Current input threshold (characters)", "currentInputFileHelp": "Default is 0, which uses independent split for any non-empty input.", "modelTitle": "Model mapping", "modelAliases": "Global model aliases (JSON)", "autoDeleteTitle": "Session Cleanup Policy", "autoDeleteDesc": "Choose how DeepSeek remote chat records are cleaned up after each request completes.", "autoDeleteMode": "Deletion mode", "autoDeleteNone": "Do not delete", "autoDeleteSingle": "Delete current session", "autoDeleteAll": "Delete all sessions", "autoDeleteNoneDesc": "Keep the remote session after the request completes.", "autoDeleteSingleDesc": "Delete only the remote session created by this request.", "autoDeleteAllDesc": "Delete every remote session for the account after the request completes.", "autoDeleteWarning": "This mode deletes remote chat records. Use with caution.", "backupTitle": "Backup & Restore", "loadExport": "Load current export", "downloadExport": "Download backup file", "importModeMerge": "Merge import (default)", "importModeReplace": "Replace all import", "chooseImportFile": "Choose import file", "importNow": "Import now", "importing": "Importing...", "importPlaceholder": "Paste config JSON to import", "importEmpty": "Please input import JSON.", "importInvalidJson": "Import JSON is invalid.", "importFailed": "Import failed.", "importSuccess": "Config imported (mode: {mode}).", "importFileLoaded": "Import file content loaded.", "importFileReadFailed": "Failed to read import file.", "exportFailed": "Export failed.", "exportLoaded": "Current export loaded.", "exportDownloaded": "Backup file download started.", "exportJson": "Export JSON", "invalidJsonField": "{field} is not a valid JSON object.", "defaultPasswordWarning": "You are using the default admin password \"admin\". Please change it.", "vercelSyncHint": "Configuration changed. For Vercel deployments, sync manually in Vercel Sync and redeploy.", "autoFetchPaused": "Auto loading paused after {count} failures: {error}", "retryLoad": "Retry now" }, "login": { "welcome": "Welcome back", "subtitle": "Enter your admin key to continue", "adminKeyLabel": "Admin key", "adminKeyPlaceholder": "Enter your admin key...", "rememberSession": "Remember this session", "signIn": "Sign in", "secureConnection": "Secure connection", "adminPortal": "DS2API admin portal", "signInFailed": "Sign-in failed.", "networkError": "Network error: {error}" }, "vercel": { "tokenRequired": "Vercel access token is required.", "projectRequired": "Project ID is required.", "syncFailed": "Sync failed.", "networkError": "Network error.", "title": "Vercel Deployment", "description": "Sync the current keys and accounts directly to Vercel environment variables.", "tokenLabel": "Vercel Access Token", "getToken": "Get token", "tokenPlaceholderPreconfig": "Using preconfigured token", "tokenPlaceholder": "Enter Vercel access token", "projectIdLabel": "Project ID", "projectIdHint": "Find it in Project Settings β†’ General.", "teamIdLabel": "Team ID", "optional": "optional", "saveCredentials": "Remember Vercel credentials", "saveCredentialsHint": "Save the token, project ID, and team ID for the next sync.", "syncing": "Syncing...", "syncRedeploy": "Sync & redeploy", "redeployHint": "This triggers a Vercel redeploy and usually takes 30–60 seconds.", "syncSucceeded": "Sync succeeded", "syncFailedLabel": "Sync failed", "openDeployment": "Open deployment", "statusSynced": "Synced", "statusNotSynced": "Not synced", "statusNeverSynced": "Never synced", "lastSyncTime": "Last sync: {time}", "draftDiffers": "Frontend draft differs from env config. Click Sync & redeploy.", "pollPaused": "Status polling paused after {count} failures.", "manualRefresh": "Refresh manually", "howItWorks": "How it works", "steps": { "one": "The current configuration (keys and accounts) is exported as JSON.", "two": "The JSON is Base64-encoded for safe formatting.", "three": "Update the env var in Vercel:", "four": "Trigger a redeploy to apply the updated environment variables." } } }