diff --git a/src/renderer/src/components/Icons/ReasoningIcon.tsx b/src/renderer/src/components/Icons/ReasoningIcon.tsx index 300b45ec..4f98f573 100644 --- a/src/renderer/src/components/Icons/ReasoningIcon.tsx +++ b/src/renderer/src/components/Icons/ReasoningIcon.tsx @@ -8,7 +8,7 @@ const ReasoningIcon: FC - + diff --git a/src/renderer/src/components/Icons/VisionIcon.tsx b/src/renderer/src/components/Icons/VisionIcon.tsx index 21904336..e95608d9 100644 --- a/src/renderer/src/components/Icons/VisionIcon.tsx +++ b/src/renderer/src/components/Icons/VisionIcon.tsx @@ -9,7 +9,7 @@ const VisionIcon: FC, return ( - + diff --git a/src/renderer/src/components/Icons/WebSearchIcon.tsx b/src/renderer/src/components/Icons/WebSearchIcon.tsx index 507135e0..6dc99000 100644 --- a/src/renderer/src/components/Icons/WebSearchIcon.tsx +++ b/src/renderer/src/components/Icons/WebSearchIcon.tsx @@ -9,7 +9,7 @@ const WebSearchIcon: FC - + diff --git a/src/renderer/src/components/ModelTags.tsx b/src/renderer/src/components/ModelTags.tsx index 0bc3038b..4c683bff 100644 --- a/src/renderer/src/components/ModelTags.tsx +++ b/src/renderer/src/components/ModelTags.tsx @@ -2,6 +2,7 @@ import { isEmbeddingModel, isFunctionCallingModel, isReasoningModel, + isRerankModel, isVisionModel, isWebSearchModel } from '@renderer/config/models' @@ -32,8 +33,9 @@ const ModelTags: FC = ({ model, showFree = true, showReasoning = {isWebSearchModel(model) && } {showReasoning && isReasoningModel(model) && } {showToolsCalling && isFunctionCallingModel(model) && } - {isEmbeddingModel(model) && {t('models.embedding')}} - {showFree && isFreeModel(model) && {t('models.free')}} + {isEmbeddingModel(model) && {t('models.type.embedding')}} + {showFree && isFreeModel(model) && {t('models.type.free')}} + {isRerankModel(model) && {t('models.type.rerank')}} ) } diff --git a/src/renderer/src/components/Popups/SelectModelPopup.tsx b/src/renderer/src/components/Popups/SelectModelPopup.tsx index 06e7e045..fe5bf052 100644 --- a/src/renderer/src/components/Popups/SelectModelPopup.tsx +++ b/src/renderer/src/components/Popups/SelectModelPopup.tsx @@ -1,6 +1,6 @@ import { PushpinOutlined, SearchOutlined } from '@ant-design/icons' import { TopView } from '@renderer/components/TopView' -import { getModelLogo, isEmbeddingModel } from '@renderer/config/models' +import { getModelLogo, isEmbeddingModel, isRerankModel } from '@renderer/config/models' import db from '@renderer/databases' import { useProviders } from '@renderer/hooks/useProvider' import { getModelUniqId } from '@renderer/services/ModelService' @@ -76,7 +76,7 @@ const PopupContainer: React.FC = ({ model, resolve }) => { // 根据输入的文本筛选模型 const getFilteredModels = useCallback( (provider) => { - let models = provider.models.filter((m) => !isEmbeddingModel(m)) + let models = provider.models.filter((m) => !isEmbeddingModel(m) && !isRerankModel(m)) if (searchText.trim()) { const keywords = searchText.toLowerCase().split(/\s+/).filter(Boolean) diff --git a/src/renderer/src/config/models.ts b/src/renderer/src/config/models.ts index 6ef1bac8..a5920d14 100644 --- a/src/renderer/src/config/models.ts +++ b/src/renderer/src/config/models.ts @@ -1895,14 +1895,15 @@ export function isEmbeddingModel(model: Model): boolean { return EMBEDDING_REGEX.test(model.name) } + if (isRerankModel(model)) { + return false + } + return EMBEDDING_REGEX.test(model.id) || model.type?.includes('embedding') || false } export function isRerankModel(model: Model): boolean { - if (!model) { - return false - } - return RERANKING_REGEX.test(model.id) || false + return model ? RERANKING_REGEX.test(model.id) || false : false } export function isVisionModel(model: Model): boolean { diff --git a/src/renderer/src/i18n/locales/en-us.json b/src/renderer/src/i18n/locales/en-us.json index 53c91ab7..38d722a9 100644 --- a/src/renderer/src/i18n/locales/en-us.json +++ b/src/renderer/src/i18n/locales/en-us.json @@ -126,6 +126,12 @@ "message.quote": "Quote", "message.regenerate.model": "Switch Model", "message.useful": "Helpful", + "navigation": { + "first": "Already at the first message", + "last": "Already at the last message", + "next": "Next Message", + "prev": "Previous Message" + }, "resend": "Resend", "save": "Save", "settings.code_collapsible": "Code block collapsible", @@ -157,48 +163,42 @@ "topics.edit.placeholder": "Enter new name", "topics.edit.title": "Edit Name", "topics.export.image": "Export as image", + "topics.export.joplin": "Export to Joplin", "topics.export.md": "Export as markdown", "topics.export.notion": "Export to Notion", - "topics.export.title": "Export", - "topics.export.word": "Export as Word", - "topics.export.yuque": "Export to Yuque", "topics.export.obsidian": "Export to Obsidian", + "topics.export.obsidian_atributes": "Configure Note Attributes", + "topics.export.obsidian_btn": "Confirm", + "topics.export.obsidian_created": "Creation Time", + "topics.export.obsidian_created_placeholder": "Please select the creation time", + "topics.export.obsidian_export_failed": "Export failed", + "topics.export.obsidian_export_success": "Export success", "topics.export.obsidian_not_configured": "Obsidian not configured", + "topics.export.obsidian_operate": "Operation Method", + "topics.export.obsidian_operate_append": "Append", + "topics.export.obsidian_operate_new_or_overwrite": "Create New (Overwrite if it exists)", + "topics.export.obsidian_operate_placeholder": "Please select the operation method", + "topics.export.obsidian_operate_prepend": "Prepend", + "topics.export.obsidian_source": "Source", + "topics.export.obsidian_source_placeholder": "Please enter the source", + "topics.export.obsidian_tags": "Tags", + "topics.export.obsidian_tags_placeholder": "Please enter tags, separate multiple tags with commas in English,In Obsidian, pure numbers cannot be used.", "topics.export.obsidian_title": "Title", "topics.export.obsidian_title_placeholder": "Please enter the title", "topics.export.obsidian_title_required": "The title cannot be empty", - "topics.export.obsidian_tags": "Tags", - "topics.export.obsidian_tags_placeholder": "Please enter tags, separate multiple tags with commas in English,In Obsidian, pure numbers cannot be used.", - "topics.export.obsidian_created": "Creation Time", - "topics.export.obsidian_created_placeholder": "Please select the creation time", - "topics.export.obsidian_source": "Source", - "topics.export.obsidian_source_placeholder": "Please enter the source", - "topics.export.obsidian_operate": "Operation Method", - "topics.export.obsidian_operate_placeholder": "Please select the operation method", - "topics.export.obsidian_operate_append": "Append", - "topics.export.obsidian_operate_prepend": "Prepend", - "topics.export.obsidian_operate_new_or_overwrite": "Create New (Overwrite if it exists)", - "topics.export.obsidian_atributes": "Configure Note Attributes", - "topics.export.obsidian_btn": "Confirm", - "topics.export.obsidian_export_success": "Export success", - "topics.export.obsidian_export_failed": "Export failed", - "topics.export.joplin": "Export to Joplin", + "topics.export.title": "Export", + "topics.export.word": "Export as Word", + "topics.export.yuque": "Export to Yuque", "topics.list": "Topic List", "topics.move_to": "Move to", + "topics.new": "New Topic", "topics.pinned": "Pinned Topics", "topics.prompt": "Topic Prompts", "topics.prompt.edit.title": "Edit Topic Prompts", "topics.prompt.tips": "Topic Prompts: Additional supplementary prompts provided for the current topic", "topics.title": "Topics", "topics.unpinned": "Unpinned Topics", - "topics.new": "New Topic", - "translate": "Translate", - "navigation": { - "prev": "Previous Message", - "next": "Next Message", - "first": "Already at the first message", - "last": "Already at the last message" - } + "translate": "Translate" }, "code_block": { "collapse": "Collapse", @@ -208,6 +208,7 @@ }, "common": { "add": "Add", + "advanced_settings": "Advanced Settings", "and": "and", "assistant": "Assistant", "avatar": "Avatar", @@ -216,6 +217,8 @@ "chat": "Chat", "clear": "Clear", "close": "Close", + "confirm": "Confirm", + "copied": "Copied", "copy": "Copy", "cut": "Cut", "default": "Default", @@ -225,6 +228,7 @@ "download": "Download", "duplicate": "Duplicate", "edit": "Edit", + "expand": "Expand", "footnote": "Reference content", "footnotes": "References", "fullscreen": "Entered fullscreen mode. Press F11 to exit", @@ -232,6 +236,7 @@ "language": "Language", "model": "Model", "models": "Models", + "more": "More", "name": "Name", "paste": "Paste", "prompt": "Prompt", @@ -244,12 +249,7 @@ "select": "Select", "topics": "Topics", "warning": "Warning", - "you": "You", - "copied": "Copied", - "confirm": "Confirm", - "more": "More", - "advanced_settings": "Advanced Settings", - "expand": "Expand" + "you": "You" }, "docs": { "title": "Docs" @@ -307,6 +307,12 @@ "title": "Files", "type": "Type" }, + "gpustack": { + "keep_alive_time.description": "The time in minutes to keep the connection alive, default is 5 minutes.", + "keep_alive_time.placeholder": "Minutes", + "keep_alive_time.title": "Keep Alive Time", + "title": "GPUStack" + }, "history": { "continue_chat": "Continue Chatting", "locate.message": "Locate the message", @@ -376,13 +382,13 @@ "threshold_too_large_or_small": "Threshold cannot be greater than 1 or less than 0", "threshold_tooltip": "Used to evaluate the relevance between the user's question and the content in the knowledge base (0-1)", "title": "Knowledge Base", + "topN": "Number of results returned", + "topN__too_large_or_small": "The number of results returned cannot be greater than 100 or less than 1.", + "topN_placeholder": "Not set", + "topN_tooltip": "The number of matching results returned; the larger the value, the more matching results, but also the more tokens consumed.", "url_added": "URL added", "url_placeholder": "Enter URL, multiple URLs separated by Enter", - "urls": "URLs", - "topN": "Number of results returned", - "topN_placeholder": "Not set", - "topN__too_large_or_small": "The number of results returned cannot be greater than 100 or less than 1.", - "topN_tooltip": "The number of matching results returned; the larger the value, the more matching results, but also the more tokens consumed." + "urls": "URLs" }, "languages": { "arabic": "Arabic", @@ -420,22 +426,22 @@ "title": "Mermaid Diagram" }, "message": { - "attachments": { - "pasted_text": "Pasted Text", - "pasted_image": "Pasted Image" - }, "api.check.model.title": "Select the model to use for detection", "api.connection.failed": "Connection failed", "api.connection.success": "Connection successful", "assistant.added.content": "Assistant added successfully", + "attachments": { + "pasted_image": "Pasted Image", + "pasted_text": "Pasted Text" + }, "backup.failed": "Backup failed", "backup.start.success": "Backup started", "backup.success": "Backup successful", "chat.completion.paused": "Chat completion paused", "citations": "References", "copied": "Copied!", - "copy.success": "Copied!", "copy.failed": "Copy failed", + "copy.success": "Copied!", "error.chunk_overlap_too_large": "Chunk overlap cannot be greater than chunk size", "error.dimension_too_large": "Content size is too large", "error.enter.api.host": "Please enter your API host first", @@ -448,18 +454,20 @@ "error.invalid.enter.model": "Please select a model", "error.invalid.proxy.url": "Invalid proxy URL", "error.invalid.webdav": "Invalid WebDAV settings", + "error.joplin.export": "Failed to export to Joplin. Please keep Joplin running and check connection status or configuration", + "error.joplin.no_config": "Joplin Authorization Token or URL is not configured", "error.markdown.export.preconf": "Failed to export the Markdown file to the preconfigured path", "error.markdown.export.specified": "Failed to export the Markdown file", "error.notion.export": "Failed to export to Notion. Please check connection status and configuration according to documentation", "error.notion.no_api_key": "Notion ApiKey or Notion DatabaseID is not configured", "error.yuque.export": "Failed to export to Yuque. Please check connection status and configuration according to documentation", "error.yuque.no_config": "Yuque Token or Yuque Url is not configured", - "error.joplin.no_config": "Joplin Authorization Token or URL is not configured", - "error.joplin.export": "Failed to export to Joplin. Please keep Joplin running and check connection status or configuration", "group.delete.content": "Deleting a group message will delete the user's question and all assistant's answers", "group.delete.title": "Delete Group Message", "ignore.knowledge.base": "Web search mode is enabled, ignore knowledge base", "info.notion.block_reach_limit": "Dialogue too long, exporting to Notion in pages", + "loading.notion.exporting_progress": "Exporting to Notion ({{current}}/{{total}})...", + "loading.notion.preparing": "Preparing to export to Notion...", "mention.title": "Switch model answer", "message.code_style": "Code style", "message.delete.content": "Are you sure you want to delete this message?", @@ -474,8 +482,6 @@ "message.style": "Message style", "message.style.bubble": "Bubble", "message.style.plain": "Plain", - "loading.notion.preparing": "Preparing to export to Notion...", - "loading.notion.exporting_progress": "Exporting to Notion ({{current}}/{{total}})...", "regenerate.confirm": "Regenerating will replace current message", "reset.confirm.content": "Are you sure you want to clear all data?", "reset.double.confirm.content": "All data will be lost, do you want to continue?", @@ -484,22 +490,22 @@ "restore.success": "Restored successfully", "save.success.title": "Saved successfully", "searching": "Searching the internet...", + "success.joplin.export": "Successfully exported to Joplin", "success.markdown.export.preconf": "Successfully exported the Markdown file to the preconfigured path", "success.markdown.export.specified": "Successfully exported the Markdown file", "success.notion.export": "Successfully exported to Notion", "success.yuque.export": "Successfully exported to Yuque", - "success.joplin.export": "Successfully exported to Joplin", "switch.disabled": "Please wait for the current reply to complete", + "tools": { + "completed": "Completed", + "invoking": "Invoking" + }, "topic.added": "New topic added", "upgrade.success.button": "Restart", "upgrade.success.content": "Please restart the application to complete the upgrade", "upgrade.success.title": "Upgrade successfully", "warn.notion.exporting": "Exporting to Notion, please do not request export repeatedly!", - "warning.rate.limit": "Too many requests. Please wait {{seconds}} seconds before trying again.", - "tools": { - "invoking": "Invoking", - "completed": "Completed" - } + "warning.rate.limit": "Too many requests. Please wait {{seconds}} seconds before trying again." }, "minapp": { "sidebar.add.title": "Add to sidebar", @@ -538,7 +544,7 @@ "embedding": "Embedding", "embedding_model": "Embedding Model", "embedding_model_tooltip": "Add in Settings->Model Provider->Manage", - "free": "Free", + "function_calling": "Function Calling", "no_matches": "No models available", "parameter_name": "Parameter Name", "parameter_type": { @@ -548,23 +554,22 @@ "string": "Text" }, "pinned": "Pinned", - "reasoning": "Reasoning", + "rerank_model": "Reordering Model", + "rerank_model_support_provider": "Currently, the reordering model only supports some providers ({{provider}})", + "rerank_model_tooltip": "Click the Manage button in Settings -> Model Services to add.", "search": "Search models...", "stream_output": "Stream output", - "function_calling": "Function Calling", "type": { "embedding": "Embedding", + "free": "Free", + "function_calling": "Tool", "reasoning": "Reasoning", + "rerank": "Reordering", "select": "Select Model Types", "text": "Text", "vision": "Vision", - "function_calling": "Function Calling" - }, - "vision": "Vision", - "websearch": "WebSearch", - "rerank_model": "Reordering Model", - "rerank_model_tooltip": "Click the Manage button in Settings -> Model Services to add.", - "rerank_model_support_provider": "Currently, the reordering model only supports some providers ({{provider}})" + "websearch": "WebSearch" + } }, "navbar": { "expand": "Expand Dialog", @@ -610,12 +615,6 @@ }, "title": "PlantUML Diagram" }, - "gpustack": { - "keep_alive_time.description": "The time in minutes to keep the connection alive, default is 5 minutes.", - "keep_alive_time.placeholder": "Minutes", - "keep_alive_time.title": "Keep Alive Time", - "title": "GPUStack" - }, "prompts": { "explanation": "Explain this concept to me", "summarize": "Summarize this text", @@ -623,10 +622,12 @@ }, "provider": { "aihubmix": "AiHubMix", + "alayanew": "Alaya NeW", "anthropic": "Anthropic", "azure-openai": "Azure OpenAI", "baichuan": "Baichuan", "baidu-cloud": "Baidu Cloud", + "copilot": "GitHub Copilot", "dashscope": "Alibaba Cloud", "deepseek": "DeepSeek", "dmxapi": "DMXAPI", @@ -635,6 +636,7 @@ "gemini": "Gemini", "gitee-ai": "Gitee AI", "github": "GitHub Models", + "gpustack": "GPUStack", "graphrag-kylin-mountain": "GraphRAG", "grok": "Grok", "groq": "Groq", @@ -663,10 +665,7 @@ "xirang": "State Cloud Xirang", "yi": "Yi", "zhinao": "360AI", - "zhipu": "ZHIPU AI", - "copilot": "GitHub Copilot", - "gpustack": "GPUStack", - "alayanew": "Alaya NeW" + "zhipu": "ZHIPU AI" }, "restore": { "confirm": "Are you sure you want to restore data?", @@ -728,15 +727,30 @@ "data.title": "Data Directory", "hour_interval_one": "{{count}} hour", "hour_interval_other": "{{count}} hours", - "minute_interval_one": "{{count}} minute", - "minute_interval_other": "{{count}} minutes", - "markdown_export.title": "Markdown Export", + "joplin": { + "check": { + "button": "Check", + "empty_token": "Please enter Joplin Authorization Token", + "empty_url": "Please enter Joplin Clipper Service URL", + "fail": "Joplin connection verification failed", + "success": "Joplin connection verification successful" + }, + "help": "In Joplin options, enable the web clipper (no browser extension needed), confirm the port, and copy the auth token here.", + "title": "Joplin Configuration", + "token": "Joplin Authorization Token", + "token_placeholder": "Joplin Authorization Token", + "url": "Joplin Web Clipper Service URL", + "url_placeholder": "http://127.0.0.1:41184/" + }, + "markdown_export.force_dollar_math.help": "When enabled, $$ will be forcibly used to mark LaTeX formulas when exporting to Markdown. Note: This option also affects all export methods through Markdown, such as Notion, Yuque, etc.", + "markdown_export.force_dollar_math.title": "Force $$ for LaTeX formulas", + "markdown_export.help": "If provided, exports will be automatically saved to this path; otherwise, a save dialog will appear.", "markdown_export.path": "Default Export Path", "markdown_export.path_placeholder": "Export Path", "markdown_export.select": "Select", - "markdown_export.help": "If provided, exports will be automatically saved to this path; otherwise, a save dialog will appear.", - "markdown_export.force_dollar_math.title": "Force $$ for LaTeX formulas", - "markdown_export.force_dollar_math.help": "When enabled, $$ will be forcibly used to mark LaTeX formulas when exporting to Markdown. Note: This option also affects all export methods through Markdown, such as Notion, Yuque, etc.", + "markdown_export.title": "Markdown Export", + "minute_interval_one": "{{count}} minute", + "minute_interval_other": "{{count}} minutes", "notion.api_key": "Notion API Key", "notion.api_key_placeholder": "Enter Notion API Key", "notion.auto_split": "Auto split when exporting", @@ -758,11 +772,22 @@ "notion.split_size_help": "Recommended: 90 for Free plan, 24990 for Plus plan, default is 90", "notion.split_size_placeholder": "Enter block limit per page (default 90)", "notion.title": "Notion Configuration", + "obsidian": { + "folder": "Folder", + "folder_placeholder": "Please enter the folder name", + "tags": "Global Tags", + "tags_placeholder": "Please enter the tag name, separate multiple tags with commas in English,In Obsidian, pure numbers cannot be used.", + "title": "Obsidian Configuration", + "vault": "Vault", + "vault_placeholder": "Please enter the vault name" + }, "title": "Data Settings", "webdav": { "autoSync": "Auto Backup", "autoSync.off": "Off", "backup.button": "Backup to WebDAV", + "backup.modal.filename.placeholder": "Please enter backup filename", + "backup.modal.title": "Backup to WebDAV", "host": "WebDAV Host", "host.placeholder": "http://localhost:8080", "hour_interval_one": "{{count}} hour", @@ -774,14 +799,12 @@ "password": "WebDAV Password", "path": "WebDAV Path", "path.placeholder": "/backup", - "backup.modal.title": "Backup to WebDAV", - "backup.modal.filename.placeholder": "Please enter backup filename", - "restore.modal.title": "Restore from WebDAV", - "restore.modal.select.placeholder": "Please select a backup file to restore", - "restore.confirm.title": "Confirm Restore", - "restore.confirm.content": "Restoring from WebDAV will overwrite current data. Do you want to continue?", "restore.button": "Restore from WebDAV", + "restore.confirm.content": "Restoring from WebDAV will overwrite current data. Do you want to continue?", + "restore.confirm.title": "Confirm Restore", "restore.content": "Restore from WebDAV will overwrite the current data, continue?", + "restore.modal.select.placeholder": "Please select a backup file to restore", + "restore.modal.title": "Restore from WebDAV", "restore.title": "Restore from WebDAV", "syncError": "Backup Error", "syncStatus": "Backup Status", @@ -802,30 +825,6 @@ "title": "Yuque Configuration", "token": "Yuque Token", "token_placeholder": "Please enter the Yuque Token" - }, - "obsidian": { - "title": "Obsidian Configuration", - "vault": "Vault", - "vault_placeholder": "Please enter the vault name", - "folder": "Folder", - "folder_placeholder": "Please enter the folder name", - "tags": "Global Tags", - "tags_placeholder": "Please enter the tag name, separate multiple tags with commas in English,In Obsidian, pure numbers cannot be used." - }, - "joplin": { - "check": { - "button": "Check", - "empty_url": "Please enter Joplin Clipper Service URL", - "empty_token": "Please enter Joplin Authorization Token", - "fail": "Joplin connection verification failed", - "success": "Joplin connection verification successful" - }, - "title": "Joplin Configuration", - "help": "In Joplin options, enable the web clipper (no browser extension needed), confirm the port, and copy the auth token here.", - "url": "Joplin Web Clipper Service URL", - "url_placeholder": "http://127.0.0.1:41184/", - "token": "Joplin Authorization Token", - "token_placeholder": "Joplin Authorization Token" } }, "display.assistant.title": "Assistant Settings", @@ -871,12 +870,15 @@ "input.target_language.english": "English", "input.target_language.japanese": "Japanese", "input.target_language.russian": "Russian", + "launch.onboot": "Start Automatically on Boot", + "launch.title": "Launch", + "launch.totray": "Minimize to Tray on Launch", "mcp": { "actions": "Actions", "active": "Active", + "addError": "Failed to add server", "addServer": "Add Server", "addSuccess": "Server added successfully", - "addError": "Failed to add server", "args": "Arguments", "argsTooltip": "Each argument on a new line", "baseUrlTooltip": "Remote server base URL", @@ -885,57 +887,53 @@ "config_description": "Configure Model Context Protocol servers", "confirmDelete": "Delete Server", "confirmDeleteMessage": "Are you sure you want to delete the server?", - "deleteSuccess": "Server deleted successfully", "deleteError": "Failed to delete server", + "deleteSuccess": "Server deleted successfully", + "dependenciesInstall": "Install Dependencies", + "dependenciesInstalling": "Installing dependencies...", "description": "Description", "duplicateName": "A server with this name already exists", + "editJson": "Edit JSON", "editServer": "Edit Server", "env": "Environment Variables", "envTooltip": "Format: KEY=value, one per line", "findMore": "Find More MCP Servers", + "install": "Install", + "installError": "Failed to install dependencies", + "installSuccess": "Dependencies installed successfully", + "jsonFormatError": "JSON formatting error", + "jsonModeHint": "Edit the JSON representation of the MCP server configuration. Please ensure the format is correct before saving.", + "jsonSaveError": "Failed to save JSON configuration.", + "jsonSaveSuccess": "JSON configuration has been saved.", + "missingDependencies": "is Missing, please install it to continue.", "name": "Name", "nameRequired": "Please enter a server name", "noServers": "No servers configured", + "npx_list": { + "actions": "Actions", + "desc": "Search and add npm packages as MCP servers", + "description": "Description", + "no_packages": "No packages found", + "npm": "NPM", + "package_name": "Package Name", + "scope_placeholder": "Enter npm scope (e.g. @your-org)", + "scope_required": "Please enter npm scope", + "search": "Search", + "search_error": "Search error", + "title": "NPX Package List", + "usage": "Usage", + "version": "Version" + }, "serverPlural": "servers", "serverSingular": "server", "title": "MCP Servers", - "type": "Type", - "updateSuccess": "Server updated successfully", - "updateError": "Failed to update server", - "url": "URL", "toggleError": "Toggle failed", - "dependenciesInstalling": "Installing dependencies...", - "dependenciesInstall": "Install Dependencies", - "installSuccess": "Dependencies installed successfully", - "installError": "Failed to install dependencies", - "missingDependencies": "is Missing, please install it to continue.", - "install": "Install", - "npx_list": { - "title": "NPX Package List", - "desc": "Search and add npm packages as MCP servers", - "scope_placeholder": "Enter npm scope (e.g. @your-org)", - "search": "Search", - "package_name": "Package Name", - "description": "Description", - "usage": "Usage", - "npm": "NPM", - "version": "Version", - "actions": "Actions", - "scope_required": "Please enter npm scope", - "no_packages": "No packages found", - "search_error": "Search error" - }, - "editJson": "Edit JSON", - "jsonModeHint": "Edit the JSON representation of the MCP server configuration. Please ensure the format is correct before saving.", - "jsonFormatError": "JSON formatting error", - "jsonSaveSuccess": "JSON configuration has been saved.", - "jsonSaveError": "Failed to save JSON configuration." + "type": "Type", + "updateError": "Failed to update server", + "updateSuccess": "Server updated successfully", + "url": "URL" }, "messages.divider": "Show divider between messages", - "messages.navigation": "Message Navigation", - "messages.navigation.none": "None", - "messages.navigation.buttons": "Navigation Buttons", - "messages.navigation.anchor": "Message Anchor", "messages.grid_columns": "Message grid display columns", "messages.grid_popover_trigger": "Grid detail trigger", "messages.grid_popover_trigger.click": "Click to display", @@ -949,6 +947,10 @@ "messages.math_engine": "Math engine", "messages.metrics": "{{time_first_token_millsec}}ms to first token | {{token_speed}} tok/sec", "messages.model.title": "Model Settings", + "messages.navigation": "Message Navigation", + "messages.navigation.anchor": "Message Anchor", + "messages.navigation.buttons": "Navigation Buttons", + "messages.navigation.none": "None", "messages.title": "Message Settings", "messages.use_serif_font": "Use serif font", "model": "Default Model", @@ -1011,43 +1013,43 @@ "check": "Check", "check_all_keys": "Check All Keys", "check_multiple_keys": "Check Multiple API Keys", + "copilot": { + "auth_failed": "Github Copilot authentication failed.", + "auth_success": "GitHub Copilot authentication successful.", + "auth_success_title": "Certification successful.", + "code_failed": "Failed to obtain Device Code, please try again.", + "code_generated_desc": "Please copy the device code into the browser link below.", + "code_generated_title": "Obtain Device Code", + "confirm_login": "Excessive use may lead to your Github account being banned, please use it cautiously!!!!", + "confirm_title": "Risk Warning", + "connect": "Connect to Github", + "custom_headers": "Custom request header", + "description": "Your GitHub account needs to subscribe to Copilot.", + "expand": "Expand", + "headers_description": "Custom request headers (JSON format)", + "invalid_json": "JSON format error", + "login": "Log in to Github", + "logout": "Exit GitHub", + "logout_failed": "Exit failed, please try again.", + "logout_success": "Successfully logged out.", + "model_setting": "Model settings", + "open_verification_first": "Please click the link above to access the verification page.", + "rate_limit": "Rate limiting", + "tooltip": "You need to log in to Github before using Github Copilot" + }, "delete.content": "Are you sure you want to delete this provider?", "delete.title": "Delete Provider", "docs_check": "Check", "docs_more_details": "for more details", "get_api_key": "Get API Key", + "is_not_support_array_content": "Enable compatible mode", "no_models": "Please add models first before checking the API connection", "not_checked": "Not Checked", "remove_duplicate_keys": "Remove Duplicate Keys", "remove_invalid_keys": "Remove Invalid Keys", "search": "Search Providers...", "search_placeholder": "Search model id or name", - "title": "Model Provider", - "is_not_support_array_content": "Enable compatible mode", - "copilot": { - "tooltip": "You need to log in to Github before using Github Copilot", - "description": "Your GitHub account needs to subscribe to Copilot.", - "login": "Log in to Github", - "connect": "Connect to Github", - "logout": "Exit GitHub", - "auth_success_title": "Certification successful.", - "code_generated_title": "Obtain Device Code", - "code_generated_desc": "Please copy the device code into the browser link below.", - "code_failed": "Failed to obtain Device Code, please try again.", - "auth_success": "GitHub Copilot authentication successful.", - "auth_failed": "Github Copilot authentication failed.", - "logout_success": "Successfully logged out.", - "logout_failed": "Exit failed, please try again.", - "confirm_title": "Risk Warning", - "confirm_login": "Excessive use may lead to your Github account being banned, please use it cautiously!!!!", - "rate_limit": "Rate limiting", - "custom_headers": "Custom request header", - "headers_description": "Custom request headers (JSON format)", - "expand": "Expand", - "model_setting": "Model settings", - "invalid_json": "JSON format error", - "open_verification_first": "Please click the link above to access the verification page." - } + "title": "Model Provider" }, "proxy": { "mode": { @@ -1062,9 +1064,9 @@ "quickAssistant": { "click_tray_to_show": "Click the tray icon to start", "enable_quick_assistant": "Enable Quick Assistant", + "read_clipboard_at_startup": "Read clipboard at startup", "title": "Quick Assistant", - "use_shortcut_to_show": "Right-click the tray icon or use shortcuts to start", - "read_clipboard_at_startup": "Read clipboard at startup" + "use_shortcut_to_show": "Right-click the tray icon or use shortcuts to start" }, "shortcuts": { "action": "Action", @@ -1101,19 +1103,18 @@ "topic.position.left": "Left", "topic.position.right": "Right", "topic.show.time": "Show topic time", - "tray.title": "Tray", - "tray.show": "Show Tray Icon", "tray.onclose": "Minimize to Tray on Close", - "launch.title": "Launch", - "launch.onboot": "Start Automatically on Boot", - "launch.totray": "Minimize to Tray on Launch", + "tray.show": "Show Tray Icon", + "tray.title": "Tray", "websearch": { "blacklist": "Blacklist", "blacklist_description": "Results from the following websites will not appear in search results", "blacklist_tooltip": "Please use the following format (separated by line breaks)\nexample.com\nhttps://www.example.com\nhttps://example.com\n*://*.example.com", "check": "Check", - "check_success": "Verification successful", "check_failed": "Verification failed", + "check_success": "Verification successful", + "enhance_mode": "Search enhance mode", + "enhance_mode_tooltip": "Use the default model to extract search keywords from the problem and search", "get_api_key": "Get API Key", "no_provider_selected": "Please select a search service provider before checking.", "search_max_result": "Number of search results", @@ -1121,8 +1122,6 @@ "search_provider_placeholder": "Choose a search service provider.", "search_result_default": "Default", "search_with_time": "Search with dates included", - "enhance_mode": "Search enhance mode", - "enhance_mode_tooltip": "Use the default model to extract search keywords from the problem and search", "tavily": { "api_key": "Tavily API Key", "api_key.placeholder": "Enter Tavily API Key", diff --git a/src/renderer/src/i18n/locales/ja-jp.json b/src/renderer/src/i18n/locales/ja-jp.json index 1b229463..be97ed52 100644 --- a/src/renderer/src/i18n/locales/ja-jp.json +++ b/src/renderer/src/i18n/locales/ja-jp.json @@ -126,6 +126,12 @@ "message.quote": "引用", "message.regenerate.model": "モデルを切り替え", "message.useful": "役立つ", + "navigation": { + "first": "最初のメッセージです", + "last": "最後のメッセージです", + "next": "次のメッセージ", + "prev": "前のメッセージ" + }, "resend": "再送信", "save": "保存", "settings.code_collapsible": "コードブロック折り畳み", @@ -157,48 +163,42 @@ "topics.edit.placeholder": "新しい名前を入力", "topics.edit.title": "名前を編集", "topics.export.image": "画像としてエクスポート", + "topics.export.joplin": "Joplin にエクスポート", "topics.export.md": "Markdownとしてエクスポート", "topics.export.notion": "Notion にエクスポート", - "topics.export.title": "エクスポート", - "topics.export.word": "Wordとしてエクスポート", - "topics.export.yuque": "語雀にエクスポート", "topics.export.obsidian": "Obsidian にエクスポート", + "topics.export.obsidian_atributes": "ノートの属性を設定", + "topics.export.obsidian_btn": "確定", + "topics.export.obsidian_created": "作成日時", + "topics.export.obsidian_created_placeholder": "作成日時を選択してください", + "topics.export.obsidian_export_failed": "エクスポート失敗", + "topics.export.obsidian_export_success": "エクスポート成功", "topics.export.obsidian_not_configured": "Obsidian 未設定", + "topics.export.obsidian_operate": "処理方法", + "topics.export.obsidian_operate_append": "追加", + "topics.export.obsidian_operate_new_or_overwrite": "新規作成(既に存在する場合は上書き)", + "topics.export.obsidian_operate_placeholder": "処理方法を選択してください", + "topics.export.obsidian_operate_prepend": "先頭に追加", + "topics.export.obsidian_source": "ソース", + "topics.export.obsidian_source_placeholder": "ソースを入力してください", + "topics.export.obsidian_tags": "タグ", + "topics.export.obsidian_tags_placeholder": "タグを入力してください。複数のタグは英語のコンマで区切ってください,Obsidian では、純粋な数字を使用することはできません。", "topics.export.obsidian_title": "タイトル", "topics.export.obsidian_title_placeholder": "タイトルを入力してください", "topics.export.obsidian_title_required": "タイトルは空白にできません", - "topics.export.obsidian_tags": "タグ", - "topics.export.obsidian_tags_placeholder": "タグを入力してください。複数のタグは英語のコンマで区切ってください,Obsidian では、純粋な数字を使用することはできません。", - "topics.export.obsidian_created": "作成日時", - "topics.export.obsidian_created_placeholder": "作成日時を選択してください", - "topics.export.obsidian_source": "ソース", - "topics.export.obsidian_source_placeholder": "ソースを入力してください", - "topics.export.obsidian_operate": "処理方法", - "topics.export.obsidian_operate_placeholder": "処理方法を選択してください", - "topics.export.obsidian_operate_append": "追加", - "topics.export.obsidian_operate_prepend": "先頭に追加", - "topics.export.obsidian_operate_new_or_overwrite": "新規作成(既に存在する場合は上書き)", - "topics.export.obsidian_atributes": "ノートの属性を設定", - "topics.export.obsidian_btn": "確定", - "topics.export.obsidian_export_success": "エクスポート成功", - "topics.export.obsidian_export_failed": "エクスポート失敗", - "topics.export.joplin": "Joplin にエクスポート", + "topics.export.title": "エクスポート", + "topics.export.word": "Wordとしてエクスポート", + "topics.export.yuque": "語雀にエクスポート", "topics.list": "トピックリスト", "topics.move_to": "移動先", + "topics.new": "新しいトピック", "topics.pinned": "トピックを固定", "topics.prompt": "トピック提示語", "topics.prompt.edit.title": "トピック提示語を編集する", "topics.prompt.tips": "トピック提示語:現在のトピックに対して追加の補足提示語を提供", "topics.title": "トピック", "topics.unpinned": "固定解除", - "topics.new": "新しいトピック", - "translate": "翻訳", - "navigation": { - "prev": "前のメッセージ", - "next": "次のメッセージ", - "first": "最初のメッセージです", - "last": "最後のメッセージです" - } + "translate": "翻訳" }, "code_block": { "collapse": "折りたたむ", @@ -208,6 +208,7 @@ }, "common": { "add": "追加", + "advanced_settings": "詳細設定", "and": "と", "assistant": "アシスタント", "avatar": "アバター", @@ -216,6 +217,8 @@ "chat": "チャット", "clear": "クリア", "close": "閉じる", + "confirm": "確認", + "copied": "コピーされました", "copy": "コピー", "cut": "切り取り", "default": "デフォルト", @@ -225,6 +228,7 @@ "download": "ダウンロード", "duplicate": "複製", "edit": "編集", + "expand": "展開", "footnote": "引用内容", "footnotes": "脚注", "fullscreen": "全画面モードに入りました。F11キーで終了します", @@ -232,6 +236,7 @@ "language": "言語", "model": "モデル", "models": "モデル", + "more": "もっと", "name": "名前", "paste": "貼り付け", "prompt": "プロンプト", @@ -244,12 +249,7 @@ "select": "選択", "topics": "トピック", "warning": "警告", - "you": "あなた", - "copied": "コピーされました", - "confirm": "確認", - "more": "もっと", - "advanced_settings": "詳細設定", - "expand": "展開" + "you": "あなた" }, "docs": { "title": "ドキュメント" @@ -307,6 +307,12 @@ "title": "ファイル", "type": "タイプ" }, + "gpustack": { + "keep_alive_time.description": "モデルがメモリに保持される時間(デフォルト:5分)", + "keep_alive_time.placeholder": "分", + "keep_alive_time.title": "保持時間", + "title": "GPUStack" + }, "history": { "continue_chat": "チャットを続ける", "locate.message": "メッセージを探す", @@ -376,13 +382,13 @@ "threshold_too_large_or_small": "しきい値は0より大きく1より小さい必要があります", "threshold_tooltip": "ユーザーの質問と知識ベースの内容の関連性を評価するためのしきい値(0-1)", "title": "ナレッジベース", + "topN": "返却される結果の数", + "topN__too_large_or_small": "結果の数は100より大きくてはならず、1より小さくてはなりません。", + "topN_placeholder": "未設定", + "topN_tooltip": "返されるマッチ結果の数は、数値が大きいほどマッチ結果が多くなりますが、消費されるトークンも増えます。", "url_added": "URLが追加されました", "url_placeholder": "URLを入力, 複数のURLはEnterで区切る", - "urls": "URL", - "topN": "返却される結果の数", - "topN_placeholder": "未設定", - "topN__too_large_or_small": "結果の数は100より大きくてはならず、1より小さくてはなりません。", - "topN_tooltip": "返されるマッチ結果の数は、数値が大きいほどマッチ結果が多くなりますが、消費されるトークンも増えます。" + "urls": "URL" }, "languages": { "arabic": "アラビア語", @@ -420,22 +426,22 @@ "title": "Mermaid図" }, "message": { - "attachments": { - "pasted_text": "クリップボードファイル", - "pasted_image": "クリップボード画像" - }, "api.check.model.title": "検出に使用するモデルを選択してください", "api.connection.failed": "接続に失敗しました", "api.connection.success": "接続に成功しました", "assistant.added.content": "アシスタントが追加されました", + "attachments": { + "pasted_image": "クリップボード画像", + "pasted_text": "クリップボードファイル" + }, "backup.failed": "バックアップに失敗しました", "backup.start.success": "バックアップを開始しました", "backup.success": "バックアップに成功しました", "chat.completion.paused": "チャットの完了が一時停止されました", "citations": "参考文献", "copied": "コピーしました!", - "copy.success": "コピーしました!", "copy.failed": "コピーに失敗しました", + "copy.success": "コピーしました!", "error.chunk_overlap_too_large": "チャンクの重なりは、チャンクサイズを超えることはできません", "error.dimension_too_large": "内容のサイズが大きすぎます", "error.enter.api.host": "APIホストを入力してください", @@ -448,20 +454,20 @@ "error.invalid.enter.model": "モデルを選択してください", "error.invalid.proxy.url": "無効なプロキシURL", "error.invalid.webdav": "無効なWebDAV設定", + "error.joplin.export": "Joplin へのエクスポートに失敗しました。Joplin が実行中であることを確認してください", + "error.joplin.no_config": "Joplin 認証トークン または URL が設定されていません", "error.markdown.export.preconf": "Markdown ファイルを事前設定されたパスにエクスポートできませんでした", "error.markdown.export.specified": "Markdown ファイルのエクスポートに失敗しました", "error.notion.export": "Notionへのエクスポートに失敗しました。接続状態と設定を確認してください", "error.notion.no_api_key": "Notion ApiKey または Notion DatabaseID が設定されていません", "error.yuque.export": "語雀へのエクスポートに失敗しました。接続状態と設定を確認してください", "error.yuque.no_config": "語雀Token または 知識ベースID が設定されていません", - "error.joplin.no_config": "Joplin 認証トークン または URL が設定されていません", - "error.joplin.export": "Joplin へのエクスポートに失敗しました。Joplin が実行中であることを確認してください", "group.delete.content": "分組メッセージを削除するとユーザーの質問と助け手の回答がすべて削除されます", "group.delete.title": "分組メッセージを削除", - "loading.notion.preparing": "Notionへのエクスポートを準備中...", - "loading.notion.exporting_progress": "Notionにエクスポート中 ({{current}}/{{total}})...", "ignore.knowledge.base": "インターネットモードが有効になっています。ナレッジベースを無視します", "info.notion.block_reach_limit": "会話が長すぎます。Notionにページごとにエクスポートしています", + "loading.notion.exporting_progress": "Notionにエクスポート中 ({{current}}/{{total}})...", + "loading.notion.preparing": "Notionへのエクスポートを準備中...", "mention.title": "モデルを切り替える", "message.code_style": "コードスタイル", "message.delete.content": "このメッセージを削除してもよろしいですか?", @@ -484,22 +490,22 @@ "restore.success": "復元に成功しました", "save.success.title": "保存に成功しました", "searching": "インターネットで検索中...", + "success.joplin.export": "Joplin へのエクスポートに成功しました", "success.markdown.export.preconf": "Markdown ファイルを事前設定されたパスに正常にエクスポートしました", "success.markdown.export.specified": "Markdown ファイルを正常にエクスポートしました", "success.notion.export": "Notionへのエクスポートに成功しました", "success.yuque.export": "語雀へのエクスポートに成功しました", - "success.joplin.export": "Joplin へのエクスポートに成功しました", "switch.disabled": "現在の応答が完了するまで切り替えを無効にします", + "tools": { + "completed": "完了", + "invoking": "呼び出し中" + }, "topic.added": "新しいトピックが追加されました", "upgrade.success.button": "再起動", "upgrade.success.content": "アップグレードを完了するためにアプリケーションを再起動してください", "upgrade.success.title": "アップグレードに成功しました", "warn.notion.exporting": "Notionにエクスポート中です。重複してエクスポートしないでください! ", - "warning.rate.limit": "送信が頻繁すぎます。{{seconds}} 秒待ってから再試行してください。", - "tools": { - "invoking": "呼び出し中", - "completed": "完了" - } + "warning.rate.limit": "送信が頻繁すぎます。{{seconds}} 秒待ってから再試行してください。" }, "minapp": { "sidebar.add.title": "サイドバーに追加", @@ -538,7 +544,7 @@ "embedding": "埋め込み", "embedding_model": "埋め込み模型", "embedding_model_tooltip": "設定->モデルサービス->管理で追加", - "free": "無料", + "function_calling": "関数呼び出し", "no_matches": "利用可能なモデルがありません", "parameter_name": "パラメータ名", "parameter_type": { @@ -548,23 +554,22 @@ "string": "テキスト" }, "pinned": "固定済み", - "reasoning": "推論", + "rerank_model": "再順序付けモデル", + "rerank_model_support_provider": "現在の再順序付けモデルは、{{provider}} のみサポートしています", + "rerank_model_tooltip": "設定->モデルサービスに移動し、管理ボタンをクリックして追加します。", "search": "モデルを検索...", "stream_output": "ストリーム出力", - "function_calling": "関数呼び出し", "type": { "embedding": "埋め込み", + "free": "無料", + "function_calling": "ツール", "reasoning": "推論", + "rerank": "再順序付け", "select": "モデルタイプを選択", "text": "テキスト", "vision": "画像", - "function_calling": "関数呼び出し" - }, - "vision": "画像", - "websearch": "ウェブ検索", - "rerank_model": "再順序付けモデル", - "rerank_model_tooltip": "設定->モデルサービスに移動し、管理ボタンをクリックして追加します。", - "rerank_model_support_provider": "現在の再順序付けモデルは、{{provider}} のみサポートしています" + "websearch": "ウェブ検索" + } }, "navbar": { "expand": "ダイアログを展開", @@ -610,12 +615,6 @@ }, "title": "PlantUML 図表" }, - "gpustack": { - "keep_alive_time.description": "モデルがメモリに保持される時間(デフォルト:5分)", - "keep_alive_time.placeholder": "分", - "keep_alive_time.title": "保持時間", - "title": "GPUStack" - }, "prompts": { "explanation": "この概念を説明してください", "summarize": "このテキストを要約してください", @@ -623,10 +622,12 @@ }, "provider": { "aihubmix": "AiHubMix", + "alayanew": "Alaya NeW", "anthropic": "Anthropic", "azure-openai": "Azure OpenAI", "baichuan": "百川", "baidu-cloud": "Baidu Cloud", + "copilot": "GitHub Copilot", "dashscope": "Alibaba Cloud", "deepseek": "DeepSeek", "dmxapi": "DMXAPI", @@ -635,6 +636,7 @@ "gemini": "Gemini", "gitee-ai": "Gitee AI", "github": "GitHub Models", + "gpustack": "GPUStack", "graphrag-kylin-mountain": "GraphRAG", "grok": "Grok", "groq": "Groq", @@ -663,10 +665,7 @@ "xirang": "天翼クラウド 息壤", "yi": "零一万物", "zhinao": "360智脳", - "zhipu": "智譜AI", - "copilot": "GitHub Copilot", - "gpustack": "GPUStack", - "alayanew": "Alaya NeW" + "zhipu": "智譜AI" }, "restore": { "confirm": "データを復元しますか?", @@ -728,15 +727,30 @@ "data.title": "データディレクトリ", "hour_interval_one": "{{count}} 時間", "hour_interval_other": "{{count}} 時間", - "minute_interval_one": "{{count}} 分", - "minute_interval_other": "{{count}} 分", - "markdown_export.title": "Markdown エクスポート", + "joplin": { + "check": { + "button": "確認", + "empty_token": "Joplin 認証トークン を先に入力してください", + "empty_url": "Joplin 剪輯服務 URL を先に入力してください", + "fail": "Joplin 接続確認に失敗しました", + "success": "Joplin 接続確認に成功しました" + }, + "help": "Joplin オプションで、剪輯サービスを有効にしてください。ポート番号を確認し、認証トークンをコピーしてください", + "title": "Joplin 設定", + "token": "Joplin 認証トークン", + "token_placeholder": "Joplin 認証トークンを入力してください", + "url": "Joplin 剪輯服務 URL", + "url_placeholder": "http://127.0.0.1:41184/" + }, + "markdown_export.force_dollar_math.help": "有効にすると、Markdownにエクスポートする際にLaTeX数式を$$で強制的にマークします。注意:この設定はNotion、Yuqueなど、Markdownを通じたすべてのエクスポート方法にも影響します。", + "markdown_export.force_dollar_math.title": "LaTeX数式に$$を強制使用", + "markdown_export.help": "入力された場合、エクスポート時に自動的にこのパスに保存されます。未入力の場合、保存ダイアログが表示されます。", "markdown_export.path": "デフォルトのエクスポートパス", "markdown_export.path_placeholder": "エクスポートパス", "markdown_export.select": "選択", - "markdown_export.help": "入力された場合、エクスポート時に自動的にこのパスに保存されます。未入力の場合、保存ダイアログが表示されます。", - "markdown_export.force_dollar_math.title": "LaTeX数式に$$を強制使用", - "markdown_export.force_dollar_math.help": "有効にすると、Markdownにエクスポートする際にLaTeX数式を$$で強制的にマークします。注意:この設定はNotion、Yuqueなど、Markdownを通じたすべてのエクスポート方法にも影響します。", + "markdown_export.title": "Markdown エクスポート", + "minute_interval_one": "{{count}} 分", + "minute_interval_other": "{{count}} 分", "notion.api_key": "Notion APIキー", "notion.api_key_placeholder": "Notion APIキーを入力してください", "notion.auto_split": "ダイアログをエクスポートすると自動ページ分割", @@ -758,11 +772,22 @@ "notion.split_size_help": "Notion無料版ユーザーは90、有料版ユーザーは24990、デフォルトは90", "notion.split_size_placeholder": "ページごとのブロック数制限を入力してください(デフォルト90)", "notion.title": "Notion 設定", + "obsidian": { + "folder": "フォルダー", + "folder_placeholder": "フォルダーの名前を入力してください", + "tags": "グローバルタグ", + "tags_placeholder": "タグの名前を入力してください。複数のタグは英語のコンマで区切ってください,Obsidian では、純粋な数字を使用することはできません。", + "title": "Obsidian の設定", + "vault": "ヴォールト(保管庫)", + "vault_placeholder": "保管庫の名前を入力してください" + }, "title": "データ設定", "webdav": { "autoSync": "自動バックアップ", "autoSync.off": "オフ", "backup.button": "WebDAVにバックアップ", + "backup.modal.filename.placeholder": "バックアップファイル名を入力してください", + "backup.modal.title": "WebDAV にバックアップ", "host": "WebDAVホスト", "host.placeholder": "http://localhost:8080", "hour_interval_one": "{{count}} 時間", @@ -775,18 +800,16 @@ "path": "WebDAVパス", "path.placeholder": "/backup", "restore.button": "WebDAVから復元", + "restore.confirm.content": "WebDAV から復元すると現在のデータが上書きされます。続行しますか?", + "restore.confirm.title": "復元を確認", "restore.content": "WebDAVから復元すると現在のデータが上書きされます。続行しますか?", + "restore.modal.select.placeholder": "復元するバックアップファイルを選択してください", + "restore.modal.title": "WebDAV から復元", "restore.title": "WebDAVから復元", "syncError": "バックアップエラー", "syncStatus": "バックアップ状態", "title": "WebDAV", - "user": "WebDAVユーザー", - "backup.modal.title": "WebDAV にバックアップ", - "backup.modal.filename.placeholder": "バックアップファイル名を入力してください", - "restore.modal.title": "WebDAV から復元", - "restore.modal.select.placeholder": "復元するバックアップファイルを選択してください", - "restore.confirm.title": "復元を確認", - "restore.confirm.content": "WebDAV から復元すると現在のデータが上書きされます。続行しますか?" + "user": "WebDAVユーザー" }, "yuque": { "check": { @@ -802,30 +825,6 @@ "title": "Yuque設定", "token": "Yuqueトークン", "token_placeholder": "Yuqueトークンを入力してください" - }, - "obsidian": { - "title": "Obsidian の設定", - "vault": "ヴォールト(保管庫)", - "vault_placeholder": "保管庫の名前を入力してください", - "folder": "フォルダー", - "folder_placeholder": "フォルダーの名前を入力してください", - "tags": "グローバルタグ", - "tags_placeholder": "タグの名前を入力してください。複数のタグは英語のコンマで区切ってください,Obsidian では、純粋な数字を使用することはできません。" - }, - "joplin": { - "check": { - "button": "確認", - "empty_url": "Joplin 剪輯服務 URL を先に入力してください", - "empty_token": "Joplin 認証トークン を先に入力してください", - "fail": "Joplin 接続確認に失敗しました", - "success": "Joplin 接続確認に成功しました" - }, - "title": "Joplin 設定", - "help": "Joplin オプションで、剪輯サービスを有効にしてください。ポート番号を確認し、認証トークンをコピーしてください", - "url": "Joplin 剪輯服務 URL", - "url_placeholder": "http://127.0.0.1:41184/", - "token": "Joplin 認証トークン", - "token_placeholder": "Joplin 認証トークンを入力してください" } }, "display.assistant.title": "アシスタント設定", @@ -871,12 +870,15 @@ "input.target_language.english": "英語", "input.target_language.japanese": "日本語", "input.target_language.russian": "ロシア語", + "launch.onboot": "起動時に自動で開始", + "launch.title": "起動", + "launch.totray": "起動時にトレイに最小化", "mcp": { "actions": "操作", "active": "有効", + "addError": "サーバーの追加に失敗しました", "addServer": "サーバーを追加", "addSuccess": "サーバーが正常に追加されました", - "addError": "サーバーの追加に失敗しました", "args": "引数", "argsTooltip": "1行に1つの引数を入力してください", "baseUrlTooltip": "リモートURLアドレス", @@ -887,55 +889,51 @@ "confirmDeleteMessage": "本当にこのサーバーを削除しますか?", "deleteError": "サーバーの削除に失敗しました", "deleteSuccess": "サーバーが正常に削除されました", + "dependenciesInstall": "依存関係をインストール", + "dependenciesInstalling": "依存関係をインストール中...", "description": "説明", "duplicateName": "同じ名前のサーバーが既に存在します", + "editJson": "JSONを編集", "editServer": "サーバーを編集", "env": "環境変数", "envTooltip": "形式: KEY=value, 1行に1つ", "findMore": "MCP サーバーを見つける", + "install": "インストール", + "installError": "依存関係のインストールに失敗しました", + "installSuccess": "依存関係のインストールに成功しました", + "jsonFormatError": "JSONフォーマットエラー", + "jsonModeHint": "MCPサーバー設定のJSON表現を編集します。保存する前に、フォーマットが正しいことを確認してください。", + "jsonSaveError": "JSON設定の保存に失敗しました", + "jsonSaveSuccess": "JSON設定が保存されました。", + "missingDependencies": "が不足しています。続行するにはインストールしてください。", "name": "名前", "nameRequired": "サーバー名を入力してください", "noServers": "サーバーが設定されていません", + "npx_list": { + "actions": "アクション", + "desc": "npm パッケージを検索して MCP サーバーとして追加", + "description": "説明", + "no_packages": "パッケージが見つかりません", + "npm": "NPM", + "package_name": "パッケージ名", + "scope_placeholder": "npm スコープを入力 (例: @your-org)", + "scope_required": "npm スコープを入力してください", + "search": "検索", + "search_error": "パッケージの検索に失敗しました", + "title": "NPX パッケージリスト", + "usage": "使用法", + "version": "バージョン" + }, "serverPlural": "サーバー", "serverSingular": "サーバー", "title": "MCP サーバー", - "type": "タイプ", - "updateSuccess": "サーバーが正常に更新されました", - "updateError": "サーバーの更新に失敗しました", - "url": "URL", "toggleError": "切り替えに失敗しました", - "dependenciesInstalling": "依存関係をインストール中...", - "dependenciesInstall": "依存関係をインストール", - "installSuccess": "依存関係のインストールに成功しました", - "installError": "依存関係のインストールに失敗しました", - "missingDependencies": "が不足しています。続行するにはインストールしてください。", - "install": "インストール", - "npx_list": { - "title": "NPX パッケージリスト", - "desc": "npm パッケージを検索して MCP サーバーとして追加", - "scope_placeholder": "npm スコープを入力 (例: @your-org)", - "search": "検索", - "package_name": "パッケージ名", - "description": "説明", - "usage": "使用法", - "npm": "NPM", - "version": "バージョン", - "actions": "アクション", - "scope_required": "npm スコープを入力してください", - "no_packages": "パッケージが見つかりません", - "search_error": "パッケージの検索に失敗しました" - }, - "editJson": "JSONを編集", - "jsonModeHint": "MCPサーバー設定のJSON表現を編集します。保存する前に、フォーマットが正しいことを確認してください。", - "jsonFormatError": "JSONフォーマットエラー", - "jsonSaveSuccess": "JSON設定が保存されました。", - "jsonSaveError": "JSON設定の保存に失敗しました" + "type": "タイプ", + "updateError": "サーバーの更新に失敗しました", + "updateSuccess": "サーバーが正常に更新されました", + "url": "URL" }, "messages.divider": "メッセージ間に区切り線を表示", - "messages.navigation": "メッセージナビゲーション", - "messages.navigation.none": "表示しない", - "messages.navigation.buttons": "上下ボタン", - "messages.navigation.anchor": "会話アンカー", "messages.grid_columns": "メッセージグリッドの表示列数", "messages.grid_popover_trigger": "グリッド詳細トリガー", "messages.grid_popover_trigger.click": "クリックで表示", @@ -949,6 +947,10 @@ "messages.math_engine": "数式エンジン", "messages.metrics": "最初のトークンまでの時間 {{time_first_token_millsec}}ms | トークン速度 {{token_speed}} tok/sec", "messages.model.title": "モデル設定", + "messages.navigation": "メッセージナビゲーション", + "messages.navigation.anchor": "会話アンカー", + "messages.navigation.buttons": "上下ボタン", + "messages.navigation.none": "表示しない", "messages.title": "メッセージ設定", "messages.use_serif_font": "セリフフォントを使用", "model": "デフォルトモデル", @@ -1011,43 +1013,43 @@ "check": "チェック", "check_all_keys": "すべてのキーをチェック", "check_multiple_keys": "複数のAPIキーをチェック", + "copilot": { + "auth_failed": "Github Copilotの認証に失敗しました。", + "auth_success": "Github Copilotの認証が成功しました", + "auth_success_title": "認証成功", + "code_failed": "デバイスコードの取得に失敗しました。再試行してください。", + "code_generated_desc": "デバイスコードを下記のブラウザリンクにコピーしてください。", + "code_generated_title": "デバイスコードを取得する", + "confirm_login": "過度使用すると、あなたのGithubアカウントが停止される可能性があるため、慎重に使用してください!!!!", + "confirm_title": "リスク警告", + "connect": "GitHubに接続する", + "custom_headers": "カスタムリクエストヘッダー", + "description": "あなたのGithubアカウントはCopilotを購読する必要があります。", + "expand": "展開", + "headers_description": "カスタムリクエストヘッダー(JSONフォーマット)", + "invalid_json": "JSONフォーマットエラー", + "login": "GitHubにログインする", + "logout": "GitHubから退出する", + "logout_failed": "ログアウトに失敗しました。もう一度お試しください。", + "logout_success": "正常にログアウトしました。", + "model_setting": "モデル設定", + "open_verification_first": "上のリンクをクリックして、確認ページにアクセスしてください。", + "rate_limit": "レート制限", + "tooltip": "Github Copilot を使用するには、まず Github にログインする必要があります。" + }, "delete.content": "このプロバイダーを削除してもよろしいですか?", "delete.title": "プロバイダーを削除", "docs_check": "チェック", "docs_more_details": "詳細を確認", "get_api_key": "APIキーを取得", + "is_not_support_array_content": "互換モードを有効にする", "no_models": "API接続をチェックする前に、モデルを追加してください", "not_checked": "未チェック", "remove_duplicate_keys": "重複キーを削除", "remove_invalid_keys": "無効なキーを削除", "search": "プロバイダーを検索...", "search_placeholder": "モデルIDまたは名前を検索", - "title": "モデルプロバイダー", - "is_not_support_array_content": "互換モードを有効にする", - "copilot": { - "tooltip": "Github Copilot を使用するには、まず Github にログインする必要があります。", - "description": "あなたのGithubアカウントはCopilotを購読する必要があります。", - "login": "GitHubにログインする", - "connect": "GitHubに接続する", - "logout": "GitHubから退出する", - "auth_success_title": "認証成功", - "code_generated_title": "デバイスコードを取得する", - "code_generated_desc": "デバイスコードを下記のブラウザリンクにコピーしてください。", - "code_failed": "デバイスコードの取得に失敗しました。再試行してください。", - "auth_success": "Github Copilotの認証が成功しました", - "auth_failed": "Github Copilotの認証に失敗しました。", - "logout_success": "正常にログアウトしました。", - "logout_failed": "ログアウトに失敗しました。もう一度お試しください。", - "confirm_title": "リスク警告", - "confirm_login": "過度使用すると、あなたのGithubアカウントが停止される可能性があるため、慎重に使用してください!!!!", - "rate_limit": "レート制限", - "custom_headers": "カスタムリクエストヘッダー", - "headers_description": "カスタムリクエストヘッダー(JSONフォーマット)", - "expand": "展開", - "model_setting": "モデル設定", - "invalid_json": "JSONフォーマットエラー", - "open_verification_first": "上のリンクをクリックして、確認ページにアクセスしてください。" - } + "title": "モデルプロバイダー" }, "proxy": { "mode": { @@ -1062,9 +1064,9 @@ "quickAssistant": { "click_tray_to_show": "トレイアイコンをクリックして起動", "enable_quick_assistant": "クイックアシスタントを有効にする", + "read_clipboard_at_startup": "起動時にクリップボードを読み取る", "title": "クイックアシスタント", - "use_shortcut_to_show": "トレイアイコンを右クリックするか、ショートカットキーで起動できます", - "read_clipboard_at_startup": "起動時にクリップボードを読み取る" + "use_shortcut_to_show": "トレイアイコンを右クリックするか、ショートカットキーで起動できます" }, "shortcuts": { "action": "操作", @@ -1101,19 +1103,18 @@ "topic.position.left": "左", "topic.position.right": "右", "topic.show.time": "トピックの時間を表示", - "tray.title": "トレイ", - "tray.show": "トレイアイコンを表示", "tray.onclose": "閉じるときにトレイに最小化", - "launch.title": "起動", - "launch.onboot": "起動時に自動で開始", - "launch.totray": "起動時にトレイに最小化", + "tray.show": "トレイアイコンを表示", + "tray.title": "トレイ", "websearch": { "blacklist": "ブラックリスト", "blacklist_description": "以下のウェブサイトの結果は検索結果に表示されません", "blacklist_tooltip": "以下の形式を使用してください(改行区切り)\nexample.com\nhttps://www.example.com\nhttps://example.com\n*://*.example.com", "check": "チェック", - "check_success": "検証に成功しました", "check_failed": "検証に失敗しました", + "check_success": "検証に成功しました", + "enhance_mode": "検索強化モード", + "enhance_mode_tooltip": "デフォルトモデルを使用して問題から検索キーワードを抽出し、検索を実行します", "get_api_key": "APIキーを取得", "no_provider_selected": "検索サービスプロバイダーを選択してから再確認してください。", "search_max_result": "検索結果の数", @@ -1121,8 +1122,6 @@ "search_provider_placeholder": "検索サービスプロバイダーを選択する", "search_result_default": "デフォルト", "search_with_time": "日付を含む検索", - "enhance_mode": "検索強化モード", - "enhance_mode_tooltip": "デフォルトモデルを使用して問題から検索キーワードを抽出し、検索を実行します", "tavily": { "api_key": "Tavily API キー", "api_key.placeholder": "Tavily API キーを入力してください", diff --git a/src/renderer/src/i18n/locales/ru-ru.json b/src/renderer/src/i18n/locales/ru-ru.json index 267a3654..cf5e1bc8 100644 --- a/src/renderer/src/i18n/locales/ru-ru.json +++ b/src/renderer/src/i18n/locales/ru-ru.json @@ -126,6 +126,12 @@ "message.quote": "Цитата", "message.regenerate.model": "Переключить модель", "message.useful": "Полезно", + "navigation": { + "first": "Уже первое сообщение", + "last": "Уже последнее сообщение", + "next": "Следующее сообщение", + "prev": "Предыдущее сообщение" + }, "resend": "Переотправить", "save": "Сохранить", "settings.code_collapsible": "Блок кода свернут", @@ -157,48 +163,42 @@ "topics.edit.placeholder": "Введите новый заголовок", "topics.edit.title": "Редактировать заголовок", "topics.export.image": "Экспорт как изображение", + "topics.export.joplin": "Экспорт в Joplin", "topics.export.md": "Экспорт как markdown", "topics.export.notion": "Экспорт в Notion", - "topics.export.title": "Экспорт", - "topics.export.word": "Экспорт как Word", - "topics.export.yuque": "Экспорт в Yuque", "topics.export.obsidian": "Экспорт в Obsidian", + "topics.export.obsidian_atributes": "Настроить атрибуты заметки", + "topics.export.obsidian_btn": "Подтвердить", + "topics.export.obsidian_created": "Дата создания", + "topics.export.obsidian_created_placeholder": "Пожалуйста, выберите дату создания", + "topics.export.obsidian_export_failed": "Экспорт не удалось", + "topics.export.obsidian_export_success": "Экспорт успешно завершен", "topics.export.obsidian_not_configured": "Obsidian не настроен", + "topics.export.obsidian_operate": "Метод обработки", + "topics.export.obsidian_operate_append": "Добавить в конец", + "topics.export.obsidian_operate_new_or_overwrite": "Создать новый (перезаписать, если уже существует)", + "topics.export.obsidian_operate_placeholder": "Пожалуйста, выберите метод обработки", + "topics.export.obsidian_operate_prepend": "Добавить в начало", + "topics.export.obsidian_source": "Источник", + "topics.export.obsidian_source_placeholder": "Пожалуйста, введите источник", + "topics.export.obsidian_tags": "Тэги", + "topics.export.obsidian_tags_placeholder": "Пожалуйста, введите имена тегов. Разделяйте несколько тегов запятыми на английском языке. В Obsidian нельзя использовать только цифры.", "topics.export.obsidian_title": "Заголовок", "topics.export.obsidian_title_placeholder": "Пожалуйста, введите заголовок", "topics.export.obsidian_title_required": "Заголовок не может быть пустым", - "topics.export.obsidian_tags": "Тэги", - "topics.export.obsidian_tags_placeholder": "Пожалуйста, введите имена тегов. Разделяйте несколько тегов запятыми на английском языке. В Obsidian нельзя использовать только цифры.", - "topics.export.obsidian_created": "Дата создания", - "topics.export.obsidian_created_placeholder": "Пожалуйста, выберите дату создания", - "topics.export.obsidian_source": "Источник", - "topics.export.obsidian_source_placeholder": "Пожалуйста, введите источник", - "topics.export.obsidian_operate": "Метод обработки", - "topics.export.obsidian_operate_placeholder": "Пожалуйста, выберите метод обработки", - "topics.export.obsidian_operate_append": "Добавить в конец", - "topics.export.obsidian_operate_prepend": "Добавить в начало", - "topics.export.obsidian_operate_new_or_overwrite": "Создать новый (перезаписать, если уже существует)", - "topics.export.obsidian_atributes": "Настроить атрибуты заметки", - "topics.export.obsidian_btn": "Подтвердить", - "topics.export.obsidian_export_success": "Экспорт успешно завершен", - "topics.export.obsidian_export_failed": "Экспорт не удалось", - "topics.export.joplin": "Экспорт в Joplin", + "topics.export.title": "Экспорт", + "topics.export.word": "Экспорт как Word", + "topics.export.yuque": "Экспорт в Yuque", "topics.list": "Список топиков", "topics.move_to": "Переместить в", + "topics.new": "Новый топик", "topics.pinned": "Закрепленные темы", "topics.prompt": "Тематические подсказки", "topics.prompt.edit.title": "Редактировать подсказки темы", "topics.prompt.tips": "Тематические подсказки: Дополнительные подсказки, предоставленные для текущей темы", "topics.title": "Топики", "topics.unpinned": "Открепленные темы", - "topics.new": "Новый топик", - "translate": "Перевести", - "navigation": { - "prev": "Предыдущее сообщение", - "next": "Следующее сообщение", - "first": "Уже первое сообщение", - "last": "Уже последнее сообщение" - } + "translate": "Перевести" }, "code_block": { "collapse": "Свернуть", @@ -208,6 +208,7 @@ }, "common": { "add": "Добавить", + "advanced_settings": "Дополнительные настройки", "and": "и", "assistant": "Ассистент", "avatar": "Аватар", @@ -216,6 +217,8 @@ "chat": "Чат", "clear": "Очистить", "close": "Закрыть", + "confirm": "Подтверждение", + "copied": "Скопировано", "copy": "Копировать", "cut": "Вырезать", "default": "По умолчанию", @@ -225,6 +228,7 @@ "download": "Скачать", "duplicate": "Дублировать", "edit": "Редактировать", + "expand": "Развернуть", "footnote": "Цитируемый контент", "footnotes": "Сноски", "fullscreen": "Вы вошли в полноэкранный режим. Нажмите F11 для выхода", @@ -232,6 +236,7 @@ "language": "Язык", "model": "Модель", "models": "Модели", + "more": "Ещё", "name": "Имя", "paste": "Вставить", "prompt": "Промпт", @@ -244,12 +249,7 @@ "select": "Выбрать", "topics": "Топики", "warning": "Предупреждение", - "you": "Вы", - "confirm": "Подтверждение", - "copied": "Скопировано", - "more": "Ещё", - "advanced_settings": "Дополнительные настройки", - "expand": "Развернуть" + "you": "Вы" }, "docs": { "title": "Документация" @@ -307,6 +307,12 @@ "title": "Файлы", "type": "Тип" }, + "gpustack": { + "keep_alive_time.description": "Время в минутах, в течение которого модель остается активной, по умолчанию 5 минут.", + "keep_alive_time.placeholder": "Минуты", + "keep_alive_time.title": "Время жизни модели", + "title": "GPUStack" + }, "history": { "continue_chat": "Продолжить чат", "locate.message": "Найти сообщение", @@ -376,13 +382,13 @@ "threshold_too_large_or_small": "Порог не может быть больше 1 или меньше 0", "threshold_tooltip": "Используется для оценки соответствия между пользовательским вопросом и содержимым в базе знаний (0-1)", "title": "База знаний", + "topN": "Количество возвращаемых результатов", + "topN__too_large_or_small": "Количество возвращаемых результатов не может быть больше 100 или меньше 1.", + "topN_placeholder": "Не установлено", + "topN_tooltip": "Количество возвращаемых совпадений; чем больше значение, тем больше совпадений, но и потребление токенов тоже возрастает.", "url_added": "URL добавлен", "url_placeholder": "Введите URL, несколько URL через Enter", - "urls": "URL-адреса", - "topN": "Количество возвращаемых результатов", - "topN_placeholder": "Не установлено", - "topN__too_large_or_small": "Количество возвращаемых результатов не может быть больше 100 или меньше 1.", - "topN_tooltip": "Количество возвращаемых совпадений; чем больше значение, тем больше совпадений, но и потребление токенов тоже возрастает." + "urls": "URL-адреса" }, "languages": { "arabic": "Арабский", @@ -419,29 +425,23 @@ }, "title": "Диаграмма Mermaid" }, - "gpustack": { - "keep_alive_time.description": "Время в минутах, в течение которого модель остается активной, по умолчанию 5 минут.", - "keep_alive_time.placeholder": "Минуты", - "keep_alive_time.title": "Время жизни модели", - "title": "GPUStack" - }, "message": { - "attachments": { - "pasted_text": "Вырезанный текст", - "pasted_image": "Вырезанное изображение" - }, "api.check.model.title": "Выберите модель для проверки", "api.connection.failed": "Соединение не удалось", "api.connection.success": "Соединение успешно", "assistant.added.content": "Ассистент успешно добавлен", + "attachments": { + "pasted_image": "Вырезанное изображение", + "pasted_text": "Вырезанный текст" + }, "backup.failed": "Создание резервной копии не удалось", "backup.start.success": "Создание резервной копии начато", "backup.success": "Резервная копия успешно создана", "chat.completion.paused": "Завершение чата приостановлено", "citations": "Источники", "copied": "Скопировано!", - "copy.success": "Скопировано!", "copy.failed": "Не удалось скопировать", + "copy.success": "Скопировано!", "error.chunk_overlap_too_large": "Перекрытие фрагментов не может быть больше размера фрагмента.", "error.dimension_too_large": "Размер содержимого слишком велик", "error.enter.api.host": "Пожалуйста, введите ваш API хост", @@ -454,20 +454,20 @@ "error.invalid.enter.model": "Пожалуйста, выберите модель", "error.invalid.proxy.url": "Неверный URL прокси", "error.invalid.webdav": "Неверные настройки WebDAV", + "error.joplin.export": "Не удалось экспортировать в Joplin, пожалуйста, убедитесь, что Joplin запущен и проверьте состояние подключения или настройки", + "error.joplin.no_config": "Joplin Authorization Token или URL не настроен", "error.markdown.export.preconf": "Не удалось экспортировать файл Markdown в предуказанный путь", "error.markdown.export.specified": "Не удалось экспортировать файл Markdown", "error.notion.export": "Ошибка экспорта в Notion, пожалуйста, проверьте состояние подключения и настройки в документации", "error.notion.no_api_key": "Notion ApiKey или Notion DatabaseID не настроен", "error.yuque.export": "Ошибка экспорта в Yuque, пожалуйста, проверьте состояние подключения и настройки в документации", "error.yuque.no_config": "Yuque Token или Yuque Url не настроен", - "error.joplin.no_config": "Joplin Authorization Token или URL не настроен", - "error.joplin.export": "Не удалось экспортировать в Joplin, пожалуйста, убедитесь, что Joplin запущен и проверьте состояние подключения или настройки", "group.delete.content": "Удаление группы сообщений удалит пользовательский вопрос и все ответы помощника", "group.delete.title": "Удалить группу сообщений", "ignore.knowledge.base": "Режим сети включен, игнорировать базу знаний", "info.notion.block_reach_limit": "Диалог слишком длинный, экспортируется в Notion по страницам", - "loading.notion.preparing": "Подготовка к экспорту в Notion...", "loading.notion.exporting_progress": "Экспорт в Notion ({{current}}/{{total}})...", + "loading.notion.preparing": "Подготовка к экспорту в Notion...", "mention.title": "Переключить модель ответа", "message.code_style": "Стиль кода", "message.delete.content": "Вы уверены, что хотите удалить это сообщение?", @@ -490,22 +490,22 @@ "restore.success": "Успешно восстановлено", "save.success.title": "Успешно сохранено", "searching": "Поиск в Интернете...", + "success.joplin.export": "Успешный экспорт в Joplin", "success.markdown.export.preconf": "Файл Markdown успешно экспортирован в предуказанный путь", "success.markdown.export.specified": "Файл Markdown успешно экспортирован", "success.notion.export": "Успешный экспорт в Notion", "success.yuque.export": "Успешный экспорт в Yuque", - "success.joplin.export": "Успешный экспорт в Joplin", "switch.disabled": "Пожалуйста, дождитесь завершения текущего ответа", + "tools": { + "completed": "Завершено", + "invoking": "Вызов" + }, "topic.added": "Новый топик добавлен", "upgrade.success.button": "Перезапустить", "upgrade.success.content": "Пожалуйста, перезапустите приложение для завершения обновления", "upgrade.success.title": "Обновление успешно", "warn.notion.exporting": "Экспортируется в Notion, пожалуйста, не отправляйте повторные запросы!", - "warning.rate.limit": "Отправка слишком частая, пожалуйста, подождите {{seconds}} секунд, прежде чем попробовать снова.", - "tools": { - "invoking": "Вызов", - "completed": "Завершено" - } + "warning.rate.limit": "Отправка слишком частая, пожалуйста, подождите {{seconds}} секунд, прежде чем попробовать снова." }, "minapp": { "sidebar.add.title": "Добавить в боковую панель", @@ -544,7 +544,7 @@ "embedding": "Встраиваемые", "embedding_model": "Встраиваемые модели", "embedding_model_tooltip": "Добавьте в настройки->модель сервиса->управление", - "free": "Бесплатные", + "function_calling": "Вызов функции", "no_matches": "Нет доступных моделей", "parameter_name": "Имя параметра", "parameter_type": { @@ -554,23 +554,22 @@ "string": "Текст" }, "pinned": "Закреплено", - "reasoning": "Рассуждение", + "rerank_model": "Модель переупорядочивания", + "rerank_model_support_provider": "Текущая модель переупорядочивания поддерживается только некоторыми поставщиками ({{provider}})", + "rerank_model_tooltip": "В настройках -> Служба модели нажмите кнопку \"Управление\", чтобы добавить.", "search": "Поиск моделей...", "stream_output": "Потоковый вывод", - "function_calling": "Вызов функции", "type": { "embedding": "Встраиваемые", + "free": "Бесплатные", + "function_calling": "Инструкция", "reasoning": "Рассуждение", + "rerank": "Переупорядочить", "select": "Выберите тип модели", "text": "Текст", - "vision": "Изображение", - "function_calling": "Вызов функции" - }, - "vision": "Визуальные", - "websearch": "Веб-поисковые", - "rerank_model": "Модель переупорядочивания", - "rerank_model_tooltip": "В настройках -> Служба модели нажмите кнопку \"Управление\", чтобы добавить.", - "rerank_model_support_provider": "Текущая модель переупорядочивания поддерживается только некоторыми поставщиками ({{provider}})" + "vision": "Визуальные", + "websearch": "Веб-поисковые" + } }, "navbar": { "expand": "Развернуть диалоговое окно", @@ -623,10 +622,12 @@ }, "provider": { "aihubmix": "AiHubMix", + "alayanew": "Alaya NeW", "anthropic": "Anthropic", "azure-openai": "Azure OpenAI", "baichuan": "Baichuan", "baidu-cloud": "Baidu Cloud", + "copilot": "GitHub Copilot", "dashscope": "Alibaba Cloud", "deepseek": "DeepSeek", "dmxapi": "DMXAPI", @@ -635,6 +636,7 @@ "gemini": "Gemini", "gitee-ai": "Gitee AI", "github": "GitHub Models", + "gpustack": "GPUStack", "graphrag-kylin-mountain": "GraphRAG", "grok": "Grok", "groq": "Groq", @@ -663,10 +665,7 @@ "xirang": "State Cloud Xirang", "yi": "Yi", "zhinao": "360AI", - "zhipu": "ZHIPU AI", - "copilot": "GitHub Copilot", - "gpustack": "GPUStack", - "alayanew": "Alaya NeW" + "zhipu": "ZHIPU AI" }, "restore": { "confirm": "Вы уверены, что хотите восстановить данные?", @@ -728,15 +727,30 @@ "data.title": "Каталог данных", "hour_interval_one": "{{count}} час", "hour_interval_other": "{{count}} часов", - "minute_interval_one": "{{count}} минута", - "minute_interval_other": "{{count}} минут", - "markdown_export.title": "Экспорт в Markdown", + "joplin": { + "check": { + "button": "Проверить", + "empty_token": "Сначала введите токен Joplin", + "empty_url": "Сначала введите URL Joplin", + "fail": "Не удалось проверить подключение к Joplin", + "success": "Подключение к Joplin успешно проверено" + }, + "help": "Включите Joplin опцию, проверьте порт и скопируйте токен", + "title": "Настройка Joplin", + "token": "Токен Joplin", + "token_placeholder": "Введите токен Joplin", + "url": "URL Joplin", + "url_placeholder": "http://127.0.0.1:41184/" + }, + "markdown_export.force_dollar_math.help": "Если включено, при экспорте в Markdown для обозначения формул LaTeX будет принудительно использоваться $$. Примечание: Эта опция также влияет на все методы экспорта через Markdown, такие как Notion, Yuque и т.д.", + "markdown_export.force_dollar_math.title": "Принудительно использовать $$ для формул LaTeX", + "markdown_export.help": "Если указано, файлы будут автоматически сохраняться в этот путь; в противном случае появится диалоговое окно сохранения.", "markdown_export.path": "Путь экспорта по умолчанию", "markdown_export.path_placeholder": "Путь экспорта", "markdown_export.select": "Выбрать", - "markdown_export.help": "Если указано, файлы будут автоматически сохраняться в этот путь; в противном случае появится диалоговое окно сохранения.", - "markdown_export.force_dollar_math.title": "Принудительно использовать $$ для формул LaTeX", - "markdown_export.force_dollar_math.help": "Если включено, при экспорте в Markdown для обозначения формул LaTeX будет принудительно использоваться $$. Примечание: Эта опция также влияет на все методы экспорта через Markdown, такие как Notion, Yuque и т.д.", + "markdown_export.title": "Экспорт в Markdown", + "minute_interval_one": "{{count}} минута", + "minute_interval_other": "{{count}} минут", "notion.api_key": "Ключ API Notion", "notion.api_key_placeholder": "Введите ключ API Notion", "notion.auto_split": "Автоматическое разбиение на страницы при экспорте диалога", @@ -758,11 +772,22 @@ "notion.split_size_help": "Рекомендуется 90 для пользователей бесплатной версии Notion, 24990 для пользователей премиум-версии, значение по умолчанию — 90", "notion.split_size_placeholder": "Введите ограничение количества блоков на странице (по умолчанию 90)", "notion.title": "Настройки Notion", + "obsidian": { + "folder": "Папка", + "folder_placeholder": "Пожалуйста, введите имя папки", + "tags": "Глобальные Теги", + "tags_placeholder": "Пожалуйста, введите имена тегов. Разделяйте несколько тегов запятыми на английском языке. В Obsidian нельзя использовать только цифры.", + "title": "Конфигурация Obsidian", + "vault": "Хранилище", + "vault_placeholder": "Пожалуйста, введите имя хранилища" + }, "title": "Настройки данных", "webdav": { "autoSync": "Автоматическое резервное копирование", "autoSync.off": "Выключено", "backup.button": "Резервное копирование на WebDAV", + "backup.modal.filename.placeholder": "Введите имя файла резервной копии", + "backup.modal.title": "Резервное копирование на WebDAV", "host": "Хост WebDAV", "host.placeholder": "http://localhost:8080", "hour_interval_one": "{{count}} час", @@ -775,18 +800,16 @@ "path": "Путь WebDAV", "path.placeholder": "/backup", "restore.button": "Восстановление с WebDAV", + "restore.confirm.content": "Восстановление с WebDAV перезапишет текущие данные, продолжить?", + "restore.confirm.title": "Подтверждение восстановления", "restore.content": "Восстановление с WebDAV перезапишет текущие данные, продолжить?", + "restore.modal.select.placeholder": "Выберите файл резервной копии для восстановления", + "restore.modal.title": "Восстановление с WebDAV", "restore.title": "Восстановление с WebDAV", "syncError": "Ошибка резервного копирования", "syncStatus": "Статус резервного копирования", "title": "WebDAV", - "user": "Пользователь WebDAV", - "backup.modal.title": "Резервное копирование на WebDAV", - "backup.modal.filename.placeholder": "Введите имя файла резервной копии", - "restore.modal.title": "Восстановление с WebDAV", - "restore.modal.select.placeholder": "Выберите файл резервной копии для восстановления", - "restore.confirm.title": "Подтверждение восстановления", - "restore.confirm.content": "Восстановление с WebDAV перезапишет текущие данные, продолжить?" + "user": "Пользователь WebDAV" }, "yuque": { "check": { @@ -802,30 +825,6 @@ "title": "Настройка Yuque", "token": "Токен Yuque", "token_placeholder": "Введите токен Yuque" - }, - "obsidian": { - "title": "Конфигурация Obsidian", - "vault": "Хранилище", - "vault_placeholder": "Пожалуйста, введите имя хранилища", - "folder": "Папка", - "folder_placeholder": "Пожалуйста, введите имя папки", - "tags": "Глобальные Теги", - "tags_placeholder": "Пожалуйста, введите имена тегов. Разделяйте несколько тегов запятыми на английском языке. В Obsidian нельзя использовать только цифры." - }, - "joplin": { - "check": { - "button": "Проверить", - "empty_url": "Сначала введите URL Joplin", - "empty_token": "Сначала введите токен Joplin", - "fail": "Не удалось проверить подключение к Joplin", - "success": "Подключение к Joplin успешно проверено" - }, - "title": "Настройка Joplin", - "help": "Включите Joplin опцию, проверьте порт и скопируйте токен", - "url": "URL Joplin", - "url_placeholder": "http://127.0.0.1:41184/", - "token": "Токен Joplin", - "token_placeholder": "Введите токен Joplin" } }, "display.assistant.title": "Настройки ассистентов", @@ -871,12 +870,15 @@ "input.target_language.english": "Английский", "input.target_language.japanese": "Японский", "input.target_language.russian": "Русский", + "launch.onboot": "Автозапуск при включении", + "launch.title": "Запуск", + "launch.totray": "Свернуть в трей при запуске", "mcp": { "actions": "Действия", "active": "Активен", + "addError": "Ошибка добавления сервера", "addServer": "Добавить сервер", "addSuccess": "Сервер успешно добавлен", - "addError": "Ошибка добавления сервера", "args": "Аргументы", "argsTooltip": "Каждый аргумент с новой строки", "baseUrlTooltip": "Адрес удаленного URL", @@ -887,55 +889,51 @@ "confirmDeleteMessage": "Вы уверены, что хотите удалить этот сервер?", "deleteError": "Не удалось удалить сервер", "deleteSuccess": "Сервер успешно удален", + "dependenciesInstall": "Установить зависимости", + "dependenciesInstalling": "Установка зависимостей...", "description": "Описание", "duplicateName": "Сервер с таким именем уже существует", + "editJson": "Редактировать JSON", "editServer": "Редактировать сервер", "env": "Переменные окружения", "envTooltip": "Формат: KEY=value, по одной на строку", "findMore": "Найти больше MCP серверов", + "install": "Установить", + "installError": "Не удалось установить зависимости", + "installSuccess": "Зависимости успешно установлены", + "jsonFormatError": "Ошибка форматирования JSON", + "jsonModeHint": "Редактируйте JSON-форматирование конфигурации сервера MCP. Перед сохранением убедитесь, что формат правильный.", + "jsonSaveError": "Не удалось сохранить конфигурацию JSON", + "jsonSaveSuccess": "JSON конфигурация сохранена", + "missingDependencies": "отсутствует, пожалуйста, установите для продолжения.", "name": "Имя", "nameRequired": "Пожалуйста, введите имя сервера", "noServers": "Серверы не настроены", + "npx_list": { + "actions": "Действия", + "desc": "Поиск и добавление npm пакетов в качестве MCP серверов", + "description": "Описание", + "no_packages": "Ничего не найдено", + "npm": "NPM", + "package_name": "Имя пакета", + "scope_placeholder": "Введите область npm (например, @your-org)", + "scope_required": "Пожалуйста, введите область npm", + "search": "Поиск", + "search_error": "Ошибка поиска", + "title": "Список пакетов NPX", + "usage": "Использование", + "version": "Версия" + }, "serverPlural": "серверы", "serverSingular": "сервер", "title": "Серверы MCP", - "type": "Тип", - "updateSuccess": "Сервер успешно обновлен", - "updateError": "Ошибка обновления сервера", - "url": "URL", "toggleError": "Переключение не удалось", - "dependenciesInstalling": "Установка зависимостей...", - "dependenciesInstall": "Установить зависимости", - "installSuccess": "Зависимости успешно установлены", - "installError": "Не удалось установить зависимости", - "missingDependencies": "отсутствует, пожалуйста, установите для продолжения.", - "install": "Установить", - "npx_list": { - "title": "Список пакетов NPX", - "desc": "Поиск и добавление npm пакетов в качестве MCP серверов", - "scope_placeholder": "Введите область npm (например, @your-org)", - "search": "Поиск", - "package_name": "Имя пакета", - "description": "Описание", - "usage": "Использование", - "npm": "NPM", - "version": "Версия", - "actions": "Действия", - "scope_required": "Пожалуйста, введите область npm", - "no_packages": "Ничего не найдено", - "search_error": "Ошибка поиска" - }, - "editJson": "Редактировать JSON", - "jsonModeHint": "Редактируйте JSON-форматирование конфигурации сервера MCP. Перед сохранением убедитесь, что формат правильный.", - "jsonFormatError": "Ошибка форматирования JSON", - "jsonSaveSuccess": "JSON конфигурация сохранена", - "jsonSaveError": "Не удалось сохранить конфигурацию JSON" + "type": "Тип", + "updateError": "Ошибка обновления сервера", + "updateSuccess": "Сервер успешно обновлен", + "url": "URL" }, "messages.divider": "Показывать разделитель между сообщениями", - "messages.navigation": "Навигация сообщений", - "messages.navigation.none": "Не показывать", - "messages.navigation.buttons": "Кнопки пагинации", - "messages.navigation.anchor": "Диалог анкор", "messages.grid_columns": "Количество столбцов сетки сообщений", "messages.grid_popover_trigger": "Триггер для отображения подробной информации в сетке", "messages.grid_popover_trigger.click": "Нажатие для отображения", @@ -949,6 +947,10 @@ "messages.math_engine": "Математический движок", "messages.metrics": "{{time_first_token_millsec}}ms до первого токена | {{token_speed}} tok/sec", "messages.model.title": "Настройки модели", + "messages.navigation": "Навигация сообщений", + "messages.navigation.anchor": "Диалог анкор", + "messages.navigation.buttons": "Кнопки пагинации", + "messages.navigation.none": "Не показывать", "messages.title": "Настройки сообщений", "messages.use_serif_font": "Использовать serif шрифт", "model": "Модель по умолчанию", @@ -1011,43 +1013,43 @@ "check": "Проверить", "check_all_keys": "Проверить все ключи", "check_multiple_keys": "Проверить несколько ключей API", + "copilot": { + "auth_failed": "Github Copilot认证失败", + "auth_success": "Github Copilot认证成功", + "auth_success_title": "Аутентификация успешна", + "code_failed": "Получение кода устройства не удалось, пожалуйста, попробуйте еще раз.", + "code_generated_desc": "Пожалуйста, скопируйте код устройства в приведенную ниже ссылку браузера.", + "code_generated_title": "Получить код устройства", + "confirm_login": "Чрезмерное использование может привести к блокировке вашего Github, будьте осторожны!!!!", + "confirm_title": "Предупреждение о рисках", + "connect": "Подключить Github", + "custom_headers": "Пользовательские заголовки запроса", + "description": "Ваша учетная запись Github должна подписаться на Copilot.", + "expand": "развернуть", + "headers_description": "Пользовательские заголовки запроса (формат json)", + "invalid_json": "Ошибка формата JSON", + "login": "Войти в Github", + "logout": "Выйти из Github", + "logout_failed": "Не удалось выйти, пожалуйста, повторите попытку.", + "logout_success": "Успешно вышел", + "model_setting": "Настройки модели", + "open_verification_first": "Пожалуйста, сначала щелкните по ссылке выше, чтобы перейти на страницу проверки.", + "rate_limit": "Ограничение скорости", + "tooltip": "Для использования Github Copilot необходимо сначала войти в Github." + }, "delete.content": "Вы уверены, что хотите удалить этот провайдер?", "delete.title": "Удалить провайдер", "docs_check": "Проверить", "docs_more_details": "для получения дополнительной информации", "get_api_key": "Получить ключ API", + "is_not_support_array_content": "Включить совместимый режим", "no_models": "Пожалуйста, добавьте модели перед проверкой соединения с API", "not_checked": "Не проверено", "remove_duplicate_keys": "Удалить дубликаты ключей", "remove_invalid_keys": "Удалить недействительные ключи", "search": "Поиск поставщиков...", "search_placeholder": "Поиск по ID или имени модели", - "title": "Провайдеры моделей", - "is_not_support_array_content": "Включить совместимый режим", - "copilot": { - "tooltip": "Для использования Github Copilot необходимо сначала войти в Github.", - "description": "Ваша учетная запись Github должна подписаться на Copilot.", - "login": "Войти в Github", - "connect": "Подключить Github", - "logout": "Выйти из Github", - "auth_success_title": "Аутентификация успешна", - "code_generated_title": "Получить код устройства", - "code_generated_desc": "Пожалуйста, скопируйте код устройства в приведенную ниже ссылку браузера.", - "code_failed": "Получение кода устройства не удалось, пожалуйста, попробуйте еще раз.", - "auth_success": "Github Copilot认证成功", - "auth_failed": "Github Copilot认证失败", - "logout_success": "Успешно вышел", - "logout_failed": "Не удалось выйти, пожалуйста, повторите попытку.", - "confirm_title": "Предупреждение о рисках", - "confirm_login": "Чрезмерное использование может привести к блокировке вашего Github, будьте осторожны!!!!", - "rate_limit": "Ограничение скорости", - "custom_headers": "Пользовательские заголовки запроса", - "headers_description": "Пользовательские заголовки запроса (формат json)", - "expand": "развернуть", - "model_setting": "Настройки модели", - "invalid_json": "Ошибка формата JSON", - "open_verification_first": "Пожалуйста, сначала щелкните по ссылке выше, чтобы перейти на страницу проверки." - } + "title": "Провайдеры моделей" }, "proxy": { "mode": { @@ -1062,9 +1064,9 @@ "quickAssistant": { "click_tray_to_show": "Нажмите на иконку трея для запуска", "enable_quick_assistant": "Включить быстрый помощник", + "read_clipboard_at_startup": "Чтение буфера обмена при запуске", "title": "Быстрый помощник", - "use_shortcut_to_show": "Нажмите на иконку трея или используйте горячие клавиши для запуска", - "read_clipboard_at_startup": "Чтение буфера обмена при запуске" + "use_shortcut_to_show": "Нажмите на иконку трея или используйте горячие клавиши для запуска" }, "shortcuts": { "action": "Действие", @@ -1101,19 +1103,18 @@ "topic.position.left": "Слева", "topic.position.right": "Справа", "topic.show.time": "Показывать время топика", - "tray.title": "Трей", - "tray.show": "Показать значок в трее", "tray.onclose": "Свернуть в трей при закрытии", - "launch.title": "Запуск", - "launch.onboot": "Автозапуск при включении", - "launch.totray": "Свернуть в трей при запуске", + "tray.show": "Показать значок в трее", + "tray.title": "Трей", "websearch": { "blacklist": "Черный список", "blacklist_description": "Результаты из следующих веб-сайтов не будут отображаться в результатах поиска", "blacklist_tooltip": "Пожалуйста, используйте следующий формат (разделенный переносами строк)\nexample.com\nhttps://www.example.com\nhttps://example.com\n*://*.example.com", "check": "проверка", - "check_success": "Проверка успешна", "check_failed": "Проверка не прошла", + "check_success": "Проверка успешна", + "enhance_mode": "Режим улучшения поиска", + "enhance_mode_tooltip": "Используйте модель по умолчанию для извлечения ключевых слов из проблемы и поиска", "get_api_key": "Получить ключ API", "no_provider_selected": "Пожалуйста, выберите поставщика поисковых услуг, затем проверьте.", "search_max_result": "Количество результатов поиска", @@ -1121,8 +1122,6 @@ "search_provider_placeholder": "Выберите поставщика поисковых услуг", "search_result_default": "По умолчанию", "search_with_time": "Поиск, содержащий дату", - "enhance_mode": "Режим улучшения поиска", - "enhance_mode_tooltip": "Используйте модель по умолчанию для извлечения ключевых слов из проблемы и поиска", "tavily": { "api_key": "Ключ API Tavily", "api_key.placeholder": "Введите ключ API Tavily", diff --git a/src/renderer/src/i18n/locales/zh-cn.json b/src/renderer/src/i18n/locales/zh-cn.json index d01c3ef2..a04443db 100644 --- a/src/renderer/src/i18n/locales/zh-cn.json +++ b/src/renderer/src/i18n/locales/zh-cn.json @@ -126,6 +126,12 @@ "message.quote": "引用", "message.regenerate.model": "切换模型", "message.useful": "有用", + "navigation": { + "first": "已经是第一条消息", + "last": "已经是最后一条消息", + "next": "下一条消息", + "prev": "上一条消息" + }, "resend": "重新发送", "save": "保存", "settings.code_collapsible": "代码块可折叠", @@ -157,48 +163,42 @@ "topics.edit.placeholder": "输入新名称", "topics.edit.title": "编辑话题名", "topics.export.image": "导出为图片", + "topics.export.joplin": "导出到 Joplin", "topics.export.md": "导出为 Markdown", "topics.export.notion": "导出到 Notion", - "topics.export.title": "导出", - "topics.export.word": "导出为 Word", - "topics.export.yuque": "导出到语雀", "topics.export.obsidian": "导出到 Obsidian", + "topics.export.obsidian_atributes": "配置笔记属性", + "topics.export.obsidian_btn": "确定", + "topics.export.obsidian_created": "创建时间", + "topics.export.obsidian_created_placeholder": "请选择创建时间", + "topics.export.obsidian_export_failed": "导出失败", + "topics.export.obsidian_export_success": "导出成功", "topics.export.obsidian_not_configured": "Obsidian 未配置", + "topics.export.obsidian_operate": "处理方式", + "topics.export.obsidian_operate_append": "追加", + "topics.export.obsidian_operate_new_or_overwrite": "新建(如果存在就覆盖)", + "topics.export.obsidian_operate_placeholder": "请选择处理方式", + "topics.export.obsidian_operate_prepend": "前置", + "topics.export.obsidian_source": "来源", + "topics.export.obsidian_source_placeholder": "请输入来源", + "topics.export.obsidian_tags": "标签", + "topics.export.obsidian_tags_placeholder": "请输入标签,多个标签用英文逗号分隔,Obsidian不可用纯数字", "topics.export.obsidian_title": "标题", "topics.export.obsidian_title_placeholder": "请输入标题", "topics.export.obsidian_title_required": "标题不能为空", - "topics.export.obsidian_tags": "标签", - "topics.export.obsidian_tags_placeholder": "请输入标签,多个标签用英文逗号分隔,Obsidian不可用纯数字", - "topics.export.obsidian_created": "创建时间", - "topics.export.obsidian_created_placeholder": "请选择创建时间", - "topics.export.obsidian_source": "来源", - "topics.export.obsidian_source_placeholder": "请输入来源", - "topics.export.obsidian_operate": "处理方式", - "topics.export.obsidian_operate_placeholder": "请选择处理方式", - "topics.export.obsidian_operate_append": "追加", - "topics.export.obsidian_operate_prepend": "前置", - "topics.export.obsidian_operate_new_or_overwrite": "新建(如果存在就覆盖)", - "topics.export.obsidian_atributes": "配置笔记属性", - "topics.export.obsidian_btn": "确定", - "topics.export.obsidian_export_success": "导出成功", - "topics.export.obsidian_export_failed": "导出失败", - "topics.export.joplin": "导出到 Joplin", + "topics.export.title": "导出", + "topics.export.word": "导出为 Word", + "topics.export.yuque": "导出到语雀", "topics.list": "话题列表", "topics.move_to": "移动到", + "topics.new": "开始新对话", "topics.pinned": "固定话题", "topics.prompt": "话题提示词", "topics.prompt.edit.title": "编辑话题提示词", "topics.prompt.tips": "话题提示词: 针对当前话题提供额外的补充提示词", "topics.title": "话题", "topics.unpinned": "取消固定", - "topics.new": "开始新对话", - "translate": "翻译", - "navigation": { - "prev": "上一条消息", - "next": "下一条消息", - "first": "已经是第一条消息", - "last": "已经是最后一条消息" - } + "translate": "翻译" }, "code_block": { "collapse": "收起", @@ -208,6 +208,7 @@ }, "common": { "add": "添加", + "advanced_settings": "高级设置", "and": "和", "assistant": "智能体", "avatar": "头像", @@ -217,8 +218,8 @@ "clear": "清除", "close": "关闭", "confirm": "确认", - "copy": "复制", "copied": "已复制", + "copy": "复制", "cut": "剪切", "default": "默认", "delete": "删除", @@ -227,6 +228,7 @@ "download": "下载", "duplicate": "复制", "edit": "编辑", + "expand": "展开", "footnote": "引用内容", "footnotes": "引用内容", "fullscreen": "已进入全屏模式,按 F11 退出", @@ -234,6 +236,7 @@ "language": "语言", "model": "模型", "models": "模型", + "more": "更多", "name": "名称", "paste": "粘贴", "prompt": "提示词", @@ -246,10 +249,7 @@ "select": "选择", "topics": "话题", "warning": "警告", - "you": "用户", - "more": "更多", - "advanced_settings": "高级设置", - "expand": "展开" + "you": "用户" }, "docs": { "title": "帮助文档" @@ -307,6 +307,12 @@ "title": "文件", "type": "类型" }, + "gpustack": { + "keep_alive_time.description": "模型在内存中保持的时间(默认:5分钟)", + "keep_alive_time.placeholder": "分钟", + "keep_alive_time.title": "保持活跃时间", + "title": "GPUStack" + }, "history": { "continue_chat": "继续聊天", "locate.message": "定位到消息", @@ -375,11 +381,11 @@ "threshold_placeholder": "未设置", "threshold_too_large_or_small": "阈值不能大于1或小于0", "threshold_tooltip": "用于衡量用户问题与知识库内容之间的相关性(0-1)", - "topN": "返回结果数量", - "topN_placeholder": "未设置", - "topN__too_large_or_small": "返回结果数量不能大于100或小于1", - "topN_tooltip": "返回的匹配结果数量,数值越大,匹配结果越多,但消耗的 Token 也越多", "title": "知识库", + "topN": "返回结果数量", + "topN__too_large_or_small": "返回结果数量不能大于100或小于1", + "topN_placeholder": "未设置", + "topN_tooltip": "返回的匹配结果数量,数值越大,匹配结果越多,但消耗的 Token 也越多", "url_added": "网址已添加", "url_placeholder": "请输入网址, 多个网址用回车分隔", "urls": "网址" @@ -420,22 +426,22 @@ "title": "Mermaid 图表" }, "message": { - "attachments": { - "pasted_text": "剪切板文件", - "pasted_image": "剪切板图片" - }, "api.check.model.title": "请选择要检测的模型", "api.connection.failed": "连接失败", "api.connection.success": "连接成功", "assistant.added.content": "智能体添加成功", + "attachments": { + "pasted_image": "剪切板图片", + "pasted_text": "剪切板文件" + }, "backup.failed": "备份失败", "backup.start.success": "开始备份", "backup.success": "备份成功", "chat.completion.paused": "会话已停止", "citations": "引用内容", "copied": "已复制", - "copy.success": "复制成功", "copy.failed": "复制失败", + "copy.success": "复制成功", "error.chunk_overlap_too_large": "分段重叠不能大于分段大小", "error.dimension_too_large": "内容尺寸过大", "error.enter.api.host": "请输入您的 API 地址", @@ -448,20 +454,20 @@ "error.invalid.enter.model": "请选择一个模型", "error.invalid.proxy.url": "无效的代理地址", "error.invalid.webdav": "无效的 WebDAV 设置", + "error.joplin.export": "导出 Joplin 失败,请保持 Joplin 已运行并检查连接状态或检查配置", + "error.joplin.no_config": "未配置 Joplin 授权令牌 或 URL", "error.markdown.export.preconf": "导出Markdown文件到预先设定的路径失败", "error.markdown.export.specified": "导出Markdown文件失败", "error.notion.export": "导出 Notion 错误,请检查连接状态并对照文档检查配置", "error.notion.no_api_key": "未配置 Notion API Key 或 Notion Database ID", "error.yuque.export": "导出语雀错误,请检查连接状态并对照文档检查配置", "error.yuque.no_config": "未配置语雀 Token 或 知识库 URL", - "error.joplin.no_config": "未配置 Joplin 授权令牌 或 URL", - "error.joplin.export": "导出 Joplin 失败,请保持 Joplin 已运行并检查连接状态或检查配置", "group.delete.content": "删除分组消息会删除用户提问和所有助手的回答", "group.delete.title": "删除分组消息", "ignore.knowledge.base": "联网模式开启,忽略知识库", "info.notion.block_reach_limit": "对话过长,正在分页导出到Notion", - "loading.notion.preparing": "正在准备导出到Notion...", "loading.notion.exporting_progress": "正在导出到Notion ({{current}}/{{total}})...", + "loading.notion.preparing": "正在准备导出到Notion...", "mention.title": "切换模型回答", "message.code_style": "代码风格", "message.delete.content": "确定要删除此消息吗?", @@ -484,22 +490,22 @@ "restore.success": "恢复成功", "save.success.title": "保存成功", "searching": "正在联网搜索...", + "success.joplin.export": "成功导出到 Joplin", "success.markdown.export.preconf": "成功导出 Markdown 文件到预先设定的路径", "success.markdown.export.specified": "成功导出 Markdown 文件", "success.notion.export": "成功导出到 Notion", "success.yuque.export": "成功导出到语雀", - "success.joplin.export": "成功导出到 Joplin", "switch.disabled": "请等待当前回复完成后操作", + "tools": { + "completed": "已完成", + "invoking": "调用中" + }, "topic.added": "话题添加成功", "upgrade.success.button": "重启", "upgrade.success.content": "重启用以完成升级", "upgrade.success.title": "升级成功", "warn.notion.exporting": "正在导出到 Notion, 请勿重复请求导出!", - "warning.rate.limit": "发送过于频繁,请等待 {{seconds}} 秒后再尝试", - "tools": { - "invoking": "调用中", - "completed": "已完成" - } + "warning.rate.limit": "发送过于频繁,请等待 {{seconds}} 秒后再尝试" }, "minapp": { "sidebar.add.title": "添加到侧边栏", @@ -538,10 +544,7 @@ "embedding": "嵌入", "embedding_model": "嵌入模型", "embedding_model_tooltip": "在设置->模型服务中点击管理按钮添加", - "rerank_model": "重排序模型", - "rerank_model_tooltip": "在设置->模型服务中点击管理按钮添加", - "rerank_model_support_provider": "目前重排序模型仅支持部分服务商 ({{provider}})", - "free": "免费", + "function_calling": "函数调用", "no_matches": "无可用模型", "parameter_name": "参数名称", "parameter_type": { @@ -551,20 +554,22 @@ "string": "文本" }, "pinned": "已固定", - "reasoning": "推理", + "rerank_model": "重排序模型", + "rerank_model_support_provider": "目前重排序模型仅支持部分服务商 ({{provider}})", + "rerank_model_tooltip": "在设置->模型服务中点击管理按钮添加", "search": "搜索模型...", "stream_output": "流式输出", - "function_calling": "函数调用", "type": { "embedding": "嵌入", + "free": "免费", + "function_calling": "工具", "reasoning": "推理", + "rerank": "重排", "select": "选择模型类型", "text": "文本", - "vision": "图像", - "function_calling": "函数调用" - }, - "vision": "视觉", - "websearch": "联网" + "vision": "视觉", + "websearch": "联网" + } }, "navbar": { "expand": "伸缩对话框", @@ -617,10 +622,12 @@ }, "provider": { "aihubmix": "AiHubMix", + "alayanew": "Alaya NeW", "anthropic": "Anthropic", "azure-openai": "Azure OpenAI", "baichuan": "百川", "baidu-cloud": "百度云千帆", + "copilot": "GitHub Copilot", "dashscope": "阿里云百炼", "deepseek": "深度求索", "dmxapi": "DMXAPI", @@ -629,6 +636,7 @@ "gemini": "Gemini", "gitee-ai": "Gitee AI", "github": "GitHub Models", + "gpustack": "GPUStack", "graphrag-kylin-mountain": "GraphRAG", "grok": "Grok", "groq": "Groq", @@ -657,10 +665,7 @@ "xirang": "天翼云息壤", "yi": "零一万物", "zhinao": "360智脑", - "zhipu": "智谱AI", - "copilot": "GitHub Copilot", - "gpustack": "GPUStack", - "alayanew": "Alaya NeW" + "zhipu": "智谱AI" }, "restore": { "confirm": "确定要恢复数据吗?", @@ -676,12 +681,6 @@ }, "title": "数据恢复" }, - "gpustack": { - "keep_alive_time.description": "模型在内存中保持的时间(默认:5分钟)", - "keep_alive_time.placeholder": "分钟", - "keep_alive_time.title": "保持活跃时间", - "title": "GPUStack" - }, "settings": { "about": "关于我们", "about.checkingUpdate": "正在检查更新...", @@ -728,15 +727,30 @@ "data.title": "数据目录", "hour_interval_one": "{{count}} 小时", "hour_interval_other": "{{count}} 小时", - "minute_interval_one": "{{count}} 分钟", - "minute_interval_other": "{{count}} 分钟", - "markdown_export.title": "Markdown 导出", + "joplin": { + "check": { + "button": "检查", + "empty_token": "请先输入 Joplin 授权令牌", + "empty_url": "请先输入 Joplin 剪裁服务监听 URL", + "fail": "Joplin 连接验证失败", + "success": "Joplin 连接验证成功" + }, + "help": "在 Joplin 选项中,启用网页剪裁服务(无需安装浏览器插件),确认端口号,并复制授权令牌", + "title": "Joplin 配置", + "token": "Joplin 授权令牌", + "token_placeholder": "请输入 Joplin 授权令牌", + "url": "Joplin 剪裁服务监听 URL", + "url_placeholder": "http://127.0.0.1:41184/" + }, + "markdown_export.force_dollar_math.help": "开启后,导出Markdown时会将强制使用$$来标记LaTeX公式。注意:该项也会影响所有通过Markdown导出的方式,如Notion、语雀等。", + "markdown_export.force_dollar_math.title": "强制使用$$来标记LaTeX公式", + "markdown_export.help": "若填入,则每次导出时将自动保存到该路径;否则,将弹出保存对话框", "markdown_export.path": "默认导出路径", "markdown_export.path_placeholder": "导出路径", "markdown_export.select": "选择", - "markdown_export.help": "若填入,则每次导出时将自动保存到该路径;否则,将弹出保存对话框", - "markdown_export.force_dollar_math.title": "强制使用$$来标记LaTeX公式", - "markdown_export.force_dollar_math.help": "开启后,导出Markdown时会将强制使用$$来标记LaTeX公式。注意:该项也会影响所有通过Markdown导出的方式,如Notion、语雀等。", + "markdown_export.title": "Markdown 导出", + "minute_interval_one": "{{count}} 分钟", + "minute_interval_other": "{{count}} 分钟", "notion.api_key": "Notion 密钥", "notion.api_key_placeholder": "请输入Notion 密钥", "notion.auto_split": "导出对话时自动分页", @@ -758,11 +772,22 @@ "notion.split_size_help": "Notion免费版用户建议设置为90,高级版用户建议设置为24990,默认值为90", "notion.split_size_placeholder": "请输入每页块数限制(默认90)", "notion.title": "Notion 配置", + "obsidian": { + "folder": "文件夹", + "folder_placeholder": "请输入文件夹名称", + "tags": "全局标签", + "tags_placeholder": "请输入标签名称, 多个标签用英文逗号分隔,Obsidian不可用纯数字", + "title": "Obsidian 配置", + "vault": "保管库", + "vault_placeholder": "请输入保管库名称" + }, "title": "数据设置", "webdav": { "autoSync": "自动备份", "autoSync.off": "关闭", "backup.button": "备份到 WebDAV", + "backup.modal.filename.placeholder": "请输入备份文件名", + "backup.modal.title": "备份到 WebDAV", "host": "WebDAV 地址", "host.placeholder": "http://localhost:8080", "hour_interval_one": "{{count}} 小时", @@ -774,14 +799,12 @@ "password": "WebDAV 密码", "path": "WebDAV 路径", "path.placeholder": "/backup", - "backup.modal.title": "备份到 WebDAV", - "backup.modal.filename.placeholder": "请输入备份文件名", - "restore.modal.title": "从 WebDAV 恢复", - "restore.modal.select.placeholder": "请选择要恢复的备份文件", - "restore.confirm.title": "确认恢复", - "restore.confirm.content": "从 WebDAV 恢复将会覆盖当前数据,是否继续?", "restore.button": "从 WebDAV 恢复", + "restore.confirm.content": "从 WebDAV 恢复将会覆盖当前数据,是否继续?", + "restore.confirm.title": "确认恢复", "restore.content": "从 WebDAV 恢复将覆盖当前数据,是否继续?", + "restore.modal.select.placeholder": "请选择要恢复的备份文件", + "restore.modal.title": "从 WebDAV 恢复", "restore.title": "从 WebDAV 恢复", "syncError": "备份错误", "syncStatus": "备份状态", @@ -802,30 +825,6 @@ "title": "语雀配置", "token": "语雀 Token", "token_placeholder": "请输入语雀Token" - }, - "obsidian": { - "title": "Obsidian 配置", - "vault": "保管库", - "vault_placeholder": "请输入保管库名称", - "folder": "文件夹", - "folder_placeholder": "请输入文件夹名称", - "tags": "全局标签", - "tags_placeholder": "请输入标签名称, 多个标签用英文逗号分隔,Obsidian不可用纯数字" - }, - "joplin": { - "check": { - "button": "检查", - "empty_url": "请先输入 Joplin 剪裁服务监听 URL", - "empty_token": "请先输入 Joplin 授权令牌", - "fail": "Joplin 连接验证失败", - "success": "Joplin 连接验证成功" - }, - "title": "Joplin 配置", - "help": "在 Joplin 选项中,启用网页剪裁服务(无需安装浏览器插件),确认端口号,并复制授权令牌", - "url": "Joplin 剪裁服务监听 URL", - "url_placeholder": "http://127.0.0.1:41184/", - "token": "Joplin 授权令牌", - "token_placeholder": "请输入 Joplin 授权令牌" } }, "display.assistant.title": "助手设置", @@ -871,12 +870,15 @@ "input.target_language.english": "英文", "input.target_language.japanese": "日文", "input.target_language.russian": "俄文", + "launch.onboot": "开机自动启动", + "launch.title": "启动", + "launch.totray": "启动时最小化到托盘", "mcp": { "actions": "操作", "active": "启用", + "addError": "添加服务器失败", "addServer": "添加服务器", "addSuccess": "服务器添加成功", - "addError": "添加服务器失败", "args": "参数", "argsTooltip": "每个参数占一行", "baseUrlTooltip": "远程 URL 地址", @@ -887,55 +889,51 @@ "confirmDeleteMessage": "您确定要删除该服务器吗?", "deleteError": "删除服务器失败", "deleteSuccess": "服务器删除成功", + "dependenciesInstall": "安装依赖项", + "dependenciesInstalling": "正在安装依赖项...", "description": "描述", "duplicateName": "已存在同名服务器", + "editJson": "编辑JSON", "editServer": "编辑服务器", "env": "环境变量", "envTooltip": "格式:KEY=value,每行一个", "findMore": "更多 MCP 服务器", + "install": "安装", + "installError": "安装依赖项失败", + "installSuccess": "依赖项安装成功", + "jsonFormatError": "JSON格式化错误", + "jsonModeHint": "编辑MCP服务器配置的JSON表示。保存前请确保格式正确。", + "jsonSaveError": "保存JSON配置失败", + "jsonSaveSuccess": "JSON配置已保存", + "missingDependencies": "缺失,请安装它以继续", "name": "名称", "nameRequired": "请输入服务器名称", "noServers": "未配置服务器", + "npx_list": { + "actions": "操作", + "desc": "搜索并添加 npm 包作为 MCP 服务", + "description": "描述", + "no_packages": "未找到包", + "npm": "NPM", + "package_name": "包名称", + "scope_placeholder": "输入 npm 作用域 (例如 @your-org)", + "scope_required": "请输入 npm 作用域", + "search": "搜索", + "search_error": "搜索失败", + "title": "NPX 包列表", + "usage": "用法", + "version": "版本" + }, "serverPlural": "服务器", "serverSingular": "服务器", "title": "MCP 服务器", - "type": "类型", - "updateSuccess": "服务器更新成功", - "updateError": "更新服务器失败", - "url": "URL", "toggleError": "切换失败", - "dependenciesInstalling": "正在安装依赖项...", - "dependenciesInstall": "安装依赖项", - "installSuccess": "依赖项安装成功", - "installError": "安装依赖项失败", - "missingDependencies": "缺失,请安装它以继续", - "install": "安装", - "npx_list": { - "title": "NPX 包列表", - "desc": "搜索并添加 npm 包作为 MCP 服务", - "scope_placeholder": "输入 npm 作用域 (例如 @your-org)", - "search": "搜索", - "package_name": "包名称", - "description": "描述", - "usage": "用法", - "npm": "NPM", - "version": "版本", - "actions": "操作", - "scope_required": "请输入 npm 作用域", - "no_packages": "未找到包", - "search_error": "搜索失败" - }, - "editJson": "编辑JSON", - "jsonModeHint": "编辑MCP服务器配置的JSON表示。保存前请确保格式正确。", - "jsonFormatError": "JSON格式化错误", - "jsonSaveSuccess": "JSON配置已保存", - "jsonSaveError": "保存JSON配置失败" + "type": "类型", + "updateError": "更新服务器失败", + "updateSuccess": "服务器更新成功", + "url": "URL" }, "messages.divider": "消息分割线", - "messages.navigation": "对话导航按钮", - "messages.navigation.none": "不显示", - "messages.navigation.buttons": "上下按钮", - "messages.navigation.anchor": "对话锚点", "messages.grid_columns": "消息网格展示列数", "messages.grid_popover_trigger": "网格详情触发", "messages.grid_popover_trigger.click": "点击显示", @@ -949,6 +947,10 @@ "messages.math_engine": "数学公式引擎", "messages.metrics": "首字时延 {{time_first_token_millsec}}ms | 每秒 {{token_speed}} tokens", "messages.model.title": "模型设置", + "messages.navigation": "对话导航按钮", + "messages.navigation.anchor": "对话锚点", + "messages.navigation.buttons": "上下按钮", + "messages.navigation.none": "不显示", "messages.title": "消息设置", "messages.use_serif_font": "使用衬线字体", "model": "默认模型", @@ -1011,43 +1013,43 @@ "check": "检查", "check_all_keys": "检查所有密钥", "check_multiple_keys": "检查多个 API 密钥", + "copilot": { + "auth_failed": "Github Copilot 认证失败", + "auth_success": "Github Copilot 认证成功", + "auth_success_title": "认证成功", + "code_failed": "获取 Device Code 失败,请重试", + "code_generated_desc": "请将 Device Code 复制到下面的浏览器链接中", + "code_generated_title": "获取 Device Code", + "confirm_login": "过度使用可能会导致您的 Github 账号遭到封号,请谨慎使用!!!!", + "confirm_title": "风险警告", + "connect": "连接 Github", + "custom_headers": "自定义请求头", + "description": "您的 Github 账号需要订阅 Copilot", + "expand": "展开", + "headers_description": "自定义请求头(json格式)", + "invalid_json": "JSON 格式错误", + "login": "登录 Github", + "logout": "退出 Github", + "logout_failed": "退出失败,请重试", + "logout_success": "已成功退出", + "model_setting": "模型设置", + "open_verification_first": "请先点击上方链接访问验证页面", + "rate_limit": "速率限制", + "tooltip": "使用 Github Copilot 需要先登录 Github" + }, "delete.content": "确定要删除此模型提供商吗?", "delete.title": "删除提供商", "docs_check": "查看", "docs_more_details": "获取更多详情", "get_api_key": "点击这里获取密钥", + "is_not_support_array_content": "开启兼容模式", "no_models": "请先添加模型再检查 API 连接", "not_checked": "未检查", "remove_duplicate_keys": "移除重复密钥", "remove_invalid_keys": "删除无效密钥", "search": "搜索模型平台...", "search_placeholder": "搜索模型 ID 或名称", - "title": "模型服务", - "is_not_support_array_content": "开启兼容模式", - "copilot": { - "tooltip": "使用 Github Copilot 需要先登录 Github", - "description": "您的 Github 账号需要订阅 Copilot", - "login": "登录 Github", - "connect": "连接 Github", - "logout": "退出 Github", - "auth_success_title": "认证成功", - "code_generated_title": "获取 Device Code", - "code_generated_desc": "请将 Device Code 复制到下面的浏览器链接中", - "code_failed": "获取 Device Code 失败,请重试", - "auth_success": "Github Copilot 认证成功", - "auth_failed": "Github Copilot 认证失败", - "logout_success": "已成功退出", - "logout_failed": "退出失败,请重试", - "confirm_title": "风险警告", - "confirm_login": "过度使用可能会导致您的 Github 账号遭到封号,请谨慎使用!!!!", - "rate_limit": "速率限制", - "custom_headers": "自定义请求头", - "headers_description": "自定义请求头(json格式)", - "expand": "展开", - "model_setting": "模型设置", - "invalid_json": "JSON 格式错误", - "open_verification_first": "请先点击上方链接访问验证页面" - } + "title": "模型服务" }, "proxy": { "mode": { @@ -1062,9 +1064,9 @@ "quickAssistant": { "click_tray_to_show": "点击托盘图标启动", "enable_quick_assistant": "启用快捷助手", + "read_clipboard_at_startup": "启动时读取剪贴板", "title": "快捷助手", - "use_shortcut_to_show": "右键点击托盘图标或使用快捷键启动", - "read_clipboard_at_startup": "启动时读取剪贴板" + "use_shortcut_to_show": "右键点击托盘图标或使用快捷键启动" }, "shortcuts": { "action": "操作", @@ -1101,19 +1103,18 @@ "topic.position.left": "左侧", "topic.position.right": "右侧", "topic.show.time": "显示话题时间", - "tray.title": "托盘", - "tray.show": "显示托盘图标", "tray.onclose": "关闭时最小化到托盘", - "launch.title": "启动", - "launch.onboot": "开机自动启动", - "launch.totray": "启动时最小化到托盘", + "tray.show": "显示托盘图标", + "tray.title": "托盘", "websearch": { "blacklist": "黑名单", "blacklist_description": "在搜索结果中不会出现以下网站的结果", "blacklist_tooltip": "请使用以下格式(换行分隔)\nexample.com\nhttps://www.example.com\nhttps://example.com\n*://*.example.com", "check": "检查", - "check_success": "验证成功", "check_failed": "验证失败", + "check_success": "验证成功", + "enhance_mode": "搜索增强模式", + "enhance_mode_tooltip": "使用默认模型提取关键词后搜索", "get_api_key": "点击这里获取密钥", "no_provider_selected": "请选择搜索服务商后再检查", "search_max_result": "搜索结果个数", @@ -1121,8 +1122,6 @@ "search_provider_placeholder": "选择一个搜索服务商", "search_result_default": "默认", "search_with_time": "搜索包含日期", - "enhance_mode": "搜索增强模式", - "enhance_mode_tooltip": "使用默认模型提取关键词后搜索", "tavily": { "api_key": "Tavily API 密钥", "api_key.placeholder": "请输入 Tavily API 密钥", diff --git a/src/renderer/src/i18n/locales/zh-tw.json b/src/renderer/src/i18n/locales/zh-tw.json index 4910a445..78f9fe57 100644 --- a/src/renderer/src/i18n/locales/zh-tw.json +++ b/src/renderer/src/i18n/locales/zh-tw.json @@ -126,6 +126,12 @@ "message.quote": "引用", "message.regenerate.model": "切換模型", "message.useful": "有用", + "navigation": { + "first": "已經是第一條訊息", + "last": "已經是最後一條訊息", + "next": "下一條訊息", + "prev": "上一條訊息" + }, "resend": "重新傳送", "save": "儲存", "settings.code_collapsible": "程式碼區塊可折疊", @@ -157,51 +163,44 @@ "topics.edit.placeholder": "輸入新名稱", "topics.edit.title": "編輯名稱", "topics.export.image": "匯出為圖片", + "topics.export.joplin": "匯出到 Joplin", "topics.export.md": "匯出為 Markdown", "topics.export.notion": "匯出到 Notion", - "topics.export.title": "匯出", - "topics.export.word": "匯出為 Word", - "topics.export.yuque": "匯出到語雀", "topics.export.obsidian": "匯出到 Obsidian", + "topics.export.obsidian_atributes": "配置筆記屬性", + "topics.export.obsidian_btn": "確定", + "topics.export.obsidian_created": "建立時間", + "topics.export.obsidian_created_placeholder": "請選擇建立時間", + "topics.export.obsidian_export_failed": "匯出失敗", + "topics.export.obsidian_export_success": "匯出成功", "topics.export.obsidian_not_configured": "Obsidian 未配置", + "topics.export.obsidian_operate": "處理方式", + "topics.export.obsidian_operate_append": "追加", + "topics.export.obsidian_operate_new_or_overwrite": "新建(如果存在就覆蓋)", + "topics.export.obsidian_operate_placeholder": "請選擇處理方式", + "topics.export.obsidian_operate_prepend": "前置", + "topics.export.obsidian_selected_path": "已選擇路徑", + "topics.export.obsidian_show_md_files": "顯示md文件", + "topics.export.obsidian_source": "來源", + "topics.export.obsidian_source_placeholder": "請輸入來源", + "topics.export.obsidian_tags": "標籤", + "topics.export.obsidian_tags_placeholder": "請輸入標籤名稱,多個標籤用英文逗號分隔。Obsidian 不可用純數字。", "topics.export.obsidian_title": "標題", "topics.export.obsidian_title_placeholder": "請輸入標題", "topics.export.obsidian_title_required": "標題不能為空", - "topics.export.obsidian_tags": "標籤", - "topics.export.obsidian_tags_placeholder": "請輸入標籤名稱,多個標籤用英文逗號分隔。Obsidian 不可用純數字。", - "topics.export.obsidian_created": "建立時間", - "topics.export.obsidian_created_placeholder": "請選擇建立時間", - "topics.export.obsidian_source": "來源", - "topics.export.obsidian_source_placeholder": "請輸入來源", - "topics.export.obsidian_operate": "處理方式", - "topics.export.obsidian_operate_placeholder": "請選擇處理方式", - "topics.export.obsidian_operate_append": "追加", - "topics.export.obsidian_operate_prepend": "前置", - "topics.export.obsidian_operate_new_or_overwrite": "新建(如果存在就覆蓋)", - "topics.export.obsidian_atributes": "配置筆記屬性", - "topics.export.obsidian_btn": "確定", - "topics.export.obsidian_export_success": "匯出成功", - "topics.export.obsidian_export_failed": "匯出失败", - "topics.export.obsidian_export_failed": "匯出失敗", - "topics.export.obsidian_show_md_files": "顯示md文件", - "topics.export.obsidian_selected_path": "已選擇路徑", - "topics.export.joplin": "匯出到 Joplin", + "topics.export.title": "匯出", + "topics.export.word": "匯出為 Word", + "topics.export.yuque": "匯出到語雀", "topics.list": "話題列表", "topics.move_to": "移動到", + "topics.new": "開始新對話", "topics.pinned": "固定話題", "topics.prompt": "話題提示詞", "topics.prompt.edit.title": "編輯話題提示詞", "topics.prompt.tips": "話題提示詞:針對目前話題提供額外的補充提示詞", "topics.title": "話題", "topics.unpinned": "取消固定", - "topics.new": "開始新對話", - "translate": "翻譯", - "navigation": { - "prev": "上一條訊息", - "next": "下一條訊息", - "first": "已經是第一條訊息", - "last": "已經是最後一條訊息" - } + "translate": "翻譯" }, "code_block": { "collapse": "折疊", @@ -211,6 +210,7 @@ }, "common": { "add": "新增", + "advanced_settings": "進階設定", "and": "與", "assistant": "智慧代理人", "avatar": "頭像", @@ -219,6 +219,8 @@ "chat": "聊天", "clear": "清除", "close": "關閉", + "confirm": "確認", + "copied": "已複製", "copy": "複製", "cut": "剪下", "default": "預設", @@ -228,6 +230,7 @@ "download": "下載", "duplicate": "複製", "edit": "編輯", + "expand": "展開", "footnote": "引用內容", "footnotes": "引用", "fullscreen": "已進入全螢幕模式,按 F11 結束", @@ -235,6 +238,7 @@ "language": "語言", "model": "模型", "models": "模型", + "more": "更多", "name": "名稱", "paste": "貼上", "prompt": "提示詞", @@ -247,12 +251,7 @@ "select": "選擇", "topics": "話題", "warning": "警告", - "you": "您", - "copied": "已複製", - "confirm": "確認", - "more": "更多", - "advanced_settings": "進階設定", - "expand": "展開" + "you": "您" }, "docs": { "title": "說明文件" @@ -310,6 +309,12 @@ "title": "檔案", "type": "類型" }, + "gpustack": { + "keep_alive_time.description": "模型在記憶體中保持的時間(預設為 5 分鐘)。", + "keep_alive_time.placeholder": "分鐘", + "keep_alive_time.title": "保持活躍時間", + "title": "GPUStack" + }, "history": { "continue_chat": "繼續聊天", "locate.message": "定位到訊息", @@ -379,13 +384,13 @@ "threshold_too_large_or_small": "閾值不能大於 1 或小於 0", "threshold_tooltip": "用於衡量使用者問題與知識庫內容之間的相關性(0-1)", "title": "知識庫", + "topN": "返回結果數量", + "topN__too_large_or_small": "返回結果數量不能大於100或小於1", + "topN_placeholder": "未設定", + "topN_tooltip": "返回的匹配結果數量,數值越大,匹配結果越多,但消耗的 Token 也越多", "url_added": "網址已新增", "url_placeholder": "請輸入網址,多個網址用換行符號分隔", - "urls": "網址", - "topN": "返回結果數量", - "topN_placeholder": "未設定", - "topN__too_large_or_small": "返回結果數量不能大於100或小於1", - "topN_tooltip": "返回的匹配結果數量,數值越大,匹配結果越多,但消耗的 Token 也越多" + "urls": "網址" }, "languages": { "arabic": "阿拉伯文", @@ -423,22 +428,22 @@ "title": "Mermaid 圖表" }, "message": { - "attachments": { - "pasted_text": "剪切板文件", - "pasted_image": "剪切板圖片" - }, "api.check.model.title": "請選擇要偵測的模型", "api.connection.failed": "連接失敗", "api.connection.success": "連接成功", "assistant.added.content": "智慧代理人新增成功", + "attachments": { + "pasted_image": "剪切板圖片", + "pasted_text": "剪切板文件" + }, "backup.failed": "備份失敗", "backup.start.success": "開始備份", "backup.success": "備份成功", "chat.completion.paused": "聊天完成已暫停", "citations": "參考文獻", "copied": "已複製!", - "copy.success": "已複製!", "copy.failed": "複製失敗", + "copy.success": "已複製!", "error.chunk_overlap_too_large": "分段重疊不能大於分段大小", "error.dimension_too_large": "內容尺寸過大", "error.enter.api.host": "請先輸入您的 API 主機地址", @@ -451,20 +456,20 @@ "error.invalid.enter.model": "請選擇一個模型", "error.invalid.proxy.url": "無效的代理伺服器 URL", "error.invalid.webdav": "無效的 WebDAV 設定", + "error.joplin.export": "匯出 Joplin 失敗,請保持 Joplin 已運行並檢查連接狀態或檢查設定", + "error.joplin.no_config": "未設定 Joplin 授權Token 或 URL", "error.markdown.export.preconf": "導出 Markdown 文件到預先設定的路徑失敗", "error.markdown.export.specified": "導出 Markdown 文件失敗", "error.notion.export": "匯出 Notion 錯誤,請檢查連接狀態並對照文件檢查設定", "error.notion.no_api_key": "未設定 Notion API Key 或 Notion Database ID", "error.yuque.export": "匯出語雀錯誤,請檢查連接狀態並對照文件檢查設定", "error.yuque.no_config": "未設定語雀 Token 或知識庫 Url", - "error.joplin.no_config": "未設定 Joplin 授權Token 或 URL", - "error.joplin.export": "匯出 Joplin 失敗,請保持 Joplin 已運行並檢查連接狀態或檢查設定", "group.delete.content": "刪除分組訊息會刪除使用者提問和所有助手的回答", "group.delete.title": "刪除分組訊息", "ignore.knowledge.base": "網路模式開啟,忽略知識庫", "info.notion.block_reach_limit": "對話過長,自動分頁匯出到 Notion", - "loading.notion.preparing": "正在準備匯出到 Notion...", "loading.notion.exporting_progress": "正在匯出到 Notion ({{current}}/{{total}})...", + "loading.notion.preparing": "正在準備匯出到 Notion...", "mention.title": "切換模型回答", "message.code_style": "程式碼風格", "message.delete.content": "確定要刪除此訊息嗎?", @@ -487,22 +492,22 @@ "restore.success": "恢復成功", "save.success.title": "儲存成功", "searching": "正在網路上搜尋...", + "success.joplin.export": "成功匯出到 Joplin", "success.markdown.export.preconf": "成功導出 Markdown 文件到預先設定的路徑", "success.markdown.export.specified": "成功導出 Markdown 文件", "success.notion.export": "成功匯出到 Notion", "success.yuque.export": "成功匯出到語雀", - "success.joplin.export": "成功匯出到 Joplin", "switch.disabled": "請等待當前回覆完成", + "tools": { + "completed": "已完成", + "invoking": "調用中" + }, "topic.added": "新話題已新增", "upgrade.success.button": "重新啟動", "upgrade.success.content": "請重新啟動程式以完成升級", "upgrade.success.title": "升級成功", "warn.notion.exporting": "正在匯出到 Notion,請勿重複請求匯出!", - "warning.rate.limit": "發送過於頻繁,請在 {{seconds}} 秒後再嘗試", - "tools": { - "invoking": "調用中", - "completed": "已完成" - } + "warning.rate.limit": "發送過於頻繁,請在 {{seconds}} 秒後再嘗試" }, "minapp": { "sidebar.add.title": "新增到側邊欄", @@ -541,7 +546,7 @@ "embedding": "嵌入", "embedding_model": "嵌入模型", "embedding_model_tooltip": "在設定->模型服務中點選管理按鈕新增", - "free": "免費", + "function_calling": "函數調用", "no_matches": "無可用模型", "parameter_name": "參數名稱", "parameter_type": { @@ -551,23 +556,22 @@ "string": "文字" }, "pinned": "已固定", - "reasoning": "推理", + "rerank_model": "重排序模型", + "rerank_model_support_provider": "目前重排序模型僅支持部分服務商 ({{provider}})", + "rerank_model_tooltip": "在設定->模型服務中點擊管理按鈕添加", "search": "搜尋模型...", "stream_output": "串流輸出", - "function_calling": "函數調用", "type": { "embedding": "嵌入", + "free": "免費", + "function_calling": "工具", "reasoning": "推理", + "rerank": "重排", "select": "選擇模型類型", "text": "文字", - "vision": "影像", - "function_calling": "函數調用" - }, - "vision": "視覺", - "websearch": "網路搜尋", - "rerank_model": "重排序模型", - "rerank_model_tooltip": "在設定->模型服務中點擊管理按鈕添加", - "rerank_model_support_provider": "目前重排序模型僅支持部分服務商 ({{provider}})" + "vision": "視覺", + "websearch": "網路搜尋" + } }, "navbar": { "expand": "伸縮對話框", @@ -620,10 +624,12 @@ }, "provider": { "aihubmix": "AiHubMix", + "alayanew": "Alaya NeW", "anthropic": "Anthropic", "azure-openai": "Azure OpenAI", "baichuan": "百川", "baidu-cloud": "百度雲千帆", + "copilot": "GitHub Copilot", "dashscope": "阿里雲百鍊", "deepseek": "深度求索", "dmxapi": "DMXAPI", @@ -632,6 +638,7 @@ "gemini": "Gemini", "gitee-ai": "Gitee AI", "github": "GitHub Models", + "gpustack": "GPUStack", "graphrag-kylin-mountain": "GraphRAG", "grok": "Grok", "groq": "Groq", @@ -660,10 +667,7 @@ "xirang": "天翼雲息壤", "yi": "零一萬物", "zhinao": "360 智腦", - "zhipu": "智譜 AI", - "copilot": "GitHub Copilot", - "gpustack": "GPUStack", - "alayanew": "Alaya NeW" + "zhipu": "智譜 AI" }, "restore": { "confirm": "確定要復原資料嗎?", @@ -679,12 +683,6 @@ }, "title": "資料復原" }, - "gpustack": { - "keep_alive_time.description": "模型在記憶體中保持的時間(預設為 5 分鐘)。", - "keep_alive_time.placeholder": "分鐘", - "keep_alive_time.title": "保持活躍時間", - "title": "GPUStack" - }, "settings": { "about": "關於與回饋", "about.checkingUpdate": "正在檢查更新...", @@ -731,15 +729,30 @@ "data.title": "資料目錄", "hour_interval_one": "{{count}} 小時", "hour_interval_other": "{{count}} 小時", - "minute_interval_one": "{{count}} 分鐘", - "minute_interval_other": "{{count}} 分鐘", - "markdown_export.title": "Markdown 匯出", + "joplin": { + "check": { + "button": "檢查", + "empty_token": "請先輸入 Joplin 授權Token", + "empty_url": "請先輸入 Joplin 剪輯服務 URL", + "fail": "Joplin 連接驗證失敗", + "success": "Joplin 連接驗證成功" + }, + "help": "在 Joplin 選項中,啟用剪輯服務(無需安裝瀏覽器外掛),確認埠編號,並複製授權Token", + "title": "Joplin 設定", + "token": "Joplin 授權Token", + "token_placeholder": "請輸入 Joplin 授權Token", + "url": "Joplin 剪輯服務 URL", + "url_placeholder": "http://127.0.0.1:41184/" + }, + "markdown_export.force_dollar_math.help": "開啟後,匯出Markdown時會強制使用$$來標記LaTeX公式。注意:該項也會影響所有透過Markdown匯出的方式,如Notion、語雀等。", + "markdown_export.force_dollar_math.title": "LaTeX公式強制使用$$", + "markdown_export.help": "若填入,每次匯出時將自動儲存至該路徑;否則,將彈出儲存對話框。", "markdown_export.path": "預設匯出路徑", "markdown_export.path_placeholder": "匯出路徑", "markdown_export.select": "選擇", - "markdown_export.help": "若填入,每次匯出時將自動儲存至該路徑;否則,將彈出儲存對話框。", - "markdown_export.force_dollar_math.title": "LaTeX公式強制使用$$", - "markdown_export.force_dollar_math.help": "開啟後,匯出Markdown時會強制使用$$來標記LaTeX公式。注意:該項也會影響所有透過Markdown匯出的方式,如Notion、語雀等。", + "markdown_export.title": "Markdown 匯出", + "minute_interval_one": "{{count}} 分鐘", + "minute_interval_other": "{{count}} 分鐘", "notion.api_key": "Notion 金鑰", "notion.api_key_placeholder": "請輸入 Notion 金鑰", "notion.auto_split": "匯出對話時自動分頁", @@ -761,11 +774,22 @@ "notion.split_size_help": "Notion 免費版使用者建議設定為 90,進階版使用者建議設定為 24990,預設值為 90", "notion.split_size_placeholder": "請輸入每頁塊數限制 (預設 90)", "notion.title": "Notion 設定", + "obsidian": { + "folder": "資料夾", + "folder_placeholder": "請輸入資料夾名稱", + "tags": "全域標籤", + "tags_placeholder": "請輸入標籤名稱,多個標籤用英文逗號分隔。Obsidian 不可用純數字。", + "title": "Obsidian 設定", + "vault": "保險庫", + "vault_placeholder": "請輸入保險庫名稱" + }, "title": "資料設定", "webdav": { "autoSync": "自動備份", "autoSync.off": "關閉", "backup.button": "備份到 WebDAV", + "backup.modal.filename.placeholder": "請輸入備份文件名", + "backup.modal.title": "備份到 WebDAV", "host": "WebDAV 主機位址", "host.placeholder": "http://localhost:8080", "hour_interval_one": "{{count}} 小時", @@ -778,18 +802,16 @@ "path": "WebDAV 路徑", "path.placeholder": "/backup", "restore.button": "從 WebDAV 恢復", + "restore.confirm.content": "從 WebDAV 恢復將覆蓋目前資料,是否繼續?", + "restore.confirm.title": "復元確認", "restore.content": "從 WebDAV 恢復將覆蓋目前資料,是否繼續?", + "restore.modal.select.placeholder": "請選擇要恢復的備份文件", + "restore.modal.title": "從 WebDAV 恢復", "restore.title": "從 WebDAV 恢復", "syncError": "備份錯誤", "syncStatus": "備份狀態", "title": "WebDAV", - "user": "WebDAV 使用者名稱", - "backup.modal.title": "備份到 WebDAV", - "backup.modal.filename.placeholder": "請輸入備份文件名", - "restore.modal.title": "從 WebDAV 恢復", - "restore.modal.select.placeholder": "請選擇要恢復的備份文件", - "restore.confirm.title": "復元確認", - "restore.confirm.content": "從 WebDAV 恢復將覆蓋目前資料,是否繼續?" + "user": "WebDAV 使用者名稱" }, "yuque": { "check": { @@ -805,30 +827,6 @@ "title": "語雀設定", "token": "語雀 Token", "token_placeholder": "請輸入語雀 Token" - }, - "obsidian": { - "title": "Obsidian 設定", - "vault": "保險庫", - "vault_placeholder": "請輸入保險庫名稱", - "folder": "資料夾", - "folder_placeholder": "請輸入資料夾名稱", - "tags": "全域標籤", - "tags_placeholder": "請輸入標籤名稱,多個標籤用英文逗號分隔。Obsidian 不可用純數字。" - }, - "joplin": { - "check": { - "button": "檢查", - "empty_url": "請先輸入 Joplin 剪輯服務 URL", - "empty_token": "請先輸入 Joplin 授權Token", - "fail": "Joplin 連接驗證失敗", - "success": "Joplin 連接驗證成功" - }, - "title": "Joplin 設定", - "help": "在 Joplin 選項中,啟用剪輯服務(無需安裝瀏覽器外掛),確認埠編號,並複製授權Token", - "url": "Joplin 剪輯服務 URL", - "url_placeholder": "http://127.0.0.1:41184/", - "token": "Joplin 授權Token", - "token_placeholder": "請輸入 Joplin 授權Token" } }, "display.assistant.title": "助手設定", @@ -874,12 +872,15 @@ "input.target_language.english": "英文", "input.target_language.japanese": "日文", "input.target_language.russian": "俄文", + "launch.onboot": "開機自動啟動", + "launch.title": "啟動", + "launch.totray": "啟動時最小化到系统匣", "mcp": { "actions": "操作", "active": "啟用", + "addError": "添加伺服器失敗", "addServer": "新增伺服器", "addSuccess": "伺服器新增成功", - "addError": "添加伺服器失敗", "args": "參數", "argsTooltip": "每個參數佔一行", "baseUrlTooltip": "遠端 URL 地址", @@ -890,55 +891,51 @@ "confirmDeleteMessage": "您確定要刪除該伺服器嗎?", "deleteError": "刪除伺服器失敗", "deleteSuccess": "伺服器刪除成功", + "dependenciesInstall": "安裝相依套件", + "dependenciesInstalling": "正在安裝相依套件...", "description": "描述", "duplicateName": "已存在相同名稱的伺服器", + "editJson": "編輯JSON", "editServer": "編輯伺服器", "env": "環境變數", "envTooltip": "格式:KEY=value,每行一個", "findMore": "更多 MCP 伺服器", + "install": "安裝", + "installError": "安裝相依套件失敗", + "installSuccess": "相依套件安裝成功", + "jsonFormatError": "JSON格式錯誤", + "jsonModeHint": "編輯MCP伺服器配置的JSON表示。保存前請確保格式正確。", + "jsonSaveError": "保存JSON配置失敗", + "jsonSaveSuccess": "JSON配置已儲存", + "missingDependencies": "缺失,請安裝它以繼續", "name": "名稱", "nameRequired": "請輸入伺服器名稱", "noServers": "未設定伺服器", + "npx_list": { + "actions": "操作", + "desc": "搜索並添加 npm 包作為 MCP 服務", + "description": "描述", + "no_packages": "未找到包", + "npm": "NPM", + "package_name": "包名稱", + "scope_placeholder": "輸入 npm 作用域 (例如 @your-org)", + "scope_required": "請輸入 npm 作用域", + "search": "搜索", + "search_error": "搜索失敗", + "title": "NPX 包列表", + "usage": "用法", + "version": "版本" + }, "serverPlural": "伺服器", "serverSingular": "伺服器", "title": "MCP 伺服器", - "type": "類型", - "updateSuccess": "伺服器更新成功", - "updateError": "更新伺服器失敗", - "url": "URL", "toggleError": "切換失敗", - "dependenciesInstalling": "正在安裝相依套件...", - "dependenciesInstall": "安裝相依套件", - "installSuccess": "相依套件安裝成功", - "installError": "安裝相依套件失敗", - "missingDependencies": "缺失,請安裝它以繼續", - "install": "安裝", - "npx_list": { - "title": "NPX 包列表", - "desc": "搜索並添加 npm 包作為 MCP 服務", - "scope_placeholder": "輸入 npm 作用域 (例如 @your-org)", - "search": "搜索", - "package_name": "包名稱", - "description": "描述", - "usage": "用法", - "npm": "NPM", - "version": "版本", - "actions": "操作", - "scope_required": "請輸入 npm 作用域", - "no_packages": "未找到包", - "search_error": "搜索失敗" - }, - "editJson": "編輯JSON", - "jsonModeHint": "編輯MCP伺服器配置的JSON表示。保存前請確保格式正確。", - "jsonFormatError": "JSON格式錯誤", - "jsonSaveSuccess": "JSON配置已儲存", - "jsonSaveError": "保存JSON配置失敗" + "type": "類型", + "updateError": "更新伺服器失敗", + "updateSuccess": "伺服器更新成功", + "url": "URL" }, "messages.divider": "訊息間顯示分隔線", - "messages.navigation": "訊息導航", - "messages.navigation.none": "不顯示", - "messages.navigation.buttons": "上下按鈕", - "messages.navigation.anchor": "對話錨點", "messages.grid_columns": "訊息網格展示列數", "messages.grid_popover_trigger": "網格詳細資訊觸發", "messages.grid_popover_trigger.click": "點選顯示", @@ -952,6 +949,10 @@ "messages.math_engine": "Markdown 渲染輸入訊息", "messages.metrics": "首字延遲 {{time_first_token_millsec}}ms | 每秒 {{token_speed}} tokens", "messages.model.title": "模型設定", + "messages.navigation": "訊息導航", + "messages.navigation.anchor": "對話錨點", + "messages.navigation.buttons": "上下按鈕", + "messages.navigation.none": "不顯示", "messages.title": "訊息設定", "messages.use_serif_font": "使用襯線字型", "model": "預設模型", @@ -1014,43 +1015,43 @@ "check": "檢查", "check_all_keys": "檢查所有金鑰", "check_multiple_keys": "檢查多個 API 金鑰", + "copilot": { + "auth_failed": "Github Copilot認證失敗", + "auth_success": "Github Copilot 認證成功", + "auth_success_title": "認證成功", + "code_failed": "獲取 Device Code失敗,請重試", + "code_generated_desc": "請將設備代碼複製到下面的瀏覽器連結中", + "code_generated_title": "獲取設備代碼", + "confirm_login": "過度使用可能會導致您的 Github 帳號遭到封號,請謹慎使用!!!!", + "confirm_title": "風險警告", + "connect": "連接 Github", + "custom_headers": "自訂請求標頭", + "description": "您的 Github 帳號需要訂閱 Copilot", + "expand": "展開", + "headers_description": "自訂請求標頭(json格式)", + "invalid_json": "JSON 格式錯誤", + "login": "登入 Github", + "logout": "退出 Github", + "logout_failed": "退出失敗,請重試", + "logout_success": "已成功登出", + "model_setting": "模型設定", + "open_verification_first": "請先點擊上方連結訪問驗證頁面", + "rate_limit": "速率限制", + "tooltip": "使用 Github Copilot 需要先登入 Github" + }, "delete.content": "確定要刪除此提供者嗎?", "delete.title": "刪除提供者", "docs_check": "檢查", "docs_more_details": "檢視更多細節", "get_api_key": "點選這裡取得金鑰", + "is_not_support_array_content": "開啟相容模式", "no_models": "請先新增模型再檢查 API 連接", "not_checked": "未檢查", "remove_duplicate_keys": "移除重複金鑰", "remove_invalid_keys": "刪除無效金鑰", "search": "搜尋模型平臺...", "search_placeholder": "搜尋模型 ID 或名稱", - "title": "模型提供者", - "is_not_support_array_content": "開啟相容模式", - "copilot": { - "tooltip": "使用 Github Copilot 需要先登入 Github", - "description": "您的 Github 帳號需要訂閱 Copilot", - "login": "登入 Github", - "connect": "連接 Github", - "logout": "退出 Github", - "auth_success_title": "認證成功", - "code_generated_title": "獲取設備代碼", - "code_generated_desc": "請將設備代碼複製到下面的瀏覽器連結中", - "code_failed": "獲取 Device Code失敗,請重試", - "auth_success": "Github Copilot 認證成功", - "auth_failed": "Github Copilot認證失敗", - "logout_success": "已成功登出", - "logout_failed": "退出失敗,請重試", - "confirm_title": "風險警告", - "confirm_login": "過度使用可能會導致您的 Github 帳號遭到封號,請謹慎使用!!!!", - "rate_limit": "速率限制", - "custom_headers": "自訂請求標頭", - "headers_description": "自訂請求標頭(json格式)", - "expand": "展開", - "model_setting": "模型設定", - "invalid_json": "JSON 格式錯誤", - "open_verification_first": "請先點擊上方連結訪問驗證頁面" - } + "title": "模型提供者" }, "proxy": { "mode": { @@ -1065,9 +1066,9 @@ "quickAssistant": { "click_tray_to_show": "點選工具列圖示啟動", "enable_quick_assistant": "啟用快捷助手", + "read_clipboard_at_startup": "啟動時讀取剪貼簿", "title": "快捷助手", - "use_shortcut_to_show": "右鍵點選工具列圖示或使用快捷鍵啟動", - "read_clipboard_at_startup": "啟動時讀取剪貼簿" + "use_shortcut_to_show": "右鍵點選工具列圖示或使用快捷鍵啟動" }, "shortcuts": { "action": "操作", @@ -1104,19 +1105,18 @@ "topic.position.left": "左側", "topic.position.right": "右側", "topic.show.time": "顯示話題時間", - "tray.title": "系统匣", - "tray.show": "顯示系统匣圖示", "tray.onclose": "關閉時最小化到系统匣", - "launch.title": "啟動", - "launch.onboot": "開機自動啟動", - "launch.totray": "啟動時最小化到系统匣", + "tray.show": "顯示系统匣圖示", + "tray.title": "系统匣", "websearch": { "blacklist": "黑名單", "blacklist_description": "以下網站不會出現在搜尋結果中", "blacklist_tooltip": "請使用以下格式 (換行符號分隔)\nexample.com\nhttps://www.example.com\nhttps://example.com\n*://*.example.com", "check": "檢查", - "check_success": "驗證成功", "check_failed": "驗證失敗", + "check_success": "驗證成功", + "enhance_mode": "搜索增強模式", + "enhance_mode_tooltip": "使用預設模型提取關鍵詞後搜索", "get_api_key": "點選這裡取得金鑰", "no_provider_selected": "請選擇搜尋服務商後再檢查", "search_max_result": "搜尋結果個數", @@ -1124,8 +1124,6 @@ "search_provider_placeholder": "選擇一個搜尋服務商", "search_result_default": "預設", "search_with_time": "搜尋包含日期", - "enhance_mode": "搜索增強模式", - "enhance_mode_tooltip": "使用預設模型提取關鍵詞後搜索", "tavily": { "api_key": "Tavily API 金鑰", "api_key.placeholder": "請輸入 Tavily API 金鑰", diff --git a/src/renderer/src/pages/settings/ProviderSettings/EditModelsPopup.tsx b/src/renderer/src/pages/settings/ProviderSettings/EditModelsPopup.tsx index 6f459ee3..ab094599 100644 --- a/src/renderer/src/pages/settings/ProviderSettings/EditModelsPopup.tsx +++ b/src/renderer/src/pages/settings/ProviderSettings/EditModelsPopup.tsx @@ -6,6 +6,7 @@ import { isEmbeddingModel, isFunctionCallingModel, isReasoningModel, + isRerankModel, isVisionModel, isWebSearchModel, SYSTEM_MODELS @@ -71,6 +72,8 @@ const PopupContainer: React.FC = ({ provider: _provider, resolve }) => { return isEmbeddingModel(model) case 'function_calling': return isFunctionCallingModel(model) + case 'rerank': + return isRerankModel(model) default: return true } @@ -157,7 +160,7 @@ const PopupContainer: React.FC = ({ provider: _provider, resolve }) => { onCancel={onCancel} afterClose={onClose} footer={null} - width="600px" + width="680px" styles={{ content: { padding: 0 }, header: { padding: 22, paddingBottom: 15 } @@ -165,14 +168,19 @@ const PopupContainer: React.FC = ({ provider: _provider, resolve }) => { centered>
- setFilterType(e.target.value)} buttonStyle="solid"> + setFilterType(e.target.value)} + buttonStyle="solid"> {t('models.all')} - {t('models.reasoning')} - {t('models.vision')} - {t('models.websearch')} - {t('models.free')} - {t('models.embedding')} - {t('models.function_calling')} + {t('models.type.reasoning')} + {t('models.type.vision')} + {t('models.type.websearch')} + {t('models.type.free')} + {t('models.type.embedding')} + {t('models.type.rerank')} + {t('models.type.function_calling')}