Skip to content

[i18n] 国际化收尾三连:Giscus 硬编码 zh-CN、未翻译页 hreflang 误宣告、fallback 无提示条 #380

Description

@Mira190

背景(三个都是扫描实证,不是猜测)

  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 无路由回退

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions