Originally created by: kristofferR
Adds 20 more languages to the landing page (docs/index.html), following the exact recipe from [#138] — the inline dependency-free i18n engine now carries 30 locales.
Languages
Round 2 — next-largest Messenger markets: Indonesian, Hindi, Bengali, Burmese, Khmer, Turkish, Ukrainian, Italian, German, Hungarian.
Round 3: Simplified Chinese, Urdu, Nepali, Sinhala, Lao, Romanian, Czech, Greek, Swedish, Danish — completing the strongly Messenger-dominant markets (Nepal, Laos, Czechia, Scandinavia…) plus Chinese for the worldwide diaspora.
What's localized
- 132 keyed strings per locale — hero, features, full FAQ, downloads, footer, and the app-window replica's chat; same coverage as [#138].
- Cultural recasting, not just translation — every locale gets a local fictional cast and adapted conversations. The promised dessert becomes puding cokelat, gulab jamun, payesh, sanwin makin, sangkhya lapov, islak kek, medovyk, tiramisù, Schokokuchen, almás rétes, 蛋挞, kheer, sel roti, watalappan, khao nom kuay, cozonac, štrúdl, μωσαϊκό, kladdkaka, and drømmekage. Locale-true details throughout: Burmese/Nepali/Urdu numerals in timestamps, the Khmer ៖ colon, Nepal's Saturday family day, Greek ";" question marks, Czech gender-neutral phrasings.
- Urdu is the second RTL locale — reuses the Arabic RTL infrastructure unchanged (page mirrors, the app-window replica stays LTR).
- Per-locale profile photos — 140 new AI-generated portraits of fictional people authentic to each culture under
docs/avatars/{locale}/, generated with the same FLUX pipeline and matching the established style.
Integration
- The language picker grew to 30 entries, now ordered by native name (Latin scripts A–Z, then Greek/Cyrillic, then Indic/SEA/CJK scripts, RTL last; English stays first as the default). Each entry leads with its market's flag emoji, matched to the culture each cast was written for (🇲🇽 Español, 🇪🇬 العربية, 🇧🇩 বাংলা…); on Windows these degrade gracefully to letter pairs.
- One new auto-detect fallback:
zh* → zh-CN. All other new codes are covered by the existing two-letter matching.
- Page size grows to ~434 KB (locale dictionaries are inlined by design, per [#138]; avatars remain separate per-locale assets).
- Verified headlessly and in-browser: every locale resolves all 132 used keys with zero fallbacks, JSON round-trips, and the notification simulation re-localizes.
Originally posted by: kristofferR
@coderabbitai review
Originally posted by: coderabbitai[bot]
Rate Limit Exceeded
@kristofferRhave exceeded the limit for the number of chat messages per hour. Please wait 12 minutes and 43 seconds before sending another message.Ticket changed by: kristofferR