/** * zh-CN 文案:key 权威源。en.ts 必须与本文件 key 同构。 * 展示名与 description 的插值用 {name}。 * 只保留脚手架基线文案;业务文案按同样模式追加。 */ export const zhCN = { "meta.brand": "应用模板", "meta.tagline": "Astro · tRPC · Drizzle 脚手架", "nav.home": "首页", "nav.dashboard": "仪表盘", "nav.primary": "主导航", "nav.brandHome": "首页", "nav.library": "媒体库", "nav.browse": "文件浏览", "nav.watch": "播放", "nav.mounts": "挂载管理", "nav.danmaku": "弹幕设置", "home.title": "应用模板", "home.subtitle": "Astro + tRPC + Drizzle monorepo 脚手架。登录后可进入仪表盘查看用户列表示例。", "home.heroLine1": "应用", "home.heroLine2": "模板", "home.ctaDashboard": "打开仪表盘", "home.ctaLogin": "登录 / 注册", "home.stackTitle": "技术栈", "home.stackBody": "Astro 7 SSR · React 19 islands · tRPC v11 · Drizzle + Turso · Tailwind 4 · Biome · Yarn 4 + Turbo。", "home.layerTitle": "分层约定", "home.layerBody": "types → models → db → dao → trpc → web。业务实体按 user 垂直切片复制扩展,禁止跨层引用。", "home.footer": "APP TEMPLATE · SSR", "dashboard.title": "仪表盘", "dashboard.heading": "用户列表", "dashboard.label": "Users", "dashboard.desc": "tRPC → service → dao → db 的完整垂直示例(脚手架基线,可替换为你的业务实体)。", "library.title": "媒体库", "library.scan": "扫描挂载", "library.unmatched": "未匹配", "library.continue": "继续播放", "library.searchPlaceholder": "搜索标题", "library.filterAll": "全部", "library.filterOk": "已刮削", "library.noPoster": "无封面", "library.play": "播放", "library.match": "匹配", "library.empty": "暂无媒体,请先在文件浏览中扫描挂载。", "library.loadMore": "加载更多", "library.matchTitle": "手动匹配 Bangumi", "library.searchWork": "搜索作品名", "library.bind": "绑定", "library.cancel": "取消", "browse.title": "文件浏览", "browse.play": "播放", "browse.addLibrary": "扫描入库", "browse.selectMount": "选择挂载…", "browse.mountsEmpty": "暂无挂载,请先添加", "browse.root": "根目录", "browse.up": "上一级", "browse.empty": "空目录或未选择挂载", "browse.loading": "加载中…", "browse.loadError": "目录读取失败", "browse.playError": "入库失败,请重试", "browse.scanDone": "扫描完成:{count} 个文件", "browse.scanError": "扫描失败,请检查挂载配置", "mounts.title": "挂载管理", "mounts.add": "添加 WebDAV", "mounts.test": "测试连接", "mounts.openlistHint": "OpenList 请填写其 WebDAV 地址(如 https://host/dav)", "mounts.credentialHint": "凭据仅保存在服务端。", "mounts.namePlaceholder": "名称,如 OpenList", "mounts.baseUrlPlaceholder": "https://example.com/dav", "mounts.usernamePlaceholder": "用户名(可选)", "mounts.passwordPlaceholder": "密码 / 令牌", "mounts.rootPathPlaceholder": "根路径 /", "mounts.save": "保存", "mounts.delete": "删除", "mounts.empty": "尚未添加挂载", "watch.title": "播放", "watch.loading": "加载中…", "watch.danmakuOn": "弹幕开", "watch.danmakuOff": "弹幕关", "watch.importXml": "导入本地 XML", "watch.noDanmaku": "暂无在线弹幕", "watch.noDanmakuImport": "暂无在线弹幕,可导入 XML", "watch.danmakuCache": "弹幕(缓存)", "watch.danmakuOpenNetwork": "弹幕(开放网络)", "watch.danmakuLoading": "弹幕加载中…", "watch.danmakuCount": "弹幕 {count} 条", "watch.backToLibrary": "返回媒体库", "watch.progressHint": "进度约每 5 秒保存", "watch.loadError": "加载失败", "watch.loadErrorHint": "无法加载该媒体,请检查链接或稍后重试。", "watch.notFound": "媒体不存在", "watch.notFoundHint": "该媒体可能已被删除,或你没有访问权限。", "danmaku.title": "弹幕设置", "danmaku.opacity": "不透明度", "danmaku.density": "密度", "danmaku.enabled": "启用弹幕", "danmaku.opacityValue": "不透明度 {value}%", "danmaku.densityValue": "密度 {value}x", "danmaku.save": "保存", "danmaku.saved": "已保存(本地会话)", "danmaku.localImportHint": "本地 XML 导入在播放页操作;此处保存默认开关与显示参数。", "auth.login.title": "登录", "auth.login.heading": "登录", "auth.login.subtitle": "使用邮箱与密码继续", "auth.login.submit": "登录", "auth.login.noAccount": "还没有账号?", "auth.login.toRegister": "注册", "auth.register.title": "注册", "auth.register.heading": "创建账号", "auth.register.subtitle": "注册后即可访问受保护页面", "auth.register.submit": "注册", "auth.register.hasAccount": "已有账号?", "auth.register.toLogin": "登录", "auth.forgot.title": "找回密码", "auth.forgot.heading": "重置密码", "auth.forgot.subtitle": "输入注册邮箱,获取重置令牌", "auth.forgot.submit": "申请重置", "auth.forgot.toLogin": "返回登录", "auth.forgot.tokenHint": "开发环境令牌(生产请接入邮件发送):", "auth.forgot.toReset": "使用此令牌重置", "auth.reset.title": "设置新密码", "auth.reset.heading": "设置新密码", "auth.reset.subtitle": "粘贴令牌并输入新密码", "auth.reset.submit": "重置密码", "auth.settings.title": "账户设置", "auth.settings.heading": "账户设置", "auth.settings.label": "Account", "auth.settings.changeHeading": "修改密码", "auth.settings.changeSubmit": "更新密码", "auth.settings.hint": "更新密码后其它设备的会话会失效。", "auth.field.name": "名称", "auth.field.email": "邮箱", "auth.field.password": "密码", "auth.field.currentPassword": "当前密码", "auth.field.newPassword": "新密码", "auth.field.token": "重置令牌", "auth.menu.login": "登录", "auth.menu.register": "注册", "auth.menu.dashboard": "仪表盘", "auth.menu.settings": "账户设置", "auth.menu.logout": "退出登录", "auth.msg.loginOk": "登录成功", "auth.msg.registerOk": "注册成功", "auth.msg.logoutOk": "已退出登录", "auth.msg.passwordOk": "密码已更新", "auth.msg.resetOk": "密码已重置,请登录", "auth.msg.resetRequested": "若邮箱存在,重置申请已受理", "auth.err.generic": "操作失败,请重试", "locale.switch": "语言", "locale.zh-CN": "中文", "locale.en": "English", "error.home": "返回首页", "error.retry": "重试", "error.forbidden.label": "禁止访问", "error.forbidden.title": "没有访问权限", "error.forbidden.desc": "当前账户无权查看该资源。若认为这是误判,请联系管理员或返回首页。", "error.notFound.label": "路径丢失", "error.notFound.title": "页面不存在", "error.notFound.desc": "该地址未登记为有效路由,可能已迁移或输入有误。可返回首页继续。", "error.internal.label": "系统异常", "error.internal.title": "服务出错了", "error.internal.desc": "服务器处理请求时发生意外。请稍后重试;若持续出现请反馈路径与时间。", } as const; export type MessageKey = keyof typeof zhCN; export type Messages = Record;