# One URL per language on the site

29 October: the public site lives at /br and /de with English at the root, instead of ?lang=.

The owner asked why a Portuguese link was `autofolio.its-live.dev/?lang=pt-BR` rather than `/br`. The template's path-locales work (#162) is now ported to AutoFolio.

## Shipped [#shipped]

- **Every public page has one URL per language** (#201, [`19160d2`](https://github.com/CarlosZiegler/autofolio/commit/19160d21)).
  - English is at the clean path, Brazilian Portuguese under `/br` and German under `/de`: the landing, `/privacy`, `/terms`, `/assistentes`, `/legal/privacy` and their Markdown copies. Sign-in, the app, the docs and the share links keep one URL.
  - An old `?lang=` link (also `pt-BR` or `de-DE`) answers 301 to the path and keeps the rest of the query. `/en/…` and `/pt/…` answer 301 to their one form, and an unknown prefix is a 404.
  - A first visit to `/` from a browser goes to the visitor's language (the saved choice, then the browser languages) with a 302. Crawlers and link previews always get English at `/`.
  - Each language has its own canonical, hreflang (`pt-BR`, `en`, `de`, `x-default`), share card and sitemap entry. The footer's language row links to the same page in each language and remembers the choice.
  - The languages and their slugs live in one file ([`11875443`](https://github.com/CarlosZiegler/autofolio/commit/11875443)).
  - Details: [internationalization](/docs/features/i18n), [agent pages](/docs/features/agent-pages), [OG images](/docs/features/og-images).

