From a9bb46a2881e50bdd91959459fe831dc1973162e Mon Sep 17 00:00:00 2001 From: kifwin Date: Fri, 18 Sep 2026 12:31:15 +0800 Subject: [PATCH] fix: replace leftover /en URL prefix with /en_US after locale rename - 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. --- assets/ts/settings-overlay.ts | 4 ++-- assets/ts/theme.ts | 2 +- internal/embedded/static/js/settings-overlay.js | 2 +- internal/embedded/static/js/theme.js | 2 +- internal/embedded/templates/pages/note.html | 2 +- internal/embedded/templates/pages/tag.html | 2 +- internal/embedded/templates/partials/header-nav.html | 10 +++++----- .../embedded/templates/partials/mobile-drawer.html | 10 +++++----- internal/embedded/templates/partials/side-nav.html | 10 +++++----- internal/render/render.go | 2 +- internal/site/site.go | 4 ++-- 11 files changed, 25 insertions(+), 25 deletions(-) diff --git a/assets/ts/settings-overlay.ts b/assets/ts/settings-overlay.ts index b7f5566..cc1328b 100644 --- a/assets/ts/settings-overlay.ts +++ b/assets/ts/settings-overlay.ts @@ -89,8 +89,8 @@ export function initSettingsOverlay() { } const syncLanguage = (lang: string) => { - // Normalize language string - const isEn = lang.toLowerCase().startsWith('en_US'); + // Normalize language string (html lang is hyphenated, e.g. "en-US") + const isEn = lang.toLowerCase().startsWith('en'); const textAttr = isEn ? 'data-i18n-en' : 'data-i18n-zh'; const ariaAttr = isEn ? 'data-i18n-aria-en' : 'data-i18n-aria-zh'; diff --git a/assets/ts/theme.ts b/assets/ts/theme.ts index 74e4db0..8acb3d5 100644 --- a/assets/ts/theme.ts +++ b/assets/ts/theme.ts @@ -3,7 +3,7 @@ // Polyfill translation lookup on client-side for dynamic updates // Since we don't have a JS i18n bundle, we'll derive translation from language - const isEn = window.location.pathname.startsWith('/en'); + const isEn = window.location.pathname.startsWith('/en_US'); const translations = { 'zh_CN': { diff --git a/internal/embedded/static/js/settings-overlay.js b/internal/embedded/static/js/settings-overlay.js index 47938b3..21bbc46 100644 --- a/internal/embedded/static/js/settings-overlay.js +++ b/internal/embedded/static/js/settings-overlay.js @@ -136,7 +136,7 @@ function initSettingsOverlay() { updateClockCursorState(); } const syncLanguage = (lang) => { - const isEn = lang.toLowerCase().startsWith("en_US"); + const isEn = lang.toLowerCase().startsWith("en"); const textAttr = isEn ? "data-i18n-en" : "data-i18n-zh"; const ariaAttr = isEn ? "data-i18n-aria-en" : "data-i18n-aria-zh"; document.body.querySelectorAll(`[${textAttr}]`).forEach((el) => { diff --git a/internal/embedded/static/js/theme.js b/internal/embedded/static/js/theme.js index 936d861..2dd1ca4 100644 --- a/internal/embedded/static/js/theme.js +++ b/internal/embedded/static/js/theme.js @@ -3,7 +3,7 @@ // assets/ts/theme.ts (function() { const root = document.documentElement; - const isEn = window.location.pathname.startsWith("/en"); + const isEn = window.location.pathname.startsWith("/en_US"); const translations = { "zh_CN": { "theme.light": "\u6D45\u8272", diff --git a/internal/embedded/templates/pages/note.html b/internal/embedded/templates/pages/note.html index 5b2a94d..a8523b0 100644 --- a/internal/embedded/templates/pages/note.html +++ b/internal/embedded/templates/pages/note.html @@ -25,7 +25,7 @@
- +

diff --git a/internal/embedded/templates/pages/tag.html b/internal/embedded/templates/pages/tag.html index 17b4b1c..a6ba4d6 100644 --- a/internal/embedded/templates/pages/tag.html +++ b/internal/embedded/templates/pages/tag.html @@ -2,7 +2,7 @@
- +

{{.PageTitle}}

diff --git a/internal/embedded/templates/partials/header-nav.html b/internal/embedded/templates/partials/header-nav.html index 4423301..aa9c0ac 100644 --- a/internal/embedded/templates/partials/header-nav.html +++ b/internal/embedded/templates/partials/header-nav.html @@ -1,23 +1,23 @@ {{define "header_nav"}}