mirror of
https://github.com/jxxghp/MoviePilot-Frontend.git
synced 2026-05-27 19:29:52 +08:00
更新国际化支持:调整多个组件中的文本引入,优化站点设置相关的翻译和文本结构,确保语言切换的准确性和一致性。
This commit is contained in:
@@ -244,39 +244,6 @@ export default {
|
||||
recognitionWords: 'Recognition Words',
|
||||
cancelShare: 'Cancel Share',
|
||||
usageCount: 'Used {count} times',
|
||||
basicSettings: 'Basic Settings',
|
||||
basicSettingsDesc: 'Set subscription mode, cycle and other basic settings',
|
||||
mode: 'Subscription Mode',
|
||||
modeHint: 'Auto: automatically crawl site homepage, Site RSS: subscribe via site RSS link',
|
||||
rssInterval: 'Site RSS Interval',
|
||||
rssIntervalHint: 'Set the site RSS running cycle, effective when subscription mode is `Site RSS`',
|
||||
filterRuleGroup: 'Subscription Priority Rule Group',
|
||||
filterRuleGroupHint: 'Filter subscriptions based on selected filter rule groups',
|
||||
bestVersionRuleGroup: 'Version Upgrade Priority Rule Group',
|
||||
bestVersionRuleGroupHint: 'Filter version upgrade subscriptions based on selected filter rule groups',
|
||||
timedSearch: 'Subscription Scheduled Search',
|
||||
timedSearchHint: 'Search all sites every 24 hours to supplement resources that may be missed by subscription',
|
||||
checkLocalMedia: 'Check Local Media Library',
|
||||
checkLocalMediaHint: 'Check if resources exist on storage disk to avoid duplicate downloads',
|
||||
subscribeSites: 'Subscription Sites',
|
||||
subscribeSitesDesc: 'Only selected sites will be used in subscription.',
|
||||
saveSuccess: 'Subscription sites saved successfully',
|
||||
saveFailed: 'Failed to save subscription sites!',
|
||||
settingsSaveSuccess: 'Subscription basic settings saved successfully',
|
||||
settingsSaveFailed: 'Failed to save subscription basic settings!',
|
||||
modes: {
|
||||
auto: 'Auto',
|
||||
rss: 'Site RSS',
|
||||
},
|
||||
intervals: {
|
||||
min5: '5 minutes',
|
||||
min10: '10 minutes',
|
||||
min20: '20 minutes',
|
||||
min30: '30 minutes',
|
||||
hour1: '1 hour',
|
||||
hour12: '12 hours',
|
||||
day1: '1 day',
|
||||
},
|
||||
},
|
||||
recommend: {
|
||||
all: 'All',
|
||||
@@ -361,49 +328,6 @@ export default {
|
||||
site: {
|
||||
noSites: 'No Sites',
|
||||
sitesWillBeShownHere: 'Added and supported sites will be displayed here.',
|
||||
siteSync: 'Site Synchronization',
|
||||
siteSyncDesc: 'Quickly sync site data from CookieCloud.',
|
||||
enableLocalCookieCloud: 'Enable Local CookieCloud Server',
|
||||
enableLocalCookieCloudHint:
|
||||
'Use built-in CookieCloud service to sync site data, service address: http://localhost:3000/cookiecloud',
|
||||
serviceAddress: 'Service Address',
|
||||
serviceAddressPlaceholder: 'https://movie-pilot.org/cookiecloud',
|
||||
serviceAddressHint: 'Remote CookieCloud service address, format: https://movie-pilot.org/cookiecloud',
|
||||
userKey: 'User KEY',
|
||||
userKeyHint: 'User KEY generated by CookieCloud browser plugin',
|
||||
e2ePassword: 'End-to-End Encryption Password',
|
||||
e2ePasswordHint: 'End-to-end encryption password generated by CookieCloud browser plugin',
|
||||
autoSyncInterval: 'Auto Sync Interval',
|
||||
autoSyncIntervalHint: 'Time interval for automatically syncing site cookies from CookieCloud server to MoviePilot',
|
||||
syncBlacklist: 'Sync Domain Blacklist',
|
||||
syncBlacklistPlaceholder: 'Multiple domains, separated by commas',
|
||||
syncBlacklistHint: 'CookieCloud sync domain blacklist, multiple domains separated by commas',
|
||||
userAgent: 'Browser User-Agent',
|
||||
userAgentHint: 'User-Agent of the browser with CookieCloud plugin',
|
||||
siteDataRefresh: 'Site Data Refresh',
|
||||
siteDataRefreshInterval: 'Site Data Refresh Interval',
|
||||
siteDataRefreshIntervalHint: 'Time interval for refreshing site user upload/download data',
|
||||
readSiteMessage: 'Read Site Messages',
|
||||
readSiteMessageHint: 'Read site messages and send notifications when refreshing data',
|
||||
siteReset: 'Site Reset',
|
||||
confirmReset: 'Confirm to delete all site data and resync.',
|
||||
confirmResetHint:
|
||||
'Delete all site data and resync from CookieCloud. Please clear all related site settings before this operation.',
|
||||
resetSites: 'Reset Site Data',
|
||||
resettingSites: 'Resetting...',
|
||||
syncInterval: {
|
||||
hourly: 'Hourly',
|
||||
every6Hours: 'Every 6 Hours',
|
||||
every12Hours: 'Every 12 Hours',
|
||||
daily: 'Daily',
|
||||
weekly: 'Weekly',
|
||||
monthly: 'Monthly',
|
||||
never: 'Never',
|
||||
},
|
||||
saveSuccess: 'Site settings saved successfully',
|
||||
saveFailed: 'Failed to save site settings!',
|
||||
resetSuccess: 'Sites reset successfully, please wait for CookieCloud sync to complete!',
|
||||
resetFailed: 'Failed to reset sites!',
|
||||
},
|
||||
message: {
|
||||
loadMore: 'Load More',
|
||||
@@ -516,6 +440,52 @@ export default {
|
||||
copyError: 'Copy failed!',
|
||||
reloading: 'Applying configuration...',
|
||||
},
|
||||
site: {
|
||||
siteSync: 'Site Synchronization',
|
||||
siteSyncDesc: 'Quickly sync site data from CookieCloud.',
|
||||
enableLocalCookieCloud: 'Enable Local CookieCloud Server',
|
||||
enableLocalCookieCloudHint:
|
||||
'Use built-in CookieCloud service to sync site data, service address: http://localhost:3000/cookiecloud',
|
||||
serviceAddress: 'Service Address',
|
||||
serviceAddressPlaceholder: 'https://movie-pilot.org/cookiecloud',
|
||||
serviceAddressHint: 'Remote CookieCloud service address, format: https://movie-pilot.org/cookiecloud',
|
||||
userKey: 'User KEY',
|
||||
userKeyHint: 'User KEY generated by CookieCloud browser plugin',
|
||||
e2ePassword: 'End-to-End Encryption Password',
|
||||
e2ePasswordHint: 'End-to-end encryption password generated by CookieCloud browser plugin',
|
||||
autoSyncInterval: 'Auto Sync Interval',
|
||||
autoSyncIntervalHint:
|
||||
'Time interval for automatically syncing site cookies from CookieCloud server to MoviePilot',
|
||||
syncBlacklist: 'Sync Domain Blacklist',
|
||||
syncBlacklistPlaceholder: 'Multiple domains, separated by commas',
|
||||
syncBlacklistHint: 'CookieCloud sync domain blacklist, multiple domains separated by commas',
|
||||
userAgent: 'Browser User-Agent',
|
||||
userAgentHint: 'User-Agent of the browser with CookieCloud plugin',
|
||||
siteDataRefresh: 'Site Data Refresh',
|
||||
siteDataRefreshInterval: 'Site Data Refresh Interval',
|
||||
siteDataRefreshIntervalHint: 'Time interval for refreshing site user upload/download data',
|
||||
readSiteMessage: 'Read Site Messages',
|
||||
readSiteMessageHint: 'Read site messages and send notifications when refreshing data',
|
||||
siteReset: 'Site Reset',
|
||||
confirmReset: 'Confirm to delete all site data and resync.',
|
||||
confirmResetHint:
|
||||
'Delete all site data and resync from CookieCloud. Please clear all related site settings before this operation.',
|
||||
resetSites: 'Reset Site Data',
|
||||
resettingSites: 'Resetting...',
|
||||
syncInterval: {
|
||||
hourly: 'Hourly',
|
||||
every6Hours: 'Every 6 Hours',
|
||||
every12Hours: 'Every 12 Hours',
|
||||
daily: 'Daily',
|
||||
weekly: 'Weekly',
|
||||
monthly: 'Monthly',
|
||||
never: 'Never',
|
||||
},
|
||||
saveSuccess: 'Site settings saved successfully',
|
||||
saveFailed: 'Failed to save site settings!',
|
||||
resetSuccess: 'Sites reset successfully, please wait for CookieCloud sync to complete!',
|
||||
resetFailed: 'Failed to reset sites!',
|
||||
},
|
||||
notification: {
|
||||
channels: 'Notification Channels',
|
||||
channelsDesc: 'Set message sending channel parameters.',
|
||||
@@ -644,60 +614,95 @@ export default {
|
||||
organizeSaveFailed: 'Failed to save organization options!',
|
||||
duplicateDirectoryName: 'Duplicate directory names exist! Cannot save, please modify!',
|
||||
},
|
||||
},
|
||||
rule: {
|
||||
customRules: 'Custom Rules',
|
||||
customRulesDesc: 'Custom priority rule items',
|
||||
priorityRuleGroups: 'Priority Rule Groups',
|
||||
priorityRuleGroupsDesc: 'Preset priority rule groups for use in search and subscription.',
|
||||
downloadRules: 'Download Rules',
|
||||
downloadRulesDesc: 'Prioritize downloads when multiple resources match.',
|
||||
currentPriorityRules: 'Current Download Priority Rules',
|
||||
currentPriorityRulesHint: 'Higher priority for items at the front, unselected items are not included in sorting',
|
||||
saveSuccess: 'Custom rules saved successfully',
|
||||
saveFailed: 'Failed to save custom rules!',
|
||||
groupSaveSuccess: 'Priority rule groups saved successfully',
|
||||
groupSaveFailed: 'Failed to save priority rule groups!',
|
||||
prioritySaveSuccess: 'Priority rules saved successfully',
|
||||
prioritySaveFailed: 'Failed to save priority rules!',
|
||||
emptyRuleId: 'Rules with empty IDs exist! Cannot save, please modify!',
|
||||
emptyRuleName: 'Rules with empty names exist! Cannot save, please modify!',
|
||||
duplicateRuleId: 'Duplicate rule IDs exist! Cannot save, please modify!',
|
||||
duplicateRuleName: 'Duplicate rule names exist! Cannot save, please modify!',
|
||||
emptyGroupName: 'Rule groups with empty names exist! Cannot save, please modify!',
|
||||
duplicateGroupName: 'Duplicate rule group names exist! Cannot save, please modify!',
|
||||
copySuccess: 'Copied to clipboard!',
|
||||
copyFailed: 'Copy failed: browser may not support or user blocked!',
|
||||
copyError: 'Copy failed!',
|
||||
importCustomRules: 'Import Custom Rules',
|
||||
importRuleGroups: 'Import Priority Rule Groups',
|
||||
importFailed: 'Failed to import rules! Cannot parse input data!',
|
||||
importUnknownType: 'Failed to import rules! Unknown data type!',
|
||||
duplicateValue: 'Duplicate values exist',
|
||||
importNoId: 'Import failed! Found rules without IDs, may belong to priority rule groups!',
|
||||
importHasId: 'Import failed! Found rules with IDs, may belong to custom rules!',
|
||||
torrentPriority: {
|
||||
torrent: 'Resource Priority',
|
||||
site: 'Site Priority',
|
||||
upload: 'Site Upload Amount',
|
||||
seeder: 'Resource Seeders',
|
||||
rule: {
|
||||
customRules: 'Custom Rules',
|
||||
customRulesDesc: 'Custom priority rule items',
|
||||
priorityRuleGroups: 'Priority Rule Groups',
|
||||
priorityRuleGroupsDesc: 'Preset priority rule groups for use in search and subscription.',
|
||||
downloadRules: 'Download Rules',
|
||||
downloadRulesDesc: 'Prioritize downloads when multiple resources match.',
|
||||
currentPriorityRules: 'Current Download Priority Rules',
|
||||
currentPriorityRulesHint: 'Higher priority for items at the front, unselected items are not included in sorting',
|
||||
saveSuccess: 'Custom rules saved successfully',
|
||||
saveFailed: 'Failed to save custom rules!',
|
||||
groupSaveSuccess: 'Priority rule groups saved successfully',
|
||||
groupSaveFailed: 'Failed to save priority rule groups!',
|
||||
prioritySaveSuccess: 'Priority rules saved successfully',
|
||||
prioritySaveFailed: 'Failed to save priority rules!',
|
||||
emptyRuleId: 'Rules with empty IDs exist! Cannot save, please modify!',
|
||||
emptyRuleName: 'Rules with empty names exist! Cannot save, please modify!',
|
||||
duplicateRuleId: 'Duplicate rule IDs exist! Cannot save, please modify!',
|
||||
duplicateRuleName: 'Duplicate rule names exist! Cannot save, please modify!',
|
||||
emptyGroupName: 'Rule groups with empty names exist! Cannot save, please modify!',
|
||||
duplicateGroupName: 'Duplicate rule group names exist! Cannot save, please modify!',
|
||||
copySuccess: 'Copied to clipboard!',
|
||||
copyFailed: 'Copy failed: browser may not support or user blocked!',
|
||||
copyError: 'Copy failed!',
|
||||
importCustomRules: 'Import Custom Rules',
|
||||
importRuleGroups: 'Import Priority Rule Groups',
|
||||
importFailed: 'Failed to import rules! Cannot parse input data!',
|
||||
importUnknownType: 'Failed to import rules! Unknown data type!',
|
||||
duplicateValue: 'Duplicate values exist',
|
||||
importNoId: 'Import failed! Found rules without IDs, may belong to priority rule groups!',
|
||||
importHasId: 'Import failed! Found rules with IDs, may belong to custom rules!',
|
||||
torrentPriority: {
|
||||
torrent: 'Resource Priority',
|
||||
site: 'Site Priority',
|
||||
upload: 'Site Upload Amount',
|
||||
seeder: 'Resource Seeders',
|
||||
},
|
||||
},
|
||||
},
|
||||
scheduler: {
|
||||
scheduledTasks: 'Scheduled Tasks',
|
||||
scheduledTasksDesc:
|
||||
'Includes system built-in services and plugin-provided services. Manual execution will not affect the normal schedule of tasks.',
|
||||
provider: 'Provider',
|
||||
taskName: 'Task Name',
|
||||
taskStatus: 'Task Status',
|
||||
nextRunTime: 'Next Run Time',
|
||||
execute: 'Execute',
|
||||
noServices: 'No background services',
|
||||
submitSuccess: 'Task execution request submitted successfully!',
|
||||
status: {
|
||||
running: 'Running',
|
||||
stopped: 'Stopped',
|
||||
waiting: 'Waiting',
|
||||
scheduler: {
|
||||
scheduledTasks: 'Scheduled Tasks',
|
||||
scheduledTasksDesc:
|
||||
'Includes system built-in services and plugin-provided services. Manual execution will not affect the normal schedule of tasks.',
|
||||
provider: 'Provider',
|
||||
taskName: 'Task Name',
|
||||
taskStatus: 'Task Status',
|
||||
nextRunTime: 'Next Run Time',
|
||||
execute: 'Execute',
|
||||
noServices: 'No background services',
|
||||
submitSuccess: 'Task execution request submitted successfully!',
|
||||
status: {
|
||||
running: 'Running',
|
||||
stopped: 'Stopped',
|
||||
waiting: 'Waiting',
|
||||
},
|
||||
},
|
||||
subscribe: {
|
||||
basicSettings: 'Basic Settings',
|
||||
basicSettingsDesc: 'Set subscription mode, cycle and other basic settings',
|
||||
mode: 'Subscription Mode',
|
||||
modeHint: 'Auto: automatically crawl site homepage, Site RSS: subscribe via site RSS link',
|
||||
rssInterval: 'Site RSS Interval',
|
||||
rssIntervalHint: 'Set the site RSS running cycle, effective when subscription mode is `Site RSS`',
|
||||
filterRuleGroup: 'Subscription Priority Rule Group',
|
||||
filterRuleGroupHint: 'Filter subscriptions based on selected filter rule groups',
|
||||
bestVersionRuleGroup: 'Version Upgrade Priority Rule Group',
|
||||
bestVersionRuleGroupHint: 'Filter version upgrade subscriptions based on selected filter rule groups',
|
||||
timedSearch: 'Subscription Scheduled Search',
|
||||
timedSearchHint: 'Search all sites every 24 hours to supplement resources that may be missed by subscription',
|
||||
checkLocalMedia: 'Check Local Media Library',
|
||||
checkLocalMediaHint: 'Check if resources exist on storage disk to avoid duplicate downloads',
|
||||
subscribeSites: 'Subscription Sites',
|
||||
subscribeSitesDesc: 'Only selected sites will be used in subscription.',
|
||||
saveSuccess: 'Subscription sites saved successfully',
|
||||
saveFailed: 'Failed to save subscription sites!',
|
||||
settingsSaveSuccess: 'Subscription basic settings saved successfully',
|
||||
settingsSaveFailed: 'Failed to save subscription basic settings!',
|
||||
modes: {
|
||||
auto: 'Auto',
|
||||
rss: 'Site RSS',
|
||||
},
|
||||
intervals: {
|
||||
min5: '5 minutes',
|
||||
min10: '10 minutes',
|
||||
min20: '20 minutes',
|
||||
min30: '30 minutes',
|
||||
hour1: '1 hour',
|
||||
hour12: '12 hours',
|
||||
day1: '1 day',
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
@@ -242,39 +242,6 @@ export default {
|
||||
recognitionWords: '识别词',
|
||||
cancelShare: '取消分享',
|
||||
usageCount: '共 {count} 次复用',
|
||||
basicSettings: '基础设置',
|
||||
basicSettingsDesc: '设定订阅模式、周期等基础设置',
|
||||
mode: '订阅模式',
|
||||
modeHint: '自动:自动爬取站点首页,站点RSS:通过站点RSS链接订阅',
|
||||
rssInterval: '站点RSS周期',
|
||||
rssIntervalHint: '设置站点RSS运行周期,在订阅模式为`站点RSS`时生效',
|
||||
filterRuleGroup: '订阅优先级规则组',
|
||||
filterRuleGroupHint: '按选定的过滤规则组对订阅进行过滤',
|
||||
bestVersionRuleGroup: '洗版优先级规则组',
|
||||
bestVersionRuleGroupHint: '按选定的过滤规则组对洗版订阅进行过滤',
|
||||
timedSearch: '订阅定时搜索',
|
||||
timedSearchHint: '每隔24小时全站搜索,以补全订阅可能漏掉的资源',
|
||||
checkLocalMedia: '检查本地媒体库资源',
|
||||
checkLocalMediaHint: '检查存储盘是否存在资源,以避免重复下载',
|
||||
subscribeSites: '订阅站点',
|
||||
subscribeSitesDesc: '只有选中的站点才会在订阅中使用。',
|
||||
saveSuccess: '订阅站点保存成功',
|
||||
saveFailed: '订阅站点保存失败!',
|
||||
settingsSaveSuccess: '订阅基础设置保存成功',
|
||||
settingsSaveFailed: '订阅基础设置保存失败!',
|
||||
modes: {
|
||||
auto: '自动',
|
||||
rss: '站点RSS',
|
||||
},
|
||||
intervals: {
|
||||
min5: '5分钟',
|
||||
min10: '10分钟',
|
||||
min20: '20分钟',
|
||||
min30: '半小时',
|
||||
hour1: '1小时',
|
||||
hour12: '12小时',
|
||||
day1: '1天',
|
||||
},
|
||||
},
|
||||
recommend: {
|
||||
all: '全部',
|
||||
@@ -400,38 +367,6 @@ export default {
|
||||
saveFailed: '站点设置保存失败!',
|
||||
resetSuccess: '站点重置成功,请等待CookieCloud同步完成!',
|
||||
resetFailed: '站点重置失败!',
|
||||
search: {
|
||||
basicSettings: '基础设置',
|
||||
basicSettingsDesc: '设定数据源、规则组等基础信息。',
|
||||
recognizeSource: '识别数据源',
|
||||
recognizeSourceDesc: '默认使用TMDB。豆瓣识别中文作品通常更友好,但有些国外作品信息不完整。',
|
||||
themoviedb: 'TheMovieDb',
|
||||
douban: '豆瓣',
|
||||
filterRuleGroup: '过滤规则组',
|
||||
filterRuleGroupDesc: '设置下载过程中使用的过滤规则组。',
|
||||
downloadLabel: '下载任务标签',
|
||||
downloadLabelDesc: '下载器中的下载标签,用于过滤查询。',
|
||||
downloadLabelHint: '支持增加多个标签,英文逗号分隔',
|
||||
downloadSite: '搜索站点',
|
||||
downloadSiteDesc: '设置指定分类搜索的站点范围。',
|
||||
movieSites: '电影站点',
|
||||
tvSites: '电视剧站点',
|
||||
animeSites: '动漫站点',
|
||||
saveSites: '保存站点',
|
||||
saveSuccess: '保存搜索设置成功',
|
||||
saveFailed: '搜索设置保存失败!',
|
||||
saveRuleFailed: '规则保存失败!',
|
||||
movieCategory: '电影',
|
||||
tvCategory: '电视剧',
|
||||
animeCategory: '动漫',
|
||||
downloadUser: '远程搜索自动下载用户',
|
||||
downloadUserHint:
|
||||
'使用Telegram、微信等远程搜索时是否自动下载,多个用户使用英文逗号分隔,设置为all代表所有用户自动下载',
|
||||
multipleNameSearch: '多名称资源搜索',
|
||||
multipleNameSearchHint: '使用多个名称(中文、英文等)搜索站点资源并合并搜索结果,会增加站点访问频率',
|
||||
downloadSubtitle: '下载站点字幕',
|
||||
downloadSubtitleHint: '检查站点资源是否有单独的字幕文件并自动下载',
|
||||
},
|
||||
},
|
||||
message: {
|
||||
loadMore: '加载更多',
|
||||
@@ -612,80 +547,147 @@ export default {
|
||||
excludeWordsSaveSuccess: '文件整理屏蔽词保存成功',
|
||||
excludeWordsSaveFailed: '文件整理屏蔽词保存失败!',
|
||||
},
|
||||
},
|
||||
directory: {
|
||||
storage: '存储',
|
||||
storageDesc: '设置本地或网盘存储。',
|
||||
directory: '目录',
|
||||
directoryDesc: '设置媒体文件整理目录结构,按先后顺序依次匹配。',
|
||||
organizeAndScrap: '整理 & 刮削',
|
||||
organizeAndScrapDesc: '设置重命名格式、刮削选项等。',
|
||||
scrapSource: '刮削数据源',
|
||||
scrapSourceHint: '刮削时的元数据来源',
|
||||
movieRenameFormat: '电影重命名格式',
|
||||
movieRenameFormatHint: '使用Jinja2语法,格式参考:https://jinja.palletsprojects.com/en/3.0.x/templates',
|
||||
tvRenameFormat: '电视剧重命名格式',
|
||||
tvRenameFormatHint: '使用Jinja2语法,格式参考:https://jinja.palletsprojects.com/en/3.0.x/templates',
|
||||
saveSuccess: '存储设置保存成功',
|
||||
saveFailed: '存储设置保存失败!',
|
||||
directorySaveSuccess: '目录设置保存成功',
|
||||
directorySaveFailed: '目录设置保存失败!',
|
||||
organizeSaveSuccess: '整理选项设置保存成功',
|
||||
organizeSaveFailed: '整理选项设置保存失败!',
|
||||
duplicateDirectoryName: '存在重复目录名称!无法保存,请修改!',
|
||||
},
|
||||
rule: {
|
||||
customRules: '自定义规则',
|
||||
customRulesDesc: '自定义优先级规则项',
|
||||
priorityRuleGroups: '优先级规则组',
|
||||
priorityRuleGroupsDesc: '预设优先级规则组,以便在搜索和订阅中使用。',
|
||||
downloadRules: '下载规则',
|
||||
downloadRulesDesc: '同时命中多个资源时择优下载。',
|
||||
currentPriorityRules: '当前使用下载优先规则',
|
||||
currentPriorityRulesHint: '排在前面的优先级越高,未选择的项不纳入排序',
|
||||
saveSuccess: '自定义规则保存成功',
|
||||
saveFailed: '自定义规则保存失败!',
|
||||
groupSaveSuccess: '优先级规则组保存成功',
|
||||
groupSaveFailed: '优先级规则组保存失败!',
|
||||
prioritySaveSuccess: '优先规则保存成功',
|
||||
prioritySaveFailed: '优先规则保存失败!',
|
||||
emptyRuleId: '存在空ID的规则,无法保存,请修改!',
|
||||
emptyRuleName: '存在空名字的规则,无法保存,请修改!',
|
||||
duplicateRuleId: '存在重复规则ID!无法保存,请修改!',
|
||||
duplicateRuleName: '存在重复规则名称!无法保存,请修改!',
|
||||
emptyGroupName: '存在空名字的规则组!无法保存,请修改!',
|
||||
duplicateGroupName: '存在重复规则组名称!无法保存,请修改!',
|
||||
copySuccess: '已复制到剪贴板!',
|
||||
copyFailed: '复制失败:可能是浏览器不支持或被用户阻止!',
|
||||
copyError: '复制失败!',
|
||||
importCustomRules: '导入自定义规则',
|
||||
importRuleGroups: '导入优先级规则组',
|
||||
importFailed: '导入规则失败!无法解析输入的数据!',
|
||||
importUnknownType: '导入规则失败!未知的数据类型!',
|
||||
duplicateValue: '存在重名值',
|
||||
importNoId: '导入失败!发现有规则不存在ID,可能属于优先级规则组!',
|
||||
importHasId: '导入失败!发现有规则存在相同ID,可能属于自定义规则!',
|
||||
torrentPriority: {
|
||||
torrent: '资源优先级',
|
||||
site: '站点优先级',
|
||||
upload: '站点上传量',
|
||||
seeder: '资源做种数',
|
||||
search: {
|
||||
basicSettings: '基础设置',
|
||||
basicSettingsDesc: '设定数据源、规则组等基础信息。',
|
||||
recognizeSource: '识别数据源',
|
||||
recognizeSourceDesc: '默认使用TMDB。豆瓣识别中文作品通常更友好,但有些国外作品信息不完整。',
|
||||
themoviedb: 'TheMovieDb',
|
||||
douban: '豆瓣',
|
||||
filterRuleGroup: '过滤规则组',
|
||||
filterRuleGroupDesc: '设置下载过程中使用的过滤规则组。',
|
||||
downloadLabel: '下载任务标签',
|
||||
downloadLabelDesc: '下载器中的下载标签,用于过滤查询。',
|
||||
downloadLabelHint: '支持增加多个标签,英文逗号分隔',
|
||||
downloadSite: '搜索站点',
|
||||
downloadSiteDesc: '设置指定分类搜索的站点范围。',
|
||||
movieSites: '电影站点',
|
||||
tvSites: '电视剧站点',
|
||||
animeSites: '动漫站点',
|
||||
saveSites: '保存站点',
|
||||
saveSuccess: '保存搜索设置成功',
|
||||
saveFailed: '搜索设置保存失败!',
|
||||
saveRuleFailed: '规则保存失败!',
|
||||
movieCategory: '电影',
|
||||
tvCategory: '电视剧',
|
||||
animeCategory: '动漫',
|
||||
downloadUser: '远程搜索自动下载用户',
|
||||
downloadUserHint:
|
||||
'使用Telegram、微信等远程搜索时是否自动下载,多个用户使用英文逗号分隔,设置为all代表所有用户自动下载',
|
||||
multipleNameSearch: '多名称资源搜索',
|
||||
multipleNameSearchHint: '使用多个名称(中文、英文等)搜索站点资源并合并搜索结果,会增加站点访问频率',
|
||||
downloadSubtitle: '下载站点字幕',
|
||||
downloadSubtitleHint: '检查站点资源是否有单独的字幕文件并自动下载',
|
||||
},
|
||||
},
|
||||
scheduler: {
|
||||
scheduledTasks: '定时作业',
|
||||
scheduledTasksDesc: '包含系统内置服务以及插件提供的服务,手动执行不会影响作业正常的时间表。',
|
||||
provider: '提供者',
|
||||
taskName: '任务名称',
|
||||
taskStatus: '任务状态',
|
||||
nextRunTime: '下一次执行时间',
|
||||
execute: '执行',
|
||||
noServices: '没有后台服务',
|
||||
submitSuccess: '定时作业执行请求提交成功!',
|
||||
status: {
|
||||
running: '正在运行',
|
||||
stopped: '已停止',
|
||||
waiting: '等待',
|
||||
directory: {
|
||||
storage: '存储',
|
||||
storageDesc: '设置本地或网盘存储。',
|
||||
directory: '目录',
|
||||
directoryDesc: '设置媒体文件整理目录结构,按先后顺序依次匹配。',
|
||||
organizeAndScrap: '整理 & 刮削',
|
||||
organizeAndScrapDesc: '设置重命名格式、刮削选项等。',
|
||||
scrapSource: '刮削数据源',
|
||||
scrapSourceHint: '刮削时的元数据来源',
|
||||
movieRenameFormat: '电影重命名格式',
|
||||
movieRenameFormatHint: '使用Jinja2语法,格式参考:https://jinja.palletsprojects.com/en/3.0.x/templates',
|
||||
tvRenameFormat: '电视剧重命名格式',
|
||||
tvRenameFormatHint: '使用Jinja2语法,格式参考:https://jinja.palletsprojects.com/en/3.0.x/templates',
|
||||
saveSuccess: '存储设置保存成功',
|
||||
saveFailed: '存储设置保存失败!',
|
||||
directorySaveSuccess: '目录设置保存成功',
|
||||
directorySaveFailed: '目录设置保存失败!',
|
||||
organizeSaveSuccess: '整理选项设置保存成功',
|
||||
organizeSaveFailed: '整理选项设置保存失败!',
|
||||
duplicateDirectoryName: '存在重复目录名称!无法保存,请修改!',
|
||||
},
|
||||
rule: {
|
||||
customRules: '自定义规则',
|
||||
customRulesDesc: '自定义优先级规则项',
|
||||
priorityRuleGroups: '优先级规则组',
|
||||
priorityRuleGroupsDesc: '预设优先级规则组,以便在搜索和订阅中使用。',
|
||||
downloadRules: '下载规则',
|
||||
downloadRulesDesc: '同时命中多个资源时择优下载。',
|
||||
currentPriorityRules: '当前使用下载优先规则',
|
||||
currentPriorityRulesHint: '排在前面的优先级越高,未选择的项不纳入排序',
|
||||
saveSuccess: '自定义规则保存成功',
|
||||
saveFailed: '自定义规则保存失败!',
|
||||
groupSaveSuccess: '优先级规则组保存成功',
|
||||
groupSaveFailed: '优先级规则组保存失败!',
|
||||
prioritySaveSuccess: '优先规则保存成功',
|
||||
prioritySaveFailed: '优先规则保存失败!',
|
||||
emptyRuleId: '存在空ID的规则,无法保存,请修改!',
|
||||
emptyRuleName: '存在空名字的规则,无法保存,请修改!',
|
||||
duplicateRuleId: '存在重复规则ID!无法保存,请修改!',
|
||||
duplicateRuleName: '存在重复规则名称!无法保存,请修改!',
|
||||
emptyGroupName: '存在空名字的规则组!无法保存,请修改!',
|
||||
duplicateGroupName: '存在重复规则组名称!无法保存,请修改!',
|
||||
copySuccess: '已复制到剪贴板!',
|
||||
copyFailed: '复制失败:可能是浏览器不支持或被用户阻止!',
|
||||
copyError: '复制失败!',
|
||||
importCustomRules: '导入自定义规则',
|
||||
importRuleGroups: '导入优先级规则组',
|
||||
importFailed: '导入规则失败!无法解析输入的数据!',
|
||||
importUnknownType: '导入规则失败!未知的数据类型!',
|
||||
duplicateValue: '存在重名值',
|
||||
importNoId: '导入失败!发现有规则不存在ID,可能属于优先级规则组!',
|
||||
importHasId: '导入失败!发现有规则存在相同ID,可能属于自定义规则!',
|
||||
torrentPriority: {
|
||||
torrent: '资源优先级',
|
||||
site: '站点优先级',
|
||||
upload: '站点上传量',
|
||||
seeder: '资源做种数',
|
||||
},
|
||||
},
|
||||
scheduler: {
|
||||
scheduledTasks: '定时作业',
|
||||
scheduledTasksDesc: '包含系统内置服务以及插件提供的服务,手动执行不会影响作业正常的时间表。',
|
||||
provider: '提供者',
|
||||
taskName: '任务名称',
|
||||
taskStatus: '任务状态',
|
||||
nextRunTime: '下一次执行时间',
|
||||
execute: '执行',
|
||||
noServices: '没有后台服务',
|
||||
submitSuccess: '定时作业执行请求提交成功!',
|
||||
status: {
|
||||
running: '正在运行',
|
||||
stopped: '已停止',
|
||||
waiting: '等待',
|
||||
},
|
||||
},
|
||||
subscribe: {
|
||||
basicSettings: '基础设置',
|
||||
basicSettingsDesc: '设定订阅模式、周期等基础设置',
|
||||
mode: '订阅模式',
|
||||
modeHint: '自动:自动爬取站点首页,站点RSS:通过站点RSS链接订阅',
|
||||
rssInterval: '站点RSS周期',
|
||||
rssIntervalHint: '设置站点RSS运行周期,在订阅模式为`站点RSS`时生效',
|
||||
filterRuleGroup: '订阅优先级规则组',
|
||||
filterRuleGroupHint: '按选定的过滤规则组对订阅进行过滤',
|
||||
bestVersionRuleGroup: '洗版优先级规则组',
|
||||
bestVersionRuleGroupHint: '按选定的过滤规则组对洗版订阅进行过滤',
|
||||
timedSearch: '订阅定时搜索',
|
||||
timedSearchHint: '每隔24小时全站搜索,以补全订阅可能漏掉的资源',
|
||||
checkLocalMedia: '检查本地媒体库资源',
|
||||
checkLocalMediaHint: '检查存储盘是否存在资源,以避免重复下载',
|
||||
subscribeSites: '订阅站点',
|
||||
subscribeSitesDesc: '只有选中的站点才会在订阅中使用。',
|
||||
saveSuccess: '订阅站点保存成功',
|
||||
saveFailed: '订阅站点保存失败!',
|
||||
settingsSaveSuccess: '订阅基础设置保存成功',
|
||||
settingsSaveFailed: '订阅基础设置保存失败!',
|
||||
modes: {
|
||||
auto: '自动',
|
||||
rss: '站点RSS',
|
||||
},
|
||||
intervals: {
|
||||
min5: '5分钟',
|
||||
min10: '10分钟',
|
||||
min20: '20分钟',
|
||||
min30: '半小时',
|
||||
hour1: '1小时',
|
||||
hour12: '12小时',
|
||||
day1: '1天',
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
@@ -17,7 +17,7 @@ const progressDialog = ref(false)
|
||||
const isConfirmResetSites = ref(false)
|
||||
|
||||
// 站点重置按钮文本
|
||||
const resetSitesText = ref(t('site.resetSites'))
|
||||
const resetSitesText = ref(t('setting.site.resetSites'))
|
||||
|
||||
// 站点重置按钮可用状态
|
||||
const resetSitesDisabled = ref(false)
|
||||
@@ -43,37 +43,37 @@ const siteSetting = ref<any>({
|
||||
|
||||
// 同步间隔下拉框
|
||||
const CookieCloudIntervalItems = [
|
||||
{ title: t('site.syncInterval.hourly'), value: 60 },
|
||||
{ title: t('site.syncInterval.every6Hours'), value: 360 },
|
||||
{ title: t('site.syncInterval.every12Hours'), value: 720 },
|
||||
{ title: t('site.syncInterval.daily'), value: 1440 },
|
||||
{ title: t('site.syncInterval.weekly'), value: 10080 },
|
||||
{ title: t('site.syncInterval.monthly'), value: 43200 },
|
||||
{ title: t('site.syncInterval.never'), value: 0 },
|
||||
{ title: t('setting.site.syncInterval.hourly'), value: 60 },
|
||||
{ title: t('setting.site.syncInterval.every6Hours'), value: 360 },
|
||||
{ title: t('setting.site.syncInterval.every12Hours'), value: 720 },
|
||||
{ title: t('setting.site.syncInterval.daily'), value: 1440 },
|
||||
{ title: t('setting.site.syncInterval.weekly'), value: 10080 },
|
||||
{ title: t('setting.site.syncInterval.monthly'), value: 43200 },
|
||||
{ title: t('setting.site.syncInterval.never'), value: 0 },
|
||||
]
|
||||
|
||||
// 站点数据刷新间隔
|
||||
const SiteDataRefreshIntervalItems = [
|
||||
{ title: t('site.syncInterval.hourly'), value: 1 },
|
||||
{ title: t('site.syncInterval.every6Hours'), value: 6 },
|
||||
{ title: t('site.syncInterval.every12Hours'), value: 12 },
|
||||
{ title: t('site.syncInterval.daily'), value: 24 },
|
||||
{ title: t('site.syncInterval.weekly'), value: 168 },
|
||||
{ title: t('site.syncInterval.never'), value: 0 },
|
||||
{ title: t('setting.site.syncInterval.hourly'), value: 1 },
|
||||
{ title: t('setting.site.syncInterval.every6Hours'), value: 6 },
|
||||
{ title: t('setting.site.syncInterval.every12Hours'), value: 12 },
|
||||
{ title: t('setting.site.syncInterval.daily'), value: 24 },
|
||||
{ title: t('setting.site.syncInterval.weekly'), value: 168 },
|
||||
{ title: t('setting.site.syncInterval.never'), value: 0 },
|
||||
]
|
||||
|
||||
// 重置站点
|
||||
async function resetSites() {
|
||||
try {
|
||||
resetSitesDisabled.value = true
|
||||
resetSitesText.value = t('site.resettingSites')
|
||||
resetSitesText.value = t('setting.site.resettingSites')
|
||||
|
||||
const result: { [key: string]: any } = await api.get('site/reset')
|
||||
if (result.success) $toast.success(t('site.resetSuccess'))
|
||||
else $toast.error(t('site.resetFailed'))
|
||||
if (result.success) $toast.success(t('setting.site.resetSuccess'))
|
||||
else $toast.error(t('setting.site.resetFailed'))
|
||||
|
||||
resetSitesDisabled.value = false
|
||||
resetSitesText.value = t('site.resetSites')
|
||||
resetSitesText.value = t('setting.site.resetSites')
|
||||
} catch (error) {
|
||||
console.log(error)
|
||||
}
|
||||
@@ -115,10 +115,10 @@ async function saveSiteSetting(value: { [key: string]: any }) {
|
||||
try {
|
||||
const result: { [key: string]: any } = await api.post('system/env', value)
|
||||
if (result.success) {
|
||||
$toast.success(t('site.saveSuccess'))
|
||||
$toast.success(t('setting.site.saveSuccess'))
|
||||
await reloadSystem()
|
||||
} else {
|
||||
$toast.error(t('site.saveFailed'))
|
||||
$toast.error(t('setting.site.saveFailed'))
|
||||
}
|
||||
} catch (error) {
|
||||
console.log(error)
|
||||
@@ -137,8 +137,8 @@ onMounted(() => {
|
||||
<VCol cols="12">
|
||||
<VCard>
|
||||
<VCardItem>
|
||||
<VCardTitle>{{ t('site.siteSync') }}</VCardTitle>
|
||||
<VCardSubtitle>{{ t('site.siteSyncDesc') }}</VCardSubtitle>
|
||||
<VCardTitle>{{ t('setting.site.siteSync') }}</VCardTitle>
|
||||
<VCardSubtitle>{{ t('setting.site.siteSyncDesc') }}</VCardSubtitle>
|
||||
</VCardItem>
|
||||
<VCardText>
|
||||
<VForm>
|
||||
@@ -146,8 +146,8 @@ onMounted(() => {
|
||||
<VCol cols="12" md="6">
|
||||
<VCheckbox
|
||||
v-model="siteSetting.CookieCloud.COOKIECLOUD_ENABLE_LOCAL"
|
||||
:label="t('site.enableLocalCookieCloud')"
|
||||
:hint="t('site.enableLocalCookieCloudHint')"
|
||||
:label="t('setting.site.enableLocalCookieCloud')"
|
||||
:hint="t('setting.site.enableLocalCookieCloudHint')"
|
||||
persistent-hint
|
||||
/>
|
||||
</VCol>
|
||||
@@ -156,18 +156,18 @@ onMounted(() => {
|
||||
<VCol cols="12" md="6">
|
||||
<VTextField
|
||||
v-model="siteSetting.CookieCloud.COOKIECLOUD_HOST"
|
||||
:label="t('site.serviceAddress')"
|
||||
:placeholder="t('site.serviceAddressPlaceholder')"
|
||||
:label="t('setting.site.serviceAddress')"
|
||||
:placeholder="t('setting.site.serviceAddressPlaceholder')"
|
||||
:disabled="siteSetting.CookieCloud.COOKIECLOUD_ENABLE_LOCAL"
|
||||
:hint="t('site.serviceAddressHint')"
|
||||
:hint="t('setting.site.serviceAddressHint')"
|
||||
persistent-hint
|
||||
/>
|
||||
</VCol>
|
||||
<VCol cols="12" md="6">
|
||||
<VTextField
|
||||
v-model="siteSetting.CookieCloud.COOKIECLOUD_KEY"
|
||||
:label="t('site.userKey')"
|
||||
:hint="t('site.userKeyHint')"
|
||||
:label="t('setting.site.userKey')"
|
||||
:hint="t('setting.site.userKeyHint')"
|
||||
persistent-hint
|
||||
/>
|
||||
</VCol>
|
||||
@@ -177,34 +177,34 @@ onMounted(() => {
|
||||
:type="isPasswordVisible ? 'text' : 'password'"
|
||||
:append-inner-icon="isPasswordVisible ? 'mdi-eye-off-outline' : 'mdi-eye-outline'"
|
||||
@click:append-inner="isPasswordVisible = !isPasswordVisible"
|
||||
:label="t('site.e2ePassword')"
|
||||
:hint="t('site.e2ePasswordHint')"
|
||||
:label="t('setting.site.e2ePassword')"
|
||||
:hint="t('setting.site.e2ePasswordHint')"
|
||||
persistent-hint
|
||||
/>
|
||||
</VCol>
|
||||
<VCol cols="12" md="6">
|
||||
<VSelect
|
||||
v-model="siteSetting.CookieCloud.COOKIECLOUD_INTERVAL"
|
||||
:label="t('site.autoSyncInterval')"
|
||||
:label="t('setting.site.autoSyncInterval')"
|
||||
:items="CookieCloudIntervalItems"
|
||||
:hint="t('site.autoSyncIntervalHint')"
|
||||
:hint="t('setting.site.autoSyncIntervalHint')"
|
||||
persistent-hint
|
||||
/>
|
||||
</VCol>
|
||||
<VCol cols="12" md="6">
|
||||
<VTextField
|
||||
v-model="siteSetting.CookieCloud.COOKIECLOUD_BLACKLIST"
|
||||
:label="t('site.syncBlacklist')"
|
||||
:placeholder="t('site.syncBlacklistPlaceholder')"
|
||||
:hint="t('site.syncBlacklistHint')"
|
||||
:label="t('setting.site.syncBlacklist')"
|
||||
:placeholder="t('setting.site.syncBlacklistPlaceholder')"
|
||||
:hint="t('setting.site.syncBlacklistHint')"
|
||||
persistent-hint
|
||||
/>
|
||||
</VCol>
|
||||
<VCol cols="12" md="6">
|
||||
<VTextField
|
||||
v-model="siteSetting.CookieCloud.USER_AGENT"
|
||||
:label="t('site.userAgent')"
|
||||
:hint="t('site.userAgentHint')"
|
||||
:label="t('setting.site.userAgent')"
|
||||
:hint="t('setting.site.userAgentHint')"
|
||||
persistent-hint
|
||||
/>
|
||||
</VCol>
|
||||
@@ -223,16 +223,16 @@ onMounted(() => {
|
||||
</VRow>
|
||||
<VRow>
|
||||
<VCol cols="12">
|
||||
<VCard :title="t('site.siteDataRefresh')">
|
||||
<VCard :title="t('setting.site.siteDataRefresh')">
|
||||
<VCardText>
|
||||
<VForm>
|
||||
<VRow>
|
||||
<VCol cols="12" md="6">
|
||||
<VSelect
|
||||
v-model="siteSetting.Site.SITEDATA_REFRESH_INTERVAL"
|
||||
:label="t('site.siteDataRefreshInterval')"
|
||||
:label="t('setting.site.siteDataRefreshInterval')"
|
||||
:items="SiteDataRefreshIntervalItems"
|
||||
:hint="t('site.siteDataRefreshIntervalHint')"
|
||||
:hint="t('setting.site.siteDataRefreshIntervalHint')"
|
||||
persistent-hint
|
||||
/>
|
||||
</VCol>
|
||||
@@ -241,8 +241,8 @@ onMounted(() => {
|
||||
<VCol cols="12" md="6">
|
||||
<VSwitch
|
||||
v-model="siteSetting.Site.SITE_MESSAGE"
|
||||
:label="t('site.readSiteMessage')"
|
||||
:hint="t('site.readSiteMessageHint')"
|
||||
:label="t('setting.site.readSiteMessage')"
|
||||
:hint="t('setting.site.readSiteMessageHint')"
|
||||
persistent-hint
|
||||
/>
|
||||
</VCol>
|
||||
@@ -261,13 +261,13 @@ onMounted(() => {
|
||||
</VRow>
|
||||
<VRow>
|
||||
<VCol cols="12">
|
||||
<VCard :title="t('site.siteReset')">
|
||||
<VCard :title="t('setting.site.siteReset')">
|
||||
<VCardText>
|
||||
<div>
|
||||
<VCheckbox
|
||||
v-model="isConfirmResetSites"
|
||||
:label="t('site.confirmReset')"
|
||||
:hint="t('site.confirmResetHint')"
|
||||
:label="t('setting.site.confirmReset')"
|
||||
:hint="t('setting.site.confirmResetHint')"
|
||||
persistent-hint
|
||||
/>
|
||||
</div>
|
||||
|
||||
Reference in New Issue
Block a user