2025-06-03 09:33:53 +08:00

403 lines
20 KiB
TypeScript

export default {
chat: {
stop: "Stop",
welcome: {
title: "Welcome to Infio Copilot",
subtitle: "Explore different modes to enhance your productivity"
},
navigation: {
commands: "Commands",
commandsDesc: "Create and manage custom commands for quick actions",
customMode: "Custom Mode",
customModeDesc: "Define personalized AI modes with specific behaviors",
mcp: "MCP",
mcpDesc: "Manage Model Context Protocol integrations"
},
errors: {
failedToLoadConversation: "Failed to load conversation",
failedToSaveHistory: "Failed to save chat history",
failedToApplyChanges: "Failed to apply changes",
conversationNotFound: "Conversation not found",
fileNotFound: "File not found: {{path}}",
failedToApplyEditChanges: "Failed to apply edit changes",
failedToSearchAndReplace: "Failed to search and replace"
},
apply: {
changesApplied: "Changes successfully applied",
changesRejected: "User rejected changes"
},
search: {
noResultsFound: "No results found for '{{query}}'"
},
history: {
noConversations: "No conversations"
},
shortcutInfo: {
editInline: "Edit inline",
chatWithSelect: "Chat with selected text",
submitWithVault: "Submit with vault"
},
searchResults: {
showReferencedDocuments: "Show Referenced Documents"
},
LLMResponseInfoPopover: {
header: "LLM response information",
tokenCount: "Token count",
promptTokens: "Prompt tokens",
completionTokens: "Completion tokens",
totalTokens: "Total tokens",
model: "Model",
estimatedPrice: "Estimated price",
usageNotAvailable: "Usage statistics are not available for this model",
notAvailable: "Not available"
},
queryProgress: {
readingMentionableFiles: "Reading mentioned files",
indexing: "Indexing",
file: "file",
chunkIndexed: "chunk indexed",
queryingVault: "Querying the vault",
readingRelatedFiles: "Reading related files"
},
reactMarkdown: {
allow: "Allow",
allowing: "Allowing...",
success: "Success",
failed: "Failed",
switchToMode: 'Switch to "{mode}" mode',
semanticSearchInPath: 'semantic search files "{query}" in {path}',
webSearch: "Web search: {query}",
searching: "Searching...",
done: "Done",
searchAndReplaceInPath: "Search and replace in {path}",
applying: "Applying...",
apply: "Apply",
reasoning: "Reasoning",
readFile: "Read file: {path}",
listFiles: "List files: {path}",
fetchUrlsContent: "Fetch URLs Content",
fetching: "Fetching...",
copied: "Copied",
copy: "Copy",
editOrApplyDiff: "{mode}: {path}",
loading: "Loading...",
regexSearchInPath: 'regex search files "{regex}" in {path}',
createNewNote: "Create new note",
copyMsg: "Copy message",
taskCompletion: "Task Completion",
askFollowupQuestion: "Ask Followup Question:",
viewDetails: "View details"
},
input: {
submit: "Submit",
collectedModels: "Collected Models",
loading: "Loading...",
image: "Image",
createCommand: "Create Command",
uploadNewImage: "Upload New Image"
}
},
inlineEdit: {
placeholder: "Input instruction, Enter to submit, Esc to close",
fetchModelsError: "Failed to fetch provider models:",
submitting: "submitting...",
submit: "submit",
ragNotNeeded: "RAG not needed for inline edit",
noActiveFile: "No active file",
noActiveEditor: "No active editor",
noTextSelected: "No text selected",
noActiveContext: "No active file, editor, or selection",
invalidChatModel: "Invalid chat model",
emptyLLMResponse: "Empty response from LLM",
invalidActiveFile: "Invalid active file",
readFileError: "Failed to read file:",
applyChangesError: "Failed to apply changes",
inlineEditError: "Error in inline edit:",
},
prompt: {
"title": "Prompts",
"description": "Click + to create a new mode",
"modeName": "Mode Name",
"modeNameDescription": "Mode Description",
"modeNamePlaceholder": "Enter mode name...",
"builtinModeNameWarning": "Built-in mode names cannot be modified",
"modeNameRequirements": "Mode names must only contain letters, numbers, and hyphens",
"roleDefinition": "Role Definition",
"roleDefinitionDescription": "Set professional domain and response style",
"roleDefinitionPlaceholder": "Enter role definition...",
"availableFeatures": "Available Features",
"builtinFeaturesWarning": "Available features of built-in modes cannot be modified",
"readFiles": "Read Files",
"editFiles": "Edit Files",
"webSearch": "Web Search",
"modeSpecificRules": "Mode-Specific Rules (Optional)",
"modeSpecificRulesDescription": "Mode-specific rules",
"modeSpecificRulesPlaceholder": "Enter mode custom instructions...",
"supportReadingConfig": "Support reading configuration from",
"file": "file",
"overrideSystemPrompt": "Override System Prompt",
"overrideDescription": "You can completely replace the system prompt for this mode (excluding role definition and custom instructions) by creating a file",
"overrideWarning": ". This is a very advanced feature that will override all built-in prompts including tool usage, please use with caution",
"previewSystemPrompt": "Preview System Prompt",
"save": "Save"
},
command: {
"createQuickCommand": "Create Quick Command",
"name": "Name",
"content": "Content",
"createCommand": "Create Command",
"searchPlaceholder": "Search Command...",
"noCommandsFound": "No commands found",
"updateCommand": "Update Command",
"errorContentRequired": "Please enter a content for your template",
"errorNameRequired": "Please enter a name for your template"
},
main: {
openNewChat: "Open new chat",
openInfioCopilot: 'Open infio copilot',
addSelectionToChat: 'Add selection to chat',
rebuildVaultIndex: 'Rebuild entire vault index',
updateVaultIndex: 'Update index for modified files',
autocompleteAccept: 'Autocomplete accept',
autocompletePredict: 'Autocomplete predict',
autocompleteToggle: 'Autocomplete toggle',
autocompleteEnable: 'Autocomplete enable',
autocompleteDisable: 'Autocomplete disable',
inlineEditCommand: 'Inline edit',
},
notifications: {
rebuildingIndex: 'Rebuilding vault index...',
indexingChunks: 'Indexing chunks: {completedChunks} / {totalChunks}',
rebuildComplete: 'Rebuilding vault index complete',
rebuildFailed: 'Rebuilding vault index failed',
updatingIndex: 'Updating vault index...',
updateComplete: 'Vault index updated',
updateFailed: 'Vault index update failed',
selectTextFirst: 'Please select some text first',
migrationFailed: 'Failed to migrate to JSON storage. Please check the console for details.',
reloadingInfio: 'Reloading "infio" due to migration',
},
applyView: {
applyingFile: 'Applying: {{file}}',
acceptChanges: 'Accept changes',
acceptAll: 'Accept All {{shortcut}}',
rejectChanges: 'Reject changes',
rejectAll: 'Reject All {{shortcut}}',
fileNotFound: 'File not found',
acceptLine: 'Accept line',
excludeLine: 'Exclude line',
},
previewView: {
close: 'Close',
},
settings: {
// Models Section
ApiProvider: {
label: 'Api provider:',
useCustomBaseUrl: 'Use custom base url',
enterApiKey: 'Enter your api key',
enterCustomUrl: 'Enter your custom api endpoint url',
},
Models: {
chatModel: 'Chat model:',
autocompleteModel: 'Autocomplete model:',
embeddingModel: 'Embedding model:',
},
// Model Parameters Section
ModelParameters: {
title: 'Model parameters',
temperature: 'Temperature',
temperatureDescription: 'This parameter affects randomness in the sampling. Lower values result in more repetitive and deterministic responses. Higher temperatures will result in more unexpected or creative responses. Default: 0.0, please don\'t change this if you don\'t know what you are doing.',
topP: 'TopP',
topPDescription: 'Like the temperature parameter, the Top P parameter affects the randomness in sampling. Lowering the value will limit the model\'s token selection to likelier tokens while increasing the value expands the model\'s token selection with lower likelihood tokens. Default: 1, please don\'t change this if you don\'t know what you are doing.',
frequencyPenalty: 'Frequency penalty',
frequencyPenaltyDescription: 'This parameter reduces the chance of repeating a token proportionally based on how often it has appeared in the text so far. This decreases the likelihood of repeating the exact same text in a response. Default: 0.25',
presencePenalty: 'Presence penalty',
presencePenaltyDescription: 'This parameter reduces the chance of repeating any token that has appeared in the text so far. This increases the likelihood of introducing new topics in a response. Default: 2',
maxTokens: 'Max tokens',
maxTokensDescription: 'This parameter changes the maximum number of tokens the model is allowed to generate. Default: 4096',
},
// Files Search Section
FilesSearch: {
title: 'File search',
method: 'Files search method',
methodDescription: 'Choose the method to search for files.',
auto: 'Auto',
semantic: 'Semantic',
regex: 'Regex',
ripgrepPath: 'ripgrep path',
ripgrepPathDescription: 'Path to the ripgrep binary. When using regex search, this is required.',
},
// Chat Behavior Section
ChatBehavior: {
title: 'Chat behavior',
defaultMention: 'Default mention for new chat',
defaultMentionDescription: 'Choose the default file mention behavior when starting a new chat.',
none: 'None',
currentFile: 'Current File',
vault: 'Vault',
},
// Deep Research Section
WebSearch: {
title: 'Web search',
serperApiKey: 'Serper API key',
serperApiKeyDescription: 'API key for web search functionality. Serper allows the plugin to search the internet for information, similar to a search engine. Get your key from',
searchEngine: 'Serper search engine',
searchEngineDescription: 'Choose the search engine to use for web search.',
google: 'Google',
duckDuckGo: 'DuckDuckGo',
bing: 'Bing',
jinaApiKey: 'Jina API key (Optional)',
jinaApiKeyDescription: 'API key for parsing web pages into markdown format. If not provided, local parsing will be used. Get your key from',
},
// RAG Section
RAG: {
title: 'RAG(advanced)',
includePatterns: 'Include patterns',
includePatternsDescription: 'If any patterns are specified, ONLY files matching at least one pattern will be included in indexing. One pattern per line. Uses glob patterns (e.g., "notes/*", "*.md"). Leave empty to include all files not excluded by exclude patterns. After changing this, use the command "Rebuild entire vault index" to apply changes.',
testPatterns: 'Test patterns',
excludePatterns: 'Exclude patterns',
excludePatternsDescription: 'Files matching ANY of these patterns will be excluded from indexing. One pattern per line. Uses glob patterns (e.g., "private/*", "*.tmp"). Leave empty to exclude nothing. After changing this, use the command "Rebuild entire vault index" to apply changes.',
chunkSize: 'Chunk size',
chunkSizeDescription: 'Set the chunk size for text splitting. After changing this, please re-index the vault using the "Rebuild entire vault index" command.',
thresholdTokens: 'Threshold tokens',
thresholdTokensDescription: 'Maximum number of tokens before switching to RAG. If the total tokens from mentioned files exceed this, RAG will be used instead of including all file contents.',
minSimilarity: 'Minimum similarity',
minSimilarityDescription: 'Minimum similarity score for RAG results. Higher values return more relevant but potentially fewer results.',
limit: 'Limit',
limitDescription: 'Maximum number of RAG results to include in the prompt. Higher values provide more context but increase token usage.',
includedFiles: 'Included Files',
noInclusionPatterns: 'No inclusion patterns specified - all files will be included (except those matching exclusion patterns)',
noMatchingFiles: 'No files match the inclusion patterns',
excludedFiles: 'Excluded Files',
noExcludedFiles: 'No files match the exclusion patterns',
},
// AutoComplete Section
AutoComplete: {
// Basic AutoComplete Settings
title: 'AutoComplete(advanced)',
enable: 'Enable',
enableDescription: 'If disabled, nothing will trigger the extension or can result in an API call.',
cacheCompletions: 'Cache completions',
cacheCompletionsDescription: 'If disabled, the plugin will not cache the completions. After accepting or rejecting a completion, the plugin will not remember it. This might result in more API calls.',
debugMode: 'Debug mode',
debugModeDescription: 'If enabled, various debug messages will be logged to the console, such as the complete response from the API, including the chain of thought tokens.',
// Preprocessing Settings
preprocessing: {
title: 'Preprocessing',
excludeDataview: 'Don\'t include Dataview',
excludeDataviewDescription: 'Dataview(js) blocks can be quite long while not providing much value to the AI. If this setting is enabled, data view blocks will be removed promptly to reduce the number of tokens. This could save you some money in the long run.',
maxPrefixLength: 'Maximum prefix length',
maxPrefixLengthDescription: 'The maximum number of characters that will be included in the prefix. A larger value will increase the context for the completion, but it can also increase the cost or push you over the token limit.',
maxSuffixLength: 'Maximum suffix length',
maxSuffixLengthDescription: 'The maximum number of characters that will be included in the suffix. A larger value will increase the context for the completion, but it can also increase the cost or push you over the token limit.',
chars: 'chars',
},
// Postprocessing Settings
postprocessing: {
title: 'Postprocessing',
removeMathBlockIndicators: 'Auto remove duplicate mat block indicators',
removeMathBlockIndicatorsDescription: 'The AI model might eagerly add a math block indicator ($), even though the cursor is already inside a math block. If this setting is enabled, the plugin will automatically remove these duplicate indicators from the completion.',
removeCodeBlockIndicators: 'Auto remove duplicate code block indicators',
removeCodeBlockIndicatorsDescription: 'The AI model might eagerly add a code block indicator (`), even though the cursor is already inside a code block. If this setting is enabled, the plugin will automatically remove these duplicate indicators from the completion.',
},
// Trigger Settings
trigger: {
title: 'Trigger',
delay: 'Delay',
delayDescription: 'Delay in ms between the last character typed and the completion request.',
ms: 'ms',
words: 'Trigger words',
wordsDescription: 'Completions will be triggered if the text before the matches any of these words or characters. This can either be a direct string match or a regex match. When using a regex, make sure to include the end of line character ($).',
},
// Privacy Settings
privacy: {
title: 'Privacy',
ignoredFiles: 'Ignored files',
ignoredFilesDescription: 'This field enables you to specify files and directories that the plugin should ignore. When you open any of these files, the plugin will automatically disable itself and display a \'disabled\' status in the bottom menu. Enter one pattern per line. These patterns function similar to glob patterns. Here are some frequently used patterns:',
ignoredFilesPattern1: 'path/to/folder/**: This pattern ignores all files and sub folders within this folder.',
ignoredFilesPattern2: '**/secret/**: This pattern ignores any file located inside a \'secret\' directory, regardless of its location in the path.',
ignoredFilesPattern3: '!path/to/folder/example.md: This pattern explicitly undoes an ignore, making this file noticeable to the plugin.',
ignoredFilesPattern4: '**/*Python*.md: This pattern ignores any file with \'Python\' in its name, irrespective of its location.',
ignoredFilesPlaceholder: 'Your file patterns, e.g., **/secret/**',
ignoredTags: 'Ignored tags',
ignoredTagsDescription: 'Files containing any of these tags will be ignored. When you open a file containing a tag listed here, the plugin will automatically disable itself and display a \'disabled\' status in the bottom menu. Enter one tag per line.',
ignoredTagsPlaceholder: 'Your file tags, e.g., secret',
},
// Danger Zone Settings
dangerZone: {
title: 'Danger zone',
factoryReset: 'Factory reset',
factoryResetDescription: 'Messed-up the settings? No worries, press this button! After that, the plugin will go back to the default settings. The URL and API key will remain unchanged.',
reset: 'Reset',
advancedMode: 'Advanced mode',
advancedModeDescription: 'If you are familiar with prompt engineering, you can enable this setting to view the prompt generation and a few shot example settings. Turn off this button. It will not reset your changes; use the factory reset button for that.',
resetComplete: 'Factory reset complete.',
},
// Advanced Settings
advanced: {
title: 'Advanced',
chainOfThoughtRemovalRegex: 'Chain of thought removal regex',
chainOfThoughtRemovalRegexDescription: 'This regex is used to remove the chain of thought tokens from the generated answer. If it is not implemented correctly, the chain of thought tokens will be included in the suggested completion.',
regexPlaceholder: 'your regex...',
systemMessage: 'System message',
systemMessageDescription: 'This system message gives the models all the context and instructions they need to complete the answer generation tasks. You can edit this message to your liking. If you edit the chain of thought formatting, make sure to update the extract regex and examples accordingly.',
systemMessagePlaceholder: 'Your system message...',
userMessageTemplate: 'User message template',
userMessageTemplateDescription: 'This template defines how the prefix and suffix are formatted to create the user message. You have access to two variables: {{prefix}} and {{suffix}}. If you edit this, make sure to update the examples accordingly.',
fewShotExamples: 'Few shot examples',
fewShotExamplesDescription: 'The model uses these examples to learn the expected answer format. Not all examples are sent at the same time. We only send the relevant examples, given the current cursor location. For example, the CodeBlock examples are only sent if the cursor is in a code block. If no special context is detected, we send the Text examples. Each context has a default of 2 examples, but you can add or remove examples if there is at least one per context. You can add more examples, but this will increase the inference costs.',
},
}
},
mcpHub: {
title: "MCP Servers",
enableMcp: "Enable MCP Servers",
enableMcpDescription: "Enable to use tools from connected MCP servers for enhanced capabilities. It's recommended to disable when not using these tools to save API token costs.",
learnMore: "Learn more about MCP",
addNewServer: "+ Add New MCP Server",
serverName: "Server Name",
serverNamePlaceholder: "Enter server name",
config: "Configuration (JSON format)",
configPlaceholder: "example: {\n \"command\": \"npx\",\n \"args\": [\n \"-y\",\n \"@modelcontextprotocol/server-filesystem\",\n \"/Users/username/Desktop\",\n \"/path/to/other/allowed/dir\"\n ]\n}",
createServer: "Create Server",
status: "Status",
statusConnected: "Connected",
statusConnecting: "Connecting",
statusDisconnected: "Disconnected",
enable: "Enable Server",
disable: "Disable Server",
restart: "Restart Server",
delete: "Delete Server",
deleteConfirm: "Are you sure you want to delete server {name}?",
createSuccess: "Server {name} created successfully",
createFailed: "Failed to create server: {error}",
serverNameRequired: "Server name cannot be empty",
configRequired: "Configuration cannot be empty",
invalidConfig: "Invalid configuration format, please enter valid JSON",
noServersFound: "No servers found",
serverNotConnectedError: "Server is not connected",
tools: "Tools",
resources: "Resources",
errors: "Errors",
noTools: "No tools available",
noResources: "No resources available",
noErrors: "No error records",
parameters: "Parameters",
toolNoDescription: "No description",
useMcpToolFrom: "Use MCP tool from",
}
}