feat(Localization): Add toggle error message for MCP servers across languages
- Update en-us, ja-jp, ru-ru, zh-cn, and zh-tw locale files - Add 'toggleError' translation key for MCP server settings - Improve error handling and user feedback for server toggle actions
This commit is contained in:
parent
67bb1f19f0
commit
a25c0e657b
@ -806,7 +806,8 @@
|
|||||||
"title": "MCP Servers",
|
"title": "MCP Servers",
|
||||||
"type": "Type",
|
"type": "Type",
|
||||||
"updateSuccess": "Server updated successfully",
|
"updateSuccess": "Server updated successfully",
|
||||||
"url": "URL"
|
"url": "URL",
|
||||||
|
"toggleError": "Toggle failed"
|
||||||
},
|
},
|
||||||
"messages.divider": "Show divider between messages",
|
"messages.divider": "Show divider between messages",
|
||||||
"messages.grid_columns": "Message grid display columns",
|
"messages.grid_columns": "Message grid display columns",
|
||||||
|
|||||||
@ -806,7 +806,8 @@
|
|||||||
"title": "MCP サーバー",
|
"title": "MCP サーバー",
|
||||||
"type": "タイプ",
|
"type": "タイプ",
|
||||||
"updateSuccess": "サーバーが正常に更新されました",
|
"updateSuccess": "サーバーが正常に更新されました",
|
||||||
"url": "URL"
|
"url": "URL",
|
||||||
|
"toggleError": "切り替えに失敗しました"
|
||||||
},
|
},
|
||||||
"messages.divider": "メッセージ間に区切り線を表示",
|
"messages.divider": "メッセージ間に区切り線を表示",
|
||||||
"messages.grid_columns": "メッセージグリッドの表示列数",
|
"messages.grid_columns": "メッセージグリッドの表示列数",
|
||||||
|
|||||||
@ -806,7 +806,8 @@
|
|||||||
"title": "Серверы MCP",
|
"title": "Серверы MCP",
|
||||||
"type": "Тип",
|
"type": "Тип",
|
||||||
"updateSuccess": "Сервер успешно обновлен",
|
"updateSuccess": "Сервер успешно обновлен",
|
||||||
"url": "URL"
|
"url": "URL",
|
||||||
|
"toggleError": "Переключение не удалось"
|
||||||
},
|
},
|
||||||
"messages.divider": "Показывать разделитель между сообщениями",
|
"messages.divider": "Показывать разделитель между сообщениями",
|
||||||
"messages.grid_columns": "Количество столбцов сетки сообщений",
|
"messages.grid_columns": "Количество столбцов сетки сообщений",
|
||||||
|
|||||||
@ -806,7 +806,8 @@
|
|||||||
"title": "MCP 服务器",
|
"title": "MCP 服务器",
|
||||||
"type": "类型",
|
"type": "类型",
|
||||||
"updateSuccess": "服务器更新成功",
|
"updateSuccess": "服务器更新成功",
|
||||||
"url": "URL"
|
"url": "URL",
|
||||||
|
"toggleError": "切换失败"
|
||||||
},
|
},
|
||||||
"messages.divider": "消息分割线",
|
"messages.divider": "消息分割线",
|
||||||
"messages.grid_columns": "消息网格展示列数",
|
"messages.grid_columns": "消息网格展示列数",
|
||||||
|
|||||||
@ -806,7 +806,8 @@
|
|||||||
"title": "MCP 伺服器",
|
"title": "MCP 伺服器",
|
||||||
"type": "類型",
|
"type": "類型",
|
||||||
"updateSuccess": "伺服器更新成功",
|
"updateSuccess": "伺服器更新成功",
|
||||||
"url": "URL"
|
"url": "URL",
|
||||||
|
"toggleError": "切換失敗"
|
||||||
},
|
},
|
||||||
"messages.divider": "訊息間顯示分隔線",
|
"messages.divider": "訊息間顯示分隔線",
|
||||||
"messages.grid_columns": "訊息網格展示列數",
|
"messages.grid_columns": "訊息網格展示列數",
|
||||||
|
|||||||
@ -1,7 +1,6 @@
|
|||||||
import { DeleteOutlined, EditOutlined, PlusOutlined, QuestionCircleOutlined } from '@ant-design/icons'
|
import { DeleteOutlined, EditOutlined, PlusOutlined, QuestionCircleOutlined } from '@ant-design/icons'
|
||||||
import { useTheme } from '@renderer/context/ThemeProvider'
|
import { useTheme } from '@renderer/context/ThemeProvider'
|
||||||
import { useAppDispatch, useAppSelector } from '@renderer/store'
|
import { useAppSelector } from '@renderer/store'
|
||||||
import { addMCPServer, deleteMCPServer, setMCPServerActive, updateMCPServer } from '@renderer/store/mcp'
|
|
||||||
import { MCPServer } from '@renderer/types'
|
import { MCPServer } from '@renderer/types'
|
||||||
import { Button, Card, Form, Input, Modal, Radio, Space, Switch, Table, Tag, Tooltip, Typography } from 'antd'
|
import { Button, Card, Form, Input, Modal, Radio, Space, Switch, Table, Tag, Tooltip, Typography } from 'antd'
|
||||||
import TextArea from 'antd/es/input/TextArea'
|
import TextArea from 'antd/es/input/TextArea'
|
||||||
@ -25,7 +24,6 @@ const MCPSettings: FC = () => {
|
|||||||
const { t } = useTranslation()
|
const { t } = useTranslation()
|
||||||
const { theme } = useTheme()
|
const { theme } = useTheme()
|
||||||
const { Paragraph, Text } = Typography
|
const { Paragraph, Text } = Typography
|
||||||
const dispatch = useAppDispatch()
|
|
||||||
const mcpServers = useAppSelector((state) => state.mcp.servers)
|
const mcpServers = useAppSelector((state) => state.mcp.servers)
|
||||||
|
|
||||||
const [isModalVisible, setIsModalVisible] = useState(false)
|
const [isModalVisible, setIsModalVisible] = useState(false)
|
||||||
@ -78,11 +76,10 @@ const MCPSettings: FC = () => {
|
|||||||
form.resetFields()
|
form.resetFields()
|
||||||
}
|
}
|
||||||
|
|
||||||
const handleSubmit = () => {
|
const handleSubmit = async () => {
|
||||||
setLoading(true)
|
setLoading(true)
|
||||||
form
|
try {
|
||||||
.validateFields()
|
const values = await form.validateFields()
|
||||||
.then((values) => {
|
|
||||||
const mcpServer: MCPServer = {
|
const mcpServer: MCPServer = {
|
||||||
name: values.name,
|
name: values.name,
|
||||||
description: values.description,
|
description: values.description,
|
||||||
@ -110,19 +107,16 @@ const MCPSettings: FC = () => {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (editingServer) {
|
if (editingServer) {
|
||||||
window.api.mcp
|
try {
|
||||||
.updateServer(mcpServer)
|
await window.api.mcp.updateServer(mcpServer)
|
||||||
.then(() => {
|
|
||||||
window.message.success(t('settings.mcp.updateSuccess'))
|
window.message.success(t('settings.mcp.updateSuccess'))
|
||||||
setLoading(false)
|
setLoading(false)
|
||||||
setIsModalVisible(false)
|
setIsModalVisible(false)
|
||||||
form.resetFields()
|
form.resetFields()
|
||||||
})
|
} catch (error: any) {
|
||||||
.catch((error) => {
|
|
||||||
window.message.error(`${t('settings.mcp.updateError')}: ${error.message}`)
|
window.message.error(`${t('settings.mcp.updateError')}: ${error.message}`)
|
||||||
setLoading(false)
|
setLoading(false)
|
||||||
})
|
}
|
||||||
dispatch(updateMCPServer(mcpServer))
|
|
||||||
} else {
|
} else {
|
||||||
// Check for duplicate name
|
// Check for duplicate name
|
||||||
if (mcpServers.some((server: MCPServer) => server.name === mcpServer.name)) {
|
if (mcpServers.some((server: MCPServer) => server.name === mcpServer.name)) {
|
||||||
@ -131,24 +125,20 @@ const MCPSettings: FC = () => {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
window.api.mcp
|
try {
|
||||||
.addServer(mcpServer)
|
await window.api.mcp.addServer(mcpServer)
|
||||||
.then(() => {
|
|
||||||
dispatch(addMCPServer(mcpServer))
|
|
||||||
window.message.success(t('settings.mcp.addSuccess'))
|
window.message.success(t('settings.mcp.addSuccess'))
|
||||||
setLoading(false)
|
setLoading(false)
|
||||||
setIsModalVisible(false)
|
setIsModalVisible(false)
|
||||||
form.resetFields()
|
form.resetFields()
|
||||||
})
|
} catch (error: any) {
|
||||||
.catch((error) => {
|
|
||||||
window.message.error(`${t('settings.mcp.addError')}: ${error.message}`)
|
window.message.error(`${t('settings.mcp.addError')}: ${error.message}`)
|
||||||
setLoading(false)
|
setLoading(false)
|
||||||
})
|
|
||||||
}
|
}
|
||||||
})
|
}
|
||||||
.catch(() => {
|
} catch (error: any) {
|
||||||
setLoading(false)
|
setLoading(false)
|
||||||
})
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const handleDelete = (serverName: string) => {
|
const handleDelete = (serverName: string) => {
|
||||||
@ -159,30 +149,23 @@ const MCPSettings: FC = () => {
|
|||||||
okButtonProps: { danger: true },
|
okButtonProps: { danger: true },
|
||||||
cancelText: t('common.cancel'),
|
cancelText: t('common.cancel'),
|
||||||
centered: true,
|
centered: true,
|
||||||
onOk: () => {
|
onOk: async () => {
|
||||||
window.api.mcp
|
try {
|
||||||
.deleteServer(serverName)
|
await window.api.mcp.deleteServer(serverName)
|
||||||
.then(() => {
|
|
||||||
window.message.success(t('settings.mcp.deleteSuccess'))
|
window.message.success(t('settings.mcp.deleteSuccess'))
|
||||||
})
|
} catch (error: any) {
|
||||||
.catch((error) => {
|
|
||||||
window.message.error(`${t('settings.mcp.deleteError')}: ${error.message}`)
|
window.message.error(`${t('settings.mcp.deleteError')}: ${error.message}`)
|
||||||
})
|
}
|
||||||
dispatch(deleteMCPServer(serverName))
|
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
const handleToggleActive = (name: string, isActive: boolean) => {
|
const handleToggleActive = (name: string, isActive: boolean) => {
|
||||||
window.api.mcp
|
try {
|
||||||
.setServerActive(name, isActive)
|
window.api.mcp.setServerActive(name, isActive)
|
||||||
.then(() => {
|
} catch (error: any) {
|
||||||
// Optional: Show success message or update UI
|
|
||||||
})
|
|
||||||
.catch((error) => {
|
|
||||||
window.message.error(`${t('settings.mcp.toggleError')}: ${error.message}`)
|
window.message.error(`${t('settings.mcp.toggleError')}: ${error.message}`)
|
||||||
})
|
}
|
||||||
dispatch(setMCPServerActive({ name, isActive }))
|
|
||||||
}
|
}
|
||||||
|
|
||||||
const columns = [
|
const columns = [
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user