diff --git a/src/components/cards/NotificationChannelCard.vue b/src/components/cards/NotificationChannelCard.vue index 34a95b39..1b47ae67 100644 --- a/src/components/cards/NotificationChannelCard.vue +++ b/src/components/cards/NotificationChannelCard.vue @@ -8,6 +8,9 @@ import slack_image from '@images/logos/slack.webp' import chrome_image from '@images/logos/chrome.png' import { useToast } from 'vue-toast-notification' import { cloneDeep } from 'lodash-es' +import { useI18n } from 'vue-i18n' + +const { t } = useI18n() // 定义输入 const props = defineProps({ @@ -42,24 +45,24 @@ const notificationInfo = ref({ // 各通知类型的名称字典 const notificationTypeNames: { [key: string]: string } = { - wechat: '企业微信', - telegram: 'Telegram', - vocechat: 'VoceChat', - synologychat: 'Synology Chat', - slack: 'Slack', - webpush: 'WebPush', + wechat: t('notification.wechat.name'), + telegram: t('notification.telegram.name'), + vocechat: t('notification.vocechat.name'), + synologychat: t('notification.synologychat.name'), + slack: t('notification.slack.name'), + webpush: t('notification.webpush.name'), } // 消息类型下拉字典 const notificationTypes = [ - { value: '资源下载', title: '资源下载' }, - { value: '整理入库', title: '整理入库' }, - { value: '订阅', title: '订阅' }, - { value: '站点', title: '站点' }, - { value: '媒体服务器', title: '媒体服务器' }, - { value: '手动处理', title: '手动处理' }, - { value: '插件', title: '插件' }, - { value: '其它', title: '其它' }, + { value: '资源下载', title: t('notificationSwitch.resourceDownload') }, + { value: '整理入库', title: t('notificationSwitch.organize') }, + { value: '订阅', title: t('notificationSwitch.subscribe') }, + { value: '站点', title: t('notificationSwitch.site') }, + { value: '媒体服务器', title: t('notificationSwitch.mediaServer') }, + { value: '手动处理', title: t('notificationSwitch.manual') }, + { value: '插件', title: t('notificationSwitch.plugin') }, + { value: '其它', title: t('notificationSwitch.other') }, ] // 打开详情弹窗 @@ -73,12 +76,12 @@ function openNotificationInfoDialog() { function saveNotificationInfo() { // 为空不保存,跳出警告框 if (!notificationInfo.value.name) { - $toast.error('名称不能为空,请输入后再确定') + $toast.error(t('notification.name') + t('common.required')) return } // 重名判断 if (props.notifications.some(item => item.name === notificationInfo.value.name && item !== props.notification)) { - $toast.error(`通知渠道【${notificationInfo.value.name}】已存在,请替换`) + $toast.error(t('notification.channel') + `【${notificationInfo.value.name}】` + t('common.exists')) return } notificationInfoDialog.value = false @@ -132,21 +135,21 @@ function onClose() { - + - + @@ -226,43 +229,43 @@ function onClose() { @@ -271,36 +274,36 @@ function onClose() { @@ -309,25 +312,25 @@ function onClose() { @@ -336,34 +339,34 @@ function onClose() { @@ -372,17 +375,17 @@ function onClose() { @@ -391,7 +394,7 @@ function onClose() { - 确定 + {{ t('common.confirm') }} diff --git a/src/locales/en-US.ts b/src/locales/en-US.ts index 91b1c499..2947d95c 100644 --- a/src/locales/en-US.ts +++ b/src/locales/en-US.ts @@ -213,6 +213,71 @@ export default { center: 'Notification Center', markRead: 'Mark as Read', empty: 'No Notifications', + channel: 'Notification Channel', + name: 'Name', + type: 'Type', + typeHint: 'Select the types of notifications to receive', + enabled: 'Enabled', + config: 'Configuration', + wechat: { + name: 'WeChat Work', + corpId: 'Corp ID', + corpIdHint: 'Corp ID in WeChat Work backend enterprise information', + appId: 'App AgentId', + appIdHint: 'AgentId of self-built app in WeChat Work', + appSecret: 'App Secret', + appSecretHint: 'Secret of self-built app in WeChat Work', + proxy: 'Proxy Address', + proxyHint: + 'Proxy address for WeChat message forwarding, required for self-built apps created after June 20, 2022', + token: 'Token', + tokenHint: 'Token in WeChat Work self-built app -> API message receiving configuration', + encodingAesKey: 'EncodingAESKey', + encodingAesKeyHint: 'EncodingAESKey in WeChat Work self-built app -> API message receiving configuration', + admins: 'Admin Whitelist', + adminsHint: 'User IDs that can use admin menu and commands, separated by commas', + }, + telegram: { + name: 'Telegram', + token: 'Bot Token', + tokenHint: 'Telegram bot token, format: 123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11', + chatId: 'Chat ID', + chatIdHint: 'Chat ID of user, group or channel that receives notifications', + users: 'User Whitelist', + usersHint: 'User IDs that can use Telegram bot, separated by commas. Leave empty to allow all users', + admins: 'Admin Whitelist', + adminsHint: 'User IDs that can use admin menu and commands, separated by commas', + }, + slack: { + name: 'Slack', + oauthToken: 'Slack Bot User OAuth Token', + oauthTokenHint: 'Bot User OAuth Token in Slack app OAuth & Permissions page', + appToken: 'Slack App-Level Token', + appTokenHint: 'App-Level Token in Slack app OAuth & Permissions page', + channel: 'Channel Name', + channelHint: 'Channel to send messages, default is "all"', + }, + synologychat: { + name: 'Synology Chat', + webhook: 'Webhook URL', + webhookHint: 'Synology Chat bot webhook URL', + token: 'Token', + tokenHint: 'Synology Chat bot token', + }, + vocechat: { + name: 'VoceChat', + host: 'Address', + hostHint: 'VoceChat server address, format: http(s)://ip:port', + apiKey: 'Bot API Key', + apiKeyHint: 'VoceChat bot API key', + channelId: 'Channel ID', + channelIdHint: 'VoceChat channel ID, without #', + }, + webpush: { + name: 'WebPush', + username: 'Login Username', + usernameHint: 'Only push messages to the corresponding logged-in user', + }, }, shortcut: { title: 'Shortcuts', diff --git a/src/locales/zh-CN.ts b/src/locales/zh-CN.ts index bf039f1b..33d4c9f4 100644 --- a/src/locales/zh-CN.ts +++ b/src/locales/zh-CN.ts @@ -213,6 +213,69 @@ export default { center: '通知中心', markRead: '设为已读', empty: '暂无通知', + channel: '通知渠道', + name: '名称', + type: '类型', + enabled: '启用', + config: '配置', + wechat: { + name: '企业微信', + corpId: '企业ID', + corpIdHint: '企业微信后台企业信息中的企业ID', + appId: '应用 AgentId', + appIdHint: '企业微信自建应用的AgentId', + appSecret: '应用 Secret', + appSecretHint: '企业微信自建应用的Secret', + proxy: '代理地址', + proxyHint: '微信消息的转发代理地址,2022年6月20日后创建的自建应用才需要,不使用代理时需要保留默认值', + token: 'Token', + tokenHint: '微信企业自建应用->API接收消息配置中的Token', + encodingAesKey: 'EncodingAESKey', + encodingAesKeyHint: '微信企业自建应用->API接收消息配置中的EncodingAESKey', + admins: '管理员白名单', + adminsHint: '可使用管理菜单及命令的用户ID列表,多个ID使用,分隔', + }, + telegram: { + name: 'Telegram', + token: 'Bot Token', + tokenHint: 'Telegram机器人token,格式:123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11', + chatId: 'Chat ID', + chatIdHint: '接受消息通知的用户、群组或频道Chat ID', + users: '用户白名单', + usersHint: '可使用Telegram机器人的用户ID清单,多个用户用,分隔,不填写则所有用户都能使用', + admins: '管理员白名单', + adminsHint: '可使用管理菜单及命令的用户ID列表,多个ID使用,分隔', + }, + slack: { + name: 'Slack', + oauthToken: 'Slack Bot User OAuth Token', + oauthTokenHint: 'Slack应用`OAuth & Permissions`页面中的`Bot User OAuth Token`', + appToken: 'Slack App-Level Token', + appTokenHint: 'Slack应用`OAuth & Permissions`页面中的`App-Level Token`', + channel: '频道名称', + channelHint: '消息发送频道,默认`全体`', + }, + synologychat: { + name: 'Synology Chat', + webhook: '机器人传入URL', + webhookHint: 'Synology Chat机器人传入URL', + token: '令牌', + tokenHint: 'Synology Chat机器人令牌', + }, + vocechat: { + name: 'VoceChat', + host: '地址', + hostHint: 'VoceChat服务端地址,格式:http(s)://ip:port', + apiKey: '机器人密钥', + apiKeyHint: 'VoceChat机器人密钥', + channelId: '频道ID', + channelIdHint: 'VoceChat的频道ID,不包含#号', + }, + webpush: { + name: 'WebPush', + username: '登录用户名', + usernameHint: '只有对应的用户登录后才会推送消息', + }, }, shortcut: { title: '捷径', diff --git a/src/locales/zh-TW.ts b/src/locales/zh-TW.ts index 4394e8b3..f777ab14 100644 --- a/src/locales/zh-TW.ts +++ b/src/locales/zh-TW.ts @@ -213,6 +213,70 @@ export default { center: '通知中心', markRead: '設為已讀', empty: '暫無通知', + channel: '通知渠道', + name: '名稱', + type: '類型', + typeHint: '選擇需要接收的通知類型', + enabled: '啟用', + config: '配置', + wechat: { + name: '企業微信', + corpId: '企業ID', + corpIdHint: '企業微信後台企業信息中的企業ID', + appId: '應用 AgentId', + appIdHint: '企業微信自建應用的AgentId', + appSecret: '應用 Secret', + appSecretHint: '企業微信自建應用的Secret', + proxy: '代理地址', + proxyHint: '微信消息的轉發代理地址,2022年6月20日後創建的自建應用才需要,不使用代理時需要保留默認值', + token: 'Token', + tokenHint: '微信企業自建應用->API接收消息配置中的Token', + encodingAesKey: 'EncodingAESKey', + encodingAesKeyHint: '微信企業自建應用->API接收消息配置中的EncodingAESKey', + admins: '管理員白名單', + adminsHint: '可使用管理菜單及命令的用戶ID列表,多個ID使用,分隔', + }, + telegram: { + name: 'Telegram', + token: 'Bot Token', + tokenHint: 'Telegram機器人token,格式:123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11', + chatId: 'Chat ID', + chatIdHint: '接受消息通知的用戶、群組或頻道Chat ID', + users: '用戶白名單', + usersHint: '可使用Telegram機器人的用戶ID清單,多個用戶用,分隔,不填寫則所有用戶都能使用', + admins: '管理員白名單', + adminsHint: '可使用管理菜單及命令的用戶ID列表,多個ID使用,分隔', + }, + slack: { + name: 'Slack', + oauthToken: 'Slack Bot User OAuth Token', + oauthTokenHint: 'Slack應用`OAuth & Permissions`頁面中的`Bot User OAuth Token`', + appToken: 'Slack App-Level Token', + appTokenHint: 'Slack應用`OAuth & Permissions`頁面中的`App-Level Token`', + channel: '頻道名稱', + channelHint: '消息發送頻道,默認`全體`', + }, + synologychat: { + name: 'Synology Chat', + webhook: '機器人傳入URL', + webhookHint: 'Synology Chat機器人傳入URL', + token: '令牌', + tokenHint: 'Synology Chat機器人令牌', + }, + vocechat: { + name: 'VoceChat', + host: '地址', + hostHint: 'VoceChat服務端地址,格式:http(s)://ip:port', + apiKey: '機器人密鑰', + apiKeyHint: 'VoceChat機器人密鑰', + channelId: '頻道ID', + channelIdHint: 'VoceChat的頻道ID,不包含#號', + }, + webpush: { + name: 'WebPush', + username: '登錄用戶名', + usernameHint: '只有對應的用戶登錄後才會推送消息', + }, }, shortcut: { title: '捷徑',