--- import { localeOf, localePath } from '../lib/locale'; import { t } from '../i18n/ui'; // 顶部导航:单行纪律 + 双语整轨(zh 无前缀 ↔ /en/,locale 构建期按页自推断—— // 曾只把 locale 喂给词条/语言钮而 href 裸奔 zh 路径,en 页点导航全部跌回中文轨) const path = Astro.url.pathname; const curLocale = localeOf(path); const prefix = curLocale === 'en' ? '/en' : ''; const isCurrent = (href: string) => path === href || path === href.replace(/\/$/, '') || path.startsWith(href); // 顺序:开源 · 文章 · 书架 · 图库 · 瞬间 · 关于(书架=阅读轨延伸紧跟文章;瞬间新进,开源前置) const nav = [ { href: `${prefix}/opensource/`, label: t('nav_opensource', curLocale) }, { href: `${prefix}/archives/`, label: t('nav_posts', curLocale) }, { href: `${prefix}/books/`, label: t('nav_books', curLocale) }, { href: `${prefix}/gallery/`, label: t('nav_gallery', curLocale) }, { href: `${prefix}/moments/`, label: t('nav_moments', curLocale) }, { href: `${prefix}/about/`, label: t('nav_about', curLocale) }, ]; const homeHref = curLocale === 'en' ? '/en/' : '/'; const switchHref = localePath(path, curLocale === 'zh' ? 'en' : 'zh'); const switchLabel = curLocale === 'zh' ? 'EN' : '中'; ---