mirror of
https://github.com/jxxghp/MoviePilot-Frontend.git
synced 2026-06-11 02:31:34 +08:00
更新国际化支持:为订阅卡片及相关组件添加多语言文本,提升用户体验
This commit is contained in:
@@ -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',
|
||||
|
||||
@@ -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',
|
||||
|
||||
@@ -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: '全部',
|
||||
|
||||
@@ -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: '全部',
|
||||
|
||||
Reference in New Issue
Block a user