export default {
  settings: {
    // ===== Page title =====
    title: '⚙️ Settings',

    // ===== AI Provider panel =====
    panelAiProvider: '🤖 AI Model Config',
    addProvider: '+ Add Provider',
    editProviderTitle: 'Edit Provider',
    addProviderTitle: 'Add Provider',
    emptyProvider: 'No AI provider. Click above to add.',
    badgeDefault: 'Default',
    actionSetDefault: 'Set as default',
    detailBaseUrl: 'Base URL',
    detailModel: 'Model',
    detailApiKey: 'API Key',
    detailPoolEnabled: 'In load-balance pool',
    detailPoolWeight: 'Pool selection weight',
    badgePoolDisabled: 'Disabled',
    descPoolEnabled: 'When on, participates in main-chain routing/pool selection; off = config retained but never selected',
    descPoolWeight: '0-100, higher weight preferred as primary; equal weights ~ round-robin (backend clamps [0,100])',
    toastPoolUpdateOk: 'Load-balance pool config updated',
    toastPoolUpdateFail: 'Failed to update pool config: {msg}',

    // Provider form
    labelName: 'Name',
    labelProviderType: 'Protocol',
    labelBaseUrl: 'Base URL',
    labelApiKey: 'API Key',
    labelDefaultModel: 'Default',
    phProviderName: 'e.g. DeepSeek, GLM-4',
    phBaseUrl: 'https://api.deepseek.com',
    phApiKey: 'sk-...',
    phDefaultModel: 'deepseek-chat',
    providerTypeOpenaiCompat: 'OpenAI-compatible (DeepSeek / GLM v4 / OpenAI)',
    providerTypeAnthropic: 'Anthropic-compatible (GLM subscription / Claude)',
    saving: 'Saving...',

    // Model fetch (F-01 phase 6)
    testConnection: 'Test connection & fetch models',
    fetchingModels: 'Fetching...',
    fetchHintSaveFirst: 'Save the provider first, then fetch models',
    labelWeight: 'Weight',
    modelListTitle: 'Fetched models ({count})',
    modelListHint: 'Enabled / weight are session-local edits; the next "Test connection" overwrites with fresh probe results',
    saveModels: 'Save model config',
    toastFetchOk: 'Fetched {count} models',
    toastFetchFail: 'Fetch failed: {msg}',
    fetchFailedTimeout: 'Fetch timed out, check that the Base URL is reachable: {msg}',
    fetchFailedAuth: 'Authentication failed, check your API Key: {msg}',
    fetchFailedNotFound: 'Endpoint not found, this vendor may not support model listing: {msg}',
    toastModelEditLocalOnly: 'Enabled / weight are local edits, overwritten on next fetch',

    // Model trait tags (modality + capability + probe source; cost/intel 去除见 UX-260618-04)
    tagModality: { text: 'Text', vision: 'Vision', audio: 'Audio', video: 'Video' },
    tagCapability: { tool_use: 'Tool use', embedding: 'Embedding', code_gen: 'Code' },
    tagSource: { user_set: 'Manual', preset_table: 'Preset', heuristic: 'Heuristic', default: 'Default' },

    // ===== Connection panel =====
    panelConnection: '🔗 Connections',
    addConnection: '+ Add connection',
    editConnectionTitle: 'Edit connection',
    addConnectionTitle: 'Add connection',
    emptyConnection: 'No connection yet. Click the button above to add one.',
    labelType: 'Type',
    labelHost: 'Host',
    labelPort: 'Port',
    labelUser: 'Username',
    phConnName: 'flux_dev',
    phHost: '127.0.0.1',
    phPort: '3306',
    phUser: 'root',

    // ===== General settings panel =====
    panelGeneral: '🎨 General',
    labelTheme: 'Theme',
    descTheme: 'Dark / light',
    themeDark: '🌙 Dark',
    themeLight: '☀️ Light',
    themeSystem: '💻 System',

    labelLanguage: 'Language',
    descLanguage: 'Interface language',

    labelAiLanguage: 'AI language',
    descAiLanguage: 'Default AI reply language',
    aiLanguageAuto: '🔄 Follow interface language',
    aiLanguageZh: '🇨🇳 简体中文',
    aiLanguageEn: '🇺🇸 English',

    labelAutoExecute: 'Auto-execute',
    descAutoExecute: 'Let AI auto-execute low-risk actions',

    labelLogLevel: 'Log level',
    descLogLevel: 'Verbosity of workflow logs',

    labelShowTokenUsage: 'Show token usage',
    descShowTokenUsage: 'Show token consumption of each reply in conversations',

    labelGlobalConcurrency: 'Global max concurrency',
    descGlobalConcurrency: 'Shared cap on simultaneous LLM requests across all conversations',

    labelPerConvConcurrency: 'Per-conversation concurrency',
    descPerConvConcurrency: 'Concurrent LLM calls within one conversation (main loop / title / distill shared)',

    labelAgentMaxIterations: 'Agent max iterations',
    descAgentMaxIterations: 'Max rounds of the agentic loop (stream → tool → feedback) (1-50, default 10); changes take effect on the next message',

    labelAgentMaxRetries: 'Stream failure retries',
    descAgentMaxRetries: 'Auto-retry count on stream failure (0-10, default 3); only retries pre-stream failures (no token output yet); mid-stream failures are abandoned',

    // ===== Knowledge base panel =====
    panelKnowledge: '📚 Knowledge base',
    labelAutoExtract: 'Auto-distill knowledge',
    descAutoExtract: 'Automatically distill reusable knowledge from conversations after they finish (AI proposes candidates, manual review required)',
    labelTriggerMode: 'Distill trigger',
    descTriggerMode: 'When auto-distillation is triggered',
    triggerOnComplete: 'On conversation complete',
    triggerOnIdle: 'On conversation idle',
    triggerManualOnly: 'Manual only',
    labelMinMessages: 'Min message count',
    descMinMessages: 'Distillation triggers only after this many messages (filters out small talk noise)',
    labelIdleTimeout: 'Idle timeout (s)',
    descIdleTimeout: 'Seconds to wait in idle-trigger mode',
    labelAutoInject: 'Auto-inject related knowledge',
    descAutoInject: 'Retrieve related knowledge and inject it into the conversation context during chat',
    labelVectorEnabled: 'Semantic retrieval (vector)',
    descVectorEnabled: 'Use Embedding vectors for semantic matching — close meanings surface even with different wording; when off, pure keyword matching with zero external calls',
    labelEmbeddingProvider: 'Embedding provider',
    descEmbeddingProvider: 'AI provider used for vectorization (OpenAI-compatible only; switching requires re-embedding all knowledge)',
    labelEmbeddingModel: 'Embedding model',
    descEmbeddingModel: 'e.g. embedding-3 (Zhipu) / text-embedding-v4 (Alibaba) / text-embedding-3-small (OpenAI)',
    embeddingProviderNone: 'Not selected',
    phEmbeddingModel: 'embedding-3',

    // ===== Toast =====
    toastLoadProviderFail: 'Failed to load providers',
    toastSaveIncomplete: 'Please fill in all fields (Name / Base URL / API Key / Model)',
    toastSaved: 'Saved',
    toastSaveFail: 'Save failed: {msg}',
    toastDeleted: 'Deleted',
    toastDeleteFail: 'Delete failed: {msg}',
    toastSetDefaultOk: 'Set as default',
    toastSetDefaultFail: 'Failed to set default: {msg}',
    toastConnIncomplete: 'Please fill in Name and Host',

    // ===== Confirm dialogs =====
    confirmDeleteProvider: 'Delete provider "{name}"? This cannot be undone.',
    confirmDeleteConn: 'Delete connection "{name}"?',
  },
}
