Files
KimiCodeSwitch/src/i18n/en.ts
T
KimiSwitch Dev f35924e15c v0.6.3: 添加默认供应商支持
- 新增 StepFun Plan 套餐预设
- 供应商编辑页 API Key 下方添加获取 Key 链接(支持推广链接)
- 修复链接无法打开浏览器的问题(Rust open_external_url)
- 无推广链接时回退打开官网
- 必填字段(供应商名称/API Key/请求地址)添加红色 * 标注
- 用户自定义预设方案文档
2026-07-30 14:19:27 +08:00

393 lines
13 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import type { TranslationKey } from "./zh";
export const enTranslations: Record<TranslationKey, string> = {
// App / global
appTitle: "Kimi Switch",
loading: "Loading...",
loadTimeout: "Loading is taking a while. Try restarting the app if it stays stuck.",
loadFailed: "Failed to load:",
retry: "Retry",
saveConfig: "Save Config",
reloadConfig: "Reload Config",
openConfigDir: "Open Config Dir",
unsavedConfirm: "You have unsaved changes. Are you sure you want to reload?",
validationNoApiKey: "Missing API key",
validationNoBaseUrl: "Missing base URL",
validationNoModels: "No models configured",
validationBlankModels: "Model entries with empty model id: {aliases}",
saveValidationConfirm:
"The following providers are not fully configured. Save anyway?\n\n{details}\n\n(Click OK to save to config.toml as-is; click Cancel to keep editing.)",
providerNotFound: "Provider not found",
backToList: "Back to list",
syncToOmp: "Sync to OMP",
syncedToOmp: "Synced to OMP: ",
ompOverwriteConfirm: "OMP already has provider \"{existing}\". Replace with \"{name}\"?",
deleteProviderConfirm: "Delete provider {name}?",
// Provider list
providers: "Providers",
dashboard: "Dashboard",
sessions: "Sessions",
addProvider: "Add Provider",
noProviders: "No providers yet",
addFirstProvider: "Add first provider",
noUrl: "No URL",
modelCount: "{count} models",
ompActive: "OMP Active",
defaultModel: "Default: {name}",
edit: "Edit",
delete: "Delete",
copyProvider: "Duplicate provider",
testConnectivity: "Test connectivity",
testing: "Testing...",
connectivityOk: "{name} reachable ({latency}ms)",
connectivitySlow: "{name} reachable but slow ({latency}ms)",
connectivityFail: "{name} unreachable: {error}",
copiedProvider: "Duplicated as {name}",
// Provider edit
editProvider: "Edit Provider",
back: "Back",
basicInfo: "Basic Info",
modelMapping: "Model Mapping",
configJson: "Config JSON",
providerName: "Provider Name",
note: "Note",
notePlaceholder: "e.g. company account",
officialUrl: "Official URL",
managedProvider: "Managed provider (no credentials needed)",
apiSettings: "API Settings",
apiFormat: "API Format",
authField: "Auth Field",
apiKey: "API Key",
getApiKeyLink: "Get API Key",
show: "Show",
hide: "Hide",
requestUrl: "Request URL",
fullUrl: "Full URL",
baseUrlHint: "Enter a {type} API-compatible endpoint without a trailing slash.",
envPairs: "Env pairs",
addEnv: "+ Add",
modelMappingDesc: "Display name only affects the /model menu; 1M declares context capability for Kimi Code.",
oneClickSetup: "One-click setup",
fetchModels: "Fetch models",
fetchingModels: "Fetching...",
discoveredModels: "Discovered {count} models",
addSelected: "Add selected",
alreadyAdded: "Added",
displayName: "Display name",
actualModel: "Actual model",
contextSize: "Context size",
supports1M: "Supports 1M",
default: "Default",
operation: "Operation",
isDefault: "Default",
setDefault: "Set default",
deleteModelConfirm: "Delete model {alias}?",
noModelMappings: "No model mappings",
addModelMapping: "+ Add model mapping",
readOnlyPreview: "Editable JSON",
apply: "Apply",
invalidJson: "Invalid JSON: {message}",
clickToSelectIcon: "Click to select icon",
clickToChangeIcon: "Click to change icon",
selectIcon: "Select icon",
clearIcon: "Clear icon",
iconPickerSearch: "Search icons",
iconPickerSearchPlaceholder: "Type an icon name...",
iconPickerNoResults: "No matching icons found",
// Agent / target
target: "Target",
targetKimi: "Kimi Code",
targetOmp: "OMP",
targetQwen: "Qwen Code",
agent: "Agent",
agentKimiCode: "Kimi Code",
agentPi: "Pi",
activate: "Activate",
activated: "Activated",
disabled: "Disabled",
switchTo: "Switch to",
inUse: "In use",
switchReloadHint: "After switching providers, run /reload in Kimi Code to apply the change.",
reloadCopiedHint: "Provider switched. /reload copied to clipboard; paste it in Kimi Code.",
unsavedChanges: "Unsaved changes",
qwenActivateNotImplemented: "Qwen Code activation will be implemented in a follow-up.",
agentSettings: "Global Settings",
enableThinking: "Enable thinking",
thinkingLevel: "Thinking level",
thinkingKeep: "Keep thinking content",
thinkingLow: "Low",
thinkingMedium: "Medium",
thinkingHigh: "High",
thinkingMax: "Max",
thinkingContextHint: "Thinking uses more context. Ensure the model context length and reserved size are sufficient.",
loopControlSettings: "Loop Control",
maxRetriesPerStep: "Max retries per step",
reservedContextSize: "Reserved context size",
backgroundSettings: "Background Tasks",
maxRunningTasks: "Max running tasks",
keepAliveOnExit: "Keep alive on exit",
permissionRules: "Permission Rules",
permissionDecision: "Decision",
permissionPattern: "Pattern",
permissionAllow: "Allow",
permissionDeny: "Deny",
permissionAsk: "Ask",
addRule: "+ Add rule",
addCommonRules: "Add common rules",
hooks: "Lifecycle Hooks",
hookEvent: "Event",
hookMatcher: "Matcher",
hookCommand: "Command",
hookTimeout: "Timeout",
addHook: "+ Add hook",
importConfig: "Import current config",
importConfigConfirm: "Importing will overwrite unsaved changes. Continue?",
importConfigFailed: "Import failed: {message}",
capabilities: "Capabilities",
fetchEnableThinking: "Enable thinking for fetched models",
capThinking: "Thinking",
capAlwaysThinking: "Always Thinking",
capImageIn: "Image Input",
capVideoIn: "Video Input",
capToolUse: "Tool Use",
customCapabilities: "Other capabilities (comma-separated)",
// Sessions
sessionsTitle: "Sessions",
sessionsSubtitle:
"Browse, preview, archive, or delete Kimi Code sessions by workspace. Archiving keeps data on disk.",
workspaces: "Workspaces",
workspaceIsolatedHint: "Sessions are isolated per workspace",
allWorkspaces: "All workspaces",
emptyWorkspace: "Empty",
deleteWorkspace: "Delete workspace",
noSessions: "No sessions",
statusActive: "Active",
statusArchived: "Archived",
statusAll: "All",
selectAll: "Select all",
deselectAll: "Deselect all",
selectedCount: "{n} selected",
archive: "Archive",
unarchive: "Unarchive",
sessionTitle: "Session",
workspace: "Workspace",
status: "Status",
size: "Size",
updated: "Updated",
actions: "Actions",
sessionsInView: "{n} sessions",
isolatedToWorkspace: "this workspace only",
openPreview: "Open preview",
scanning: "Scanning…",
refresh: "Refresh",
refreshing: "Refreshing…",
refreshed: "Refreshed",
cancel: "Cancel",
confirmDeleteTitle: "Delete session forever?",
confirmDeleteSession:
"This cannot be undone. Prefer archive if you only want it out of the way.",
confirmBulkTitle: "Delete selected forever?",
confirmBulkDelete: "Permanently delete {n} sessions. This cannot be undone.",
confirmDeleteWorkspaceTitle: "Delete empty workspace?",
confirmDeleteWorkspace: "Only workspaces with no sessions can be removed.",
deleteForever: "Delete forever",
previewTitle: "Session preview",
previewHint:
"Roles and truncated text only — secrets and raw tool dumps are omitted.",
previewEmpty: "No previewable messages",
previewTruncated: "Preview truncated",
roleUser: "User",
roleAssistant: "Assistant",
roleSystem: "System",
// Heatmap
noData: "No data",
heatLess: "Less",
heatMore: "More",
requests: "Requests",
cacheHitRate: "Cache hit rate",
// Daily detail modal
dayDetail: "Daily usage detail",
close: "Close",
totalTokens: "Total tokens",
cost: "Cost",
modelDistribution: "Model distribution",
providerDistribution: "Provider distribution",
modalEscHint: "Press Esc or click outside to close",
doubleClickHint: "Double-click for details",
// Languages
language: "Language",
zh: "中文",
en: "English",
// Theme & Settings
themeLight: "Light",
themeDark: "Dark",
themeAuto: "Auto",
settings: "Settings",
settingsTitle: "Settings",
settingsAppearance: "Appearance",
settingsUpdates: "Updates",
settingsAbout: "About",
checkUpdate: "Check for updates",
checking: "Checking…",
upToDate: "You're up to date",
updateAvailable: "Update available",
currentVersion: "Current version",
latestVersion: "Latest version",
downloadUpdate: "Download update",
downloading: "Downloading…",
downloadComplete: "Download complete, click to install",
install: "Install",
updateCheckFailed: "Update check failed",
lastChecked: "Last checked",
appDescription: "Windows desktop LLM provider config manager",
referenceProject: "Reference project",
// Validation errors
emptyProviderName: "Provider name is empty",
duplicateProviderName: "Duplicate provider name: {0}",
missingCredentials: "Provider '{0}' is missing credentials (api_key or env key)",
ambiguousCredentials: "Provider '{0}' has both direct and env credentials; only one source is allowed",
missingVertexProject: "Vertex provider '{0}' is missing GOOGLE_CLOUD_PROJECT or GOOGLE_CLOUD_LOCATION",
emptyModelAlias: "Model alias is empty",
duplicateModelAlias: "Duplicate model alias: {0}",
unknownModelProvider: "Model '{0}' references unknown provider '{1}'",
emptyModelId: "Model '{0}' has an empty model ID",
invalidMaxContextSize: "Model '{0}' has an invalid max_context_size",
// Dashboard — ranges / status
rangeToday: "Today",
range7d: "7d",
range30d: "30d",
rangeAll: "All",
dashLoadFailed: "Failed to load",
// Dashboard — KPI labels
kpiRequests: "Requests",
kpiInputOther: "Non-cached input",
kpiOutput: "Output",
kpiCacheRead: "Cache read",
kpiCacheCreation: "Cache creation",
kpiCacheHit: "Cache hit",
kpiCost: "Est. cost",
// Dashboard — cards
cardHeatmap: "Full-year heatmap",
cardHeatmapSub: "Coloured by token volume",
cardDailyTrend: "Usage trend",
cardDailyTrendSubCapped: "Last 30 days · {n} days total",
tabModelTrend: "Model usage trend",
tabProviderTrend: "Provider–model usage trend",
tabDailyTrend: "Daily usage trend",
providerUnknown: "Unknown provider",
cardDailyTrendSub: "{n} days",
cardModelUsage: "Model usage",
cardModelUsageSub: "{n} models",
cardRecent: "Recent requests",
cardRecentCapped: "Showing first {n} / {m}",
cardRecentCount: "{n} entries",
// Dashboard — table columns / units
colModel: "Model",
colTokens: "Tokens",
colCacheHit: "Cache hit",
colTime: "Time",
colInput: "Input",
colOutput: "Output",
colCacheRead: "Cache read",
unitTimes: "requests",
estimate: "est.",
collapse: "Collapse",
expandAll: "Expand all ({n})",
// Dashboard — pagination
paginationPage: "Page {x} / {y}",
paginationRange: "{x}–{y}",
paginationPerPage: "{n} per page",
pageFirst: "First",
pagePrev: "Previous",
pageNext: "Next",
pageLast: "Last",
// Dashboard — footer / attribution
footerScanned: "Scanned {n} files · {m} records",
dashboardAttribution: "Dashboard ported from",
sessionsAttribution: "Session manager ported from",
attributionSuffix: "(MIT, © JochenYang)",
// Sessions — preview
previewCollapseChars: "Collapse · {n} chars",
previewExpandChars: "Expand · {n} chars",
// Provider presets
presetPickerTitle: "Choose a provider preset",
presetSearchPlaceholder: "Search presets...",
presetSortOriginal: "Default",
presetSortAlpha: "A-Z",
presetNoResults: "No matching presets",
presetCustomConfig: "+ Custom configuration",
presetFooterHint: "Presets only pre-fill the form; every field stays editable afterwards.",
presetCategoryOfficial: "Official",
presetCategoryCnOfficial: "China",
presetCategoryThirdParty: "Third-party",
presetCategoryAggregator: "Aggregator",
presetNameAnthropic: "Anthropic",
presetNameKimiCoding: "Kimi For Coding",
presetNameMoonshot: "Moonshot Platform",
presetNameDeepseek: "DeepSeek",
presetNameZhipuApi: "Zhipu GLM (Pay-as-you-go)",
presetNameZhipuCoding: "Zhipu GLM Coding Plan",
presetNameZaiApi: "z.ai (Pay-as-you-go)",
presetNameZaiCoding: "z.ai Coding Plan",
presetNameBailian: "Alibaba Bailian",
presetNameMinimax: "MiniMax",
presetNameMinimaxTokenPlan: "MiniMax Token Plan",
presetNameStepfun: "StepFun",
presetNameStepfunPlan: "StepFun Plan",
presetNameSiliconflow: "SiliconFlow",
presetNameNovita: "Novita AI",
presetNameOpenrouter: "OpenRouter",
presetNameOpenai: "OpenAI",
presetNameGoogleGenai: "Google AI Studio",
presetNameVolcengine: "Volcengine Ark",
presetNameOpencodeGo: "OpenCode Go",
presetNameOpencodeZen: "OpenCode Zen",
// Provider usage
usageBalance: "Balance",
usageUsed: "used",
usageRemaining: "left",
usageRefresh: "Refresh",
usageRetry: "Retry",
usageQueryFailed: "Query failed",
usageNetworkError: "Network error",
usageInvalidKey: "Invalid API key",
usageResetIn: "resets in {time}",
usageResetDone: "reset",
usageLoading: "Querying…",
// Billing mode (subscription / pay-as-you-go)
billingTabSubscription: "Subscription",
billingTabPayAsYouGo: "Pay-as-you-go",
billingTabAll: "All",
billingBadgeSubscription: "Plan",
billingBadgePayAsYouGo: "PAYG",
// Usage trend line chart
trendLineTitle: "Usage Trend",
trendLineSub: "last {n} days",
trendLineLegendTokens: "Token usage",
trendLineLegendCacheHit: "Cache hit rate",
trendLineLegendRequests: "Requests",
trendLineShowRequests: "Show requests",
trendLineTooltip: "{date}\nTokens: {tokens}\nCache hit: {cache}\nRequests: {req}",
trendLineNoData: "No data",
};