多语言
内容目录约定
默认 locale 固定占用 contentDir 根(无路由前缀);其余 locale 的内容放在 <contentDir>/<key>/,路由加对应前缀。配置:
ts
defineSiteConfig({
locales: {
en: { lang: 'en', label: 'English' },
},
});本站就按此约定组织,docs/content/ 是简体中文(默认),docs/content/en/ 是英文站,完整镜像中文站结构(en/guide/,设计子板块在 en/guide/design/):
规则细节:
- locale 目录属于自己的 locale,不会混入默认 locale 的页面
- 每个 locale 有自己的首页(各自目录下的
index.md)、文章流、归档 <html lang>取各 locale 的lang值;默认 locale 默认zh-CN,顶层lang/label可覆盖
UI 文案
界面文案在 src/shared/i18n/,zh 是 shape 真相源,en 必须同构,构建期做 key 校验。每个 locale 的界面文案跟随其 lang 做前缀匹配(en-US → 英文),未注册的语言回退中文——默认 locale 只要把 lang 设为 en 即可得到英文站点 chrome。评论(Giscus)、密码门等 island 的 UI 文案同样走这套表。
切换器
导航栏提供 locale 切换器,展示各 locale 的 label。切换按当前页面在目标 locale 下的对应路由跳转。
建议
- 中英页面互链时用相对路径(
../en/xxx.md),同样受死链检查保护 - 非默认 locale 页面较少时,缺译页面直接不出现在该 locale 目录即可,不要求两边页面一一对应