v148 · Progressive Web Apps

Manifest Localization

PWA manifests can now carry per-locale name, description, and icon translations using name_localized and sibling members. The browser picks the right values for the user's language automatically — no server-side manifest swapping required.

concepts

  1. Multilingual PWA Simulator

    Pick a browser locale and watch the install prompt update in real time — app name, description, and icon all pulled from the appropriate _localized entry in the manifest.

  2. Locale Manifest Inspector

    Live JSON editor: add locale entries to a sample manifest, then inspect which values win for any given Accept-Language header — including BCP-47 fallback rules.

  3. Manifest Builder

    Visual form that assembles a fully-localized manifest.json with name_localized entries for multiple locales. Preview the install prompt as each locale's name and description are applied.

  4. Locale Switcher

    Live PWA manifest locale editor with five built-in locales (en, fr, de, ja, ar) and an RTL/LTR toggle. Edit localized name, description, and shortcuts; a simulated install prompt updates in real time. Includes a coverage checker highlighting missing translations and a _locales directory JSON exporter.

  5. Translation Coverage Checker

    Paste a manifest.json and a locale-overrides map, then click "Check coverage" to see a per-locale × per-field matrix of what's translated vs. missing. Summary stats show average coverage, fully-covered locales, and total missing translations. Three built-in samples (minimal, e-commerce, news app) demonstrate common coverage gaps.

why it shipped

Before this feature, a developer who wanted their PWA to appear in Japanese for Japanese users had to either serve a different manifest.json via HTTP content negotiation — fragile and cache-unfriendly — or use a JavaScript-generated manifest, which breaks offline install. The new _localized convention (e.g. name_localized, description_localized) embeds all translations in a single static file. The browser applies the same BCP-47 language-matching algorithm it uses for Accept-Language, so subtag fallbacks work correctly without developer effort.

references

implementation reference

Need the exact API surface, compatibility boundaries, errors, lifecycle, and source links? Read the matching gendn reference ↗