colibri/docs/guide/localization/how-it-works.md
Sam & Claude ca087846ec
Some checks are pending
CI / rust (pull_request) Waiting to run
CI / markdown (pull_request) Waiting to run
CI / port (pull_request) Waiting to run
CI / agent-jail-pkgs (pull_request) Waiting to run
docs(sl): add glossary of abbreviations + link from all pages
- New page: docs/guide/sl/reference/okrajsave.md (15 abbreviations
  explained in plain Slovenian — LLM, JSON, JSONL, ACL, PF, NAT,
  ZFS, API, HTTPS, TCP, SHA, BCP, ISO, UI, VPS)
- Linked from reference index
- First occurrence of each abbreviation in every Slovenian page
  now links to the glossary
- Fix broken ./install/ link (English + Slovenian)
- requirements title: 'Zahteve' → 'Osnovne zahteve'
- prettier-clean
2026-06-26 10:29:23 +02:00

2.5 KiB

title description
How the Pipeline Works Step-by-step flow from locale markdown in git to a Starlight build and cms-jail deploy.

How the Pipeline Works

Localization is Astro/Starlight-native: translations are markdown in git, and the normal docs build renders every locale. No external service sits in the live path.

Stage 1: locale markdown in git

All content lives under docs/guide/:

  • English (default locale) at the tree root, e.g. docs/guide/operate/terminal-capture.md
  • each other locale mirrored under a BCP-47 directory, e.g. docs/guide/sl/operate/terminal-capture.md

The repo is the editorial source of truth for every language.

Stage 2: add or update a translation

Copy the English page to the matching path under the locale directory, then translate the body and the title / description frontmatter:

mkdir -p docs/guide/sl/operate
cp docs/guide/operate/terminal-capture.md docs/guide/sl/operate/terminal-capture.md
# translate the copy, then commit it

Keep the relative path identical to the English page — Starlight pairs a translation with its source by matching the path under the locale directory.

Stage 3: sync docs into the Astro project

Inside the cms jail docs project:

cd /usr/home/<tenant>/<tenant>-docs
npm run deploy

The deploy flow copies the canonical docs content from the host repo into the Astro docs content tree before the build.

Stage 4: build localized static output

The same deploy flow runs:

astro build

Astro/Starlight then:

  • reads the synchronized docs content
  • applies locale routing from the directory layout
  • renders static HTML for each locale present

Stage 5: publish through the cms webroot

The built output is deployed into the cms jail webroot and served through the configured docs surface.

For operators, the important point is:

  • localization does not have its own deploy path
  • it rides on the normal docs deployment path; building the docs builds every locale

Summary

docs/guide/*          -> English source (default locale)
docs/guide/<lang>/*   -> translated markdown in git
cms jail Astro app    -> sync + build + deploy (all locales)
docs.clawdie.si       -> live localized output

Future plan: if hand-editing locale files becomes too much, Crowdin can be reintroduced to manage strings — it would push the English source and pull completed translations back into the same docs/guide/<lang>/ layout, leaving these build/deploy stages unchanged. It is not part of the current flow.