把一个现成模板改成中英双语站点时,最容易先想到的是页面上要放一个切换按钮。

但真正难的地方不在按钮,而在按钮背后的内容关系。导航怎么切换,列表页怎么保持当前语言,文章详情页怎么在同一路由上找到另一种语言版本,CMS 又要怎么继续编辑这些内容,这些问题都比按钮更早发生。

所以这次我先把“结构”放到“样式”前面。文章和笔记不再假设只有一种语言,而是直接在内容层配对。每一篇内容都会有共享的 slugtranslationKey,中文与英文各自保留一份 Markdown 文件,但前台仍然使用同一条详情路由。

这样做有两个明显好处。第一,写作者依然可以得到正常的 Markdown 编辑体验,不需要把大段正文硬塞进一个 JSON 字段里。第二,前端切换语言时,不需要猜测对应关系,只要沿着同一个 translationKey 找到另一份条目即可。

单页配置则走了另一条路。像导航、首页文案、About 页说明这些更接近“站点配置”的东西,保留在 JSON 里更合理。所以我把这些字段改成了 zh/en 成对结构,让它们后续依旧能在 Decap CMS 后台中被直接编辑。

换句话说,这次双语化不是只在视觉层加了一个开关,而是把“语言”真正纳入了内容模型本身。只有这样,前台和后台才不会在第二轮编辑时再次分叉。