# The Website Specification — checklist (13 items)

## Internationalisation
- [ ] **International URL structure** _(recommended)_ — Pick a single URL pattern for multilingual or multi-regional content — country-code top-level domain, subdomain, or subdirectory — and stick with it. Optionally localise the slugs too.
      https://specification.website/spec/i18n/international-url-structure/
- [ ] **hreflang for language and regional URLs** _(recommended)_ — hreflang tells search engines which language or regional version of a page to show to which user. It uses BCP 47 codes and must be reciprocal across all alternates.
      https://specification.website/spec/i18n/hreflang/
- [ ] **Localised page metadata** _(recommended)_ — Translate every visible string in the head and in structured data — title, meta description, Open Graph fields, JSON-LD names and descriptions, image alt text — not just the body. A localised body with English metadata is a half-translation.
      https://specification.website/spec/i18n/localised-metadata/
- [ ] **hreflang in XML sitemaps** _(optional)_ — Declare language and regional alternates inside the XML sitemap with xhtml:link instead of in the HTML head. Easier to maintain at scale and keeps localisation metadata separate from content.
      https://specification.website/spec/i18n/sitemap-hreflang/
- [ ] **Avoid automatic IP-based language redirects** _(avoid)_ — Automatically redirecting visitors to a locale based on IP geolocation or Accept-Language is an anti-pattern. It traps users in the wrong language, breaks search crawlers, and breaks shared links. Let users choose.
      https://specification.website/spec/i18n/avoid-auto-geo-redirects/
- [ ] **lang attribute on inline content** _(required)_ — Mark passages, phrases, and inline elements that differ from the document language with a lang attribute. WCAG 3.1.2 requires it so assistive tech can switch pronunciation.
      https://specification.website/spec/i18n/lang-attribute/
- [ ] **translate attribute for untranslatable content** _(optional)_ — The translate attribute marks content that automatic translation systems must leave alone — brand names, code, and identifiers. Use translate="no" so Google Translate and the browser's built-in translation don't mangle terms that have no localised form.
      https://specification.website/spec/i18n/translate-attribute/
- [ ] **Language switcher** _(recommended)_ — List each locale in its own language ('Deutsch', '日本語', 'العربية') and mark it with the right lang attribute. Don't use flags — flags are countries, not languages.
      https://specification.website/spec/i18n/language-switcher/
- [ ] **RTL and bidirectional text** _(recommended)_ — Sites that serve Arabic, Hebrew, Persian, or Urdu must set dir="rtl" and use CSS logical properties so layouts mirror correctly without hard-coded left and right.
      https://specification.website/spec/i18n/rtl-support/
- [ ] **Writing modes and CJK line breaking** _(optional)_ — Vertical text (Japanese, Traditional Chinese, Mongolian) needs CSS writing-mode. Chinese, Japanese, Korean, and Thai also need explicit line-break and word-break rules so wrapping respects script-specific conventions.
      https://specification.website/spec/i18n/writing-modes/
- [ ] **Locale-aware content** _(recommended)_ — Dates, numbers, currency, and units should be formatted in the user's locale. Use Intl APIs in the browser and the same locale data server-side so output matches expectations.
      https://specification.website/spec/i18n/locale-content/
- [ ] **Plural rules and grammatical number** _(recommended)_ — Most languages don't pluralise like English. Use CLDR plural categories — zero, one, two, few, many, other — via Intl.PluralRules instead of hard-coded 'item' vs 'items' logic.
      https://specification.website/spec/i18n/plural-rules/
- [ ] **Internationalised Domain Names (IDN)** _(optional)_ — IDNs let domain names contain non-ASCII characters. They are encoded as Punycode on the wire and rendered as Unicode in the browser, subject to anti-spoofing rules.
      https://specification.website/spec/i18n/idn-support/
