Skip to content

Internationalization requirements

Mandatory locales for specific markets live on the Regions pages.

  • MUST use FRVR.locale.get() to get the player’s locale.
  • MUST NOT read navigator.language / navigator.languages. They’re unreliable in channel webviews.
const locale = FRVR.locale.get();      // "en-US", "ja-JP", "pt-BR"
FRVR.locale.onChange(relayoutForLanguage);
  • MUST ship en (or en-US) strings for every UI string. Unsupported locales fall back to English. Never to a hard‑coded other language; never to empty strings.
  • MUST NOT display untranslated copy or raw translation keys (menu.play, etc.).
  • MUST use a font that covers every script you ship.
  • MUST support text expansion (German, French, Russian commonly run 30–50% longer than English). Don’t pin button widths.
  • SHOULD support RTL (Arabic, Hebrew) where shipped. Mirror UI direction, not just alignment.
  • MUST use Intl.NumberFormat / Intl.DateTimeFormat for any user‑facing values.
  • MUST NOT hand‑roll currency conversion or invent symbols. Use FRVR.iap catalog values.
  • MUST NOT use imagery, copy, or audio restricted in any market the channel distributes to (national flags, religious symbols, political content).