Internationalization requirements
Mandatory locales for specific markets live on the Regions pages.
Detect language via the SDK
Section titled “Detect language via the SDK”- MUST use
FRVR.profile.getLocale()to get the player’s locale. - MUST NOT read
navigator.language/navigator.languagesyourself. They’re unreliable in channel webviews, and some channels forbid them.
The SDK returns the language the channel reports when it has one (YouTube Playables, Facebook Instant), the browser’s otherwise, and en-US when neither is usable. The value is always a BCP 47 tag, so Facebook’s en_US arrives as en-US.
Call it after FRVR.bootstrapper.init() has resolved. There is no change event: read it once at startup.
English fallback
Section titled “English fallback”- MUST ship
en(oren-US) strings for every UI string. Unsupported locales fall back to English. Never to a hard‑coded other language; never to empty strings.
Untranslated content
Section titled “Untranslated content”- MUST NOT display untranslated copy or raw translation keys (
menu.play, etc.).
Text rendering
Section titled “Text rendering”- 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.
Numbers, dates, currency
Section titled “Numbers, dates, currency”- MUST use
Intl.NumberFormat/Intl.DateTimeFormatfor any user‑facing values. - MUST NOT hand‑roll currency conversion or invent symbols. Use
FRVR.iapcatalog values.
Cultural appropriateness
Section titled “Cultural appropriateness”- MUST NOT use imagery, copy, or audio restricted in any market the channel distributes to (national flags, religious symbols, political content).