Skip to main content

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