English is the fallback for every missing key (see getLanguage), so
messages and buttons are guaranteed to be fully populated once a
language has been set — they are typed as required here rather than as
Record<string, string> | undefined so call sites do not need a null
check on every one of the ~30 Language.messages.* reads.
The locale JSON files themselves are not complete: only en.json defines
every key, and 28 of the 29 bundled locales are missing 8-10 of them
(the per-service consent strings and the fullscreen button labels). The
runtime falls back to English per key, so this is a translation gap rather
than a defect — npm run check:locales reports it.
UI strings for the active locale.
English is the fallback for every missing key (see
getLanguage), somessagesandbuttonsare guaranteed to be fully populated once a language has been set — they are typed as required here rather than asRecord<string, string> | undefinedso call sites do not need a null check on every one of the ~30Language.messages.*reads.The locale JSON files themselves are not complete: only
en.jsondefines every key, and 28 of the 29 bundled locales are missing 8-10 of them (the per-service consent strings and the fullscreen button labels). The runtime falls back to English per key, so this is a translation gap rather than a defect —npm run check:localesreports it.