mirror of
https://github.com/jxxghp/MoviePilot-Frontend.git
synced 2026-07-09 06:21:57 +08:00
更新国际化支持:为站点资源对话框及相关组件添加多语言文本,提升用户体验
This commit is contained in:
@@ -4,6 +4,10 @@ import api from '@/api'
|
|||||||
import type { TorrentInfo, SiteCategory } from '@/api/types'
|
import type { TorrentInfo, SiteCategory } from '@/api/types'
|
||||||
import { formatFileSize } from '@core/utils/formatters'
|
import { formatFileSize } from '@core/utils/formatters'
|
||||||
import AddDownloadDialog from '../dialog/AddDownloadDialog.vue'
|
import AddDownloadDialog from '../dialog/AddDownloadDialog.vue'
|
||||||
|
import { useI18n } from 'vue-i18n'
|
||||||
|
|
||||||
|
// 国际化
|
||||||
|
const { t } = useI18n()
|
||||||
|
|
||||||
// 输入参数
|
// 输入参数
|
||||||
const props = defineProps({
|
const props = defineProps({
|
||||||
@@ -49,11 +53,11 @@ const torrent = ref<TorrentInfo>()
|
|||||||
|
|
||||||
// 资源浏览表头
|
// 资源浏览表头
|
||||||
const resourceHeaders = [
|
const resourceHeaders = [
|
||||||
{ title: '标题', key: 'title', sortable: false },
|
{ title: t('dialog.siteResource.titleColumn'), key: 'title', sortable: false },
|
||||||
{ title: '时间', key: 'pubdate', sortable: true },
|
{ title: t('dialog.siteResource.timeColumn'), key: 'pubdate', sortable: true },
|
||||||
{ title: '大小', key: 'size', sortable: true },
|
{ title: t('dialog.siteResource.sizeColumn'), key: 'size', sortable: true },
|
||||||
{ title: '做种', key: 'seeders', sortable: true },
|
{ title: t('dialog.siteResource.seedersColumn'), key: 'seeders', sortable: true },
|
||||||
{ title: '下载', key: 'peers', sortable: true },
|
{ title: t('dialog.siteResource.peersColumn'), key: 'peers', sortable: true },
|
||||||
{ title: '', key: 'actions', sortable: false },
|
{ title: '', key: 'actions', sortable: false },
|
||||||
]
|
]
|
||||||
|
|
||||||
@@ -131,7 +135,7 @@ onMounted(() => {
|
|||||||
<!-- Toolbar -->
|
<!-- Toolbar -->
|
||||||
<div>
|
<div>
|
||||||
<VToolbar color="primary">
|
<VToolbar color="primary">
|
||||||
<VToolbarTitle>{{ `浏览 - ${props.site?.name}` }}</VToolbarTitle>
|
<VToolbarTitle>{{ t('dialog.siteResource.browseTitle', { name: props.site?.name }) }}</VToolbarTitle>
|
||||||
<VSpacer />
|
<VSpacer />
|
||||||
<VToolbarItems>
|
<VToolbarItems>
|
||||||
<VBtn icon @click="emit('close')" class="me-3">
|
<VBtn icon @click="emit('close')" class="me-3">
|
||||||
@@ -143,7 +147,13 @@ onMounted(() => {
|
|||||||
<div class="p-3">
|
<div class="p-3">
|
||||||
<VRow>
|
<VRow>
|
||||||
<VCol cols="6" md="5">
|
<VCol cols="6" md="5">
|
||||||
<VTextField v-model="keyword" size="small" density="compact" label="搜索关键字" clearable />
|
<VTextField
|
||||||
|
v-model="keyword"
|
||||||
|
size="small"
|
||||||
|
density="compact"
|
||||||
|
:label="t('dialog.siteResource.searchKeyword')"
|
||||||
|
clearable
|
||||||
|
/>
|
||||||
</VCol>
|
</VCol>
|
||||||
<VCol cols="6" md="5">
|
<VCol cols="6" md="5">
|
||||||
<VSelect
|
<VSelect
|
||||||
@@ -152,13 +162,13 @@ onMounted(() => {
|
|||||||
size="small"
|
size="small"
|
||||||
density="compact"
|
density="compact"
|
||||||
chips
|
chips
|
||||||
label="资源分类"
|
:label="t('dialog.siteResource.resourceCategory')"
|
||||||
multiple
|
multiple
|
||||||
clearable
|
clearable
|
||||||
/>
|
/>
|
||||||
</VCol>
|
</VCol>
|
||||||
<VCol cols="12" md="2" class="text-center">
|
<VCol cols="12" md="2" class="text-center">
|
||||||
<VBtn block prepend-icon="mdi-magnify" @click="getResourceList">搜索</VBtn>
|
<VBtn block prepend-icon="mdi-magnify" @click="getResourceList">{{ t('dialog.siteResource.search') }}</VBtn>
|
||||||
</VCol>
|
</VCol>
|
||||||
</VRow>
|
</VRow>
|
||||||
</div>
|
</div>
|
||||||
@@ -175,9 +185,9 @@ onMounted(() => {
|
|||||||
return-object
|
return-object
|
||||||
fixed-header
|
fixed-header
|
||||||
hover
|
hover
|
||||||
items-per-page-text="每页条数"
|
:items-per-page-text="t('dialog.siteResource.itemsPerPage')"
|
||||||
page-text="{0}-{1} 共 {2} 条"
|
:page-text="t('dialog.siteResource.pageText')"
|
||||||
loading-text="加载中..."
|
:loading-text="t('dialog.siteResource.loading')"
|
||||||
class="h-full"
|
class="h-full"
|
||||||
>
|
>
|
||||||
<template #item.title="{ item }">
|
<template #item.title="{ item }">
|
||||||
@@ -242,20 +252,20 @@ onMounted(() => {
|
|||||||
<template #prepend>
|
<template #prepend>
|
||||||
<VIcon icon="mdi-information" />
|
<VIcon icon="mdi-information" />
|
||||||
</template>
|
</template>
|
||||||
<VListItemTitle>查看详情</VListItemTitle>
|
<VListItemTitle>{{ t('dialog.siteResource.viewDetails') }}</VListItemTitle>
|
||||||
</VListItem>
|
</VListItem>
|
||||||
<VListItem v-if="item.enclosure?.startsWith('http')" @click="downloadTorrentFile(item.enclosure)">
|
<VListItem v-if="item.enclosure?.startsWith('http')" @click="downloadTorrentFile(item.enclosure)">
|
||||||
<template #prepend>
|
<template #prepend>
|
||||||
<VIcon icon="mdi-download" />
|
<VIcon icon="mdi-download" />
|
||||||
</template>
|
</template>
|
||||||
<VListItemTitle>下载种子文件</VListItemTitle>
|
<VListItemTitle>{{ t('dialog.siteResource.downloadTorrent') }}</VListItemTitle>
|
||||||
</VListItem>
|
</VListItem>
|
||||||
</VList>
|
</VList>
|
||||||
</VMenu>
|
</VMenu>
|
||||||
</IconBtn>
|
</IconBtn>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
<template #no-data> 没有数据 </template>
|
<template #no-data>{{ t('dialog.siteResource.noData') }}</template>
|
||||||
</VDataTable>
|
</VDataTable>
|
||||||
</VCardText>
|
</VCardText>
|
||||||
</VCard>
|
</VCard>
|
||||||
|
|||||||
@@ -1572,9 +1572,20 @@ export default {
|
|||||||
close: 'Close',
|
close: 'Close',
|
||||||
},
|
},
|
||||||
siteResource: {
|
siteResource: {
|
||||||
title: 'Site Resources',
|
browseTitle: 'Browse - {name}',
|
||||||
searchHint: 'Search resources',
|
searchKeyword: 'Search Keyword',
|
||||||
close: 'Close',
|
resourceCategory: 'Resource Category',
|
||||||
|
search: 'Search',
|
||||||
|
itemsPerPage: 'Items Per Page',
|
||||||
|
noData: 'No Data',
|
||||||
|
loading: 'Loading...',
|
||||||
|
titleColumn: 'Title',
|
||||||
|
timeColumn: 'Time',
|
||||||
|
sizeColumn: 'Size',
|
||||||
|
seedersColumn: 'Seeders',
|
||||||
|
peersColumn: 'Peers',
|
||||||
|
viewDetails: 'View Details',
|
||||||
|
downloadTorrent: 'Download Torrent',
|
||||||
},
|
},
|
||||||
forkSubscribe: {
|
forkSubscribe: {
|
||||||
title: 'Copy Subscription',
|
title: 'Copy Subscription',
|
||||||
|
|||||||
@@ -1549,9 +1549,21 @@ export default {
|
|||||||
close: '关闭',
|
close: '关闭',
|
||||||
},
|
},
|
||||||
siteResource: {
|
siteResource: {
|
||||||
title: '站点资源',
|
browseTitle: '浏览 - {name}',
|
||||||
searchHint: '搜索资源',
|
searchKeyword: '搜索关键字',
|
||||||
close: '关闭',
|
resourceCategory: '资源分类',
|
||||||
|
search: '搜索',
|
||||||
|
itemsPerPage: '每页条数',
|
||||||
|
pageText: '{0}-{1} 共 {2} 条',
|
||||||
|
noData: '没有数据',
|
||||||
|
loading: '加载中...',
|
||||||
|
titleColumn: '标题',
|
||||||
|
timeColumn: '时间',
|
||||||
|
sizeColumn: '大小',
|
||||||
|
seedersColumn: '做种',
|
||||||
|
peersColumn: '下载',
|
||||||
|
viewDetails: '查看详情',
|
||||||
|
downloadTorrent: '下载种子文件',
|
||||||
},
|
},
|
||||||
forkSubscribe: {
|
forkSubscribe: {
|
||||||
title: '复制订阅',
|
title: '复制订阅',
|
||||||
|
|||||||
@@ -1546,9 +1546,21 @@ export default {
|
|||||||
close: '關閉',
|
close: '關閉',
|
||||||
},
|
},
|
||||||
siteResource: {
|
siteResource: {
|
||||||
title: '站點資源',
|
browseTitle: '瀏覽 - {name}',
|
||||||
searchHint: '搜索資源',
|
searchKeyword: '搜索關鍵字',
|
||||||
close: '關閉',
|
resourceCategory: '資源分類',
|
||||||
|
search: '搜索',
|
||||||
|
itemsPerPage: '每頁條數',
|
||||||
|
pageText: '{0}-{1} 共 {2} 條',
|
||||||
|
noData: '沒有數據',
|
||||||
|
loading: '加載中...',
|
||||||
|
titleColumn: '標題',
|
||||||
|
timeColumn: '時間',
|
||||||
|
sizeColumn: '大小',
|
||||||
|
seedersColumn: '做種',
|
||||||
|
peersColumn: '下載',
|
||||||
|
viewDetails: '查看詳情',
|
||||||
|
downloadTorrent: '下載種子文件',
|
||||||
},
|
},
|
||||||
forkSubscribe: {
|
forkSubscribe: {
|
||||||
title: '複製訂閱',
|
title: '複製訂閱',
|
||||||
|
|||||||
Reference in New Issue
Block a user