diff --git a/src/components/cards/SubscribeCard.vue b/src/components/cards/SubscribeCard.vue index 43ab4f22..cd1348a0 100644 --- a/src/components/cards/SubscribeCard.vue +++ b/src/components/cards/SubscribeCard.vue @@ -8,6 +8,10 @@ import { formatDateDifference, formatSeason } from '@/@core/utils/formatters' import api from '@/api' import type { Subscribe } from '@/api/types' import router from '@/router' +import { useI18n } from 'vue-i18n' + +// 国际化 +const { t } = useI18n() // 输入参数 const props = defineProps({ @@ -88,22 +92,22 @@ async function searchSubscribe() { async function toggleSubscribeStatus(state: 'R' | 'S') { try { // 根据传入的 state 判断对应的操作文字 - const action = state === 'S' ? '暂停' : '启用' + const action = state === 'S' ? t('common.pause') : t('common.enable') // 弹出确认框 const isConfirmed = await createConfirm({ - title: `确认${action}`, - content: `是否${action}订阅 ${props.media?.name}?`, + title: t('common.confirmAction', { action }), + content: t('subscribe.confirmToggle', { action, name: props.media?.name }), }) if (!isConfirmed) return // 调用 API 更新订阅状态 const result: { [key: string]: any } = await api.put(`subscribe/status/${props.media?.id}?state=${state}`) // 提示 if (result.success) { - $toast.success(`${props.media?.name} 已${action}!`) + $toast.success(t('subscribe.toggleSuccess', { name: props.media?.name, action })) subscribeState.value = state emit('save') } else { - $toast.error(`${action}失败:${result.message}`) + $toast.error(t('subscribe.toggleFailed', { action, message: result.message })) } } catch (e) { console.log(e) @@ -115,18 +119,18 @@ async function resetSubscribe() { // 确认 try { const isConfirmed = await createConfirm({ - title: '确认', - content: `重置后 ${props.media?.name} 将恢复初始状态,已下载记录将被清除,未入库的内容将会重新下载,是否确认?`, + title: t('common.confirm'), + content: t('subscribe.resetConfirm', { name: props.media?.name }), }) if (!isConfirmed) return // 重置 const result: { [key: string]: any } = await api.get(`subscribe/reset/${props.media?.id}`) // 提示 if (result.success) { - $toast.success(`${props.media?.name} 重置成功!`) + $toast.success(t('subscribe.resetSuccess', { name: props.media?.name })) subscribeState.value = 'R' emit('save') - } else $toast.error(`${props.media?.name} 重置失败:${result.message}`) + } else $toast.error(t('subscribe.resetFailed', { name: props.media?.name, message: result.message })) } catch (e) { console.log(e) } @@ -171,7 +175,7 @@ async function viewSubscribeFiles() { // 弹出菜单 const dropdownItems = computed(() => [ { - title: '编辑', + title: t('common.edit'), value: 1, props: { prependIcon: 'mdi-file-edit-outline', @@ -179,7 +183,7 @@ const dropdownItems = computed(() => [ }, }, { - title: '搜索', + title: t('common.search'), value: 2, props: { prependIcon: 'mdi-magnify', @@ -187,7 +191,7 @@ const dropdownItems = computed(() => [ }, }, { - title: '详情', + title: t('common.details'), value: 3, props: { prependIcon: 'mdi-information-outline', @@ -195,7 +199,7 @@ const dropdownItems = computed(() => [ }, }, { - title: '文件', + title: t('common.files'), value: 4, props: { prependIcon: 'mdi-file-document-outline', @@ -203,7 +207,7 @@ const dropdownItems = computed(() => [ }, }, { - title: subscribeState.value === 'S' ? '启用' : '暂停', + title: subscribeState.value === 'S' ? t('common.enable') : t('common.pause'), value: 5, props: { prependIcon: subscribeState.value === 'S' ? 'mdi-play' : 'mdi-pause', @@ -212,7 +216,7 @@ const dropdownItems = computed(() => [ }, }, { - title: '重置', + title: t('common.reset'), value: 6, props: { prependIcon: 'mdi-restore-alert', @@ -221,7 +225,7 @@ const dropdownItems = computed(() => [ }, }, { - title: '分享', + title: t('common.share'), value: 7, props: { prependIcon: 'mdi-share', @@ -231,7 +235,7 @@ const dropdownItems = computed(() => [ show: props.media?.type === '电视剧', }, { - title: '取消订阅', + title: t('common.unsubscribe'), value: 8, props: { prependIcon: 'mdi-trash-can-outline', diff --git a/src/locales/en-US.ts b/src/locales/en-US.ts index 42241eb9..aed8528a 100644 --- a/src/locales/en-US.ts +++ b/src/locales/en-US.ts @@ -30,6 +30,13 @@ export default { viewDetails: 'View Details', user: 'User', config: 'Configuration', + pause: 'Pause', + enable: 'Enable', + confirmAction: 'Confirm {action}', + details: 'Details', + files: 'Files', + share: 'Share', + unsubscribe: 'Unsubscribe', }, mediaType: { movie: 'Movie', @@ -453,6 +460,13 @@ export default { recognitionWords: 'Recognition Words', cancelShare: 'Cancel Share', usageCount: '{count} Uses', + confirmToggle: 'Are you sure you want to {action} subscription {name}?', + toggleSuccess: '{name} has been {action}d!', + toggleFailed: '{action} failed: {message}', + resetConfirm: + 'After reset, {name} will be restored to its initial state, downloaded records will be cleared, and unimported content will be downloaded again. Are you sure?', + resetSuccess: '{name} has been reset successfully!', + resetFailed: '{name} reset failed: {message}', }, recommend: { all: 'All', diff --git a/src/locales/zh-CN.ts b/src/locales/zh-CN.ts index 8d96b919..5ea969dc 100644 --- a/src/locales/zh-CN.ts +++ b/src/locales/zh-CN.ts @@ -30,6 +30,13 @@ export default { viewDetails: '查看详情', user: '用户', config: '配置', + pause: '暂停', + enable: '启用', + confirmAction: '确认{action}', + details: '详情', + files: '文件', + share: '分享', + unsubscribe: '取消订阅', }, mediaType: { movie: '电影', @@ -451,6 +458,12 @@ export default { recognitionWords: '识别词', cancelShare: '取消分享', usageCount: '共 {count} 次复用', + confirmToggle: '是否{action}订阅 {name}?', + toggleSuccess: '{name} 已{action}!', + toggleFailed: '{action}失败:{message}', + resetConfirm: '重置后 {name} 将恢复初始状态,已下载记录将被清除,未入库的内容将会重新下载,是否确认?', + resetSuccess: '{name} 重置成功!', + resetFailed: '{name} 重置失败:{message}', }, recommend: { all: '全部', diff --git a/src/locales/zh-TW.ts b/src/locales/zh-TW.ts index c66d9514..000ad263 100644 --- a/src/locales/zh-TW.ts +++ b/src/locales/zh-TW.ts @@ -30,6 +30,13 @@ export default { viewDetails: '查看詳情', user: '用戶', config: '配置', + pause: '暫停', + enable: '啟用', + confirmAction: '確認{action}', + details: '詳情', + files: '文件', + share: '分享', + unsubscribe: '取消訂閱', }, mediaType: { movie: '電影', @@ -452,6 +459,12 @@ export default { recognitionWords: '識別詞', cancelShare: '取消分享', usageCount: '共 {count} 次複用', + confirmToggle: '是否{action}訂閱 {name}?', + toggleSuccess: '{name} 已{action}!', + toggleFailed: '{action}失敗:{message}', + resetConfirm: '重置後 {name} 將恢復初始狀態,已下載記錄將被清除,未入庫的內容將會重新下載,是否確認?', + resetSuccess: '{name} 重置成功!', + resetFailed: '{name} 重置失敗:{message}', }, recommend: { all: '全部',