Internationalization

Serve your documentation in multiple languages from per-locale content folders.

lily-pad is multilingual out of the box, powered by paraglide.

Locale folders

Each locale gets its own root under content/:

content/
├── en/
│   ├── index.md
│   └── getting-started.md
└── ko/
    ├── index.md
    └── getting-started.md

The base locale is served unprefixed (/docs/getting-started); other locales get a URL prefix (/ko/docs/getting-started).

Adding a locale

  1. Add the locale code to locales in project.inlang/settings.json.
  2. Create content/<locale>/ and translate pages into it.
  3. Add the locale's UI strings to messages/<locale>.json and its labels to lily-pad.config.ts (nav, rootSection).

The language dropdown, URL prefix, and search index pick the new locale up automatically.

Fallback

A page that has not been translated yet falls back to the base locale — the sidebar always shows the full tree, and nothing 404s just because a translation is missing.

Localized navigation

  • Section titles come from the section frontmatter field, so each locale names its own sidebar groups.
  • Internal links written in markdown (/docs/...) are localized automatically — readers stay in their language.
  • The language dropdown in the header switches locales while staying on the current page.
  • Full-text search indexes each language separately, so results always match the reader's locale.
enko