Language & RTL Rules
URL routing rules
URL routing rules — documentation pending.
Complete
`/:lang/` is the first URL segment on every public route. Three values are accepted: `en`, `ar`, `fr`. Anything else 404s. SEO + AEO depend on this discipline — a single URL is one locale, with `hreflang` pointing to its siblings.
Locale-prefix rules
- Required
- Every public URL starts with `/en/` or `/ar/` (or `/fr/` when authoring exists). A bare `/founder-files/foo` is invalid.
- Three-locale match
- The router accepts `en | ar | fr` via the parent route pattern `:lang` with a validator. Unknown values redirect to `/en/`.
- Locale-paired slugs
- Slugs are language-neutral identifiers (e.g. `flat6labs-cairo-cycle-22`). Both `/en/...` and `/ar/...` use the SAME slug — hreflang ties them together.
hreflang pattern
Every page emits `<link rel="alternate" hreflang="en">`, `<link rel="alternate" hreflang="ar">`, and `<link rel="alternate" hreflang="x-default" href="/en/...">`. The x-default points to the EN URL because EN is the canonical authoring source.
Sample URL pairs
- /en/founders/ahmed-hassan ↔ /ar/founders/ahmed-hassan
- /en/founder-files/before-you-ask-for-funding/read ↔ /ar/founder-files/before-you-ask-for-funding/read
- /en/calendar/events/flat6labs-cairo-cycle-22-demo-day ↔ /ar/calendar/events/flat6labs-cairo-cycle-22-demo-day
