Skip to content

fix: replace leftover /en URL prefix with /en_US after locale rename - #26

Closed
khanyipu wants to merge 1 commit into
StatIndet:mainfrom
khanyipu:main
Closed

khanyipu wants to merge 1 commit into
StatIndet:mainfrom
khanyipu:main

Conversation

@khanyipu

Copy link
Copy Markdown

问题

942e18d(refactor: completely replace zh-CN and en with zh_CN and en_US)把语言代码从 en 迁移到 en_US 后,部分 URL 前缀没有被同步更新,英文站存在指向已不存在的 /en/... 路径的链接,导致 404。

复现步骤

  1. 在站点上点击语言切换(中 / EN),正常跳转到 /en_US/
  2. 点击侧边导航的 "Notes"
  3. 实际跳转到 /en/notes/404 Not Found

根因

模板中的判断条件更新成了新语言代码 en_US,但 href 里的 URL 前缀仍是硬编码的旧前缀 /en

href="{{if eq .Lang "en_US"}}/en{{end}}/notes/"

而 Go 侧生成内容的实际前缀是 en_USsite.golangPrefix = "en_US"),两边不一致。

修复内容

位置 修改
side-nav.html / header-nav.html / mobile-drawer.html 各 5 个导航链接 前缀 /en/en_US
note.html / tag.html 的返回链接 同上
site.go hreflang alternates(altPrefix /enen_US
site.go collectTagLinksForLanglangPrefix /enen_US
render.go tagURL 模板函数 /en/en_US
theme.ts 英文页判断 startsWith('/en')startsWith('/en_US')(原写法碰巧能匹配 /en_US,改为精确匹配)
settings-overlay.ts syncLanguage toLowerCase().startsWith('en_US') 永远无法匹配 <html lang> 的连字号值 en-US,导致 SPA 跳转后设置面板文案不随语言切换;改为 startsWith('en')

internal/embedded/static/js/ 下两个受影响的产物(theme.jssettings-overlay.js)已通过 npm run build:js 重新生成。

验证

  • npm ci && npm run typecheck && npm run build:js 通过
  • 临时 vault 构建站点:英文站首页导航、笔记返回链接、tag 链接、hreflang alternate 全部输出 /en_US/...;全站 grep 'href="/en/' 结果为 0
  • go build ./...go test ./... 通过

- Nav templates (side-nav, header-nav, mobile-drawer), note/tag back
  links now emit /en_US/... instead of the stale /en/... prefix, which
  caused 404s when navigating after switching language.
- site.go: hreflang alternates and tag link prefix; render.go: tagURL
  template func.
- theme.ts: detect English pages via /en_US prefix.
- settings-overlay.ts: match hyphenated html lang (en-US) so the
  settings overlay syncs to English after SPA navigation.
@khanyipu
khanyipu deleted the branch StatIndet:main September 18, 2026 07:02
@khanyipu khanyipu closed this Sep 18, 2026
@khanyipu
khanyipu deleted the main branch September 18, 2026 07:02
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant