diff --git a/src/renderer/src/i18n/locales/en-us.json b/src/renderer/src/i18n/locales/en-us.json index efe01e82..19cc49bd 100644 --- a/src/renderer/src/i18n/locales/en-us.json +++ b/src/renderer/src/i18n/locales/en-us.json @@ -1,490 +1,494 @@ { "translation": { - "common": { - "avatar": "Avatar", - "language": "Language", - "model": "Model", - "models": "Models", - "topics": "Topics", - "docs": "Docs", - "and": "and", - "assistant": "Assistant", - "name": "Name", - "description": "Description", - "prompt": "Prompt", - "rename": "Rename", - "delete": "Delete", - "edit": "Edit", - "duplicate": "Duplicate", - "copy": "Copy", - "paste": "Paste", - "cut": "Cut", - "regenerate": "Regenerate", - "provider": "Provider", - "you": "You", - "save": "Save", - "footnotes": "References", - "select": "Select", - "search": "Search", - "default": "Default", - "warning": "Warning", - "back": "Back", - "chat": "Chat", - "close": "Close", - "cancel": "Cancel", - "download": "Download", - "reset": "Reset" - }, - "button": { - "add": "Add", - "added": "Added", - "manage": "Manage", - "select_model": "Select Model", - "show.all": "Show All", - "collapse": "Collapse" - }, - "message": { - "copied": "Copied!", - "assistant.added.content": "Assistant added successfully", - "message.delete.title": "Delete Message", - "message.delete.content": "Are you sure you want to delete this message?", - "error.enter.api.key": "Please enter your API key first", - "error.enter.api.host": "Please enter your API host first", - "error.enter.model": "Please select a model first", - "error.invalid.proxy.url": "Invalid proxy URL", - "error.invalid.webdav": "Invalid WebDAV settings", - "api.connection.failed": "Connection failed", - "api.connection.success": "Connection successful", - "chat.completion.paused": "Chat completion paused", - "switch.disabled": "Switching is disabled while the assistant is generating", - "restore.success": "Restored successfully", - "backup.success": "Backup successful", - "backup.failed": "Backup failed", - "reset.confirm.content": "Are you sure you want to clear all data?", - "reset.double.confirm.title": "DATA LOST !!!", - "reset.double.confirm.content": "All data will be lost, do you want to continue?", - "upgrade.success.title": "Upgrade successfully", - "upgrade.success.content": "Please restart the application to complete the upgrade", - "upgrade.success.button": "Restart", - "topic.added": "New topic added", - "save.success.title": "Saved successfully", - "message.code_style": "Code style", - "message.style": "Message Style", - "message.style.bubble": "Bubble", - "message.style.plain": "Plain" - }, - "chat": { - "save": "Save", - "default.name": "⭐️ Default Assistant", - "default.description": "Hello, I'm Default Assistant. You can start chatting with me right away", - "default.topic.name": "Default Topic", - "topics.title": "Topics", - "topics.auto_rename": "Auto Rename", - "topics.edit.title": "Edit Name", - "topics.edit.placeholder": "Enter new name", - "topics.clear.title": "Clear Messages", - "topics.move_to": "Move to", - "topics.list": "Topic List", - "topics.export.title": "Export", - "topics.export.image": "Export as image", - "topics.export.md": "Export as markdown", - "topics.export.word": "Export as Word", - "input.new_topic": "New Topic {{Command}}+N", - "input.topics": " Topics ", - "input.clear": "Clear", - "input.new.context": "Clear Context", - "input.expand": "Expand", - "input.collapse": "Collapse", - "input.clear.title": "Clear all messages?", - "input.clear.content": "Do you want to clear all messages of the current topic?", - "input.placeholder": "Type your message here...", - "input.send": "Send", - "input.pause": "Pause", - "input.settings": "Settings", - "input.upload": "Upload image or document file", - "input.context_count.tip": "Context Count", - "input.estimated_tokens.tip": "Estimated tokens", - "input.translate": "Translate to English", - "settings.temperature": "Temperature", - "settings.temperature.tip": "Lower values make the model more creative and unpredictable, while higher values make it more deterministic and precise.", - "settings.context_count": "Context", - "settings.context_count.tip": "The number of previous messages to keep in the context.", - "settings.max_tokens": "Enable Max Tokens Limit", - "settings.max_tokens.tip": "The maximum number of tokens the model can generate. Normal chat suggests 500-800. Short text generation suggests 800-2000. Code generation suggests 2000-3600. Long text generation suggests above 4000.", - "settings.reset": "Reset", - "settings.set_as_default": "Apply to default assistant", - "settings.max": "Max", - "settings.show_line_numbers": "Show Line Numbers in Code", - "settings.code_collapsible": "Code block collapsible", - "suggestions.title": "Suggested Questions", - "add.assistant.title": "Add Assistant", - "message.new.context": "New Context", - "message.new.branch": "New Branch", - "message.new.branch.created": "New Branch Created", - "assistant.search.placeholder": "Search", - "artifacts.button.preview": "Preview", - "artifacts.button.download": "Download" - }, - "assistants": { - "title": "Assistants", - "abbr": "Assistant", - "search": "Search assistants...", - "settings.prompt": "Prompt Settings", - "settings.model": "Model Settings", - "settings.preset_messages": "Preset Messages", - "settings.default_model": "Default Model", - "settings.auto_reset_model": "Auto Reset Model", - "settings.auto_reset_model.tip": "Automatically reset the model when a new topic is created.", - "edit.title": "Edit Assistant", - "copy.title": "Copy Assistant", - "clear.title": "Clear topics", - "clear.content": "Clearing the topic will delete all topics and files in the assistant. Are you sure you want to continue?", - "save.title": "Save to agent", - "save.success": "Saved successfully", - "delete.title": "Delete Assistant", - "delete.content": "Deleting an assistant will delete all topics and files under the assistant. Are you sure you want to delete it?" - }, - "model": { - "stream_output": "Stream Output", - "search": "Search models...", - "pinned": "Pinned", - "type": { - "text": "Text", - "vision": "Vision", - "select": "Select Model Types" - } - }, - "paintings": { - "title": "Images", - "image.size": "Image Size", - "button.new.image": "New Image", - "button.delete.image": "Delete Image", - "button.delete.image.confirm": "Are you sure you want to delete this image?", - "number_images": "Number Images", - "number_images_tip": "Number of images to generate (1-4)", - "seed": "Seed", - "seed_tip": "The same seed and prompt can produce similar images", - "inference_steps": "Inference Steps", - "inference_steps_tip": "The number of inference steps to perform. More steps produce higher quality but take longer", - "guidance_scale": "Guidance Scale", - "guidance_scale_tip": "Classifier Free Guidance. How close you want the model to stick to your prompt when looking for a related image to show you", - "negative_prompt": "Negative Prompt", - "negative_prompt_tip": "Describe what you don't want included in the image", - "prompt_placeholder": "Describe the image you want to create, e.g. A serene lake at sunset with mountains in the background", - "regenerate.confirm": "This will replace your existing generated images. Do you want to continue?" - }, - "files": { - "title": "Files", - "file": "File", - "name": "Name", - "size": "Size", - "count": "Count", - "created_at": "Created At", - "image": "Image", - "text": "Text", - "document": "Document", - "actions": "Actions", - "open": "Open", - "all": "All Files" - }, "agents": { - "title": "Agents", - "my_agents": "My Agents", - "add.title": "Create Agent", - "edit.title": "Edit Agent", + "add.button": "Add to Assistant", "add.name": "Name", "add.name.placeholder": "Enter name", "add.prompt": "Prompt", "add.prompt.placeholder": "Enter prompt", - "add.button": "Add to Assistant", - "manage.title": "Manage Agents", + "add.title": "Create Agent", "delete.popup.content": "Are you sure you want to delete this agent?", - "tag.default": "Default", - "tag.system": "System", - "tag.agent": "Agent", - "tag.new": "New", - "edit.message.title": "Preset messages", "edit.message.add.title": "Add", - "edit.message.group.title": "Message Group", - "edit.message.assistant.title": "Assistant", "edit.message.assistant.placeholder": "Enter assistant message", - "edit.message.user.title": "User", - "edit.message.user.placeholder": "Enter user message", + "edit.message.assistant.title": "Assistant", "edit.message.empty.content": "Conversation input content cannot be empty", + "edit.message.group.title": "Message Group", + "edit.message.title": "Preset messages", + "edit.message.user.placeholder": "Enter user message", + "edit.message.user.title": "User", "edit.model.select.title": "Select Model", "edit.settings.hide_preset_messages": "Hide Preset Message", + "edit.title": "Edit Agent", + "manage.title": "Manage Agents", + "my_agents": "My Agents", "search.no_results": "No results found", - "sorting.title": "Sorting" + "sorting.title": "Sorting", + "tag.agent": "Agent", + "tag.default": "Default", + "tag.new": "New", + "tag.system": "System", + "title": "Agents" }, - "minapp": { - "title": "MinApp" + "assistants": { + "abbr": "Assistant", + "clear.content": "Clearing the topic will delete all topics and files in the assistant. Are you sure you want to continue?", + "clear.title": "Clear topics", + "copy.title": "Copy Assistant", + "delete.content": "Deleting an assistant will delete all topics and files under the assistant. Are you sure you want to delete it?", + "delete.title": "Delete Assistant", + "edit.title": "Edit Assistant", + "save.success": "Saved successfully", + "save.title": "Save to agent", + "search": "Search assistants...", + "settings.auto_reset_model": "Auto Reset Model", + "settings.auto_reset_model.tip": "Automatically reset the model when a new topic is created.", + "settings.default_model": "Default Model", + "settings.model": "Model Settings", + "settings.preset_messages": "Preset Messages", + "settings.prompt": "Prompt Settings", + "title": "Assistants" }, - "history": { - "title": "Topics Search", - "search.placeholder": "Search topics or messages...", - "continue_chat": "Continue Chatting", - "search.topics.empty": "No topics found, press Enter to search all messages", - "search.messages": "Search All Messages", - "locate.message": "Locate the message" + "button": { + "add": "Add", + "added": "Added", + "collapse": "Collapse", + "manage": "Manage", + "select_model": "Select Model", + "show.all": "Show All" }, - "provider": { - "jina": "Jina", - "mistral": "Mistral", - "hyperbolic": "Hyperbolic", - "grok": "Grok", - "nvidia": "Nvidia", - "hunyuan": "Tencent Hunyuan", - "zhinao": "360AI", - "fireworks": "Fireworks", - "together": "Together", - "openai": "OpenAI", - "gemini": "Gemini", - "deepseek": "DeepSeek", - "moonshot": "Moonshot", - "silicon": "SiliconFlow", - "openrouter": "OpenRouter", - "yi": "Yi", - "zhipu": "ZHIPU AI", - "groq": "Groq", - "ollama": "Ollama", - "baichuan": "Baichuan", - "dashscope": "Alibaba Cloud", - "anthropic": "Anthropic", - "aihubmix": "AiHubMix", - "stepfun": "StepFun", - "doubao": "Doubao", - "minimax": "MiniMax", - "graphrag-kylin-mountain": "GraphRAG", - "github": "GitHub Models", - "ocoolai": "ocoolAI", - "azure-openai": "Azure OpenAI" + "chat": { + "add.assistant.title": "Add Assistant", + "artifacts.button.download": "Download", + "artifacts.button.preview": "Preview", + "assistant.search.placeholder": "Search", + "default.description": "Hello, I'm Default Assistant. You can start chatting with me right away", + "default.name": "⭐️ Default Assistant", + "default.topic.name": "Default Topic", + "input.clear": "Clear", + "input.clear.content": "Do you want to clear all messages of the current topic?", + "input.clear.title": "Clear all messages?", + "input.collapse": "Collapse", + "input.context_count.tip": "Context Count", + "input.estimated_tokens.tip": "Estimated tokens", + "input.expand": "Expand", + "input.new.context": "Clear Context", + "input.new_topic": "New Topic {{Command}}+N", + "input.pause": "Pause", + "input.placeholder": "Type your message here...", + "input.send": "Send", + "input.settings": "Settings", + "input.topics": " Topics ", + "input.translate": "Translate to English", + "input.upload": "Upload image or document file", + "message.new.branch": "New Branch", + "message.new.branch.created": "New Branch Created", + "message.new.context": "New Context", + "save": "Save", + "settings.code_collapsible": "Code block collapsible", + "settings.context_count": "Context", + "settings.context_count.tip": "The number of previous messages to keep in the context.", + "settings.max": "Max", + "settings.max_tokens": "Enable Max Tokens Limit", + "settings.max_tokens.tip": "The maximum number of tokens the model can generate. Normal chat suggests 500-800. Short text generation suggests 800-2000. Code generation suggests 2000-3600. Long text generation suggests above 4000.", + "settings.reset": "Reset", + "settings.set_as_default": "Apply to default assistant", + "settings.show_line_numbers": "Show Line Numbers in Code", + "settings.temperature": "Temperature", + "settings.temperature.tip": "Lower values make the model more creative and unpredictable, while higher values make it more deterministic and precise.", + "suggestions.title": "Suggested Questions", + "topics.auto_rename": "Auto Rename", + "topics.clear.title": "Clear Messages", + "topics.edit.placeholder": "Enter new name", + "topics.edit.title": "Edit Name", + "topics.export.image": "Export as image", + "topics.export.md": "Export as markdown", + "topics.export.title": "Export", + "topics.export.word": "Export as Word", + "topics.list": "Topic List", + "topics.move_to": "Move to", + "topics.title": "Topics", + "translate": "Translate" }, - "settings": { - "title": "Settings", - "general": "General Settings", - "model": "Default Model", - "assistant": "Default Assistant", - "about": "About & Feedback", - "messages.model.title": "Model Settings", - "messages.title": "Message Settings", - "messages.divider": "Show divider between messages", - "messages.use_serif_font": "Use serif font", - "messages.input.title": "Input Settings", - "messages.input.show_estimated_tokens": "Show estimated tokens", - "messages.input.send_shortcuts": "Send shortcuts", - "messages.input.paste_long_text_as_file": "Paste long text as file", - "messages.markdown_rendering_input_message": "Markdown render input msg", - "messages.math_engine": "Math render engine", - "general.title": "General Settings", - "general.user_name": "User Name", - "general.user_name.placeholder": "Enter your name", - "general.backup.title": "Data Backup and Recovery", - "general.backup.button": "Backup", - "general.restore.button": "Restore", - "general.view_webdav_settings": "View WebDAV settings", - "general.reset.title": "Data Reset", - "general.reset.button": "Reset", - "general.manually_check_update.title": "Turn off update checking", - "advanced.title": "Advanced Settings", - "advanced.auto_switch_to_topics": "Auto switch to topic", - "provider.api_key": "API Key", - "provider.api_key.tip": "Multiple keys separated by commas", - "provider.check": "Check", - "provider.get_api_key": "Get API Key", - "provider.api_host": "API Host", - "provider.api_version": "API Version", - "provider.docs_check": "Check", - "provider.docs_more_details": "for more details", - "provider.search_placeholder": "Search model id or name", - "provider.api.url.reset": "Reset", - "provider.api.url.preview": "Preview: {{url}}", - "provider.api.url.tip": "Ending with / ignores v1, ending with # forces use of input address", - "models.default_assistant_model": "Default Assistant Model", - "models.default_assistant_model_description": "Model used when creating a new assistant, if the assistant is not set, this model will be used", - "models.topic_naming_model": "Topic Naming Model", - "models.topic_naming_model_description": "Model used when automatically naming a new topic", - "models.translate_model": "Translate Model", - "models.translate_model_description": "Model used for translation service", - "models.add.add_model": "Add Model", - "models.add.model_id.placeholder": "Required e.g. gpt-3.5-turbo", - "models.add.model_id": "Model ID", - "models.add.model_id.tooltip": "Example: gpt-3.5-turbo", - "models.add.model_name": "Model Name", - "models.add.model_name.placeholder": "Optional e.g. GPT-4", - "models.add.group_name": "Group Name", - "models.add.group_name.tooltip": "Optional e.g. ChatGPT", - "models.add.group_name.placeholder": "Optional e.g. ChatGPT", - "models.translate_model_prompt_title": "Translate Model Prompt", - "models.translate_model_prompt_message": "Please enter the translate model prompt", - "models.empty": "No models found", - "assistant.title": "Default Assistant", - "assistant.model_params": "Model Parameters", - "about.description": "A powerful AI assistant for producer", - "about.updateNotAvailable": "You are using the latest version", - "about.checkingUpdate": "Checking for updates...", - "about.updateError": "Update error", - "about.checkUpdate": "Check Update", - "about.downloading": "Downloading...", - "about.title": "About", - "about.releases.title": "Release Notes", - "about.releases.button": "Releases", - "about.website.title": "Official Website", - "about.website.button": "Website", - "about.feedback.title": "Feedback", - "about.feedback.button": "Feedback", - "about.contact.title": "Contact", - "about.license.title": "License", - "about.license.button": "License", - "about.contact.button": "Email", - "proxy.title": "Proxy Address", - "tray.title": "Enable System Tray Icon", - "theme.title": "Theme", - "theme.dark": "Dark", - "theme.light": "Light", - "theme.auto": "Auto", - "theme.window.style.title": "Window Style", - "theme.window.style.transparent": "Transparent Window", - "theme.window.style.opaque": "Opaque Window", - "font_size.title": "Message Font Size", - "topic.position": "Topic Position", - "topic.position.left": "Left", - "topic.position.right": "Right", - "topic.show.time": "Show Topic Time", - "display.title": "Display Settings", - "input.auto_translate_with_space": "Quickly translate with 3 spaces", - "shortcuts": { - "title": "Keyboard Shortcuts", - "action": "Action", - "key": "Key", - "new_topic": "New Topic", - "zoom_in": "Zoom In", - "zoom_out": "Zoom Out", - "zoom_reset": "Reset Zoom" - }, - "provider": { - "title": "Model Provider", - "api_key": "API Key", - "api_key.tip": "Multiple keys separated by commas", - "check": "Check", - "get_api_key": "Get API Key", - "api_host": "API Host", - "api_version": "API Version", - "docs_check": "Check", - "docs_more_details": "for more details", - "search_placeholder": "Search model id or name", - "api.url.reset": "Reset", - "api.url.preview": "Preview: {{url}}", - "api.url.tip": "Ending with / ignores v1, ending with # forces use of input address", - "check_multiple_keys": "Check Multiple API Keys", - "check_all_keys": "Check All Keys", - "remove_invalid_keys": "Remove Invalid Keys", - "remove_duplicate_keys": "Remove Duplicate Keys", - "not_checked": "Not Checked", - "delete.title": "Delete Provider", - "delete.content": "Are you sure you want to delete this provider?", - "add.title": "Add Provider", - "add.name": "Provider Name", - "add.name.placeholder": "Example: OpenAI", - "add.type": "Provider Type", - "no_models": "Please add models first before checking the API connection" - }, - "proxy": { - "title": "Proxy Settings", - "mode": { - "title": "Proxy Mode", - "system": "System Proxy", - "custom": "Custom Proxy", - "none": "No Proxy" - } - }, - "data": { - "title": "Data Settings", - "webdav.title": "WebDAV", - "webdav.host": "WebDAV Host", - "webdav.host.placeholder": "http://localhost:8080", - "webdav.user": "WebDAV User", - "webdav.password": "WebDAV Password", - "webdav.path": "WebDAV Path", - "webdav.path.placeholder": "/backup", - "webdav.backup.button": "Backup to WebDAV", - "webdav.restore.button": "Restore from WebDAV", - "data.title": "Data Directory", - "app_data": "App Data", - "app_logs": "App Logs", - "clear_cache": { - "title": "Clear Cache", - "button": "Clear Cache", - "confirm": "Clearing the cache will delete application cache data, including minapp data. This action is irreversible, continue?", - "success": "Cache cleared", - "error": "Error clearing cache" - } - } - }, - "translate": { - "title": "Translation", - "any.language": "Any language", - "button.translate": "Translate", - "error.not_configured": "Translation model is not configured", - "input.placeholder": "Enter text to translate", - "output.placeholder": "Translation", - "confirm": { - "title": "Translation Confirmation", - "content": "Translation will replace the original text, continue?" - } - }, - "languages": { - "english": "English", - "chinese": "Chinese", - "chinese-traditional": "Traditional Chinese", - "japanese": "Japanese", - "korean": "Korean", - "russian": "Russian", - "spanish": "Spanish", - "french": "French", - "italian": "Italian", - "portuguese": "Portuguese", - "arabic": "Arabic" - }, - "ollama": { - "title": "Ollama", - "keep_alive_time.title": "Keep Alive Time", - "keep_alive_time.placeholder": "Minutes", - "keep_alive_time.description": "The time in minutes to keep the connection alive, default is 5 minutes." + "common": { + "and": "and", + "assistant": "Assistant", + "avatar": "Avatar", + "back": "Back", + "cancel": "Cancel", + "chat": "Chat", + "close": "Close", + "copy": "Copy", + "cut": "Cut", + "default": "Default", + "delete": "Delete", + "description": "Description", + "docs": "Docs", + "download": "Download", + "duplicate": "Duplicate", + "edit": "Edit", + "footnotes": "References", + "language": "Language", + "model": "Model", + "models": "Models", + "name": "Name", + "paste": "Paste", + "prompt": "Prompt", + "provider": "Provider", + "regenerate": "Regenerate", + "rename": "Rename", + "reset": "Reset", + "save": "Save", + "search": "Search", + "select": "Select", + "topics": "Topics", + "warning": "Warning", + "you": "You" }, "error": { - "chat.response": "Something went wrong. Please check if you have set your API key in the Settings > Providers", "backup.file_format": "Backup file format error", - "provider_disabled": "Model provider is not enabled", - "no_api_key": "API key is not configured" - }, - "words": { - "knowledgeGraph": "Knowledge Graph", - "visualization": "Visualization" + "chat.response": "Something went wrong. Please check if you have set your API key in the Settings > Providers", + "no_api_key": "API key is not configured", + "provider_disabled": "Model provider is not enabled" }, "export": { - "attached_files": "Attached Files", - "user": "User", "assistant": "Assistant", + "attached_files": "Attached Files", + "conversation_details": "Conversation Details", + "conversation_history": "Conversation History", "created": "Created", "last_updated": "Last Updated", "messages": "Messages", - "conversation_details": "Conversation Details", - "conversation_history": "Conversation History" + "user": "User" + }, + "files": { + "actions": "Actions", + "all": "All Files", + "count": "Count", + "created_at": "Created At", + "document": "Document", + "file": "File", + "image": "Image", + "name": "Name", + "open": "Open", + "size": "Size", + "text": "Text", + "title": "Files" + }, + "history": { + "continue_chat": "Continue Chatting", + "locate.message": "Locate the message", + "search.messages": "Search All Messages", + "search.placeholder": "Search topics or messages...", + "search.topics.empty": "No topics found, press Enter to search all messages", + "title": "Topics Search" + }, + "languages": { + "arabic": "Arabic", + "chinese": "Chinese", + "chinese-traditional": "Traditional Chinese", + "english": "English", + "french": "French", + "italian": "Italian", + "japanese": "Japanese", + "korean": "Korean", + "portuguese": "Portuguese", + "russian": "Russian", + "spanish": "Spanish" }, "mermaid": { - "title": "Mermaid Diagram", "download": { - "svg": "Download SVG", - "png": "Download PNG" + "png": "Download PNG", + "svg": "Download SVG" }, "tabs": { "preview": "Preview", "source": "Source" + }, + "title": "Mermaid Diagram" + }, + "message": { + "api.connection.failed": "Connection failed", + "api.connection.success": "Connection successful", + "assistant.added.content": "Assistant added successfully", + "backup.failed": "Backup failed", + "backup.success": "Backup successful", + "chat.completion.paused": "Chat completion paused", + "copied": "Copied!", + "error.enter.api.host": "Please enter your API host first", + "error.enter.api.key": "Please enter your API key first", + "error.enter.model": "Please select a model first", + "error.invalid.proxy.url": "Invalid proxy URL", + "error.invalid.webdav": "Invalid WebDAV settings", + "message.code_style": "Code style", + "message.delete.content": "Are you sure you want to delete this message?", + "message.delete.title": "Delete Message", + "message.style": "Message Style", + "message.style.bubble": "Bubble", + "message.style.plain": "Plain", + "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?", + "reset.double.confirm.title": "DATA LOST !!!", + "restore.success": "Restored successfully", + "save.success.title": "Saved successfully", + "switch.disabled": "Switching is disabled while the assistant is generating", + "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" + }, + "minapp": { + "title": "MinApp" + }, + "model": { + "pinned": "Pinned", + "search": "Search models...", + "stream_output": "Stream Output", + "type": { + "select": "Select Model Types", + "text": "Text", + "vision": "Vision" } }, + "ollama": { + "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": "Ollama" + }, + "paintings": { + "button.delete.image": "Delete Image", + "button.delete.image.confirm": "Are you sure you want to delete this image?", + "button.new.image": "New Image", + "guidance_scale": "Guidance Scale", + "guidance_scale_tip": "Classifier Free Guidance. How close you want the model to stick to your prompt when looking for a related image to show you", + "image.size": "Image Size", + "inference_steps": "Inference Steps", + "inference_steps_tip": "The number of inference steps to perform. More steps produce higher quality but take longer", + "negative_prompt": "Negative Prompt", + "negative_prompt_tip": "Describe what you don't want included in the image", + "number_images": "Number Images", + "number_images_tip": "Number of images to generate (1-4)", + "prompt_placeholder": "Describe the image you want to create, e.g. A serene lake at sunset with mountains in the background", + "regenerate.confirm": "This will replace your existing generated images. Do you want to continue?", + "seed": "Seed", + "seed_tip": "The same seed and prompt can produce similar images", + "title": "Images" + }, + "provider": { + "aihubmix": "AiHubMix", + "anthropic": "Anthropic", + "azure-openai": "Azure OpenAI", + "baichuan": "Baichuan", + "dashscope": "Alibaba Cloud", + "deepseek": "DeepSeek", + "doubao": "Doubao", + "fireworks": "Fireworks", + "gemini": "Gemini", + "github": "GitHub Models", + "graphrag-kylin-mountain": "GraphRAG", + "grok": "Grok", + "groq": "Groq", + "hunyuan": "Tencent Hunyuan", + "hyperbolic": "Hyperbolic", + "jina": "Jina", + "minimax": "MiniMax", + "mistral": "Mistral", + "moonshot": "Moonshot", + "nvidia": "Nvidia", + "ocoolai": "ocoolAI", + "ollama": "Ollama", + "openai": "OpenAI", + "openrouter": "OpenRouter", + "silicon": "SiliconFlow", + "stepfun": "StepFun", + "together": "Together", + "yi": "Yi", + "zhinao": "360AI", + "zhipu": "ZHIPU AI" + }, + "settings": { + "about": "About & Feedback", + "about.checkUpdate": "Check Update", + "about.checkingUpdate": "Checking for updates...", + "about.contact.button": "Email", + "about.contact.title": "Contact", + "about.description": "A powerful AI assistant for producer", + "about.downloading": "Downloading...", + "about.feedback.button": "Feedback", + "about.feedback.title": "Feedback", + "about.license.button": "License", + "about.license.title": "License", + "about.releases.button": "Releases", + "about.releases.title": "Release Notes", + "about.title": "About", + "about.updateError": "Update error", + "about.updateNotAvailable": "You are using the latest version", + "about.website.button": "Website", + "about.website.title": "Official Website", + "advanced.auto_switch_to_topics": "Auto switch to topic", + "advanced.title": "Advanced Settings", + "assistant": "Default Assistant", + "assistant.model_params": "Model Parameters", + "assistant.title": "Default Assistant", + "data": { + "app_data": "App Data", + "app_logs": "App Logs", + "clear_cache": { + "button": "Clear Cache", + "confirm": "Clearing the cache will delete application cache data, including minapp data. This action is irreversible, continue?", + "error": "Error clearing cache", + "success": "Cache cleared", + "title": "Clear Cache" + }, + "data.title": "Data Directory", + "title": "Data Settings", + "webdav.backup.button": "Backup to WebDAV", + "webdav.host": "WebDAV Host", + "webdav.host.placeholder": "http://localhost:8080", + "webdav.password": "WebDAV Password", + "webdav.path": "WebDAV Path", + "webdav.path.placeholder": "/backup", + "webdav.restore.button": "Restore from WebDAV", + "webdav.title": "WebDAV", + "webdav.user": "WebDAV User" + }, + "display.title": "Display Settings", + "font_size.title": "Message Font Size", + "general": "General Settings", + "general.backup.button": "Backup", + "general.backup.title": "Data Backup and Recovery", + "general.manually_check_update.title": "Turn off update checking", + "general.reset.button": "Reset", + "general.reset.title": "Data Reset", + "general.restore.button": "Restore", + "general.title": "General Settings", + "general.user_name": "User Name", + "general.user_name.placeholder": "Enter your name", + "general.view_webdav_settings": "View WebDAV settings", + "input.auto_translate_with_space": "Quickly translate with 3 spaces", + "messages.divider": "Show divider between messages", + "messages.input.paste_long_text_as_file": "Paste long text as file", + "messages.input.send_shortcuts": "Send shortcuts", + "messages.input.show_estimated_tokens": "Show estimated tokens", + "messages.input.title": "Input Settings", + "messages.markdown_rendering_input_message": "Markdown render input msg", + "messages.math_engine": "Math render engine", + "messages.model.title": "Model Settings", + "messages.title": "Message Settings", + "messages.use_serif_font": "Use serif font", + "model": "Default Model", + "models.add.add_model": "Add Model", + "models.add.group_name": "Group Name", + "models.add.group_name.placeholder": "Optional e.g. ChatGPT", + "models.add.group_name.tooltip": "Optional e.g. ChatGPT", + "models.add.model_id": "Model ID", + "models.add.model_id.placeholder": "Required e.g. gpt-3.5-turbo", + "models.add.model_id.tooltip": "Example: gpt-3.5-turbo", + "models.add.model_name": "Model Name", + "models.add.model_name.placeholder": "Optional e.g. GPT-4", + "models.default_assistant_model": "Default Assistant Model", + "models.default_assistant_model_description": "Model used when creating a new assistant, if the assistant is not set, this model will be used", + "models.empty": "No models found", + "models.topic_naming_model": "Topic Naming Model", + "models.topic_naming_model_description": "Model used when automatically naming a new topic", + "models.translate_model": "Translate Model", + "models.translate_model_description": "Model used for translation service", + "models.translate_model_prompt_message": "Please enter the translate model prompt", + "models.translate_model_prompt_title": "Translate Model Prompt", + "provider": { + "add.name": "Provider Name", + "add.name.placeholder": "Example: OpenAI", + "add.title": "Add Provider", + "add.type": "Provider Type", + "api.url.preview": "Preview: {{url}}", + "api.url.reset": "Reset", + "api.url.tip": "Ending with / ignores v1, ending with # forces use of input address", + "api_host": "API Host", + "api_key": "API Key", + "api_key.tip": "Multiple keys separated by commas", + "api_version": "API Version", + "check": "Check", + "check_all_keys": "Check All Keys", + "check_multiple_keys": "Check Multiple API Keys", + "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", + "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_placeholder": "Search model id or name", + "title": "Model Provider" + }, + "provider.api.url.preview": "Preview: {{url}}", + "provider.api.url.reset": "Reset", + "provider.api.url.tip": "Ending with / ignores v1, ending with # forces use of input address", + "provider.api_host": "API Host", + "provider.api_key": "API Key", + "provider.api_key.tip": "Multiple keys separated by commas", + "provider.api_version": "API Version", + "provider.check": "Check", + "provider.docs_check": "Check", + "provider.docs_more_details": "for more details", + "provider.get_api_key": "Get API Key", + "provider.search_placeholder": "Search model id or name", + "proxy": { + "mode": { + "custom": "Custom Proxy", + "none": "No Proxy", + "system": "System Proxy", + "title": "Proxy Mode" + }, + "title": "Proxy Settings" + }, + "proxy.title": "Proxy Address", + "shortcuts": { + "action": "Action", + "key": "Key", + "new_topic": "New Topic", + "title": "Keyboard Shortcuts", + "zoom_in": "Zoom In", + "zoom_out": "Zoom Out", + "zoom_reset": "Reset Zoom" + }, + "theme.auto": "Auto", + "theme.dark": "Dark", + "theme.light": "Light", + "theme.title": "Theme", + "theme.window.style.opaque": "Opaque Window", + "theme.window.style.title": "Window Style", + "theme.window.style.transparent": "Transparent Window", + "title": "Settings", + "topic.position": "Topic Position", + "topic.position.left": "Left", + "topic.position.right": "Right", + "topic.show.time": "Show Topic Time", + "tray.title": "Enable System Tray Icon" + }, + "translate": { + "any.language": "Any language", + "button.translate": "Translate", + "confirm": { + "content": "Translation will replace the original text, continue?", + "title": "Translation Confirmation" + }, + "error.not_configured": "Translation model is not configured", + "error.failed": "Translation failed", + "input.placeholder": "Enter text to translate", + "output.placeholder": "Translation", + "processing": "Translation in progress...", + "title": "Translation", + "close": "Close" + }, "tray": { - "show_window": "Show Window", - "quit": "Quit" + "quit": "Quit", + "show_window": "Show Window" + }, + "words": { + "knowledgeGraph": "Knowledge Graph", + "visualization": "Visualization" } } } diff --git a/src/renderer/src/i18n/locales/ru-ru.json b/src/renderer/src/i18n/locales/ru-ru.json index 5e2ed44e..1b32e31a 100644 --- a/src/renderer/src/i18n/locales/ru-ru.json +++ b/src/renderer/src/i18n/locales/ru-ru.json @@ -1,490 +1,494 @@ { "translation": { - "common": { - "avatar": "Аватар", - "language": "Язык", - "model": "Модель", - "models": "Модели", - "topics": "Топики", - "docs": "Документы", - "and": "и", - "assistant": "Ассистент", - "name": "Имя", - "description": "Описание", - "prompt": "Промпт", - "rename": "Переименовать", - "delete": "Удалить", - "edit": "Редактировать", - "duplicate": "Дублировать", - "copy": "Копировать", - "paste": "Вставить", - "cut": "Вырезать", - "regenerate": "Пересоздать", - "provider": "Провайдер", - "you": "Вы", - "save": "Сохранить", - "footnotes": "Сноски", - "select": "Выбрать", - "search": "Поиск", - "default": "По умолчанию", - "warning": "Предупреждение", - "back": "Назад", - "chat": "Чат", - "close": "Закрыть", - "cancel": "Отмена", - "download": "Скачать", - "reset": "Сбросить" - }, - "button": { - "add": "Добавить", - "added": "Добавлено", - "manage": "Редактировать", - "select_model": "Выбрать модель", - "show.all": "Показать все", - "collapse": "Свернуть" - }, - "message": { - "copied": "Скопировано!", - "assistant.added.content": "Ассистент успешно добавлен", - "message.delete.title": "Удалить сообщение", - "message.delete.content": "Вы уверены, что хотите удалить это сообщение?", - "error.enter.api.key": "Пожалуйста, введите ваш API ключ", - "error.enter.api.host": "Пожалуйста, введите ваш API хост", - "error.enter.model": "Пожалуйста, выберите модель", - "error.invalid.proxy.url": "Неверный URL прокси", - "error.invalid.webdav": "Неверные настройки WebDAV", - "api.connection.failed": "Соединение не удалось", - "api.connection.success": "Соединение успешно", - "chat.completion.paused": "Завершение чата приостановлено", - "switch.disabled": "Переключение отключено, пока ассистент генерирует", - "restore.success": "Успешно восстановлено", - "backup.success": "Резервная копия успешно создана", - "backup.failed": "Создание резервной копии не удалось", - "reset.confirm.content": "Вы уверены, что хотите очистить все данные?", - "reset.double.confirm.title": "ДАННЫЕ БУДУТ УТЕРЯНЫ !!!", - "reset.double.confirm.content": "Все данные будут утеряны, хотите продолжить?", - "upgrade.success.title": "Обновление успешно", - "upgrade.success.content": "Пожалуйста, перезапустите приложение для завершения обновления", - "upgrade.success.button": "Перезапустить", - "topic.added": "Новый топик добавлен", - "save.success.title": "Успешно сохранено", - "message.code_style": "Стиль кода", - "message.style": "Стиль сообщения", - "message.style.bubble": "Пузырь", - "message.style.plain": "Простой" - }, - "chat": { - "save": "Сохранить", - "default.name": "⭐️ Ассистент по умолчанию", - "default.description": "Привет, я Ассистент по умолчанию. Вы можете начать общаться со мной прямо сейчас", - "default.topic.name": "Топик по умолчанию", - "topics.title": "Топики", - "topics.auto_rename": "Автопереименование", - "topics.edit.title": "Редактировать заголовок", - "topics.edit.placeholder": "Введите новый заголовок", - "topics.clear.title": "Очистить сообщения", - "topics.move_to": "Переместить в", - "topics.list": "Список топиков", - "topics.export.title": "Экспорт", - "topics.export.image": "Экспорт как изображение", - "topics.export.md": "Экспорт как markdown", - "topics.export.word": "Экспорт как Word", - "input.new_topic": "Новый топик {{Command}}+N", - "input.topics": " Топики ", - "input.clear": "Очистить", - "input.new.context": "Очистить контекст", - "input.expand": "Развернуть", - "input.collapse": "Свернуть", - "input.clear.title": "Очистить все сообщения?", - "input.clear.content": "Хотите очистить все сообщения текущего топика?", - "input.placeholder": "Введите ваше сообщение здесь...", - "input.send": "Отправить", - "input.pause": "Остановить", - "input.settings": "Настройки", - "input.upload": "Загрузить изображение или документ", - "input.context_count.tip": "Количество контекстов", - "input.estimated_tokens.tip": "Затраты токенов", - "input.translate": "Перевести на английский", - "settings.temperature": "Температура", - "settings.temperature.tip": "Меньшие значения делают модель более креативной и непредсказуемой, в то время как большие значения делают её более детерминированной и точной.", - "settings.context_count": "Контекст", - "settings.context_count.tip": "Количество предыдущих сообщений, которые нужно сохранить в контексте.", - "settings.max_tokens": "Включить лимит максимальных токенов", - "settings.max_tokens.tip": "Максимальное количество токенов, которые может сгенерировать модель. Обычный чат предполагает 500-800. Генерация короткого текста предполагает 800-2000. Генерация кода предполагает 2000-3600. Генерация длинного текста предполагает выше 4000.", - "settings.reset": "Сбросить", - "settings.set_as_default": "Применить к ассистенту по умолчанию", - "settings.max": "Максимум", - "settings.show_line_numbers": "Показать номера строк в коде", - "settings.code_collapsible": "Блок кода свернут", - "suggestions.title": "Предложенные вопросы", - "add.assistant.title": "Добавить ассистента", - "message.new.context": "Новый контекст", - "message.new.branch": "Новая ветка", - "message.new.branch.created": "Новая ветка создана", - "assistant.search.placeholder": "Поиск", - "artifacts.button.preview": "Предпросмотр", - "artifacts.button.download": "Скачать" - }, - "assistants": { - "title": "Ассистенты", - "abbr": "Ассистент", - "search": "Поиск ассистентов...", - "settings.prompt": "Настройки промптов", - "settings.model": "Настройки модели", - "settings.preset_messages": "Предустановленные сообщения", - "settings.default_model": "Модель по умолчанию", - "settings.auto_reset_model": "Автосброс модели", - "settings.auto_reset_model.tip": "Автоматически сбрасывать модель при создании нового топика.", - "edit.title": "Редактировать ассистента", - "copy.title": "Копировать ассистента", - "clear.title": "Очистить топики", - "clear.content": "Очистка топика удалит все топики и файлы в ассистенте. Вы уверены, что хотите продолжить?", - "save.title": "Сохранить в агента", - "save.success": "Успешно сохранено", - "delete.title": "Удалить ассистента", - "delete.content": "Удаление ассистента удалит все топики и файлы под ассистентом. Вы уверены, что хотите удалить его?" - }, - "model": { - "stream_output": "Потоковый вывод", - "search": "Поиск моделей...", - "pinned": "Закреплено", - "type": { - "text": "Текст", - "vision": "Изображение", - "select": "Выберите тип модели" - } - }, - "paintings": { - "title": "Изображения", - "image.size": "Размер изображения", - "button.new.image": "Новое изображение", - "button.delete.image": "Удалить изображение", - "button.delete.image.confirm": "Вы уверены, что хотите удалить это изображение?", - "number_images": "Количество изображений", - "number_images_tip": "Количество изображений для генерации (1-4)", - "seed": "Ключ генерации", - "seed_tip": "Одинаковый ключ генерации и промпт могут производить похожие изображения", - "inference_steps": "Шаги вывода", - "inference_steps_tip": "Количество шагов вывода для выполнения. Больше шагов производят более высокое качество, но занимают больше времени", - "guidance_scale": "Масштаб руководства", - "guidance_scale_tip": "Без классификатора руководства. Насколько близко вы хотите, чтобы модель придерживалась вашего промпта при поиске связанного изображения для показа вам", - "negative_prompt": "Негативный промпт", - "negative_prompt_tip": "Опишите, что вы не хотите включать в изображение", - "prompt_placeholder": "Опишите изображение, которое вы хотите создать, например, Спокойное озеро на закате с горами на заднем плане", - "regenerate.confirm": "Это заменит ваши существующие сгенерированные изображения. Хотите продолжить?" - }, - "files": { - "title": "Файлы", - "file": "Файл", - "name": "Имя", - "size": "Размер", - "count": "Количество", - "created_at": "Дата создания", - "image": "Изображение", - "text": "Текст", - "document": "Документ", - "actions": "Действия", - "open": "Открыть", - "all": "Все файлы" - }, "agents": { - "title": "Агенты", - "my_agents": "Мои агенты", - "add.title": "Создать агента", - "edit.title": "Редактировать агента", + "add.button": "Добавить к ассистенту", "add.name": "Имя", "add.name.placeholder": "Введите имя", "add.prompt": "Промпт", "add.prompt.placeholder": "Введите промпт", - "add.button": "Добавить к ассистенту", - "manage.title": "Редактировать агентов", + "add.title": "Создать агента", "delete.popup.content": "Вы уверены, что хотите удалить этого агента?", - "tag.default": "По умолчанию", - "tag.system": "Система", - "tag.agent": "Агент", - "tag.new": "Новый", - "edit.message.title": "Предустановленные сообщения", "edit.message.add.title": "Добавить", - "edit.message.group.title": "Группа сообщений", - "edit.message.assistant.title": "Ассистент", "edit.message.assistant.placeholder": "Введите сообщение ассистента", - "edit.message.user.title": "Пользователь", - "edit.message.user.placeholder": "Введите сообщение пользователя", + "edit.message.assistant.title": "Ассистент", "edit.message.empty.content": "Содержание вводимого сообщения не может быть пустым", + "edit.message.group.title": "Группа сообщений", + "edit.message.title": "Предустановленные сообщения", + "edit.message.user.placeholder": "Введите сообщение пользователя", + "edit.message.user.title": "Пользователь", "edit.model.select.title": "Выбрать модель", "edit.settings.hide_preset_messages": "Скрыть предустановленные сообщения", + "edit.title": "Редактировать агента", + "manage.title": "Редактировать агентов", + "my_agents": "Мои агенты", "search.no_results": "Результаты не найдены", - "sorting.title": "Сортировка" + "sorting.title": "Сортировка", + "tag.agent": "Агент", + "tag.default": "По умолчанию", + "tag.new": "Новый", + "tag.system": "Система", + "title": "Агенты" }, - "minapp": { - "title": "Встроенные приложения" + "assistants": { + "abbr": "Ассистент", + "clear.content": "Очистка топика удалит все топики и файлы в ассистенте. Вы уверены, что хотите продолжить?", + "clear.title": "Очистить топики", + "copy.title": "Копировать ассистента", + "delete.content": "Удаление ассистента удалит все топики и файлы под ассистентом. Вы уверены, что хотите удалить его?", + "delete.title": "Удалить ассистента", + "edit.title": "Редактировать ассистента", + "save.success": "Успешно сохранено", + "save.title": "Сохранить в агента", + "search": "Поиск ассистентов...", + "settings.auto_reset_model": "Автосброс модели", + "settings.auto_reset_model.tip": "Автоматически сбрасывать модель при создании нового топика.", + "settings.default_model": "Модель по умолчанию", + "settings.model": "Настройки модели", + "settings.preset_messages": "Предустановленные сообщения", + "settings.prompt": "Настройки промптов", + "title": "Ассистенты" }, - "history": { - "title": "Поиск топиков", - "search.placeholder": "Поиск топиков или сообщений...", - "continue_chat": "Продолжить чат", - "search.topics.empty": "Топики не найдены, нажмите Enter для поиска всех сообщений", - "search.messages": "Поиск всех сообщений", - "locate.message": "Найти сообщение" + "button": { + "add": "Добавить", + "added": "Добавлено", + "collapse": "Свернуть", + "manage": "Редактировать", + "select_model": "Выбрать модель", + "show.all": "Показать все" }, - "provider": { - "jina": "Jina", - "mistral": "Mistral", - "hyperbolic": "Hyperbolic", - "grok": "Grok", - "nvidia": "Nvidia", - "hunyuan": "Tencent Hunyuan", - "zhinao": "360AI", - "fireworks": "Fireworks", - "together": "Together", - "openai": "OpenAI", - "gemini": "Gemini", - "deepseek": "DeepSeek", - "moonshot": "Moonshot", - "silicon": "SiliconFlow", - "openrouter": "OpenRouter", - "yi": "Yi", - "zhipu": "ZHIPU AI", - "groq": "Groq", - "ollama": "Ollama", - "baichuan": "Baichuan", - "dashscope": "Alibaba Cloud", - "anthropic": "Anthropic", - "aihubmix": "AiHubMix", - "stepfun": "StepFun", - "doubao": "Doubao", - "minimax": "MiniMax", - "graphrag-kylin-mountain": "GraphRAG", - "github": "GitHub Models", - "ocoolai": "ocoolAI", - "azure-openai": "Azure OpenAI" + "chat": { + "add.assistant.title": "Добавить ассистента", + "artifacts.button.download": "Скачать", + "artifacts.button.preview": "Предпросмотр", + "assistant.search.placeholder": "Поиск", + "default.description": "Привет, я Ассистент по умолчанию. Вы можете начать общаться со мной прямо сейчас", + "default.name": "⭐️ Ассистент по умолчанию", + "default.topic.name": "Топик по умолчанию", + "input.clear": "Очистить", + "input.clear.content": "Хотите очистить все сообщения текущего топика?", + "input.clear.title": "Очистить все сообщения?", + "input.collapse": "Свернуть", + "input.context_count.tip": "Количество контекстов", + "input.estimated_tokens.tip": "Затраты токенов", + "input.expand": "Развернуть", + "input.new.context": "Очистить контекст", + "input.new_topic": "Новый топик {{Command}}+N", + "input.pause": "Остановить", + "input.placeholder": "Введите ваше сообщение здесь...", + "input.send": "Отправить", + "input.settings": "Настройки", + "input.topics": " Топики ", + "input.translate": "Перевести на английский", + "input.upload": "Загрузить изображение или документ", + "message.new.branch": "Новая ветка", + "message.new.branch.created": "Новая ветка создана", + "message.new.context": "Новый контекст", + "save": "Сохранить", + "settings.code_collapsible": "Блок кода свернут", + "settings.context_count": "Контекст", + "settings.context_count.tip": "Количество предыдущих сообщений, которые нужно сохранить в контексте.", + "settings.max": "Максимум", + "settings.max_tokens": "Включить лимит максимальных токенов", + "settings.max_tokens.tip": "Максимальное количество токенов, которые может сгенерировать модель. Обычный чат предполагает 500-800. Генерация короткого текста предполагает 800-2000. Генерация кода предполагает 2000-3600. Генерация длинного текста предполагает выше 4000.", + "settings.reset": "Сбросить", + "settings.set_as_default": "Применить к ассистенту по умолчанию", + "settings.show_line_numbers": "Показать номера строк в коде", + "settings.temperature": "Температура", + "settings.temperature.tip": "Меньшие значения делают модель более креативной и непредсказуемой, в то время как большие значения делают её более детерминированной и точной.", + "suggestions.title": "Предложенные вопросы", + "topics.auto_rename": "Автопереименование", + "topics.clear.title": "Очистить сообщения", + "topics.edit.placeholder": "Введите новый заголовок", + "topics.edit.title": "Редактировать заголовок", + "topics.export.image": "Экспорт как изображение", + "topics.export.md": "Экспорт как markdown", + "topics.export.title": "Экспорт", + "topics.export.word": "Экспорт как Word", + "topics.list": "Список топиков", + "topics.move_to": "Переместить в", + "topics.title": "Топики", + "translate": "Перевести" }, - "settings": { - "title": "Настройки", - "general": "Общие настройки", - "model": "Модель по умолчанию", - "assistant": "Ассистент по умолчанию", - "about": "О программе и обратная связь", - "messages.model.title": "Настройки модели", - "messages.title": "Настройки сообщений", - "messages.divider": "Показывать разделитель между сообщениями", - "messages.use_serif_font": "Использовать serif шрифт", - "messages.input.title": "Настройки ввода", - "messages.input.show_estimated_tokens": "Показывать затраты токенов", - "messages.input.send_shortcuts": "Горячие клавиши для отправки", - "messages.input.paste_long_text_as_file": "Вставлять длинный текст как файл", - "messages.markdown_rendering_input_message": "Отображение ввода в формате Markdown", - "messages.math_engine": "Математический движок", - "general.title": "Общие настройки", - "general.user_name": "Имя пользователя", - "general.user_name.placeholder": "Введите ваше имя", - "general.backup.title": "Резервное копирование и восстановление данных", - "general.backup.button": "Резервное копирование", - "general.restore.button": "Восстановление", - "general.view_webdav_settings": "Просмотр настроек WebDAV", - "general.reset.title": "Сброс данных", - "general.reset.button": "Сброс", - "general.manually_check_update.title": "Отключить проверку обновлений", - "advanced.title": "Расширенные настройки", - "advanced.auto_switch_to_topics": "Автоматически переключаться на топик", - "provider.api_key": "Ключ API", - "provider.api_key.tip": "Несколько ключей, разделенных запятыми", - "provider.check": "Проверить", - "provider.get_api_key": "Получить ключ API", - "provider.api_host": "Хост API", - "provider.api_version": "Версия API", - "provider.docs_check": "Проверить", - "provider.docs_more_details": "для получения дополнительной информации", - "provider.search_placeholder": "Поиск по ID или имени модели", - "provider.api.url.reset": "Сброс", - "provider.api.url.preview": "Предпросмотр: {{url}}", - "provider.api.url.tip": "Заканчивая на / игнорирует v1, заканчивая на # принудительно использует введенный адрес", - "models.default_assistant_model": "Модель ассистента по умолчанию", - "models.default_assistant_model_description": "Модель, используемая при создании нового ассистента, если ассистент не имеет настроенной модели, будет использоваться эта модель", - "models.topic_naming_model": "Модель именования топика", - "models.topic_naming_model_description": "Модель, используемая при автоматическом именовании нового топика", - "models.translate_model": "Модель перевода", - "models.translate_model_description": "Модель, используемая для сервиса перевода", - "models.add.add_model": "Добавить модель", - "models.add.model_id.placeholder": "Обязательно, например, gpt-3.5-turbo", - "models.add.model_id": "ID модели", - "models.add.model_id.tooltip": "Пример: gpt-3.5-turbo", - "models.add.model_name": "Имя модели", - "models.add.model_name.placeholder": "Необязательно, например, GPT-4", - "models.add.group_name": "Имя группы", - "models.add.group_name.tooltip": "Необязательно, например, ChatGPT", - "models.add.group_name.placeholder": "Необязательно, например, ChatGPT", - "models.translate_model_prompt_title": "Модель перевода", - "models.translate_model_prompt_message": "Введите модель перевода", - "models.empty": "Модели не найдены", - "assistant.title": "Ассистент по умолчанию", - "assistant.model_params": "Параметры модели", - "about.description": "Мощный AI-ассистент для созидания", - "about.updateNotAvailable": "Вы используете последнюю версию", - "about.checkingUpdate": "Проверка обновлений...", - "about.updateError": "Ошибка обновления", - "about.checkUpdate": "Проверить обновления", - "about.downloading": "Загрузка...", - "about.title": "О программе", - "about.releases.title": "Заметки о релизах", - "about.releases.button": "Релизы", - "about.website.title": "Официальный сайт", - "about.website.button": "Сайт", - "about.feedback.title": "Обратная связь", - "about.feedback.button": "Обратная связь", - "about.contact.title": "Контакты", - "about.license.title": "Лицензия", - "about.license.button": "Лицензия", - "about.contact.button": "Электронная почта", - "proxy.title": "Адрес прокси", - "tray.title": "Включить значок системного трея", - "theme.title": "Тема", - "theme.dark": "Темная", - "theme.light": "Светлая", - "theme.auto": "Автоматически", - "theme.window.style.title": "Стиль окна", - "theme.window.style.transparent": "Прозрачное окно", - "theme.window.style.opaque": "Непрозрачное окно", - "font_size.title": "Размер шрифта сообщений", - "topic.position": "Позиция топиков", - "topic.position.left": "Слева", - "topic.position.right": "Справа", - "topic.show.time": "Показывать время топика", - "display.title": "Настройки отображения", - "input.auto_translate_with_space": "Быстрый перевод с помощью 3-х пробелов", - "shortcuts": { - "title": "Горячие клавиши", - "action": "Действие", - "key": "Клавиша", - "new_topic": "Новый топик", - "zoom_in": "Увеличить", - "zoom_out": "Уменьшить", - "zoom_reset": "Сбросить масштаб" - }, - "provider": { - "title": "Провайдеры моделей", - "api_key": "Ключ API", - "api_key.tip": "Несколько ключей, разделенных запятыми", - "check": "Проверить", - "get_api_key": "Получить ключ API", - "api_host": "Хост API", - "api_version": "Версия API", - "docs_check": "Проверить", - "docs_more_details": "для получения дополнительной информации", - "search_placeholder": "Поиск по ID или имени модели", - "api.url.reset": "Сброс", - "api.url.preview": "Предпросмотр: {{url}}", - "api.url.tip": "Заканчивая на / игнорирует v1, заканчивая на # принудительно использует введенный адрес", - "check_multiple_keys": "Проверить несколько ключей API", - "check_all_keys": "Проверить все ключи", - "remove_invalid_keys": "Удалить недействительные ключи", - "remove_duplicate_keys": "Удалить дубликаты ключей", - "not_checked": "Не проверено", - "delete.title": "Удалить провайдер", - "delete.content": "Вы уверены, что хотите удалить этот провайдер?", - "add.title": "Добавить провайдер", - "add.name": "Имя провайдера", - "add.name.placeholder": "Пример: OpenAI", - "add.type": "Тип провайдера", - "no_models": "Пожалуйста, добавьте модели перед проверкой соединения с API" - }, - "proxy": { - "title": "Настройки прокси", - "mode": { - "title": "Режим прокси", - "system": "Системный прокси", - "custom": "Пользовательский прокси", - "none": "Не использовать прокси" - } - }, - "data": { - "title": "Настройки данных", - "webdav.title": "WebDAV", - "webdav.host": "Хост WebDAV", - "webdav.host.placeholder": "http://localhost:8080", - "webdav.user": "Пользователь WebDAV", - "webdav.password": "Пароль WebDAV", - "webdav.path": "Путь WebDAV", - "webdav.path.placeholder": "/backup", - "webdav.backup.button": "Резервное копирование на WebDAV", - "webdav.restore.button": "Восстановление с WebDAV", - "data.title": "Каталог данных", - "app_data": "Данные приложения", - "app_logs": "Логи приложения", - "clear_cache": { - "title": "Очистка кэша", - "button": "Очистка кэша", - "confirm": "Очистка кэша удалит данные приложения. Это действие необратимо, продолжить?", - "success": "Кэш очищен", - "error": "Ошибка при очистке кэша" - } - } - }, - "translate": { - "title": "Перевод", - "any.language": "Любой язык", - "button.translate": "Перевести", - "error.not_configured": "Модель перевода не настроена", - "input.placeholder": "Введите текст для перевода", - "output.placeholder": "Перевод", - "confirm": { - "title": "Перевод подтверждение", - "content": "Перевод заменит исходный текст, продолжить?" - } - }, - "languages": { - "english": "Английский", - "chinese": "Китайский", - "chinese-traditional": "Китайский традиционный", - "japanese": "Японский", - "korean": "Корейский", - "russian": "Русский", - "spanish": "Испанский", - "french": "Французский", - "italian": "Итальянский", - "portuguese": "Португальский", - "arabic": "Арабский" - }, - "ollama": { - "title": "Ollama", - "keep_alive_time.title": "Время жизни модели", - "keep_alive_time.placeholder": "Минуты", - "keep_alive_time.description": "Время в минутах, в течение которого модель остается активной, по умолчанию 5 минут." + "common": { + "and": "и", + "assistant": "Ассистент", + "avatar": "Аватар", + "back": "Назад", + "cancel": "Отмена", + "chat": "Чат", + "close": "Закрыть", + "copy": "Копировать", + "cut": "Вырезать", + "default": "По умолчанию", + "delete": "Удалить", + "description": "Описание", + "docs": "Документы", + "download": "Скачать", + "duplicate": "Дублировать", + "edit": "Редактировать", + "footnotes": "Сноски", + "language": "Язык", + "model": "Модель", + "models": "Модели", + "name": "Имя", + "paste": "Вставить", + "prompt": "Промпт", + "provider": "Провайдер", + "regenerate": "Пересоздать", + "rename": "Переименовать", + "reset": "Сбросить", + "save": "Сохранить", + "search": "Поиск", + "select": "Выбрать", + "topics": "Топики", + "warning": "Предупреждение", + "you": "Вы" }, "error": { - "chat.response": "Что-то пошло не так. Пожалуйста, проверьте, установлен ли ваш ключ API в Настройки > Провайдеры", "backup.file_format": "Ошибка формата файла резервной копии", - "provider_disabled": "Провайдер моделей не включен", - "no_api_key": "Ключ API не настроен" - }, - "words": { - "knowledgeGraph": "Граф знаний", - "visualization": "Визуализация" + "chat.response": "Что-то пошло не так. Пожалуйста, проверьте, установлен ли ваш ключ API в Настройки > Провайдеры", + "no_api_key": "Ключ API не настроен", + "provider_disabled": "Провайдер моделей не включен" }, "export": { - "attached_files": "Прикрепленные файлы", - "user": "Пользователь", "assistant": "Ассистент", + "attached_files": "Прикрепленные файлы", + "conversation_details": "Детали разговора", + "conversation_history": "История разговора", "created": "Создано", "last_updated": "Последнее обновление", "messages": "Сообщения", - "conversation_details": "Детали разговора", - "conversation_history": "История разговора" + "user": "Пользователь" + }, + "files": { + "actions": "Действия", + "all": "Все файлы", + "count": "Количество", + "created_at": "Дата создания", + "document": "Документ", + "file": "Файл", + "image": "Изображение", + "name": "Имя", + "open": "Открыть", + "size": "Размер", + "text": "Текст", + "title": "Файлы" + }, + "history": { + "continue_chat": "Продолжить чат", + "locate.message": "Найти сообщение", + "search.messages": "Поиск всех сообщений", + "search.placeholder": "Поиск топиков или сообщений...", + "search.topics.empty": "Топики не найдены, нажмите Enter для поиска всех сообщений", + "title": "Поиск топиков" + }, + "languages": { + "arabic": "Арабский", + "chinese": "Китайский", + "chinese-traditional": "Китайский традиционный", + "english": "Английский", + "french": "Французский", + "italian": "Итальянский", + "japanese": "Японский", + "korean": "Корейский", + "portuguese": "Португальский", + "russian": "Русский", + "spanish": "Испанский" }, "mermaid": { - "title": "Диаграмма Mermaid", "download": { - "svg": "Скачать SVG", - "png": "Скачать PNG" + "png": "Скачать PNG", + "svg": "Скачать SVG" }, "tabs": { "preview": "Предпросмотр", "source": "Исходный код" + }, + "title": "Диаграмма Mermaid" + }, + "message": { + "api.connection.failed": "Соединение не удалось", + "api.connection.success": "Соединение успешно", + "assistant.added.content": "Ассистент успешно добавлен", + "backup.failed": "Создание резервной копии не удалось", + "backup.success": "Резервная копия успешно создана", + "chat.completion.paused": "Завершение чата приостановлено", + "copied": "Скопировано!", + "error.enter.api.host": "Пожалуйста, введите ваш API хост", + "error.enter.api.key": "Пожалуйста, введите ваш API ключ", + "error.enter.model": "Пожалуйста, выберите модель", + "error.invalid.proxy.url": "Неверный URL прокси", + "error.invalid.webdav": "Неверные настройки WebDAV", + "message.code_style": "Стиль кода", + "message.delete.content": "Вы уверены, что хотите удалить это сообщение?", + "message.delete.title": "Удалить сообщение", + "message.style": "Стиль сообщения", + "message.style.bubble": "Пузырь", + "message.style.plain": "Простой", + "reset.confirm.content": "Вы уверены, что хотите очистить все данные?", + "reset.double.confirm.content": "Все данные будут утеряны, хотите продолжить?", + "reset.double.confirm.title": "ДАННЫЕ БУДУТ УТЕРЯНЫ !!!", + "restore.success": "Успешно восстановлено", + "save.success.title": "Успешно сохранено", + "switch.disabled": "Переключение отключено, пока ассистент генерирует", + "topic.added": "Новый топик добавлен", + "upgrade.success.button": "Перезапустить", + "upgrade.success.content": "Пожалуйста, перезапустите приложение для завершения обновления", + "upgrade.success.title": "Обновление успешно" + }, + "minapp": { + "title": "Встроенные приложения" + }, + "model": { + "pinned": "Закреплено", + "search": "Поиск моделей...", + "stream_output": "Потоковый вывод", + "type": { + "select": "Выберите тип модели", + "text": "Текст", + "vision": "Изображение" } }, + "ollama": { + "keep_alive_time.description": "Время в минутах, в течение которого модель остается активной, по умолчанию 5 минут.", + "keep_alive_time.placeholder": "Минуты", + "keep_alive_time.title": "Время жизни модели", + "title": "Ollama" + }, + "paintings": { + "button.delete.image": "Удалить изображение", + "button.delete.image.confirm": "Вы уверены, что хотите удалить это изображение?", + "button.new.image": "Новое изображение", + "guidance_scale": "Масштаб руководства", + "guidance_scale_tip": "Без классификатора руководства. Насколько близко вы хотите, чтобы модель придерживалась вашего промпта при поиске связанного изображения для показа вам", + "image.size": "Размер изображения", + "inference_steps": "Шаги вывода", + "inference_steps_tip": "Количество шагов вывода для выполнения. Больше шагов производят более высокое качество, но занимают больше времени", + "negative_prompt": "Негативный промпт", + "negative_prompt_tip": "Опишите, что вы не хотите включать в изображение", + "number_images": "Количество изображений", + "number_images_tip": "Количество изображений для генерации (1-4)", + "prompt_placeholder": "Опишите изображение, которое вы хотите создать, например, Спокойное озеро на закате с горами на заднем плане", + "regenerate.confirm": "Это заменит ваши существующие сгенерированные изображения. Хотите продолжить?", + "seed": "Ключ генерации", + "seed_tip": "Одинаковый ключ генерации и промпт могут производить похожие изображения", + "title": "Изображения" + }, + "provider": { + "aihubmix": "AiHubMix", + "anthropic": "Anthropic", + "azure-openai": "Azure OpenAI", + "baichuan": "Baichuan", + "dashscope": "Alibaba Cloud", + "deepseek": "DeepSeek", + "doubao": "Doubao", + "fireworks": "Fireworks", + "gemini": "Gemini", + "github": "GitHub Models", + "graphrag-kylin-mountain": "GraphRAG", + "grok": "Grok", + "groq": "Groq", + "hunyuan": "Tencent Hunyuan", + "hyperbolic": "Hyperbolic", + "jina": "Jina", + "minimax": "MiniMax", + "mistral": "Mistral", + "moonshot": "Moonshot", + "nvidia": "Nvidia", + "ocoolai": "ocoolAI", + "ollama": "Ollama", + "openai": "OpenAI", + "openrouter": "OpenRouter", + "silicon": "SiliconFlow", + "stepfun": "StepFun", + "together": "Together", + "yi": "Yi", + "zhinao": "360AI", + "zhipu": "ZHIPU AI" + }, + "settings": { + "about": "О программе и обратная связь", + "about.checkUpdate": "Проверить обновления", + "about.checkingUpdate": "Проверка обновлений...", + "about.contact.button": "Электронная почта", + "about.contact.title": "Контакты", + "about.description": "Мощный AI-ассистент для созидания", + "about.downloading": "Загрузка...", + "about.feedback.button": "Обратная связь", + "about.feedback.title": "Обратная связь", + "about.license.button": "Лицензия", + "about.license.title": "Лицензия", + "about.releases.button": "Релизы", + "about.releases.title": "Заметки о релизах", + "about.title": "О программе", + "about.updateError": "Ошибка обновления", + "about.updateNotAvailable": "Вы используете последнюю версию", + "about.website.button": "Сайт", + "about.website.title": "Официальный сайт", + "advanced.auto_switch_to_topics": "Автоматически переключаться на топик", + "advanced.title": "Расширенные настройки", + "assistant": "Ассистент по умолчанию", + "assistant.model_params": "Параметры модели", + "assistant.title": "Ассистент по умолчанию", + "data": { + "app_data": "Данные приложения", + "app_logs": "Логи приложения", + "clear_cache": { + "button": "Очистка кэша", + "confirm": "Очистка кэша удалит данные приложения. Это действие необратимо, продолжить?", + "error": "Ошибка при очистке кэша", + "success": "Кэш очищен", + "title": "Очистка кэша" + }, + "data.title": "Каталог данных", + "title": "Настройки данных", + "webdav.backup.button": "Резервное копирование на WebDAV", + "webdav.host": "Хост WebDAV", + "webdav.host.placeholder": "http://localhost:8080", + "webdav.password": "Пароль WebDAV", + "webdav.path": "Путь WebDAV", + "webdav.path.placeholder": "/backup", + "webdav.restore.button": "Восстановление с WebDAV", + "webdav.title": "WebDAV", + "webdav.user": "Пользователь WebDAV" + }, + "display.title": "Настройки отображения", + "font_size.title": "Размер шрифта сообщений", + "general": "Общие настройки", + "general.backup.button": "Резервное копирование", + "general.backup.title": "Резервное копирование и восстановление данных", + "general.manually_check_update.title": "Отключить проверку обновлений", + "general.reset.button": "Сброс", + "general.reset.title": "Сброс данных", + "general.restore.button": "Восстановление", + "general.title": "Общие настройки", + "general.user_name": "Имя пользователя", + "general.user_name.placeholder": "Введите ваше имя", + "general.view_webdav_settings": "Просмотр настроек WebDAV", + "input.auto_translate_with_space": "Быстрый перевод с помощью 3-х пробелов", + "messages.divider": "Показывать разделитель между сообщениями", + "messages.input.paste_long_text_as_file": "Вставлять длинный текст как файл", + "messages.input.send_shortcuts": "Горячие клавиши для отправки", + "messages.input.show_estimated_tokens": "Показывать затраты токенов", + "messages.input.title": "Настройки ввода", + "messages.markdown_rendering_input_message": "Отображение ввода в формате Markdown", + "messages.math_engine": "Математический движок", + "messages.model.title": "Настройки модели", + "messages.title": "Настройки сообщений", + "messages.use_serif_font": "Использовать serif шрифт", + "model": "Модель по умолчанию", + "models.add.add_model": "Добавить модель", + "models.add.group_name": "Имя группы", + "models.add.group_name.placeholder": "Необязательно, например, ChatGPT", + "models.add.group_name.tooltip": "Необязательно, например, ChatGPT", + "models.add.model_id": "ID модели", + "models.add.model_id.placeholder": "Обязательно, например, gpt-3.5-turbo", + "models.add.model_id.tooltip": "Пример: gpt-3.5-turbo", + "models.add.model_name": "Имя модели", + "models.add.model_name.placeholder": "Необязательно, например, GPT-4", + "models.default_assistant_model": "Модель ассистента по умолчанию", + "models.default_assistant_model_description": "Модель, используемая при создании нового ассистента, если ассистент не имеет настроенной модели, будет использоваться эта модель", + "models.empty": "Модели не найдены", + "models.topic_naming_model": "Модель именования топика", + "models.topic_naming_model_description": "Модель, используемая при автоматическом именовании нового топика", + "models.translate_model": "Модель перевода", + "models.translate_model_description": "Модель, используемая для сервиса перевода", + "models.translate_model_prompt_message": "Введите модель перевода", + "models.translate_model_prompt_title": "Модель перевода", + "provider": { + "add.name": "Имя провайдера", + "add.name.placeholder": "Пример: OpenAI", + "add.title": "Добавить провайдер", + "add.type": "Тип провайдера", + "api.url.preview": "Предпросмотр: {{url}}", + "api.url.reset": "Сброс", + "api.url.tip": "Заканчивая на / игнорирует v1, заканчивая на # принудительно использует введенный адрес", + "api_host": "Хост API", + "api_key": "Ключ API", + "api_key.tip": "Несколько ключей, разделенных запятыми", + "api_version": "Версия API", + "check": "Проверить", + "check_all_keys": "Проверить все ключи", + "check_multiple_keys": "Проверить несколько ключей API", + "delete.content": "Вы уверены, что хотите удалить этот провайдер?", + "delete.title": "Удалить провайдер", + "docs_check": "Проверить", + "docs_more_details": "для получения дополнительной информации", + "get_api_key": "Получить ключ API", + "no_models": "Пожалуйста, добавьте модели перед проверкой соединения с API", + "not_checked": "Не проверено", + "remove_duplicate_keys": "Удалить дубликаты ключей", + "remove_invalid_keys": "Удалить недействительные ключи", + "search_placeholder": "Поиск по ID или имени модели", + "title": "Провайдеры моделей" + }, + "provider.api.url.preview": "Предпросмотр: {{url}}", + "provider.api.url.reset": "Сброс", + "provider.api.url.tip": "Заканчивая на / игнорирует v1, заканчивая на # принудительно использует введенный адрес", + "provider.api_host": "Хост API", + "provider.api_key": "Ключ API", + "provider.api_key.tip": "Несколько ключей, разделенных запятыми", + "provider.api_version": "Версия API", + "provider.check": "Проверить", + "provider.docs_check": "Проверить", + "provider.docs_more_details": "для получения дополнительной информации", + "provider.get_api_key": "Получить ключ API", + "provider.search_placeholder": "Поиск по ID или имени модели", + "proxy": { + "mode": { + "custom": "Пользовательский прокси", + "none": "Не использовать прокси", + "system": "Системный прокси", + "title": "Режим прокси" + }, + "title": "Настройки прокси" + }, + "proxy.title": "Адрес прокси", + "shortcuts": { + "action": "Действие", + "key": "Клавиша", + "new_topic": "Новый топик", + "title": "Горячие клавиши", + "zoom_in": "Увеличить", + "zoom_out": "Уменьшить", + "zoom_reset": "Сбросить масштаб" + }, + "theme.auto": "Автоматически", + "theme.dark": "Темная", + "theme.light": "Светлая", + "theme.title": "Тема", + "theme.window.style.opaque": "Непрозрачное окно", + "theme.window.style.title": "Стиль окна", + "theme.window.style.transparent": "Прозрачное окно", + "title": "Настройки", + "topic.position": "Позиция топиков", + "topic.position.left": "Слева", + "topic.position.right": "Справа", + "topic.show.time": "Показывать время топика", + "tray.title": "Включить значок системного трея" + }, + "translate": { + "any.language": "Любой язык", + "button.translate": "Перевести", + "confirm": { + "content": "Перевод заменит исходный текст, продолжить?", + "title": "Перевод подтверждение" + }, + "error.not_configured": "Модель перевода не настроена", + "error.failed": "Перевод не удалось", + "input.placeholder": "Введите текст для перевода", + "output.placeholder": "Перевод", + "processing": "Перевод в процессе...", + "title": "Перевод", + "close": "Закрыть" + }, "tray": { - "show_window": "Показать окно", - "quit": "Выйти" + "quit": "Выйти", + "show_window": "Показать окно" + }, + "words": { + "knowledgeGraph": "Граф знаний", + "visualization": "Визуализация" } } } diff --git a/src/renderer/src/i18n/locales/zh-cn.json b/src/renderer/src/i18n/locales/zh-cn.json index 984919e8..ff0c78f6 100644 --- a/src/renderer/src/i18n/locales/zh-cn.json +++ b/src/renderer/src/i18n/locales/zh-cn.json @@ -1,478 +1,482 @@ { "translation": { - "common": { - "avatar": "头像", - "language": "语言", - "model": "模型", - "models": "模型", - "topics": "话题", - "docs": "文档", - "and": "和", - "assistant": "智能体", - "name": "名称", - "description": "描述", - "prompt": "提示词", - "rename": "重命名", - "delete": "删除", - "edit": "编辑", - "duplicate": "复制", - "copy": "复制", - "paste": "粘贴", - "cut": "剪切", - "regenerate": "重新生成", - "provider": "提供商", - "you": "用户", - "save": "保存", - "footnote": "引用内容", - "select": "选择", - "search": "搜索", - "default": "默认", - "warning": "警告", - "back": "返回", - "chat": "聊天", - "close": "关闭", - "cancel": "取消", - "download": "下载", - "reset": "重置" - }, - "button": { - "add": "添加", - "added": "已添加", - "manage": "管理", - "select_model": "选择模型", - "show.all": "显示全部", - "collapse": "收起" - }, - "message": { - "copied": "已复制", - "assistant.added.content": "智能体添加成功", - "message.delete.title": "删除消息", - "message.delete.content": "确定要删除此消息吗?", - "error.enter.api.key": "请输入您的 API 密钥", - "error.enter.api.host": "请输入您的 API 地址", - "error.enter.model": "请选择一个模型", - "error.invalid.proxy.url": "无效的代理地址", - "error.invalid.webdav": "无效的 WebDAV 设置", - "api.connection.failed": "连接失败", - "api.connection.success": "连接成功", - "chat.completion.paused": "会话已停止", - "switch.disabled": "模型回复完成后才能切换", - "restore.success": "恢复成功", - "backup.success": "备份成功", - "backup.failed": "备份失败", - "reset.confirm.content": "确定要重置所有数据吗?", - "reset.double.confirm.title": "数据丢失!!!", - "reset.double.confirm.content": "你的全部数据都会丢失,如果没有备份数据,将无法恢复,确定要继续吗?", - "upgrade.success.title": "升级成功", - "upgrade.success.content": "重启用以完成升级", - "upgrade.success.button": "重启", - "topic.added": "话题添加成功", - "save.success.title": "保存成功", - "message.code_style": "代码风格", - "message.style": "消息样式", - "message.style.bubble": "气泡", - "message.style.plain": "简洁" - }, - "chat": { - "save": "保存", - "default.name": "⭐️ 默认助手", - "default.description": "你好,我是默认助手。你可以立刻开始跟我聊天。", - "default.topic.name": "默认话题", - "topics.title": "话题", - "topics.auto_rename": "生成话题名", - "topics.edit.title": "编辑话题名", - "topics.edit.placeholder": "输入新名称", - "topics.clear.title": "清空消息", - "topics.move_to": "移动到", - "topics.list": "话题列表", - "topics.export.title": "导出", - "topics.export.image": "导出为图片", - "topics.export.md": "导出为 Markdown", - "topics.export.word": "导出为 Word", - "input.new_topic": "新话题 {{Command}}+N", - "input.topics": " 话题 ", - "input.clear": "清空消息", - "input.new.context": "清除上下文", - "input.expand": "展开", - "input.collapse": "收起", - "input.clear.title": "清空消息", - "input.clear.content": "确定要清除当前会话所有消息吗?", - "input.placeholder": "在这里输入消息...", - "input.send": "发送", - "input.pause": "暂停", - "input.settings": "设置", - "input.upload": "上传图片或文档", - "input.context_count.tip": "上下文数", - "input.estimated_tokens.tip": "预估 token 数", - "input.translate": "翻译成英文", - "settings.temperature": "模型温度", - "settings.temperature.tip": "模型生成文本的随机程度。值越大,回复内容越赋有多样性、创造性、随机性;设为 0 根据事实回答。日常聊天建议设置为 0.7", - "settings.context_count": "上下文数", - "settings.context_count.tip": "要保留在上下文中的消息数量,数值越大,上下文越长,消耗的 token 越多。普通聊天建议 5-10", - "settings.max_tokens": "开启消息长度限制", - "settings.max_tokens.tip": "单次交互所用的最大 Token 数, 会影响返回结果的长度。普通聊天建议 500-800;短文生成建议 800-2000;代码生成建议 2000-3600;长文生成建议切换模型到 4000 左右", - "settings.reset": "重置", - "settings.set_as_default": "应用到默认助手", - "settings.max": "不限", - "settings.show_line_numbers": "代码显示行号", - "settings.code_collapsible": "代码块可折叠", - "suggestions.title": "建议的问题", - "add.assistant.title": "添加助手", - "message.new.context": "清除上下文", - "message.new.branch": "新分支", - "message.new.branch.created": "新分支已创建", - "assistant.search.placeholder": "搜索", - "artifacts.button.preview": "预览", - "artifacts.button.download": "下载" - }, - "assistants": { - "title": "助手", - "abbr": "助手", - "search": "搜索助手", - "settings.prompt": "提示词设置", - "settings.model": "模型设置", - "settings.preset_messages": "预设消息", - "settings.default_model": "默认模型", - "settings.auto_reset_model": "自动重置模型", - "settings.auto_reset_model.tip": "创建新话题时自动重置模型", - "edit.title": "编辑助手", - "copy.title": "复制助手", - "clear.title": "清空话题", - "clear.content": "清空话题会删除助手下所有话题和文件,确定要继续吗?", - "save.title": "保存到智能体", - "save.success": "保存成功", - "delete.title": "删除助手", - "delete.content": "删除助手会删除所有该助手下的话题和文件,确定要继续吗?" - }, - "model": { - "stream_output": "流式输出", - "search": "搜索模型...", - "pinned": "已固定", - "type": { - "text": "文本", - "vision": "图像", - "select": "选择模型类型" - } - }, - "paintings": { - "title": "图片", - "image.size": "图片尺寸", - "button.new.image": "新建图片", - "button.delete.image": "删除图片", - "button.delete.image.confirm": "确定要删除此图片吗?", - "number_images": "生成数量", - "number_images_tip": "一次生成的图片数量 (1-4)", - "seed": "随机种子", - "seed_tip": "相同的种子和提示词可以生成相似的图片", - "inference_steps": "推理步数", - "inference_steps_tip": "要执行的推理步数。步数越多,质量越高但耗时越长", - "guidance_scale": "引导比例", - "guidance_scale_tip": "无分类器指导。控制模型在寻找相关图像时对提示词的遵循程度", - "negative_prompt": "反向提示词", - "negative_prompt_tip": "描述你不想在图片中出现的内容", - "prompt_placeholder": "描述你想创建的图片,例如:一个宁静的湖泊,夕阳西下,远处是群山", - "regenerate.confirm": "这将覆盖已生成的图片,是否继续?" - }, - "files": { - "title": "文件", - "file": "文件", - "name": "文件名", - "size": "大小", - "count": "文件数", - "created_at": "创建时间", - "image": "图片", - "text": "文本", - "document": "文档", - "actions": "操作", - "open": "打开", - "all": "所有文件" - }, "agents": { - "title": "智能体", - "my_agents": "我的智能体", - "add.title": "创建智能体", - "edit.title": "编辑智能体", + "add.button": "添加到助手", "add.name": "名称", "add.name.placeholder": "输入名称", "add.prompt": "提示词", "add.prompt.placeholder": "输入提示词", - "add.button": "添加到助手", - "manage.title": "管理智能体", + "add.title": "创建智能体", "delete.popup.content": "确定要删除此智能体吗?", - "tag.default": "默认", - "tag.system": "系统", - "tag.agent": "智能体", - "tag.new": "新建", - "edit.message.title": "预设消息", "edit.message.add.title": "添加", - "edit.message.group.title": "消息组", - "edit.message.assistant.title": "助手", "edit.message.assistant.placeholder": "输入助手消息", - "edit.message.user.title": "用户", - "edit.message.user.placeholder": "输入用户消息", + "edit.message.assistant.title": "助手", "edit.message.empty.content": "会话输入内容不能为空", + "edit.message.group.title": "消息组", + "edit.message.title": "预设消息", + "edit.message.user.placeholder": "输入用户消息", + "edit.message.user.title": "用户", "edit.model.select.title": "选择模型", "edit.settings.hide_preset_messages": "隐藏预设消息", + "edit.title": "编辑智能体", + "manage.title": "管理智能体", + "my_agents": "我的智能体", "search.no_results": "没有找到相关智能体", - "sorting.title": "排序" + "sorting.title": "排序", + "tag.agent": "智能体", + "tag.default": "默认", + "tag.new": "新建", + "tag.system": "系统", + "title": "智能体" }, - "minapp": { - "title": "小程序" + "assistants": { + "abbr": "助手", + "clear.content": "清空话题会删除助手下所有话题和文件,确定要继续吗?", + "clear.title": "清空话题", + "copy.title": "复制助手", + "delete.content": "删除助手会删除所有该助手下的话题和文件,确定要继续吗?", + "delete.title": "删除助手", + "edit.title": "编辑助手", + "save.success": "保存成功", + "save.title": "保存到智能体", + "search": "搜索助手", + "settings.auto_reset_model": "自动重置模型", + "settings.auto_reset_model.tip": "创建新话题时自动重置模型", + "settings.default_model": "默认模型", + "settings.model": "模型设置", + "settings.preset_messages": "预设消息", + "settings.prompt": "提示词设置", + "title": "助手" }, - "history": { - "title": "话题搜索", - "search.placeholder": "搜索话题或消息...", - "continue_chat": "继续聊天", - "search.topics.empty": "没有找到相关话题, 点击回车键搜索所有消息", - "search.messages": "搜索所有消息", - "locate.message": "定位到消息" + "button": { + "add": "添加", + "added": "已添加", + "collapse": "收起", + "manage": "管理", + "select_model": "选择模型", + "show.all": "显示全部" }, - "provider": { - "jina": "Jina", - "mistral": "Mistral", - "hyperbolic": "Hyperbolic", - "grok": "Grok", - "nvidia": "英伟达", - "hunyuan": "腾讯混元", - "zhinao": "360智脑", - "fireworks": "Fireworks", - "together": "Together", - "openai": "OpenAI", - "gemini": "Gemini", - "deepseek": "深度求索", - "moonshot": "月之暗面", - "silicon": "硅基流动", - "openrouter": "OpenRouter", - "yi": "零一万物", - "zhipu": "智谱AI", - "groq": "Groq", - "ollama": "Ollama", - "baichuan": "百川", - "dashscope": "阿里云百炼", - "anthropic": "Anthropic", - "aihubmix": "AiHubMix", - "stepfun": "阶跃星辰", - "doubao": "豆包", - "minimax": "MiniMax", - "graphrag-kylin-mountain": "GraphRAG", - "github": "GitHub Models", - "ocoolai": "ocoolAI", - "azure-openai": "Azure OpenAI" + "chat": { + "add.assistant.title": "添加助手", + "artifacts.button.download": "下载", + "artifacts.button.preview": "预览", + "assistant.search.placeholder": "搜索", + "default.description": "你好,我是默认助手。你可以立刻开始跟我聊天。", + "default.name": "⭐️ 默认助手", + "default.topic.name": "默认话题", + "input.clear": "清空消息", + "input.clear.content": "确定要清除当前会话所有消息吗?", + "input.clear.title": "清空消息", + "input.collapse": "收起", + "input.context_count.tip": "上下文数", + "input.estimated_tokens.tip": "预估 token 数", + "input.expand": "展开", + "input.new.context": "清除上下文", + "input.new_topic": "新话题 {{Command}}+N", + "input.pause": "暂停", + "input.placeholder": "在这里输入消息...", + "input.send": "发送", + "input.settings": "设置", + "input.topics": " 话题 ", + "input.translate": "翻译成英文", + "input.upload": "上传图片或文档", + "message.new.branch": "新分支", + "message.new.branch.created": "新分支已创建", + "message.new.context": "清除上下文", + "save": "保存", + "settings.code_collapsible": "代码块可折叠", + "settings.context_count": "上下文数", + "settings.context_count.tip": "要保留在上下文中的消息数量,数值越大,上下文越长,消耗的 token 越多。普通聊天建议 5-10", + "settings.max": "不限", + "settings.max_tokens": "开启消息长度限制", + "settings.max_tokens.tip": "单次交互所用的最大 Token 数, 会影响返回结果的长度。普通聊天建议 500-800;短文生成建议 800-2000;代码生成建议 2000-3600;长文生成建议切换模型到 4000 左右", + "settings.reset": "重置", + "settings.set_as_default": "应用到默认助手", + "settings.show_line_numbers": "代码显示行号", + "settings.temperature": "模型温度", + "settings.temperature.tip": "模型生成文本的随机程度。值越大,回复内容越赋有多样性、创造性、随机性;设为 0 根据事实回答。日常聊天建议设置为 0.7", + "suggestions.title": "建议的问题", + "topics.auto_rename": "生成话题名", + "topics.clear.title": "清空消息", + "topics.edit.placeholder": "输入新名称", + "topics.edit.title": "编辑话题名", + "topics.export.image": "导出为图片", + "topics.export.md": "导出为 Markdown", + "topics.export.title": "导出", + "topics.export.word": "导出为 Word", + "topics.list": "话题列表", + "topics.move_to": "移动到", + "topics.title": "话题", + "translate": "翻译" }, - "settings": { - "title": "设置", - "general": "常规设置", - "model": "默认模型", - "assistant": "默认助手", - "about": "关于我们", - "messages.model.title": "模型设置", - "messages.title": "消息设置", - "messages.divider": "消息分割线", - "messages.use_serif_font": "使用衬线字体", - "messages.input.title": "输入设置", - "messages.input.show_estimated_tokens": "显示预估 Token 数", - "messages.input.send_shortcuts": "发送快捷键", - "messages.input.paste_long_text_as_file": "长文本粘贴为文件", - "messages.markdown_rendering_input_message": "Markdown 渲染输入消息", - "messages.math_engine": "数学公式引擎", - "general.title": "常规设置", - "general.user_name": "用户名", - "general.user_name.placeholder": "请输入用户名", - "general.backup.title": "数据备份与恢复", - "general.backup.button": "备份", - "general.restore.button": "恢复", - "general.reset.title": "重置数据", - "general.reset.button": "重置", - "general.view_webdav_settings": "查看 WebDAV 设置", - "general.manually_check_update.title": "关闭更新检测", - "advanced.title": "高级设置", - "advanced.auto_switch_to_topics": "自动切换到话题", - "models.default_assistant_model": "默认助手模型", - "models.default_assistant_model_description": "创建新助手时使用的模型,如果助手未设置模型,则使用此模型", - "models.topic_naming_model": "话题命名模型", - "models.topic_naming_model_description": "自动命名新话题时使用的模型", - "models.translate_model": "翻译模型", - "models.translate_model_description": "翻译服务使用的模型", - "models.add.add_model": "添加模型", - "models.add.model_id.placeholder": "必填 例如 gpt-3.5-turbo", - "models.add.model_id": "模型 ID", - "models.add.model_id.tooltip": "例如 gpt-3.5-turbo", - "models.add.model_name": "模型名称", - "models.add.model_name.placeholder": "例如 GPT-3.5", - "models.add.group_name": "分组名称", - "models.add.group_name.tooltip": "例如 ChatGPT", - "models.add.group_name.placeholder": "例如 ChatGPT", - "models.translate_model_prompt_title": "翻译模型提示词", - "models.translate_model_prompt_message": "请输入翻译模型提示词", - "models.empty": "没有模型", - "assistant.title": "默认助手", - "assistant.model_params": "模型参数", - "about.description": "一款为创造者而生的 AI 助手", - "about.updateNotAvailable": "你的软件已是最新版本", - "about.checkingUpdate": "正在检查更新...", - "about.updateError": "更新出错", - "about.checkUpdate": "检查更新", - "about.downloading": "正在下载更新...", - "about.title": "关于我们", - "about.releases.title": "更新日志", - "about.releases.button": "查看", - "about.website.title": "官方网站", - "about.website.button": "查看", - "about.feedback.title": "意见反馈", - "about.feedback.button": "反馈", - "about.contact.title": "邮件联系", - "about.license.title": "许可证", - "about.license.button": "查看", - "about.contact.button": "邮件", - "proxy.title": "代理地址", - "tray.title": "启用系统托盘图标", - "theme.title": "主题", - "theme.dark": "深色主题", - "theme.light": "浅色主题", - "theme.auto": "跟随系统", - "theme.window.style.title": "窗口样式", - "theme.window.style.transparent": "透明窗口", - "theme.window.style.opaque": "不透明窗口", - "font_size.title": "消息字体大小", - "topic.position": "话题位置", - "topic.position.left": "左侧", - "topic.position.right": "右侧", - "topic.show.time": "显示话题时间", - "display.title": "显示设置", - "input.auto_translate_with_space": "快速敲击3次空格翻译", - "shortcuts": { - "title": "快捷方式", - "action": "操作", - "key": "按键", - "new_topic": "新建话题", - "zoom_in": "放大界面", - "zoom_out": "缩小界面", - "zoom_reset": "重置缩放" - }, - "provider": { - "title": "模型服务", - "api_key": "API 密钥", - "api_key.tip": "多个密钥使用逗号分隔", - "check": "检查", - "get_api_key": "点击这里获取密钥", - "api_host": "API 地址", - "api_version": "API 版本", - "docs_check": "查看", - "docs_more_details": "获取更多详情", - "search_placeholder": "搜索模型 ID 或名称", - "api.url.reset": "重置", - "api.url.preview": "预览: {{url}}", - "api.url.tip": "/结尾忽略v1版本,#结尾制使用输入地址", - "check_multiple_keys": "检查多个 API 密钥", - "check_all_keys": "检查所有密钥", - "remove_invalid_keys": "删除无效密钥", - "remove_duplicate_keys": "移除重复密钥", - "not_checked": "未检查", - "delete.title": "删除提供商", - "delete.content": "确定要删除此模型提供商吗?", - "add.title": "添加提供商", - "add.name": "提供商名称", - "add.name.placeholder": "例如 OpenAI", - "add.type": "提供商类型", - "no_models": "请先添加模型再检查 API 连接" - }, - "proxy": { - "title": "代理设置", - "mode": { - "title": "代理模式", - "system": "系统代理", - "custom": "自定义代理", - "none": "不使用代理" - } - }, - "data": { - "title": "数据设置", - "webdav.title": "WebDAV", - "webdav.host": "WebDAV 地址", - "webdav.host.placeholder": "http://localhost:8080", - "webdav.user": "WebDAV 用户名", - "webdav.password": "WebDAV 密码", - "webdav.path": "WebDAV 路径", - "webdav.path.placeholder": "/backup", - "webdav.backup.button": "备份到 WebDAV", - "webdav.restore.button": "从 WebDAV 恢复", - "data.title": "数据目录", - "app_data": "应用数据", - "app_logs": "应用日志", - "clear_cache": { - "title": "清除缓存", - "button": "清除缓存", - "confirm": "清除缓存将删除应用缓存的数据,包括小程序数据。此操作不可恢复,是否继续?", - "success": "缓存清除成功", - "error": "清除缓存失败" - } - } - }, - "translate": { - "title": "翻译", - "any.language": "任意语言", - "button.translate": "翻译", - "error.not_configured": "翻译模型未配置", - "input.placeholder": "输入文本进行翻译", - "output.placeholder": "翻译", - "confirm": { - "title": "翻译确认", - "content": "翻译后将覆盖原文,是否继续?" - } - }, - "languages": { - "english": "英文", - "chinese": "简体中文", - "chinese-traditional": "繁体中文", - "japanese": "日文", - "korean": "韩文", - "russian": "俄文", - "spanish": "西班牙文", - "french": "法文", - "italian": "意大利文", - "portuguese": "葡萄牙文", - "arabic": "阿拉伯文" - }, - "ollama": { - "title": "Ollama", - "keep_alive_time.title": "保持活跃时间", - "keep_alive_time.placeholder": "分钟", - "keep_alive_time.description": "对话后模型在内存中保持的时间(默认:5分钟)" + "common": { + "and": "和", + "assistant": "智能体", + "avatar": "头像", + "back": "返回", + "cancel": "取消", + "chat": "聊天", + "close": "关闭", + "copy": "复制", + "cut": "剪切", + "default": "默认", + "delete": "删除", + "description": "描述", + "docs": "文档", + "download": "下载", + "duplicate": "复制", + "edit": "编辑", + "footnote": "引用内容", + "language": "语言", + "model": "模型", + "models": "模型", + "name": "名称", + "paste": "粘贴", + "prompt": "提示词", + "provider": "提供商", + "regenerate": "重新生成", + "rename": "重命名", + "reset": "重置", + "save": "保存", + "search": "搜索", + "select": "选择", + "topics": "话题", + "warning": "警告", + "you": "用户" }, "error": { - "chat.response": "出错了,如果没有配置 API 密钥,请前往设置 > 模型提供商中配置密钥", "backup.file_format": "备份文件格式错误", - "provider_disabled": "模型提供商未启用", - "no_api_key": "API 密钥未配置" - }, - "words": { - "knowledgeGraph": "知识图谱", - "visualization": "可视化" + "chat.response": "出错了,如果没有配置 API 密钥,请前往设置 > 模型提供商中配置密钥", + "no_api_key": "API 密钥未配置", + "provider_disabled": "模型提供商未启用" }, "export": { - "attached_files": "附件", - "user": "用户", "assistant": "助手", + "attached_files": "附件", + "conversation_details": "会话详情", + "conversation_history": "会话历史", "created": "创建时间", "last_updated": "最后更新", "messages": "消息数", - "conversation_details": "会话详情", - "conversation_history": "会话历史" + "user": "用户" + }, + "files": { + "actions": "操作", + "all": "所有文件", + "count": "文件数", + "created_at": "创建时间", + "document": "文档", + "file": "文件", + "image": "图片", + "name": "文件名", + "open": "打开", + "size": "大小", + "text": "文本", + "title": "文件" + }, + "history": { + "continue_chat": "继续聊天", + "locate.message": "定位到消息", + "search.messages": "搜索所有消息", + "search.placeholder": "搜索话题或消息...", + "search.topics.empty": "没有找到相关话题, 点击回车键搜索所有消息", + "title": "话题搜索" + }, + "languages": { + "arabic": "阿拉伯文", + "chinese": "简体中文", + "chinese-traditional": "繁体中文", + "english": "英文", + "french": "法文", + "italian": "意大利文", + "japanese": "日文", + "korean": "韩文", + "portuguese": "葡萄牙文", + "russian": "俄文", + "spanish": "西班牙文" }, "mermaid": { - "title": "Mermaid 图表", "download": { - "svg": "下载 SVG", - "png": "下载 PNG" + "png": "下载 PNG", + "svg": "下载 SVG" }, "tabs": { "preview": "预览", "source": "源码" + }, + "title": "Mermaid 图表" + }, + "message": { + "api.connection.failed": "连接失败", + "api.connection.success": "连接成功", + "assistant.added.content": "智能体添加成功", + "backup.failed": "备份失败", + "backup.success": "备份成功", + "chat.completion.paused": "会话已停止", + "copied": "已复制", + "error.enter.api.host": "请输入您的 API 地址", + "error.enter.api.key": "请输入您的 API 密钥", + "error.enter.model": "请选择一个模型", + "error.invalid.proxy.url": "无效的代理地址", + "error.invalid.webdav": "无效的 WebDAV 设置", + "message.code_style": "代码风格", + "message.delete.content": "确定要删除此消息吗?", + "message.delete.title": "删除消息", + "message.style": "消息样式", + "message.style.bubble": "气泡", + "message.style.plain": "简洁", + "reset.confirm.content": "确定要重置所有数据吗?", + "reset.double.confirm.content": "你的全部数据都会丢失,如果没有备份数据,将无法恢复,确定要继续吗?", + "reset.double.confirm.title": "数据丢失!!!", + "restore.success": "恢复成功", + "save.success.title": "保存成功", + "switch.disabled": "模型回复完成后才能切换", + "topic.added": "话题添加成功", + "upgrade.success.button": "重启", + "upgrade.success.content": "重启用以完成升级", + "upgrade.success.title": "升级成功" + }, + "minapp": { + "title": "小程序" + }, + "model": { + "pinned": "已固定", + "search": "搜索模型...", + "stream_output": "流式输出", + "type": { + "select": "选择模型类型", + "text": "文本", + "vision": "图像" } }, + "ollama": { + "keep_alive_time.description": "对话后模型在内存中保持的时间(默认:5分钟)", + "keep_alive_time.placeholder": "分钟", + "keep_alive_time.title": "保持活跃时间", + "title": "Ollama" + }, + "paintings": { + "button.delete.image": "删除图片", + "button.delete.image.confirm": "确定要删除此图片吗?", + "button.new.image": "新建图片", + "guidance_scale": "引导比例", + "guidance_scale_tip": "无分类器指导。控制模型在寻找相关图像时对提示词的遵循程度", + "image.size": "图片尺寸", + "inference_steps": "推理步数", + "inference_steps_tip": "要执行的推理步数。步数越多,质量越高但耗时越长", + "negative_prompt": "反向提示词", + "negative_prompt_tip": "描述你不想在图片中出现的内容", + "number_images": "生成数量", + "number_images_tip": "一次生成的图片数量 (1-4)", + "prompt_placeholder": "描述你想创建的图片,例如:一个宁静的湖泊,夕阳西下,远处是群山", + "regenerate.confirm": "这将覆盖已生成的图片,是否继续?", + "seed": "随机种子", + "seed_tip": "相同的种子和提示词可以生成相似的图片", + "title": "图片" + }, + "provider": { + "aihubmix": "AiHubMix", + "anthropic": "Anthropic", + "azure-openai": "Azure OpenAI", + "baichuan": "百川", + "dashscope": "阿里云百炼", + "deepseek": "深度求索", + "doubao": "豆包", + "fireworks": "Fireworks", + "gemini": "Gemini", + "github": "GitHub Models", + "graphrag-kylin-mountain": "GraphRAG", + "grok": "Grok", + "groq": "Groq", + "hunyuan": "腾讯混元", + "hyperbolic": "Hyperbolic", + "jina": "Jina", + "minimax": "MiniMax", + "mistral": "Mistral", + "moonshot": "月之暗面", + "nvidia": "英伟达", + "ocoolai": "ocoolAI", + "ollama": "Ollama", + "openai": "OpenAI", + "openrouter": "OpenRouter", + "silicon": "硅基流动", + "stepfun": "阶跃星辰", + "together": "Together", + "yi": "零一万物", + "zhinao": "360智脑", + "zhipu": "智谱AI" + }, + "settings": { + "about": "关于我们", + "about.checkUpdate": "检查更新", + "about.checkingUpdate": "正在检查更新...", + "about.contact.button": "邮件", + "about.contact.title": "邮件联系", + "about.description": "一款为创造者而生的 AI 助手", + "about.downloading": "正在下载更新...", + "about.feedback.button": "反馈", + "about.feedback.title": "意见反馈", + "about.license.button": "查看", + "about.license.title": "许可证", + "about.releases.button": "查看", + "about.releases.title": "更新日志", + "about.title": "关于我们", + "about.updateError": "更新出错", + "about.updateNotAvailable": "你的软件已是最新版本", + "about.website.button": "查看", + "about.website.title": "官方网站", + "advanced.auto_switch_to_topics": "自动切换到话题", + "advanced.title": "高级设置", + "assistant": "默认助手", + "assistant.model_params": "模型参数", + "assistant.title": "默认助手", + "data": { + "app_data": "应用数据", + "app_logs": "应用日志", + "clear_cache": { + "button": "清除缓存", + "confirm": "清除缓存将删除应用缓存的数据,包括小程序数据。此操作不可恢复,是否继续?", + "error": "清除缓存失败", + "success": "缓存清除成功", + "title": "清除缓存" + }, + "data.title": "数据目录", + "title": "数据设置", + "webdav.backup.button": "备份到 WebDAV", + "webdav.host": "WebDAV 地址", + "webdav.host.placeholder": "http://localhost:8080", + "webdav.password": "WebDAV 密码", + "webdav.path": "WebDAV 路径", + "webdav.path.placeholder": "/backup", + "webdav.restore.button": "从 WebDAV 恢复", + "webdav.title": "WebDAV", + "webdav.user": "WebDAV 用户名" + }, + "display.title": "显示设置", + "font_size.title": "消息字体大小", + "general": "常规设置", + "general.backup.button": "备份", + "general.backup.title": "数据备份与恢复", + "general.manually_check_update.title": "关闭更新检测", + "general.reset.button": "重置", + "general.reset.title": "重置数据", + "general.restore.button": "恢复", + "general.title": "常规设置", + "general.user_name": "用户名", + "general.user_name.placeholder": "请输入用户名", + "general.view_webdav_settings": "查看 WebDAV 设置", + "input.auto_translate_with_space": "快速敲击3次空格翻译", + "messages.divider": "消息分割线", + "messages.input.paste_long_text_as_file": "长文本粘贴为文件", + "messages.input.send_shortcuts": "发送快捷键", + "messages.input.show_estimated_tokens": "显示预估 Token 数", + "messages.input.title": "输入设置", + "messages.markdown_rendering_input_message": "Markdown 渲染输入消息", + "messages.math_engine": "数学公式引擎", + "messages.model.title": "模型设置", + "messages.title": "消息设置", + "messages.use_serif_font": "使用衬线字体", + "model": "默认模型", + "models.add.add_model": "添加模型", + "models.add.group_name": "分组名称", + "models.add.group_name.placeholder": "例如 ChatGPT", + "models.add.group_name.tooltip": "例如 ChatGPT", + "models.add.model_id": "模型 ID", + "models.add.model_id.placeholder": "必填 例如 gpt-3.5-turbo", + "models.add.model_id.tooltip": "例如 gpt-3.5-turbo", + "models.add.model_name": "模型名称", + "models.add.model_name.placeholder": "例如 GPT-3.5", + "models.default_assistant_model": "默认助手模型", + "models.default_assistant_model_description": "创建新助手时使用的模型,如果助手未设置模型,则使用此模型", + "models.empty": "没有模型", + "models.topic_naming_model": "话题命名模型", + "models.topic_naming_model_description": "自动命名新话题时使用的模型", + "models.translate_model": "翻译模型", + "models.translate_model_description": "翻译服务使用的模型", + "models.translate_model_prompt_message": "请输入翻译模型提示词", + "models.translate_model_prompt_title": "翻译模型提示词", + "provider": { + "add.name": "提供商名称", + "add.name.placeholder": "例如 OpenAI", + "add.title": "添加提供商", + "add.type": "提供商类型", + "api.url.preview": "预览: {{url}}", + "api.url.reset": "重置", + "api.url.tip": "/结尾忽略v1版本,#结尾制使用输入地址", + "api_host": "API 地址", + "api_key": "API 密钥", + "api_key.tip": "多个密钥使用逗号分隔", + "api_version": "API 版本", + "check": "检查", + "check_all_keys": "检查所有密钥", + "check_multiple_keys": "检查多个 API 密钥", + "delete.content": "确定要删除此模型提供商吗?", + "delete.title": "删除提供商", + "docs_check": "查看", + "docs_more_details": "获取更多详情", + "get_api_key": "点击这里获取密钥", + "no_models": "请先添加模型再检查 API 连接", + "not_checked": "未检查", + "remove_duplicate_keys": "移除重复密钥", + "remove_invalid_keys": "删除无效密钥", + "search_placeholder": "搜索模型 ID 或名称", + "title": "模型服务" + }, + "proxy": { + "mode": { + "custom": "自定义代理", + "none": "不使用代理", + "system": "系统代理", + "title": "代理模式" + }, + "title": "代理设置" + }, + "proxy.title": "代理地址", + "shortcuts": { + "action": "操作", + "key": "按键", + "new_topic": "新建话题", + "title": "快捷方式", + "zoom_in": "放大界面", + "zoom_out": "缩小界面", + "zoom_reset": "重置缩放" + }, + "theme.auto": "跟随系统", + "theme.dark": "深色主题", + "theme.light": "浅色主题", + "theme.title": "主题", + "theme.window.style.opaque": "不透明窗口", + "theme.window.style.title": "窗口样式", + "theme.window.style.transparent": "透明窗口", + "title": "设置", + "topic.position": "话题位置", + "topic.position.left": "左侧", + "topic.position.right": "右侧", + "topic.show.time": "显示话题时间", + "tray.title": "启用系统托盘图标" + }, + "translate": { + "any.language": "任意语言", + "button.translate": "翻译", + "confirm": { + "content": "翻译后将覆盖原文,是否继续?", + "title": "翻译确认" + }, + "error.not_configured": "翻译模型未配置", + "error.failed": "翻译失败", + "input.placeholder": "输入文本进行翻译", + "output.placeholder": "翻译", + "processing": "翻译中...", + "title": "翻译", + "close": "关闭" + }, "tray": { - "show_window": "显示窗口", - "quit": "退出" + "quit": "退出", + "show_window": "显示窗口" + }, + "words": { + "knowledgeGraph": "知识图谱", + "visualization": "可视化" } } } diff --git a/src/renderer/src/i18n/locales/zh-tw.json b/src/renderer/src/i18n/locales/zh-tw.json index 657370a2..00864b0a 100644 --- a/src/renderer/src/i18n/locales/zh-tw.json +++ b/src/renderer/src/i18n/locales/zh-tw.json @@ -1,478 +1,482 @@ { "translation": { - "common": { - "avatar": "頭像", - "language": "語言", - "model": "模型", - "models": "模型", - "topics": "話題", - "docs": "文件", - "and": "與", - "assistant": "智能體", - "name": "名稱", - "description": "描述", - "prompt": "提示詞", - "rename": "重新命名", - "delete": "刪除", - "edit": "編輯", - "duplicate": "複製", - "copy": "複製", - "paste": "貼上", - "cut": "剪下", - "regenerate": "重新生成", - "provider": "提供商", - "you": "您", - "save": "保存", - "footnotes": "引用", - "select": "選擇", - "search": "搜尋", - "default": "預設", - "warning": "警告", - "back": "返回", - "chat": "聊天", - "close": "關閉", - "cancel": "取消", - "download": "下載", - "reset": "重置" - }, - "button": { - "add": "添加", - "added": "已添加", - "manage": "管理", - "select_model": "選擇模型", - "show.all": "顯示全部", - "collapse": "收起" - }, - "message": { - "copied": "已複製", - "assistant.added.content": "智能體添加成功", - "message.delete.title": "刪除訊息", - "message.delete.content": "確定要刪除此訊息嗎?", - "error.enter.api.key": "請先輸入您的 API 密鑰", - "error.enter.api.host": "請先輸入您的 API 主機地址", - "error.enter.model": "請先選擇一個模型", - "error.invalid.proxy.url": "無效的代理 URL", - "error.invalid.webdav": "無效的 WebDAV 設定", - "api.connection.failed": "連接失敗", - "api.connection.success": "連接成功", - "chat.completion.paused": "聊天完成已暫停", - "switch.disabled": "助手生成回覆時無法切換", - "restore.success": "恢復成功", - "backup.success": "備份成功", - "backup.failed": "備份失敗", - "reset.confirm.content": "確定要清除所有資料嗎?", - "reset.double.confirm.title": "資料將會丟失!!!", - "reset.double.confirm.content": "所有資料將會被清除,您確定要繼續嗎?", - "upgrade.success.title": "升級成功", - "upgrade.success.content": "請重新啟動應用以完成升級", - "upgrade.success.button": "重新啟動", - "topic.added": "新話題已添加", - "save.success.title": "保存成功", - "message.code_style": "程式碼風格", - "message.style": "消息樣式", - "message.style.bubble": "氣泡", - "message.style.plain": "簡潔" - }, - "chat": { - "save": "保存", - "default.name": "⭐️ 預設助手", - "default.description": "你好,我是預設助手。你可以立即開始與我聊天。", - "default.topic.name": "預設話題", - "topics.title": "話題", - "topics.auto_rename": "自動重新命名", - "topics.edit.title": "編輯名稱", - "topics.edit.placeholder": "輸入新名稱", - "topics.clear.title": "清空消息", - "topics.move_to": "移動到", - "topics.list": "話題列表", - "topics.export.title": "匯出", - "topics.export.image": "匯出為圖片", - "topics.export.md": "匯出為 Markdown", - "topics.export.word": "導出為 Word", - "input.new_topic": "新話題 {{Command}}+N", - "input.topics": " 話題 ", - "input.clear": "清除", - "input.new.context": "清除上下文", - "input.expand": "展開", - "input.collapse": "收起", - "input.clear.title": "清除所有訊息?", - "input.clear.content": "您想要清除當前話題的所有訊息嗎?", - "input.placeholder": "在此輸入您的訊息...", - "input.send": "發送", - "input.pause": "暫停", - "input.settings": "設定", - "input.upload": "上傳圖片或文檔", - "input.context_count.tip": "上下文數量", - "input.estimated_tokens.tip": "預估 Token 數", - "input.translate": "翻譯成英文", - "settings.temperature": "溫度", - "settings.temperature.tip": "較低的值使模型更具創造性和不可預測性,較高的值則使其更具確定性和精確性。", - "settings.context_count": "上下文", - "settings.context_count.tip": "在上下文中保留的前幾則訊息。", - "settings.max_tokens": "啟用最大 Token 限制", - "settings.max_tokens.tip": "模型可以生成的最大 Token 數。普通聊天建議 500-800。短文生成建議 800-2000。代碼生成建議 2000-3600。長文生成建議超過 4000。", - "settings.reset": "重置", - "settings.set_as_default": "設為預設助手", - "settings.max": "最大", - "settings.show_line_numbers": "代码顯示行號", - "settings.code_collapsible": "代码块可折叠", - "suggestions.title": "建議的問題", - "add.assistant.title": "添加助手", - "message.new.context": "新上下文", - "message.new.branch": "新分支", - "message.new.branch.created": "新分支已建立", - "assistant.search.placeholder": "搜尋", - "artifacts.button.preview": "預覽", - "artifacts.button.download": "下載" - }, - "assistants": { - "title": "助手", - "abbr": "助", - "search": "搜尋助手...", - "settings.prompt": "提示詞設定", - "settings.model": "模型設定", - "settings.preset_messages": "預設訊息", - "settings.default_model": "預設模型", - "settings.auto_reset_model": "自動重置模型", - "settings.auto_reset_model.tip": "每次新的話題時自動重置模型", - "edit.title": "編輯助手", - "copy.title": "複製助手", - "clear.title": "清空話題", - "clear.content": "清空話題會刪除助手下所有主題和文件,確定要繼續嗎?", - "save.title": "儲存到智能體", - "save.success": "儲存成功", - "delete.title": "删除助手", - "delete.content": "删除助手会删除所有该助手下的话题和文件,确定要繼續吗?" - }, - "model": { - "stream_output": "串流輸出", - "search": "搜尋模型...", - "pinned": "已固定", - "type": { - "text": "文字", - "vision": "圖像", - "select": "選擇模型類型" - } - }, - "paintings": { - "title": "繪圖", - "image.size": "影像尺寸", - "button.new.image": "新繪圖", - "button.delete.image": "刪除繪圖", - "button.delete.image.confirm": "確定要刪除此繪圖嗎?", - "number_images": "生成數量", - "number_images_tip": "一次生成的圖片數量 (1-4)", - "seed": "隨機種子", - "seed_tip": "相同的種子和提示詞可以生成相似的圖片", - "inference_steps": "推理步數", - "inference_steps_tip": "要執行的推理步數。步數越多,質量越高但耗時越長", - "guidance_scale": "引導比例", - "guidance_scale_tip": "無分類器指導。控制模型在尋找相關圖像時對提示詞的遵循程度", - "negative_prompt": "反向提示詞", - "negative_prompt_tip": "描述你不想在圖片中出現的內容", - "prompt_placeholder": "描述你想創建的圖片,例如:一個寧靜的湖泊,夕陽西下,遠處是群山", - "regenerate.confirm": "這將覆蓋已生成的圖片,是否繼續?" - }, - "files": { - "title": "檔案", - "file": "檔案", - "name": "名稱", - "size": "大小", - "count": "數量", - "created_at": "建立時間", - "image": "圖片", - "text": "文本", - "document": "文檔", - "actions": "操作", - "open": "打開", - "all": "所有檔案" - }, "agents": { - "title": "智能體", - "my_agents": "我的智能體", - "add.title": "创建智能體", - "edit.title": "編輯智能體", + "add.button": "添加到助手", "add.name": "名稱", "add.name.placeholder": "輸入名稱", "add.prompt": "提示詞", "add.prompt.placeholder": "輸入提示詞", - "add.button": "添加到助手", - "manage.title": "管理智能體", + "add.title": "创建智能體", "delete.popup.content": "確定要刪除此智能體嗎?", - "tag.default": "預設", - "tag.system": "系統", - "tag.agent": "智能体", - "tag.new": "新建", - "edit.message.title": "預設訊息", "edit.message.add.title": "添加", - "edit.message.group.title": "訊息組", - "edit.message.assistant.title": "助手", "edit.message.assistant.placeholder": "輸入助手消息", - "edit.message.user.title": "用戶", - "edit.message.user.placeholder": "輸入用戶消息", + "edit.message.assistant.title": "助手", "edit.message.empty.content": "會話輸入內容不能為空", + "edit.message.group.title": "訊息組", + "edit.message.title": "預設訊息", + "edit.message.user.placeholder": "輸入用戶消息", + "edit.message.user.title": "用戶", "edit.model.select.title": "選擇模型", "edit.settings.hide_preset_messages": "隱藏預設消息", + "edit.title": "編輯智能體", + "manage.title": "管理智能體", + "my_agents": "我的智能體", "search.no_results": "沒有找到相關智能體", - "sorting.title": "排序" + "sorting.title": "排序", + "tag.agent": "智能体", + "tag.default": "預設", + "tag.new": "新建", + "tag.system": "系統", + "title": "智能體" }, - "minapp": { - "title": "小程序" + "assistants": { + "abbr": "助", + "clear.content": "清空話題會刪除助手下所有主題和文件,確定要繼續嗎?", + "clear.title": "清空話題", + "copy.title": "複製助手", + "delete.content": "删除助手会删除所有该助手下的话题和文件,确定要繼續吗?", + "delete.title": "删除助手", + "edit.title": "編輯助手", + "save.success": "儲存成功", + "save.title": "儲存到智能體", + "search": "搜尋助手...", + "settings.auto_reset_model": "自動重置模型", + "settings.auto_reset_model.tip": "每次新的話題時自動重置模型", + "settings.default_model": "預設模型", + "settings.model": "模型設定", + "settings.preset_messages": "預設訊息", + "settings.prompt": "提示詞設定", + "title": "助手" }, - "history": { - "title": "搜尋話題", - "search.placeholder": "搜尋話題或訊息...", - "continue_chat": "繼續聊天", - "search.topics.empty": "沒有找到相關話題, 點擊回車鍵搜尋所有訊息", - "search.messages": "搜尋所有訊息", - "locate.message": "定位到訊息" + "button": { + "add": "添加", + "added": "已添加", + "collapse": "收起", + "manage": "管理", + "select_model": "選擇模型", + "show.all": "顯示全部" }, - "provider": { - "jina": "Jina", - "mistral": "Mistral", - "hyperbolic": "Hyperbolic", - "grok": "Grok", - "nvidia": "輝達", - "zhinao": "360智腦", - "hunyuan": "騰訊混元", - "fireworks": "Fireworks", - "together": "Together", - "openai": "OpenAI", - "gemini": "Gemini", - "deepseek": "深度求索", - "moonshot": "月之暗面", - "silicon": "SiliconFlow", - "openrouter": "OpenRouter", - "yi": "零一萬物", - "zhipu": "智譜AI", - "groq": "Groq", - "ollama": "Ollama", - "baichuan": "百川", - "dashscope": "阿里雲百鍊", - "anthropic": "Anthropic", - "aihubmix": "AiHubMix", - "stepfun": "StepFun", - "doubao": "豆包", - "minimax": "MiniMax", - "graphrag-kylin-mountain": "GraphRAG", - "github": "GitHub Models", - "ocoolai": "ocoolAI", - "azure-openai": "Azure OpenAI" + "chat": { + "add.assistant.title": "添加助手", + "artifacts.button.download": "下載", + "artifacts.button.preview": "預覽", + "assistant.search.placeholder": "搜尋", + "default.description": "你好,我是預設助手。你可以立即開始與我聊天。", + "default.name": "⭐️ 預設助手", + "default.topic.name": "預設話題", + "input.clear": "清除", + "input.clear.content": "您想要清除當前話題的所有訊息嗎?", + "input.clear.title": "清除所有訊息?", + "input.collapse": "收起", + "input.context_count.tip": "上下文數量", + "input.estimated_tokens.tip": "預估 Token 數", + "input.expand": "展開", + "input.new.context": "清除上下文", + "input.new_topic": "新話題 {{Command}}+N", + "input.pause": "暫停", + "input.placeholder": "在此輸入您的訊息...", + "input.send": "發送", + "input.settings": "設定", + "input.topics": " 話題 ", + "input.translate": "翻譯成英文", + "input.upload": "上傳圖片或文檔", + "message.new.branch": "新分支", + "message.new.branch.created": "新分支已建立", + "message.new.context": "新上下文", + "save": "保存", + "settings.code_collapsible": "代码块可折叠", + "settings.context_count": "上下文", + "settings.context_count.tip": "在上下文中保留的前幾則訊息。", + "settings.max": "最大", + "settings.max_tokens": "啟用最大 Token 限制", + "settings.max_tokens.tip": "模型可以生成的最大 Token 數。普通聊天建議 500-800。短文生成建議 800-2000。代碼生成建議 2000-3600。長文生成建議超過 4000。", + "settings.reset": "重置", + "settings.set_as_default": "設為預設助手", + "settings.show_line_numbers": "代码顯示行號", + "settings.temperature": "溫度", + "settings.temperature.tip": "較低的值使模型更具創造性和不可預測性,較高的值則使其更具確定性和精確性。", + "suggestions.title": "建議的問題", + "topics.auto_rename": "自動重新命名", + "topics.clear.title": "清空消息", + "topics.edit.placeholder": "輸入新名稱", + "topics.edit.title": "編輯名稱", + "topics.export.image": "匯出為圖片", + "topics.export.md": "匯出為 Markdown", + "topics.export.title": "匯出", + "topics.export.word": "導出為 Word", + "topics.list": "話題列表", + "topics.move_to": "移動到", + "topics.title": "話題", + "translate": "翻譯" }, - "settings": { - "title": "設定", - "general": "一般設定", - "model": "預設模型", - "assistant": "預設助手", - "about": "關於與回饋", - "messages.model.title": "模型設定", - "messages.title": "訊息設定", - "messages.divider": "訊息間顯示分隔線", - "messages.use_serif_font": "使用襯線字體", - "messages.input.title": "輸入設定", - "messages.input.show_estimated_tokens": "顯示預估 Token 數", - "messages.input.send_shortcuts": "發送快捷鍵", - "messages.input.paste_long_text_as_file": "將長文本貼上為檔案", - "messages.math_engine": "Markdown 渲染輸入訊息", - "messages.math_render_engine": "數學公式引擎", - "general.title": "一般設定", - "general.user_name": "使用者名稱", - "general.user_name.placeholder": "輸入您的名稱", - "general.backup.title": "資料備份與復原", - "general.backup.button": "備份", - "general.restore.button": "復原", - "general.view_webdav_settings": "查看 WebDAV 設定", - "general.reset.title": "資料重置", - "general.reset.button": "重置", - "general.manually_check_update.title": "關閉更新檢查", - "advanced.title": "進階設定", - "advanced.auto_switch_to_topics": "自動切換到話題", - "models.default_assistant_model": "預設助手模型", - "models.default_assistant_model_description": "創建新助手時使用的模型,如果助手未設置模型,則使用此模型", - "models.topic_naming_model": "話題命名模型", - "models.topic_naming_model_description": "自動命名新話題時使用的模型", - "models.translate_model": "翻譯模型", - "models.translate_model_description": "翻譯服務使用的模型", - "models.add.add_model": "添加模型", - "models.add.model_id.placeholder": "必填,例如 gpt-3.5-turbo", - "models.add.model_id": "模型 ID", - "models.add.model_id.tooltip": "例如 gpt-3.5-turbo", - "models.add.model_name": "模型名稱", - "models.add.model_name.placeholder": "可選,例如 GPT-4", - "models.add.group_name": "群組名稱", - "models.add.group_name.tooltip": "可選,例如 ChatGPT", - "models.add.group_name.placeholder": "可選,例如 ChatGPT", - "models.translate_model_prompt_title": "翻譯模型提示詞", - "models.translate_model_prompt_message": "請輸入翻譯模型提示詞", - "models.empty": "找不到模型", - "assistant.title": "預設助手", - "assistant.model_params": "模型參數", - "about.description": "一款為創作者而生的強大 AI 助手", - "about.updateNotAvailable": "您正在使用最新版本", - "about.checkingUpdate": "正在檢查更新...", - "about.updateError": "更新錯誤", - "about.checkUpdate": "檢查更新", - "about.downloading": "正在下載...", - "about.title": "關於我們", - "about.releases.title": "更新日誌", - "about.releases.button": "查看", - "about.website.title": "官方網站", - "about.website.button": "網站", - "about.feedback.title": "回饋", - "about.feedback.button": "回饋", - "about.contact.title": "聯繫方式", - "about.license.title": "許可證", - "about.license.button": "查看", - "about.contact.button": "郵件", - "proxy.title": "代理地址", - "tray.title": "啟用系統托盤圖標", - "theme.title": "主題", - "theme.dark": "深色主題", - "theme.light": "淺色主題", - "theme.auto": "自動", - "theme.window.style.title": "視窗樣式", - "theme.window.style.transparent": "透明視窗", - "theme.window.style.opaque": "不透明視窗", - "font_size.title": "訊息字體大小", - "topic.position": "話題位置", - "topic.position.left": "左側", - "topic.position.right": "右側", - "topic.show.time": "顯示話題時間", - "display.title": "顯示設定", - "input.auto_translate_with_space": "快速敲擊3次空格翻譯", - "shortcuts": { - "title": "快速方式", - "action": "操作", - "key": "按鍵", - "new_topic": "新建話題", - "zoom_in": "放大界面", - "zoom_out": "縮小界面", - "zoom_reset": "重置縮放" - }, - "provider": { - "title": "模型提供者", - "api_key": "API 密鑰", - "api_key.tip": "多個密鑰使用逗號分隔", - "check": "檢查", - "get_api_key": "獲取 API 密鑰", - "api_host": "API 主機地址", - "api_version": "API 版本", - "docs_check": "檢查", - "docs_more_details": "查看更多細節", - "search_placeholder": "搜尋模型 ID 或名稱", - "api.url.reset": "重置", - "api.url.preview": "預覽: {{url}}", - "api.url.tip": "/結尾忽略v1版本,#結尾強制使用輸入位址", - "check_multiple_keys": "檢查多個 API 密鑰", - "check_all_keys": "檢查所有密鑰", - "remove_invalid_keys": "刪除無效密鑰", - "remove_duplicate_keys": "移除重複密鑰", - "not_checked": "未檢查", - "delete.title": "刪除提供者", - "delete.content": "確定要刪除此提供者嗎?", - "add.title": "添加提供者", - "add.name": "提供者名稱", - "add.name.placeholder": "例如:OpenAI", - "add.type": "提供商類型", - "no_models": "請先添加模型再檢查 API 連接" - }, - "proxy": { - "title": "代理設定", - "mode": { - "title": "代理模式", - "system": "系統代理", - "custom": "自定義代理", - "none": "不使用代理" - } - }, - "data": { - "title": "數據設定", - "webdav.title": "WebDAV", - "webdav.host": "WebDAV 主機位址", - "webdav.host.placeholder": "http://localhost:8080", - "webdav.user": "WebDAV 使用者名稱", - "webdav.password": "WebDAV 密碼", - "webdav.path": "WebDAV Path", - "webdav.path.placeholder": "/backup", - "webdav.backup.button": "從 WebDAV 備份", - "webdav.restore.button": "從 WebDAV 恢復", - "data.title": "數據目錄", - "data.app_data": "應用數據", - "data.app_logs": "應用日誌", - "clear_cache": { - "title": "清除緩存", - "button": "清除緩存", - "confirm": "清除緩存將刪除應用緩存數據,包括小程序數據。此操作不可恢復,是否繼續?", - "success": "緩存清除成功", - "error": "清除緩存失敗" - } - } - }, - "translate": { - "title": "翻譯", - "any.language": "任意語言", - "button.translate": "翻譯", - "error.not_configured": "翻譯模型未配置", - "input.placeholder": "輸入文字進行翻譯", - "output.placeholder": "翻譯", - "confirm": { - "title": "翻譯確認", - "content": "翻譯後將覆蓋原文,是否繼續?" - } - }, - "languages": { - "english": "英文", - "chinese": "簡體中文", - "chinese-traditional": "繁體中文", - "japanese": "日文", - "korean": "韓文", - "russian": "俄文", - "spanish": "西班牙文", - "french": "法文", - "italian": "意大利文", - "portuguese": "葡萄牙文", - "arabic": "阿拉伯文" - }, - "ollama": { - "title": "Ollama", - "keep_alive_time.title": "保持活躍時間", - "keep_alive_time.placeholder": "分鐘", - "keep_alive_time.description": "對話後模型在記憶體中保持的時間(預設為 5 分鐘)。" + "common": { + "and": "與", + "assistant": "智能體", + "avatar": "頭像", + "back": "返回", + "cancel": "取消", + "chat": "聊天", + "close": "關閉", + "copy": "複製", + "cut": "剪下", + "default": "預設", + "delete": "刪除", + "description": "描述", + "docs": "文件", + "download": "下載", + "duplicate": "複製", + "edit": "編輯", + "footnotes": "引用", + "language": "語言", + "model": "模型", + "models": "模型", + "name": "名稱", + "paste": "貼上", + "prompt": "提示詞", + "provider": "提供商", + "regenerate": "重新生成", + "rename": "重新命名", + "reset": "重置", + "save": "保存", + "search": "搜尋", + "select": "選擇", + "topics": "話題", + "warning": "警告", + "you": "您" }, "error": { - "chat.response": "出現錯誤。如果尚未配置 API 密鑰,請前往設定 > 模型提供者中配置密鑰", "backup.file_format": "備份文件格式錯誤", - "provider_disabled": "模型提供商未啟用", - "no_api_key": "API 密鑰未配置" - }, - "words": { - "knowledgeGraph": "知識圖譜", - "visualization": "可視化" + "chat.response": "出現錯誤。如果尚未配置 API 密鑰,請前往設定 > 模型提供者中配置密鑰", + "no_api_key": "API 密鑰未配置", + "provider_disabled": "模型提供商未啟用" }, "export": { - "attached_files": "附件", - "user": "用戶", "assistant": "助手", + "attached_files": "附件", + "conversation_details": "會話詳情", + "conversation_history": "會話歷史", "created": "創建時間", "last_updated": "最後��新", "messages": "訊息數", - "conversation_details": "會話詳情", - "conversation_history": "會話歷史" + "user": "用戶" + }, + "files": { + "actions": "操作", + "all": "所有檔案", + "count": "數量", + "created_at": "建立時間", + "document": "文檔", + "file": "檔案", + "image": "圖片", + "name": "名稱", + "open": "打開", + "size": "大小", + "text": "文本", + "title": "檔案" + }, + "history": { + "continue_chat": "繼續聊天", + "locate.message": "定位到訊息", + "search.messages": "搜尋所有訊息", + "search.placeholder": "搜尋話題或訊息...", + "search.topics.empty": "沒有找到相關話題, 點擊回車鍵搜尋所有訊息", + "title": "搜尋話題" + }, + "languages": { + "arabic": "阿拉伯文", + "chinese": "簡體中文", + "chinese-traditional": "繁體中文", + "english": "英文", + "french": "法文", + "italian": "意大利文", + "japanese": "日文", + "korean": "韓文", + "portuguese": "葡萄牙文", + "russian": "俄文", + "spanish": "西班牙文" }, "mermaid": { - "title": "Mermaid 圖表", "download": { - "svg": "下載 SVG", - "png": "下載 PNG" + "png": "下載 PNG", + "svg": "下載 SVG" }, "tabs": { "preview": "預覽", "source": "原始碼" + }, + "title": "Mermaid 圖表" + }, + "message": { + "api.connection.failed": "連接失敗", + "api.connection.success": "連接成功", + "assistant.added.content": "智能體添加成功", + "backup.failed": "備份失敗", + "backup.success": "備份成功", + "chat.completion.paused": "聊天完成已暫停", + "copied": "已複製", + "error.enter.api.host": "請先輸入您的 API 主機地址", + "error.enter.api.key": "請先輸入您的 API 密鑰", + "error.enter.model": "請先選擇一個模型", + "error.invalid.proxy.url": "無效的代理 URL", + "error.invalid.webdav": "無效的 WebDAV 設定", + "message.code_style": "程式碼風格", + "message.delete.content": "確定要刪除此訊息嗎?", + "message.delete.title": "刪除訊息", + "message.style": "消息樣式", + "message.style.bubble": "氣泡", + "message.style.plain": "簡潔", + "reset.confirm.content": "確定要清除所有資料嗎?", + "reset.double.confirm.content": "所有資料將會被清除,您確定要繼續嗎?", + "reset.double.confirm.title": "資料將會丟失!!!", + "restore.success": "恢復成功", + "save.success.title": "保存成功", + "switch.disabled": "助手生成回覆時無法切換", + "topic.added": "新話題已添加", + "upgrade.success.button": "重新啟動", + "upgrade.success.content": "請重新啟動應用以完成升級", + "upgrade.success.title": "升級成功" + }, + "minapp": { + "title": "小程序" + }, + "model": { + "pinned": "已固定", + "search": "搜尋模型...", + "stream_output": "串流輸出", + "type": { + "select": "選擇模型類型", + "text": "文字", + "vision": "圖像" } }, + "ollama": { + "keep_alive_time.description": "對話後模型在記憶體中保持的時間(預設為 5 分鐘)。", + "keep_alive_time.placeholder": "分鐘", + "keep_alive_time.title": "保持活躍時間", + "title": "Ollama" + }, + "paintings": { + "button.delete.image": "刪除繪圖", + "button.delete.image.confirm": "確定要刪除此繪圖嗎?", + "button.new.image": "新繪圖", + "guidance_scale": "引導比例", + "guidance_scale_tip": "無分類器指導。控制模型在尋找相關圖像時對提示詞的遵循程度", + "image.size": "影像尺寸", + "inference_steps": "推理步數", + "inference_steps_tip": "要執行的推理步數。步數越多,質量越高但耗時越長", + "negative_prompt": "反向提示詞", + "negative_prompt_tip": "描述你不想在圖片中出現的內容", + "number_images": "生成數量", + "number_images_tip": "一次生成的圖片數量 (1-4)", + "prompt_placeholder": "描述你想創建的圖片,例如:一個寧靜的湖泊,夕陽西下,遠處是群山", + "regenerate.confirm": "這將覆蓋已生成的圖片,是否繼續?", + "seed": "隨機種子", + "seed_tip": "相同的種子和提示詞可以生成相似的圖片", + "title": "繪圖" + }, + "provider": { + "aihubmix": "AiHubMix", + "anthropic": "Anthropic", + "azure-openai": "Azure OpenAI", + "baichuan": "百川", + "dashscope": "阿里雲百鍊", + "deepseek": "深度求索", + "doubao": "豆包", + "fireworks": "Fireworks", + "gemini": "Gemini", + "github": "GitHub Models", + "graphrag-kylin-mountain": "GraphRAG", + "grok": "Grok", + "groq": "Groq", + "hunyuan": "騰訊混元", + "hyperbolic": "Hyperbolic", + "jina": "Jina", + "minimax": "MiniMax", + "mistral": "Mistral", + "moonshot": "月之暗面", + "nvidia": "輝達", + "ocoolai": "ocoolAI", + "ollama": "Ollama", + "openai": "OpenAI", + "openrouter": "OpenRouter", + "silicon": "SiliconFlow", + "stepfun": "StepFun", + "together": "Together", + "yi": "零一萬物", + "zhinao": "360智腦", + "zhipu": "智譜AI" + }, + "settings": { + "about": "關於與回饋", + "about.checkUpdate": "檢查更新", + "about.checkingUpdate": "正在檢查更新...", + "about.contact.button": "郵件", + "about.contact.title": "聯繫方式", + "about.description": "一款為創作者而生的強大 AI 助手", + "about.downloading": "正在下載...", + "about.feedback.button": "回饋", + "about.feedback.title": "回饋", + "about.license.button": "查看", + "about.license.title": "許可證", + "about.releases.button": "查看", + "about.releases.title": "更新日誌", + "about.title": "關於我們", + "about.updateError": "更新錯誤", + "about.updateNotAvailable": "您正在使用最新版本", + "about.website.button": "網站", + "about.website.title": "官方網站", + "advanced.auto_switch_to_topics": "自動切換到話題", + "advanced.title": "進階設定", + "assistant": "預設助手", + "assistant.model_params": "模型參數", + "assistant.title": "預設助手", + "data": { + "clear_cache": { + "button": "清除緩存", + "confirm": "清除緩存將刪除應用緩存數據,包括小程序數據。此操作不可恢復,是否繼續?", + "error": "清除緩存失敗", + "success": "緩存清除成功", + "title": "清除緩存" + }, + "data.app_data": "應用數據", + "data.app_logs": "應用日誌", + "data.title": "數據目錄", + "title": "數據設定", + "webdav.backup.button": "從 WebDAV 備份", + "webdav.host": "WebDAV 主機位址", + "webdav.host.placeholder": "http://localhost:8080", + "webdav.password": "WebDAV 密碼", + "webdav.path": "WebDAV Path", + "webdav.path.placeholder": "/backup", + "webdav.restore.button": "從 WebDAV 恢復", + "webdav.title": "WebDAV", + "webdav.user": "WebDAV 使用者名稱" + }, + "display.title": "顯示設定", + "font_size.title": "訊息字體大小", + "general": "一般設定", + "general.backup.button": "備份", + "general.backup.title": "資料備份與復原", + "general.manually_check_update.title": "關閉更新檢查", + "general.reset.button": "重置", + "general.reset.title": "資料重置", + "general.restore.button": "復原", + "general.title": "一般設定", + "general.user_name": "使用者名稱", + "general.user_name.placeholder": "輸入您的名稱", + "general.view_webdav_settings": "查看 WebDAV 設定", + "input.auto_translate_with_space": "快速敲擊3次空格翻譯", + "messages.divider": "訊息間顯示分隔線", + "messages.input.paste_long_text_as_file": "將長文本貼上為檔案", + "messages.input.send_shortcuts": "發送快捷鍵", + "messages.input.show_estimated_tokens": "顯示預估 Token 數", + "messages.input.title": "輸入設定", + "messages.math_engine": "Markdown 渲染輸入訊息", + "messages.math_render_engine": "數學公式引擎", + "messages.model.title": "模型設定", + "messages.title": "訊息設定", + "messages.use_serif_font": "使用襯線字體", + "model": "預設模型", + "models.add.add_model": "添加模型", + "models.add.group_name": "群組名稱", + "models.add.group_name.placeholder": "可選,例如 ChatGPT", + "models.add.group_name.tooltip": "可選,例如 ChatGPT", + "models.add.model_id": "模型 ID", + "models.add.model_id.placeholder": "必填,例如 gpt-3.5-turbo", + "models.add.model_id.tooltip": "例如 gpt-3.5-turbo", + "models.add.model_name": "模型名稱", + "models.add.model_name.placeholder": "可選,例如 GPT-4", + "models.default_assistant_model": "預設助手模型", + "models.default_assistant_model_description": "創建新助手時使用的模型,如果助手未設置模型,則使用此模型", + "models.empty": "找不到模型", + "models.topic_naming_model": "話題命名模型", + "models.topic_naming_model_description": "自動命名新話題時使用的模型", + "models.translate_model": "翻譯模型", + "models.translate_model_description": "翻譯服務使用的模型", + "models.translate_model_prompt_message": "請輸入翻譯模型提示詞", + "models.translate_model_prompt_title": "翻譯模型提示詞", + "provider": { + "add.name": "提供者名稱", + "add.name.placeholder": "例如:OpenAI", + "add.title": "添加提供者", + "add.type": "提供商類型", + "api.url.preview": "預覽: {{url}}", + "api.url.reset": "重置", + "api.url.tip": "/結尾忽略v1版本,#結尾強制使用輸入位址", + "api_host": "API 主機地址", + "api_key": "API 密鑰", + "api_key.tip": "多個密鑰使用逗號分隔", + "api_version": "API 版本", + "check": "檢查", + "check_all_keys": "檢查所有密鑰", + "check_multiple_keys": "檢查多個 API 密鑰", + "delete.content": "確定要刪除此提供者嗎?", + "delete.title": "刪除提供者", + "docs_check": "檢查", + "docs_more_details": "查看更多細節", + "get_api_key": "獲取 API 密鑰", + "no_models": "請先添加模型再檢查 API 連接", + "not_checked": "未檢查", + "remove_duplicate_keys": "移除重複密鑰", + "remove_invalid_keys": "刪除無效密鑰", + "search_placeholder": "搜尋模型 ID 或名稱", + "title": "模型提供者" + }, + "proxy": { + "mode": { + "custom": "自定義代理", + "none": "不使用代理", + "system": "系統代理", + "title": "代理模式" + }, + "title": "代理設定" + }, + "proxy.title": "代理地址", + "shortcuts": { + "action": "操作", + "key": "按鍵", + "new_topic": "新建話題", + "title": "快速方式", + "zoom_in": "放大界面", + "zoom_out": "縮小界面", + "zoom_reset": "重置縮放" + }, + "theme.auto": "自動", + "theme.dark": "深色主題", + "theme.light": "淺色主題", + "theme.title": "主題", + "theme.window.style.opaque": "不透明視窗", + "theme.window.style.title": "視窗樣式", + "theme.window.style.transparent": "透明視窗", + "title": "設定", + "topic.position": "話題位置", + "topic.position.left": "左側", + "topic.position.right": "右側", + "topic.show.time": "顯示話題時間", + "tray.title": "啟用系統托盤圖標" + }, + "translate": { + "any.language": "任意語言", + "button.translate": "翻譯", + "confirm": { + "content": "翻譯後將覆蓋原文,是否繼續?", + "title": "翻譯確認" + }, + "error.not_configured": "翻譯模型未配置", + "error.failed": "翻譯失敗", + "input.placeholder": "輸入文字進行翻譯", + "output.placeholder": "翻譯", + "processing": "翻譯中...", + "title": "翻譯", + "close": "關閉" + }, "tray": { - "show_window": "顯示視窗", - "quit": "退出" + "quit": "退出", + "show_window": "顯示視窗" + }, + "words": { + "knowledgeGraph": "知識圖譜", + "visualization": "可視化" } } } diff --git a/src/renderer/src/pages/home/Inputbar/Inputbar.tsx b/src/renderer/src/pages/home/Inputbar/Inputbar.tsx index 19df5691..dace0db0 100644 --- a/src/renderer/src/pages/home/Inputbar/Inputbar.tsx +++ b/src/renderer/src/pages/home/Inputbar/Inputbar.tsx @@ -352,6 +352,10 @@ const Inputbar: FC = ({ assistant, setActiveTopic }) => { textareaRef.current?.focus() }, [assistant]) + useEffect(() => { + setTimeout(() => resizeTextArea(), 0) + }, []) + useEffect(() => { return () => { if (spaceClickTimer.current) { diff --git a/src/renderer/src/pages/home/Messages/MessageContent.tsx b/src/renderer/src/pages/home/Messages/MessageContent.tsx index 5aa0f8ff..9f807ff7 100644 --- a/src/renderer/src/pages/home/Messages/MessageContent.tsx +++ b/src/renderer/src/pages/home/Messages/MessageContent.tsx @@ -1,7 +1,10 @@ -import { SyncOutlined } from '@ant-design/icons' +import { SyncOutlined, TranslationOutlined } from '@ant-design/icons' import { Message, Model } from '@renderer/types' import { getBriefInfo } from '@renderer/utils' +import { Divider } from 'antd' import React from 'react' +import { useTranslation } from 'react-i18next' +import BeatLoader from 'react-spinners/BeatLoader' import styled from 'styled-components' import Markdown from '../Markdown/Markdown' @@ -12,6 +15,8 @@ const MessageContent: React.FC<{ message: Message model?: Model }> = ({ message, model }) => { + const { t } = useTranslation() + if (message.status === 'sending') { return ( @@ -32,6 +37,18 @@ const MessageContent: React.FC<{ return ( <> + {message.translatedContent && ( + <> + + + + {message.translatedContent === t('translate.processing') ? ( + + ) : ( + + )} + + )} ) diff --git a/src/renderer/src/pages/home/Messages/MessageMenubar.tsx b/src/renderer/src/pages/home/Messages/MessageMenubar.tsx index 575b25ec..89089ee3 100644 --- a/src/renderer/src/pages/home/Messages/MessageMenubar.tsx +++ b/src/renderer/src/pages/home/Messages/MessageMenubar.tsx @@ -6,11 +6,14 @@ import { MenuOutlined, QuestionCircleOutlined, SaveOutlined, - SyncOutlined + SyncOutlined, + TranslationOutlined } from '@ant-design/icons' import SelectModelPopup from '@renderer/components/Popups/SelectModelPopup' import TextEditPopup from '@renderer/components/Popups/TextEditPopup' +import { useDefaultModel } from '@renderer/hooks/useAssistant' import { EVENT_NAMES, EventEmitter } from '@renderer/services/EventService' +import { translateText } from '@renderer/services/TranslateService' import { Message, Model } from '@renderer/types' import { removeTrailingDoubleSpaces } from '@renderer/utils' import { Dropdown, Popconfirm, Tooltip } from 'antd' @@ -34,6 +37,8 @@ const MessageMenubar: FC = (props) => { const { message, index, model, isLastMessage, isAssistantMessage, setModel, onEditMessage, onDeleteMessage } = props const { t } = useTranslation() const [copied, setCopied] = useState(false) + const { translateModel } = useDefaultModel() + const [isTranslating, setIsTranslating] = useState(false) const isUserMessage = message.role === 'user' const canRegenerate = isLastMessage && isAssistantMessage @@ -66,6 +71,28 @@ const MessageMenubar: FC = (props) => { editedText && onEditMessage?.({ ...message, content: editedText }) }, [message, onEditMessage]) + const handleTranslate = async (language: string) => { + if (isTranslating) return + + onEditMessage?.({ ...message, translatedContent: t('translate.processing') }) + + setIsTranslating(true) + + try { + const translatedText = await translateText(message.content, language) + onEditMessage?.({ ...message, translatedContent: translatedText }) + } catch (error) { + console.error('Translation failed:', error) + window.message.error({ + content: t('translate.error.failed'), + key: 'translate-message' + }) + onEditMessage?.({ ...message, translatedContent: undefined }) + } finally { + setIsTranslating(false) + } + } + const dropdownItems = useMemo( () => [ { @@ -82,9 +109,51 @@ const MessageMenubar: FC = (props) => { key: 'edit', icon: , onClick: onEdit + }, + { + label: t('chat.translate'), + key: 'translate', + icon: isTranslating ? : , + children: [ + { + label: '🇨🇳 ' + t('languages.chinese'), + key: 'translate-chinese', + onClick: () => handleTranslate('chinese') + }, + { + label: '🇹🇼 ' + t('languages.chinese-traditional'), + key: 'translate-chinese-traditional', + onClick: () => handleTranslate('chinese-traditional') + }, + { + label: '🇬🇧 ' + t('languages.english'), + key: 'translate-english', + onClick: () => handleTranslate('english') + }, + { + label: '🇯🇵 ' + t('languages.japanese'), + key: 'translate-japanese', + onClick: () => handleTranslate('japanese') + }, + { + label: '🇰🇷 ' + t('languages.korean'), + key: 'translate-korean', + onClick: () => handleTranslate('korean') + }, + { + label: '🇷🇺 ' + t('languages.russian'), + key: 'translate-russian', + onClick: () => handleTranslate('russian') + }, + { + label: '✖ ' + t('translate.close'), + key: 'translate-close', + onClick: () => onEditMessage?.({ ...message, translatedContent: undefined }) + } + ] } ], - [message.content, message.createdAt, onEdit, t] + [handleTranslate, isTranslating, message, onEdit, onEditMessage, t] ) const onSelectModel = async () => { diff --git a/src/renderer/src/services/TranslateService.ts b/src/renderer/src/services/TranslateService.ts index 10e53639..7bf94d76 100644 --- a/src/renderer/src/services/TranslateService.ts +++ b/src/renderer/src/services/TranslateService.ts @@ -1,15 +1,30 @@ +import i18n from '@renderer/i18n' +import store from '@renderer/store' + import { fetchTranslate } from './ApiService' import { getDefaultTopic } from './AssistantService' import { getDefaultTranslateAssistant } from './AssistantService' import { getUserMessage } from './MessagesService' export const translateText = async (text: string, targetLanguage: string) => { + const translateModel = store.getState().llm.translateModel + + if (!translateModel) { + window.message.error({ + content: i18n.t('translate.error.not_configured'), + key: 'translate-message' + }) + return Promise.reject(new Error(i18n.t('translate.error.not_configured'))) + } + const assistant = getDefaultTranslateAssistant(targetLanguage, text) const message = getUserMessage({ assistant, topic: getDefaultTopic('default'), type: 'text' }) + const translatedText = await fetchTranslate({ message, assistant }) + return translatedText } diff --git a/src/renderer/src/types/index.ts b/src/renderer/src/types/index.ts index 2ce5ff28..77e6874e 100644 --- a/src/renderer/src/types/index.ts +++ b/src/renderer/src/types/index.ts @@ -37,6 +37,7 @@ export type Message = { assistantId: string role: 'user' | 'assistant' content: string + translatedContent?: string topicId: string createdAt: string status: 'sending' | 'pending' | 'success' | 'paused' | 'error'