180 lines
7.7 KiB
TypeScript
180 lines
7.7 KiB
TypeScript
/**
|
||
* 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<MessageKey, string>;
|