diff --git a/src/renderer/src/hooks/useAppInit.ts b/src/renderer/src/hooks/useAppInit.ts
index 4b66d5910d..9293ef6416 100644
--- a/src/renderer/src/hooks/useAppInit.ts
+++ b/src/renderer/src/hooks/useAppInit.ts
@@ -14,7 +14,7 @@ import { useRuntime } from './useStore'
export function useAppInit() {
const dispatch = useAppDispatch()
- const { proxyUrl, language, windowStyle } = useSettings()
+ const { proxyUrl, language, windowStyle, manualUpdateCheck } = useSettings()
const { minappShow } = useRuntime()
const { setDefaultModel, setTopicNamingModel, setTranslateModel } = useDefaultModel()
const avatar = useLiveQuery(() => db.settings.get('image://avatar'))
@@ -27,8 +27,11 @@ export function useAppInit() {
document.getElementById('spinner')?.remove()
runAsyncFunction(async () => {
const { isPackaged } = await window.api.getAppInfo()
- isPackaged && setTimeout(window.api.checkForUpdate, 3000)
+ if (isPackaged && !manualUpdateCheck) {
+ setTimeout(window.api.checkForUpdate, 3000)
+ }
})
+ // eslint-disable-next-line react-hooks/exhaustive-deps
}, [])
useEffect(() => {
diff --git a/src/renderer/src/i18n/en-us.json b/src/renderer/src/i18n/en-us.json
new file mode 100644
index 0000000000..9c357fc11b
--- /dev/null
+++ b/src/renderer/src/i18n/en-us.json
@@ -0,0 +1,286 @@
+{
+ "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",
+ "regenerate": "Regenerate",
+ "provider": "Provider",
+ "you": "You",
+ "save": "Save",
+ "footnotes": "References",
+ "select": "Select",
+ "search": "Search",
+ "default": "Default",
+ "warning": "Warning",
+ "back": "Back",
+ "chat": "Chat"
+ },
+ "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",
+ "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",
+ "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"
+ },
+ "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.delete.all.title": "Delete all topics",
+ "topics.delete.all.content": "Are you sure you want to delete all topics?",
+ "topics.move_to": "Move to",
+ "topics.list": "Topic List",
+ "topics.export.title": "Export",
+ "topics.export.image": "Export as image",
+ "input.new_topic": "New Topic",
+ "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 text file",
+ "input.context_count.tip": "Context Count",
+ "input.estimated_tokens.tip": "Estimated tokens",
+ "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.conext_count": "Context",
+ "settings.conext_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",
+ "suggestions.title": "Suggested Questions",
+ "add.assistant.title": "Add Assistant",
+ "message.new.context": "New Context",
+ "message.new.branch": "New Branch",
+ "assistant.search.placeholder": "Search"
+ },
+ "assistants": {
+ "title": "Assistants",
+ "abbr": "Assistant",
+ "search": "Search assistants..."
+ },
+ "model": {
+ "stream_output": "Stream Output"
+ },
+ "files": {
+ "title": "Files",
+ "file": "File",
+ "name": "Name",
+ "size": "Size",
+ "count": "Count",
+ "created_at": "Created At"
+ },
+ "agents": {
+ "title": "Agents",
+ "my_agents": "My Agents",
+ "add.title": "Add Agent",
+ "edit.title": "Edit Agent",
+ "add.name": "Name",
+ "add.name.placeholder": "Enter name",
+ "add.prompt": "Prompt",
+ "add.prompt.placeholder": "Enter prompt",
+ "add.button": "Add",
+ "manage.title": "Manage Agents",
+ "delete.popup.content": "Are you sure you want to delete this agent?",
+ "tag.default": "Default",
+ "tag.system": "System",
+ "tag.user": "Mine"
+ },
+ "provider": {
+ "openai": "OpenAI",
+ "gemini": "Gemini",
+ "deepseek": "DeepSeek",
+ "moonshot": "Moonshot",
+ "silicon": "SiliconFlow",
+ "openrouter": "OpenRouter",
+ "yi": "Yi",
+ "zhipu": "ZHIPU AI",
+ "groq": "Groq",
+ "ollama": "Ollama",
+ "baichuan": "Baichuan",
+ "dashscope": "DashScope",
+ "anthropic": "Anthropic",
+ "aihubmix": "AiHubMix",
+ "stepfun": "StepFun",
+ "doubao": "Doubao",
+ "minimax": "MiniMax",
+ "graphrag-kylin-mountain": "GraphRAG",
+ "github": "GitHub Models",
+ "ocoolai": "ocoolAI"
+ },
+ "settings": {
+ "title": "Settings",
+ "general": "General Settings",
+ "provider": "Model Provider",
+ "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 input tokens",
+ "messages.input.send_shortcuts": "Send shortcuts",
+ "messages.input.paste_long_text_as_file": "Paste long text as file",
+ "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.reset.title": "Data Reset",
+ "general.reset.button": "Reset",
+ "general.check_update_setting": "Check for updates",
+ "general.manual_update_check": "Check for updates manually",
+ "general.auto_update_check": "Check for updates automatically",
+ "advanced.title": "Advanced Settings",
+ "advanced.click_assistant_switch_to_topics": "Auto switch to topic",
+ "provider.api_key": "API Key",
+ "provider.check": "Check",
+ "provider.get_api_key": "Get API Key",
+ "provider.api_host": "API Host",
+ "provider.docs_check": "Check",
+ "provider.docs_more_details": "for more details",
+ "provider.search_placeholder": "Search model id or name",
+ "provider.api.url.reset": "Reset",
+ "models.default_assistant_model": "Default Assistant Model",
+ "models.topic_naming_model": "Topic Naming Model",
+ "models.translate_model": "Translate Model",
+ "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.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...",
+ "provider.delete.title": "Delete Provider",
+ "provider.delete.content": "Are you sure you want to delete this provider?",
+ "provider.edit.name": "Provider Name",
+ "provider.edit.name.placeholder": "Example: OpenAI",
+ "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",
+ "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"
+ },
+ "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"
+ },
+ "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."
+ },
+ "minapp": {
+ "title": "MinApp"
+ },
+ "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"
+ },
+ "words": {
+ "knowledgeGraph": "Knowledge Graph",
+ "visualization": "Visualization"
+ }
+ }
+}
diff --git a/src/renderer/src/i18n/index.ts b/src/renderer/src/i18n/index.ts
index 76725f4313..3d20d03ed5 100644
--- a/src/renderer/src/i18n/index.ts
+++ b/src/renderer/src/i18n/index.ts
@@ -1,863 +1,16 @@
import i18n from 'i18next'
import { initReactI18next } from 'react-i18next'
+import enUS from './en-us.json'
+import zhCN from './zh-cn.json'
+import zhTW from './zh-tw.json'
+
const resources = {
- 'en-US': {
- 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',
- regenerate: 'Regenerate',
- provider: 'Provider',
- you: 'You',
- save: 'Save',
- footnotes: 'References',
- select: 'Select',
- search: 'Search',
- default: 'Default',
- warning: 'Warning',
- back: 'Back',
- chat: 'Chat'
- },
- 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',
- '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',
- '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'
- },
- 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.delete.all.title': 'Delete all topics',
- 'topics.delete.all.content': 'Are you sure you want to delete all topics?',
- 'topics.move_to': 'Move to',
- 'topics.list': 'Topic List',
- 'topics.export.title': 'Export',
- 'topics.export.image': 'Export as image',
- 'input.new_topic': 'New Topic',
- '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 text file',
- 'input.context_count.tip': 'Context Count',
- 'input.estimated_tokens.tip': 'Estimated tokens',
- '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.conext_count': 'Context',
- 'settings.conext_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',
- 'suggestions.title': 'Suggested Questions',
- 'add.assistant.title': 'Add Assistant',
- 'message.new.context': 'New Context',
- 'message.new.branch': 'New Branch',
- 'assistant.search.placeholder': 'Search'
- },
- assistants: {
- title: 'Assistants',
- abbr: 'Assistant',
- search: 'Search assistants...'
- },
- model: {
- stream_output: 'Stream Output'
- },
- files: {
- title: 'Files',
- file: 'File',
- name: 'Name',
- size: 'Size',
- count: 'Count',
- created_at: 'Created At'
- },
- agents: {
- title: 'Agents',
- my_agents: 'My Agents',
- 'add.title': 'Add Agent',
- 'edit.title': 'Edit Agent',
- 'add.name': 'Name',
- 'add.name.placeholder': 'Enter name',
- 'add.prompt': 'Prompt',
- 'add.prompt.placeholder': 'Enter prompt',
- 'add.button': 'Add',
- 'manage.title': 'Manage Agents',
- 'delete.popup.content': 'Are you sure you want to delete this agent?',
- 'tag.default': 'Default',
- 'tag.system': 'System',
- 'tag.user': 'Mine'
- },
- provider: {
- openai: 'OpenAI',
- gemini: 'Gemini',
- deepseek: 'DeepSeek',
- moonshot: 'Moonshot',
- silicon: 'SiliconFlow',
- openrouter: 'OpenRouter',
- yi: 'Yi',
- zhipu: 'ZHIPU AI',
- groq: 'Groq',
- ollama: 'Ollama',
- baichuan: 'Baichuan',
- dashscope: 'DashScope',
- anthropic: 'Anthropic',
- aihubmix: 'AiHubMix',
- stepfun: 'StepFun',
- doubao: 'Doubao',
- minimax: 'MiniMax',
- 'graphrag-kylin-mountain': 'GraphRAG',
- github: 'GitHub Models',
- ocoolai: 'ocoolAI'
- },
- settings: {
- title: 'Settings',
- general: 'General Settings',
- provider: 'Model Provider',
- 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 input tokens',
- 'messages.input.send_shortcuts': 'Send shortcuts',
- 'messages.input.paste_long_text_as_file': 'Paste long text as file',
- '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.reset.title': 'Data Reset',
- 'general.reset.button': 'Reset',
- 'advanced.title': 'Advanced Settings',
- 'advanced.click_assistant_switch_to_topics': 'Auto switch to topic',
- 'provider.api_key': 'API Key',
- 'provider.check': 'Check',
- 'provider.get_api_key': 'Get API Key',
- 'provider.api_host': 'API Host',
- 'provider.docs_check': 'Check',
- 'provider.docs_more_details': 'for more details',
- 'provider.search_placeholder': 'Search model id or name',
- 'provider.api.url.reset': 'Reset',
- 'models.default_assistant_model': 'Default Assistant Model',
- 'models.topic_naming_model': 'Topic Naming Model',
- 'models.translate_model': 'Translate Model',
- '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.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...',
- 'provider.delete.title': 'Delete Provider',
- 'provider.delete.content': 'Are you sure you want to delete this provider?',
- 'provider.edit.name': 'Provider Name',
- 'provider.edit.name.placeholder': 'Example: OpenAI',
- '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',
- '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'
- },
- 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'
- },
- 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.'
- },
- minapp: {
- title: 'MinApp'
- },
- 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'
- },
- words: {
- knowledgeGraph: 'Knowledge Graph',
- visualization: 'Visualization'
- }
- }
- },
- 'zh-CN': {
- translation: {
- common: {
- avatar: '头像',
- language: '语言',
- model: '模型',
- models: '模型',
- topics: '话题',
- docs: '文档',
- and: '和',
- assistant: '智能体',
- name: '名称',
- description: '描述',
- prompt: '提示词',
- rename: '重命名',
- delete: '删除',
- edit: '编辑',
- duplicate: '复制',
- copy: '复制',
- regenerate: '重新生成',
- provider: '提供商',
- you: '用户',
- save: '保存',
- footnote: '引用内容',
- select: '选择',
- search: '搜索',
- default: '默认',
- warning: '警告',
- back: '返回',
- chat: '聊天'
- },
- 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': '无效的代理地址',
- 'api.connection.failed': '连接失败',
- 'api.connection.success': '连接成功',
- 'chat.completion.paused': '会话已停止',
- 'switch.disabled': '模型回复完成后才能切换',
- 'restore.success': '恢复成功',
- 'backup.success': '备份成功',
- 'reset.confirm.content': '确定要重置所有数据吗?',
- 'reset.double.confirm.title': '数据丢失!!!',
- 'reset.double.confirm.content': '你的全部数据都会丢失,如果没有备份数据,将无法恢复,确定要继续吗?',
- 'upgrade.success.title': '升级成功',
- 'upgrade.success.content': '重启应用以完成升级',
- 'upgrade.success.button': '重启',
- 'topic.added': '话题添加成功'
- },
- chat: {
- save: '保存',
- 'default.name': '⭐️ 默认助手',
- 'default.description': '你好,我是默认助手。你可以立刻开始跟我聊天。',
- 'default.topic.name': '默认话题',
- 'topics.title': '话题',
- 'topics.auto_rename': '生成话题名',
- 'topics.edit.title': '编辑话题名',
- 'topics.edit.placeholder': '输入新名称',
- 'topics.delete.all.title': '删除所有话题',
- 'topics.delete.all.content': '确定要删除所有话题吗?',
- 'topics.move_to': '移动到',
- 'topics.list': '话题列表',
- 'topics.export.title': '导出',
- 'topics.export.image': '导出为图片',
- 'input.new_topic': '新话题',
- '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 数',
- 'settings.temperature': '模型温度',
- 'settings.temperature.tip':
- '模型生成文本的随机程度。值越大,回复内容越赋有多样性、创造性、随机性;设为 0 根据事实回答。日常聊天建议设置为 0.7',
- 'settings.conext_count': '上下文数',
- 'settings.conext_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': '不限',
- 'suggestions.title': '建议的问题',
- 'add.assistant.title': '添加助手',
- 'message.new.context': '清除上下文',
- 'message.new.branch': '新分支',
- 'assistant.search.placeholder': '搜索'
- },
- assistants: {
- title: '助手',
- abbr: '助手',
- search: '搜索助手'
- },
- model: {
- stream_output: '流式输出'
- },
- files: {
- title: '文件',
- file: '文件',
- name: '文件名',
- size: '大小',
- count: '文件数',
- created_at: '创建时间'
- },
- agents: {
- title: '智能体',
- my_agents: '我的智能体',
- 'add.title': '添加智能体',
- 'edit.title': '编辑智能体',
- 'add.name': '名称',
- 'add.name.placeholder': '输入名称',
- 'add.prompt': '提示词',
- 'add.prompt.placeholder': '输入提示词',
- 'add.button': '添加',
- 'manage.title': '管理智能体',
- 'delete.popup.content': '确定要删除此智能体吗?',
- 'tag.default': '默认',
- 'tag.system': '系统',
- 'tag.user': '我的'
- },
- provider: {
- 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'
- },
- settings: {
- title: '设置',
- general: '常规设置',
- provider: '模型服务',
- model: '默认模型',
- assistant: '默认助手',
- about: '关于我们',
- 'messages.model.title': '模型设置',
- 'messages.title': '消息设置',
- 'messages.divider': '消息分割线',
- 'messages.use_serif_font': '使用衬线字体',
- 'messages.input.title': '输入设置',
- 'messages.input.show_estimated_tokens': '状态显示',
- 'messages.input.send_shortcuts': '发送快捷键',
- 'messages.input.paste_long_text_as_file': '长文本粘贴为文件',
- 'general.title': '常规设置',
- 'general.user_name': '用户名',
- 'general.user_name.placeholder': '请输入用户名',
- 'general.backup.title': '数据备份与恢复',
- 'general.backup.button': '备份',
- 'general.restore.button': '恢复',
- 'general.reset.title': '重置数据',
- 'general.reset.button': '重置',
- 'advanced.title': '高级设置',
- 'advanced.click_assistant_switch_to_topics': '点击助手切换到话题',
- 'provider.api_key': 'API 密钥',
- 'provider.check': '检查',
- 'provider.get_api_key': '点击这里获取密钥',
- 'provider.api_host': 'API 地址',
- 'provider.docs_check': '查看',
- 'provider.docs_more_details': '获取更多详情',
- 'provider.search_placeholder': '搜索模型 ID 或名称',
- 'provider.api.url.reset': '重置',
- 'models.default_assistant_model': '默认助手模型',
- 'models.topic_naming_model': '话题命名模型',
- 'models.translate_model': '翻译模型',
- '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.empty': '没有模型',
- 'assistant.title': '默认助手',
- 'assistant.model_params': '模型参数',
- 'about.description': '一款为创造者而生的 AI 助手',
- 'about.updateNotAvailable': '你的软件已是最新版本',
- 'about.checkingUpdate': '正在检查更新...',
- 'about.updateError': '更新出错',
- 'about.checkUpdate': '检查更新',
- 'about.downloading': '正在下载更新...',
- 'provider.delete.title': '删除提供商',
- 'provider.delete.content': '确定要删除此模型提供商吗?',
- 'provider.edit.name': '模型提供商名称',
- 'provider.edit.name.placeholder': '例如 OpenAI',
- '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': '代理地址',
- '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': '右侧'
- },
- translate: {
- title: '翻译',
- 'any.language': '任意语言',
- 'button.translate': '翻译',
- 'error.not_configured': '翻译模型未配置',
- 'input.placeholder': '输入文本进行翻译',
- 'output.placeholder': '翻译'
- },
- 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分钟)'
- },
- minapp: {
- title: '小程序'
- },
- error: {
- 'chat.response': '出错了,如果没有配置 API 密钥,请前往设置 > 模型提供商中配置密钥',
- 'backup.file_format': '备份文件格式错误'
- },
- words: {
- knowledgeGraph: '知识图谱',
- visualization: '可视化'
- }
- }
- },
- 'zh-TW': {
- translation: {
- common: {
- avatar: '頭像',
- language: '語言',
- model: '模型',
- models: '模型',
- topics: '話題',
- docs: '文件',
- and: '與',
- assistant: '智能體',
- name: '名稱',
- description: '描述',
- prompt: '提示詞',
- rename: '重新命名',
- delete: '刪除',
- edit: '編輯',
- duplicate: '複製',
- copy: '複製',
- regenerate: '重新生成',
- provider: '提供商',
- you: '您',
- save: '保存',
- footnotes: '引用',
- select: '選擇',
- search: '搜尋',
- default: '預設',
- warning: '警告',
- back: '返回',
- chat: '聊天'
- },
- 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',
- 'api.connection.failed': '連接失敗',
- 'api.connection.success': '連接成功',
- 'chat.completion.paused': '聊天完成已暫停',
- 'switch.disabled': '助手生成回覆時無法切換',
- 'restore.success': '恢復成功',
- 'backup.success': '備份成功',
- 'reset.confirm.content': '確定要清除所有資料嗎?',
- 'reset.double.confirm.title': '資料將會丟失!!!',
- 'reset.double.confirm.content': '所有資料將會被清除,您確定要繼續嗎?',
- 'upgrade.success.title': '升級成功',
- 'upgrade.success.content': '請重新啟動應用以完成升級',
- 'upgrade.success.button': '重新啟動',
- 'topic.added': '新話題已添加'
- },
- chat: {
- save: '保存',
- 'default.name': '⭐️ 預設助手',
- 'default.description': '你好,我是預設助手。你可以立即開始與我聊天。',
- 'default.topic.name': '預設話題',
- 'topics.title': '話題',
- 'topics.auto_rename': '自動重新命名',
- 'topics.edit.title': '編輯名稱',
- 'topics.edit.placeholder': '輸入新名稱',
- 'topics.delete.all.title': '刪除所有話題',
- 'topics.delete.all.content': '確定要刪除所有話題嗎?',
- 'topics.move_to': '移動到',
- 'topics.list': '話題列表',
- 'topics.export.title': '匯出',
- 'topics.export.image': '匯出為圖片',
- 'input.new_topic': '新話題',
- '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 數',
- 'settings.temperature': '溫度',
- 'settings.temperature.tip': '較低的值使模型更具創造性和不可預測性,較高的值則使其更具確定性和精確性。',
- 'settings.conext_count': '上下文',
- 'settings.conext_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': '最大',
- 'suggestions.title': '建議的問題',
- 'add.assistant.title': '添加助手',
- 'message.new.context': '新上下文',
- 'message.new.branch': '新分支',
- 'assistant.search.placeholder': '搜尋'
- },
- assistants: {
- title: '助手',
- abbr: '助',
- search: '搜尋助手...'
- },
- model: {
- stream_output: '串流輸出'
- },
- files: {
- title: '檔案',
- file: '檔案',
- name: '名稱',
- size: '大小',
- count: '數量',
- created_at: '建立時間'
- },
- agents: {
- title: '智能體',
- my_agents: '我的智能體',
- 'add.title': '添加智能體',
- 'edit.title': '編輯智能體',
- 'add.name': '名稱',
- 'add.name.placeholder': '輸入名稱',
- 'add.prompt': '提示詞',
- 'add.prompt.placeholder': '輸入提示詞',
- 'add.button': '添加',
- 'manage.title': '管理智能體',
- 'delete.popup.content': '確定要刪除此智能體嗎?',
- 'tag.default': '預設',
- 'tag.system': '系統',
- 'tag.user': '我的'
- },
- provider: {
- openai: 'OpenAI',
- gemini: 'Gemini',
- deepseek: '深度求索',
- moonshot: '月之暗面',
- silicon: 'SiliconFlow',
- openrouter: 'OpenRouter',
- yi: '零一万物',
- zhipu: '智谱AI',
- groq: 'Groq',
- ollama: 'Ollama',
- baichuan: '百川',
- dashscope: 'DashScope',
- anthropic: 'Anthropic',
- aihubmix: 'AiHubMix',
- stepfun: 'StepFun',
- doubao: '豆包',
- minimax: 'MiniMax',
- 'graphrag-kylin-mountain': 'GraphRAG',
- github: 'GitHub Models',
- ocoolai: 'ocoolAI'
- },
- settings: {
- title: '設定',
- general: '一般設定',
- provider: '模型提供者',
- 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': '將長文本貼上為檔案',
- 'general.title': '一般設定',
- 'general.user_name': '使用者名稱',
- 'general.user_name.placeholder': '輸入您的名稱',
- 'general.backup.title': '資料備份與復原',
- 'general.backup.button': '備份',
- 'general.restore.button': '復原',
- 'general.reset.title': '資料重置',
- 'general.reset.button': '重置',
- 'advanced.title': '進階設定',
- 'advanced.click_assistant_switch_to_topics': '點擊助手切換到話題',
- 'provider.api_key': 'API 密鑰',
- 'provider.check': '檢查',
- 'provider.get_api_key': '獲取 API 密鑰',
- 'provider.api_host': 'API 主機地址',
- 'provider.docs_check': '檢查',
- 'provider.docs_more_details': '查看更多細節',
- 'provider.search_placeholder': '搜尋模型 ID 或名稱',
- 'provider.api.url.reset': '重置',
- 'models.default_assistant_model': '預設助手模型',
- 'models.topic_naming_model': '話題命名模型',
- 'models.translate_model': '翻譯模型',
- '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.empty': '找不到模型',
- 'assistant.title': '預設助手',
- 'assistant.model_params': '模型參數',
- 'about.description': '一款為創作者而生的強大 AI 助手',
- 'about.updateNotAvailable': '您正在使用最新版本',
- 'about.checkingUpdate': '正在檢查更新...',
- 'about.updateError': '更新錯誤',
- 'about.checkUpdate': '檢查更新',
- 'about.downloading': '正在下載...',
- 'provider.delete.title': '刪除提供者',
- 'provider.delete.content': '確定要刪除此提供者嗎?',
- 'provider.edit.name': '提供者名稱',
- 'provider.edit.name.placeholder': '例如:OpenAI',
- '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': '代理地址',
- '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': '右側'
- },
- translate: {
- title: '翻譯',
- 'any.language': '任意語言',
- 'button.translate': '翻譯',
- 'error.not_configured': '翻譯模型未配置',
- 'input.placeholder': '輸入文字進行翻譯',
- 'output.placeholder': '翻譯'
- },
- 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 分鐘)。'
- },
- minapp: {
- title: '小程序'
- },
- error: {
- 'chat.response': '出現錯誤。如果尚未配置 API 密鑰,請前往設定 > 模型提供者中配置密鑰',
- 'backup.file_format': '備份文件格式錯誤'
- },
- words: {
- knowledgeGraph: '知識圖譜',
- visualization: '可視化'
- }
- }
- }
+ 'en-US': enUS,
+ 'zh-CN': zhCN,
+ 'zh-TW': zhTW
}
+
i18n.use(initReactI18next).init({
resources,
lng: localStorage.getItem('language') || navigator.language || 'en-US',
diff --git a/src/renderer/src/i18n/zh-cn.json b/src/renderer/src/i18n/zh-cn.json
new file mode 100644
index 0000000000..21b3f112f8
--- /dev/null
+++ b/src/renderer/src/i18n/zh-cn.json
@@ -0,0 +1,286 @@
+{
+ "translation": {
+ "common": {
+ "avatar": "头像",
+ "language": "语言",
+ "model": "模型",
+ "models": "模型",
+ "topics": "话题",
+ "docs": "文档",
+ "and": "和",
+ "assistant": "智能体",
+ "name": "名称",
+ "description": "描述",
+ "prompt": "提示词",
+ "rename": "重命名",
+ "delete": "删除",
+ "edit": "编辑",
+ "duplicate": "复制",
+ "copy": "复制",
+ "regenerate": "重新生成",
+ "provider": "提供商",
+ "you": "用户",
+ "save": "保存",
+ "footnote": "引用内容",
+ "select": "选择",
+ "search": "搜索",
+ "default": "默认",
+ "warning": "警告",
+ "back": "返回",
+ "chat": "聊天"
+ },
+ "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": "无效的代理地址",
+ "api.connection.failed": "连接失败",
+ "api.connection.success": "连接成功",
+ "chat.completion.paused": "会话已停止",
+ "switch.disabled": "模型回复完成后才能切换",
+ "restore.success": "恢复成功",
+ "backup.success": "备份成功",
+ "reset.confirm.content": "确定要重置所有数据吗?",
+ "reset.double.confirm.title": "数据丢失!!!",
+ "reset.double.confirm.content": "你的全部数据都会丢失,如果没有备份数据,将无法恢复,确定要继续吗?",
+ "upgrade.success.title": "升级成功",
+ "upgrade.success.content": "重启应用以完成升级",
+ "upgrade.success.button": "重启",
+ "topic.added": "话题添加成功"
+ },
+ "chat": {
+ "save": "保存",
+ "default.name": "⭐️ 默认助手",
+ "default.description": "你好,我是默认助手。你可以立刻开始跟我聊天。",
+ "default.topic.name": "默认话题",
+ "topics.title": "话题",
+ "topics.auto_rename": "生成话题名",
+ "topics.edit.title": "编辑话题名",
+ "topics.edit.placeholder": "输入新名称",
+ "topics.delete.all.title": "删除所有话题",
+ "topics.delete.all.content": "确定要删除所有话题吗?",
+ "topics.move_to": "移动到",
+ "topics.list": "话题列表",
+ "topics.export.title": "导出",
+ "topics.export.image": "导出为图片",
+ "input.new_topic": "新话题",
+ "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 数",
+ "settings.temperature": "模型温度",
+ "settings.temperature.tip": "模型生成文本的随机程度。值越大,回复内容越赋有多样性、创造性、随机性;设为 0 根据事实回答。日常聊天建议设置为 0.7",
+ "settings.conext_count": "上下文数",
+ "settings.conext_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": "不限",
+ "suggestions.title": "建议的问题",
+ "add.assistant.title": "添加助手",
+ "message.new.context": "清除上下文",
+ "message.new.branch": "新分支",
+ "assistant.search.placeholder": "搜索"
+ },
+ "assistants": {
+ "title": "助手",
+ "abbr": "助手",
+ "search": "搜索助手"
+ },
+ "model": {
+ "stream_output": "流式输出"
+ },
+ "files": {
+ "title": "文件",
+ "file": "文件",
+ "name": "文件名",
+ "size": "大小",
+ "count": "文件数",
+ "created_at": "创建时间"
+ },
+ "agents": {
+ "title": "智能体",
+ "my_agents": "我的智能体",
+ "add.title": "添加智能体",
+ "edit.title": "编辑智能体",
+ "add.name": "名称",
+ "add.name.placeholder": "输入名称",
+ "add.prompt": "提示词",
+ "add.prompt.placeholder": "输入提示词",
+ "add.button": "添加",
+ "manage.title": "管理智能体",
+ "delete.popup.content": "确定要删除此智能体吗?",
+ "tag.default": "默认",
+ "tag.system": "系统",
+ "tag.user": "我的"
+ },
+ "provider": {
+ "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"
+ },
+ "settings": {
+ "title": "设置",
+ "general": "常规设置",
+ "provider": "模型服务",
+ "model": "默认模型",
+ "assistant": "默认助手",
+ "about": "关于我们",
+ "messages.model.title": "模型设置",
+ "messages.title": "消息设置",
+ "messages.divider": "消息分割线",
+ "messages.use_serif_font": "使用衬线字体",
+ "messages.input.title": "输入设置",
+ "messages.input.show_estimated_tokens": "状态显示",
+ "messages.input.send_shortcuts": "发送快捷键",
+ "messages.input.paste_long_text_as_file": "长文本粘贴为文件",
+ "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.check_update_setting": "更新设置",
+ "general.manual_update_check": "手动检查更新",
+ "general.auto_update_check": "自动检查更新",
+ "advanced.title": "高级设置",
+ "advanced.click_assistant_switch_to_topics": "点击助手切换到话题",
+ "provider.api_key": "API 密钥",
+ "provider.check": "检查",
+ "provider.get_api_key": "点击这里获取密钥",
+ "provider.api_host": "API 地址",
+ "provider.docs_check": "查看",
+ "provider.docs_more_details": "获取更多详情",
+ "provider.search_placeholder": "搜索模型 ID 或名称",
+ "provider.api.url.reset": "重置",
+ "models.default_assistant_model": "默认助手模型",
+ "models.topic_naming_model": "话题命名模型",
+ "models.translate_model": "翻译模型",
+ "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.empty": "没有模型",
+ "assistant.title": "默认助手",
+ "assistant.model_params": "模型参数",
+ "about.description": "一款为创造者而生的 AI 助手",
+ "about.updateNotAvailable": "你的软件已是最新版本",
+ "about.checkingUpdate": "正在检查更新...",
+ "about.updateError": "更新出错",
+ "about.checkUpdate": "检查更新",
+ "about.downloading": "正在下载更新...",
+ "provider.delete.title": "删除提供商",
+ "provider.delete.content": "确定要删除此模型提供商吗?",
+ "provider.edit.name": "模型提供商名称",
+ "provider.edit.name.placeholder": "例如 OpenAI",
+ "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": "代理地址",
+ "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": "右侧"
+ },
+ "translate": {
+ "title": "翻译",
+ "any.language": "任意语言",
+ "button.translate": "翻译",
+ "error.not_configured": "翻译模型未配置",
+ "input.placeholder": "输入文本进行翻译",
+ "output.placeholder": "翻译"
+ },
+ "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分钟)"
+ },
+ "minapp": {
+ "title": "小程序"
+ },
+ "error": {
+ "chat.response": "出错了,如果没有配置 API 密钥,请前往设置 > 模型提供商中配置密钥",
+ "backup.file_format": "备份文件格式错误"
+ },
+ "words": {
+ "knowledgeGraph": "知识图谱",
+ "visualization": "可视化"
+ }
+ }
+}
diff --git a/src/renderer/src/i18n/zh-tw.json b/src/renderer/src/i18n/zh-tw.json
new file mode 100644
index 0000000000..88b0b87699
--- /dev/null
+++ b/src/renderer/src/i18n/zh-tw.json
@@ -0,0 +1,286 @@
+{
+ "translation": {
+ "common": {
+ "avatar": "頭像",
+ "language": "語言",
+ "model": "模型",
+ "models": "模型",
+ "topics": "話題",
+ "docs": "文件",
+ "and": "與",
+ "assistant": "智能體",
+ "name": "名稱",
+ "description": "描述",
+ "prompt": "提示詞",
+ "rename": "重新命名",
+ "delete": "刪除",
+ "edit": "編輯",
+ "duplicate": "複製",
+ "copy": "複製",
+ "regenerate": "重新生成",
+ "provider": "提供商",
+ "you": "您",
+ "save": "保存",
+ "footnotes": "引用",
+ "select": "選擇",
+ "search": "搜尋",
+ "default": "預設",
+ "warning": "警告",
+ "back": "返回",
+ "chat": "聊天"
+ },
+ "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",
+ "api.connection.failed": "連接失敗",
+ "api.connection.success": "連接成功",
+ "chat.completion.paused": "聊天完成已暫停",
+ "switch.disabled": "助手生成回覆時無法切換",
+ "restore.success": "恢復成功",
+ "backup.success": "備份成功",
+ "reset.confirm.content": "確定要清除所有資料嗎?",
+ "reset.double.confirm.title": "資料將會丟失!!!",
+ "reset.double.confirm.content": "所有資料將會被清除,您確定要繼續嗎?",
+ "upgrade.success.title": "升級成功",
+ "upgrade.success.content": "請重新啟動應用以完成升級",
+ "upgrade.success.button": "重新啟動",
+ "topic.added": "新話題已添加"
+ },
+ "chat": {
+ "save": "保存",
+ "default.name": "⭐️ 預設助手",
+ "default.description": "你好,我是預設助手。你可以立即開始與我聊天。",
+ "default.topic.name": "預設話題",
+ "topics.title": "話題",
+ "topics.auto_rename": "自動重新命名",
+ "topics.edit.title": "編輯名稱",
+ "topics.edit.placeholder": "輸入新名稱",
+ "topics.delete.all.title": "刪除所有話題",
+ "topics.delete.all.content": "確定要刪除所有話題嗎?",
+ "topics.move_to": "移動到",
+ "topics.list": "話題列表",
+ "topics.export.title": "匯出",
+ "topics.export.image": "匯出為圖片",
+ "input.new_topic": "新話題",
+ "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 數",
+ "settings.temperature": "溫度",
+ "settings.temperature.tip": "較低的值使模型更具創造性和不可預測性,較高的值則使其更具確定性和精確性。",
+ "settings.conext_count": "上下文",
+ "settings.conext_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": "最大",
+ "suggestions.title": "建議的問題",
+ "add.assistant.title": "添加助手",
+ "message.new.context": "新上下文",
+ "message.new.branch": "新分支",
+ "assistant.search.placeholder": "搜尋"
+ },
+ "assistants": {
+ "title": "助手",
+ "abbr": "助",
+ "search": "搜尋助手..."
+ },
+ "model": {
+ "stream_output": "串流輸出"
+ },
+ "files": {
+ "title": "檔案",
+ "file": "檔案",
+ "name": "名稱",
+ "size": "大小",
+ "count": "數量",
+ "created_at": "建立時間"
+ },
+ "agents": {
+ "title": "智能體",
+ "my_agents": "我的智能體",
+ "add.title": "添加智能體",
+ "edit.title": "編輯智能體",
+ "add.name": "名稱",
+ "add.name.placeholder": "輸入名稱",
+ "add.prompt": "提示詞",
+ "add.prompt.placeholder": "輸入提示詞",
+ "add.button": "添加",
+ "manage.title": "管理智能體",
+ "delete.popup.content": "確定要刪除此智能體嗎?",
+ "tag.default": "預設",
+ "tag.system": "系統",
+ "tag.user": "我的"
+ },
+ "provider": {
+ "openai": "OpenAI",
+ "gemini": "Gemini",
+ "deepseek": "深度求索",
+ "moonshot": "月之暗面",
+ "silicon": "SiliconFlow",
+ "openrouter": "OpenRouter",
+ "yi": "零一万物",
+ "zhipu": "智谱AI",
+ "groq": "Groq",
+ "ollama": "Ollama",
+ "baichuan": "百川",
+ "dashscope": "DashScope",
+ "anthropic": "Anthropic",
+ "aihubmix": "AiHubMix",
+ "stepfun": "StepFun",
+ "doubao": "豆包",
+ "minimax": "MiniMax",
+ "graphrag-kylin-mountain": "GraphRAG",
+ "github": "GitHub Models",
+ "ocoolai": "ocoolAI"
+ },
+ "settings": {
+ "title": "設定",
+ "general": "一般設定",
+ "provider": "模型提供者",
+ "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": "將長文本貼上為檔案",
+ "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.check_update_setting": "更新設定",
+ "general.manual_update_check": "手動檢查更新",
+ "general.auto_update_check": "自動檢查更新",
+ "advanced.title": "進階設定",
+ "advanced.click_assistant_switch_to_topics": "點擊助手切換到話題",
+ "provider.api_key": "API 密鑰",
+ "provider.check": "檢查",
+ "provider.get_api_key": "獲取 API 密鑰",
+ "provider.api_host": "API 主機地址",
+ "provider.docs_check": "檢查",
+ "provider.docs_more_details": "查看更多細節",
+ "provider.search_placeholder": "搜尋模型 ID 或名稱",
+ "provider.api.url.reset": "重置",
+ "models.default_assistant_model": "預設助手模型",
+ "models.topic_naming_model": "話題命名模型",
+ "models.translate_model": "翻譯模型",
+ "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.empty": "找不到模型",
+ "assistant.title": "預設助手",
+ "assistant.model_params": "模型參數",
+ "about.description": "一款為創作者而生的強大 AI 助手",
+ "about.updateNotAvailable": "您正在使用最新版本",
+ "about.checkingUpdate": "正在檢查更新...",
+ "about.updateError": "更新錯誤",
+ "about.checkUpdate": "檢查更新",
+ "about.downloading": "正在下載...",
+ "provider.delete.title": "刪除提供者",
+ "provider.delete.content": "確定要刪除此提供者嗎?",
+ "provider.edit.name": "提供者名稱",
+ "provider.edit.name.placeholder": "例如:OpenAI",
+ "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": "代理地址",
+ "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": "右側"
+ },
+ "translate": {
+ "title": "翻譯",
+ "any.language": "任意語言",
+ "button.translate": "翻譯",
+ "error.not_configured": "翻譯模型未配置",
+ "input.placeholder": "輸入文字進行翻譯",
+ "output.placeholder": "翻譯"
+ },
+ "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 分鐘)。"
+ },
+ "minapp": {
+ "title": "小程序"
+ },
+ "error": {
+ "chat.response": "出現錯誤。如果尚未配置 API 密鑰,請前往設定 > 模型提供者中配置密鑰",
+ "backup.file_format": "備份文件格式錯誤"
+ },
+ "words": {
+ "knowledgeGraph": "知識圖譜",
+ "visualization": "可視化"
+ }
+ }
+}
diff --git a/src/renderer/src/pages/settings/GeneralSettings.tsx b/src/renderer/src/pages/settings/GeneralSettings.tsx
index 3398f188e5..fb048f67c0 100644
--- a/src/renderer/src/pages/settings/GeneralSettings.tsx
+++ b/src/renderer/src/pages/settings/GeneralSettings.tsx
@@ -5,7 +5,7 @@ import { useSettings } from '@renderer/hooks/useSettings'
import i18n from '@renderer/i18n'
import { backup, reset, restore } from '@renderer/services/backup'
import { useAppDispatch } from '@renderer/store'
-import { setClickAssistantToShowTopic, setLanguage } from '@renderer/store/settings'
+import { setClickAssistantToShowTopic, setLanguage, setManualUpdateCheck } from '@renderer/store/settings'
import { setProxyUrl as _setProxyUrl } from '@renderer/store/settings'
import { ThemeMode } from '@renderer/types'
import { isValidProxyUrl } from '@renderer/utils'
@@ -23,6 +23,7 @@ const GeneralSettings: FC = () => {
windowStyle,
topicPosition,
clickAssistantToShowTopic,
+ manualUpdateCheck,
setTheme,
setWindowStyle,
setTopicPosition
@@ -121,6 +122,19 @@ const GeneralSettings: FC = () => {
>
)}
+
+ {t('settings.general.check_update_setting')}
+
+
{t('settings.proxy.title')}
) => {
state.clickAssistantToShowTopic = action.payload
+ },
+ setManualUpdateCheck: (state, action: PayloadAction) => {
+ state.manualUpdateCheck = action.payload
}
}
})
@@ -115,7 +120,8 @@ export const {
setWindowStyle,
setTopicPosition,
setPasteLongTextAsFile,
- setClickAssistantToShowTopic
+ setClickAssistantToShowTopic,
+ setManualUpdateCheck
} = settingsSlice.actions
export default settingsSlice.reducer