export const challengeDetail = { title: '挑战详情', notFound: '未找到该挑战,稍后再试试吧。', loading: '加载挑战详情中…', retry: '重新加载', share: { generating: '正在生成分享卡片...', failed: '分享失败,请稍后重试', messageJoined: '我正在参与「{{title}}」挑战,已完成 {{completed}}/{{target}} 天!一起加入吧!', messageNotJoined: '发现一个很棒的挑战「{{title}}」,一起来参与吧!', }, dateRange: { format: '{{start}} - {{end}}', monthDay: '{{month}}月{{day}}日', ongoing: '持续更新中', }, participants: { count: '{{count}} 人正在参与', ongoing: '持续更新中', more: '更多', }, detail: { requirement: '按日打卡自动累计', viewAllRanking: '查看全部', }, checkIn: { title: '挑战打卡', todayChecked: '今日已打卡', subtitle: '每日打卡会累计进度,达成目标天数', subtitleChecked: '已记录今日进度,明天继续保持', button: { checkIn: '立即打卡', checking: '打卡中…', checked: '今日已打卡', notJoined: '加入后打卡', upcoming: '挑战未开始', expired: '挑战已结束', }, toast: { alreadyChecked: '今日已打卡', notStarted: '挑战未开始,开始后再来打卡', expired: '挑战已结束,无法打卡', mustJoin: '加入挑战后才能打卡', success: '打卡成功,继续坚持!', failed: '打卡失败,请稍后再试', }, }, cta: { join: '立即加入挑战', joining: '加入中…', leave: '退出挑战', leaving: '退出中…', delete: '删除挑战', deleting: '删除中…', upcoming: '挑战即将开始', expired: '挑战已结束', }, highlight: { join: { title: '立即加入挑战', subtitle: '邀请好友一起坚持,更容易收获成果', }, leave: { title: '先别急着离开', subtitle: '再坚持一下,下一个里程碑就要出现了', }, upcoming: { title: '挑战即将开始', subtitle: '{{date}} 开始,敬请期待', subtitleFallback: '挑战即将开启,敬请期待', }, expired: { title: '挑战已结束', subtitle: '{{date}} 已截止,期待下一次挑战', subtitleFallback: '本轮挑战已结束,期待下一次挑战', }, }, alert: { leaveConfirm: { title: '确认退出挑战?', message: '退出后需要重新加入才能继续坚持。', cancel: '取消', confirm: '退出挑战', }, joinFailed: '加入挑战失败', leaveFailed: '退出挑战失败', archiveConfirm: { title: '确认删除该挑战?', message: '删除后将无法恢复,参与者也将无法再访问此挑战。', cancel: '取消', confirm: '删除挑战', }, archiveFailed: '删除挑战失败', archiveSuccess: '挑战已删除', }, ranking: { title: '排行榜', description: '', empty: '榜单即将开启,快来抢占席位。', today: '今日', todayGoal: '今日目标', hour: '小时', }, leaderboard: { title: '排行榜', loading: '加载榜单中…', notFound: '未找到该挑战。', loadFailed: '暂时无法加载榜单,请稍后再试。', empty: '榜单即将开启,快来抢占席位。', loadMore: '加载更多…', loadMoreFailed: '加载更多失败,请下拉刷新重试', }, shareCard: { footer: 'Out Live · 超越生命', progress: { label: '我的坚持进度', days: '{{completed}} / {{target}} 天', completed: '🎉 已完成挑战!', remaining: '还差 {{remaining}} 天完成挑战', }, info: { checkInDaily: '按日打卡', joinUs: '快来一起坚持吧', }, shareCode: { copied: '分享码已复制', }, }, shareCode: { copied: '分享码已复制', }, }; export const badges = { title: '勋章馆', subtitle: '点亮每一次坚持', hero: { highlight: '保持连续打卡即可解锁更多稀有勋章', earnedLabel: '已获得', totalLabel: '总数', progressLabel: '解锁进度', }, categories: { all: '全部', sleep: '睡眠', exercise: '运动', diet: '饮食', challenge: '挑战', social: '社交', special: '特别', }, rarities: { common: '普通', uncommon: '少见', rare: '稀有', epic: '史诗', legendary: '传说', }, status: { earned: '已获得', locked: '待解锁', earnedAt: '{{date}} 获得', }, legend: '稀有度说明', filterLabel: '勋章分类', empty: { title: '还没有勋章', description: '完成睡眠、运动、挑战等任务即可点亮你的第一枚勋章。', action: '去探索计划', }, }; export const challenges = { title: '挑战', subtitle: '加入官方或自定义挑战,一起坚持', loading: '加载挑战中…', loadFailed: '暂时无法获取挑战,请稍后再试。', retry: '重新加载', empty: '暂时没有挑战,先去创建或加入一个吧。', customChallenges: '自定义挑战', officialChallengesTitle: '官方挑战', officialChallenges: '官方挑战即将上线。', join: '加入', joined: '已加入', invalidInviteCode: '请输入有效的分享码', joinSuccess: '加入挑战成功', joinFailed: '加入失败,请稍后再试', joinModal: { title: '输入分享码加入', description: '输入好友分享码即可加入挑战', confirm: '加入挑战', joining: '加入中…', cancel: '取消', placeholder: '请输入分享码', }, statusLabels: { upcoming: '即将开始', ongoing: '进行中', expired: '已结束', }, createCustom: { title: '创建挑战', editTitle: '编辑挑战', yourChallenge: '你的挑战', basicInfo: '基础信息', challengeSettings: '挑战设置', displayInteraction: '展示与互动', durationDays: '{{days}} 天', durationDaysChallenge: '{{days}} 天挑战', dayUnit: '天', defaultTitle: '自定义挑战', rankingDescription: '榜单每日更新', typeLabels: { water: '饮水', exercise: '运动', diet: '饮食', sleep: '睡眠', mood: '心情', weight: '体重', custom: '自定义', }, fields: { title: '挑战名称', titlePlaceholder: '例如 21 天早睡', coverImage: '封面图', uploadCover: '上传封面', challengeDescription: '挑战简介', descriptionPlaceholder: '写下挑战目标和打卡方式', challengeType: '挑战类型', challengeTypeHelper: '选择最贴近目标的类型', timeRange: '时间范围', start: '开始日期', end: '结束日期', duration: '持续时间', periodLabel: '周期标签', periodLabelPlaceholder: '例如 21 天养成计划', dailyTargetAndUnit: '每日目标与单位', dailyTargetPlaceholder: '每日目标数值', unitPlaceholder: '单位(杯/分钟/步数等)', unitHelper: '选填,展示在每日目标后', minimumCheckInDays: '最少打卡天数', minimumCheckInDaysPlaceholder: '不能超过总天数', maxParticipants: '参与人数上限', noLimit: '不限制', isPublic: '允许他人通过分享码加入', publicDescription: '开启后他人可凭分享码加入;关闭则仅自己可见', }, floatingCTA: { title: '生成分享码', subtitle: '创建挑战并分享给好友一起打卡', editTitle: '保存更改', editSubtitle: '更新挑战信息并同步给参与者', }, buttons: { createAndGenerateCode: '创建并生成分享码', creating: '创建中…', updateAndSave: '保存修改', updating: '保存中…', }, datePicker: { confirm: '确认', cancel: '取消', }, alerts: { titleRequired: '请输入挑战名称', endTimeError: '结束时间需要晚于开始时间', targetValueError: '每日目标需在 1-1000 之间', minimumDaysError: '最少打卡天数需在 1-365 之间', minimumDaysExceedError: '最少打卡天数不能超过挑战总天数', participantsError: '人数需在 2-10000 之间或留空', createFailed: '创建挑战失败', createSuccess: '挑战已创建', updateSuccess: '挑战已更新', }, imageUpload: { selectSource: '选择封面', selectMessage: '拍照或从相册选择封面', camera: '拍照', album: '相册', cancel: '取消', cameraPermission: '需要相机权限', cameraPermissionMessage: '请开启相机权限以拍摄封面', albumPermissionMessage: '请开启相册权限以选择图片', cameraFailed: '打开相机失败', cameraFailedMessage: '请重试或从相册选择', selectFailed: '选择失败', selectFailedMessage: '暂时无法选择图片,请重试', uploadFailed: '上传失败', uploadFailedMessage: '封面上传失败,请稍后重试', uploading: '上传中…', clear: '移除封面', helper: '推荐使用 16:9 的高清图片,大小 2MB 内', }, shareModal: { title: '分享码已生成', subtitle: '分享给好友即可一起参与挑战', generatingCode: '生成中…', copyCode: '复制分享码', viewChallenge: '查看挑战', later: '稍后再说', }, }, };