export default { // 通用 common: { confirm: '确认', cancel: '取消', close: '关闭', delete: '删除', edit: '编辑', save: '保存', add: '添加', back: '返回', next: '下一页', previous: '上一页', loading: '加载中...', noData: '暂无数据', success: '成功', error: '错误', warning: '警告', info: '信息', search: '搜索', copy: '复制', uploadSuccess: '上传成功', uploadFailed: '上传失败', copySuccess: '复制成功', copyFailed: '复制失败', deleteSuccess: '删除成功', deleteFailed: '删除失败', downloadSuccess: '下载成功', downloadFailed: '下载失败', shareSuccess: '分享成功', shareFailed: '分享失败', expiredFile: '文件已过期', fileNotFound: '文件不存在', networkError: '网络错误', unknownError: '未知错误', invalidFileType: '不支持的文件类型', fileTooLarge: '文件过大', uploadCanceled: '上传已取消', processing: '处理中...', pleaseWait: '请稍候...', fileDetails: '文件详情', enabled: '已开启', disabled: '已关闭', minute: '分钟', files: '个文件', second: '秒', hour: '小时', day: '天', times: '次', appName: '文件快递柜 - FileCodeBox', appDescription: '开箱即用的文件快传系统' }, // 管理员模块 admin: { logout: '退出登录', dashboard: { title: '仪表盘', totalFiles: '总文件数', storageSpace: '存储空间', todayShares: '今日分享', totalRetrievals: '累计取件', activeFiles: '有效文件:{count}', todayIncrease: '今日新增容量:{count}', yesterdayShares: '昨日分享:{count}', serverUptime: '运行时间', refresh: '刷新数据', refreshing: '刷新中', lastUpdated: '最近更新:{time}', loadFailed: '仪表盘数据加载失败', fileHealth: '文件健康', fileHealthDesc: '基于状态洞察统计可取件、风险与待处理队列。', activeFileRatio: '有效占比', fileShareRatio: '文件占比', textShareRatio: '文本占比', binaryFiles: '文件分享 {count} 个', textShares: '文本分享 {count} 条', expiredFiles: '已过期文件', needCleanup: '可在文件管理中清理', chunkedFiles: '分片上传文件', storagePolicy: '存储与上传策略', storagePolicyDesc: '当前后台配置对上传链路的影响。', storageBackend: '存储后端', singleFileLimit: '单文件上限', guestUpload: '游客上传', maxSaveTime: '最长保存', noSaveLimit: '不限制', todayCapacityReference: '今日容量 / 单文件上限', fileTypeDistribution: '类型分布', textType: '文本', recentFiles: '最近分享', recentFilesDesc: '最近创建的分享记录,便于快速核对状态。', available: '可取件', healthActions: { attention: { title: '需关注', description: '集中处理异常和预警文件' }, storageIssue: { title: '存储异常', description: '检查缺少下载信息的文件' }, expiringSoon: { title: '即将过期', description: '优先续期仍需保留的分享' }, neverRetrieved: { title: '未取件', description: '识别创建后尚未被取件的记录' }, permanent: { title: '永久有效', description: '查看长期保留的分享记录' } }, table: { file: '文件', size: '大小', usage: '取件', status: '状态' } }, fileManage: { title: '文件管理' }, settings: { title: '系统设置', basicSettings: '基本设置', websiteInfo: '网站基本信息', websiteName: '网站名称', websiteDescription: '网站描述', siteName: '网站名称', adminPassword: '管理员密码', passwordPlaceholder: '如需修改请输入新密码', passwordNote: '不修改请留空', keywords: 'SEO 关键词', themeSelection: '界面主题', robotsFile: 'Robots.txt 配置', notificationSettings: '通知设置', notificationTitle: '公告标题', notificationContent: '公告内容', storageSettings: '存储配置', storagePath: '文件存储路径', storagePathPlaceholder: '使用默认路径可留空', storageMethod: '存储方式', localStorage: '本地存储', s3Storage: 'S3 对象存储', webdavStorage: 'WebDAV 存储', chunkUploadNote: '分片上传(实验性功能,大文件上传更稳定)', s3AccessKeyId: 'Access Key ID', s3SecretAccessKey: 'Secret Access Key', s3BucketName: '存储桶名称', s3EndpointUrl: '服务端点 URL', s3RegionName: '区域名称', s3SignatureVersion: '签名版本', s3Hostname: '自定义域名', s3v2: 'S3v2', s3v4: 'S3v4', autoPlaceholder: '自动识别', enabled: '已启用', disabled: '已禁用', webdavUrl: '输入 WebDAV 服务地址', webdavUsername: '输入 WebDAV 用户名', webdavPassword: '输入 WebDAV 密码', webdavUrlPlaceholder: '输入 WebDAV 服务地址', webdavUsernamePlaceholder: '输入 WebDAV 用户名', webdavPasswordPlaceholder: '输入 WebDAV 密码', enableProxy: '启用下载代理', uploadLimits: '上传设置', uploadRateLimit: '限流时间窗口(在此时间内限制上传次数)', uploadPerMinute: '限流时间窗口(在此时间内限制上传次数)', minute: '分钟', uploadCountLimit: '允许上传文件数(限流窗口内最多上传几个文件)', files: '个文件', fileSizeLimit: '单文件大小上限', expirationMethod: '过期方式', expirationType: '过期方式', expiration: { day: '按天数', hour: '按小时', minute: '按分钟', forever: '永久有效', count: '按下载次数' }, maxSaveTime: '文件最长保存时间', timeUnits: { second: '秒', minute: '分钟', hour: '小时', day: '天' }, guestUpload: '允许游客上传', errorLimits: '访问保护', errorRateLimit: '检测时间窗口(在此时间内统计错误次数)', errorPerMinute: '检测时间窗口(在此时间内统计错误次数)', errorCountLimit: '允许错误次数(超过后临时封禁)', times: '次', saveChanges: '保存设置', fileSizeUnits: { kb: 'KB', mb: 'MB', gb: 'GB' } } }, // 页面标题和导航 nav: { sendFile: '发送文件', retrieveFile: '取件', fileRecords: '取件记录' }, // 取件页面 retrieve: { title: '文件取件', codeInput: { placeholder: '请输入5位取件码', label: '取件码' }, submit: '取件', needSendFile: '需要发送文件?点击这里', recordsDrawer: '取件记录', messages: { invalidCode: '请输入5位取件码', retrieveSuccess: '文件获取成功', invalidCodeError: '无效的取件码', retrieveFailure: '获取文件失败:', networkError: '取件失败,请稍后重试:', unknownError: '未知错误', previewUnavailable: '暂时无法预览文件信息,可直接取件' }, workspace: { sendFile: '发送文件', inspect: '预览', inspecting: '预览中', retrieving: '取件中', ready: '可取件', noPreview: '等待取件码', noPreviewDesc: '输入 5 位取件码后会先读取文件信息,确认后再消耗取件次数。', latestRecord: '最近取件', noRecord: '暂无取件记录', currentCode: '取件码', fileSize: '文件大小', viewDetail: '查看详情', historyCount: '{count} 条记录', openRecords: '打开取件记录', security: '安全取件', securityState: '预览不会消耗取件次数,确认取件后才会记录访问。', noExpiry: '不限制', unlimited: '不限次数', remainingCount: '剩余 {count} 次', textType: '文本内容', fileType: '文件下载', expiresAt: '过期时间', remainingDownloads: '剩余次数', usedCount: '已取件', emptyCode: '未输入', previewState: '预览状态', waiting: '等待输入' } }, // 发送页面 send: { title: '文件发送', sendText: '发送文本', fileDetails: '文件详情', expirationMethod: '过期方式', uploadArea: { dragText: '拖拽文件到此处或', clickText: '点击选择文件', textInput: '在此输入要发送的文本...', placeholder: '点击或拖放文件到此处上传', description: '支持各种常见格式', descriptionWithLimit: '支持各种常见格式,最大{size}', retry: '重试', selectedFiles: '已选择 {count} 个文件', status: { initializing: '正在初始化上传...', uploading: '正在上传文件...', confirming: '正在确认上传...', success: '上传成功!' } }, submit: '安全寄送', submitting: '发送中...', needRetrieveFile: '需要取件?点击这里', sendRecords: '发件记录', secureEncryption: '安全加密', workspace: { uploadLimit: '单文件上限', uploadMode: '上传模式', standardMode: '标准上传', chunkMode: '分片上传', guestPolicy: '游客上传', guestOpen: '允许', guestClosed: '已关闭', currentTask: '当前任务', awaitingFile: '等待选择文件', fileReady: '已选择 {count} 个文件', textDraft: '文本草稿 {count} 字', payload: '发送内容', expirationPreview: '有效期', security: '安全状态', latestRecord: '最近一次发送', noRecord: '暂无记录', copyLink: '复制链接', viewDetail: '查看详情', historyTitle: '发送历史', historyCount: '{count} 条记录', openRecords: '打开发送记录' }, fileDetail: { title: '文件详情', content: '文件内容', previewContent: '预览内容', download: '点击下载', qrCode: '取件二维码', scanQrCode: '扫描二维码快速取件' }, contentPreview: { title: '内容预览' }, fileManage: { title: '文件管理', searchPlaceholder: '搜索文件名称、描述...', allFiles: '所有文件', editFileInfo: '编辑文件信息', saveChanges: '保存更改', headers: { code: '取件码', name: '名称', size: '大小', description: '描述', expiration: '过期时间', actions: '操作' }, form: { code: '取件码', codePlaceholder: '输入取件码', filename: '文件名称', filenamePlaceholder: '输入文件名称', suffix: '文件后缀', suffixPlaceholder: '输入文件后缀', downloadLimit: '下载次数限制', downloadLimitPlaceholder: '输入下载次数限制' } }, expiration: { label: '过期时间', placeholders: { days: '输入天数', hours: '输入小时数', minutes: '输入分钟数', count: '输入查看次数', forever: '永久', default: '输入值' }, units: { days: '天', hours: '小时', minutes: '分钟', times: '次', forever: '永久' } }, time: { day: '按天', hour: '按小时', minute: '按分钟', forever: '永久', count: '按次数' }, messages: { selectFile: '请选择要上传的文件', enterText: '请输入要发送的文本', enterExpirationValue: '请输入过期值', expirationTooLong: '过期时间不能超过{days}天', sendSuccess: '文件发送成功!取件码:{code}', initChunkUploadFailed: '初始化切片上传失败', chunkUploadFailed: '切片 {index} 上传失败', completeUploadFailed: '完成上传失败', uploadFailed: '上传失败,请稍后重试', guestUploadDisabled: '游客上传功能已关闭', fileSizeExceeded: '文件大小超过限制 ({size})', serverError: '服务器响应异常', sendFailed: '发送失败,请稍后重试', expiresAfterCount: '{count}次后过期', expiresAt: '{date}过期', emptyFileError: '无法读取空文件', fileAddedFromClipboard: '已从剪贴板添加文件:{filename}', fileProcessingFailed: '文件处理失败', expiresAfter: '{value}{unit}后过期' } }, // 文件管理 fileManage: { title: '文件管理', subtitle: '共 {count} 条分享记录,可按状态、类型和使用情况快速筛选。', searchPlaceholder: '搜索取件码、名称或文本...', allFiles: '所有文件', detail: '详情', detailTitle: '文件详情', detailLoading: '正在加载详情...', detailFailed: '详情加载失败', editFileInfo: '编辑文件信息', saveChanges: '保存更改', refresh: '刷新列表', resetFilters: '重置筛选', totalFiles: '全部记录', activeFiles: '可取件', expiredFiles: '已过期', storageUsed: '占用空间', statusLabel: '状态', typeLabel: '类型', healthLabel: '健康', all: '全部', active: '可取件', expired: '已过期', fileType: '文件', textType: '文本', chunkedType: '分片', healthFilters: { all: '全部', attention: '需关注', danger: '异常', warning: '预警', expiringSoon: '即将过期', storageIssue: '存储异常', neverRetrieved: '未取件', healthy: '健康', permanent: '永久有效' }, sortBy: '排序', unlimited: '不限次数', remaining: '剩余 {count} 次', loadError: '文件列表加载失败', noMatches: '没有匹配的文件', viewText: '查看', textPreview: '文本预览', copyText: '复制文本', copyCode: '复制取件码', copyLink: '复制取件链接', copySuccess: '文本已复制到剪贴板', copyCodeSuccess: '取件码已复制到剪贴板', copyLinkSuccess: '取件链接已复制到剪贴板', copyFailed: '复制失败,请重试', charCount: '共 {count} 个字符', downloadFile: '下载文件', exportText: '导出文本', downloadSuccess: '已下载:{name}', exportSuccess: '已导出:{name}', downloadFailed: '下载失败', previewFailed: '预览加载失败', loadingPreview: '正在加载预览...', previewComplete: '已加载完整内容,共 {count} 个字符', previewTruncated: '已显示 {shown} / {total} 个字符', previewFallback: '预览接口不可用,已使用列表中的文本内容', selectCurrentPage: '选择当前页', selectedCount: '已选择 {count} 项', selectFile: '选择 {name}', clearSelection: '清空选择', batchDelete: '批量删除', batchDeleteConfirm: '确认删除选中的 {count} 个文件?此操作不可撤销。', batchDeleteSuccess: '已删除 {count} 个文件', batchDeletePartialSuccess: '已删除 {count} 个文件,{failed} 个失败', batchDeleteFailed: '批量删除失败', batchEdit: '批量编辑', batchEditTitle: '批量编辑文件策略', batchEditSelected: '将更新选中的 {count} 个文件', batchEditMode: '更新方式', batchEditExpiresAt: '设置过期时间', batchEditDownloadLimit: '设置取件次数', batchEditForever: '设为永久有效', batchEditForeverHint: '清空过期时间,并将取件次数设为不限。', batchUpdateConfirm: '确认更新选中的 {count} 个文件?', batchUpdateSuccess: '已更新 {count} 个文件', batchUpdatePartialSuccess: '已更新 {count} 个文件,{failed} 个失败', batchUpdateFailed: '批量更新失败', batchUpdateNoFields: '请选择要更新的策略', batchPolicyActionConfirm: '确认对选中的 {count} 个文件执行“{action}”?', batchPolicyActionSuccess: '已处理 {count} 个文件', batchPolicyActionPartialSuccess: '已处理 {count} 个文件,{failed} 个失败', batchPolicyActionFailed: '批量策略动作执行失败', policyActionSuccess: '文件策略已更新', policyActionFailed: '策略动作执行失败', policyActions: { extend24h: '延长 24 小时', extend7d: '延长 7 天', makePermanent: '设为永久', resetDownloadLimit: '重置为 {count} 次' }, policyActionDescriptions: { extend24h: '从当前有效期继续追加一天', extend7d: '适合临时续期一周', makePermanent: '清空过期时间和次数限制', resetDownloadLimit: '恢复可取件次数到 {count} 次' }, applyBatchEdit: '应用更改', overview: '概览', policyInfo: '策略信息', storageInfo: '存储信息', statusInsight: '状态洞察', nextAction: '建议动作', lifecycle: '生命周期', permanent: '永久有效', createdAt: '创建时间', remainingDownloads: '剩余次数', textLength: '文本长度', hasDownloadLimit: '限制取件次数', hasExpirationTime: '限制过期时间', canPreviewText: '可预览文本', canDownload: '可下载', storageBackend: '存储后端', fileHash: '文件哈希', isChunked: '分片上传', filePath: '存储路径', uuidFileName: '存储文件名', uploadId: '上传会话', yes: '是', no: '否', insightSeverity: { success: '正常', warning: '需关注', danger: '异常', info: '提示', neutral: '待观察' }, insightStates: { available: '当前可正常取件', expired: '当前已不可取件', storage_incomplete: '存储信息不完整', expiring_soon: '即将过期', permanent: '永久有效' }, insightActions: { monitor: '保持观察', extend_or_delete: '延长有效期或清理记录', inspect_storage: '检查存储路径与文件名', extend_expiration: '按需延长过期时间' }, insightReasons: { expired: '已超过过期时间', download_limit_exhausted: '取件次数已用尽', expires_soon: '24 小时内过期', never_retrieved: '尚未被取件', storage_metadata_incomplete: '缺少可下载存储信息', chunked_upload: '由分片上传生成' }, timeline: { status: { done: '已完成', pending: '等待中', active: '生效中', expired: '已过期', exhausted: '已用尽', unlimited: '不限' }, created: { title: '记录创建', description: '分享记录已创建,当前状态为 {status}。' }, content_ready: { title: '内容就绪', description: '内容类型为 {detail},当前状态为 {status}。' }, upload_session: { title: '上传会话', description: '上传会话已记录:{detail}。' }, expiration_policy: { title: '过期策略', description: '过期策略当前为 {status}。', remaining: '还剩 {time}', overdue: '已超时 {time}' }, download_limit: { title: '取件次数', description: '取件次数策略当前为 {status},{value}。' }, retrieved: { title: '取件记录', description: '累计取件 {value},当前状态为 {status}。' } }, headers: { select: '选择', code: '取件码', name: '名称', type: '类型', size: '大小', usage: '取件', status: '状态', description: '描述', expiration: '过期时间', actions: '操作' }, sort: { createdAt: '创建时间', expiredAt: '过期时间', name: '名称', size: '大小', usedCount: '取件次数', code: '取件码', desc: '降序', asc: '升序' }, form: { code: '取件码', codePlaceholder: '输入取件码', filename: '文件名称', filenamePlaceholder: '输入文件名称', suffix: '文件后缀', suffixPlaceholder: '输入文件后缀', downloadLimit: '下载次数限制', downloadLimitPlaceholder: '输入下载次数限制' } }, // 文件记录 fileRecord: { filename: '文件名', size: '文件大小', date: '取件日期', code: '取件码', actions: '操作', download: '下载', viewDetails: '查看详情', deleteRecord: '删除记录', preview: '预览', copyContent: '复制内容', contentCopied: '内容已复制到剪贴板', copyFailed: '复制失败,请重试' }, // 文件详情模态框 fileDetail: { title: '文件详情', content: '文件内容', previewContent: '预览内容', download: '点击下载', qrCode: '取件二维码', scanQrCode: '扫描二维码快速取件' }, // 内容预览 contentPreview: { title: '内容预览' }, // 侧边抽屉 drawer: { noRecords: '暂无记录' }, // 文件大小单位 fileSize: { bytes: 'Bytes', kb: 'KB', mb: 'MB', gb: 'GB', tb: 'TB' }, // 管理页面 manage: { settings: { title: '系统设置', basicSettings: '基本设置', siteName: '网站名称', adminPassword: '管理员密码', passwordPlaceholder: '如需修改请输入新密码', passwordNote: '不修改请留空', keywords: 'SEO 关键词', themeSelection: '界面主题', robotsFile: 'Robots.txt 配置', notificationSettings: '通知设置', notificationTitle: '公告标题', notificationContent: '公告内容', storageSettings: '存储配置', storagePath: '文件存储路径', storagePathPlaceholder: '使用默认路径可留空', storageMethod: '存储方式', localStorage: '本地存储', s3Storage: 'S3 对象存储', webdavStorage: 'WebDAV 存储', chunkUploadNote: '分片上传(实验性功能,大文件上传更稳定)', uploadLimits: '上传设置', uploadPerMinute: '限流时间窗口(在此时间内限制上传次数)', uploadCountLimit: '允许上传文件数(限流窗口内最多上传几个文件)', fileSizeLimit: '单文件大小上限', expiration: { day: '按天数', hour: '按小时', minute: '按分钟', forever: '永久有效', count: '按下载次数' }, maxSaveTime: '文件最长保存时间', s3AccessKeyId: 'Access Key ID', s3SecretAccessKey: 'Secret Access Key', s3BucketName: '存储桶名称', s3EndpointUrl: '服务端点 URL', s3RegionName: '区域名称', s3SignatureVersion: '签名版本', s3Hostname: '自定义域名', s3v2: 'S3v2', s3v4: 'S3v4', autoPlaceholder: '自动识别', enableProxy: '启用下载代理', webdavUrlPlaceholder: '输入 WebDAV 服务地址', webdavUsernamePlaceholder: '输入 WebDAV 用户名', webdavPasswordPlaceholder: '输入 WebDAV 密码', fileSizeUnits: { kb: 'KB', mb: 'MB', gb: 'GB' }, expirationType: '过期方式', guestUpload: '允许游客上传', errorLimits: '访问保护', errorPerMinute: '检测时间窗口(在此时间内统计错误次数)', errorCountLimit: '允许错误次数(超过后临时封禁)', saveChanges: '保存设置', refreshConfig: '刷新配置', refreshing: '刷新中', saving: '保存中', unsavedChanges: '有未保存的配置变更', allChangesSaved: '所有配置已保存', refreshBlocked: '请先保存当前变更再刷新' }, dashboard: { title: '仪表盘', totalFiles: '总文件数', storageSpace: '存储空间', todayShares: '今日分享', totalRetrievals: '累计取件', activeFiles: '有效文件:{count}', todayIncrease: '今日新增容量:{count}', yesterdayShares: '昨日分享:{count}', serverUptime: '运行时间', refresh: '刷新数据', fileHealth: '文件健康', fileHealthDesc: '基于真实文件记录统计有效、过期和类型分布。', activeFileRatio: '有效占比', fileShareRatio: '文件占比', textShareRatio: '文本占比', binaryFiles: '文件分享 {count} 个', textShares: '文本分享 {count} 条', expiredFiles: '已过期文件', needCleanup: '可在文件管理中清理', chunkedFiles: '分片上传文件', storagePolicy: '存储与上传策略', storagePolicyDesc: '当前后台配置对上传链路的影响。', storageBackend: '存储后端', singleFileLimit: '单文件上限', guestUpload: '游客上传', maxSaveTime: '最长保存', noSaveLimit: '不限制', todayCapacityReference: '今日容量 / 单文件上限', fileTypeDistribution: '类型分布', textType: '文本', recentFiles: '最近分享', recentFilesDesc: '最近创建的分享记录,便于快速核对状态。', available: '可取件', table: { file: '文件', size: '大小', usage: '取件', status: '状态' } }, fileManage: { title: '文件管理', searchPlaceholder: '搜索文件名称、描述...', allFiles: '所有文件', editFileInfo: '编辑文件信息', saveChanges: '保存更改', headers: { code: '取件码', name: '名称', size: '大小', description: '描述', expiration: '过期时间', actions: '操作' }, form: { code: '取件码', codePlaceholder: '输入取件码', filename: '文件名称', filenamePlaceholder: '输入文件名称', suffix: '文件后缀', suffixPlaceholder: '输入文件后缀', downloadLimit: '下载次数限制', downloadLimitPlaceholder: '输入下载次数限制' }, updateFailed: '更新失败', deleteFailed: '删除失败', deleteConfirm: '确认删除这个文件?此操作不可撤销。', loadFileListFailed: '加载文件列表失败' }, systemSettings: { title: '系统设置', basicSettings: '基本设置', websiteInfo: '网站基本信息', websiteName: '网站名称', websiteDescription: '网站描述', adminPassword: '管理员密码', passwordPlaceholder: '如需修改请输入新密码', passwordNote: '不修改请留空', keywords: 'SEO 关键词', themeSelection: '界面主题', notificationSettings: '通知设置', notificationTitle: '公告标题', notificationContent: '公告内容', storageSettings: '存储配置', storagePath: '文件存储路径', storagePathPlaceholder: '使用默认路径可留空', storageMethod: '存储方式', localStorage: '本地存储', s3Storage: 'S3 对象存储', webdavStorage: 'WebDAV 存储', chunkUploadNote: '分片上传(实验性功能,大文件上传更稳定)', enabled: '已启用', disabled: '已禁用', webdavUrl: '输入 WebDAV 服务地址', webdavUsername: '输入 WebDAV 用户名', webdavPassword: '输入 WebDAV 密码', enableProxy: '启用下载代理', uploadLimits: '上传设置', uploadRateLimit: '限流时间窗口(在此时间内限制上传次数)', minute: '分钟', uploadCountLimit: '允许上传文件数(限流窗口内最多上传几个文件)', files: '个文件', fileSizeLimit: '单文件大小上限', expirationMethod: '过期方式', expirationMethods: { day: '按天数', hour: '按小时', minute: '按分钟', forever: '永久有效', count: '按下载次数' }, expiration: { day: '按天数', hour: '按小时', minute: '按分钟', forever: '永久有效', count: '按下载次数' }, maxSaveTime: '文件最长保存时间', timeUnits: { second: '秒', minute: '分钟', hour: '小时', day: '天' }, guestUpload: '允许游客上传', errorLimits: '访问保护', errorRateLimit: '检测时间窗口(在此时间内统计错误次数)', errorCountLimit: '允许错误次数(超过后临时封禁)', times: '次', saveSettings: '保存设置', saveSuccess: '设置已保存', saveFailed: '保存失败,请重试', getConfigFailed: '获取配置失败,请刷新页面' }, login: { title: '登录', password: '密码', passwordPlaceholder: '密码', loginButton: '登录', loggingIn: '登录中...', invalidPassword: '无效的密码', passwordTooShort: '密码长度至少为6位', loginFailed: '登录失败', noValidToken: '登录失败:未获取到有效令牌' } }, // 工具函数相关 utils: { common: { formatTime: '格式化时间戳为可读格式', formatFileSize: '格式化文件大小', formatDuration: '格式化持续时间', time: { forever: '永久', day: '天', hour: '小时', minute: '分钟', second: '秒' }, copyToClipboard: '复制文本到剪贴板', copyFailed: '复制失败:', debounce: '防抖函数', throttle: '节流函数', validateEmail: '验证邮箱格式', validateUrl: '验证URL格式', generateRandomString: '生成随机字符串', deepClone: '深度克隆对象', getFileExtension: '获取文件扩展名', isMobileDevice: '检查是否为移动设备', formatNumber: '格式化数字,添加千分位分隔符' }, clipboard: { title: '剪贴板工具函数', copyText: '复制文本到剪贴板', copySuccess: '复制成功', copyFailed: '复制失败,请手动复制' } }, // 组件相关 components: { pagination: { showing: '显示第', to: '到', of: '条,共', total: '条', previous: '上一页', next: '下一页' }, languageSwitcher: { clickOutsideToClose: '点击外部关闭下拉菜单' }, borderProgressBar: { borderWidth: '边框宽度', cornerRadius: '拐角半径', createGradient: '创建渐变', drawBackground: '绘制背景', calculateProgress: '计算进度', drawProgress: '绘制进度' } }, // 其他通用文本 misc: { emptyFileError: '无法读取空文件', fileAddedFromClipboard: '已从剪贴板添加文件:', fileProcessFailed: '文件处理失败', chunkSize: '保持 2MB 的切片大小用于计算哈希', secureContext: '如果不是安全上下文(HTTP),则返回一个基于文件信息的替代哈希', cryptoFallback: '如果 crypto.subtle.digest 失败,使用替代方案', generateAlternativeHash: '生成替代哈希的函数', fileInfoHash: '使用文件名、大小和最后修改时间生成一个简单的哈希', convertToHex: '转换为16进制字符串并填充到64位', defaultChunkSize: '默认切片大小为5MB', initChunkUpload: '1. 初始化切片上传', uploadChunk: '2. 上传切片', completeUpload: '3. 完成上传', chunkUploadFailed: '切片上传失败:', uploadProgressListener: '添加上传进度监听', noLimitCheck: '如果没有限制,直接返回true', expirationValidation: '添加过期时间验证', chunkUploadReplacement: '使用切片上传替代原来的直接上传', textUploadUnchanged: '文本上传保持不变', addSendRecord: '添加新的发送记录', permanent: '永久', sendSuccessMessage: '显示发送成功消息', resetForm: '重置表单 - 只重置文件和文本内容,保留过期信息', showDetails: '显示详情', autoCopyLink: '自动复制取件码链接', delayedLoading: '使用 onMounted 钩子延迟加载一些非关键资源或初始化', nonCriticalInit: '这里可以放置一些非立即需要的初始化代码' } }