Multilingual sites
Configure languages with one content directory per language:
default_language = "en"
[languages.en]
label = "English"
content_dir = "."
[languages.fr]
label = "Français"
content_dir = "fr"With this layout, about.typ and fr/about.typ are treated as translations of the same page. The default language keeps root URLs like about.html; other languages use their language code as a URL prefix, such as fr/about.html.
Use page metadata when translations move or need different slugs:
#set document(title: [À propos])
#metadata((
translation_key: "about",
slug: "a-propos",
)) <website-metadata>
#title()When more than one language is configured, the bundled themes show a language picker. Local navigation links are shown only for the current language; external links stay global.