多语言

内容多语言:文件名后缀组织、per-language URL 与 hreflang

作者:Liangdi

AnyCMS SSG 的多语言指内容多语言(不包含工具自身 UI 的系统本地化)。采用文件名后缀组织(Zola 模式,最少侵入)。

文件名约定

hello-world.md(默认语言)+ hello-world.fr.md(法语):

content/
├── hello-world.md        # 默认语言(en)
└── hello-world.fr.md     # 法语翻译

翻译自动关联,生成 per-language URL、hreflang 互链、per-language feeds / sitemap。

声明支持的语言

site.kdl 中声明额外支持的语言:

default_language "en"

languages {
    language code="fr"
    language code="zh"
}

默认语言无需在 languages 中重复声明。

per-language 菜单

menu {} 块支持按语言覆盖。默认语言的裸 item 节点之外,用 lang "<code>" {} 子块提供翻译:

menu {
    item "Home" url="/"
    item "Docs" url="/docs/" weight=10

    lang "fr" {
        item "Accueil" url="/fr/"
        item "Docs" url="/fr/docs/" weight=10
    }
}

自动生成的产物

  • per-language URL 前缀(如 /fr/...
  • 页面间的 <link rel="alternate" hreflang> 互链
  • per-language 的 rss.xml / atom.xml / sitemap.xml

演示站点 demo-ink 就是中英双语,可以参考它的 content/site.kdl

AnyCMS 构建 在 GitHub 上编辑 ↗