feat(i18n): /en/ 双语骨架——路由/切换/hreflang/回退/AI 标注
- astro i18n(zh 默认无前缀,en /en/)+ locale.ts 路径工具
- Header 语言切换(同路径跨前缀跳转,预构建毫秒级)
- /en/index + /en/archives/{slug}(postsEn 优先,缺译回退 zh 正文
+ AiTranslatedBadge 虚线标注 TMT);en RSS(标题回退同策略)
- BaseLayout hreflang 双向 + x-default 指向 zh 源
- posts-en 集合(postsSchema.extend locked 润色锁)
- 坑:ts 端点文件误带 --- 开头会以 undefined:2:7 报 Unexpected token
验证: astro build 18 页 exit 0;/en/ 六文章路由+首页+rss 产物断言过;
zh 侧零回归(11 页不变);hreflang 抽查 dist/index.html
Spec: 2026-10-25_add-blog-i18n
Co-authored-by: GLM-5.3
This commit is contained in:
1 parent
cf42081614
commit
c74815b516
11 files changed
+273
-4
No files matched your search
@@ -62,6 +62,10 @@ export const collections = {
|
||||
loader: glob({ pattern: '**/*.md', base: './content/posts' }),
|
||||
schema: postsSchema,
|
||||
}),
|
||||
postsEn: defineCollection({
|
||||
loader: glob({ pattern: '**/*.md', base: './content/posts-en' }),
|
||||
schema: postsSchema.extend({ locked: z.boolean().optional() }),
|
||||
}),
|
||||
// image 字段必须走函数式 schema 的 image() helper:zod/v4 的 z 上没有 .image(),
|
||||
// 相对路径由 Astro 传入的 helper 按 entry 文件位置解析
|
||||
moments: defineCollection({
|
||||
|
||||
Reference in new issue
Block a user