// Locale namespace: personalization (en-US mirror, keys must match zh-CN/personalization.ts exactly). // Used by: static/src/components/personalization/PersonalizationDrawer.vue export default { // ── Personal space drawer: chrome ── closePersonalSpaceAriaLabel: 'Close personal space', tabAriaLabel: 'Switch personal space sections', loadingPersonalization: 'Loading personalization settings...', // ── Tabs ── tabGeneral: 'General', tabPreferences: 'Personalization', tabModel: 'Model & Thinking', tabAppearance: 'Appearance & Display', tabWorkspace: 'Workspace & Permissions', tabContext: 'Context', tabTools: 'Tools & Skills', tabFiles: 'Files & Images', tabVoice: 'Voice Model', tabSubAgents: 'Sub-agents', tabReviewAgents: 'Review Agents', tabAdmin: 'Admin', // ── General ── autoTitleTitle: 'Auto-generate conversation titles', autoTitleDesc: 'On by default; when off, the title uses the first message', tutorialTitle: 'Getting started', tutorialDesc: 'Learn key features and common settings through highlights and callouts', tutorialButton: 'Start tutorial', appUpdateTitle: 'App updates', appUpdateDesc: 'Current version: {version} · {checked}', appCheckUpdate: 'Check for updates', appChecking: 'Checking...', appVersionUnknown: 'Unknown', appUpdateNotChecked: 'Not checked', appUpdateFound: 'New version available', appUpdateLatest: 'Up to date', appUpdateNeverChecked: 'Not checked yet', appUpdateJustChecked: 'Just checked', appUpdateCheckedAt: 'Last checked: {time}', appUpdateFailed: 'Failed to check for updates', appUpdateNoUrl: 'No download URL available', logoutTitle: 'Sign out', logoutDesc: 'End the current account session', // ── Personalization ── preferencesTitle: 'Enable personalized prompts', preferencesDesc: 'Your preferences are only injected when enabled', selfIdentifyTitle: "AI agent's name", selfIdentifyPlaceholder: 'e.g. Nova, Assistant A', userNameTitle: 'What to call you', userNamePlaceholder: 'e.g. Jojo, Teacher', professionTitle: 'Profession', professionPlaceholder: 'e.g. Product manager, Designer', toneTitle: 'Tone', tonePlaceholder: 'Choose or type a tone', considerationsTitle: 'Always consider', considerationsDesc: 'Referenced as background before every answer', considerationsPlaceholder: 'e.g. The user owns a brown male teddy dog since 2014...', hideBlockBordersTitle: 'Hide block borders', hideBlockBordersDesc: 'Remove dividers between stacked blocks for a cleaner look', minimalExpandHeightTitle: 'Limit expanded height', minimalExpandHeightDesc: 'In minimal mode, cap the height when expanding the summary line; scroll inside if it overflows', communicationStyleTitle: 'Communication style', communicationStyleDesc: 'How the agent communicates with you', communicationDefault: 'Default', communicationDefaultDesc: 'Standard AI style', communicationHumanLike: 'Human-like', communicationHumanLikeDesc: 'Mimics natural human conversation', communicationAuto: 'Auto', communicationAutoDesc: 'Natural in chat; structured answers for complex questions', conversationContinuityTitle: 'Conversation continuity', conversationContinuityDesc: 'How strongly the agent continues past conversations and memory', continuityHigh: 'High', continuityHighDesc: 'Actively follows up on history, memory and project context', continuityMedium: 'Medium', continuityMediumDesc: 'Prioritizes the current conversation; references history when needed', continuityLow: 'Low', continuityLowDesc: 'Keeps conversations independent; rarely looks at history', // ── Model & Thinking ── defaultModelTitle: 'Default model', defaultModelDesc: 'Preferred model for new conversations and the first request after sign-in', modelDisabled: 'Disabled by administrator', defaultThinkingModeTitle: 'Default thinking mode', defaultThinkingModeDesc: 'Initial thinking mode on sign-in or when starting a new task', reasoningEffortTitle: 'Default reasoning effort', reasoningEffortDesc: 'Reasoning effort level attached to model requests in thinking mode', runModeFast: 'Fast mode', runModeFastDesc: 'Prioritizes speed, skips the thinking model', runModeThinking: 'Thinking mode', runModeThinkingDesc: 'Uses the thinking model for the whole conversation', effortDefault: 'Default', effortDefaultDesc: 'No effort specified, uses API default', effortLow: 'Low', effortLowDesc: 'Lowest reasoning, fastest responses', effortMedium: 'Medium', effortMediumDesc: 'Light reasoning', effortHigh: 'High', effortHighDesc: 'Balanced reasoning', effortXhigh: 'Extra high', effortXhighDesc: 'Stronger reasoning', effortMax: 'Max', effortMaxDesc: 'Maximum reasoning, best for the hardest tasks', badgeTextOnly: 'Multimodal', badgeThinking: 'Thinking', // ── Appearance & Display ── themeTitle: 'Theme', themeDesc: 'Switch between Classic, Light and Dark', groupByWorkspaceTitle: 'Group chats by project', groupByWorkspaceDesc: 'Fold conversation history by workspace or project in the sidebar', newChatBlankTitle: 'New Chat opens a blank page', newChatBlankDesc: 'When on, "New Chat" routes to the new-chat page and the conversation is created on the first message; when off, an empty conversation is created immediately', useCustomNamesTitle: 'Use custom names', useCustomNamesDesc: 'Use the self-name and user name from personalization in the conversation area', enhancedToolDisplayTitle: 'Enhanced tool display', enhancedToolDisplayDesc: 'Show tool blocks as formatted content; off shows raw JSON', showStatusAvatarTitle: 'Show assistant status avatar', showStatusAvatarDesc: 'Show idle, thinking, and tool-call status animations on the welcome page and at the end of conversations', showGitStatusBarTitle: 'Show Git status bar', showGitStatusBarDesc: 'Show branch and change stats above the input when the workspace is a Git repo', autoOpenTerminalTitle: 'Auto-open terminal panel', autoOpenTerminalDesc: 'Open the sidebar terminal panel automatically when a terminal is created', quickDockAutoExpandTitle: 'Auto-expand quick dock', quickDockAutoExpandDesc: 'Expand the quick dock automatically when it has content; when off, expand it only with the side button', editSummaryLiveTitle: 'Show edit summary live', editSummaryLiveDesc: 'Show edited files in real time during a run; when off, show them only after the run completes', filePreviewWrapTitle: 'Wrap file preview lines', filePreviewWrapDesc: 'Wrap file previews to the panel width; when off, long lines scroll horizontally', blockDisplayModeTitle: 'Block display mode', blockDisplayModeDesc: 'How thinking and tool blocks are displayed', blockDisplayTraditional: 'Traditional list', blockDisplayTraditionalDesc: 'Vertical list in chronological order, classic style', blockDisplayStacked: 'Stacked animation', blockDisplayStackedDesc: 'Stacks more than 6 items under "More", animated', blockDisplayMinimal: 'Minimal mode', blockDisplayMinimalDesc: 'Summary line + seamless expand, streamed output', badgeRecommended: 'Recommended', badgeNew: 'New', compactMessageTitle: 'Compact system messages', compactMessageDesc: 'How compact system messages (review, sub-agents) are displayed', compactMessageFull: 'Full info', compactMessageFullDesc: 'Show full original content for review, sub-agent and other system messages', compactMessageBrief: 'Brief', compactMessageBriefDesc: 'Replace system messages with a one-line summary', themeClassic: 'Classic', themeClassicDesc: 'Beige tones, soft and high-contrast', themeLight: 'Light', themeLightDesc: 'Pure white + elegant grey, clean and fresh', themeDark: 'Dark', themeDarkDesc: 'Deep grey + black, dimmed with colorful accents', localeZhCN: '简体中文', localeChineseDesc: 'Chinese (Simplified)', localeEnglish: 'English', localeEnglishDesc: 'English (US)', // ── Workspace & Permissions ── defaultPermissionTitle: 'Default permission', defaultPermissionDesc: 'Default permission mode for new conversations', permissionReadonly: 'Read-only', permissionReadonlyDesc: 'Read/search tools only; modification operations are rejected', permissionApproval: 'Approval', permissionApprovalDesc: 'Tools that modify workspace files require manual approval', permissionAutoApproval: 'Auto-approval', permissionAutoApprovalDesc: 'Writes pass through; high-risk operations are auto-approved by the background review agent', permissionUnrestricted: 'Unrestricted', permissionUnrestrictedDesc: 'Tools execute directly through the normal flow', defaultWorkModeTitle: 'Default work mode', workRunModeDesc: 'Default work mode for new conversations; locked to read-only in plan mode', workModePlan: 'Plan', workModePlanDesc: 'Only makes a plan and executes after approval', workModeAsk: 'Ask', workModeAskDesc: 'Discuss and confirm before starting', workModeExecute: 'Execute', workModeExecuteDesc: 'Fills in details and starts directly', agentsMdInjectTitle: 'Auto-inject AGENTS.md', agentsMdInjectDesc: 'Automatically inject system prompt when AGENTS.md exists in the workspace root', claudeMdInjectTitle: 'Auto-inject CLAUDE.md', claudeMdInjectDesc: 'Automatically inject system prompt when CLAUDE.md exists in the workspace root (off by default, injected alongside AGENTS.md)', agentsSkillsScanTitle: 'Scan .agents/skills/ directory', agentsSkillsScanDesc: 'Auto-scan industry skills under .agents/skills/ (Agent Skills open standard path) and list them with .astrion/skills/ skills; duplicates with the same name make read_skill error out and suggest reading by specific path', modifyHistoryTitle: 'Track file changes', modifyHistoryDesc: 'After each task, save this round of write/edit file changes as diffs under .astrion/modify_history/ so accidental overwrites (e.g. by git checkout) can be recovered manually', versionControlDivider: 'Version control', versioningByDefaultTitle: 'Enable versioning for new chats', versioningByDefaultDesc: 'Turned on automatically when creating a new chat; can be disabled below the input', backupModeTitle: 'Backup mode', backupModeDesc: 'Shallow backup only tracks AI-edited files; full backup snapshots the whole workspace', shallowBackup: 'Shallow', shallowBackupDesc: 'Fast, only restores edited files', fullBackup: 'Full', fullBackupDesc: 'Full workspace snapshot; the first one may be slow', goalModeDivider: 'Goal mode', goalReviewActiveTitle: 'Review agent gathers evidence', goalReviewActiveDesc: 'When on, runs read-only commands to verify goals; when off, judges from conversation only', goalMaxTurnsTitle: 'Max auto-continuation turns', goalMaxTurnsDesc: 'Automatically continues up to 1-100 turns after the main model stops', goalTokenLimitTitle: 'Enable cumulative token limit', goalTokenLimitDesc: 'Stop goal mode when cumulative input/output exceeds the limit', goalTokenLimitValueTitle: 'Cumulative token limit', goalTokenLimitValueDesc: 'Goal mode stops when cumulative consumption reaches this value', // ── Context ── recentConversationsTitle: 'Recent conversation hints', recentConversationsDesc: 'Inject several recent non-empty conversations from the current workspace into the system prompt', recentConversationsCountTitle: 'Recent conversations to inject', restoreDefault: 'Restore default', maxMemoryInjectTitle: 'Max memory injection', noLimitPlaceholder: 'No limit', compressionStrategyTitle: 'Context compression strategy', compressionStrategyDesc: 'Control auto shallow and deep compression separately', autoShallowCompressTitle: 'Auto shallow compression', autoDeepCompressTitle: 'Auto deep compression', shallowTriggerTokens: 'Shallow compression trigger context', shallowKeepRecentTools: 'Recent tools kept in shallow compression', shallowKeepTurnTools: 'Tools kept for current turn (shallow)', shallowMaxReplace: 'Max replacements per round', shallowToolInterval: 'Trigger on tool-call interval', deepTriggerTokens: 'Deep compression trigger context', deepCompressInjectTitle: 'Directly inject deep compression', deepCompressInjectDesc: 'When on, inject the full text of previous compressions; when off, only hint the file location', restoreCompressionDefaults: 'Restore compression defaults', // ── Tools & Skills ── silentToolDisableTitle: 'Silently disable tools', silentToolDisableDesc: 'No hint message when disabling tools; the model won\'t notice disabled items', hideToolApprovalTitle: 'Hide tool approval panel', hideToolApprovalDesc: 'In auto-approval mode, the approval panel no longer expands while tools are being reviewed in the background', toolIntentTitle: 'Tool intent hints', toolIntentDesc: 'State briefly what a tool will do before calling it', skillHintsTitle: 'Skill hint system', skillHintsDesc: 'Suggest relevant skills to the model when specific keywords are detected', strictSkillTitle: 'Strict constraints', strictSkillDesc: 'Applies only to skills enabled in personal space', terminalToolsTitle: 'Terminal tools', subAgentToolsTitle: 'Sub-agent tools', runCommandFgTitle: 'run_command foreground', runCommandBgTitle: 'run_command background', availableSkillsTitle: 'Available skills', availableSkillsDesc: 'Checked skills are injected into the system prompt and synced to .astrion/skills/ in the workspace', disabledToolCategoriesTitle: 'Default disabled tool categories', disabledToolCategoriesDesc: 'These categories stay off in new tasks once selected', toolLoadingTitle: 'On-demand tools (dynamic loading)', toolLoadingDesc: 'Checked tools are not injected into context by default; the model fetches their full definitions on demand via load_tools, saving tokens and improving tool selection accuracy. Only affects new conversations; existing conversations keep the snapshot taken at creation', toolLoadingEnabledTitle: 'Enable dynamic tool loading', toolLoadingCat: { workflow: 'Workflows', sub_agent: 'Sub-agents', conversation: 'Conversation review', memory_write: 'Memory write', personalization: 'Personalization', skill_create: 'Skills', mcp: 'MCP', misc: 'Easter egg' }, webDirectExtractTitle: 'Direct extraction whitelist', webDirectExtractDesc: 'Whitelisted sites are extracted locally (GitHub code files via CDN raw links, others via readability-style parsing) at no Tavily quota cost; falls back to Tavily automatically on failure', webDirectExtractEnabledTitle: 'Enable whitelist direct extraction', webDirectExtractDomainsTitle: 'Additional whitelisted domains', webDirectExtractBuiltinBadge: 'Built-in', webDirectExtractDomainPlaceholder: 'Enter a domain, e.g. docs.python.org', webDirectExtractAdd: 'Add', // ── Files & Images ── imageCompressionTitle: 'Image compression', imageCompressionDesc: 'Scale down images proportionally when sent or viewed via view_image', imageOriginal: 'Original', imageOriginalDesc: 'No compression', image1080p: '1080p', image1080pDesc: 'Scale down so the longest edge stays within 1080p', image720p: '720p', image720pDesc: 'Scale down so the longest edge stays within 720p', image540p: '540p', image540pDesc: 'Scale down so the longest edge stays within 540p', // ── Data ── usageEyebrow: 'Conversation usage', usageTitle: 'Usage statistics', usageDesc: 'Cumulative input/output tokens, conversation count, user messages and tool calls across all conversations', usageInputLabel: 'Input tokens', usageOutputLabel: 'Output tokens', usageConversationsLabel: 'Conversations', usageMessagesLabel: 'User messages', usageToolsLabel: 'Tool calls', usageSyncing: 'Syncing latest statistics...', usageUpdated: 'Updated {time}', usageRefreshing: 'Refreshing...', usageRefresh: 'Refresh', usageNeverRefreshed: 'Not refreshed yet', usageUnknownTime: 'Unknown time', usageFetchFailed: 'Failed to fetch usage statistics', // ── Voice model ── voiceModelIntro: 'On-device speech recognition model (SenseVoice int8) supporting mixed Chinese/English with automatic punctuation. The model is about 228MB and runs locally on the phone with no network needed.', voiceModelTitle: 'Speech recognition model', voiceModelReady: 'Downloaded (228MB)', voiceModelDownloading: 'Downloading {percent}% — {msg}', voiceModelPartial: 'Incomplete download, please download again', voiceModelNotDownloaded: 'Not downloaded — click to download', voiceDownloadingBtn: 'Downloading...', voiceRedownload: 'Re-download', voiceDownloadModel: 'Download model', voiceAppOnlyAlert: 'Voice model downloads are only available inside the App', voicePreparing: 'Preparing...', // ── Sub-agents ── subAgentsIntro: 'Manage sub-agent roles for multi-agent mode. Preset roles can be edited (creating a custom override); custom roles can be created, edited and deleted.', compressThresholdTitle: 'Context compression threshold', compressThresholdDesc: 'Deep compression triggers when a sub-agent\'s context tokens exceed this value (default 150000)', maxTurnsTitle: 'Max execution turns', maxTurnsDesc: 'Max execution turns for a single traditional background sub-agent task (one turn = one model call). Leave empty for the default of 50; 0 means unlimited (use with care — runaway tasks keep consuming API quota). Multi-agent team members are long-term collaborators and are not limited by this', saving: 'Saving...', roleListTitle: 'Roles', newRole: '+ New Role', noRoles: 'No roles yet', customTag: 'Custom', presetTag: 'Preset', noDescription: 'No description', roleMetaId: 'ID: {id} · Thinking mode: {mode}', roleMetaModel: ' · Model: {model}', edit: 'Edit', roleEditorEditTitle: 'Edit role', roleEditorCreateTitle: 'New role', roleIdTitle: 'Role ID', roleIdPlaceholder: 'Lowercase letters and underscores, e.g. api-designer', roleNameTitle: 'Display name', roleNamePlaceholder: 'e.g. API Designer', roleDescTitle: 'Description', roleDescPlaceholder: 'One sentence describing the role', thinkingModeTitle: 'Thinking mode', roleThinkingDesc: 'fast = quick responses, thinking = reasoning', fastResponseMode: 'Quick response mode', thinkingReasoningMode: 'Reasoning mode', modelTitle: 'Model', roleModelEmptyDesc: 'Leave empty to use the default model', defaultModelOption: 'Default model', roleDefaultModelDesc: 'Uses default_model from the config file', textOnly: 'Text only', promptBodyTitle: 'Prompt Body (Markdown)', promptBodyPlaceholder: 'Custom prompt body for this role...', deleteRoleConfirm: 'Delete role "{name}"?', // ── Review agents ── reviewIntro: 'Configure models and run parameters for the three review agents. They share the model library with sub-agents; leave empty to use the library default.', reviewAgentAutoApproval: 'Auto-approval agent', reviewAgentAutoApprovalDesc: 'Judges whether a tool call is out of scope or dangerous in auto-approval mode', reviewAgentGoalReview: 'Goal review agent', reviewAgentGoalReviewDesc: 'Judges whether long-term goals are truly met in goal mode', reviewAgentWorkflowReview: 'Workflow review agent', reviewAgentWorkflowReviewDesc: 'Judges whether stage output meets the bar at workflow review nodes', reviewModelEmptyDesc: 'Leave empty to use the model library default', reviewDefaultModelDesc: 'Uses the model library default_model', titleModelTitle: 'Title generation model', titleModelDesc: 'Choose the AI model used to generate conversation titles, shared with sub-agents', externalSessionHeaderTitle: 'External session header', externalSessionHeaderDesc: 'Send a stable per-conversation x-opencode-session header to OpenCode endpoints for session routing and cache optimization; disabled means no header is sent', titleDefaultModelDesc: 'Uses the sub-agent model library default', reviewThinkingDesc: 'Falls back to fast mode automatically when the model does not support thinking', timeoutTitle: 'Review request timeout', timeoutDesc: 'Single model request timeout (5-3600 seconds)', maxRoundsTitle: 'Max review rounds', maxRoundsDesc: 'Applies the fallback when no conclusion is reached within this many rounds (1-50)', commandTimeoutTitle: 'Evidence command timeout', commandTimeoutDesc: 'Single timeout for read-only evidence commands (1-600 seconds)', // ── Admin ── mcpConfigTitle: 'MCP server management', mcpConfigDesc: 'Configure MCP servers centrally to manage tool extensions', adminMonitorTitle: 'Admin monitor', adminMonitorDesc: 'Quota trends, container status, project storage and upload security', apiAdminTitle: 'API management', apiAdminDesc: 'Manage API calls and account', customToolsAdminTitle: 'Custom tool management', customToolsAdminDesc: 'Create and edit custom tool files online', open: 'Open', // ── Alerts & errors (script: toast/confirm/Error) ── modelDisabledTitle: 'Model disabled', modelDisabledMessage: 'This model has been disabled by the administrator and cannot be selected', modelModeConflictTitle: 'Model / thinking mode conflict', modelThinkingOnlyWarning: '{label} only supports thinking mode. Your setting was kept.', modelFastOnlyWarning: '{label} only supports fast mode. Your setting was kept.', // ── Experience onboarding ── expTitle: 'First time? Choose a mode that fits you', expSubtitle: 'Speed, web access and tool scope differ; switch anytime in personal space', expConfirmStart: 'Confirm & Start', expModeFastBadge: 'Lightning', expModeFastTitle: 'Quick answers', expModeFastDesc: "Answers your questions quickly, searches the web, and doesn't write files", expModeThinkingBadge: 'Thinking', expModeThinkingTitle: 'Think first', expModeThinkingDesc: "Thinks before completing tasks, searches the web, and doesn't write files; replies take longer", expModeResearchBadge: 'Research', expModeResearchTitle: 'Multi-step research', expModeResearchDesc: 'Multi-step reasoning and 20+ tools for complex tasks; replies may take a while', expModeExpertBadge: 'Expert', expModeExpertTitle: 'Full-featured exploration', expModeExpertDesc: 'Explore every configuration option freely; built for agent experts and practitioners', } as const;