更新国际化支持:为过滤媒体和资源组件添加多语言文本,提升用户体验

This commit is contained in:
jxxghp
2025-04-29 11:51:45 +08:00
parent 2a6abded08
commit 893df36c9d
6 changed files with 254 additions and 152 deletions

View File

@@ -40,13 +40,6 @@ async function loadMediaCategories() {
}
}
// 根据选中的媒体类型,获取对应的媒体类别
const getCategories = computed(() => {
const default_value = [{ title: t('common.all'), value: '' }]
if (!mediaCategories.value || !mediaCategories.value[props.data.type ?? '']) return default_value
return default_value.concat(mediaCategories.value[props.data.type ?? ''])
})
onMounted(() => {
loadMediaCategories()
})

View File

@@ -250,7 +250,6 @@ export default {
channel: 'Notification Channel',
name: 'Name',
type: 'Type',
typeHint: 'Select the types of notifications to receive',
enabled: 'Enabled',
config: 'Configuration',
wechat: {
@@ -393,11 +392,18 @@ export default {
downloader: 'Downloader',
category: 'Category',
savePath: 'Save Path',
onlyLack: 'Only Download Missing',
sequential: 'Sequential',
forceResume: 'Force Resume',
firstLastPiece: 'First Last Piece',
onlyLack: 'Only Download Lack Resource'
},
addSubscribe: {
title: 'Add Subscribe',
subtitle: 'Add resource to subscription',
type: 'Type',
name: 'Name',
season: 'Season',
episode: 'Episode',
},
fetchMedias: {
title: 'Fetch Media Data',
@@ -407,6 +413,10 @@ export default {
type: 'Type',
name: 'Name',
year: 'Year',
ranking: 'Ranking',
api: 'Plugin API',
apiPath: 'API Path',
selectRanking: 'Select Ranking',
tmdbTrending: 'TMDB Trending',
doubanShowing: 'Now Showing',
bangumiCalendar: 'Bangumi Daily',
@@ -425,44 +435,10 @@ export default {
title: 'Filter Media Data',
subtitle: 'Filter media data list',
type: 'Type',
name: 'Name',
year: 'Year',
vote: 'Vote',
},
filterTorrents: {
title: 'Filter Resources',
subtitle: 'Filter resource list',
quality: 'Quality',
qualityOptions: {
all: 'All',
blurayOriginal: 'Blu-ray Original',
remux: 'Remux',
bluray: 'BluRay',
uhd: 'UHD',
webdl: 'WEB-DL',
hdtv: 'HDTV',
h265: 'H265',
h264: 'H264',
},
resolution: 'Resolution',
resolutionOptions: {
all: 'All',
'4k': '4K',
'1080p': '1080p',
'720p': '720p',
},
effect: 'Effect',
effectOptions: {
all: 'All',
dolbyVision: 'Dolby Vision',
dolbyAtmos: 'Dolby Atmos',
hdr: 'HDR',
sdr: 'SDR',
},
size: 'Size Range',
include: 'Include (Keywords, Regex)',
exclude: 'Exclude (Keywords, Regex)',
ruleGroups: 'Filter Rule Groups',
},
scrapeFile: {
title: 'Scrape File',
subtitle: 'Scrape media info and images',
@@ -516,6 +492,41 @@ export default {
downloads: 'Downloads',
},
},
filterTorrents: {
title: 'Filter Resources',
subtitle: 'Filter resource list',
quality: 'Quality',
qualityOptions: {
all: 'All',
blurayOriginal: 'Blu-ray Original',
remux: 'Remux',
bluray: 'BluRay',
uhd: 'UHD',
webdl: 'WEB-DL',
hdtv: 'HDTV',
h265: 'H265',
h264: 'H264',
},
resolution: 'Resolution',
resolutionOptions: {
all: 'All',
'4k': '4K',
'1080p': '1080p',
'720p': '720p',
},
effect: 'Effect',
effectOptions: {
all: 'All',
dolbyVision: 'Dolby Vision',
dolbyAtmos: 'Dolby Atmos',
hdr: 'HDR',
sdr: 'SDR',
},
size: 'Size Range',
include: 'Include (Keywords, Regex)',
exclude: 'Exclude (Keywords, Regex)',
ruleGroups: 'Filter Rule Groups',
},
title: 'Workflow',
noWorkflow: 'No Workflow',
noWorkflowDescription: 'Click the add button to create a workflow task.',
@@ -1144,7 +1155,6 @@ export default {
downloadUser: 'Remote Search Auto Download User List',
downloadUserHint:
'Whether to automatically download when searching with Telegram, WeChat, etc., comma separated, set to all to represent all users auto-download',
downloadUserPlaceholder: 'UserID1,UserID2',
multipleNameSearch: 'Multiple Name Resource Search',
multipleNameSearchHint:
'Search site resources using multiple names (Chinese, English, etc.) and merge search results, will increase site access frequency',
@@ -1153,6 +1163,7 @@ export default {
mediaSource: 'Media Search Data Source',
mediaSourceHint: 'Data sources and sorting used when searching for media information',
filterRuleGroupHint: 'Filter results by selected filter rule groups when searching for media information',
downloadUserPlaceholder: 'UserID1,UserID2',
downloadLabelPlaceholder: 'MOVIEPILOT',
},
directory: {
@@ -1835,6 +1846,19 @@ export default {
installing: 'Installing {name} v{version} ...',
installSuccess: 'Plugin {name} installed successfully!',
installFailed: 'Plugin {name} installation failed: {message}',
filterPlugins: 'Filter Plugins',
name: 'Name',
hasNewVersion: 'Has New Version',
author: 'Author',
label: 'Label',
repository: 'Repository',
sortTitle: 'Sort',
filter: 'Filter: {name}',
noMatchingContent: 'No matching content found',
pleaseInstallFromMarket: 'Please install plugins from the plugin market',
allPluginsInstalled: 'All plugins are installed',
searchPlugins: 'Search Plugins',
searchPlaceholder: 'Search by plugin name or description',
uninstalling: 'Uninstalling {name} ...',
uninstallSuccess: 'Plugin {name} uninstalled successfully!',
uninstallFailed: 'Plugin {name} uninstallation failed: {message}',

View File

@@ -87,7 +87,6 @@ export default {
subscribeMovie: '电影订阅',
subscribeTv: '电视剧订阅',
settings: '设置',
language: '语言设置',
selectLanguage: '选择语言',
logout: '退出登录',
restarting: '正在重启...',
@@ -390,9 +389,11 @@ export default {
subtitle: '添加资源到下载器',
downloader: '下载器',
category: '分类',
savePath: '保存路径',
sequential: '顺序下载',
forceResume: '强制继续',
firstLastPiece: '优先首尾文件',
onlyLack: '仅下载缺失资源',
},
addSubscribe: {
title: '添加订阅',
@@ -405,10 +406,28 @@ export default {
fetchMedias: {
title: '获取媒体',
subtitle: '从媒体服务器获取媒体信息',
server: '媒体服务器',
source: '数据源',
searchType: '搜索类型',
type: '类型',
name: '名称',
year: '年份',
ranking: '榜单',
api: '插件API',
apiPath: 'API路径',
selectRanking: '选择榜单',
tmdbTrending: 'TMDB 流行趋势',
doubanShowing: '豆瓣正在热映',
bangumiCalendar: 'Bangumi 每日放送',
tmdbMovies: 'TMDB 热门电影',
tmdbTvs: 'TMDB 热门电视剧',
doubanMovieHot: '豆瓣热门电影',
doubanTvHot: '豆瓣热门电视剧',
doubanTvAnimation: '豆瓣热门动漫',
doubanMovies: '豆瓣最新电影',
doubanTvs: '豆瓣最新电视剧',
doubanMovieTop250: '豆瓣电影TOP250',
doubanTvWeeklyChinese: '豆瓣国产剧集榜',
doubanTvWeeklyGlobal: '豆瓣全球剧集榜',
},
filterMedias: {
title: '过滤媒体',
@@ -416,39 +435,45 @@ export default {
type: '类型',
name: '名称',
year: '年份',
season: '',
episode: '集',
vote: '评分',
},
scrapeFile: {
title: '刮削文件',
subtitle: '刮削文件元数据',
storage: '存储',
directory: '目录',
},
sendEvent: {
title: '发送事件',
subtitle: '发送系统事件',
event: '事件',
data: '数据',
},
fetchDownloads: {
title: '获取下载',
subtitle: '获取下载器任务',
downloader: '下载器',
status: '状态',
loop: '循环执行',
loopInterval: '循环间隔',
},
fetchRss: {
title: '获取RSS',
subtitle: '获取RSS订阅',
url: 'URL',
interval: '间隔',
userAgent: 'User-Agent',
timeout: '超时时间',
matchMedia: '匹配媒体数据',
useProxy: '使用代理',
},
fetchTorrents: {
title: '获取种子',
subtitle: '获取种子列表',
site: '站点',
keyword: '关键词',
category: '分类',
title: '获取站点资源',
subtitle: '获取站点种子列表',
searchType: '搜索类型',
searchOptions: {
name: '名称',
mediaList: '媒体列表',
},
name: '名称',
year: '年份',
type: '类型',
season: '季',
sites: '站点',
matchMedia: '匹配媒体数据',
},
sendMessage: {
title: '发送消息',
@@ -460,8 +485,10 @@ export default {
title: '传输文件',
subtitle: '传输文件到目标目录',
source: '源目录',
target: '目标目录',
storage: '存储',
sourceOptions: {
fileList: '文件列表',
downloads: '下载列表',
},
},
filterTorrents: {
title: '过滤资源',
@@ -1109,6 +1136,7 @@ export default {
tvCategory: '电视剧',
animeCategory: '动漫',
downloadUser: '远程搜索自动下载用户',
downloadUserHint: '使用Telegram、微信等搜索时是否自动下载使用逗号分割设置为 all 代表所有用户自动择优下载',
multipleNameSearch: '多名称资源搜索',
multipleNameSearchHint: '使用多个名称(中文、英文等)搜索站点资源并合并搜索结果,会增加站点访问频率',
downloadSubtitle: '下载站点字幕',
@@ -1117,13 +1145,13 @@ export default {
mediaSourceHint: '搜索媒体信息时使用的数据源以及排序',
filterRuleGroupHint: '搜索媒体信息时按选定的过滤规则组对结果进行过滤',
downloadUserPlaceholder: '用户ID1,用户ID2',
downloadUserHint: '使用Telegram、微信等搜索时是否自动下载使用逗号分割设置为 all 代表所有用户自动择优下载',
downloadLabelPlaceholder: 'MOVIEPILOT',
},
directory: {
storage: '存储',
storageDesc: '设置本地或网盘存储。',
directory: '目录',
mediaType: '媒体类型',
directoryDesc: '设置媒体文件整理目录结构,按先后顺序依次匹配。',
organizeAndScrap: '整理 & 刮削',
organizeAndScrapDesc: '设置重命名格式、刮削选项等。',
@@ -1182,8 +1210,8 @@ export default {
importHasId: '导入失败发现有规则存在相同ID可能属于自定义规则',
},
scheduler: {
scheduledTasks: '定时作业',
scheduledTasksDesc: '包含系统内置服务以及插件提供的服务,手动执行不会影响作业正常的时间表。',
title: '定时作业',
subtitle: '包含系统内置服务以及插件提供的服务,手动执行不会影响作业正常的时间表。',
provider: '提供者',
taskName: '任务名称',
taskStatus: '任务状态',
@@ -1235,6 +1263,23 @@ export default {
progress: {
processing: '处理中',
},
subscribeSeason: {
title: '订阅 - {title}',
selectGroup: '选择剧集组',
defaultGroup: '默认',
seasonCount: '{count} 季',
episodeCount: '{count} 集',
seasonNumber: '第 {number} 季',
airDate: '首播于 {date}',
voteAverage: '{score}',
status: {
exists: '已入库',
partial: '部分缺失',
missing: '缺失',
},
submit: '提交订阅',
selectSeasons: '请选择订阅季',
},
userAddEdit: {
add: '添加用户',
edit: '编辑用户',
@@ -1253,11 +1298,11 @@ export default {
resetDefaultAvatar: '重置默认头像',
restoreCurrentAvatar: '还原当前头像',
notifications: '通知',
wechat: '微信UserID',
telegram: 'Telegram UserID',
slack: 'Slack UserID',
vocechat: 'VoceChat UserID',
synologyChat: 'SynologyChat UserID',
wechat: '微信ID',
telegram: 'Telegram ID',
slack: 'Slack ID',
vocechat: 'VoceChat ID',
synologyChat: 'SynologyChat ID',
webPush: 'WebPush',
creatingUser: '正在创建【{name}】用户,请稍后',
updatingUser: '正在更新【{name}】用户,请稍后',
@@ -1653,23 +1698,6 @@ export default {
season: '第 {season} 季',
noData: '没有已完成的订阅',
},
subscribeSeason: {
title: '订阅 - {title}',
selectGroup: '选择剧集组',
defaultGroup: '默认',
seasonCount: '{count} 季',
episodeCount: '{count} 集',
seasonNumber: '第 {number} 季',
airDate: '首播于 {date}',
voteAverage: '{score}',
status: {
exists: '已入库',
partial: '部分缺失',
missing: '缺失',
},
submit: '提交订阅',
selectSeasons: '请选择订阅季',
},
siteUserData: {
title: '站点用户数据',
updateTime: '更新时间',
@@ -1701,7 +1729,6 @@ export default {
resourceCategory: '资源分类',
search: '搜索',
itemsPerPage: '每页条数',
pageText: '{0}-{1} 共 {2} 条',
noData: '没有数据',
loading: '加载中...',
titleColumn: '标题',
@@ -1770,6 +1797,7 @@ export default {
renamingAll: '正在重命名 {path} 及目录内所有文件...',
close: '关闭',
loadingDirectoryStructure: '加载目录结构...',
reorganize: '重新整理',
},
person: {
alias: '别名:',
@@ -1796,6 +1824,19 @@ export default {
installing: '正在安装 {name} v{version} ...',
installSuccess: '插件 {name} 安装成功!',
installFailed: '插件 {name} 安装失败:{message}',
filterPlugins: '过滤插件',
name: '名称',
hasNewVersion: '有新版本',
author: '作者',
label: '标签',
repository: '仓库',
sortTitle: '排序',
filter: '过滤:{name}',
noMatchingContent: '没有找到匹配的内容',
pleaseInstallFromMarket: '请从插件市场安装插件',
allPluginsInstalled: '所有插件已安装',
searchPlugins: '搜索插件',
searchPlaceholder: '按插件名称或描述搜索',
uninstalling: '正在卸载 {name} ...',
uninstallSuccess: '插件 {name} 卸载成功!',
uninstallFailed: '插件 {name} 卸载失败:{message}',
@@ -1992,6 +2033,13 @@ export default {
shareFailed: '规则复制失败',
mediaType: '媒体类型',
category: '媒体类别',
mediaTypeItems: {
movie: '电影',
tv: '电视剧',
anime: '动漫',
collection: '合集',
unknown: '未知',
},
},
mediaserver: {
enableMediaServer: '启用媒体服务器',

View File

@@ -250,7 +250,6 @@ export default {
channel: '通知渠道',
name: '名稱',
type: '類型',
typeHint: '選擇需要接收的通知類型',
enabled: '啟用',
config: '配置',
wechat: {
@@ -387,16 +386,23 @@ export default {
directory: '目錄',
},
addDownload: {
title: '添加下',
subtitle: '添加源到下器',
downloader: '下器',
category: '分',
savePath: '保存路',
onlyLack: '僅下載缺失的資源',
title: '添加下',
subtitle: '添加源到下器',
downloader: '下器',
category: '分',
savePath: '保存路',
sequential: '顺序下载',
forceResume: '强制继续',
firstLastPiece: '优先首尾文件',
onlyLack: '仅下载缺失资源',
},
addSubscribe: {
title: '添加訂閱',
subtitle: '添加源到訂閱',
title: '添加订阅',
subtitle: '添加源到订阅',
type: '类型',
name: '名称',
season: '季',
episode: '集',
},
fetchMedias: {
title: '獲取媒體數據',
@@ -406,6 +412,10 @@ export default {
type: '類型',
name: '名稱',
year: '年份',
ranking: '榜单',
api: '插件API',
apiPath: 'API路径',
selectRanking: '选择榜单',
tmdbTrending: '流行趨勢',
doubanShowing: '正在熱映',
bangumiCalendar: 'Bangumi每日放送',
@@ -424,44 +434,10 @@ export default {
title: '過濾媒體數據',
subtitle: '對媒體數據列表進行過濾',
type: '類型',
name: '名稱',
year: '年份',
vote: '評分',
},
filterTorrents: {
title: '過濾資源',
subtitle: '對資源列表數據進行過濾',
quality: '質量',
qualityOptions: {
all: '全部',
blurayOriginal: '藍光原盤',
remux: 'Remux',
bluray: 'BluRay',
uhd: 'UHD',
webdl: 'WEB-DL',
hdtv: 'HDTV',
h265: 'H265',
h264: 'H264',
},
resolution: '分辨率',
resolutionOptions: {
all: '全部',
'4k': '4k',
'1080p': '1080p',
'720p': '720p',
},
effect: '特效',
effectOptions: {
all: '全部',
dolbyVision: '杜比視界',
dolbyAtmos: '杜比全景聲',
hdr: 'HDR',
sdr: 'SDR',
},
size: '大小範圍',
include: '包含(關鍵字、正則式)',
exclude: '排除(關鍵字、正則式)',
ruleGroups: '過濾規則組',
},
scrapeFile: {
title: '刮削文件',
subtitle: '刮削媒體信息和圖片',
@@ -503,8 +479,8 @@ export default {
sendMessage: {
title: '發送消息',
subtitle: '發送任務執行消息',
channel: '消息渠道',
userId: '用戶ID',
type: '類型',
content: '內容',
},
transferFile: {
title: '整理文件',
@@ -515,6 +491,41 @@ export default {
downloads: '下載任務',
},
},
filterTorrents: {
title: '過濾資源',
subtitle: '對資源列表數據進行過濾',
quality: '質量',
qualityOptions: {
all: '全部',
blurayOriginal: '藍光原盤',
remux: 'Remux',
bluray: 'BluRay',
uhd: 'UHD',
webdl: 'WEB-DL',
hdtv: 'HDTV',
h265: 'H265',
h264: 'H264',
},
resolution: '分辨率',
resolutionOptions: {
all: '全部',
'4k': '4k',
'1080p': '1080p',
'720p': '720p',
},
effect: '特效',
effectOptions: {
all: '全部',
dolbyVision: '杜比視界',
dolbyAtmos: '杜比全景聲',
hdr: 'HDR',
sdr: 'SDR',
},
size: '大小範圍',
include: '包含(關鍵字、正則式)',
exclude: '排除(關鍵字、正則式)',
ruleGroups: '過濾規則組',
},
title: '工作流',
noWorkflow: '沒有工作流',
noWorkflowDescription: '點擊添加按鈕創建工作流任務。',
@@ -689,19 +700,23 @@ export default {
backButton: '返回',
},
torrent: {
filterSite: '站點',
filterSeason: '季集',
filterFreeState: '促銷狀態',
filterVideoCode: '視頻編碼',
filterEdition: '質量',
filterResolution: '分辨率',
filterReleaseGroup: '製作組',
selectAll: '全選',
clear: '清除',
clearFilters: '清除篩選',
confirm: '確定',
resources: '個資源',
noResults: '沒有找到匹配的資源',
sortDefault: '默認',
sortSite: '站點',
sortSize: '大小',
sortSeeder: '做種數',
resources: '個資源',
noResults: '暫無符合條件的資源',
filterSite: '站點',
filterSeason: '季',
filterFreeState: '促銷狀態',
filterVideoCode: '視頻編碼',
filterEdition: '质量',
filterResolution: '分辨率',
filterReleaseGroup: '製作組',
},
calendar: {
episode: '第{number}集',
@@ -1806,13 +1821,26 @@ export default {
repository: '插件倉庫',
latest: '最新發布',
},
installingPlugin: '正在安插件...',
installing: '正在安 {name} v{version} ...',
installSuccess: '插件 {name} 安成功!',
installFailed: '插件 {name} 安裝失敗{message}',
installingPlugin: '正在安插件...',
installing: '正在安 {name} v{version} ...',
installSuccess: '插件 {name} 安成功!',
installFailed: '插件 {name} 安装失败{message}',
filterPlugins: '過濾插件',
name: '名稱',
hasNewVersion: '有新版本',
author: '作者',
label: '標籤',
repository: '倉庫',
sortTitle: '排序',
filter: '過濾:{name}',
noMatchingContent: '沒有找到匹配的內容',
pleaseInstallFromMarket: '請從插件市場安裝插件',
allPluginsInstalled: '所有插件已安裝',
searchPlugins: '搜索插件',
searchPlaceholder: '按插件名稱或描述搜索',
uninstalling: '正在卸載 {name} ...',
uninstallSuccess: '插件 {name} 已卸載',
uninstallFailed: '插件 {name} 卸載失敗{message}',
uninstallSuccess: '插件 {name} 卸载成功!',
uninstallFailed: '插件 {name} 卸载失败{message}',
updating: '正在更新 {name} ...',
updateSuccess: '插件 {name} 更新成功!',
updateFailed: '插件 {name} 更新失敗:{message}',
@@ -2004,6 +2032,15 @@ export default {
importFailed: '規則導入失敗',
shareSuccess: '規則已複製到剪貼板',
shareFailed: '規則複製失敗',
mediaType: '媒體類型',
category: '媒體類別',
mediaTypeItems: {
movie: '電影',
tv: '電視劇',
anime: '動漫',
collection: '合集',
unknown: '未知',
},
},
mediaserver: {
enableMediaServer: '啟用媒體伺服器',

View File

@@ -589,7 +589,7 @@ useDynamicButton({
v-model="activeSort"
:items="sortOptions"
density="comfortable"
:label="t('plugin.sort')"
:label="t('plugin.sortTitle')"
/>
</VCol>
</VRow>

View File

@@ -660,7 +660,7 @@ onMounted(fetchData)
<div class="w-auto">
<VSelect v-model="itemsPerPage" :items="pageRange" density="compact" flat />
</div>
<div class="w-auto text-sm">{{ t('transferHistory.pageInfo', pageTip) }}</div>
<div class="w-auto text-sm">{{ t('transferHistory.pageInfo', pageTip) }} {{ totalItems }}</div>
<VPagination
v-model="currentPage"
show-first-last-page