Framework and runtime profiles
Choose a tested runtime profile, then verify your own screen. Framework detection, automatic wrapping and runtime qualification are separate capabilities.
These guides use CLI 0.14.7 and the extension 0.7.6 workflow. Install or update the CLI before starting. Confirm that polyglot start --help and polyglot wrap --help expose saved plans. In VS Code, use an extension build that includes Localize one screen and run Update CLI if your selected binary is older.
Download the extension below, then open the VS Code Command Palette and run Extensions: Install from VSIX. Select the downloaded file.
Use your existing translation stack
Check your app before wrapping
polyglot doctor --apps
# Change to the selected app root, then:
polyglot doctor
polyglot doctor --jsonDiscovery reports app/workspace roots, framework/router mode, installed and declared runtime versions, catalog/locale strategy, package manager and unresolved assumptions. A declared package range is not an installed-version check. Resolve unknown setup before treating the profile as ready.
The table describes current fixture evidence and explicit gaps. It does not qualify every version of a library or every user app. Release behavior must be tied to the tested binary; syntax and build checks alone do not establish localized runtime behavior.
Current behavior evidence
| Profile | Checked behavior | Still requires separate evidence |
|---|---|---|
| Next.js App Router + next-intl | Production target-locale render, changing accessible labels, bounded helper metadata and source-owned code. | Custom loaders, wrappers/caching, Pages Router and arbitrary installed versions. |
| Vue SPA + vue-i18n | Production target-catalog render. | Nuxt, arbitrary local/global scope and typed data consumers. |
| Svelte 5 + SvelteKit + svelte-i18n request starter (CLI 0.14.3) | Target SSR/hydration, changing accessible labels, generated language picker, cookie selection and 40 concurrent alternating-language requests. | Existing loaders, static output, mixed legacy imports, document language attributes, plain Svelte and Paraglide. |
| Astro 5.13.5 + generated utility + Vue 3.5.18 island | Target render and a source-owned slot through client:load; a click changes island state and technical code stays unchanged. | Other island runtimes, ambiguous component/code sentences, custom routing and middleware. |
| Angular + ngx-translate or Transloco | German SSR output and changed state in separate runtime fixtures. | All browser interactions and custom app setup. |
| Angular 17.3.12 + localize | Wrapped-template AOT compilation, extracted messages, German output with reordered rich links and translated attributes, state changes and missing-translation rejection. | Other versions and your app’s actual extraction, locale build and browser behavior. |
| React Native 0.74.5 + react-i18next | Renderer, Metro, release APK and Android API 35 emulator: French text and changing accessible labels. | iOS, Expo, physical devices and other runtime versions. |
| Flutter 3.44.4 + gen-l10n | Generated API, analyzer, widgets and Android API 35 integration: French text and state changes. | Other SDK versions, iOS, desktop and physical devices. |
Next.js
Use the App Router/next-intl profile as the first-screen reference. Confirm the actual catalog path, namespaces and route or cookie locale strategy in doctor. Supported relative request loaders can use directories such as src/messages; do not replace a custom loader just to match a generic example.
Review server/client scope for every translation call. Shared non-async components and async components have different constraints. Metadata helper automation proves a bounded immutable path to title, description and social alt text; URLs, ambiguous aliases, barrels and unknown consumers remain conservative. Verify the resulting request/caching behavior in your app.
Vue
Use the installed vue-i18n runtime and inspect its locale initializer and message registration. Supported rich messages can use component interpolation while preserving source-owned elements. A recognized template does not prove every local/global translator scope or data consumer. Nuxt needs a separately qualified onboarding and runtime profile.
SvelteKit
CLI 0.14.3 adds a request-aware starter for fresh Svelte 5 apps using svelte-i18n. Each component captures its request’s page store and passes that locale to the formatter. The shared server locale is never changed for an individual visitor. Existing root loaders, adapter-static, explicit prerender/SSR options and user-owned i18n setup retain their existing integration path.
polyglot start --file src/routes/+page.svelteThe generated loader accepts configured locales from polyglot_locale in the query string, then a locale/lang route parameter, then the polyglot_locale cookie. Unsupported values use the source language. Start with one route component and inspect all source, catalog, dependency and loader changes in its saved plan.
polyglot add switcher --dir src/lib/componentsRender the generated LanguageSwitcher.svelte in your layout or screen. Its native select supports keyboard, touch and screen readers, preserves other URL parameters and the hash, and reports failed navigation. Customize label, errorMessage, tone and class. Cookie persistence, redirects, document lang/dir and SEO routing remain your app’s policy.
Preview temporarily selects the target in the generated request loader and restores it with the preview run, including after startup failure. Undo recovers the saved wrap plan’s generated loader while preserving unrelated edits. Mixed legacy global translators are not migrated automatically; verify SSR, hydration and locale navigation in your own app.
Astro
Review generated locale utilities and the route that loads their messages. Server-rendered content and hydrated islands need their own checks. Unknown rich-message or code-placeholder combinations stay manual; a successful static render does not exercise an island’s client behavior.
Angular
Select and configure one installed runtime: ngx-translate, Transloco or localize. A missing runtime yields setup guidance. Pipe/service catalogs and compile-time extraction have different workflows; use the dedicated Angular guide. For localize, run your app’s actual target-language compilation before claiming a translated screen.
React Native
Review accessibilityLabel/accessibilityHint, dialogs, state and translator scope alongside visible Text. Shared data with unproven consumers remains manual. Exercise the result in your Metro/platform workflow and target device; renderer and bundle checks are limited evidence.
Flutter
Review BuildContext availability, generated localization methods, ARB placeholder types and any bounded const changes. Regenerate localizations and run analyzer/widget checks before native preview. Run the app on the intended device or emulator to verify layout, plurals and interactions.
Profiles without a broad support claim
Plain React/Vite, Nuxt, plain Svelte, unmeasured runtime versions, arbitrary Astro islands and native platforms outside the explicit Android fixtures require separate evidence. The extension can scan additional syntax/library combinations; that does not establish first-use or runtime qualification.