## 背景(三个都是扫描实证,不是猜测) 1. `GiscusComments.tsx:71` 硬编码 `lang="zh-CN"`——英文读者看到中文评论 UI。 2. `app/[locale]/docs/[...slug]/page.tsx` 的 metadata 对**每篇文档无条件**输出 `en-US` + `zh-CN` hreflang alternate、sitemap 同样双语全收——当 `.en.mdx` 不存在时(新文档的翻译延迟窗口内必然发生),`/en/docs/xxx` 实际渲染中文正文(fumadocs `fallbackLanguage: "zh"`),Google 收到"自称英文页的中文内容"。 3. fallback 渲染时页面无任何提示,读者不知道自己看的是中文兜底还是站点坏了。 ## 方案 1. Giscus `lang` 跟随当前 locale(`zh-CN` / `en`)。注意:Giscus 线程按 pathname 映射,zh/en 页面线程分开与否需要顺带决策(建议 mapping 用去 locale 前缀的 pathname,保持同文档同线程)。 2. metadata / sitemap 生成时检查目标语言文件是否真实存在(`source.getPage(slug, locale)` 且非 fallback 命中)——不存在则不宣告该语言 alternate、sitemap 不收该条。 3. fallback 页顶部加提示条("This article hasn't been translated yet, showing the Chinese original"),文案进 `messages/`。 ## 验收 - 删掉一篇测试文档的 `.en.mdx` 后:`/en/` 页有提示条、页面源码无 `en-US` hreflang、sitemap 无该 en 条目 - 英文页 Giscus UI 为英文 - `pnpm build` 表 diff 无路由回退
背景(三个都是扫描实证,不是猜测)
GiscusComments.tsx:71硬编码lang="zh-CN"——英文读者看到中文评论 UI。app/[locale]/docs/[...slug]/page.tsx的 metadata 对每篇文档无条件输出en-US+zh-CNhreflang alternate、sitemap 同样双语全收——当.en.mdx不存在时(新文档的翻译延迟窗口内必然发生),/en/docs/xxx实际渲染中文正文(fumadocsfallbackLanguage: "zh"),Google 收到"自称英文页的中文内容"。方案
lang跟随当前 locale(zh-CN/en)。注意:Giscus 线程按 pathname 映射,zh/en 页面线程分开与否需要顺带决策(建议 mapping 用去 locale 前缀的 pathname,保持同文档同线程)。source.getPage(slug, locale)且非 fallback 命中)——不存在则不宣告该语言 alternate、sitemap 不收该条。messages/。验收
.en.mdx后:/en/页有提示条、页面源码无en-UShreflang、sitemap 无该 en 条目pnpm build表 diff 无路由回退