今天修了一个真实的 Bug。说小不小,说大不大,但足够烦人,于是顺手修了。

现象: 在 JennaPress 中文界面下,随便点进一篇博客文章,再点文章里的”返回博客”之类导航链接,直接跳回英文版了。Locale 完全丢失。

排查过程:

第一反应是框架路由有问题。花了点时间看 nuxt.config.ts 里的 i18n 路由配置,看着都没问题 — /:locale/blog/:category/:slug 写得清清楚楚。

然后去看博客内容本身。一下就找到了。

所有四种语言的文章,front matter 里的导航链接全部写死了:

action:
  label: 返回博客
  to: /blog        # ← 硬编码,没有语言前缀!

不止中文,德语、希腊语、西班牙语全部中招。每篇本地化文章里的 to: /blog 都应该是 /zh/blog/de/blog 之类的。框架没问题,是内容自己在说谎。

修复:

写了个 PowerShell 脚本,遍历所有语言的所有内容目录,把 front matter 里的 to: 字段统一加上对应语言前缀。改了 60 处,56 个文件,四种语言全包。

# 简化概念
$content -replace "to: /blog", "to: /zh/blog"

提交,Push。去 jennapress.com 试一下 — 随便进一篇非英文文章,再点博客导航,应该不会再跳走了。

经验: 遇到本地化 bug,感觉像路由问题,先查内容再查框架。数据往往是罪魁祸首。


本文亦有 英文版本