Shirone 的文章可以有多种内容语言版本。各语言版本并排放在同一个目录、 共用一个 slug 并自动互相链接;顶栏与页面文案跟随当前 URL 的语言,聚合列表 (归档、分类、标签)则始终只渲染默认语言。你正在阅读的这一页(以及它的 英文孪生页)就是可运行的演示。
1. 文件布局
把每个语言版本放进同一个文章目录,每种语言一个文件,命名为
index.<locale>.md:
src/content/posts/bilingual-posts/├── index.en.md ← 默认语言(英语)└── index.zh-CN.md ← 简体中文语言由文件名后缀派生,不需要额外的 frontmatter 字段:
index.en.md→ 集合 idbilingual-postsindex.zh-CN.md→ 集合 idzh-CN/bilingual-posts
默认语言文件也可以沿用不带后缀的 index.md——没有后缀即默认语言。
两个文件之间的 published、tags、category 等结构性字段应保持一致,
而 title / description 各自使用本语言撰写。
2. URL 映射
每种语言版本有独立路由。非默认语言的前缀取代 posts/ 段,而不是叠加:
| 默认语言(en) | zh-CN | |
|---|---|---|
| 集合 id | bilingual-posts | zh-CN/bilingual-posts |
| 路由 | /posts/bilingual-posts/ | /zh/bilingual-posts/ |
自定义 permalink | /my-slug/ | /zh/my-slug/ |
3. 版本之间的互链
只要文章存在至少一个其它语言版本,正文前就会渲染**「本文还提供」**区块
(位于封面与元信息之后)。它把每种其它语言列成一个带 hreflang 标注的
链接胶囊——当前语言永远不会列出自己;单语文章则完全不渲染该区块,页面与
未启用 i18n 的站点逐字节一致。
4. 顶栏语言菜单
搜索与调色板之间的翻译按钮,下拉展示同一套语言集合:
- 在文章页上,菜单列出本篇文章的所有语言版本,点击即切换;
- 首页在每种配置语言下都有对版(
/↔/zh/,点击即整页切换);归档、 订阅源等尚无对应语言版本的页面,缺失语言的条目呈禁用态。
菜单标签使用语言自称(endonym)——“English”、“简体中文”——不随站点 界面语言翻译。
5. 跟随页面语言与保持默认语言的部分
界面文案跟随当前页面语言:/zh/* 下的顶栏、侧栏、分页与搜索面板都
输出中文——本页即演示。跨语言的站内跳转走整页加载(Swup 的 ignoreVisit
守卫),持久外壳不会停留在旧语言上。
聚合内容则被刻意限定在默认语言:
- 归档、分类、标签、RSS/Atom 订阅源、
llms.txt与统计页始终只列出 默认语言文章;中文首页(/zh/)只列出中文文章; - 页面级元数据跟随文章语言:
<html lang>、JSON-LDinLanguage、og:url与Content-Language都与你正在阅读的语言一致。
现在就试试顶栏的翻译按钮,或打开上方的互链区块——本文的英文版只有一次 点击之遥。
分享文章
生成精美分享图或复制链接,与更多人分享本文。
继续阅读
最后更新于 ,距今已过 6 天
部分内容可能已过时