跳转到内容

编辑指南

本站内容全部托管在 cnb.cool,采用「改文件 → 提交 → 自动上线」的流程。无论你是想修一个错别字,还是翻译一整章规则,流程都一样。

方式一:在线编辑(无需安装任何工具)

Section titled “方式一:在线编辑(无需安装任何工具)”
  1. 注册一个 cnb.cool 账号 —— 它是腾讯云中国站旗下的代码托管与 CI/CD 平台。
  2. 打开本站任意页面,滚动到页面底部,点击 编辑此页,会跳转到 CNB 上对应的 Markdown 文件。
  3. 点击右上角编辑按钮修改内容,填写提交说明后保存。
  4. CNB 会自动创建一个合并请求(Pull Request),仓库维护者确认后即可合并上线。

适合:改错别字、修正术语、补充一两段内容。

方式二:本地编辑(推荐用于大段翻译)

Section titled “方式二:本地编辑(推荐用于大段翻译)”

需要 Node.js 18 以上,然后启用 pnpm:

终端窗口
corepack enable pnpm

克隆仓库并安装依赖(内容仓库以子模块形式引入,记得一并拉取):

终端窗口
git clone --recurse-submodules https://cnb.cool/xtarz/Fate-TRPG.git
cd Fate-TRPG
pnpm install
pnpm dev

之后打开 http://localhost:4321 即可实时预览,保存文件后页面会自动刷新。

端口提示:pnpm dev 占用 4321;前端测试 npm run test:e2e 会另起一个 4325 端口的预览服务,两者互不干扰。

所有页面都是 src/content/docs/ 下的 .md / .mdx 文件:

目录用途
CoreRules/《Fate 浓缩版》规则书译文
guides/使用指南(本页所在位置)
reference/参考资料
index.mdx首页

文件名决定网址。 Starlight 会把文件名转成小写作为路径:

CoreRules/Getting-Started.md → /corerules/getting-started/

侧边栏的分组在 astro.config.mjs 里配置:目录名保持英文,分组标题写中文;同一分组内的条目默认按文件名字母序排列,可用 frontmatter 的 sidebar.order 调整。某一页不想出现在侧栏,就加 sidebar: { hidden: true }。

侧栏分组显示中文(规则书/使用指南/参考资料),但目录名仍是英文,两者在 astro.config.mjs 的 sidebar 里对应:分组写 label: '规则书',再用 items: [{ autogenerate: { directory: 'CoreRules' } }] 指向真实目录。所以改分组显示名不会影响网址。

  1. frontmatter 的 title 必填,它会成为页面标题、侧边栏条目和 <h1>:

    ---
    title: 开始游戏
    description: 一句话说明这页讲什么。
    ---
    ## 定义你的设定
  2. 正文不要再写一级标题。 页面标题已由 title 生成,正文里再写 # 开始游戏 会让页面出现两个 <h1>。正文请从 ## 开始。

  3. 站内链接一律用小写路径,写成 /CoreRules/Introduction/ 会 404:

    参见[简介](/corerules/introduction/)。
  4. 表格用 Markdown 表格,不要贴 <table><tbody> 这类 HTML 标签。

  5. 骰子结果用 <dice> 标签,会渲染成真正的命运骰面(使用 Fate Core 字体):

    他掷出 <dice>[0][+][+][+]</dice>,加上普通(+1)的工艺,得出极佳(+4)。

    方括号内只能是 +、-、0,顺序即骰面顺序。渲染结果自带无障碍标签(如「骰点 +3:±0、+1、+1、+1」)。

  6. 专有名词用 「**术语**」 加书名号,会自动渲染成标签样式:

    这间屋子现在「**着火**」{情境}了。

    适用于特征名、特技名这类游戏内专有名词。普通术语(如命运点)只用加粗即可,不要加「」。

    类别写在右书名号后面,决定标签配色:

    标注类别用于
    {角色}角色特征写在角色卡上的长期特征
    {情境}情境特征场景内的临时特征
    {后果}后果承受打击后留下的伤害
    {助益}助益极短暂的一次性优势
    {特技}特技角色专属招式

    不写类别就用默认灰色标签。类别名写错时构建会打印警告,并回退到默认样式。

  7. 清理 <a id="_idTextAnchor0XX"></a> 这类 Pandoc 转换残留的锚点,Starlight 会自动为标题生成锚点。

如果拿到一批没有 frontmatter 的 .md 文件,可以用脚本批量补上(标题取文件名):

终端窗口
node scripts/ensure-frontmatter.mjs src/content/docs/CoreRules/

需要把一整篇长稿按一级标题拆成多个文件时:

终端窗口
node scripts/md-split.mjs fate-srd-content/some-long-doc.md src/content/docs/CoreRules/

译文统一以仓库根目录的 术语表.md 为准,翻译前请先对照。几条最容易踩的规则:

  • aspect 一律译特征,不译「方面」。
  • situation aspect 译情境特征,不能译「场景特征」——「场景」已固定对应 scene。
  • 文档 frontmatter 的 title 也要译成中文。
  • 示例角色人名(Ethan、Ruth、Cassandra 等)保留原文,但其名下的特征短语(如 On Fire)译成中文。
  • 专有名词首次出现时可括注英文,如「命运骰(Fate Dice)」,之后直接用中文。

英文原稿保存在 fate-srd-content 子模块与 CoreRules/Fate-Condensed-SRD-CC-BY.md,翻译时以它们为对照基准。

合并到 main 分支后,CNB 流水线(.cnb.yml)会自动执行 pnpm install && pnpm run build,并把 dist/ 部署到 EdgeOne Pages,几分钟后线上即可看到更新。

提交前建议本地自检两件事:

终端窗口
pnpm build # 构建必须成功
npm run test:e2e # 前端验证测试(32 项 = 16 个用例 × chromium / mobile)

测试会覆盖首页跳转、侧边栏导航、移动端菜单、主题切换和站内搜索。如果改动涉及链接或页面标题,这一步能提前发现 404 和重复标题的问题。