更新国际化支持:调整多个组件中的文本引入,优化站点设置相关的翻译和文本结构,确保语言切换的准确性和一致性。

This commit is contained in:
jxxghp
2025-04-27 21:59:26 +08:00
parent 082f666839
commit 7a3d566875
3 changed files with 320 additions and 313 deletions

View File

@@ -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',
},
},
},
}

View File

@@ -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天',
},
},
},
}

View File

@@ -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>